diff --git a/test/exception/insert_exception_tests.cpp b/test/exception/insert_exception_tests.cpp index aed566dc..428dbb04 100644 --- a/test/exception/insert_exception_tests.cpp +++ b/test/exception/insert_exception_tests.cpp @@ -130,6 +130,7 @@ struct insert_test_rehash1 : public insert_test_base T x; x.max_load_factor(0.25); + // TODO: This doesn't really work is bucket_count is 0 size_type bucket_count = x.bucket_count(); size_type initial_elements = static_cast( ceil(bucket_count * (double) x.max_load_factor()) - 1); diff --git a/test/helpers/invariants.hpp b/test/helpers/invariants.hpp index e18ef865..5c2048b7 100644 --- a/test/helpers/invariants.hpp +++ b/test/helpers/invariants.hpp @@ -91,7 +91,7 @@ namespace test // Check the load factor. - float load_factor = + float load_factor = size == 0 ? 0 : static_cast(size) / static_cast(x1.bucket_count()); using namespace std; if(fabs(x1.load_factor() - load_factor) > x1.load_factor() / 64) diff --git a/test/unordered/bucket_tests.cpp b/test/unordered/bucket_tests.cpp index 58d9be30..7c6ff2d3 100644 --- a/test/unordered/bucket_tests.cpp +++ b/test/unordered/bucket_tests.cpp @@ -34,8 +34,10 @@ void tests(X*, test::random_generator generator) X x(v.begin(), v.end()); - BOOST_TEST(x.bucket_count() < x.max_bucket_count()); - std::cerr<::const_iterator it = v.begin(), end = v.end(); it != end; ++it) @@ -43,7 +45,7 @@ void tests(X*, test::random_generator generator) size_type bucket = x.bucket(test::get_key(*it)); BOOST_TEST(bucket < x.bucket_count()); - if(bucket < x.max_bucket_count()) { + if(bucket < x.bucket_count()) { // lit? lend?? I need a new naming scheme. const_local_iterator lit = x.begin(bucket), lend = x.end(bucket); while(lit != lend diff --git a/test/unordered/insert_tests.cpp b/test/unordered/insert_tests.cpp index 019d2ac3..8ebdd337 100644 --- a/test/unordered/insert_tests.cpp +++ b/test/unordered/insert_tests.cpp @@ -55,7 +55,7 @@ void unique_insert_tests1(X*, test::random_generator generator) tracker.compare_key(x, *it); - if(static_cast(x.size()) < b * static_cast(old_bucket_count)) + if(static_cast(x.size()) <= b * static_cast(old_bucket_count)) BOOST_TEST(x.bucket_count() == old_bucket_count); } @@ -88,7 +88,7 @@ void equivalent_insert_tests1(X*, test::random_generator generator) tracker.compare_key(x, *it); - if(static_cast(x.size()) < b * static_cast(old_bucket_count)) + if(static_cast(x.size()) <= b * static_cast(old_bucket_count)) BOOST_TEST(x.bucket_count() == old_bucket_count); } @@ -124,7 +124,7 @@ void insert_tests2(X*, test::random_generator generator) BOOST_TEST(*r1 == *r2); tracker.compare_key(x, *it); - if(static_cast(x.size()) < b * static_cast(old_bucket_count)) + if(static_cast(x.size()) <= b * static_cast(old_bucket_count)) BOOST_TEST(x.bucket_count() == old_bucket_count); } @@ -153,7 +153,7 @@ void insert_tests2(X*, test::random_generator generator) BOOST_TEST(*r1 == *r2); tracker.compare_key(x, *it); - if(static_cast(x.size()) < b * static_cast(old_bucket_count)) + if(static_cast(x.size()) <= b * static_cast(old_bucket_count)) BOOST_TEST(x.bucket_count() == old_bucket_count); } @@ -182,7 +182,7 @@ void insert_tests2(X*, test::random_generator generator) BOOST_TEST(*pos == *r2); tracker.compare_key(x, *it); - if(static_cast(x.size()) < b * static_cast(old_bucket_count)) + if(static_cast(x.size()) <= b * static_cast(old_bucket_count)) BOOST_TEST(x.bucket_count() == old_bucket_count); } @@ -209,7 +209,7 @@ void insert_tests2(X*, test::random_generator generator) tracker.insert(*it); tracker.compare_key(x, *it); - if(static_cast(x.size()) < b * static_cast(old_bucket_count)) + if(static_cast(x.size()) <= b * static_cast(old_bucket_count)) BOOST_TEST(x.bucket_count() == old_bucket_count); } @@ -323,7 +323,7 @@ void unique_emplace_tests1(X*, test::random_generator generator) tracker.compare_key(x, *it); - if(static_cast(x.size()) < b * static_cast(old_bucket_count)) + if(static_cast(x.size()) <= b * static_cast(old_bucket_count)) BOOST_TEST(x.bucket_count() == old_bucket_count); } @@ -353,7 +353,7 @@ void equivalent_emplace_tests1(X*, test::random_generator generator) tracker.compare_key(x, *it); - if(static_cast(x.size()) < b * static_cast(old_bucket_count)) + if(static_cast(x.size()) <= b * static_cast(old_bucket_count)) BOOST_TEST(x.bucket_count() == old_bucket_count); } @@ -382,7 +382,7 @@ void move_emplace_tests(X*, test::random_generator generator) tracker.insert(*it); tracker.compare_key(x, *it); - if(static_cast(x.size()) < b * static_cast(old_bucket_count)) + if(static_cast(x.size()) <= b * static_cast(old_bucket_count)) BOOST_TEST(x.bucket_count() == old_bucket_count); } @@ -445,7 +445,7 @@ void map_tests(X*, test::random_generator generator) tracker.compare_key(x, *it); - if(static_cast(x.size()) < b * static_cast(old_bucket_count)) + if(static_cast(x.size()) <= b * static_cast(old_bucket_count)) BOOST_TEST(x.bucket_count() == old_bucket_count); } diff --git a/test/unordered/load_factor_tests.cpp b/test/unordered/load_factor_tests.cpp index 6dbd7967..2553c7fe 100644 --- a/test/unordered/load_factor_tests.cpp +++ b/test/unordered/load_factor_tests.cpp @@ -51,7 +51,7 @@ void insert_test(X*, float mlf, test::random_generator generator) BOOST_DEDUCED_TYPENAME X::size_type old_size = x.size(), old_bucket_count = x.bucket_count(); x.insert(*it); - if(static_cast(old_size + 1) < b * static_cast(old_bucket_count)) + if(static_cast(old_size + 1) <= b * static_cast(old_bucket_count)) BOOST_TEST(x.bucket_count() == old_bucket_count); } } diff --git a/test/unordered/rehash_tests.cpp b/test/unordered/rehash_tests.cpp index 3746bed3..551b79fa 100644 --- a/test/unordered/rehash_tests.cpp +++ b/test/unordered/rehash_tests.cpp @@ -22,7 +22,7 @@ test::seed_t initialize_seed(2974); template bool postcondition(X const& x, BOOST_DEDUCED_TYPENAME X::size_type n) { - return static_cast(x.bucket_count()) > + return static_cast(x.bucket_count()) >= static_cast(x.size()) / x.max_load_factor() && x.bucket_count() >= n; } @@ -149,9 +149,6 @@ void reserve_test1(X*, test::random_generator generator) X x; x.max_load_factor(random_mlf ? static_cast(std::rand() % 1000) / 500.0f + 0.5f : 1.0f); - // For the current standard this should reserve i+1, I've - // submitted a defect report and will assume it's a defect - // for now. x.reserve(test::has_unique_keys::value ? i : v.size()); // Insert an element before the range insert, otherwise there are