diff --git a/tests/unit/encoding/block.t.cpp b/tests/unit/encoding/block.t.cpp
index f6b245e..fea4714 100644
--- a/tests/unit/encoding/block.t.cpp
+++ b/tests/unit/encoding/block.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2013-2019 Regents of the University of California.
+ * Copyright (c) 2013-2020 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -49,7 +49,6 @@
   Block b;
 
   BOOST_CHECK_EQUAL(b.isValid(), false);
-  BOOST_CHECK_EQUAL(b.empty(), true);
   BOOST_CHECK_EQUAL(b.type(), tlv::Invalid);
   BOOST_CHECK_EQUAL(b.hasValue(), false);
   BOOST_CHECK_EQUAL(b.value_size(), 0);
diff --git a/tests/unit/name-component.t.cpp b/tests/unit/name-component.t.cpp
index 7abec36..10663bf 100644
--- a/tests/unit/name-component.t.cpp
+++ b/tests/unit/name-component.t.cpp
@@ -402,23 +402,6 @@
   }
 };
 
-class SegmentOffsetMarker
-{
-public:
-  using ConventionRev = ConventionMarker;
-
-  ConventionTest<uint64_t>
-  operator()() const
-  {
-    return {&Component::fromSegmentOffset,
-            bind(&Component::toSegmentOffset, _1),
-            bind(&Name::appendSegmentOffset, _1, _2),
-            Name("/%FB%00%01%86%A0"),
-            100000,
-            bind(&Component::isSegmentOffset, _1)};
-  }
-};
-
 class ByteOffsetTyped
 {
 public:
@@ -542,7 +525,6 @@
   NumberWithMarker,
   SegmentMarker,
   SegmentTyped,
-  SegmentOffsetMarker,
   ByteOffsetTyped,
   VersionMarker,
   VersionTyped,
diff --git a/tests/unit/name.t.cpp b/tests/unit/name.t.cpp
index 21ecc00..165668b 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-2019 Regents of the University of California.
+ * Copyright (c) 2013-2020 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -320,15 +320,12 @@
   BOOST_REQUIRE_NO_THROW(number = name.appendSegment(30923).at(-1).toSegment());
   BOOST_CHECK_EQUAL(number, 30923);
 
-  BOOST_REQUIRE_NO_THROW(number = name.appendSegmentOffset(589).at(-1).toSegmentOffset());
-  BOOST_CHECK_EQUAL(number, 589);
-
   BOOST_REQUIRE_NO_THROW(number = name.appendVersion().at(-1).toVersion());
 
   BOOST_REQUIRE_NO_THROW(number = name.appendVersion(25912).at(-1).toVersion());
   BOOST_CHECK_EQUAL(number, 25912);
 
-  const time::system_clock::TimePoint tp = time::system_clock::now();
+  const auto tp = time::system_clock::now();
   time::system_clock::TimePoint tp2;
   BOOST_REQUIRE_NO_THROW(tp2 = name.appendTimestamp(tp).at(-1).toTimestamp());
   BOOST_CHECK_LE(time::abs(tp2 - tp), 1_us);
