]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/boost/libs/unordered/test/exception/rehash_exception_tests.cpp
update sources to v12.2.3
[ceph.git] / ceph / src / boost / libs / unordered / test / exception / rehash_exception_tests.cpp
index 0163bfeccb25d7d54cdec56643efaee50be55ef4..a927d13686fea1bc0d20ee0fee1124a6499a5afa 100644 (file)
 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
 #include "./containers.hpp"
-#include <string>
-#include "../helpers/random_values.hpp"
+
 #include "../helpers/invariants.hpp"
+#include "../helpers/random_values.hpp"
 #include "../helpers/strong.hpp"
-
-#include <iostream>
+#include "../helpers/tracker.hpp"
+#include <string>
 
 test::seed_t initialize_seed(3298597);
 
-template <class T>
-struct rehash_test_base : public test::exception_base
+template <class T> struct rehash_test_base : public test::exception_base
 {
-    test::random_values<T> values;
-    unsigned int n;
-    rehash_test_base(unsigned int count = 100, unsigned int n_ = 0)
-        : values(count), n(n_)
-    {}
-
-    typedef T data_type;
-    typedef test::strong<T> strong_type;
-
-    data_type init() const {
-        T x(values.begin(), values.end(), n);
-        return x;
-    }
-
-    void check BOOST_PREVENT_MACRO_SUBSTITUTION(T const& x,
-        strong_type const& strong) const
-    {
-        std::string scope(test::scope);
-
-        if(scope.find("hash::operator()") == std::string::npos &&
-                scope.find("equal_to::operator()") == std::string::npos &&
-                scope != "operator==(object, object)")
-            strong.test(x);
-
-        test::check_equivalent_keys(x);
-    }
+  test::random_values<T> values;
+  unsigned int n;
+  rehash_test_base(unsigned int count = 100, unsigned int n_ = 0)
+      : values(count, test::limited_range), n(n_)
+  {
+  }
+
+  typedef T data_type;
+  typedef test::strong<T> strong_type;
+
+  data_type init() const
+  {
+    T x(values.begin(), values.end(), n);
+    return x;
+  }
+
+  void check BOOST_PREVENT_MACRO_SUBSTITUTION(
+    T const& x, strong_type const& strong) const
+  {
+    std::string scope(test::scope);
+
+    if (scope.find("hash::operator()") == std::string::npos &&
+        scope.find("equal_to::operator()") == std::string::npos &&
+        scope != "operator==(object, object)")
+      strong.test(x);
+
+    test::check_equivalent_keys(x);
+  }
 };
 
-template <class T>
-struct rehash_test0 : rehash_test_base<T>
+template <class T> struct rehash_test0 : rehash_test_base<T>
 {
-    rehash_test0() : rehash_test_base<T>(0) {}
-    void run(T& x) const { x.rehash(0); }
+  rehash_test0() : rehash_test_base<T>(0) {}
+  void run(T& x) const
+  {
+    x.rehash(0);
+
+    DISABLE_EXCEPTIONS;
+    test::check_container(x, this->values);
+    test::check_equivalent_keys(x);
+  }
 };
 
-template <class T>
-struct rehash_test1 : rehash_test_base<T>
+template <class T> struct rehash_test1 : rehash_test_base<T>
 {
-    rehash_test1() : rehash_test_base<T>(0) {}
-    void run(T& x) const { x.rehash(200); }
+  rehash_test1() : rehash_test_base<T>(0) {}
+  void run(T& x) const
+  {
+    x.rehash(200);
+
+    DISABLE_EXCEPTIONS;
+    test::check_container(x, this->values);
+    test::check_equivalent_keys(x);
+  }
 };
 
-template <class T>
-struct rehash_test2 : rehash_test_base<T>
+template <class T> struct rehash_test2 : rehash_test_base<T>
 {
-    rehash_test2() : rehash_test_base<T>(0, 200) {}
-    void run(T& x) const { x.rehash(0); }
+  rehash_test2() : rehash_test_base<T>(0, 200) {}
+  void run(T& x) const
+  {
+    x.rehash(0);
+
+    DISABLE_EXCEPTIONS;
+    test::check_container(x, this->values);
+    test::check_equivalent_keys(x);
+  }
 };
 
-template <class T>
-struct rehash_test3 : rehash_test_base<T>
+template <class T> struct rehash_test3 : rehash_test_base<T>
 {
-    rehash_test3() : rehash_test_base<T>(10, 0) {}
-    void run(T& x) const { x.rehash(200); }
+  rehash_test3() : rehash_test_base<T>(10, 0) {}
+  void run(T& x) const
+  {
+    x.rehash(200);
+
+    DISABLE_EXCEPTIONS;
+    test::check_container(x, this->values);
+    test::check_equivalent_keys(x);
+  }
 };
 
-template <class T>
-struct rehash_test4 : rehash_test_base<T>
+template <class T> struct rehash_test4 : rehash_test_base<T>
 {
-    rehash_test4() : rehash_test_base<T>(10, 200) {}
-    void run(T& x) const { x.rehash(0); }
+  rehash_test4() : rehash_test_base<T>(10, 200) {}
+  void run(T& x) const
+  {
+    x.rehash(0);
+
+    DISABLE_EXCEPTIONS;
+    test::check_container(x, this->values);
+    test::check_equivalent_keys(x);
+  }
 };
 
+template <class T> struct rehash_test5 : rehash_test_base<T>
+{
+  rehash_test5() : rehash_test_base<T>(200, 10) {}
+  void run(T& x) const
+  {
+    x.rehash(0);
+
+    DISABLE_EXCEPTIONS;
+    test::check_container(x, this->values);
+    test::check_equivalent_keys(x);
+  }
+};
+
+// clang-format off
 EXCEPTION_TESTS(
-    (rehash_test0)(rehash_test1)(rehash_test2)(rehash_test3)(rehash_test4),
-    CONTAINER_SEQ)
+  (rehash_test0)(rehash_test1)(rehash_test2)(rehash_test3)(rehash_test4)
+  (rehash_test5),
+  CONTAINER_SEQ)
+// clang-format on
+
 RUN_TESTS()