table: fix Pit::erase crash when Interest name contains implicit digest
refs #3608
Change-Id: I41e0cd327b9dcc5f2d3a83f4cebff40c2d302fc1
diff --git a/tests/daemon/table/pit.t.cpp b/tests/daemon/table/pit.t.cpp
index 01f063d..80e31d3 100644
--- a/tests/daemon/table/pit.t.cpp
+++ b/tests/daemon/table/pit.t.cpp
@@ -347,6 +347,34 @@
BOOST_CHECK_EQUAL(nameTree.size(), nNameTreeEntriesBefore);
}
+BOOST_AUTO_TEST_CASE(EraseWithFullName)
+{
+ shared_ptr<Data> data = makeData("/test");
+ shared_ptr<Interest> interest = makeInterest(data->getFullName());
+
+ NameTree nameTree(16);
+ Pit pit(nameTree);
+
+ BOOST_CHECK_EQUAL(pit.size(), 0);
+
+ BOOST_CHECK_EQUAL(pit.insert(*interest).second, true);
+ BOOST_CHECK_EQUAL(pit.size(), 1);
+ BOOST_CHECK(pit.find(*interest) != nullptr);
+
+ BOOST_CHECK_EQUAL(pit.insert(*interest).second, false);
+ BOOST_CHECK_EQUAL(pit.size(), 1);
+ shared_ptr<pit::Entry> pitEntry = pit.find(*interest);
+ BOOST_REQUIRE(pitEntry != nullptr);
+
+ pit.erase(pitEntry);
+ BOOST_CHECK_EQUAL(pit.size(), 0);
+ BOOST_CHECK(pit.find(*interest) == nullptr);
+
+ BOOST_CHECK_EQUAL(pit.insert(*interest).second, true);
+ BOOST_CHECK_EQUAL(pit.size(), 1);
+ BOOST_CHECK(pit.find(*interest) != nullptr);
+}
+
BOOST_AUTO_TEST_CASE(FindAllDataMatches)
{
Name nameA ("ndn:/A");