tlv: remove unused class LsdbStatus
refs: #4787
Change-Id: I9c7ce59238a3bac06d3db32423853f11f22e9160
diff --git a/src/publisher/dataset-interest-handler.cpp b/src/publisher/dataset-interest-handler.cpp
index d6f8ce7..f31cdbd 100644
--- a/src/publisher/dataset-interest-handler.cpp
+++ b/src/publisher/dataset-interest-handler.cpp
@@ -1,6 +1,6 @@
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/**
- * Copyright (c) 2014-2019, The University of Memphis,
+ * Copyright (c) 2014-2020, The University of Memphis,
* Regents of the University of California,
* Arizona Board of Regents.
*
@@ -21,7 +21,6 @@
#include "dataset-interest-handler.hpp"
#include "nlsr.hpp"
-#include "tlv/lsdb-status.hpp"
#include "logger.hpp"
#include <ndn-cxx/mgmt/nfd/control-response.hpp>
diff --git a/src/tlv/lsdb-status.cpp b/src/tlv/lsdb-status.cpp
deleted file mode 100644
index f39cd27..0000000
--- a/src/tlv/lsdb-status.cpp
+++ /dev/null
@@ -1,239 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/*
- * Copyright (c) 2014-2018, The University of Memphis,
- * Regents of the University of California,
- * Arizona Board of Regents.
- *
- * This file is part of NLSR (Named-data Link State Routing).
- * See AUTHORS.md for complete list of NLSR authors and contributors.
- *
- * NLSR is free software: you can redistribute it and/or modify it under the terms
- * of the GNU General Public License as published by the Free Software Foundation,
- * either version 3 of the License, or (at your option) any later version.
- *
- * NLSR is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
- * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * NLSR, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "lsdb-status.hpp"
-#include "tlv-nlsr.hpp"
-
-#include <ndn-cxx/util/concepts.hpp>
-#include <ndn-cxx/encoding/block-helpers.hpp>
-
-namespace nlsr {
-namespace tlv {
-
-BOOST_CONCEPT_ASSERT((ndn::WireEncodable<LsdbStatus>));
-BOOST_CONCEPT_ASSERT((ndn::WireDecodable<LsdbStatus>));
-static_assert(std::is_base_of<ndn::tlv::Error, LsdbStatus::Error>::value,
- "LsdbStatus::Error must inherit from tlv::Error");
-
-LsdbStatus::LsdbStatus()
- : m_hasAdjacencyLsas(false)
- , m_hasCoordinateLsas(false)
- , m_hasNameLsas(false)
-{
-}
-
-LsdbStatus::LsdbStatus(const ndn::Block& block)
-{
- wireDecode(block);
-}
-
-LsdbStatus&
-LsdbStatus::addAdjacencyLsa(const AdjacencyLsa& adjacencyLsa)
-{
- m_adjacencyLsas.push_back(adjacencyLsa);
- m_wire.reset();
- m_hasAdjacencyLsas = true;
- return *this;
-}
-
-LsdbStatus&
-LsdbStatus::clearAdjacencyLsas()
-{
- m_adjacencyLsas.clear();
- m_hasAdjacencyLsas = false;
- return *this;
-}
-
-LsdbStatus&
-LsdbStatus::addCoordinateLsa(const CoordinateLsa& coordinateLsa)
-{
- m_coordinateLsas.push_back(coordinateLsa);
- m_wire.reset();
- m_hasCoordinateLsas = true;
- return *this;
-}
-
-LsdbStatus&
-LsdbStatus::clearCoordinateLsas()
-{
- m_coordinateLsas.clear();
- m_hasCoordinateLsas = false;
- return *this;
-}
-
-LsdbStatus&
-LsdbStatus::addNameLsa(const NameLsa& nameLsa)
-{
- m_nameLsas.push_back(nameLsa);
- m_wire.reset();
- m_hasNameLsas = true;
- return *this;
-}
-
-LsdbStatus&
-LsdbStatus::clearNameLsas()
-{
- m_nameLsas.clear();
- m_hasNameLsas = false;
- return *this;
-}
-
-template<ndn::encoding::Tag TAG>
-size_t
-LsdbStatus::wireEncode(ndn::EncodingImpl<TAG>& block) const
-{
- size_t totalLength = 0;
-
- for (std::list<NameLsa>::const_reverse_iterator it = m_nameLsas.rbegin();
- it != m_nameLsas.rend(); ++it) {
- totalLength += it->wireEncode(block);
- }
-
- for (std::list<CoordinateLsa>::const_reverse_iterator it = m_coordinateLsas.rbegin();
- it != m_coordinateLsas.rend(); ++it) {
- totalLength += it->wireEncode(block);
- }
-
- for (std::list<AdjacencyLsa>::const_reverse_iterator it = m_adjacencyLsas.rbegin();
- it != m_adjacencyLsas.rend(); ++it) {
- totalLength += it->wireEncode(block);
- }
-
- totalLength += block.prependVarNumber(totalLength);
- totalLength += block.prependVarNumber(ndn::tlv::nlsr::LsdbStatus);
-
- return totalLength;
-}
-
-NDN_CXX_DEFINE_WIRE_ENCODE_INSTANTIATIONS(LsdbStatus);
-
-const ndn::Block&
-LsdbStatus::wireEncode() const
-{
- if (m_wire.hasWire()) {
- return m_wire;
- }
-
- ndn::EncodingEstimator estimator;
- size_t estimatedSize = wireEncode(estimator);
-
- ndn::EncodingBuffer buffer(estimatedSize, 0);
- wireEncode(buffer);
-
- m_wire = buffer.block();
-
- return m_wire;
-}
-
-void
-LsdbStatus::wireDecode(const ndn::Block& wire)
-{
- m_adjacencyLsas.clear();
- m_coordinateLsas.clear();
- m_nameLsas.clear();
-
- m_hasAdjacencyLsas = false;
- m_hasCoordinateLsas = false;
- m_hasNameLsas = false;
-
- m_wire = wire;
-
- if (m_wire.type() != ndn::tlv::nlsr::LsdbStatus) {
- std::stringstream error;
- error << "Expected LsdbStatus Block, but Block is of a different type: #"
- << m_wire.type();
- BOOST_THROW_EXCEPTION(Error(error.str()));
- }
-
- m_wire.parse();
-
- ndn::Block::element_const_iterator val = m_wire.elements_begin();
-
- for (; val != m_wire.elements_end() && val->type() == ndn::tlv::nlsr::AdjacencyLsa; ++val) {
- m_adjacencyLsas.push_back(AdjacencyLsa(*val));
- m_hasAdjacencyLsas = true;
- }
-
- for (; val != m_wire.elements_end() && val->type() == ndn::tlv::nlsr::CoordinateLsa; ++val) {
- m_coordinateLsas.push_back(CoordinateLsa(*val));
- m_hasCoordinateLsas = true;
- }
-
- for (; val != m_wire.elements_end() && val->type() == ndn::tlv::nlsr::NameLsa; ++val) {
- m_nameLsas.push_back(NameLsa(*val));
- m_hasNameLsas = true;
- }
-
- if (val != m_wire.elements_end()) {
- std::stringstream error;
- error << "Expected the end of elements, but Block is of a different type: #"
- << val->type();
- BOOST_THROW_EXCEPTION(Error(error.str()));
- }
-}
-
-std::ostream&
-operator<<(std::ostream& os, const LsdbStatus& lsdbStatus)
-{
- os << "LsdbStatus(";
-
- bool isFirst = true;
-
- for (const auto& adjacencyLsa : lsdbStatus.getAdjacencyLsas()) {
- if (isFirst) {
- isFirst = false;
- }
- else {
- os << ", ";
- }
-
- os << adjacencyLsa;
- }
-
- for (const auto& coordinateLsa : lsdbStatus.getCoordinateLsas()) {
- if (isFirst) {
- isFirst = false;
- }
- else {
- os << ", ";
- }
-
- os << coordinateLsa;
- }
-
- for (const auto& nameLsa : lsdbStatus.getNameLsas()) {
- if (isFirst) {
- isFirst = false;
- }
- else {
- os << ", ";
- }
-
- os << nameLsa;
- }
-
- os << ")";
-
- return os;
-}
-
-} // namespace tlv
-} // namespace nlsr
diff --git a/src/tlv/lsdb-status.hpp b/src/tlv/lsdb-status.hpp
deleted file mode 100644
index 7d93859..0000000
--- a/src/tlv/lsdb-status.hpp
+++ /dev/null
@@ -1,176 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/*
- * Copyright (c) 2014-2018, The University of Memphis,
- * Regents of the University of California,
- * Arizona Board of Regents.
- *
- * This file is part of NLSR (Named-data Link State Routing).
- * See AUTHORS.md for complete list of NLSR authors and contributors.
- *
- * NLSR is free software: you can redistribute it and/or modify it under the terms
- * of the GNU General Public License as published by the Free Software Foundation,
- * either version 3 of the License, or (at your option) any later version.
- *
- * NLSR is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
- * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * NLSR, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef NLSR_TLV_LSDB_STATUS_HPP
-#define NLSR_TLV_LSDB_STATUS_HPP
-
-#include "adjacency-lsa.hpp"
-#include "coordinate-lsa.hpp"
-#include "name-lsa.hpp"
-
-#include <ndn-cxx/util/time.hpp>
-#include <ndn-cxx/encoding/block.hpp>
-#include <ndn-cxx/encoding/encoding-buffer.hpp>
-#include <ndn-cxx/encoding/tlv.hpp>
-#include <ndn-cxx/name.hpp>
-
-#include <list>
-
-namespace nlsr {
-namespace tlv {
-
-/*! \brief Data abstraction for LsdbStatus
- *
- * LsdbStatus := LSDB-STATUS-TYPE TLV-LENGTH
- * AdjacencyLsa*
- * CoordinateLsa*
- * NameLsa*
- *
- * \sa https://redmine.named-data.net/projects/nlsr/wiki/LSDB_DataSet
- */
-class LsdbStatus
-{
-public:
- class Error : public ndn::tlv::Error
- {
- public:
- explicit
- Error(const std::string& what)
- : ndn::tlv::Error(what)
- {
- }
- };
-
- typedef std::list<AdjacencyLsa> AdjacencyLsaList;
- typedef std::list<CoordinateLsa> CoordinateLsaList;
- typedef std::list<NameLsa> NameLsaList;
-
- LsdbStatus();
-
- explicit
- LsdbStatus(const ndn::Block& block);
-
- const std::list<AdjacencyLsa>&
- getAdjacencyLsas() const
- {
- return m_adjacencyLsas;
- }
-
- LsdbStatus&
- addAdjacencyLsa(const AdjacencyLsa& adjacencyLsa);
-
- LsdbStatus&
- clearAdjacencyLsas();
-
- bool
- hasAdjacencyLsas()
- {
- return m_hasAdjacencyLsas;
- }
-
- const std::list<CoordinateLsa>&
- getCoordinateLsas() const
- {
- return m_coordinateLsas;
- }
-
- LsdbStatus&
- addCoordinateLsa(const CoordinateLsa& coordinateLsa);
-
- LsdbStatus&
- clearCoordinateLsas();
-
- bool
- hasCoordinateLsas()
- {
- return m_hasCoordinateLsas;
- }
-
- const std::list<NameLsa>&
- getNameLsas() const
- {
- return m_nameLsas;
- }
-
- LsdbStatus&
- addNameLsa(const NameLsa& nameLsa);
-
- LsdbStatus&
- clearNameLsas();
-
- bool
- hasNameLsas()
- {
- return m_hasNameLsas;
- }
-
- /*! \brief Encodes the LSA objects and some info for each LSA using
- * the method in TAG.
- *
- * This function will TLV-format the LSA objects and some LSA
- * info using the implementation specified by TAG. Usually this is
- * called with an estimator first to guess how long the buffer needs
- * to be, then with an encoder to do the real work. This process is
- * automated by the other wireEncode.
- * \sa LsdbStatus::wireEncode()
- */
- template<ndn::encoding::Tag TAG>
- size_t
- wireEncode(ndn::EncodingImpl<TAG>& block) const;
-
- /*! \brief Create a TLV encoding of this object.
- *
- * Create a block containing the TLV encoding of this object. That
- * involves two steps: estimating the size that the information will
- * take up, and then creating a buffer of that size and encoding the
- * information into it. Both steps are accomplished by
- * LsdbStatus::wireEncode(ndn::EncodingImpl<TAG>&)
- */
- const ndn::Block&
- wireEncode() const;
-
- /*! \brief Populate this object by decoding the one contained in the
- * given block.
- */
- void
- wireDecode(const ndn::Block& wire);
-
-private:
- AdjacencyLsaList m_adjacencyLsas;
- CoordinateLsaList m_coordinateLsas;
- NameLsaList m_nameLsas;
-
- bool m_hasAdjacencyLsas;
- bool m_hasCoordinateLsas;
- bool m_hasNameLsas;
-
- mutable ndn::Block m_wire;
-};
-
-NDN_CXX_DECLARE_WIRE_ENCODE_INSTANTIATIONS(LsdbStatus);
-
-std::ostream&
-operator<<(std::ostream& os, const LsdbStatus& lsdbStatus);
-
-} // namespace tlv
-} // namespace nlsr
-
-#endif // NLSR_TLV_LSDB_STATUS_HPP
diff --git a/tests/tlv/test-lsdb-status.cpp b/tests/tlv/test-lsdb-status.cpp
deleted file mode 100644
index 0c87774..0000000
--- a/tests/tlv/test-lsdb-status.cpp
+++ /dev/null
@@ -1,372 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2014-2019, The University of Memphis,
- * Regents of the University of California,
- * Arizona Board of Regents.
- *
- * This file is part of NLSR (Named-data Link State Routing).
- * See AUTHORS.md for complete list of NLSR authors and contributors.
- *
- * NLSR is free software: you can redistribute it and/or modify it under the terms
- * of the GNU General Public License as published by the Free Software Foundation,
- * either version 3 of the License, or (at your option) any later version.
- *
- * NLSR is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
- * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * NLSR, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "tlv/lsdb-status.hpp"
-
-#include "tests/boost-test.hpp"
-
-#include <boost/mpl/vector.hpp>
-#include <boost/lexical_cast.hpp>
-
-namespace nlsr {
-namespace tlv {
-namespace test {
-
-BOOST_AUTO_TEST_SUITE(TlvTestLsdbStatus)
-
-const uint8_t LsdbStatusData1[] =
-{
- // Header
- 0x8a, 0x7b,
- // AdjacencyLsa
- 0x83, 0x32,
- // LsaInfo
- 0x80, 0x11, 0x81, 0x08, 0x07, 0x06, 0x08, 0x04, 0x74, 0x65, 0x73, 0x74, 0x82, 0x01,
- 0x80, 0x8b, 0x02, 0x27, 0x10,
- // Adjacency
- 0x84, 0x1d, 0x07, 0x0c, 0x08, 0x0a, 0x61, 0x64, 0x6a, 0x61, 0x63, 0x65, 0x6e, 0x63,
- 0x79, 0x31, 0x8d, 0x0a, 0x61, 0x64, 0x6a, 0x61, 0x63, 0x65, 0x6e, 0x63, 0x79, 0x31,
- 0x8c, 0x01, 0x80,
- // CoordinateLsa
- 0x85, 0x27,
- // LsaInfo
- 0x80, 0x11, 0x81, 0x08, 0x07, 0x06, 0x08, 0x04, 0x74, 0x65, 0x73, 0x74, 0x82, 0x01,
- 0x80, 0x8b, 0x02, 0x27, 0x10,
- // HyperbolicRadius
- 0x87, 0x08, 0x3f, 0xfa, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66,
- // HyperbolicAngle
- 0x88, 0x08, 0x3f, 0xfc, 0x7a, 0xe1, 0x47, 0xae, 0x14, 0x7b,
- // NameLsa
- 0x89, 0x1c,
- // LsaInfo
- 0x80, 0x11, 0x81, 0x08, 0x07, 0x06, 0x08, 0x04, 0x74, 0x65, 0x73, 0x74, 0x82, 0x01,
- 0x80, 0x8b, 0x02, 0x27, 0x10,
- // Name
- 0x07, 0x07, 0x08, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x31
-};
-
-const uint8_t LsdbStatusData2[] =
-{
- // Header
- 0x8a, 0x00
-};
-
-const uint8_t LsdbStatusData3[] =
-{
- // Header
- 0x8a, 0x7b,
- // CoordianteLsa
- 0x85, 0x27,
- // LsaInfo
- 0x80, 0x11, 0x81, 0x08, 0x07, 0x06, 0x08, 0x04, 0x74, 0x65, 0x73, 0x74, 0x82, 0x01,
- 0x80, 0x8B, 0x02, 0x27, 0x10,
- // HyperbolicRadius
- 0x87, 0x08, 0x3F, 0xFA, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66,
- // HyperbolicAngle
- 0x88, 0x08, 0x3F, 0xFC, 0x7A, 0xE1, 0x47, 0xAE, 0x14, 0x7B,
- // NameLsa
- 0x89, 0x1c,
- // LsaInfo
- 0x80, 0x11, 0x81, 0x08, 0x07, 0x06, 0x08, 0x04, 0x74, 0x65, 0x73, 0x74, 0x82, 0x01,
- 0x80, 0x8b, 0x02, 0x27, 0x10,
- // Name
- 0x07, 0x07, 0x08, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x31,
- // AdjacencyLsa
- 0x83, 0x32,
- // LsaInfo
- 0x80, 0x11, 0x81, 0x08, 0x07, 0x06, 0x08, 0x04, 0x74, 0x65, 0x73, 0x74, 0x82, 0x01,
- 0x80, 0x8B, 0x02, 0x27, 0x10,
- // Adjacency
- 0x84, 0x1d, 0x07, 0x0c, 0x08, 0x0a, 0x61, 0x64, 0x6a, 0x61, 0x63, 0x65, 0x6e, 0x63,
- 0x79, 0x31, 0x8d, 0x0a, 0x61, 0x64, 0x6a, 0x61, 0x63, 0x65, 0x6e, 0x63, 0x79, 0x31,
- 0x8c, 0x01, 0x80
-};
-
-BOOST_AUTO_TEST_CASE(LsdbStatusEncode1)
-{
- LsdbStatus lsdbStatus;
-
- LsaInfo lsaInfo;
- lsaInfo.setOriginRouter("test");
- lsaInfo.setSequenceNumber(128);
- lsaInfo.setExpirationPeriod(ndn::time::milliseconds(10000));
-
- // AdjacencyLsa
- AdjacencyLsa adjacencyLsa;
- adjacencyLsa.setLsaInfo(lsaInfo);
-
- Adjacency adjacency1;
- adjacency1.setName("adjacency1");
- adjacency1.setUri("adjacency1");
- adjacency1.setCost(128);
- adjacencyLsa.addAdjacency(adjacency1);
-
- lsdbStatus.addAdjacencyLsa(adjacencyLsa);
-
- // CoordinateLsa
- CoordinateLsa coordinateLsa;
- coordinateLsa.setLsaInfo(lsaInfo);
-
- coordinateLsa.setHyperbolicRadius(1.65);
- std::vector<double> angles;
- angles.push_back(1.78);
- coordinateLsa.setHyperbolicAngle(angles);
-
- lsdbStatus.addCoordinateLsa(coordinateLsa);
-
- // NameLsa
- NameLsa nameLsa;
- nameLsa.setLsaInfo(lsaInfo);
- nameLsa.addName("name1");
-
- lsdbStatus.addNameLsa(nameLsa);
-
- const ndn::Block& wire = lsdbStatus.wireEncode();
-
- BOOST_REQUIRE_EQUAL_COLLECTIONS(LsdbStatusData1,
- LsdbStatusData1 + sizeof(LsdbStatusData1),
- wire.begin(), wire.end());
-}
-
-BOOST_AUTO_TEST_CASE(LsdbStatusEncode2)
-{
- LsdbStatus lsdbStatus;
-
- const ndn::Block& wire = lsdbStatus.wireEncode();
- BOOST_REQUIRE_EQUAL_COLLECTIONS(LsdbStatusData2,
- LsdbStatusData2 + sizeof(LsdbStatusData2),
- wire.begin(), wire.end());
-}
-
-BOOST_AUTO_TEST_CASE(LsdbStatusDecode1)
-{
- LsdbStatus lsdbStatus;
-
- lsdbStatus.wireDecode(ndn::Block(LsdbStatusData1, sizeof(LsdbStatusData1)));
-
- std::list<AdjacencyLsa> adjacencyLsas = lsdbStatus.getAdjacencyLsas();
- std::list<AdjacencyLsa>::const_iterator it1 = adjacencyLsas.begin();
-
- LsaInfo lsaInfo = it1->getLsaInfo();
- BOOST_CHECK_EQUAL(lsaInfo.getOriginRouter(), "test");
- BOOST_CHECK_EQUAL(lsaInfo.getSequenceNumber(), 128);
- BOOST_CHECK_EQUAL(lsaInfo.getExpirationPeriod(), ndn::time::milliseconds(10000));
-
- std::list<Adjacency> adjacencies = it1->getAdjacencies();
- std::list<Adjacency>::const_iterator it2 = adjacencies.begin();
- BOOST_CHECK_EQUAL(it2->getName(), "adjacency1");
- BOOST_CHECK_EQUAL(it2->getUri(), "adjacency1");
- BOOST_CHECK_EQUAL(it2->getCost(), 128);
-
- BOOST_CHECK_EQUAL(lsdbStatus.hasAdjacencyLsas(), true);
-
- std::list<CoordinateLsa> coordinateLsas = lsdbStatus.getCoordinateLsas();
- std::list<CoordinateLsa>::const_iterator it3 = coordinateLsas.begin();
-
- lsaInfo = it3->getLsaInfo();
- BOOST_CHECK_EQUAL(lsaInfo.getOriginRouter(), "test");
- BOOST_CHECK_EQUAL(lsaInfo.getSequenceNumber(), 128);
- BOOST_CHECK_EQUAL(lsaInfo.getExpirationPeriod(), ndn::time::milliseconds(10000));
-
- BOOST_REQUIRE_EQUAL(it3->getHyperbolicRadius(), 1.65);
- std::vector<double> angles;
- angles.push_back(1.78);
- BOOST_REQUIRE(it3->getHyperbolicAngle() == angles);
-
- BOOST_CHECK_EQUAL(lsdbStatus.hasCoordinateLsas(), true);
-
- std::list<NameLsa> nameLsas = lsdbStatus.getNameLsas();
- std::list<NameLsa>::const_iterator it4 = nameLsas.begin();
-
- lsaInfo = it4->getLsaInfo();
- BOOST_CHECK_EQUAL(lsaInfo.getOriginRouter(), "test");
- BOOST_CHECK_EQUAL(lsaInfo.getSequenceNumber(), 128);
- BOOST_CHECK_EQUAL(lsaInfo.getExpirationPeriod(), ndn::time::milliseconds(10000));
-
- std::list<ndn::Name> names = it4->getNames();
- std::list<ndn::Name>::const_iterator it5 = names.begin();
- BOOST_CHECK_EQUAL(*it5, "name1");
-
- BOOST_CHECK_EQUAL(lsdbStatus.hasNameLsas(), true);
-}
-
-BOOST_AUTO_TEST_CASE(LsdbStatusDecode2)
-{
- LsdbStatus lsdbStatus;
-
- lsdbStatus.wireDecode(ndn::Block(LsdbStatusData2, sizeof(LsdbStatusData2)));
-
- BOOST_CHECK_EQUAL(lsdbStatus.hasAdjacencyLsas(), false);
- BOOST_CHECK_EQUAL(lsdbStatus.hasCoordinateLsas(), false);
- BOOST_CHECK_EQUAL(lsdbStatus.hasNameLsas(), false);
-}
-
-BOOST_AUTO_TEST_CASE(LsdbStatusDecode3)
-{
- LsdbStatus lsdbStatus;
-
- BOOST_CHECK_THROW(lsdbStatus.wireDecode(ndn::Block(LsdbStatusData3, sizeof(LsdbStatusData3))),
- LsdbStatus::Error);
-}
-
-BOOST_AUTO_TEST_CASE(LsdbStatusClear)
-{
- LsdbStatus lsdbStatus;
-
- LsaInfo lsaInfo;
- lsaInfo.setOriginRouter("test");
- lsaInfo.setSequenceNumber(128);
- lsaInfo.setExpirationPeriod(ndn::time::milliseconds(10000));
-
- // AdjacencyLsa
- AdjacencyLsa adjacencyLsa;
- adjacencyLsa.setLsaInfo(lsaInfo);
-
- Adjacency adjacency1;
- adjacency1.setName("adjacency1");
- adjacency1.setUri("adjacency1");
- adjacency1.setCost(128);
- adjacencyLsa.addAdjacency(adjacency1);
-
- lsdbStatus.addAdjacencyLsa(adjacencyLsa);
- BOOST_CHECK_EQUAL(lsdbStatus.hasAdjacencyLsas(), true);
- lsdbStatus.clearAdjacencyLsas();
- BOOST_CHECK_EQUAL(lsdbStatus.hasAdjacencyLsas(), false);
-
- // CoordinateLsa
- CoordinateLsa coordinateLsa;
- coordinateLsa.setLsaInfo(lsaInfo);
-
- coordinateLsa.setHyperbolicRadius(1.65);
- std::vector<double> angles;
- angles.push_back(1.78);
- coordinateLsa.setHyperbolicAngle(angles);
-
- lsdbStatus.addCoordinateLsa(coordinateLsa);
- BOOST_CHECK_EQUAL(lsdbStatus.hasCoordinateLsas(), true);
- lsdbStatus.clearCoordinateLsas();
- BOOST_CHECK_EQUAL(lsdbStatus.hasCoordinateLsas(), false);
-
- // NameLsa
- NameLsa nameLsa;
- nameLsa.setLsaInfo(lsaInfo);
- nameLsa.addName("name1");
-
- lsdbStatus.addNameLsa(nameLsa);
- BOOST_CHECK_EQUAL(lsdbStatus.hasNameLsas(), true);
- lsdbStatus.clearNameLsas();
- BOOST_CHECK_EQUAL(lsdbStatus.hasNameLsas(), false);
-}
-
-class Theta
-{
-public:
- std::vector<double> angles = {1.78};
-};
-
-class ThetaAndPhi
-{
-public:
- std::vector<double> angles = {1.78, 3.21};
-};
-
-typedef boost::mpl::vector<Theta, ThetaAndPhi> HyperbolicAngleVectorFixture;
-
-BOOST_AUTO_TEST_CASE_TEMPLATE(LsdbStatusOutputStream, HRAngleVector, HyperbolicAngleVectorFixture)
-{
- HRAngleVector angleVector;
- LsdbStatus lsdbStatus;
-
- LsaInfo lsaInfo;
- lsaInfo.setOriginRouter("test");
- lsaInfo.setSequenceNumber(128);
- lsaInfo.setExpirationPeriod(ndn::time::milliseconds(10000));
-
- // AdjacencyLsa
- AdjacencyLsa adjacencyLsa;
- adjacencyLsa.setLsaInfo(lsaInfo);
-
- Adjacency adjacency1;
- adjacency1.setName("adjacency1");
- adjacency1.setUri("adjacency1");
- adjacency1.setCost(128);
- adjacencyLsa.addAdjacency(adjacency1);
-
- lsdbStatus.addAdjacencyLsa(adjacencyLsa);
-
- // NameLsa
- NameLsa nameLsa;
- nameLsa.setLsaInfo(lsaInfo);
- nameLsa.addName("name1");
-
- lsdbStatus.addNameLsa(nameLsa);
-
- // CoordinateLsa
- CoordinateLsa coordinateLsa;
- coordinateLsa.setLsaInfo(lsaInfo);
-
- coordinateLsa.setHyperbolicRadius(1.65);
- coordinateLsa.setHyperbolicAngle(angleVector.angles);
-
- std::string outputAngles = "HyperbolicAngles: ";
- for (uint i = 0; i < angleVector.angles.size(); i++) {
- std::string angle = boost::lexical_cast<std::string>(angleVector.angles[i]);
- if (i == angleVector.angles.size()-1) {
- outputAngles += angle;
- }
- else {
- outputAngles += angle + ", ";
- }
- }
- outputAngles += "), ";
-
- lsdbStatus.addCoordinateLsa(coordinateLsa);
-
- std::ostringstream os;
- os << lsdbStatus;
-
- BOOST_CHECK_EQUAL(os.str(), "LsdbStatus("
- "AdjacencyLsa("
- "LsaInfo("
- "OriginRouter: /test, "
- "SequenceNumber: 128, "
- "ExpirationPeriod: 10000 milliseconds), "
- "Adjacency(Name: /adjacency1, Uri: adjacency1, Cost: 128)), "
- "CoordinateLsa("
- "LsaInfo("
- "OriginRouter: /test, "
- "SequenceNumber: 128, "
- "ExpirationPeriod: 10000 milliseconds), "
- "HyperbolicRadius: 1.65, "
- + outputAngles +
- "NameLsa("
- "LsaInfo("
- "OriginRouter: /test, "
- "SequenceNumber: 128, "
- "ExpirationPeriod: 10000 milliseconds), "
- "Name: /name1))");
-}
-
-BOOST_AUTO_TEST_SUITE_END()
-
-} // namespace test
-} // namespace tlv
-} // namespace nlsr