blob: 37210916d98a294aa1c389f639c254251c00068e [file] [log] [blame]
Alexander Afanasyev4abdbf12014-08-11 12:48:54 -07001/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
Davide Pesavento0f830802018-01-16 23:58:58 -05002/*
3 * Copyright (c) 2014-2018 Regents of the University of California,
Davide Pesaventob5f8bcc2017-02-05 17:58:05 -05004 * 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"
Alexander Afanasyevd3a55b22014-11-18 19:23:28 -080029#include "util/dummy-client-face.hpp"
Alexander Afanasyev4abdbf12014-08-11 12:48:54 -070030
31#include "boost-test.hpp"
Davide Pesavento0f830802018-01-16 23:58:58 -050032#include "simple-notification.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
Davide Pesavento0f830802018-01-16 23:58:58 -050051 advanceClocks(1_ms);
Alexander Afanasyevd3a55b22014-11-18 19:23:28 -080052
Alexander Afanasyev9bdbb832015-12-30 12:54:22 -080053 BOOST_REQUIRE_EQUAL(face.sentData.size(), 1);
Davide Pesavento0f830802018-01-16 23:58:58 -050054 BOOST_CHECK_EQUAL(face.sentData[0].getName(), "/localhost/nfd/NotificationStreamTest/%FE%00");
Alexander Afanasyev4abdbf12014-08-11 12:48:54 -070055 SimpleNotification decoded1;
Alexander Afanasyev9bdbb832015-12-30 12:54:22 -080056 BOOST_CHECK_NO_THROW(decoded1.wireDecode(face.sentData[0].getContent().blockFromValue()));
Alexander Afanasyev4abdbf12014-08-11 12:48:54 -070057 BOOST_CHECK_EQUAL(decoded1.getMessage(), "msg1");
58
59 SimpleNotification event2("msg2");
60 notificationStream.postNotification(event2);
Alexander Afanasyevd3a55b22014-11-18 19:23:28 -080061
Davide Pesavento0f830802018-01-16 23:58:58 -050062 advanceClocks(1_ms);
Alexander Afanasyevd3a55b22014-11-18 19:23:28 -080063
Alexander Afanasyev9bdbb832015-12-30 12:54:22 -080064 BOOST_REQUIRE_EQUAL(face.sentData.size(), 2);
Davide Pesavento0f830802018-01-16 23:58:58 -050065 BOOST_CHECK_EQUAL(face.sentData[1].getName(), "/localhost/nfd/NotificationStreamTest/%FE%01");
Alexander Afanasyev4abdbf12014-08-11 12:48:54 -070066 SimpleNotification decoded2;
Alexander Afanasyev9bdbb832015-12-30 12:54:22 -080067 BOOST_CHECK_NO_THROW(decoded2.wireDecode(face.sentData[1].getContent().blockFromValue()));
Alexander Afanasyev4abdbf12014-08-11 12:48:54 -070068 BOOST_CHECK_EQUAL(decoded2.getMessage(), "msg2");
69}
70
Davide Pesaventoeee3e822016-11-26 19:19:34 +010071BOOST_AUTO_TEST_SUITE_END() // TestNotificationStream
72BOOST_AUTO_TEST_SUITE_END() // Util
Alexander Afanasyev4abdbf12014-08-11 12:48:54 -070073
74} // namespace tests
Junxiao Shia60d9362014-11-12 09:38:21 -070075} // namespace util
Alexander Afanasyev4abdbf12014-08-11 12:48:54 -070076} // namespace ndn