diff --git a/tests/daemon/face/ndnlp.t.cpp b/tests/daemon/face/ndnlp.t.cpp
index bf6edea..b372769 100644
--- a/tests/daemon/face/ndnlp.t.cpp
+++ b/tests/daemon/face/ndnlp.t.cpp
@@ -174,6 +174,16 @@
     return ndn::dataBlock(0x01, blockValue.get(), valueLength);
   }
 
+  void
+  receiveNdnlpData(const Block& block)
+  {
+    bool isOk = false;
+    ndnlp::NdnlpData pkt;
+    std::tie(isOk, pkt) = ndnlp::NdnlpData::fromBlock(block);
+    BOOST_REQUIRE(isOk);
+    pms.receive(pkt);
+  }
+
 protected:
   ndnlp::Slicer slicer;
   ndnlp::PartialMessageStore pms;
@@ -192,7 +202,7 @@
   BOOST_REQUIRE_EQUAL(pa->size(), 1);
 
   BOOST_CHECK_EQUAL(received.size(), 0);
-  pms.receiveNdnlpData(pa->at(0));
+  this->receiveNdnlpData(pa->at(0));
 
   BOOST_REQUIRE_EQUAL(received.size(), 1);
   BOOST_CHECK_EQUAL_COLLECTIONS(received.at(0).begin(), received.at(0).end(),
@@ -211,31 +221,31 @@
   BOOST_REQUIRE_EQUAL(pa2->size(), 2);
 
   BOOST_CHECK_EQUAL(received.size(), 0);
-  pms.receiveNdnlpData(pa->at(0));
+  this->receiveNdnlpData(pa->at(0));
   BOOST_CHECK_EQUAL(received.size(), 0);
   this->advanceClocks(time::milliseconds(40));
 
-  pms.receiveNdnlpData(pa->at(1));
+  this->receiveNdnlpData(pa->at(1));
   BOOST_CHECK_EQUAL(received.size(), 0);
   this->advanceClocks(time::milliseconds(40));
 
-  pms.receiveNdnlpData(pa2->at(1));
+  this->receiveNdnlpData(pa2->at(1));
   BOOST_CHECK_EQUAL(received.size(), 0);
   this->advanceClocks(time::milliseconds(40));
 
-  pms.receiveNdnlpData(pa->at(1));
+  this->receiveNdnlpData(pa->at(1));
   BOOST_CHECK_EQUAL(received.size(), 0);
   this->advanceClocks(time::milliseconds(40));
 
-  pms.receiveNdnlpData(pa2->at(0));
+  this->receiveNdnlpData(pa2->at(0));
   BOOST_CHECK_EQUAL(received.size(), 1);
   this->advanceClocks(time::milliseconds(40));
 
-  pms.receiveNdnlpData(pa->at(3));
+  this->receiveNdnlpData(pa->at(3));
   BOOST_CHECK_EQUAL(received.size(), 1);
   this->advanceClocks(time::milliseconds(40));
 
-  pms.receiveNdnlpData(pa->at(2));
+  this->receiveNdnlpData(pa->at(2));
 
   BOOST_REQUIRE_EQUAL(received.size(), 2);
   BOOST_CHECK_EQUAL_COLLECTIONS(received.at(1).begin(), received.at(1).end(),
@@ -256,31 +266,31 @@
   BOOST_REQUIRE_EQUAL(pa2->size(), 2);
 
   BOOST_CHECK_EQUAL(received.size(), 0);
-  pms.receiveNdnlpData(pa->at(0));
+  this->receiveNdnlpData(pa->at(0));
   BOOST_CHECK_EQUAL(received.size(), 0);
   this->advanceClocks(time::milliseconds(40));
 
-  pms.receiveNdnlpData(pa->at(1));
+  this->receiveNdnlpData(pa->at(1));
   BOOST_CHECK_EQUAL(received.size(), 0);
   this->advanceClocks(time::milliseconds(40));
 
-  pms.receiveNdnlpData(pa2->at(1));
+  this->receiveNdnlpData(pa2->at(1));
   BOOST_CHECK_EQUAL(received.size(), 0);
   this->advanceClocks(time::milliseconds(40));
 
-  pms.receiveNdnlpData(pa->at(1));
+  this->receiveNdnlpData(pa->at(1));
   BOOST_CHECK_EQUAL(received.size(), 0);
   this->advanceClocks(time::milliseconds(40));
 
-  pms.receiveNdnlpData(pa->at(3));
+  this->receiveNdnlpData(pa->at(3));
   BOOST_CHECK_EQUAL(received.size(), 0);
   this->advanceClocks(time::milliseconds(40));
 
-  pms.receiveNdnlpData(pa->at(2));
+  this->receiveNdnlpData(pa->at(2));
   BOOST_CHECK_EQUAL(received.size(), 1);
   this->advanceClocks(time::milliseconds(40));
 
-  pms.receiveNdnlpData(pa2->at(0)); // last fragment was received 160ms ago, expired
+  this->receiveNdnlpData(pa2->at(0)); // last fragment was received 160ms ago, expired
   BOOST_CHECK_EQUAL(received.size(), 1);
   this->advanceClocks(time::milliseconds(40));
 
