diff --git a/tests/unit-tests/test-leaf.cpp b/tests/unit-tests/test-leaf.cpp
index a8f3101..5553a05 100644
--- a/tests/unit-tests/test-leaf.cpp
+++ b/tests/unit-tests/test-leaf.cpp
@@ -17,7 +17,9 @@
  * ChronoSync, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "leaf.hpp"
+#include "leaf-container.hpp"
 #include <ndn-cxx/encoding/buffer-stream.hpp>
 
 #include "boost-test.hpp"
@@ -63,6 +65,62 @@
   BOOST_CHECK(*result == *digest);
 }
 
+BOOST_AUTO_TEST_CASE(Container)
+{
+  LeafPtr leaf1 = make_shared<Leaf>(Name("/test/name"), 1, 10);
+  LeafPtr leaf2 = make_shared<Leaf>(Name("/test/name"), 2, 10);
+
+  LeafContainer container;
+
+  container.insert(leaf1);
+  container.insert(leaf2);
+
+  Name idx1("/test/name");
+  idx1.appendNumber(1);
+
+  Name idx2("/test/name");
+  idx2.appendNumber(2);
+
+  Name idx3("/test/name");
+  idx3.appendNumber(3);
+
+  Name idx4("/test/mane");
+  idx4.appendNumber(4);
+
+  LeafContainer::index<hashed>::type& hashedIndex = container.get<hashed>();
+
+  BOOST_CHECK_EQUAL(container.get<ordered>().size(), 2);
+  BOOST_CHECK_EQUAL(container.get<hashed>().size(), 2);
+  BOOST_CHECK(container.find(idx1) != container.end());
+  BOOST_CHECK(container.find(idx2) != container.end());
+  BOOST_CHECK(container.find(idx3) == container.end());
+
+  BOOST_CHECK(hashedIndex.find(idx1) != hashedIndex.end());
+  BOOST_CHECK(hashedIndex.find(idx2) != hashedIndex.end());
+  BOOST_CHECK(hashedIndex.find(idx3) == hashedIndex.end());
+
+  LeafPtr leaf3 = make_shared<Leaf>(Name("/test/mane"), 3, 10);
+  container.insert(leaf3);
+
+  Name idx0("/test/mane");
+  idx0.appendNumber(3);
+
+  LeafContainer::index<ordered>::type::iterator it = container.get<ordered>().begin();
+  BOOST_CHECK_EQUAL((*it)->getSessionName(), idx0);
+  it++;
+  BOOST_REQUIRE(it != container.get<ordered>().end());
+  BOOST_CHECK_EQUAL((*it)->getSessionName(), idx1);
+  it++;
+  BOOST_REQUIRE(it != container.get<ordered>().end());
+  BOOST_CHECK_EQUAL((*it)->getSessionName(), idx2);
+
+
+  BOOST_CHECK(hashedIndex.find(idx0) != hashedIndex.end());
+  BOOST_CHECK(hashedIndex.find(idx1) != hashedIndex.end());
+  BOOST_CHECK(hashedIndex.find(idx2) != hashedIndex.end());
+  BOOST_CHECK(hashedIndex.find(idx4) == hashedIndex.end());
+}
+
 BOOST_AUTO_TEST_SUITE_END()
 
 } // namespace test
