Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r49066 - in sandbox/SOC/2006/tree/trunk: . boost/tree libs/tree/test
From: ockham_at_[hidden]
Date: 2008-09-30 10:58:15


Author: bernhard.reiter
Date: 2008-09-30 10:58:14 EDT (Tue, 30 Sep 2008)
New Revision: 49066
URL: http://svn.boost.org/trac/boost/changeset/49066

Log:
Start migrating to a unit-based test approach.
Text files modified:
   sandbox/SOC/2006/tree/trunk/TODO | 7 -
   sandbox/SOC/2006/tree/trunk/boost/tree/binary_tree.hpp | 8 +-
   sandbox/SOC/2006/tree/trunk/libs/tree/test/Jamfile.v2 | 4 +
   sandbox/SOC/2006/tree/trunk/libs/tree/test/binary_tree_test.cpp | 19 ++++
   sandbox/SOC/2006/tree/trunk/libs/tree/test/cursor_algorithm_test.cpp | 17 ++--
   sandbox/SOC/2006/tree/trunk/libs/tree/test/iterator_algorithm_test.cpp | 149 +++++++++++++++------------------------
   sandbox/SOC/2006/tree/trunk/libs/tree/test/subtree_algorithms_checks.hpp | 2
   sandbox/SOC/2006/tree/trunk/libs/tree/test/test_tree_traversal_data.hpp | 2
   8 files changed, 93 insertions(+), 115 deletions(-)

Modified: sandbox/SOC/2006/tree/trunk/TODO
==============================================================================
--- sandbox/SOC/2006/tree/trunk/TODO (original)
+++ sandbox/SOC/2006/tree/trunk/TODO 2008-09-30 10:58:14 EDT (Tue, 30 Sep 2008)
@@ -14,7 +14,7 @@
 [section TODO]
 
 General:
-
+* Move some of the secondary stuff to a util/ dir? Is that what they're used for?
 * Redo testing. Right now, it's just chaotic.
 * Fix recursive algorithms for use with forest.
 * Implement a real output cursor (if possible) and use preorder::copy to build a new tree.
@@ -35,10 +35,7 @@
 * Look into SOC 2008 projects dsearch (already using concepts from Boost.Tree) and
   spacial_indexing (with tree classes of its own)
 * Can't we really do without inorder_erase()?
-* Remove the word "recursive" from *order subtree algorithms context, as we might
- implement these using iterative versions. Rename *_recursive algorithms to
- *_with_references or so; and use something like #ifdef BOOST_RECURSIVE_ORDER_ALGORITHMS.
- Overload then for root_tracking_cursor.
+* Possibly rename *_recursive algorithms to *_with_references or so, and implement iterative versions.
 * Check if Cursor(balanced_tree_iterator) really has no is_root member()!
 * Revisit binary_tree (inorder::)iterator functions
 * Possibly sort out some more concepts, like trees with "downwards" or "upwards" insertion

Modified: sandbox/SOC/2006/tree/trunk/boost/tree/binary_tree.hpp
==============================================================================
--- sandbox/SOC/2006/tree/trunk/boost/tree/binary_tree.hpp (original)
+++ sandbox/SOC/2006/tree/trunk/boost/tree/binary_tree.hpp 2008-09-30 10:58:14 EDT (Tue, 30 Sep 2008)
@@ -72,10 +72,10 @@
         m_header[1] = &m_header;
     }
 
