Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r50469 - sandbox/SOC/2006/tree/trunk/libs/tree/test
From: ockham_at_[hidden]
Date: 2009-01-04 16:27:36


Author: bernhard.reiter
Date: 2009-01-04 16:27:36 EST (Sun, 04 Jan 2009)
New Revision: 50469
URL: http://svn.boost.org/trac/boost/changeset/50469

Log:
Test insert_cursor with hard-wired *order algorithms (don't rely on the actual proper function of copy algorithms).
Text files modified:
   sandbox/SOC/2006/tree/trunk/libs/tree/test/fake_binary_tree.hpp | 22 ------
   sandbox/SOC/2006/tree/trunk/libs/tree/test/insert_cursor_test.cpp | 127 ++++++++++++++++++++++++++++++++-------
   sandbox/SOC/2006/tree/trunk/libs/tree/test/test_tree_traversal_data.hpp | 2
   3 files changed, 104 insertions(+), 47 deletions(-)

Modified: sandbox/SOC/2006/tree/trunk/libs/tree/test/fake_binary_tree.hpp
==============================================================================
--- sandbox/SOC/2006/tree/trunk/libs/tree/test/fake_binary_tree.hpp (original)
+++ sandbox/SOC/2006/tree/trunk/libs/tree/test/fake_binary_tree.hpp 2009-01-04 16:27:36 EST (Sun, 04 Jan 2009)
@@ -208,28 +208,6 @@
     }
 };
 
