[SkipList] Added random-lvel generators for max height 32/24/16
[libcds.git] / test / unit / intrusive-set / intrusive_skiplist_dhp.cpp
index 92d8320a6f1f74be7c8c4427775dfeb6db18fa11..3b2adf9f0fc8db5e7940f4dd1fbf4b6ddbd891ee 100644 (file)
@@ -115,14 +115,14 @@ namespace {
         test( s );
     }
 
-    TEST_F( IntrusiveSkipListSet_DHP, base_xorshift )
+    TEST_F( IntrusiveSkipListSet_DHP, base_xorshift32 )
     {
         struct traits : public ci::skip_list::traits
         {
             typedef ci::skip_list::base_hook< ci::opt::gc< gc_type >> hook;
             typedef mock_disposer disposer;
             typedef cmp<base_item_type> compare;
-            typedef ci::skip_list::xorshift random_level_generator;
+            typedef ci::skip_list::xorshift32 random_level_generator;
         };
 
         typedef ci::SkipListSet< gc_type, base_item_type, traits > set_type;
@@ -131,6 +131,85 @@ namespace {
         test( s );
     }
 
+    TEST_F( IntrusiveSkipListSet_DHP, base_xorshift24 )
+    {
+        struct traits: public ci::skip_list::traits
+        {
+            typedef ci::skip_list::base_hook< ci::opt::gc< gc_type >> hook;
+            typedef mock_disposer disposer;
+            typedef cmp<base_item_type> compare;
+            typedef ci::skip_list::xorshift24 random_level_generator;
+        };
+
+        typedef ci::SkipListSet< gc_type, base_item_type, traits > set_type;
+
+        set_type s;
+        test( s );
+    }
+
+    TEST_F( IntrusiveSkipListSet_DHP, base_xorshift16 )
+    {
+        struct traits: public ci::skip_list::traits
+        {
+            typedef ci::skip_list::base_hook< ci::opt::gc< gc_type >> hook;
+            typedef mock_disposer disposer;
+            typedef cmp<base_item_type> compare;
+            typedef ci::skip_list::xorshift16 random_level_generator;
+        };
+
+        typedef ci::SkipListSet< gc_type, base_item_type, traits > set_type;
+
+        set_type s;
+        test( s );
+    }
+
+    TEST_F( IntrusiveSkipListSet_DHP, base_turbo32 )
+    {
+        struct traits: public ci::skip_list::traits
+        {
+            typedef ci::skip_list::base_hook< ci::opt::gc< gc_type >> hook;
+            typedef mock_disposer disposer;
+            typedef cmp<base_item_type> compare;
+            typedef ci::skip_list::turbo32 random_level_generator;
+        };
+
+        typedef ci::SkipListSet< gc_type, base_item_type, traits > set_type;
+
+        set_type s;
+        test( s );
+    }
+
+    TEST_F( IntrusiveSkipListSet_DHP, base_turbo24 )
+    {
+        struct traits: public ci::skip_list::traits
+        {
+            typedef ci::skip_list::base_hook< ci::opt::gc< gc_type >> hook;
+            typedef mock_disposer disposer;
+            typedef cmp<base_item_type> compare;
+            typedef ci::skip_list::turbo24 random_level_generator;
+        };
+
+        typedef ci::SkipListSet< gc_type, base_item_type, traits > set_type;
+
+        set_type s;
+        test( s );
+    }
+
+    TEST_F( IntrusiveSkipListSet_DHP, base_turbo16 )
+    {
+        struct traits: public ci::skip_list::traits
+        {
+            typedef ci::skip_list::base_hook< ci::opt::gc< gc_type >> hook;
+            typedef mock_disposer disposer;
+            typedef cmp<base_item_type> compare;
+            typedef ci::skip_list::turbo16 random_level_generator;
+        };
+
+        typedef ci::SkipListSet< gc_type, base_item_type, traits > set_type;
+
+        set_type s;
+        test( s );
+    }
 
     TEST_F( IntrusiveSkipListSet_DHP, member_cmp )
     {
@@ -181,14 +260,94 @@ namespace {
         test( s );
     }
 
-    TEST_F( IntrusiveSkipListSet_DHP, member_xorshift )
+    TEST_F( IntrusiveSkipListSet_DHP, member_xorshift32 )
     {
         struct traits : public ci::skip_list::traits
         {
             typedef ci::skip_list::member_hook< offsetof( member_item_type, hMember ), ci::opt::gc< gc_type >> hook;
             typedef mock_disposer disposer;
             typedef cmp<member_item_type> compare;
-            typedef ci::skip_list::xorshift random_level_generator;
+            typedef ci::skip_list::xorshift32 random_level_generator;
+        };
+
+        typedef ci::SkipListSet< gc_type, member_item_type, traits > set_type;
+
+        set_type s;
+        test( s );
+    }
+
+    TEST_F( IntrusiveSkipListSet_DHP, member_xorshift24 )
+    {
+        struct traits: public ci::skip_list::traits
+        {
+            typedef ci::skip_list::member_hook< offsetof( member_item_type, hMember ), ci::opt::gc< gc_type >> hook;
+            typedef mock_disposer disposer;
+            typedef cmp<member_item_type> compare;
+            typedef ci::skip_list::xorshift24 random_level_generator;
+        };
+
+        typedef ci::SkipListSet< gc_type, member_item_type, traits > set_type;
+
+        set_type s;
+        test( s );
+    }
+
+    TEST_F( IntrusiveSkipListSet_DHP, member_xorshift16 )
+    {
+        struct traits: public ci::skip_list::traits
+        {
+            typedef ci::skip_list::member_hook< offsetof( member_item_type, hMember ), ci::opt::gc< gc_type >> hook;
+            typedef mock_disposer disposer;
+            typedef cmp<member_item_type> compare;
+            typedef ci::skip_list::xorshift16 random_level_generator;
+        };
+
+        typedef ci::SkipListSet< gc_type, member_item_type, traits > set_type;
+
+        set_type s;
+        test( s );
+    }
+
+    TEST_F( IntrusiveSkipListSet_DHP, member_turbo32 )
+    {
+        struct traits: public ci::skip_list::traits
+        {
+            typedef ci::skip_list::member_hook< offsetof( member_item_type, hMember ), ci::opt::gc< gc_type >> hook;
+            typedef mock_disposer disposer;
+            typedef cmp<member_item_type> compare;
+            typedef ci::skip_list::turbo32 random_level_generator;
+        };
+
+        typedef ci::SkipListSet< gc_type, member_item_type, traits > set_type;
+
+        set_type s;
+        test( s );
+    }
+
+    TEST_F( IntrusiveSkipListSet_DHP, member_turbo24 )
+    {
+        struct traits: public ci::skip_list::traits
+        {
+            typedef ci::skip_list::member_hook< offsetof( member_item_type, hMember ), ci::opt::gc< gc_type >> hook;
+            typedef mock_disposer disposer;
+            typedef cmp<member_item_type> compare;
+            typedef ci::skip_list::turbo24 random_level_generator;
+        };
+
+        typedef ci::SkipListSet< gc_type, member_item_type, traits > set_type;
+
+        set_type s;
+        test( s );
+    }
+
+    TEST_F( IntrusiveSkipListSet_DHP, member_turbo16 )
+    {
+        struct traits: public ci::skip_list::traits
+        {
+            typedef ci::skip_list::member_hook< offsetof( member_item_type, hMember ), ci::opt::gc< gc_type >> hook;
+            typedef mock_disposer disposer;
+            typedef cmp<member_item_type> compare;
+            typedef ci::skip_list::turbo16 random_level_generator;
         };
 
         typedef ci::SkipListSet< gc_type, member_item_type, traits > set_type;