[svn] commit: r3812 - in /branches/trac397focused/src/lib/datasrc: Makefile.am rbtree.h tests/rbtree_unittest.cc

BIND 10 source code commits bind10-changes at lists.isc.org
Mon Dec 13 10:36:57 UTC 2010


Author: chenzhengzhang
Date: Mon Dec 13 10:36:57 2010
New Revision: 3812

Log:
improve rbtree test coverage

Modified:
    branches/trac397focused/src/lib/datasrc/Makefile.am
    branches/trac397focused/src/lib/datasrc/rbtree.h
    branches/trac397focused/src/lib/datasrc/tests/rbtree_unittest.cc

Modified: branches/trac397focused/src/lib/datasrc/Makefile.am
==============================================================================
--- branches/trac397focused/src/lib/datasrc/Makefile.am (original)
+++ branches/trac397focused/src/lib/datasrc/Makefile.am Mon Dec 13 10:36:57 2010
@@ -14,4 +14,4 @@
 libdatasrc_la_SOURCES += sqlite3_datasrc.h sqlite3_datasrc.cc
 libdatasrc_la_SOURCES += query.h query.cc
 libdatasrc_la_SOURCES += cache.h cache.cc
-libdatasrc_la_SOURCES += rbtree.h
+libdatasrc_la_SOURCES += rbtree.h rbtree.cc

Modified: branches/trac397focused/src/lib/datasrc/rbtree.h
==============================================================================
--- branches/trac397focused/src/lib/datasrc/rbtree.h (original)
+++ branches/trac397focused/src/lib/datasrc/rbtree.h Mon Dec 13 10:36:57 2010
@@ -119,7 +119,7 @@
     /// \c RBNode, and RBNode will in charge of the memory management
     /// \note when set new data, old data will be deleted first
     void setData(T* data);
-    
+
     /// \breif set the data stored in the node
     void setData(const NodeDataType& data);
     //@}
@@ -383,7 +383,7 @@
     if (root == NULLNODE) {
         return;
     }
-    
+
     RBNode<T> *node = root;
     while (root->left_ != NULLNODE || root->right_ != NULLNODE) {
         while (node->left_ != NULLNODE || node->right_ != NULLNODE) {
@@ -698,7 +698,7 @@
 }
 
 template <typename T>
-void 
+void
 RBTree<T>::indent(std::ostream& os, unsigned int depth) {
     static const unsigned int INDENT_FOR_EACH_DEPTH = 5;
     os << std::string(depth * INDENT_FOR_EACH_DEPTH, ' ');

Modified: branches/trac397focused/src/lib/datasrc/tests/rbtree_unittest.cc
==============================================================================
--- branches/trac397focused/src/lib/datasrc/tests/rbtree_unittest.cc (original)
+++ branches/trac397focused/src/lib/datasrc/tests/rbtree_unittest.cc Mon Dec 13 10:36:57 2010
@@ -51,11 +51,11 @@
 class RBTreeTest : public::testing::Test {
 protected:
     RBTreeTest() : rbtree() {
-        rbtree.insert(Name("a"), &rbtnode);
+        rbtree.insert(Name("c"), &rbtnode);
         rbtnode->setData(new int(1));
         rbtree.insert(Name("b"), &rbtnode);
         rbtnode->setData(new int(2));
-        rbtree.insert(Name("c"), &rbtnode);
+        rbtree.insert(Name("a"), &rbtnode);
         rbtnode->setData(new int(3));
         rbtree.insert(Name("x.d.e.f"), &rbtnode);
         rbtnode->setData(new int(4));
@@ -131,6 +131,21 @@
     EXPECT_EQ(RBTree<int>::SUCCEED, rbtree.insert(Name("r.d.e.f"), &rbtnode));
     EXPECT_EQ(RBTree<int>::SUCCEED, rbtree.insert(Name("s.d.e.f"), &rbtnode));
     EXPECT_EQ(23, rbtree.getNodeCount());
+
+    EXPECT_EQ(RBTree<int>::SUCCEED, rbtree.insert(Name("h.w.y.d.e.f"), &rbtnode));
+
+    // add more nodes one by one to cover leftRotate and rightRotate
+    EXPECT_EQ(RBTree<int>::ALREADYEXIST, rbtree.insert(Name("f"), &rbtnode));
+    EXPECT_EQ(RBTree<int>::SUCCEED, rbtree.insert(Name("m"), &rbtnode));
+    EXPECT_EQ(RBTree<int>::SUCCEED, rbtree.insert(Name("nm"), &rbtnode));
+    EXPECT_EQ(RBTree<int>::SUCCEED, rbtree.insert(Name("om"), &rbtnode));
+    EXPECT_EQ(RBTree<int>::SUCCEED, rbtree.insert(Name("k"), &rbtnode));
+    EXPECT_EQ(RBTree<int>::SUCCEED, rbtree.insert(Name("l"), &rbtnode));
+    EXPECT_EQ(RBTree<int>::SUCCEED, rbtree.insert(Name("fe"), &rbtnode));
+    EXPECT_EQ(RBTree<int>::SUCCEED, rbtree.insert(Name("ge"), &rbtnode));
+    EXPECT_EQ(RBTree<int>::SUCCEED, rbtree.insert(Name("i"), &rbtnode));
+    EXPECT_EQ(RBTree<int>::SUCCEED, rbtree.insert(Name("ae"), &rbtnode));
+    EXPECT_EQ(RBTree<int>::SUCCEED, rbtree.insert(Name("n"), &rbtnode));
 }
 
 TEST_F(RBTreeTest, findName) {
@@ -141,6 +156,7 @@
 
     // not found
     EXPECT_EQ(RBTree<int>::NOTFOUND, rbtree.find(Name("d.e.f"), &crbtnode));
+    EXPECT_EQ(RBTree<int>::NOTFOUND, rbtree.find(Name("y.d.e.f"), &crbtnode));
     EXPECT_EQ(RBTree<int>::NOTFOUND, rbtree.find(Name("x"), &crbtnode));
     EXPECT_EQ(RBTree<int>::NOTFOUND, rbtree.find(Name("m.n"), &crbtnode));
 




More information about the bind10-changes mailing list