- UNORDERED_AUTO_TEST(equality_group_size_test)
- {
- UNORDERED_EQUALITY_MULTISET_TEST(
- (10)(20)(20), !=, (10)(10)(20))
- UNORDERED_EQUALITY_MULTIMAP_TEST(
- ((10)(1))((20)(1))((20)(1)), !=,
- ((10)(1))((20)(1))((10)(1)))
- UNORDERED_EQUALITY_MULTIMAP_TEST(
- ((20)(1))((10)(1))((10)(1)), ==,
- ((10)(1))((20)(1))((10)(1)))
- }
-
- UNORDERED_AUTO_TEST(equality_map_value_test)
- {
- UNORDERED_EQUALITY_MAP_TEST(
- ((1)(1)), !=, ((1)(2)))
- UNORDERED_EQUALITY_MAP_TEST(
- ((1)(1)), ==, ((1)(1)))
- UNORDERED_EQUALITY_MULTIMAP_TEST(
- ((1)(1)), !=, ((1)(2)))
- UNORDERED_EQUALITY_MULTIMAP_TEST(
- ((1)(1))((1)(1)), !=, ((1)(1))((1)(2)))
- UNORDERED_EQUALITY_MULTIMAP_TEST(
- ((1)(2))((1)(1)), ==, ((1)(1))((1)(2)))
- UNORDERED_EQUALITY_MULTIMAP_TEST(
- ((1)(2))((1)(1)), !=, ((1)(1))((1)(3)))
- }
-
- UNORDERED_AUTO_TEST(equality_predicate_test)
- {
- UNORDERED_EQUALITY_SET_TEST(
- (1), !=, (1001))
- UNORDERED_EQUALITY_MAP_TEST(
- ((1)(2))((1001)(1)), !=, ((1001)(2))((1)(1)))
- }
-
- UNORDERED_AUTO_TEST(equality_multiple_group_test)
- {
- UNORDERED_EQUALITY_MULTISET_TEST(
- (1)(1)(1)(1001)(2001)(2001)(2)(1002)(3)(1003)(2003), ==,
- (3)(1003)(2003)(1002)(2)(2001)(2001)(1)(1001)(1)(1)
- );
- }
-
- // Test that equality still works when the two containers have
- // different hash functions but the same equality predicate.
-
- UNORDERED_AUTO_TEST(equality_different_hash_test)
- {
- typedef boost::unordered_set<int, mod_compare, mod_compare> set;
- set set1(0, mod_compare(false), mod_compare(false));
- set set2(0, mod_compare(true), mod_compare(true));
- BOOST_TEST(set1 == set2);
- set1.insert(1); set2.insert(2);
- BOOST_TEST(set1 != set2);
- set1.insert(2); set2.insert(1);
- BOOST_TEST(set1 == set2);
- set1.insert(10); set2.insert(20);
- BOOST_TEST(set1 != set2);
- set1.insert(20); set2.insert(10);
- BOOST_TEST(set1 == set2);
- }
+#define UNORDERED_SET_INSERT(r, set, item) set.insert(item);
+#define UNORDERED_MAP_INSERT(r, map, item) \
+ map.insert(std::pair<int const, int> BOOST_PP_SEQ_TO_TUPLE(item));
+
+ UNORDERED_AUTO_TEST (equality_size_tests) {
+ boost::unordered_set<int> x1, x2;
+ BOOST_TEST(x1 == x2);
+ BOOST_TEST(!(x1 != x2));
+
+ x1.insert(1);
+ BOOST_TEST(x1 != x2);
+ BOOST_TEST(!(x1 == x2));
+ BOOST_TEST(x2 != x1);
+ BOOST_TEST(!(x2 == x1));
+
+ x2.insert(1);
+ BOOST_TEST(x1 == x2);
+ BOOST_TEST(!(x1 != x2));
+
+ x2.insert(2);
+ BOOST_TEST(x1 != x2);
+ BOOST_TEST(!(x1 == x2));
+ BOOST_TEST(x2 != x1);
+ BOOST_TEST(!(x2 == x1));
+ }
+
+ UNORDERED_AUTO_TEST (equality_key_value_tests) {
+ UNORDERED_EQUALITY_MULTISET_TEST((1), !=, (2));
+ UNORDERED_EQUALITY_SET_TEST((2), ==, (2));
+ UNORDERED_EQUALITY_MAP_TEST(((1)(1))((2)(1)), !=, ((1)(1))((3)(1)));
+ }
+
+ UNORDERED_AUTO_TEST (equality_collision_test) {
+ UNORDERED_EQUALITY_MULTISET_TEST((1), !=, (501));
+ UNORDERED_EQUALITY_MULTISET_TEST((1)(251), !=, (1)(501));
+ UNORDERED_EQUALITY_MULTIMAP_TEST(
+ ((251)(1))((1)(1)), !=, ((501)(1))((1)(1)));
+ UNORDERED_EQUALITY_MULTISET_TEST((1)(501), ==, (1)(501));
+ UNORDERED_EQUALITY_SET_TEST((1)(501), ==, (501)(1));
+ }
+
+ UNORDERED_AUTO_TEST (equality_group_size_test) {
+ UNORDERED_EQUALITY_MULTISET_TEST((10)(20)(20), !=, (10)(10)(20));
+ UNORDERED_EQUALITY_MULTIMAP_TEST(
+ ((10)(1))((20)(1))((20)(1)), !=, ((10)(1))((20)(1))((10)(1)));
+ UNORDERED_EQUALITY_MULTIMAP_TEST(
+ ((20)(1))((10)(1))((10)(1)), ==, ((10)(1))((20)(1))((10)(1)));
+ }
+
+ UNORDERED_AUTO_TEST (equality_map_value_test) {
+ UNORDERED_EQUALITY_MAP_TEST(((1)(1)), !=, ((1)(2)));
+ UNORDERED_EQUALITY_MAP_TEST(((1)(1)), ==, ((1)(1)));
+ UNORDERED_EQUALITY_MULTIMAP_TEST(((1)(1)), !=, ((1)(2)));
+ UNORDERED_EQUALITY_MULTIMAP_TEST(((1)(1))((1)(1)), !=, ((1)(1))((1)(2)));
+ UNORDERED_EQUALITY_MULTIMAP_TEST(((1)(2))((1)(1)), ==, ((1)(1))((1)(2)));
+ UNORDERED_EQUALITY_MULTIMAP_TEST(((1)(2))((1)(1)), !=, ((1)(1))((1)(3)));
+ }
+
+ UNORDERED_AUTO_TEST (equality_predicate_test) {
+ UNORDERED_EQUALITY_SET_TEST((1), !=, (1001));
+ UNORDERED_EQUALITY_MAP_TEST(((1)(2))((1001)(1)), !=, ((1001)(2))((1)(1)));
+ }
+
+ UNORDERED_AUTO_TEST (equality_multiple_group_test) {
+ UNORDERED_EQUALITY_MULTISET_TEST(
+ (1)(1)(1)(1001)(2001)(2001)(2)(1002)(3)(1003)(2003), ==,
+ (3)(1003)(2003)(1002)(2)(2001)(2001)(1)(1001)(1)(1));
+ }
+
+ // Test that equality still works when the two containers have
+ // different hash functions but the same equality predicate.
+
+ UNORDERED_AUTO_TEST (equality_different_hash_test) {
+ typedef boost::unordered_set<int, mod_compare, mod_compare> set;
+ set set1(0, mod_compare(false), mod_compare(false));
+ set set2(0, mod_compare(true), mod_compare(true));
+ BOOST_TEST(set1 == set2);
+ set1.insert(1);
+ set2.insert(2);
+ BOOST_TEST(set1 != set2);
+ set1.insert(2);
+ set2.insert(1);
+ BOOST_TEST(set1 == set2);
+ set1.insert(10);
+ set2.insert(20);
+ BOOST_TEST(set1 != set2);
+ set1.insert(20);
+ set2.insert(10);
+ BOOST_TEST(set1 == set2);
+ }