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:
Daniel James
2008-03-24 17:03:15 +00:00
parent 535a41a2f5
commit e07e7e889d
29 changed files with 398 additions and 323 deletions
+19 -25
View File
@@ -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()
+8 -4
View File
@@ -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()
+11 -8
View File
@@ -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()
+5 -13
View File
@@ -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()
+5 -11
View File
@@ -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()
+22 -45
View File
@@ -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()
+19 -20
View File
@@ -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()
+4 -10
View File
@@ -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 -17
View File
@@ -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()
+16 -24
View File
@@ -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()
+16 -16
View File
@@ -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()
+4 -10
View File
@@ -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()
+1 -1
View File
@@ -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"
+17 -12
View File
@@ -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
+14 -7
View File
@@ -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()
+4 -4
View File
@@ -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()
+15 -16
View File
@@ -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()
+18 -16
View File
@@ -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()