interest: add support for ParametersSha256DigestComponent

Add Name::set(), Name::appendParametersSha256Digest(),
Name::appendParametersSha256DigestPlaceholder(), Name::erase()

Refs: #4658
Change-Id: Ic688030504804158ef8627a5f751ebc8b2587611
diff --git a/tests/unit/name.t.cpp b/tests/unit/name.t.cpp
index a560678..362f443 100644
--- a/tests/unit/name.t.cpp
+++ b/tests/unit/name.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2013-2018 Regents of the University of California.
+ * Copyright (c) 2013-2019 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -197,6 +197,29 @@
 
 // ---- modifiers ----
 
+BOOST_AUTO_TEST_CASE(SetComponent)
+{
+  Name name("/A/B");
+  BOOST_CHECK_EQUAL(name.wireEncode(), "0706 080141 080142"_block);
+  BOOST_CHECK_EQUAL(name.hasWire(), true);
+
+  // pass by const lvalue ref
+  const Component c("C");
+  name.set(0, c);
+  BOOST_CHECK_EQUAL(name.hasWire(), false);
+  BOOST_CHECK_EQUAL(name.wireEncode(), "0706 080143 080142"_block);
+
+  // pass by rvalue ref
+  Component d("D");
+  name.set(1, std::move(d));
+  BOOST_CHECK_EQUAL(name.hasWire(), false);
+  BOOST_CHECK_EQUAL(name.wireEncode(), "0706 080143 080144"_block);
+
+  // negative index
+  name.set(-1, Component("E"));
+  BOOST_CHECK_EQUAL(name.wireEncode(), "0706 080143 080145"_block);
+}
+
 BOOST_AUTO_TEST_CASE(AppendComponent)
 {
   Name name;
@@ -239,6 +262,10 @@
   name.append(PartialName("/6=C/D"))
       .append(PartialName("/E"));
   BOOST_CHECK_EQUAL(name.wireEncode(), "070F 080141 080142 060143 080144 080145"_block);
+
+  name = "/A/B";
+  name.append(name);
+  BOOST_CHECK_EQUAL(name.wireEncode(), "070C 080141 080142 080141 080142"_block);
 }
 
 BOOST_AUTO_TEST_CASE(AppendNumber)
@@ -254,6 +281,26 @@
   }
 }
 
+BOOST_AUTO_TEST_CASE(AppendParametersSha256Digest)
+{
+  auto digest = make_shared<Buffer>(32);
+
+  Name name("/P");
+  name.appendParametersSha256Digest(digest);
+  BOOST_CHECK_EQUAL(name.wireEncode(),
+                    "0725 080150 02200000000000000000000000000000000000000000000000000000000000000000"_block);
+
+  name = "/P";
+  name.appendParametersSha256Digest(digest->data(), digest->size());
+  BOOST_CHECK_EQUAL(name.wireEncode(),
+                    "0725 080150 02200000000000000000000000000000000000000000000000000000000000000000"_block);
+
+  name = "/P";
+  name.appendParametersSha256DigestPlaceholder();
+  BOOST_CHECK_EQUAL(name.wireEncode(),
+                    "0725 080150 0220E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855"_block);
+}
+
 BOOST_AUTO_TEST_CASE(Markers)
 {
   // TestNameComponent/NamingConvention provides additional coverage for these methods,
@@ -282,6 +329,32 @@
   BOOST_CHECK_EQUAL(number, 11676);
 }
 
+BOOST_AUTO_TEST_CASE(EraseComponent)
+{
+  Name name("/A/B/C");
+  BOOST_CHECK_EQUAL(name.wireEncode(), "0709 080141 080142 080143"_block);
+  BOOST_CHECK_EQUAL(name.hasWire(), true);
+
+  name.erase(1);
+  BOOST_CHECK_EQUAL(name.size(), 2);
+  BOOST_CHECK_EQUAL(name.hasWire(), false);
+  BOOST_CHECK_EQUAL(name.wireEncode(), "0706 080141 080143"_block);
+
+  name.erase(-1);
+  BOOST_CHECK_EQUAL(name.size(), 1);
+  BOOST_CHECK_EQUAL(name.hasWire(), false);
+  BOOST_CHECK_EQUAL(name.wireEncode(), "0703 080141"_block);
+}
+
+BOOST_AUTO_TEST_CASE(Clear)
+{
+  Name name("/A/B/C");
+  BOOST_CHECK_EQUAL(name.empty(), false);
+  name.clear();
+  BOOST_CHECK_EQUAL(name.empty(), true);
+  BOOST_CHECK(name.begin() == name.end());
+}
+
 // ---- algorithms ----
 
 BOOST_AUTO_TEST_CASE(GetSuccessor)