From: Mukund Sivaraman Date: Mon, 14 May 2012 07:45:20 +0000 (+0530) Subject: [1971] Update test rbtree (of rbtrees) to suit our right-child testcase X-Git-Tag: trac2351_base~226^2~110 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=39b658ef4f5b272f727eb501d68caa30d9a5ebc3;p=thirdparty%2Fkea.git [1971] Update test rbtree (of rbtrees) to suit our right-child testcase --- diff --git a/src/lib/datasrc/tests/rbtree_unittest.cc b/src/lib/datasrc/tests/rbtree_unittest.cc index 793605a7ee..0df00776aa 100644 --- a/src/lib/datasrc/tests/rbtree_unittest.cc +++ b/src/lib/datasrc/tests/rbtree_unittest.cc @@ -45,8 +45,8 @@ const size_t Name::MAX_LABELS; * c | g.h * | | * w.y i - * / | \ - * x | z + * / | \ \ + * x | z k * | | * p j * / \ @@ -59,7 +59,7 @@ protected: RBTreeTest() : rbtree_expose_empty_node(true), crbtnode(NULL) { const char* const domain_names[] = { "c", "b", "a", "x.d.e.f", "z.d.e.f", "g.h", "i.g.h", "o.w.y.d.e.f", - "j.z.d.e.f", "p.w.y.d.e.f", "q.w.y.d.e.f"}; + "j.z.d.e.f", "p.w.y.d.e.f", "q.w.y.d.e.f", "k.i.g.h"}; int name_count = sizeof(domain_names) / sizeof(domain_names[0]); for (int i = 0; i < name_count; ++i) { rbtree.insert(Name(domain_names[i]), &rbtnode); @@ -79,7 +79,7 @@ protected: TEST_F(RBTreeTest, getNodeCount) { - EXPECT_EQ(13, rbtree.getNodeCount()); + EXPECT_EQ(14, rbtree.getNodeCount()); } TEST_F(RBTreeTest, setGetData) { @@ -91,46 +91,46 @@ TEST_F(RBTreeTest, insertNames) { EXPECT_EQ(RBTree::ALREADYEXISTS, rbtree.insert(Name("d.e.f"), &rbtnode)); EXPECT_EQ(Name("d.e.f"), rbtnode->getName()); - EXPECT_EQ(13, rbtree.getNodeCount()); + EXPECT_EQ(14, rbtree.getNodeCount()); //insert not exist node EXPECT_EQ(RBTree::SUCCESS, rbtree.insert(Name("."), &rbtnode)); EXPECT_EQ(Name("."), rbtnode->getName()); - EXPECT_EQ(14, rbtree.getNodeCount()); + EXPECT_EQ(15, rbtree.getNodeCount()); EXPECT_EQ(RBTree::SUCCESS, rbtree.insert(Name("example.com"), &rbtnode)); - EXPECT_EQ(15, rbtree.getNodeCount()); + EXPECT_EQ(16, rbtree.getNodeCount()); rbtnode->setData(RBNode::NodeDataPtr(new int(12))); // return ALREADYEXISTS, since node "example.com" already has been explicitly inserted EXPECT_EQ(RBTree::ALREADYEXISTS, rbtree.insert(Name("example.com"), &rbtnode)); - EXPECT_EQ(15, rbtree.getNodeCount()); + EXPECT_EQ(16, rbtree.getNodeCount()); // split the node "d.e.f" EXPECT_EQ(RBTree::SUCCESS, rbtree.insert(Name("k.e.f"), &rbtnode)); EXPECT_EQ(Name("k"), rbtnode->getName()); - EXPECT_EQ(17, rbtree.getNodeCount()); + EXPECT_EQ(18, rbtree.getNodeCount()); // split the node "g.h" EXPECT_EQ(RBTree::ALREADYEXISTS, rbtree.insert(Name("h"), &rbtnode)); EXPECT_EQ(Name("h"), rbtnode->getName()); - EXPECT_EQ(18, rbtree.getNodeCount()); + EXPECT_EQ(19, rbtree.getNodeCount()); // add child domain EXPECT_EQ(RBTree::SUCCESS, rbtree.insert(Name("m.p.w.y.d.e.f"), &rbtnode)); EXPECT_EQ(Name("m"), rbtnode->getName()); - EXPECT_EQ(19, rbtree.getNodeCount()); + EXPECT_EQ(20, rbtree.getNodeCount()); EXPECT_EQ(RBTree::SUCCESS, rbtree.insert(Name("n.p.w.y.d.e.f"), &rbtnode)); EXPECT_EQ(Name("n"), rbtnode->getName()); - EXPECT_EQ(20, rbtree.getNodeCount()); + EXPECT_EQ(21, rbtree.getNodeCount()); EXPECT_EQ(RBTree::SUCCESS, rbtree.insert(Name("l.a"), &rbtnode)); EXPECT_EQ(Name("l"), rbtnode->getName()); - EXPECT_EQ(21, rbtree.getNodeCount()); + EXPECT_EQ(22, rbtree.getNodeCount()); EXPECT_EQ(RBTree::SUCCESS, rbtree.insert(Name("r.d.e.f"), &rbtnode)); EXPECT_EQ(RBTree::SUCCESS, rbtree.insert(Name("s.d.e.f"), &rbtnode)); - EXPECT_EQ(23, rbtree.getNodeCount()); + EXPECT_EQ(24, rbtree.getNodeCount()); EXPECT_EQ(RBTree::SUCCESS, rbtree.insert(Name("h.w.y.d.e.f"), &rbtnode)); @@ -323,7 +323,7 @@ TEST_F(RBTreeTest, getAbsoluteNameError) { /* *the domain order should be: * a, b, c, d.e.f, x.d.e.f, w.y.d.e.f, o.w.y.d.e.f, p.w.y.d.e.f, q.w.y.d.e.f, - * z.d.e.f, j.z.d.e.f, g.h, i.g.h + * z.d.e.f, j.z.d.e.f, g.h, i.g.h, k.i.g.h * b * / \ * a d.e.f @@ -331,8 +331,8 @@ TEST_F(RBTreeTest, getAbsoluteNameError) { * c | g.h * | | * w.y i - * / | \ - * x | z + * / | \ \ + * x | z k * | | * p j * / \ @@ -340,7 +340,8 @@ TEST_F(RBTreeTest, getAbsoluteNameError) { */ const char* const names[] = { "a", "b", "c", "d.e.f", "x.d.e.f", "w.y.d.e.f", "o.w.y.d.e.f", - "p.w.y.d.e.f", "q.w.y.d.e.f", "z.d.e.f", "j.z.d.e.f", "g.h", "i.g.h"}; + "p.w.y.d.e.f", "q.w.y.d.e.f", "z.d.e.f", "j.z.d.e.f", + "g.h", "i.g.h", "k.i.g.h"}; const size_t name_count(sizeof(names) / sizeof(*names)); TEST_F(RBTreeTest, nextNode) { @@ -605,11 +606,11 @@ TEST_F(RBTreeTest, getLastComparedNode) { // Partial match, search stopped at the matching node, which should be // the last compared node. EXPECT_EQ(RBTree::EXACTMATCH, - tree.find(Name("i.g.h"), &expected_node)); + tree.find(Name("k.i.g.h"), &expected_node)); EXPECT_EQ(RBTree::PARTIALMATCH, - tree.find(Name("x.i.g.h"), &crbtnode, chain)); + tree.find(Name("x.k.i.g.h"), &crbtnode, chain)); EXPECT_EQ(expected_node, chain.getLastComparedNode()); - // i.g.h < x.i.g.h, 2 = # labels of "i." + // k.i.g.h < x.k.i.g.h, 2 = # labels of "k." comparisonChecks(chain, 1, 2, NameComparisonResult::SUBDOMAIN); chain.clear(); @@ -679,7 +680,7 @@ TEST_F(RBTreeTest, dumpTree) { std::ostringstream str; std::ostringstream str2; rbtree.dumpTree(str); - str2 << "tree has 13 node(s)\nb. (black)\n a. (black)\n NULL\n NULL\n d.e.f. (black)[invisible] \n begin down from d.e.f.\n w.y. (black)[invisible] \n begin down from w.y.\n p. (black)\n o. (red)\n NULL\n NULL\n q. (red)\n NULL\n NULL\n end down from w.y.\n x. (red)\n NULL\n NULL\n z. (red)\n begin down from z.\n j. (black)\n NULL\n NULL\n end down from z.\n NULL\n NULL\n end down from d.e.f.\n c. (red)\n NULL\n NULL\n g.h. (red)\n begin down from g.h.\n i. (black)\n NULL\n NULL\n end down from g.h.\n NULL\n NULL\n"; + str2 << "tree has 14 node(s)\nb. (black)\n a. (black)\n NULL\n NULL\n d.e.f. (black)[invisible] \n begin down from d.e.f.\n w.y. (black)[invisible] \n begin down from w.y.\n p. (black)\n o. (red)\n NULL\n NULL\n q. (red)\n NULL\n NULL\n end down from w.y.\n x. (red)\n NULL\n NULL\n z. (red)\n begin down from z.\n j. (black)\n NULL\n NULL\n end down from z.\n NULL\n NULL\n end down from d.e.f.\n c. (red)\n NULL\n NULL\n g.h. (red)\n begin down from g.h.\n i. (black)\n begin down from i.\n k. (black)\n NULL\n NULL\n end down from i.\n NULL\n NULL\n end down from g.h.\n NULL\n NULL\n"; EXPECT_EQ(str.str(), str2.str()); }