forked from boostorg/unordered
Merge new changes to unordered & hash.
- Unordered tests can run lightweight test or Boost.Test (at least theoretically). - Workaround Open BSD's incorrect numeric_limits. - Move the hash extensions in their own file. - Various small improvements to the unordered docs. - Fix some unordered examples. Merged revisions 43117-43837 via svnmerge from https://svn.boost.org/svn/boost/branches/unordered/trunk [SVN r43838]
This commit is contained in:
@@ -5,7 +5,7 @@
|
||||
|
||||
#include <boost/unordered_set.hpp>
|
||||
#include <boost/unordered_map.hpp>
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
#include "../helpers/test.hpp"
|
||||
#include "../objects/test.hpp"
|
||||
#include "../helpers/random_values.hpp"
|
||||
#include "../helpers/tracker.hpp"
|
||||
@@ -13,6 +13,8 @@
|
||||
|
||||
#include <iostream>
|
||||
|
||||
namespace assign_tests {
|
||||
|
||||
test::seed_t seed(96785);
|
||||
|
||||
template <class T>
|
||||
@@ -83,32 +85,24 @@ void assign_tests2(T*, test::random_generator generator = test::default_generato
|
||||
}
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
boost::unordered_set<test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_set;
|
||||
boost::unordered_multiset<test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_multiset;
|
||||
boost::unordered_map<test::object, test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_map;
|
||||
boost::unordered_multimap<test::object, test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_multimap;
|
||||
boost::unordered_set<test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_set;
|
||||
boost::unordered_multiset<test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_multiset;
|
||||
boost::unordered_map<test::object, test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_map;
|
||||
boost::unordered_multimap<test::object, test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_multimap;
|
||||
|
||||
assign_tests1(test_set);
|
||||
assign_tests1(test_multiset);
|
||||
assign_tests1(test_map);
|
||||
assign_tests1(test_multimap);
|
||||
using test::default_generator;
|
||||
using test::generate_collisions;
|
||||
|
||||
assign_tests1(test_set, test::generate_collisions);
|
||||
assign_tests1(test_multiset, test::generate_collisions);
|
||||
assign_tests1(test_map, test::generate_collisions);
|
||||
assign_tests1(test_multimap, test::generate_collisions);
|
||||
UNORDERED_TEST(assign_tests1,
|
||||
((test_set)(test_multiset)(test_map)(test_multimap))
|
||||
((default_generator)(generate_collisions))
|
||||
)
|
||||
|
||||
assign_tests2(test_set);
|
||||
assign_tests2(test_multiset);
|
||||
assign_tests2(test_map);
|
||||
assign_tests2(test_multimap);
|
||||
UNORDERED_TEST(assign_tests2,
|
||||
((test_set)(test_multiset)(test_map)(test_multimap))
|
||||
((default_generator)(generate_collisions))
|
||||
)
|
||||
|
||||
assign_tests2(test_set, test::generate_collisions);
|
||||
assign_tests2(test_multiset, test::generate_collisions);
|
||||
assign_tests2(test_map, test::generate_collisions);
|
||||
assign_tests2(test_multimap, test::generate_collisions);
|
||||
|
||||
return boost::report_errors();
|
||||
}
|
||||
|
||||
RUN_TESTS()
|
||||
|
||||
@@ -4,10 +4,12 @@
|
||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
#include <boost/unordered_map.hpp>
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
#include "../helpers/test.hpp"
|
||||
#include <string>
|
||||
|
||||
int main() {
|
||||
namespace at_tests {
|
||||
|
||||
UNORDERED_AUTO_TEST(at_tests) {
|
||||
boost::unordered_map<std::string, int> x;
|
||||
typedef boost::unordered_map<std::string, int>::iterator iterator;
|
||||
|
||||
@@ -23,6 +25,8 @@ int main() {
|
||||
}
|
||||
catch(std::out_of_range) {
|
||||
}
|
||||
|
||||
return boost::report_errors();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
RUN_TESTS()
|
||||
|
||||
@@ -5,12 +5,14 @@
|
||||
|
||||
#include <boost/unordered_set.hpp>
|
||||
#include <boost/unordered_map.hpp>
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
#include "../helpers/test.hpp"
|
||||
#include <algorithm>
|
||||
#include "../objects/test.hpp"
|
||||
#include "../helpers/random_values.hpp"
|
||||
#include "../helpers/helpers.hpp"
|
||||
|
||||
namespace bucket_tests {
|
||||
|
||||
test::seed_t seed(54635);
|
||||
|
||||
template <class X>
|
||||
@@ -48,12 +50,13 @@ void bucket_tests(X* = 0)
|
||||
}
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
bucket_tests((boost::unordered_set<test::object, test::hash, test::equal_to, test::allocator<test::object> >*) 0);
|
||||
bucket_tests((boost::unordered_multiset<test::object, test::hash, test::equal_to, test::allocator<test::object> >*) 0);
|
||||
bucket_tests((boost::unordered_map<test::object, test::object, test::hash, test::equal_to, test::allocator<test::object> >*) 0);
|
||||
bucket_tests((boost::unordered_multimap<test::object, test::object, test::hash, test::equal_to, test::allocator<test::object> >*) 0);
|
||||
boost::unordered_set<test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_set;
|
||||
boost::unordered_multiset<test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_multiset;
|
||||
boost::unordered_map<test::object, test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_map;
|
||||
boost::unordered_multimap<test::object, test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_multimap;
|
||||
|
||||
UNORDERED_TEST(bucket_tests, ((test_set)(test_multiset)(test_map)(test_multimap)))
|
||||
|
||||
return boost::report_errors();
|
||||
}
|
||||
|
||||
RUN_TESTS()
|
||||
|
||||
@@ -9,11 +9,11 @@
|
||||
#include <boost/unordered_map.hpp>
|
||||
|
||||
#include <iostream>
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
#include "../helpers/test.hpp"
|
||||
#include "../objects/minimal.hpp"
|
||||
#include "./compile_tests.hpp"
|
||||
|
||||
void test0()
|
||||
UNORDERED_AUTO_TEST(test0)
|
||||
{
|
||||
typedef std::pair<test::minimal::assignable const,
|
||||
test::minimal::copy_constructible> value_type;
|
||||
@@ -42,8 +42,7 @@ void test0()
|
||||
container_test(multimap, value);
|
||||
}
|
||||
|
||||
void test1()
|
||||
{
|
||||
UNORDERED_AUTO_TEST(test1) {
|
||||
boost::hash<int> hash;
|
||||
std::equal_to<int> equal_to;
|
||||
int value = 0;
|
||||
@@ -67,7 +66,7 @@ void test1()
|
||||
unordered_test(multimap, value, map_value, hash, equal_to);
|
||||
}
|
||||
|
||||
void test2()
|
||||
UNORDERED_AUTO_TEST(test2)
|
||||
{
|
||||
test::minimal::assignable assignable
|
||||
= test::minimal::assignable::create();
|
||||
@@ -121,11 +120,4 @@ void test2()
|
||||
unordered_test(multimap, assignable, map_value, hash, equal_to);
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
test0();
|
||||
test1();
|
||||
test2();
|
||||
|
||||
return boost::report_errors();
|
||||
}
|
||||
RUN_TESTS()
|
||||
|
||||
@@ -9,11 +9,11 @@
|
||||
#include <boost/unordered_set.hpp>
|
||||
|
||||
#include <iostream>
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
#include "../helpers/test.hpp"
|
||||
#include "../objects/minimal.hpp"
|
||||
#include "./compile_tests.hpp"
|
||||
|
||||
void test0()
|
||||
UNORDERED_AUTO_TEST(test0)
|
||||
{
|
||||
test::minimal::assignable assignable = test::minimal::assignable::create();
|
||||
|
||||
@@ -36,7 +36,7 @@ void test0()
|
||||
container_test(multiset, assignable);
|
||||
}
|
||||
|
||||
void test1()
|
||||
UNORDERED_AUTO_TEST(test1)
|
||||
{
|
||||
boost::hash<int> hash;
|
||||
std::equal_to<int> equal_to;
|
||||
@@ -59,7 +59,7 @@ void test1()
|
||||
unordered_test(multiset, value, value, hash, equal_to);
|
||||
}
|
||||
|
||||
void test2()
|
||||
UNORDERED_AUTO_TEST(test2)
|
||||
{
|
||||
test::minimal::assignable assignable
|
||||
= test::minimal::assignable::create();
|
||||
@@ -95,10 +95,4 @@ void test2()
|
||||
unordered_test(multiset, assignable, assignable, hash, equal_to);
|
||||
}
|
||||
|
||||
int main() {
|
||||
test0();
|
||||
test1();
|
||||
test2();
|
||||
|
||||
return boost::report_errors();
|
||||
}
|
||||
RUN_TESTS()
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
#include <boost/unordered_set.hpp>
|
||||
#include <boost/unordered_map.hpp>
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
#include "../helpers/test.hpp"
|
||||
#include "../objects/test.hpp"
|
||||
#include "../helpers/random_values.hpp"
|
||||
#include "../helpers/tracker.hpp"
|
||||
@@ -15,6 +15,8 @@
|
||||
|
||||
#include <iostream>
|
||||
|
||||
namespace constructor_tests {
|
||||
|
||||
test::seed_t seed(356730);
|
||||
|
||||
template <class T>
|
||||
@@ -255,53 +257,28 @@ void map_constructor_test(T* = 0)
|
||||
test::check_equivalent_keys(x);
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
boost::unordered_set<test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_set;
|
||||
boost::unordered_multiset<test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_multiset;
|
||||
boost::unordered_map<test::object, test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_map;
|
||||
boost::unordered_multimap<test::object, test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_multimap;
|
||||
boost::unordered_set<test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_set;
|
||||
boost::unordered_multiset<test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_multiset;
|
||||
boost::unordered_map<test::object, test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_map;
|
||||
boost::unordered_multimap<test::object, test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_multimap;
|
||||
|
||||
std::cerr<<"Test1 test_set\n";
|
||||
constructor_tests1(test_set);
|
||||
std::cerr<<"Test1 test_multiset\n";
|
||||
constructor_tests1(test_multiset);
|
||||
std::cerr<<"Test1 test_map\n";
|
||||
constructor_tests1(test_map);
|
||||
std::cerr<<"Test1 test_multimap\n";
|
||||
constructor_tests1(test_multimap);
|
||||
using test::default_generator;
|
||||
using test::generate_collisions;
|
||||
|
||||
std::cerr<<"Test1 test_set, collisions\n";
|
||||
constructor_tests1(test_set, test::generate_collisions);
|
||||
std::cerr<<"Test1 test_multiset, collisions\n";
|
||||
constructor_tests1(test_multiset, test::generate_collisions);
|
||||
std::cerr<<"Test1 test_map, collisions\n";
|
||||
constructor_tests1(test_map, test::generate_collisions);
|
||||
std::cerr<<"Test1 test_multimap, collisions\n";
|
||||
constructor_tests1(test_multimap, test::generate_collisions);
|
||||
UNORDERED_TEST(constructor_tests1,
|
||||
((test_set)(test_multiset)(test_map)(test_multimap))
|
||||
((default_generator)(generate_collisions))
|
||||
)
|
||||
|
||||
std::cerr<<"Test2 test_set\n";
|
||||
constructor_tests2(test_set);
|
||||
std::cerr<<"Test2 test_multiset\n";
|
||||
constructor_tests2(test_multiset);
|
||||
std::cerr<<"Test2 test_map\n";
|
||||
constructor_tests2(test_map);
|
||||
std::cerr<<"Test2 test_multimap\n";
|
||||
constructor_tests2(test_multimap);
|
||||
UNORDERED_TEST(constructor_tests2,
|
||||
((test_set)(test_multiset)(test_map)(test_multimap))
|
||||
((default_generator)(generate_collisions))
|
||||
)
|
||||
|
||||
std::cerr<<"Test2 test_set, collisions\n";
|
||||
constructor_tests2(test_set, test::generate_collisions);
|
||||
std::cerr<<"Test2 test_multiset, collisions\n";
|
||||
constructor_tests2(test_multiset, test::generate_collisions);
|
||||
std::cerr<<"Test2 test_map, collisions\n";
|
||||
constructor_tests2(test_map, test::generate_collisions);
|
||||
std::cerr<<"Test2 test_multimap, collisions\n";
|
||||
constructor_tests2(test_multimap, test::generate_collisions);
|
||||
UNORDERED_TEST(map_constructor_test,
|
||||
((test_map)(test_multimap))
|
||||
)
|
||||
|
||||
std::cerr<<"Map Test unordered_map<test::object, test::object>\n";
|
||||
map_constructor_test(test_map);
|
||||
std::cerr<<"Map Test unordered_multimap<test::object, test::object>\n";
|
||||
map_constructor_test(test_multimap);
|
||||
|
||||
return boost::report_errors();
|
||||
}
|
||||
|
||||
RUN_TESTS()
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
#include <boost/unordered_set.hpp>
|
||||
#include <boost/unordered_map.hpp>
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
#include "../helpers/test.hpp"
|
||||
#include "../objects/test.hpp"
|
||||
#include "../helpers/random_values.hpp"
|
||||
#include "../helpers/tracker.hpp"
|
||||
@@ -14,6 +14,9 @@
|
||||
|
||||
test::seed_t seed(9063);
|
||||
|
||||
namespace copy_tests
|
||||
{
|
||||
|
||||
template <class T>
|
||||
void copy_construct_tests1(T*, test::random_generator const& generator = test::default_generator)
|
||||
{
|
||||
@@ -90,27 +93,23 @@ void copy_construct_tests2(T* ptr, test::random_generator const& generator = tes
|
||||
}
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
boost::unordered_set<test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_set;
|
||||
boost::unordered_multiset<test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_multiset;
|
||||
boost::unordered_map<test::object, test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_map;
|
||||
boost::unordered_multimap<test::object, test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_multimap;
|
||||
boost::unordered_set<test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_set;
|
||||
boost::unordered_multiset<test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_multiset;
|
||||
boost::unordered_map<test::object, test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_map;
|
||||
boost::unordered_multimap<test::object, test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_multimap;
|
||||
|
||||
copy_construct_tests1(test_set);
|
||||
copy_construct_tests1(test_multiset);
|
||||
copy_construct_tests1(test_map);
|
||||
copy_construct_tests1(test_multimap);
|
||||
using test::default_generator;
|
||||
using test::generate_collisions;
|
||||
|
||||
copy_construct_tests2(test_set);
|
||||
copy_construct_tests2(test_multiset);
|
||||
copy_construct_tests2(test_map);
|
||||
copy_construct_tests2(test_multimap);
|
||||
UNORDERED_TEST(copy_construct_tests1,
|
||||
((test_set)(test_multiset)(test_map)(test_multimap))
|
||||
)
|
||||
|
||||
copy_construct_tests2(test_set, test::generate_collisions);
|
||||
copy_construct_tests2(test_multiset, test::generate_collisions);
|
||||
copy_construct_tests2(test_map, test::generate_collisions);
|
||||
copy_construct_tests2(test_multimap, test::generate_collisions);
|
||||
UNORDERED_TEST(copy_construct_tests2,
|
||||
((test_set)(test_multiset)(test_map)(test_multimap))
|
||||
((default_generator)(generate_collisions))
|
||||
)
|
||||
|
||||
return boost::report_errors();
|
||||
}
|
||||
|
||||
RUN_TESTS()
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
#include <boost/unordered_set.hpp>
|
||||
#include <boost/unordered_map.hpp>
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
#include "../helpers/test.hpp"
|
||||
#include <algorithm>
|
||||
#include <map>
|
||||
#include <list>
|
||||
@@ -32,7 +32,7 @@ void test_equal_insertion(Iterator begin, Iterator end)
|
||||
test::check_equivalent_keys(x1);
|
||||
}
|
||||
|
||||
void set_tests()
|
||||
UNORDERED_AUTO_TEST(set_tests)
|
||||
{
|
||||
int values[][5] = {
|
||||
{1},
|
||||
@@ -55,7 +55,7 @@ void set_tests()
|
||||
test_equal_insertion<boost::unordered_multiset<int> >(values[4], values[4] + 3);
|
||||
}
|
||||
|
||||
void map_tests()
|
||||
UNORDERED_AUTO_TEST(map_tests)
|
||||
{
|
||||
typedef std::list<std::pair<int const, int> > values_type;
|
||||
values_type v[5];
|
||||
@@ -76,10 +76,4 @@ void map_tests()
|
||||
v[i2].begin(), v[i2].end());
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
set_tests();
|
||||
map_tests();
|
||||
|
||||
return boost::report_errors();
|
||||
}
|
||||
RUN_TESTS()
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
// hairy with several tricky edge cases - so explicitly test each one.
|
||||
|
||||
#include <boost/unordered_map.hpp>
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
#include "../helpers/test.hpp"
|
||||
#include <list>
|
||||
#include <set>
|
||||
#include <iostream>
|
||||
@@ -52,8 +52,7 @@ typedef boost::unordered_multimap<int, int,
|
||||
typedef collide_map::value_type collide_value;
|
||||
typedef std::list<collide_value> collide_list;
|
||||
|
||||
|
||||
void empty_range_tests()
|
||||
UNORDERED_AUTO_TEST(empty_range_tests)
|
||||
{
|
||||
collide_map x;
|
||||
x.erase(x.begin(), x.end());
|
||||
@@ -61,7 +60,7 @@ void empty_range_tests()
|
||||
x.erase(x.end(), x.end());
|
||||
}
|
||||
|
||||
void single_item_tests()
|
||||
UNORDERED_AUTO_TEST(single_item_tests)
|
||||
{
|
||||
collide_list init;
|
||||
init.push_back(collide_value(1,1));
|
||||
@@ -75,7 +74,7 @@ void single_item_tests()
|
||||
BOOST_TEST(x.count(1) == 0 && x.size() == 0);
|
||||
}
|
||||
|
||||
void two_equivalent_item_tests()
|
||||
UNORDERED_AUTO_TEST(two_equivalent_item_tests)
|
||||
{
|
||||
collide_list init;
|
||||
init.push_back(collide_value(1,1));
|
||||
@@ -172,7 +171,7 @@ void exhaustive_erase_tests(Container* x, int num_values,
|
||||
}
|
||||
}
|
||||
|
||||
void exhaustive_collide_tests()
|
||||
UNORDERED_AUTO_TEST(exhaustive_collide_tests)
|
||||
{
|
||||
std::cout<<"exhaustive_collide_tests:\n";
|
||||
collide_map m;
|
||||
@@ -180,20 +179,11 @@ void exhaustive_collide_tests()
|
||||
std::cout<<"\n";
|
||||
}
|
||||
|
||||
void exhaustive_collide2_tests()
|
||||
UNORDERED_AUTO_TEST(exhaustive_collide2_tests)
|
||||
{
|
||||
std::cout<<"exhaustive_collide2_tests:\n";
|
||||
exhaustive_erase_tests((collide_map2*) 0, 8, 4);
|
||||
std::cout<<"\n";
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
empty_range_tests();
|
||||
single_item_tests();
|
||||
two_equivalent_item_tests();
|
||||
exhaustive_collide_tests();
|
||||
exhaustive_collide2_tests();
|
||||
|
||||
return boost::report_errors();
|
||||
}
|
||||
RUN_TESTS()
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
#include <boost/unordered_set.hpp>
|
||||
#include <boost/unordered_map.hpp>
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
#include "../helpers/test.hpp"
|
||||
#include <boost/next_prior.hpp>
|
||||
#include "../objects/test.hpp"
|
||||
#include "../helpers/random_values.hpp"
|
||||
@@ -15,6 +15,9 @@
|
||||
|
||||
#include <iostream>
|
||||
|
||||
namespace erase_tests
|
||||
{
|
||||
|
||||
test::seed_t seed(85638);
|
||||
|
||||
template <class Container>
|
||||
@@ -119,30 +122,19 @@ void erase_tests1(Container*, test::random_generator generator = test::default_g
|
||||
std::cerr<<"\n";
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
boost::unordered_set<test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_set;
|
||||
boost::unordered_multiset<test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_multiset;
|
||||
boost::unordered_map<test::object, test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_map;
|
||||
boost::unordered_multimap<test::object, test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_multimap;
|
||||
boost::unordered_set<test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_set;
|
||||
boost::unordered_multiset<test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_multiset;
|
||||
boost::unordered_map<test::object, test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_map;
|
||||
boost::unordered_multimap<test::object, test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_multimap;
|
||||
|
||||
std::cerr<<"Erase test_set.\n";
|
||||
erase_tests1(test_set);
|
||||
std::cerr<<"Erase test_multiset.\n";
|
||||
erase_tests1(test_multiset);
|
||||
std::cerr<<"Erase test_map.\n";
|
||||
erase_tests1(test_map);
|
||||
std::cerr<<"Erase test_multimap.\n";
|
||||
erase_tests1(test_multimap);
|
||||
using test::default_generator;
|
||||
using test::generate_collisions;
|
||||
|
||||
std::cerr<<"Erase test_set, collisions.\n";
|
||||
erase_tests1(test_set, test::generate_collisions);
|
||||
std::cerr<<"Erase test_multiset, collisions.\n";
|
||||
erase_tests1(test_multiset, test::generate_collisions);
|
||||
std::cerr<<"Erase test_map, collisions.\n";
|
||||
erase_tests1(test_map, test::generate_collisions);
|
||||
std::cerr<<"Erase test_multimap, collisions.\n";
|
||||
erase_tests1(test_multimap, test::generate_collisions);
|
||||
UNORDERED_TEST(erase_tests1,
|
||||
((test_set)(test_multiset)(test_map)(test_multimap))
|
||||
((default_generator)(generate_collisions))
|
||||
)
|
||||
|
||||
return boost::report_errors();
|
||||
}
|
||||
|
||||
RUN_TESTS()
|
||||
|
||||
@@ -5,12 +5,15 @@
|
||||
|
||||
#include <boost/unordered_set.hpp>
|
||||
#include <boost/unordered_map.hpp>
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
#include "../helpers/test.hpp"
|
||||
#include "../objects/test.hpp"
|
||||
#include "../helpers/random_values.hpp"
|
||||
#include "../helpers/tracker.hpp"
|
||||
#include "../helpers/helpers.hpp"
|
||||
|
||||
namespace find_tests
|
||||
{
|
||||
|
||||
test::seed_t seed(78937);
|
||||
|
||||
template <class X>
|
||||
@@ -78,22 +81,19 @@ void find_tests1(X*, test::random_generator generator = test::default_generator)
|
||||
}
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
boost::unordered_set<test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_set;
|
||||
boost::unordered_multiset<test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_multiset;
|
||||
boost::unordered_map<test::object, test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_map;
|
||||
boost::unordered_multimap<test::object, test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_multimap;
|
||||
boost::unordered_set<test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_set;
|
||||
boost::unordered_multiset<test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_multiset;
|
||||
boost::unordered_map<test::object, test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_map;
|
||||
boost::unordered_multimap<test::object, test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_multimap;
|
||||
|
||||
find_tests1(test_set);
|
||||
find_tests1(test_multiset);
|
||||
find_tests1(test_map);
|
||||
find_tests1(test_multimap);
|
||||
using test::default_generator;
|
||||
using test::generate_collisions;
|
||||
|
||||
find_tests1(test_set, test::generate_collisions);
|
||||
find_tests1(test_multiset, test::generate_collisions);
|
||||
find_tests1(test_map, test::generate_collisions);
|
||||
find_tests1(test_multimap, test::generate_collisions);
|
||||
UNORDERED_TEST(find_tests1,
|
||||
((test_set)(test_multiset)(test_map)(test_multimap))
|
||||
((default_generator)(generate_collisions))
|
||||
)
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
RUN_TESTS()
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
#include <boost/unordered_set.hpp>
|
||||
#include <boost/unordered_map.hpp>
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
#include "../helpers/test.hpp"
|
||||
|
||||
#include <iostream>
|
||||
|
||||
@@ -39,7 +39,7 @@ namespace insert_stable
|
||||
}
|
||||
}
|
||||
|
||||
void stable_insert_test1() {
|
||||
UNORDERED_AUTO_TEST(stable_insert_test1) {
|
||||
boost::unordered_multiset<insert_stable::member> x;
|
||||
|
||||
x.insert(insert_stable::member(1,1));
|
||||
@@ -56,7 +56,7 @@ void stable_insert_test1() {
|
||||
BOOST_TEST(it == end);
|
||||
}
|
||||
|
||||
void stable_insert_test2() {
|
||||
UNORDERED_AUTO_TEST(stable_insert_test2) {
|
||||
boost::unordered_multimap<insert_stable::member, int> x;
|
||||
typedef boost::unordered_multimap<insert_stable::member, int>::const_iterator iterator;
|
||||
|
||||
@@ -75,10 +75,4 @@ void stable_insert_test2() {
|
||||
BOOST_TEST(it == end);
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
stable_insert_test1();
|
||||
stable_insert_test2();
|
||||
|
||||
return boost::report_errors();
|
||||
}
|
||||
RUN_TESTS()
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
#include <boost/unordered_set.hpp>
|
||||
#include <boost/unordered_map.hpp>
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
#include "../helpers/test.hpp"
|
||||
#include <boost/next_prior.hpp>
|
||||
#include "../objects/test.hpp"
|
||||
#include "../helpers/random_values.hpp"
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
#include <boost/unordered_set.hpp>
|
||||
#include <boost/unordered_map.hpp>
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
#include "../helpers/test.hpp"
|
||||
#include <boost/limits.hpp>
|
||||
#include "../helpers/random_values.hpp"
|
||||
|
||||
@@ -14,6 +14,9 @@
|
||||
#pragma warning(disable:4127) // conditional expression is constant
|
||||
#endif
|
||||
|
||||
namespace load_factor_tests
|
||||
{
|
||||
|
||||
test::seed_t seed(783656);
|
||||
|
||||
template <class X>
|
||||
@@ -63,21 +66,23 @@ void load_factor_insert_tests(X* ptr = 0)
|
||||
insert_test(ptr, std::numeric_limits<float>::infinity());
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
load_factor_tests((boost::unordered_set<int>*) 0);
|
||||
load_factor_tests((boost::unordered_multiset<int>*) 0);
|
||||
load_factor_tests((boost::unordered_map<int, int>*) 0);
|
||||
load_factor_tests((boost::unordered_multimap<int, int>*) 0);
|
||||
boost::unordered_set<int>* int_set_ptr;
|
||||
boost::unordered_multiset<int>* int_multiset_ptr;
|
||||
boost::unordered_map<int, int>* int_map_ptr;
|
||||
boost::unordered_multimap<int, int>* int_multimap_ptr;
|
||||
|
||||
load_factor_insert_tests((boost::unordered_set<int>*) 0);
|
||||
load_factor_insert_tests((boost::unordered_multiset<int>*) 0);
|
||||
load_factor_insert_tests((boost::unordered_map<int, int>*) 0);
|
||||
load_factor_insert_tests((boost::unordered_multimap<int, int>*) 0);
|
||||
UNORDERED_TEST(load_factor_tests,
|
||||
((int_set_ptr)(int_multiset_ptr)(int_map_ptr)(int_multimap_ptr))
|
||||
)
|
||||
|
||||
UNORDERED_TEST(load_factor_insert_tests,
|
||||
((int_set_ptr)(int_multiset_ptr)(int_map_ptr)(int_multimap_ptr))
|
||||
)
|
||||
|
||||
return boost::report_errors();
|
||||
}
|
||||
|
||||
RUN_TESTS()
|
||||
|
||||
#if defined(BOOST_MSVC)
|
||||
#pragma warning(pop)
|
||||
#pragma warning(disable:4127) // conditional expression is constant
|
||||
|
||||
@@ -5,10 +5,13 @@
|
||||
|
||||
#include <boost/unordered_set.hpp>
|
||||
#include <boost/unordered_map.hpp>
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
#include "../helpers/test.hpp"
|
||||
#include "../helpers/random_values.hpp"
|
||||
#include "../helpers/tracker.hpp"
|
||||
|
||||
namespace rehash_tests
|
||||
{
|
||||
|
||||
test::seed_t seed(2974);
|
||||
|
||||
template <class X>
|
||||
@@ -59,11 +62,15 @@ void rehash_tests(X* ptr = 0)
|
||||
rehash_test1(ptr);
|
||||
}
|
||||
|
||||
int main() {
|
||||
rehash_tests((boost::unordered_set<int>*) 0);
|
||||
rehash_tests((boost::unordered_multiset<int>*) 0);
|
||||
rehash_tests((boost::unordered_map<int, int>*) 0);
|
||||
rehash_tests((boost::unordered_multimap<int, int>*) 0);
|
||||
boost::unordered_set<int>* int_set_ptr;
|
||||
boost::unordered_multiset<int>* int_multiset_ptr;
|
||||
boost::unordered_map<int, int>* int_map_ptr;
|
||||
boost::unordered_multimap<int, int>* int_multimap_ptr;
|
||||
|
||||
UNORDERED_TEST(rehash_tests,
|
||||
((int_set_ptr)(int_multiset_ptr)(int_map_ptr)(int_multimap_ptr))
|
||||
)
|
||||
|
||||
return boost::report_errors();
|
||||
}
|
||||
|
||||
RUN_TESTS()
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
#include <boost/unordered_set.hpp>
|
||||
#include <boost/unordered_map.hpp>
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
#include "../helpers/test.hpp"
|
||||
#include <cstdlib>
|
||||
#include <algorithm>
|
||||
#include "../helpers/equivalent.hpp"
|
||||
@@ -83,7 +83,7 @@ void simple_test(X const& a)
|
||||
}
|
||||
}
|
||||
|
||||
int main()
|
||||
UNORDERED_AUTO_TEST(simple_tests)
|
||||
{
|
||||
using namespace std;
|
||||
srand(14878);
|
||||
@@ -123,6 +123,6 @@ int main()
|
||||
multimap.insert(std::pair<const int, int>(index, rand()));
|
||||
}
|
||||
simple_test(multimap);
|
||||
|
||||
return boost::report_errors();
|
||||
}
|
||||
|
||||
RUN_TESTS()
|
||||
|
||||
@@ -8,12 +8,15 @@
|
||||
#include <iterator>
|
||||
#include <boost/unordered_set.hpp>
|
||||
#include <boost/unordered_map.hpp>
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
#include "../helpers/test.hpp"
|
||||
#include "../objects/test.hpp"
|
||||
#include "../helpers/random_values.hpp"
|
||||
#include "../helpers/tracker.hpp"
|
||||
#include "../helpers/invariants.hpp"
|
||||
|
||||
namespace swap_tests
|
||||
{
|
||||
|
||||
test::seed_t seed(783472);
|
||||
|
||||
template <class X>
|
||||
@@ -114,22 +117,18 @@ void swap_tests2(X* ptr = 0)
|
||||
#endif
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
boost::unordered_set<test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_set;
|
||||
boost::unordered_multiset<test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_multiset;
|
||||
boost::unordered_map<test::object, test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_map;
|
||||
boost::unordered_multimap<test::object, test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_multimap;
|
||||
boost::unordered_set<test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_set;
|
||||
boost::unordered_multiset<test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_multiset;
|
||||
boost::unordered_map<test::object, test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_map;
|
||||
boost::unordered_multimap<test::object, test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_multimap;
|
||||
|
||||
swap_tests1(test_set);
|
||||
swap_tests1(test_multiset);
|
||||
swap_tests1(test_map);
|
||||
swap_tests1(test_multimap);
|
||||
UNORDERED_TEST(swap_tests1,
|
||||
((test_set)(test_multiset)(test_map)(test_multimap))
|
||||
)
|
||||
|
||||
swap_tests2(test_set);
|
||||
swap_tests2(test_multiset);
|
||||
swap_tests2(test_map);
|
||||
swap_tests2(test_multimap);
|
||||
UNORDERED_TEST(swap_tests2,
|
||||
((test_set)(test_multiset)(test_map)(test_multimap))
|
||||
)
|
||||
|
||||
return boost::report_errors();
|
||||
}
|
||||
RUN_TESTS()
|
||||
|
||||
@@ -5,9 +5,10 @@
|
||||
|
||||
#include <boost/unordered_set.hpp>
|
||||
#include <boost/unordered_map.hpp>
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
#include "../helpers/test.hpp"
|
||||
|
||||
namespace test {
|
||||
namespace unnecessary_copy_tests
|
||||
{
|
||||
struct count_copies
|
||||
{
|
||||
static int count;
|
||||
@@ -17,22 +18,24 @@ namespace test {
|
||||
count_copies& operator=(count_copies const&);
|
||||
};
|
||||
|
||||
bool operator==(test::count_copies const&, test::count_copies const&) {
|
||||
bool operator==(count_copies const&, count_copies const&) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP)
|
||||
namespace boost {
|
||||
namespace boost
|
||||
#else
|
||||
namespace test {
|
||||
namespace unnecessary_copy_tests
|
||||
#endif
|
||||
std::size_t hash_value(test::count_copies const&) {
|
||||
{
|
||||
std::size_t hash_value(unnecessary_copy_tests::count_copies const&) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
namespace test {
|
||||
namespace unnecessary_copy_tests
|
||||
{
|
||||
int count_copies::count;
|
||||
|
||||
template <class T>
|
||||
@@ -45,14 +48,13 @@ namespace test {
|
||||
x.insert(a);
|
||||
BOOST_TEST(count_copies::count == 2);
|
||||
}
|
||||
|
||||
boost::unordered_set<count_copies>* set;
|
||||
boost::unordered_multiset<count_copies>* multiset;
|
||||
boost::unordered_map<int, count_copies>* map;
|
||||
boost::unordered_multimap<int, count_copies>* multimap;
|
||||
|
||||
UNORDERED_TEST(unnecessary_copy_test, ((set)(multiset)(map)(multimap)))
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
test::unnecessary_copy_test((boost::unordered_set<test::count_copies>*) 0);
|
||||
test::unnecessary_copy_test((boost::unordered_multiset<test::count_copies>*) 0);
|
||||
test::unnecessary_copy_test((boost::unordered_map<int, test::count_copies>*) 0);
|
||||
test::unnecessary_copy_test((boost::unordered_multimap<int, test::count_copies>*) 0);
|
||||
|
||||
return boost::report_errors();
|
||||
}
|
||||
RUN_TESTS()
|
||||
|
||||
Reference in New Issue
Block a user