data: do not encode a Content element if not set
Add Data::hasContent() and Data::unsetContent().
Change the behavior of Interest::setApplicationParameters(Block{}) for
consistency with the corresponding getter and with Data::setContent().
Change-Id: I4cc9058912510db0dfe3da614adee727db149415
diff --git a/tests/unit/metadata-object.t.cpp b/tests/unit/metadata-object.t.cpp
index 364600e..632e15f 100644
--- a/tests/unit/metadata-object.t.cpp
+++ b/tests/unit/metadata-object.t.cpp
@@ -85,23 +85,34 @@
{
Data data;
- // invalid content type
- data.setName(Name("/ndn/unit/test").append(metadataComponent));
- data.setContentType(tlv::ContentType_Key);
- BOOST_CHECK_THROW(MetadataObject metadata(data), tlv::Error);
-
// invalid metadata name
data.setName("/ndn/unit/test");
- data.setContentType(tlv::ContentType_Blob);
- BOOST_CHECK_THROW(MetadataObject metadata(data), tlv::Error);
+ BOOST_CHECK_EXCEPTION(MetadataObject{data}, tlv::Error, [] (const auto& e) {
+ return e.what() == "Name /ndn/unit/test is not a valid MetadataObject name"s;
+ });
+ data.setName(Name("/ndn/unit/test").append(metadataComponent));
+ BOOST_CHECK_EXCEPTION(MetadataObject{data}, tlv::Error, [] (const auto& e) {
+ return e.what() == "Name /ndn/unit/test/32=metadata is not a valid MetadataObject name"s;
+ });
+
+ // invalid content type
+ data.setName(Name("/ndn/unit/test").append(metadataComponent).appendVersion().appendSegment(0));
+ data.setContentType(tlv::ContentType_Key);
+ BOOST_CHECK_EXCEPTION(MetadataObject{data}, tlv::Error, [] (const auto& e) {
+ return e.what() == "MetadataObject has invalid ContentType 2"s;
+ });
// empty content
- data.setName(Name("ndn/unit/test").append(metadataComponent));
- BOOST_CHECK_THROW(MetadataObject metadata(data), tlv::Error);
+ data.setContentType(tlv::ContentType_Blob);
+ BOOST_CHECK_EXCEPTION(MetadataObject{data}, tlv::Error, [] (const auto& e) {
+ return e.what() == "MetadataObject is empty"s;
+ });
// non-empty content with no name element
data.setContent("F000"_block);
- BOOST_CHECK_THROW(MetadataObject metadata(data), tlv::Error);
+ BOOST_CHECK_EXCEPTION(MetadataObject{data}, tlv::Error, [] (const auto& e) {
+ return e.what() == "No sub-element of type 7 found in block of type 21"s;
+ });
}
BOOST_AUTO_TEST_CASE(IsValidName)