[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