|
From: Jan G. <jan...@us...> - 2007-04-09 22:06:17
|
Update of /cvsroot/boost-sandbox/boost-sandbox/libs/circular_buffer/test In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv2309/libs/circular_buffer/test Modified Files: space_optimized_test.cpp Log Message: circular_buffer: updated srcdoc and test cases Index: space_optimized_test.cpp =================================================================== RCS file: /cvsroot/boost-sandbox/boost-sandbox/libs/circular_buffer/test/space_optimized_test.cpp,v retrieving revision 1.13 retrieving revision 1.14 diff -u -d -r1.13 -r1.14 --- space_optimized_test.cpp 8 Apr 2007 22:10:24 -0000 1.13 +++ space_optimized_test.cpp 9 Apr 2007 22:06:14 -0000 1.14 @@ -58,6 +58,104 @@ BOOST_CHECK(cb3.capacity().min_capacity() <= cb3.internal_capacity()); } +void some_constructor_tests() { + + cb_space_optimized cb1; + BOOST_CHECK(cb1.capacity() == cb1.max_size()); + BOOST_CHECK(cb1.capacity().min_capacity() == 0); + BOOST_CHECK(cb1.internal_capacity() == 0); + BOOST_CHECK(cb1.size() == 0); + + cb1.push_back(1); + cb1.push_back(2); + cb1.push_back(3); + + BOOST_CHECK(cb1.size() == 3); + BOOST_CHECK(cb1.capacity() == cb1.max_size()); + + cb_space_optimized cb2(cb1.begin(), cb1.end()); + + BOOST_CHECK(cb2.capacity() == 3); + BOOST_CHECK(cb2.capacity().min_capacity() == 0); + BOOST_CHECK(cb2.size() == 3); +} + +void shrink_to_fit() { + + cb_space_optimized cb(1000); + cb.push_back(1); + cb.push_back(2); + cb.push_back(3); + + BOOST_CHECK(cb.size() == 3); + BOOST_CHECK(cb.capacity() == 1000); + + size_t internal_capacity = cb.internal_capacity(); + cb_space_optimized(cb).swap(cb); + + BOOST_CHECK(cb.size() == 3); + BOOST_CHECK(cb.capacity() == 1000); + BOOST_CHECK(internal_capacity >= cb.internal_capacity()); +} + +void iterator_invalidation_test() { + +#if !defined(NDEBUG) && !defined(BOOST_CB_DISABLE_DEBUG) + + cb_space_optimized cb1(10, 1); + cb1.push_back(2); + cb1.push_back(3); + cb1.push_back(4); + cb_space_optimized::iterator it1 = cb1.end(); + cb_space_optimized::const_iterator it2 = cb1.begin(); + cb_space_optimized::iterator it3 = cb1.begin() + 6; + + cb1.set_capacity(10); + BOOST_CHECK(it1.is_valid(&cb1)); + BOOST_CHECK(!it2.is_valid(&cb1)); + BOOST_CHECK(!it3.is_valid(&cb1)); + + it1 = cb1.end(); + it2 = cb1.begin(); + it3 = cb1.begin() + 6; + cb1.rset_capacity(10); + BOOST_CHECK(it1.is_valid(&cb1)); + BOOST_CHECK(!it2.is_valid(&cb1)); + BOOST_CHECK(!it3.is_valid(&cb1)); + + it1 = cb1.end(); + it2 = cb1.begin(); + it3 = cb1.begin() + 6; + cb1.resize(10); + BOOST_CHECK(it1.is_valid(&cb1)); + BOOST_CHECK(!it2.is_valid(&cb1)); + BOOST_CHECK(!it3.is_valid(&cb1)); + + it1 = cb1.end(); + it2 = cb1.begin(); + it3 = cb1.begin() + 6; + cb1.rresize(10); + BOOST_CHECK(it1.is_valid(&cb1)); + BOOST_CHECK(!it2.is_valid(&cb1)); + BOOST_CHECK(!it3.is_valid(&cb1)); + + { + cb_space_optimized cb2(10, 1); + cb2.push_back(2); + cb2.push_back(3); + cb2.push_back(4); + it1 = cb2.end(); + it2 = cb2.begin(); + it3 = cb2.begin() + 6; + } + BOOST_CHECK(!it1.is_valid(&cb1)); + BOOST_CHECK(!it2.is_valid(&cb1)); + BOOST_CHECK(!it3.is_valid(&cb1)); + + +#endif // #if !defined(NDEBUG) && !defined(BOOST_CB_DISABLE_DEBUG) +} + // test main test_suite* init_unit_test_suite(int /*argc*/, char* /*argv*/[]) { @@ -65,6 +163,9 @@ add_common_tests(tests); tests->add(BOOST_TEST_CASE(&min_capacity_test)); + tests->add(BOOST_TEST_CASE(&some_constructor_tests)); + tests->add(BOOST_TEST_CASE(&shrink_to_fit)); + tests->add(BOOST_TEST_CASE(&iterator_invalidation_test)); return tests; } |