diff --git a/tests/unit-tests/test-data.cpp b/tests/unit-tests/test-data.cpp
index c4a9263..2493b89 100644
--- a/tests/unit-tests/test-data.cpp
+++ b/tests/unit-tests/test-data.cpp
@@ -224,7 +224,7 @@
   BOOST_REQUIRE_NO_THROW(d.wireDecode(dataBlock));
 
   BOOST_REQUIRE_EQUAL(d.getName().toUri(), "/local/ndn/prefix");
-  BOOST_REQUIRE_EQUAL(d.getContentType(), static_cast<uint32_t>(MetaInfo::TYPE_DEFAULT));
+  BOOST_REQUIRE_EQUAL(d.getContentType(), static_cast<uint32_t>(tlv::ContentType_Blob));
   BOOST_REQUIRE_EQUAL(d.getFreshnessPeriod(), time::seconds(10));
 
   BOOST_REQUIRE_EQUAL(std::string(reinterpret_cast<const char*>(d.getContent().value()),
@@ -253,7 +253,7 @@
   // manual data packet creation for now
 
   ndn::Data d(ndn::Name("/local/ndn/prefix"));
-  d.setContentType(MetaInfo::TYPE_DEFAULT);
+  d.setContentType(tlv::ContentType_Blob);
   d.setFreshnessPeriod(time::seconds(10));
 
   d.setContent(Content1, sizeof(Content1));
@@ -343,7 +343,7 @@
   // Encoding pipeline
 
   ndn::Data d(ndn::Name("/local/ndn/prefix"));
-  d.setContentType(MetaInfo::TYPE_DEFAULT);
+  d.setContentType(tlv::ContentType_Blob);
   d.setFreshnessPeriod(time::seconds(10));
 
   d.setContent(Content1, sizeof(Content1));
diff --git a/tests/unit-tests/test-meta-info.cpp b/tests/unit-tests/test-meta-info.cpp
index 6ffc5c5..fe25005 100644
--- a/tests/unit-tests/test-meta-info.cpp
+++ b/tests/unit-tests/test-meta-info.cpp
@@ -43,7 +43,7 @@
 BOOST_AUTO_TEST_CASE(Encode)
 {
   MetaInfo meta;
-  meta.setType(MetaInfo::TYPE_DEFAULT);
+  meta.setType(tlv::ContentType_Blob);
   meta.setFreshnessPeriod(time::seconds(10));
 
   BOOST_REQUIRE_NO_THROW(meta.wireEncode());
@@ -55,7 +55,7 @@
   BOOST_REQUIRE_EQUAL_COLLECTIONS(MetaInfo2, MetaInfo2+sizeof(MetaInfo2),
                                   meta.wireEncode().begin(), meta.wireEncode().end());
 
-  meta.setType(MetaInfo::TYPE_LINK);
+  meta.setType(tlv::ContentType_Link);
   BOOST_REQUIRE_NO_THROW(meta.wireEncode());
   BOOST_REQUIRE_EQUAL_COLLECTIONS(MetaInfo3, MetaInfo3+sizeof(MetaInfo3),
                                   meta.wireEncode().begin(), meta.wireEncode().end());
@@ -64,17 +64,17 @@
 BOOST_AUTO_TEST_CASE(Decode)
 {
   MetaInfo meta(Block(MetaInfo1, sizeof(MetaInfo1)));
-  BOOST_CHECK_EQUAL(meta.getType(), static_cast<uint32_t>(MetaInfo::TYPE_DEFAULT));
+  BOOST_CHECK_EQUAL(meta.getType(), static_cast<uint32_t>(tlv::ContentType_Blob));
   BOOST_CHECK_EQUAL(meta.getFreshnessPeriod(), time::seconds(10));
   BOOST_CHECK_EQUAL(meta.getFinalBlockId(), name::Component());
 
   meta.wireDecode(Block(MetaInfo2, sizeof(MetaInfo2)));
-  BOOST_CHECK_EQUAL(meta.getType(), static_cast<uint32_t>(MetaInfo::TYPE_DEFAULT));
+  BOOST_CHECK_EQUAL(meta.getType(), static_cast<uint32_t>(tlv::ContentType_Blob));
   BOOST_CHECK_EQUAL(meta.getFreshnessPeriod(), time::seconds(10));
   BOOST_CHECK_EQUAL(meta.getFinalBlockId(), name::Component("hello,world!"));
 
   meta.wireDecode(Block(MetaInfo3, sizeof(MetaInfo3)));
-  BOOST_CHECK_EQUAL(meta.getType(), static_cast<uint32_t>(MetaInfo::TYPE_LINK));
+  BOOST_CHECK_EQUAL(meta.getType(), static_cast<uint32_t>(tlv::ContentType_Link));
   BOOST_CHECK_EQUAL(meta.getFreshnessPeriod(), time::seconds(10));
   BOOST_CHECK_EQUAL(meta.getFinalBlockId(), name::Component("hello,world!"));
 }
