nlsr: implement NameLsa::isEqualContent

Change-Id: Ibf9021144f5ff253515875ac61de97740a1fecd7
refs: #2962
diff --git a/src/lsa.cpp b/src/lsa.cpp
index 52a9948..46dc1c4 100644
--- a/src/lsa.cpp
+++ b/src/lsa.cpp
@@ -112,6 +112,12 @@
   return true;
 }
 
+bool
+NameLsa::isEqualContent(const NameLsa& other) const
+{
+  return m_npl == other.getNpl();
+}
+
 void
 NameLsa::writeLog()
 {
diff --git a/src/lsa.hpp b/src/lsa.hpp
index 934ba40..9d4f89f 100644
--- a/src/lsa.hpp
+++ b/src/lsa.hpp
@@ -127,6 +127,12 @@
     return m_npl;
   }
 
+  const NamePrefixList&
+  getNpl() const
+  {
+    return m_npl;
+  }
+
   void
   addName(const ndn::Name& name)
   {
@@ -166,6 +172,9 @@
   bool
   initializeFromContent(const std::string& content);
 
+  bool
+  isEqualContent(const NameLsa& other) const;
+
   void
   writeLog();
 
@@ -346,4 +355,4 @@
 
 } // namespace nlsr
 
-#endif //NLSR_LSA_HPP
+#endif // NLSR_LSA_HPP
diff --git a/src/name-prefix-list.cpp b/src/name-prefix-list.cpp
index 37c66dc..ec52068 100644
--- a/src/name-prefix-list.cpp
+++ b/src/name-prefix-list.cpp
@@ -77,6 +77,12 @@
   return false;
 }
 
+bool
+NamePrefixList::operator==(const NamePrefixList& other) const
+{
+  return m_nameList == other.getNameList();
+}
+
 void
 NamePrefixList::sort()
 {
@@ -95,4 +101,14 @@
   }
 }
 
+std::ostream&
+operator<<(std::ostream& os, const NamePrefixList& list) {
+  os << "Name prefix list: {\n";
+  for (const auto& name : list.getNameList()) {
+    os << name << "\n";
+  }
+  os << "}" << std::endl;
+  return os;
+}
+
 } // namespace nlsr
diff --git a/src/name-prefix-list.hpp b/src/name-prefix-list.hpp
index 77f0801..12669ce 100644
--- a/src/name-prefix-list.hpp
+++ b/src/name-prefix-list.hpp
@@ -66,6 +66,15 @@
     return m_nameList;
   }
 
+  const std::list<ndn::Name>&
+  getNameList() const
+  {
+    return m_nameList;
+  }
+
+  bool
+  operator==(const NamePrefixList& other) const;
+
   void
   writeLog();
 
@@ -74,6 +83,9 @@
 
 };
 
+std::ostream&
+operator<<(std::ostream& os, const NamePrefixList& list);
+
 } // namespace nlsr
 
-#endif //NLSR_NAME_PREFIX_LIST_HPP
+#endif // NLSR_NAME_PREFIX_LIST_HPP
diff --git a/tests/test-lsa.cpp b/tests/test-lsa.cpp
index 4b683c8..642a317 100644
--- a/tests/test-lsa.cpp
+++ b/tests/test-lsa.cpp
@@ -208,6 +208,29 @@
   BOOST_CHECK_EQUAL(clsa1.getData(), clsa2.getData());
 }
 
+BOOST_AUTO_TEST_SUITE(TestNameLsa)
+
+BOOST_AUTO_TEST_CASE(OperatorEquals)
+{
+  NameLsa lsa1;
+  NameLsa lsa2;
+  ndn::Name name1("/ndn/test/name1");
+  ndn::Name name2("/ndn/test/name2");
+  ndn::Name name3("/ndn/some/other/name1");
+
+  lsa1.addName(name1);
+  lsa1.addName(name2);
+  lsa1.addName(name3);
+
+  lsa2.addName(name1);
+  lsa2.addName(name2);
+  lsa2.addName(name3);
+
+  BOOST_CHECK(lsa1.isEqualContent(lsa2));
+}
+
+BOOST_AUTO_TEST_SUITE_END() // TestNameLsa
+
 BOOST_AUTO_TEST_SUITE_END()
 
 } // namespace test
diff --git a/tests/test-name-prefix-list.cpp b/tests/test-name-prefix-list.cpp
index 45bcd38..b07517f 100644
--- a/tests/test-name-prefix-list.cpp
+++ b/tests/test-name-prefix-list.cpp
@@ -46,6 +46,25 @@
   BOOST_CHECK_EQUAL(npl1.getSize(), 1);
 }
 
+BOOST_AUTO_TEST_CASE(OperatorEquals)
+{
+  NamePrefixList list1;
+  NamePrefixList list2;
+  ndn::Name name1("/ndn/test/name1");
+  ndn::Name name2("/ndn/test/name2");
+  ndn::Name name3("/ndn/some/other/name1");
+
+  list1.insert(name1);
+  list1.insert(name2);
+  list1.insert(name3);
+
+  list2.insert(name1);
+  list2.insert(name2);
+  list2.insert(name3);
+
+  BOOST_CHECK_EQUAL(list1, list2);
+}
+
 BOOST_AUTO_TEST_SUITE_END()
 
 } // namespace test