blob: faedec85653db7a051d6d647df3b62cca88a37ea [file] [log] [blame]
Alexander Afanasyev4abdbf12014-08-11 12:48:54 -07001/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2/**
Davide Pesaventob5f8bcc2017-02-05 17:58:05 -05003 * Copyright (c) 2014-2017 Regents of the University of California,
4 * Arizona Board of Regents,
5 * Colorado State University,
6 * University Pierre & Marie Curie, Sorbonne University,
7 * Washington University in St. Louis,
8 * Beijing Institute of Technology,
9 * The University of Memphis.
Alexander Afanasyev4abdbf12014-08-11 12:48:54 -070010 *
11 * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
12 *
13 * ndn-cxx library is free software: you can redistribute it and/or modify it under the
14 * terms of the GNU Lesser General Public License as published by the Free Software
15 * Foundation, either version 3 of the License, or (at your option) any later version.
16 *
17 * ndn-cxx library is distributed in the hope that it will be useful, but WITHOUT ANY
18 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
19 * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
20 *
21 * You should have received copies of the GNU General Public License and GNU Lesser
22 * General Public License along with ndn-cxx, e.g., in COPYING.md file. If not, see
23 * <http://www.gnu.org/licenses/>.
24 *
25 * See AUTHORS.md for complete list of ndn-cxx authors and contributors.
26 */
27
Alexander Afanasyev4abdbf12014-08-11 12:48:54 -070028#include "util/notification-stream.hpp"
29#include "simple-notification.hpp"
Alexander Afanasyevd3a55b22014-11-18 19:23:28 -080030#include "util/dummy-client-face.hpp"
Alexander Afanasyev4abdbf12014-08-11 12:48:54 -070031
32#include "boost-test.hpp"
Alexander Afanasyeve4f8c3b2016-06-23 16:03:48 -070033#include "../identity-management-time-fixture.hpp"
Alexander Afanasyev4abdbf12014-08-11 12:48:54 -070034
35namespace ndn {
Junxiao Shia60d9362014-11-12 09:38:21 -070036namespace util {
Alexander Afanasyev4abdbf12014-08-11 12:48:54 -070037namespace tests {
38
Davide Pesaventoeee3e822016-11-26 19:19:34 +010039BOOST_AUTO_TEST_SUITE(Util)
Alexander Afanasyev80782e02017-01-04 13:16:54 -080040BOOST_FIXTURE_TEST_SUITE(TestNotificationStream, ndn::tests::IdentityManagementTimeFixture)
Alexander Afanasyev4abdbf12014-08-11 12:48:54 -070041
42BOOST_AUTO_TEST_CASE(Post)
43{
Alexander Afanasyeve4f8c3b2016-06-23 16:03:48 -070044 DummyClientFace face(io, m_keyChain);
Alexander Afanasyev9bdbb832015-12-30 12:54:22 -080045 util::NotificationStream<SimpleNotification> notificationStream(face,
Alexander Afanasyeve4f8c3b2016-06-23 16:03:48 -070046 "/localhost/nfd/NotificationStreamTest", m_keyChain);
Alexander Afanasyev4abdbf12014-08-11 12:48:54 -070047
48 SimpleNotification event1("msg1");
49 notificationStream.postNotification(event1);
Alexander Afanasyevd3a55b22014-11-18 19:23:28 -080050
51 advanceClocks(time::milliseconds(1));
52
Alexander Afanasyev9bdbb832015-12-30 12:54:22 -080053 BOOST_REQUIRE_EQUAL(face.sentData.size(), 1);
54 BOOST_CHECK_EQUAL(face.sentData[0].getName(),
Alexander Afanasyev4abdbf12014-08-11 12:48:54 -070055 "/localhost/nfd/NotificationStreamTest/%FE%00");
56 SimpleNotification decoded1;
Alexander Afanasyev9bdbb832015-12-30 12:54:22 -080057 BOOST_CHECK_NO_THROW(decoded1.wireDecode(face.sentData[0].getContent().blockFromValue()));
Alexander Afanasyev4abdbf12014-08-11 12:48:54 -070058 BOOST_CHECK_EQUAL(decoded1.getMessage(), "msg1");
59
60 SimpleNotification event2("msg2");
61 notificationStream.postNotification(event2);
Alexander Afanasyevd3a55b22014-11-18 19:23:28 -080062
63 advanceClocks(time::milliseconds(1));
64
Alexander Afanasyev9bdbb832015-12-30 12:54:22 -080065 BOOST_REQUIRE_EQUAL(face.sentData.size(), 2);
66 BOOST_CHECK_EQUAL(face.sentData[1].getName(),
Alexander Afanasyev4abdbf12014-08-11 12:48:54 -070067 "/localhost/nfd/NotificationStreamTest/%FE%01");
68 SimpleNotification decoded2;
Alexander Afanasyev9bdbb832015-12-30 12:54:22 -080069 BOOST_CHECK_NO_THROW(decoded2.wireDecode(face.sentData[1].getContent().blockFromValue()));
Alexander Afanasyev4abdbf12014-08-11 12:48:54 -070070 BOOST_CHECK_EQUAL(decoded2.getMessage(), "msg2");
71}
72
Davide Pesaventoeee3e822016-11-26 19:19:34 +010073BOOST_AUTO_TEST_SUITE_END() // TestNotificationStream
74BOOST_AUTO_TEST_SUITE_END() // Util
Alexander Afanasyev4abdbf12014-08-11 12:48:54 -070075
76} // namespace tests
Junxiao Shia60d9362014-11-12 09:38:21 -070077} // namespace util
Alexander Afanasyev4abdbf12014-08-11 12:48:54 -070078} // namespace ndn