- explicit binary_tree (size_type n, value_type const& value = value_type(),
- allocator_type const& alloc = allocator_type())
- : m_header(), m_value_alloc(alloc)
- {}
+// explicit binary_tree (size_type n, value_type const& value = value_type(),
+// allocator_type const& alloc = allocator_type())
+// : m_header(), m_value_alloc(alloc)
+// {}
 
     template <class InputCursor>
         binary_tree (InputCursor subtree,

Modified: sandbox/SOC/2006/tree/trunk/libs/tree/test/Jamfile.v2
==============================================================================
--- sandbox/SOC/2006/tree/trunk/libs/tree/test/Jamfile.v2 (original)
+++ sandbox/SOC/2006/tree/trunk/libs/tree/test/Jamfile.v2 2008-09-30 10:58:14 EDT (Tue, 30 Sep 2008)
@@ -15,6 +15,10 @@
         : requirements
                 <include>$(BOOST_ROOT)
                 <include>../../../
+# <define>BOOST_TEST_DYN_LINK
+# <define>BOOST_TEST_MAIN
+# <link>shared
+# <runtime-link>shared
         ;
         
 test-suite tree :

Modified: sandbox/SOC/2006/tree/trunk/libs/tree/test/binary_tree_test.cpp
==============================================================================
--- sandbox/SOC/2006/tree/trunk/libs/tree/test/binary_tree_test.cpp (original)
+++ sandbox/SOC/2006/tree/trunk/libs/tree/test/binary_tree_test.cpp 2008-09-30 10:58:14 EDT (Tue, 30 Sep 2008)
@@ -8,7 +8,9 @@
 
 #include <boost/tree/algorithm.hpp>
 
-#include <boost/test/minimal.hpp>
+#define BOOST_TEST_MODULE binary_tree test
+//#define BOOST_TEST_DYN_LINK
+#include <boost/test/included/unit_test.hpp>
 
 #include "helpers.hpp"
 #include "test_tree_traversal_data.hpp"
@@ -143,7 +145,18 @@
     swap(one, two);
 }
 
-int test_main(int, char* [])
+BOOST_AUTO_TEST_CASE( constructors_test )
+{
+ typedef binary_tree<int> tree_t;
+ tree_t bt;
+ BOOST_CHECK(bt.root().empty());
+ //BOOST_CHECK_EQUAL(0, 1);
+
+ // test with allocator
+}
+
+//int test_main(int, char* [])
+BOOST_AUTO_TEST_CASE( old_test )
 {
     typedef binary_tree<int> tree_t;
     tree_t tree1, tree2;
@@ -211,5 +224,5 @@
 
     inorder_erase_test_data_tree(tree2);
     
- return 0;
+ //return 0;
 }

Modified: sandbox/SOC/2006/tree/trunk/libs/tree/test/cursor_algorithm_test.cpp
==============================================================================
--- sandbox/SOC/2006/tree/trunk/libs/tree/test/cursor_algorithm_test.cpp (original)
+++ sandbox/SOC/2006/tree/trunk/libs/tree/test/cursor_algorithm_test.cpp 2008-09-30 10:58:14 EDT (Tue, 30 Sep 2008)
@@ -10,12 +10,15 @@
 #include <boost/tree/iterator.hpp>
 #include <boost/tree/algorithm.hpp>
 
-#include <boost/test/minimal.hpp>
-
 #include <list>
 #include <algorithm>
 #include <iterator>
 
+#define BOOST_TEST_MODULE cursor_algorithm test
+#include <boost/test/included/unit_test.hpp>
+#include <boost/test/test_case_template.hpp>
+#include <boost/mpl/list.hpp>
+
 #include "helpers.hpp"
 #include "test_tree_traversal_data.hpp"
 
@@ -26,7 +29,9 @@
 
 #include "subtree_algorithms_checks.hpp"
 
-int test_main(int, char* [])
+typedef boost::mpl::list<preorder,inorder,postorder> orders;
+
+BOOST_AUTO_TEST_CASE_TEMPLATE( test_algorithms, Order, orders )
 {
     using boost::forward_traversal_tag;
     
@@ -45,9 +50,5 @@
     BOOST_CHECK(test_tree != test_tree2);
     d = test_tree2.root();
 
- test::algorithms(preorder(), test_tree.root(), test_tree2.root());
- test::algorithms(inorder(), test_tree.root(), test_tree2.root());
- test::algorithms(postorder(), test_tree.root(), test_tree2.root());
-
- return 0;
+ test::algorithms(Order(), test_tree.root(), test_tree2.root());
 }