-//template <class T>
-//struct fake_ascending_binary_cursor
-//: public fake_descending_binary_cursor<T> {
-// fake_ascending_binary_cursor(fake_binary_tree<T>& t
-// , typename fake_binary_tree<T>::size_type p)
-// : fake_descending_binary_cursor<T>(t, p) {}
-//
-// fake_ascending_binary_cursor& to_parent()
-// {
-// --fake_descending_binary_cursor<T>::m_pos;
-// fake_descending_binary_cursor<T>::m_pos >>= 1;
-// return *this;
-// }
-//
-// fake_ascending_binary_cursor parent()
-// {
-// fake_ascending_binary_cursor tmp(*this);
-// tmp.to_parent();
-// return tmp;
-// }
-//};
-
 fake_binary_tree<int> generate_fake_binary_tree()
 {
     fake_binary_tree<int> mt(57);

Modified: sandbox/SOC/2006/tree/trunk/libs/tree/test/insert_cursor_test.cpp
==============================================================================
--- sandbox/SOC/2006/tree/trunk/libs/tree/test/insert_cursor_test.cpp (original)
+++ sandbox/SOC/2006/tree/trunk/libs/tree/test/insert_cursor_test.cpp 2009-01-04 16:27:36 EST (Sun, 04 Jan 2009)
@@ -19,14 +19,13 @@
 
 #include "fake_binary_tree.hpp"
 
+// TODO: Actually use fake binary tree.
+
 using namespace boost::tree;
 
 BOOST_FIXTURE_TEST_SUITE(insert_cursor_test, test_binary_tree_fixture<int>)
 
-// Maybe suffix this by "_preorder", and add
-// emulated inorder and postorder versions, so
-// we can check whether insert_cursor works in all cases
-// without relying on algorithms.
+
 template <class Cursor>
 void fill_subtree_with_data(Cursor cur)
 {
@@ -47,39 +46,119 @@
 void fill_subtree_with_data_in_preorder(Cursor cur)
 {
     *cur.to_begin() = 8;
+ Cursor c2(cur);
     *cur.to_begin() = 3;
- *cur.to_begin() = 1; //Leaf
- *cur.begin().end().begin() = 6;
- *cur.begin().end().begin().begin() = 4; //Leaf
- *cur.begin().end().end().begin() = 7; //Leaf
- *cur.end().begin() = 10;
- *cur.end().end().begin() = 14;
- *cur.end().end().begin().begin() = 13;
- *cur.end().end().begin().begin().begin() = 11;
- *cur.end().end().begin().begin().end().begin() = 12; //Leaf
+ Cursor c3(cur);
+ *cur.to_begin() = 1;
+ *(++c3).to_begin() = 6;
+ Cursor c4(c3);
+ *c3.to_begin() = 4;
+ *(++c4).to_begin() = 7;
+
+ *(++c2).to_begin() = 10;
+ *(++c2).to_begin() = 14;
+ *c2.to_begin() = 13;
+ *c2.to_begin() = 11;
+ *(++c2).to_begin() = 12;
+}
+
+template <class Cursor>
+void fill_subtree_with_data_in_inorder(Cursor cur)
+{
+ cur.to_begin();
+ Cursor c2(cur);
+ cur.to_begin();
+ Cursor c3(cur);
+ *cur.to_begin() = 1;
+ *c3 = 3;
+ Cursor c4(c3);
+ *(++c3).to_begin();
+ Cursor c5(c3);
+ *c3.to_begin() = 4;
+ *c5 = 6;
+ *(++c5).to_begin() = 7;
+ *c2 = 8;
+
+ *(++c2).to_begin() = 10;
+ (++c2).to_begin();
+ Cursor c14(c2);
+ c2.to_begin();
+ Cursor c13(c2);
+ *c2.to_begin() = 11;
+ *(++c2).to_begin() = 12;
+ *c13 = 13;
+ *c14 = 14;
 }
 
-BOOST_AUTO_TEST_CASE_TEMPLATE ( test_desc_copy_using_insert_cursor, Order, orders )
+template <class Cursor>
+void fill_subtree_with_data_in_postorder(Cursor cur)
+{
+ cur.to_begin();
+ Cursor c2(cur);
+ cur.to_begin();
+ Cursor c3(cur);
+ *cur.to_begin() = 1;
+ Cursor c4(c3);
+ *(++c4).to_begin();
+ Cursor c6(c4);
+ Cursor c7(c4);
+ *c4.to_begin() = 4;
+ *(++c7).to_begin() = 7;
+ *c6 = 6;
+ *c3 = 3;
+
+ Cursor c8(c2);
+ (++c2).to_begin();
+ Cursor c10(c2);
+ (++c2).to_begin();
+ Cursor c14(c2);
+ c2.to_begin();
+ Cursor c13(c2);
+ c2.to_begin();
+ Cursor c11(c2);
+ *(++c2).to_begin() = 12;
+ *c11 = 11;
+ *c13 = 13;
+ *c14 = 14;
+ *c10 = 10;
+ *c8 = 8;
+}
+
+BOOST_AUTO_TEST_CASE ( test_desc_copy_using_insert_cursor_preorder )
 {
     bt2.clear();
+ fill_subtree_with_data_in_preorder(tree_inserter(bt2, bt2.root()));
 
- boost::tree::copy(Order(), bt.root(), tree_inserter(bt2, bt2.root())
- , boost::tree::descending_vertical_traversal_tag());
-// fill_subtree_with_data(tree_inserter(bt2, bt2.root())); //FIXME
+ validate_test_dataset1_tree(bt2.root());
+}
+
+BOOST_AUTO_TEST_CASE ( test_desc_copy_using_insert_cursor_inorder )
+{
+ bt2.clear();
+ fill_subtree_with_data_in_inorder(tree_inserter(bt2, bt2.root()));
 
     validate_test_dataset1_tree(bt2.root());
- BOOST_CHECK_EQUAL(size(bt2.root()), size(bt.root()));
 }
 
-BOOST_AUTO_TEST_CASE_TEMPLATE ( test_asc_copy_using_insert_cursor, Order, orders )
-{
+BOOST_AUTO_TEST_CASE ( test_desc_copy_using_insert_cursor_postorder )
+{
     bt2.clear();
-
- boost::tree::copy(Order(), bt.root(), tree_inserter(bt2, bt2.root())
- , boost::tree::ascending_vertical_traversal_tag());
+ fill_subtree_with_data_in_postorder(tree_inserter(bt2, bt2.root()));
 
     validate_test_dataset1_tree(bt2.root());
- BOOST_CHECK_EQUAL(size(bt2.root()), size(bt.root()));
 }
 
+// FIXME: Should also work with fill_subtree_with_data
+
+//BOOST_AUTO_TEST_CASE_TEMPLATE ( test_asc_copy_using_insert_cursor, Order, orders )
+//{
+// bt2.clear();
+//
+// boost::tree::copy(Order(), bt.root(), tree_inserter(bt2, bt2.root())
+// , boost::tree::ascending_vertical_traversal_tag());
+//
+// validate_test_dataset1_tree(bt2.root());
+// BOOST_CHECK_EQUAL(size(bt2.root()), size(bt.root()));
+//}
+
 BOOST_AUTO_TEST_SUITE_END()
\ No newline at end of file

Modified: sandbox/SOC/2006/tree/trunk/libs/tree/test/test_tree_traversal_data.hpp
==============================================================================
--- sandbox/SOC/2006/tree/trunk/libs/tree/test/test_tree_traversal_data.hpp (original)
+++ sandbox/SOC/2006/tree/trunk/libs/tree/test/test_tree_traversal_data.hpp 2009-01-04 16:27:36 EST (Sun, 04 Jan 2009)
@@ -251,7 +251,7 @@
 template <class Iterator>
 void test_traversal(boost::tree::postorder, Iterator a, Iterator b)
 {
- BOOST_CHECK_EQUAL(*a++, 1);
+ BOOST_CHECK_EQUAL(*a++, 1);
     BOOST_CHECK_EQUAL(*a++, 4);
     BOOST_CHECK_EQUAL(*a++, 7);
     BOOST_CHECK_EQUAL(*a++, 6);


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk