]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/boost/libs/heap/test/common_heap_tests.hpp
import new upstream nautilus stable release 14.2.8
[ceph.git] / ceph / src / boost / libs / heap / test / common_heap_tests.hpp
index de945205255b653b9157103a97d740f7fee5e586..4454c2a88423cad60688c10546ed82bbcf1fcc91 100644 (file)
 
 #include <boost/heap/heap_concepts.hpp>
 
+#ifdef BOOST_NO_CXX98_RANDOM_SHUFFLE
+#include <cstdlib>
+#include <iterator>
+
+template<class RandomIt>
+void random_shuffle(RandomIt first, RandomIt last)
+{
+    typedef typename std::iterator_traits<RandomIt>::difference_type difference_type;
+    difference_type n = last - first;
+    for (difference_type i = n-1; i > 0; --i) {
+        difference_type j = std::rand() % (i + 1);
+        if (j != i) {
+                  using std::swap;  
+           swap(first[i], first[j]);
+        }
+    }
+}
+
+#else
+       
+using std::random_shuffle;
+
+#endif
 
 typedef boost::default_constructible_archetype<
         boost::less_than_comparable_archetype<
@@ -132,7 +155,7 @@ void pri_queue_test_random_push(void)
         test_data data = make_test_data(i);
 
         test_data shuffled (data);
-        std::random_shuffle(shuffled.begin(), shuffled.end());
+        random_shuffle(shuffled.begin(), shuffled.end());
 
         fill_q(q, shuffled);
 
@@ -211,7 +234,7 @@ void pri_queue_test_swap(void)
         pri_queue q;
         test_data data = make_test_data(i);
         test_data shuffled (data);
-        std::random_shuffle(shuffled.begin(), shuffled.end());
+        random_shuffle(shuffled.begin(), shuffled.end());
         fill_q(q, shuffled);
 
         pri_queue r;
@@ -229,7 +252,7 @@ void pri_queue_test_iterators(void)
     for (int i = 0; i != test_size; ++i) {
         test_data data = make_test_data(test_size);
         test_data shuffled (data);
-        std::random_shuffle(shuffled.begin(), shuffled.end());
+        random_shuffle(shuffled.begin(), shuffled.end());
         pri_queue q;
         BOOST_REQUIRE(q.begin() == q.end());
         fill_q(q, shuffled);
@@ -258,7 +281,7 @@ void pri_queue_test_ordered_iterators(void)
     for (int i = 0; i != test_size; ++i) {
         test_data data = make_test_data(i);
         test_data shuffled (data);
-        std::random_shuffle(shuffled.begin(), shuffled.end());
+        random_shuffle(shuffled.begin(), shuffled.end());
         pri_queue q;
         BOOST_REQUIRE(q.ordered_begin() == q.ordered_end());
         fill_q(q, shuffled);