[svn] commit: r3464 - /branches/trac397/src/bin/auth/tests/rbt_datasrc_unittest.cc

BIND 10 source code commits bind10-changes at lists.isc.org
Fri Nov 5 11:35:03 UTC 2010


Author: chenzhengzhang
Date: Fri Nov  5 11:35:02 2010
New Revision: 3464

Log:
update rbt unittest

Modified:
    branches/trac397/src/bin/auth/tests/rbt_datasrc_unittest.cc

Modified: branches/trac397/src/bin/auth/tests/rbt_datasrc_unittest.cc
==============================================================================
--- branches/trac397/src/bin/auth/tests/rbt_datasrc_unittest.cc (original)
+++ branches/trac397/src/bin/auth/tests/rbt_datasrc_unittest.cc Fri Nov  5 11:35:02 2010
@@ -75,8 +75,6 @@
 TEST_F(RBTreeTest, insertNames) {
     // a node is considered to "formally" exist only if it has data
     // associated with it
-
-    // EXPECT_EQ(0, rbtree.insert(Name("r"), &rbtnode));
     // return 0, since node "d.e.f" doesn't have data
     EXPECT_EQ(0, rbtree.insert(Name("d.e.f"), &rbtnode));
     EXPECT_EQ(Name("d.e.f"), rbtnode->getName());
@@ -117,6 +115,10 @@
     EXPECT_EQ(0, rbtree.insert(Name("l.a"), &rbtnode));
     EXPECT_EQ(Name("l"), rbtnode->getName());
     EXPECT_EQ(21, rbtree.getNodeCount());
+
+    EXPECT_EQ(0, rbtree.insert(Name("r.d.e.f"), &rbtnode));
+    EXPECT_EQ(0, rbtree.insert(Name("s.d.e.f"), &rbtnode));
+    EXPECT_EQ(23, rbtree.getNodeCount());
 }
 
 TEST_F(RBTreeTest, findName) {
@@ -169,7 +171,10 @@
 }
 
 TEST_F(RBTreeTest, eraseName) {
-    EXPECT_EQ(13, rbtree.getNodeCount());
+    EXPECT_EQ(0, rbtree.insert(Name("r.d.e.f"), &rbtnode));
+    EXPECT_EQ(0, rbtree.insert(Name("s.d.e.f"), &rbtnode));
+    EXPECT_EQ(15, rbtree.getNodeCount());
+
     // can't delete non terminal
     int ret = rbtree.erase(Name("d.e.f"));
     EXPECT_EQ(1, ret);
@@ -179,12 +184,12 @@
     rbtnode->addRRset(rrset);
     ret = rbtree.erase(Name("p.w.y.d.e.f"));
     EXPECT_EQ(0, ret);
-    EXPECT_EQ(12, rbtree.getNodeCount());
+    EXPECT_EQ(14, rbtree.getNodeCount());
     EXPECT_EQ(RBTree::NOTFOUND, rbtree.find(Name("p.w.y.d.e.f"), &rbtnode));
 
     ret = rbtree.erase(Name("q.w.y.d.e.f"));
     EXPECT_EQ(0, ret);
-    EXPECT_EQ(11, rbtree.getNodeCount());
+    EXPECT_EQ(13, rbtree.getNodeCount());
     EXPECT_EQ(RBTree::NOTFOUND, rbtree.find(Name("q.w.y.d.e.f"), &rbtnode));
 
     // o would not be rejoined with w.y if w.y had data
@@ -199,58 +204,75 @@
      *              c  |  g.h
      *                 |   |
      *                w.y  i
-     *               / | \
-     *              x  |  z
-     *                 |  |
-     *                 o  j
+     *              /  |  \
+     *             s   |   z
+     *           /  \  |   |
+     *          r    x o   j
      */
     // z would be rejoined with d.e.f, since d.e.f has no data associated with the key
     ret = rbtree.erase(Name("o.w.y.d.e.f"));
 
     EXPECT_EQ(0, ret);
+    EXPECT_EQ(12, rbtree.getNodeCount());
+    ret = rbtree.erase(Name("w.y.d.e.f"));
+    EXPECT_EQ(0, ret);
+    EXPECT_EQ(11, rbtree.getNodeCount());
+    ret = rbtree.erase(Name("x.d.e.f"));
+    EXPECT_EQ(0, ret);
     EXPECT_EQ(10, rbtree.getNodeCount());
-    ret = rbtree.erase(Name("w.y.d.e.f"));
-    EXPECT_EQ(0, ret);
-    EXPECT_EQ(9, rbtree.getNodeCount());
-    ret = rbtree.erase(Name("x.d.e.f"));
-    EXPECT_EQ(0, ret);
-    EXPECT_EQ(7, rbtree.getNodeCount());
     /*
      *             b
      *           /   \
-     *          a   z.d.e.f
-     *               / | \
-     *              c  j  g.h
-     *                     |
-     *                     i
+     *          a    d.e.f
+     *              /  |  \
+     *             c   s  g.h
+     *                / \  |
+     *               r   z i
+     *                   |
+     *                   j
      */
     // erase a non-exist node
     ret = rbtree.erase(Name("x.d.e.f"));
     EXPECT_EQ(1, ret);
 
     // delete all the nodes one by one
-    ret = rbtree.erase(Name("a"));
-    EXPECT_EQ(0, ret);
-    EXPECT_EQ(6, rbtree.getNodeCount());
+    ret = rbtree.erase(Name("c"));
+    EXPECT_EQ(0, ret);
+    EXPECT_EQ(9, rbtree.getNodeCount());
     ret = rbtree.erase(Name("g.h"));
     EXPECT_EQ(1, ret);
+    EXPECT_EQ(9, rbtree.getNodeCount());
+    ret = rbtree.erase(Name("a"));
+    EXPECT_EQ(0, ret);
+    EXPECT_EQ(8, rbtree.getNodeCount());
+    ret = rbtree.erase(Name("b"));
+    EXPECT_EQ(0, ret);
+    EXPECT_EQ(7, rbtree.getNodeCount());
+    ret = rbtree.erase(Name("i.g.h"));
+    EXPECT_EQ(0, ret);
     EXPECT_EQ(6, rbtree.getNodeCount());
-    ret = rbtree.erase(Name("c"));
+    /*
+     *               d.e.f
+     *                 |  \
+     *                 s  g.h
+     *                / \
+     *               r   z
+     *                   |
+     *                   j
+     */
+    ret = rbtree.erase(Name("r.d.e.f"));
     EXPECT_EQ(0, ret);
     EXPECT_EQ(5, rbtree.getNodeCount());
-    ret = rbtree.erase(Name("b"));
+    ret = rbtree.erase(Name("j.z.d.e.f"));
     EXPECT_EQ(0, ret);
     EXPECT_EQ(4, rbtree.getNodeCount());
-    ret = rbtree.erase(Name("i.g.h"));
-    EXPECT_EQ(0, ret);
-    EXPECT_EQ(3, rbtree.getNodeCount());
-    ret = rbtree.erase(Name("j.z.d.e.f"));
+    ret = rbtree.erase(Name("z.d.e.f"));
     EXPECT_EQ(0, ret);
     EXPECT_EQ(2, rbtree.getNodeCount());
+    ret = rbtree.erase(Name("s.d.e.f"));
+    EXPECT_EQ(0, ret);
+    EXPECT_EQ(1, rbtree.getNodeCount());
     ret = rbtree.erase(Name("g.h"));
-    EXPECT_EQ(0, ret);
-    EXPECT_EQ(1, rbtree.getNodeCount());
-    ret = rbtree.erase(Name("z.d.e.f"));
     EXPECT_EQ(0, ret);
     EXPECT_EQ(0, rbtree.getNodeCount());
 }




More information about the bind10-changes mailing list