diff --git a/tests/unit/read-handle.t.cpp b/tests/unit/read-handle.t.cpp
index cb9d233..9afc325 100644
--- a/tests/unit/read-handle.t.cpp
+++ b/tests/unit/read-handle.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2014-2017,  Regents of the University of California.
+ * Copyright (c) 2014-2018,  Regents of the University of California.
  *
  * This file is part of NDN repo-ng (Next generation of NDN repository).
  * See AUTHORS.md for complete list of repo-ng authors and contributors.
@@ -53,7 +53,7 @@
     , subsetLength(1)
     , dataPrefix("/ndn/test/prefix")
     , identity("/ndn/test/identity")
-    , readHandle(face, *handle, keyChain, scheduler, subsetLength)
+    , readHandle(face, *handle, subsetLength)
     , numPrefixRegistrations(0)
     , numPrefixUnregistrations(0)
   {
@@ -103,32 +103,32 @@
   bool didMatch = false;
   face.sentInterests.clear();
   handle->insertData(*data1);
-  face.processEvents(ndn::time::milliseconds(-1));
+  face.processEvents(-1_ms);
   CHECK_INTERESTS(interest.getName(), name::Component{"register"}, true);
 
   face.sentInterests.clear();
   handle->deleteData(data1->getFullName());
-  face.processEvents(ndn::time::milliseconds(-1));
+  face.processEvents(-1_ms);
   CHECK_INTERESTS(interest.getName(), name::Component{"unregister"}, true);
 
   face.sentInterests.clear();
   handle->insertData(*data1);
-  face.processEvents(ndn::time::milliseconds(-1));
+  face.processEvents(-1_ms);
   CHECK_INTERESTS(interest.getName(), name::Component{"register"}, true);
 
   face.sentInterests.clear();
   handle->insertData(*data2);
-  face.processEvents(ndn::time::milliseconds(-1));
+  face.processEvents(-1_ms);
   CHECK_INTERESTS(interest.getName(), name::Component{"register"}, false);
 
   face.sentInterests.clear();
   handle->deleteData(data1->getFullName());
-  face.processEvents(ndn::time::milliseconds(-1));
+  face.processEvents(-1_ms);
   CHECK_INTERESTS(interest.getName(), name::Component{"unregister"}, false);
 
   face.sentInterests.clear();
   handle->deleteData(data2->getFullName());
-  face.processEvents(ndn::time::milliseconds(-1));
+  face.processEvents(-1_ms);
   CHECK_INTERESTS(interest.getName(), name::Component{"unregister"}, true);
 }
 
diff --git a/tests/unit/repo-command-response.cpp b/tests/unit/repo-command-response.cpp
index ab03207..7686c50 100644
--- a/tests/unit/repo-command-response.cpp
+++ b/tests/unit/repo-command-response.cpp
@@ -29,7 +29,7 @@
 BOOST_AUTO_TEST_CASE(EncodeDecode)
 {
   repo::RepoCommandResponse response;
-  response.setStatusCode(404);
+  response.setCode(404);
   response.setStartBlockId(1);
   response.setEndBlockId(100);
   response.setProcessId(1234567890);
@@ -53,7 +53,7 @@
                                   wire.begin(), wire.end());
 
   repo::RepoCommandResponse decoded(wire);
-  BOOST_CHECK_EQUAL(decoded.getStatusCode(), response.getStatusCode());
+  BOOST_CHECK_EQUAL(decoded.getCode(), response.getCode());
   BOOST_CHECK_EQUAL(decoded.getStartBlockId(), response.getStartBlockId());
   BOOST_CHECK_EQUAL(decoded.getEndBlockId(), response.getEndBlockId());
   BOOST_CHECK_EQUAL(decoded.getProcessId(), response.getProcessId());
