|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r51307 - trunk/libs/ptr_container/test
From: nesotto_at_[hidden]
Date: 2009-02-17 17:42:41
Author: nesotto
Date: 2009-02-17 17:42:39 EST (Tue, 17 Feb 2009)
New Revision: 51307
URL: http://svn.boost.org/trac/boost/changeset/51307
Log:
updated for nasty erase() bug..
Text files modified:
trunk/libs/ptr_container/test/Jamfile.v2 | 3 ++-
trunk/libs/ptr_container/test/associative_test_data.hpp | 5 ++++-
trunk/libs/ptr_container/test/ptr_set.cpp | 30 ++++++++++++++++++++++++++++--
trunk/libs/ptr_container/test/ptr_unordered_set.cpp | 29 +++++++++++++++++++++++++++++
trunk/libs/ptr_container/test/test_data.hpp | 21 +++++++--------------
5 files changed, 70 insertions(+), 18 deletions(-)
Modified: trunk/libs/ptr_container/test/Jamfile.v2
==============================================================================
--- trunk/libs/ptr_container/test/Jamfile.v2 (original)
+++ trunk/libs/ptr_container/test/Jamfile.v2 2009-02-17 17:42:39 EST (Tue, 17 Feb 2009)
@@ -38,5 +38,6 @@
[ sc-test ptr_unordered_set ]
[ sc-test ptr_unordered_map ]
[ sc-test ptr_circular_buffer ]
-
+ [ sc-test ptr_multi_index_container ]
+
;
Modified: trunk/libs/ptr_container/test/associative_test_data.hpp
==============================================================================
--- trunk/libs/ptr_container/test/associative_test_data.hpp (original)
+++ trunk/libs/ptr_container/test/associative_test_data.hpp 2009-02-17 17:42:39 EST (Tue, 17 Feb 2009)
@@ -109,12 +109,14 @@
t = new T;
c.insert( new T );
c.erase( *t );
+ delete t;
BOOST_CHECK( c3.empty() );
c.swap( c3 );
BOOST_CHECK( !c3.empty() );
BOOST_CHECK( c.empty() );
c3.clear();
+
//
// remark: we cannot pass c3 directly as it would
// extract const iterators ... and the
@@ -146,7 +148,8 @@
hide_warning( c3size );
unsigned long num = c. BOOST_NESTED_TEMPLATE transfer<C>( c3.begin(),
c3.end(),
- c3 );
+ c3 );
+
BOOST_CHECK( num > 0 );
BOOST_CHECK_EQUAL( num, c.size() );
BOOST_CHECK( c3.empty() );
Modified: trunk/libs/ptr_container/test/ptr_set.cpp
==============================================================================
--- trunk/libs/ptr_container/test/ptr_set.cpp (original)
+++ trunk/libs/ptr_container/test/ptr_set.cpp 2009-02-17 17:42:39 EST (Tue, 17 Feb 2009)
@@ -38,6 +38,31 @@
base = base;
}
+
+
+template< class PtrSet >
+void test_erase()
+{
+ PtrSet s;
+ typedef typename PtrSet::key_type T;
+
+ T t;
+ T* t2 = t.clone();
+ s.insert ( new T );
+ s.insert ( t2 );
+ s.insert ( new T );
+ BOOST_CHECK_EQUAL( s.size(), 3u );
+ BOOST_CHECK_EQUAL( t, *t2 );
+ BOOST_CHECK( ! (t < *t2) );
+ BOOST_CHECK( ! (*t2 < t) );
+ BOOST_CHECK_EQUAL( t, *t2 );
+
+ unsigned n = s.erase( t );
+ BOOST_CHECK( n > 0 );
+}
+
+
+
void test_set()
{
srand( 0 );
@@ -51,7 +76,7 @@
Derived_class>();
test_copy< ptr_multiset<Base>, ptr_multiset<Derived_class>,
Derived_class>();
-
+
test_transfer< ptr_set<Derived_class>, ptr_set<Base>, Derived_class>();
test_transfer< ptr_multiset<Derived_class>, ptr_multiset<Base>, Derived_class>();
@@ -63,7 +88,8 @@
BOOST_CHECK_THROW( (set.replace(set.begin(), 0 )), bad_ptr_container_operation );
BOOST_CHECK_THROW( (set.replace(set.begin(), std::auto_ptr<int>(0) )), bad_ptr_container_operation );
-
+ test_erase< ptr_set<Base> >();
+ test_erase< ptr_multiset<Base> >();
}
using boost::unit_test::test_suite;
Modified: trunk/libs/ptr_container/test/ptr_unordered_set.cpp
==============================================================================
--- trunk/libs/ptr_container/test/ptr_unordered_set.cpp (original)
+++ trunk/libs/ptr_container/test/ptr_unordered_set.cpp 2009-02-17 17:42:39 EST (Tue, 17 Feb 2009)
@@ -59,6 +59,32 @@
c.rehash(1000);
}
+
+
+template< class PtrSet >
+void test_erase()
+{
+ PtrSet s;
+ typedef typename PtrSet::key_type T;
+
+ T t;
+ s.insert ( new T );
+ T* t2 = t.clone();
+ s.insert ( t2 );
+ s.insert ( new T );
+ BOOST_CHECK_EQUAL( s.size(), 3u );
+ BOOST_CHECK_EQUAL( hash_value(t), hash_value(*t2) );
+ BOOST_CHECK_EQUAL( t, *t2 );
+
+ typename PtrSet::iterator i = s.find( t );
+
+ BOOST_CHECK( i != s.end() );
+ unsigned n = s.erase( t );
+ BOOST_CHECK( n > 0 );
+}
+
+
+
void test_set()
{
srand( 0 );
@@ -86,6 +112,9 @@
test_unordered_interface< ptr_unordered_set<Base>, Derived_class >();
test_unordered_interface< ptr_unordered_multiset<Base>, Derived_class >();
+
+ test_erase< ptr_unordered_set<Base> >();
+ test_erase< ptr_unordered_multiset<Base> >();
}
using boost::unit_test::test_suite;
Modified: trunk/libs/ptr_container/test/test_data.hpp
==============================================================================
--- trunk/libs/ptr_container/test/test_data.hpp (original)
+++ trunk/libs/ptr_container/test/test_data.hpp 2009-02-17 17:42:39 EST (Tue, 17 Feb 2009)
@@ -70,24 +70,17 @@
Base* clone() const { return do_clone(); }
void foo() { do_foo(); }
- virtual bool less_than( const Base& /*b*/ ) const
+ virtual bool less_than( const Base& b ) const
{
- return true;
+ return data3 < b.data3;
}
virtual bool equal( const Base& b ) const
{
- return this == &b ;
- }
-
- bool data_less_than( const Base& b ) const
- {
- return data1 == b.data1 && data2 == b.data2 && data3 < b.data3;
- }
-
- bool data_less_than2( const Base& b ) const
- {
- return data_less_than(b) && data < b.data;
+ return data1 == b.data1 &&
+ data2 == b.data2 &&
+ data3 == b.data3 &&
+ data == b.data;
}
#ifdef PTR_CONTAINER_DEBUG
@@ -133,7 +126,7 @@
inline bool operator>( const Base& l, const Base& r )
{
- return !l.less_than( r ) && r.less_than( l );
+ return r < l;
}
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