Modified: sandbox/SOC/2006/tree/trunk/libs/tree/test/iterator_algorithm_test.cpp
==============================================================================
--- sandbox/SOC/2006/tree/trunk/libs/tree/test/iterator_algorithm_test.cpp (original)
+++ sandbox/SOC/2006/tree/trunk/libs/tree/test/iterator_algorithm_test.cpp 2008-09-30 10:58:14 EDT (Tue, 30 Sep 2008)
@@ -19,11 +19,14 @@
 #include <boost/tree/ascending_cursor.hpp>
 #include <boost/tree/root_tracking_cursor.hpp>
 
-#include <boost/test/minimal.hpp>
-
 #include <list>
 #include <iterator>
 
+#define BOOST_TEST_MODULE iterator_algorithm test
+#include <boost/test/included/unit_test.hpp>
+#include <boost/test/test_case_template.hpp>
+#include <boost/mpl/list.hpp>
+
 #include "helpers.hpp"
 #include "test_tree_traversal_data.hpp"
 
@@ -60,24 +63,18 @@
     return f;
 }
 
-template <class Cursor>
-void comparisons(Cursor c) {
- test::compare_cursor_to_iterator_traversal(preorder(), c);
- test::compare_cursor_to_iterator_traversal(inorder(), c);
- test::compare_cursor_to_iterator_traversal(postorder(), c);
- return;
-}
-
+template <class Order>
 void comparisons_using_ac(binary_tree<int>::cursor c) {
- comparisons(make_root_tracking_cursor(make_ascending_cursor(c)));
- return;
+ test::compare_cursor_to_iterator_traversal(Order(), make_root_tracking_cursor(make_ascending_cursor(c)));
 }
 
+template <class Order>
 void comparisons_using_rtc(binary_tree<int>::cursor c) {
- comparisons(make_root_tracking_cursor(c));
- return;
+ test::compare_cursor_to_iterator_traversal(Order(), make_root_tracking_cursor(c));
 }
 
+typedef boost::mpl::list<preorder,inorder,postorder> orders;
+
 /**
  * Check all iterator traversals by comparing them to a recursive cursor
  * algorithm output. Do that at different stages of the tree while adding
@@ -87,59 +84,61 @@
  * Afterwards, do all that using iterators wrapped around
  * "explicit stack"-based cursors also.
  */
