diff --git a/tests/daemon/fw/forwarder.t.cpp b/tests/daemon/fw/forwarder.t.cpp
index 8337491..906e2ca 100644
--- a/tests/daemon/fw/forwarder.t.cpp
+++ b/tests/daemon/fw/forwarder.t.cpp
@@ -108,7 +108,7 @@
   BOOST_CHECK_EQUAL(pit.size(), 0);
 
   Cs& cs = forwarder.getCs();
-  BOOST_REQUIRE(cs.insert(*dataA));
+  cs.insert(*dataA);
 
   face1->receiveInterest(*interestA);
   limitedIo.run(LimitedIo::UNLIMITED_OPS, time::milliseconds(5));
diff --git a/tests/daemon/table/cs.t.cpp b/tests/daemon/table/cs.t.cpp
index 63caa44..a4c5d74 100644
--- a/tests/daemon/table/cs.t.cpp
+++ b/tests/daemon/table/cs.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2014-2015,  Regents of the University of California,
+ * Copyright (c) 2014-2016,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -36,7 +36,8 @@
 
 using namespace nfd::tests;
 
-BOOST_FIXTURE_TEST_SUITE(TableCs, BaseFixture)
+BOOST_AUTO_TEST_SUITE(Table)
+BOOST_FIXTURE_TEST_SUITE(TestCs, BaseFixture)
 
 class FindFixture : protected BaseFixture
 {
@@ -313,7 +314,28 @@
   CHECK_CS_FIND(1);
 }
 
-BOOST_AUTO_TEST_SUITE_END()
+/// \todo test MustBeFresh
+
+BOOST_AUTO_TEST_SUITE_END() // Find
+
+// When the capacity limit is set to zero, Data cannot be inserted;
+// this test case covers this situation.
+// The behavior of non-zero capacity limit depends on the eviction policy,
+// and is tested in policy test suites.
+BOOST_FIXTURE_TEST_CASE(ZeroCapacity, FindFixture)
+{
+  m_cs.setLimit(0);
+
+  BOOST_CHECK_EQUAL(m_cs.getLimit(), 0);
+  BOOST_CHECK_EQUAL(m_cs.size(), 0);
+  BOOST_CHECK(m_cs.begin() == m_cs.end());
+
+  insert(1, "ndn:/A");
+  BOOST_CHECK_EQUAL(m_cs.size(), 0);
+
+  startInterest("ndn:/A");
+  CHECK_CS_FIND(0);
+}
 
 BOOST_AUTO_TEST_CASE(CachePolicyNoCache)
 {
@@ -321,12 +343,11 @@
 
   shared_ptr<Data> dataA = makeData("ndn:/A");
   dataA->wireEncode();
-
   dataA->setTag(make_shared<lp::CachePolicyTag>(
                 lp::CachePolicy().setPolicy(lp::CachePolicyType::NO_CACHE)));
+  cs.insert(*dataA);
 
-  BOOST_CHECK_EQUAL(cs.insert(*dataA), false);
-
+  BOOST_CHECK_EQUAL(cs.size(), 0);
   cs.find(Interest("ndn:/A"),
           bind([] { BOOST_CHECK(false); }),
           bind([] { BOOST_CHECK(true); }));
@@ -368,7 +389,8 @@
   BOOST_CHECK_EQUAL_COLLECTIONS(actual.begin(), actual.end(), expected.begin(), expected.end());
 }
 
-BOOST_AUTO_TEST_SUITE_END()
+BOOST_AUTO_TEST_SUITE_END() // TestCs
+BOOST_AUTO_TEST_SUITE_END() // Table
 
 } // namespace tests
 } // namespace cs
