]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/unordered/test/exception/rehash_exception_tests.cpp
2 // Copyright 2006-2009 Daniel James.
3 // Distributed under the Boost Software License, Version 1.0. (See accompanying
4 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6 #include "./containers.hpp"
8 #include "../helpers/invariants.hpp"
9 #include "../helpers/random_values.hpp"
10 #include "../helpers/strong.hpp"
11 #include "../helpers/tracker.hpp"
14 test::seed_t
initialize_seed(3298597);
16 template <class T
> struct rehash_test_base
: public test::exception_base
18 test::random_values
<T
> values
;
20 rehash_test_base(unsigned int count
= 100, unsigned int n_
= 0)
21 : values(count
, test::limited_range
), n(n_
)
26 typedef test::strong
<T
> strong_type
;
28 data_type
init() const
30 T
x(values
.begin(), values
.end(), n
);
34 void check
BOOST_PREVENT_MACRO_SUBSTITUTION(
35 T
const& x
, strong_type
const& strong
) const
37 std::string
scope(test::scope
);
39 if (scope
.find("hash::operator()") == std::string::npos
&&
40 scope
.find("equal_to::operator()") == std::string::npos
&&
41 scope
!= "operator==(object, object)")
44 test::check_equivalent_keys(x
);
48 template <class T
> struct rehash_test0
: rehash_test_base
<T
>
50 rehash_test0() : rehash_test_base
<T
>(0) {}
56 test::check_container(x
, this->values
);
57 test::check_equivalent_keys(x
);
61 template <class T
> struct rehash_test1
: rehash_test_base
<T
>
63 rehash_test1() : rehash_test_base
<T
>(0) {}
69 test::check_container(x
, this->values
);
70 test::check_equivalent_keys(x
);
74 template <class T
> struct rehash_test2
: rehash_test_base
<T
>
76 rehash_test2() : rehash_test_base
<T
>(0, 200) {}
82 test::check_container(x
, this->values
);
83 test::check_equivalent_keys(x
);
87 template <class T
> struct rehash_test3
: rehash_test_base
<T
>
89 rehash_test3() : rehash_test_base
<T
>(10, 0) {}
95 test::check_container(x
, this->values
);
96 test::check_equivalent_keys(x
);
100 template <class T
> struct rehash_test4
: rehash_test_base
<T
>
102 rehash_test4() : rehash_test_base
<T
>(10, 200) {}
108 test::check_container(x
, this->values
);
109 test::check_equivalent_keys(x
);
113 template <class T
> struct rehash_test5
: rehash_test_base
<T
>
115 rehash_test5() : rehash_test_base
<T
>(200, 10) {}
121 test::check_container(x
, this->values
);
122 test::check_equivalent_keys(x
);
128 (rehash_test0
)(rehash_test1
)(rehash_test2
)(rehash_test3
)(rehash_test4
)