-void compare_cursor_to_iterator_traversal() {
+//void compare_cursor_to_iterator_traversal() {
+BOOST_AUTO_TEST_CASE_TEMPLATE( compare_cursor_to_iterator_traversal, Order, orders )
+{
     binary_tree<int> test_tree2;
- //comparisons(test_tree2.root());
+ //test::compare_cursor_to_iterator_traversal(Order(), test_tree2.root());
 
     binary_tree<int>::cursor c = test_tree2.insert(test_tree2.root(), 8);
- comparisons(make_root_tracking_cursor(test_tree2.root()));
- comparisons(make_root_tracking_cursor(make_ascending_cursor(test_tree2.root())));
+ test::compare_cursor_to_iterator_traversal(Order(), make_root_tracking_cursor(test_tree2.root()));
+ test::compare_cursor_to_iterator_traversal(Order(), make_root_tracking_cursor(make_ascending_cursor(test_tree2.root())));
 
     c = test_tree2.insert(c, 3);
- comparisons(make_root_tracking_cursor(test_tree2.root()));
- comparisons(make_root_tracking_cursor(make_ascending_cursor(test_tree2.root())));
+ test::compare_cursor_to_iterator_traversal(Order(), make_root_tracking_cursor(test_tree2.root()));
+ test::compare_cursor_to_iterator_traversal(Order(), make_root_tracking_cursor(make_ascending_cursor(test_tree2.root())));
         
     test_tree2.insert(c, 1);
- comparisons(make_root_tracking_cursor(test_tree2.root()));
- comparisons(make_root_tracking_cursor(make_ascending_cursor(test_tree2.root())));
+ test::compare_cursor_to_iterator_traversal(Order(), make_root_tracking_cursor(test_tree2.root()));
+ test::compare_cursor_to_iterator_traversal(Order(), make_root_tracking_cursor(make_ascending_cursor(test_tree2.root())));
     
     c = test_tree2.insert(++c, 6);
- comparisons(make_root_tracking_cursor(test_tree2.root()));
- comparisons(make_root_tracking_cursor(make_ascending_cursor(test_tree2.root())));
+ test::compare_cursor_to_iterator_traversal(Order(), make_root_tracking_cursor(test_tree2.root()));
+ test::compare_cursor_to_iterator_traversal(Order(), make_root_tracking_cursor(make_ascending_cursor(test_tree2.root())));
     
     test_tree2.insert(c, 4);
- comparisons(make_root_tracking_cursor(test_tree2.root()));
- comparisons(make_root_tracking_cursor(make_ascending_cursor(test_tree2.root())));
+ test::compare_cursor_to_iterator_traversal(Order(), make_root_tracking_cursor(test_tree2.root()));
+ test::compare_cursor_to_iterator_traversal(Order(), make_root_tracking_cursor(make_ascending_cursor(test_tree2.root())));
     
     test_tree2.insert(++c, 7);
- comparisons(make_root_tracking_cursor(test_tree2.root()));
- comparisons(make_root_tracking_cursor(make_ascending_cursor(test_tree2.root())));
+ test::compare_cursor_to_iterator_traversal(Order(), make_root_tracking_cursor(test_tree2.root()));
+ test::compare_cursor_to_iterator_traversal(Order(), make_root_tracking_cursor(make_ascending_cursor(test_tree2.root())));
     
     c = test_tree2.insert(test_tree2.root().end(), 10);
- comparisons(make_root_tracking_cursor(test_tree2.root()));
- comparisons(make_root_tracking_cursor(make_ascending_cursor(test_tree2.root())));
+ test::compare_cursor_to_iterator_traversal(Order(), make_root_tracking_cursor(test_tree2.root()));
+ test::compare_cursor_to_iterator_traversal(Order(), make_root_tracking_cursor(make_ascending_cursor(test_tree2.root())));
     
     c = test_tree2.insert(test_tree2.root().end().end(), 14);
- comparisons(make_root_tracking_cursor(test_tree2.root()));
- comparisons(make_root_tracking_cursor(make_ascending_cursor(test_tree2.root())));
+ test::compare_cursor_to_iterator_traversal(Order(), make_root_tracking_cursor(test_tree2.root()));
+ test::compare_cursor_to_iterator_traversal(Order(), make_root_tracking_cursor(make_ascending_cursor(test_tree2.root())));
     
     c = test_tree2.insert(c, 13);
- comparisons(make_root_tracking_cursor(test_tree2.root()));
- comparisons(make_root_tracking_cursor(make_ascending_cursor(test_tree2.root())));
+ test::compare_cursor_to_iterator_traversal(Order(), make_root_tracking_cursor(test_tree2.root()));
+ test::compare_cursor_to_iterator_traversal(Order(), make_root_tracking_cursor(make_ascending_cursor(test_tree2.root())));
     
     c = test_tree2.insert(c, 11);
- comparisons(make_root_tracking_cursor(test_tree2.root()));
- comparisons(make_root_tracking_cursor(make_ascending_cursor(test_tree2.root())));
+ test::compare_cursor_to_iterator_traversal(Order(), make_root_tracking_cursor(test_tree2.root()));
+ test::compare_cursor_to_iterator_traversal(Order(), make_root_tracking_cursor(make_ascending_cursor(test_tree2.root())));
     
     c = test_tree2.insert(++c, 12);
- comparisons(make_root_tracking_cursor(test_tree2.root()));
- comparisons(make_root_tracking_cursor(make_ascending_cursor(test_tree2.root())));
+ test::compare_cursor_to_iterator_traversal(Order(), make_root_tracking_cursor(test_tree2.root()));
+ test::compare_cursor_to_iterator_traversal(Order(), make_root_tracking_cursor(make_ascending_cursor(test_tree2.root())));
     
- underefed_for_each(test_tree2.root(), comparisons_using_ac);
- underefed_for_each(test_tree2.root(), comparisons_using_rtc);
+ underefed_for_each(test_tree2.root(), comparisons_using_ac<Order>);
+ underefed_for_each(test_tree2.root(), comparisons_using_rtc<Order>);
 }
 
-int test_main(int, char* [])
+BOOST_AUTO_TEST_CASE_TEMPLATE( test_algorithms, Order, orders )
 {
     typedef boost::tree::binary_tree<int>::cursor cursor;
     
@@ -156,66 +155,34 @@
     create_test_data_tree(test_tree);
 
     //Preorder
- test_traversal(preorder(), begin(preorder(), make_root_tracking_cursor(test_tree.root())),
- end(preorder(), make_root_tracking_cursor(test_tree.root())));
+ test_traversal(Order(), begin(Order(), make_root_tracking_cursor(test_tree.root())),
+ end(Order(), make_root_tracking_cursor(test_tree.root())));
 
- test_reverse_traversal(preorder(), end(preorder(), make_root_tracking_cursor(test_tree.root())),
- begin(preorder(), make_root_tracking_cursor(test_tree.root())));
+ test_reverse_traversal(Order(), end(Order(), make_root_tracking_cursor(test_tree.root())),
+ begin(Order(), make_root_tracking_cursor(test_tree.root())));
                                     
- BOOST_CHECK(std::distance(begin(preorder(), make_root_tracking_cursor(test_tree.root())),
- end(preorder(), make_root_tracking_cursor(test_tree.root()))) == 11);
-
- // Inorder
- test_traversal(inorder(), begin(inorder(), make_root_tracking_cursor(test_tree.root())),
- end(inorder(), make_root_tracking_cursor(test_tree.root())));
+ BOOST_CHECK(std::distance(begin(Order(), make_root_tracking_cursor(test_tree.root())),
+ end(Order(), make_root_tracking_cursor(test_tree.root()))) == 11);
 
- test_reverse_traversal(inorder(), end(inorder(), make_root_tracking_cursor(test_tree.root())),
- begin(inorder(), make_root_tracking_cursor(test_tree.root())));
-
     // TODO: Also check with binary_tree-specialized inorder begin()!
 
- BOOST_CHECK(std::distance(begin(inorder(), make_root_tracking_cursor(test_tree.root())),
- end(inorder(), make_root_tracking_cursor(test_tree.root()))) == 11);
-
- //Postorder
- test_traversal(postorder(), begin(postorder(), make_root_tracking_cursor(test_tree.root())),
- end(postorder(), make_root_tracking_cursor(test_tree.root())));
- test_reverse_traversal(postorder(), end(postorder(), make_root_tracking_cursor(test_tree.root())),
- begin(postorder(), make_root_tracking_cursor(test_tree.root())));
-
- BOOST_CHECK(std::distance(begin(postorder(), make_root_tracking_cursor(test_tree.root())),
- end(postorder(), make_root_tracking_cursor(test_tree.root()))) == 11);
-
     // Now the iterators based on stack-based cursors (that don't use cursor.to_parent())
 
- test_traversal(preorder(), begin(preorder(), make_root_tracking_cursor(make_ascending_cursor(test_tree.root()))),
- end(preorder(), make_root_tracking_cursor(make_ascending_cursor(test_tree.root()))));
- test_reverse_traversal(preorder(), end(preorder(), make_root_tracking_cursor(make_ascending_cursor(test_tree.root()))),
- begin(preorder(), make_root_tracking_cursor(make_ascending_cursor(test_tree.root()))));
-
- test_traversal(inorder(), begin(inorder(), make_root_tracking_cursor(make_ascending_cursor(test_tree.root()))),
- end(inorder(), make_root_tracking_cursor(make_ascending_cursor(test_tree.root()))));
- test_reverse_traversal(inorder(), end(inorder(), make_root_tracking_cursor(make_ascending_cursor(test_tree.root()))),
- begin(inorder(), make_root_tracking_cursor(make_ascending_cursor(test_tree.root()))));
-
- test_traversal(postorder(), begin(postorder(), make_root_tracking_cursor(make_ascending_cursor(test_tree.root()))),
- end(postorder(), make_root_tracking_cursor(make_ascending_cursor(test_tree.root()))));
- test_reverse_traversal(postorder(), end(postorder(), make_root_tracking_cursor(make_ascending_cursor(test_tree.root()))),
- begin(postorder(), make_root_tracking_cursor(make_ascending_cursor(test_tree.root()))));
+ test_traversal(Order(), begin(Order(), make_root_tracking_cursor(make_ascending_cursor(test_tree.root()))),
+ end(Order(), make_root_tracking_cursor(make_ascending_cursor(test_tree.root()))));
+ test_reverse_traversal(Order(), end(Order(), make_root_tracking_cursor(make_ascending_cursor(test_tree.root()))),
+ begin(Order(), make_root_tracking_cursor(make_ascending_cursor(test_tree.root()))));
 
+// TODO: Move to other unit
     //Ascending iterator.
- binary_tree<int>::cursor c = test_tree.root();
- boost::tree::iterator<ascending, binary_tree<int>::cursor> ai_root(c);
- c = c.begin().end().begin().begin();
- BOOST_CHECK(*c == 4);
-
- boost::tree::iterator<ascending, binary_tree<int>::cursor> ais(c);
- test_traversal_from_leaf4(ais, ai_root);
+// binary_tree<int>::cursor c = test_tree.root();
+// boost::tree::iterator<ascending, binary_tree<int>::cursor> ai_root(c);
+// c = c.begin().end().begin().begin();
+// BOOST_CHECK(*c == 4);
+//
+// boost::tree::iterator<ascending, binary_tree<int>::cursor> ais(c);
+// test_traversal_from_leaf4(ais, ai_root);
 
- //Now the advanced stuff
- compare_cursor_to_iterator_traversal();
-
- return 0;
 }
 
 

Modified: sandbox/SOC/2006/tree/trunk/libs/tree/test/subtree_algorithms_checks.hpp
==============================================================================
--- sandbox/SOC/2006/tree/trunk/libs/tree/test/subtree_algorithms_checks.hpp (original)
+++ sandbox/SOC/2006/tree/trunk/libs/tree/test/subtree_algorithms_checks.hpp 2008-09-30 10:58:14 EDT (Tue, 30 Sep 2008)
@@ -13,8 +13,6 @@
 #include <algorithm>
 #include <iterator>
 
-#include <boost/test/minimal.hpp>
-
 #include "helpers.hpp"
 #include "test_tree_traversal_data.hpp"
 

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 2008-09-30 10:58:14 EDT (Tue, 30 Sep 2008)
@@ -11,8 +11,6 @@
 
 #include <list>
 
-#include <boost/test/minimal.hpp>
-
 // Test data from http://en.wikipedia.org/wiki/Image:Binary_search_tree.svg
 // (With two additional nodes: 11 inserted left of 13; 12 right of 11)
 // and in combination with http://en.wikipedia.org/wiki/Tree_traversal#Examples


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