Renamed MultiLevelHashSet/Map to FeldmanHashSet/Map
[libcds.git] / tests / unit / map2 / map_defs.h
index 9adc9845eed39602e4bbd2312f5001abc4d20d97..b44879dea36a6bbc757ab331ca7100a9c2b000a5 100644 (file)
@@ -1,14 +1,24 @@
 //$$CDS-header$$
 
 #define CDSUNIT_DECLARE_StdMap \
-    CDSUNIT_DECLARE_TEST(StdMap_Spin) \
-    CDSUNIT_DECLARE_TEST(StdHashMap_Spin)
-#define CDSUNIT_DEFINE_StdMap(IMPL, C) \
-    TEST_MAP(IMPL, C, StdMap_Spin) \
-    TEST_MAP(IMPL, C, StdHashMap_Spin)
+    TEST_CASE(tag_StdMap, StdMap_Spin) \
+    TEST_CASE(tag_StdMap, StdHashMap_Spin) \
+    TEST_CASE(tag_StdMap, StdMap_Mutex) \
+    TEST_CASE(tag_StdMap, StdHashMap_Mutex)
+
 #define CDSUNIT_TEST_StdMap \
     CPPUNIT_TEST(StdMap_Spin) \
     CPPUNIT_TEST(StdHashMap_Spin) \
+    CPPUNIT_TEST(StdMap_Mutex) \
+    CPPUNIT_TEST(StdHashMap_Mutex) \
+
+#define CDSUNIT_DECLARE_StdMap_NoLock \
+    TEST_CASE(tag_StdMap, StdMap_NoLock) \
+    TEST_CASE(tag_StdMap, StdHashMap_NoLock) \
+
+#define CDSUNIT_TEST_StdMap_NoLock \
+    CPPUNIT_TEST(StdMap_NoLock) \
+    CPPUNIT_TEST(StdHashMap_NoLock) \
 
 
 // **************************************************************************************
@@ -18,7 +28,6 @@
 #undef CDSUNIT_TEST_MichaelMap_RCU_signal
 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
 #   define CDSUNIT_DECLARE_MichaelMap_RCU_signal \
-    TEST_CASE(tag_MichaelHashMap, MichaelMap_RCU_SHB_cmp_stdAlloc) \
     TEST_CASE(tag_MichaelHashMap, MichaelMap_RCU_SHB_cmp_stdAlloc) \
     TEST_CASE(tag_MichaelHashMap, MichaelMap_RCU_SHB_less_michaelAlloc) \
     TEST_CASE(tag_MichaelHashMap, MichaelMap_RCU_SHT_cmp_stdAlloc) \
 
 
 // **************************************************************************************
-// BronsonACLTreeMap
+// BronsonAVLTreeMap
 
 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
 #   define CDSUNIT_DECLARE_BronsonAVLTreeMap_RCU_signal \
-    CDSUNIT_DECLARE_TEST(BronsonAVLTreeMap_rcu_shb_less) \
-    CDSUNIT_DECLARE_TEST(BronsonAVLTreeMap_rcu_sht_less) \
-    CDSUNIT_DECLARE_TEST(BronsonAVLTreeMap_rcu_shb_cmp_stat) \
-    CDSUNIT_DECLARE_TEST(BronsonAVLTreeMap_rcu_sht_cmp_stat) \
-    CDSUNIT_DECLARE_TEST(BronsonAVLTreeMap_rcu_shb_less_pool_simple) \
-    CDSUNIT_DECLARE_TEST(BronsonAVLTreeMap_rcu_sht_less_pool_simple) \
-    CDSUNIT_DECLARE_TEST(BronsonAVLTreeMap_rcu_shb_less_pool_simple_stat) \
-    CDSUNIT_DECLARE_TEST(BronsonAVLTreeMap_rcu_sht_less_pool_simple_stat) \
-    CDSUNIT_DECLARE_TEST(BronsonAVLTreeMap_rcu_shb_less_pool_lazy) \
-    CDSUNIT_DECLARE_TEST(BronsonAVLTreeMap_rcu_sht_less_pool_lazy) \
-    CDSUNIT_DECLARE_TEST(BronsonAVLTreeMap_rcu_shb_less_pool_lazy_stat) \
-    CDSUNIT_DECLARE_TEST(BronsonAVLTreeMap_rcu_sht_less_pool_lazy_stat) \
-    CDSUNIT_DECLARE_TEST(BronsonAVLTreeMap_rcu_shb_less_pool_bounded) \
-    CDSUNIT_DECLARE_TEST(BronsonAVLTreeMap_rcu_sht_less_pool_bounded) \
-    CDSUNIT_DECLARE_TEST(BronsonAVLTreeMap_rcu_shb_less_pool_bounded_stat) \
-    CDSUNIT_DECLARE_TEST(BronsonAVLTreeMap_rcu_sht_less_pool_bounded_stat) \
-
-#   define CDSUNIT_DEFINE_BronsonAVLTreeMap_RCU_signal(IMPL, C) \
-    TEST_MAP_NOLF_EXTRACT(IMPL, C, BronsonAVLTreeMap_rcu_shb_less) \
-    TEST_MAP_NOLF_EXTRACT(IMPL, C, BronsonAVLTreeMap_rcu_sht_less) \
-    TEST_MAP_NOLF_EXTRACT(IMPL, C, BronsonAVLTreeMap_rcu_shb_cmp_stat) \
-    TEST_MAP_NOLF_EXTRACT(IMPL, C, BronsonAVLTreeMap_rcu_sht_cmp_stat) \
-    TEST_MAP_NOLF_EXTRACT(IMPL, C, BronsonAVLTreeMap_rcu_shb_less_pool_simple) \
-    TEST_MAP_NOLF_EXTRACT(IMPL, C, BronsonAVLTreeMap_rcu_sht_less_pool_simple) \
-    TEST_MAP_NOLF_EXTRACT(IMPL, C, BronsonAVLTreeMap_rcu_shb_less_pool_simple_stat) \
-    TEST_MAP_NOLF_EXTRACT(IMPL, C, BronsonAVLTreeMap_rcu_sht_less_pool_simple_stat) \
-    TEST_MAP_NOLF_EXTRACT(IMPL, C, BronsonAVLTreeMap_rcu_shb_less_pool_lazy) \
-    TEST_MAP_NOLF_EXTRACT(IMPL, C, BronsonAVLTreeMap_rcu_sht_less_pool_lazy) \
-    TEST_MAP_NOLF_EXTRACT(IMPL, C, BronsonAVLTreeMap_rcu_shb_less_pool_lazy_stat) \
-    TEST_MAP_NOLF_EXTRACT(IMPL, C, BronsonAVLTreeMap_rcu_sht_less_pool_lazy_stat) \
-    TEST_MAP_NOLF_EXTRACT(IMPL, C, BronsonAVLTreeMap_rcu_shb_less_pool_bounded) \
-    TEST_MAP_NOLF_EXTRACT(IMPL, C, BronsonAVLTreeMap_rcu_sht_less_pool_bounded) \
-    TEST_MAP_NOLF_EXTRACT(IMPL, C, BronsonAVLTreeMap_rcu_shb_less_pool_bounded_stat) \
-    TEST_MAP_NOLF_EXTRACT(IMPL, C, BronsonAVLTreeMap_rcu_sht_less_pool_bounded_stat) \
+    TEST_CASE(tag_BronsonAVLTreeMap, BronsonAVLTreeMap_rcu_shb_less) \
+    TEST_CASE(tag_BronsonAVLTreeMap, BronsonAVLTreeMap_rcu_sht_less) \
+    TEST_CASE(tag_BronsonAVLTreeMap, BronsonAVLTreeMap_rcu_shb_cmp_stat) \
+    TEST_CASE(tag_BronsonAVLTreeMap, BronsonAVLTreeMap_rcu_sht_cmp_stat) \
+    TEST_CASE(tag_BronsonAVLTreeMap, BronsonAVLTreeMap_rcu_shb_less_pool_simple) \
+    TEST_CASE(tag_BronsonAVLTreeMap, BronsonAVLTreeMap_rcu_sht_less_pool_simple) \
+    TEST_CASE(tag_BronsonAVLTreeMap, BronsonAVLTreeMap_rcu_shb_less_pool_simple_stat) \
+    TEST_CASE(tag_BronsonAVLTreeMap, BronsonAVLTreeMap_rcu_sht_less_pool_simple_stat) \
+    TEST_CASE(tag_BronsonAVLTreeMap, BronsonAVLTreeMap_rcu_shb_less_pool_lazy) \
+    TEST_CASE(tag_BronsonAVLTreeMap, BronsonAVLTreeMap_rcu_sht_less_pool_lazy) \
+    TEST_CASE(tag_BronsonAVLTreeMap, BronsonAVLTreeMap_rcu_shb_less_pool_lazy_stat) \
+    TEST_CASE(tag_BronsonAVLTreeMap, BronsonAVLTreeMap_rcu_sht_less_pool_lazy_stat) \
+    TEST_CASE(tag_BronsonAVLTreeMap, BronsonAVLTreeMap_rcu_shb_less_pool_bounded) \
+    TEST_CASE(tag_BronsonAVLTreeMap, BronsonAVLTreeMap_rcu_sht_less_pool_bounded) \
+    TEST_CASE(tag_BronsonAVLTreeMap, BronsonAVLTreeMap_rcu_shb_less_pool_bounded_stat) \
+    TEST_CASE(tag_BronsonAVLTreeMap, BronsonAVLTreeMap_rcu_sht_less_pool_bounded_stat) \
 
 #   define CDSUNIT_TEST_BronsonAVLTreeMap_RCU_signal \
     CPPUNIT_TEST(BronsonAVLTreeMap_rcu_shb_less) \
 
 #else
 #   define CDSUNIT_DECLARE_BronsonAVLTreeMap_RCU_signal
-#   define CDSUNIT_DEFINE_BronsonAVLTreeMap_RCU_signal(IMPL, C)
 #   define CDSUNIT_TEST_BronsonAVLTreeMap_RCU_signal
 #endif
 
 #define CDSUNIT_DECLARE_BronsonAVLTreeMap \
-    CDSUNIT_DECLARE_TEST(BronsonAVLTreeMap_rcu_gpi_less)\
-    CDSUNIT_DECLARE_TEST(BronsonAVLTreeMap_rcu_gpb_less)\
-    CDSUNIT_DECLARE_TEST(BronsonAVLTreeMap_rcu_gpt_less)\
-    CDSUNIT_DECLARE_TEST(BronsonAVLTreeMap_rcu_gpi_cmp_stat)\
-    CDSUNIT_DECLARE_TEST(BronsonAVLTreeMap_rcu_gpb_cmp_stat)\
-    CDSUNIT_DECLARE_TEST(BronsonAVLTreeMap_rcu_gpt_cmp_stat)\
-    CDSUNIT_DECLARE_TEST(BronsonAVLTreeMap_rcu_gpi_less_pool_simple)\
-    CDSUNIT_DECLARE_TEST(BronsonAVLTreeMap_rcu_gpb_less_pool_simple)\
-    CDSUNIT_DECLARE_TEST(BronsonAVLTreeMap_rcu_gpt_less_pool_simple)\
-    CDSUNIT_DECLARE_TEST(BronsonAVLTreeMap_rcu_gpi_less_pool_simple_stat)\
-    CDSUNIT_DECLARE_TEST(BronsonAVLTreeMap_rcu_gpb_less_pool_simple_stat)\
-    CDSUNIT_DECLARE_TEST(BronsonAVLTreeMap_rcu_gpt_less_pool_simple_stat)\
-    CDSUNIT_DECLARE_TEST(BronsonAVLTreeMap_rcu_gpi_less_pool_lazy)\
-    CDSUNIT_DECLARE_TEST(BronsonAVLTreeMap_rcu_gpb_less_pool_lazy)\
-    CDSUNIT_DECLARE_TEST(BronsonAVLTreeMap_rcu_gpt_less_pool_lazy)\
-    CDSUNIT_DECLARE_TEST(BronsonAVLTreeMap_rcu_gpi_less_pool_lazy_stat)\
-    CDSUNIT_DECLARE_TEST(BronsonAVLTreeMap_rcu_gpb_less_pool_lazy_stat)\
-    CDSUNIT_DECLARE_TEST(BronsonAVLTreeMap_rcu_gpt_less_pool_lazy_stat)\
-    CDSUNIT_DECLARE_TEST(BronsonAVLTreeMap_rcu_gpi_less_pool_bounded)\
-    CDSUNIT_DECLARE_TEST(BronsonAVLTreeMap_rcu_gpb_less_pool_bounded)\
-    CDSUNIT_DECLARE_TEST(BronsonAVLTreeMap_rcu_gpt_less_pool_bounded)\
-    CDSUNIT_DECLARE_TEST(BronsonAVLTreeMap_rcu_gpi_less_pool_bounded_stat)\
-    CDSUNIT_DECLARE_TEST(BronsonAVLTreeMap_rcu_gpb_less_pool_bounded_stat)\
-    CDSUNIT_DECLARE_TEST(BronsonAVLTreeMap_rcu_gpt_less_pool_bounded_stat)\
+    TEST_CASE(tag_BronsonAVLTreeMap, BronsonAVLTreeMap_rcu_gpi_less)\
+    TEST_CASE(tag_BronsonAVLTreeMap, BronsonAVLTreeMap_rcu_gpb_less)\
+    TEST_CASE(tag_BronsonAVLTreeMap, BronsonAVLTreeMap_rcu_gpt_less)\
+    TEST_CASE(tag_BronsonAVLTreeMap, BronsonAVLTreeMap_rcu_gpi_cmp_stat)\
+    TEST_CASE(tag_BronsonAVLTreeMap, BronsonAVLTreeMap_rcu_gpb_cmp_stat)\
+    TEST_CASE(tag_BronsonAVLTreeMap, BronsonAVLTreeMap_rcu_gpt_cmp_stat)\
+    TEST_CASE(tag_BronsonAVLTreeMap, BronsonAVLTreeMap_rcu_gpi_less_pool_simple)\
+    TEST_CASE(tag_BronsonAVLTreeMap, BronsonAVLTreeMap_rcu_gpb_less_pool_simple)\
+    TEST_CASE(tag_BronsonAVLTreeMap, BronsonAVLTreeMap_rcu_gpt_less_pool_simple)\
+    TEST_CASE(tag_BronsonAVLTreeMap, BronsonAVLTreeMap_rcu_gpi_less_pool_simple_stat)\
+    TEST_CASE(tag_BronsonAVLTreeMap, BronsonAVLTreeMap_rcu_gpb_less_pool_simple_stat)\
+    TEST_CASE(tag_BronsonAVLTreeMap, BronsonAVLTreeMap_rcu_gpt_less_pool_simple_stat)\
+    TEST_CASE(tag_BronsonAVLTreeMap, BronsonAVLTreeMap_rcu_gpi_less_pool_lazy)\
+    TEST_CASE(tag_BronsonAVLTreeMap, BronsonAVLTreeMap_rcu_gpb_less_pool_lazy)\
+    TEST_CASE(tag_BronsonAVLTreeMap, BronsonAVLTreeMap_rcu_gpt_less_pool_lazy)\
+    TEST_CASE(tag_BronsonAVLTreeMap, BronsonAVLTreeMap_rcu_gpi_less_pool_lazy_stat)\
+    TEST_CASE(tag_BronsonAVLTreeMap, BronsonAVLTreeMap_rcu_gpb_less_pool_lazy_stat)\
+    TEST_CASE(tag_BronsonAVLTreeMap, BronsonAVLTreeMap_rcu_gpt_less_pool_lazy_stat)\
+    TEST_CASE(tag_BronsonAVLTreeMap, BronsonAVLTreeMap_rcu_gpi_less_pool_bounded)\
+    TEST_CASE(tag_BronsonAVLTreeMap, BronsonAVLTreeMap_rcu_gpb_less_pool_bounded)\
+    TEST_CASE(tag_BronsonAVLTreeMap, BronsonAVLTreeMap_rcu_gpt_less_pool_bounded)\
+    TEST_CASE(tag_BronsonAVLTreeMap, BronsonAVLTreeMap_rcu_gpi_less_pool_bounded_stat)\
+    TEST_CASE(tag_BronsonAVLTreeMap, BronsonAVLTreeMap_rcu_gpb_less_pool_bounded_stat)\
+    TEST_CASE(tag_BronsonAVLTreeMap, BronsonAVLTreeMap_rcu_gpt_less_pool_bounded_stat)\
     CDSUNIT_DECLARE_BronsonAVLTreeMap_RCU_signal
 
-#define CDSUNIT_DEFINE_BronsonAVLTreeMap( IMPL, C ) \
-    TEST_MAP_NOLF_EXTRACT(IMPL, C, BronsonAVLTreeMap_rcu_gpi_less)\
-    TEST_MAP_NOLF_EXTRACT(IMPL, C, BronsonAVLTreeMap_rcu_gpb_less)\
-    TEST_MAP_NOLF_EXTRACT(IMPL, C, BronsonAVLTreeMap_rcu_gpt_less)\
-    TEST_MAP_NOLF_EXTRACT(IMPL, C, BronsonAVLTreeMap_rcu_gpi_cmp_stat)\
-    TEST_MAP_NOLF_EXTRACT(IMPL, C, BronsonAVLTreeMap_rcu_gpb_cmp_stat)\
-    TEST_MAP_NOLF_EXTRACT(IMPL, C, BronsonAVLTreeMap_rcu_gpt_cmp_stat)\
-    TEST_MAP_NOLF_EXTRACT(IMPL, C, BronsonAVLTreeMap_rcu_gpi_less_pool_simple)\
-    TEST_MAP_NOLF_EXTRACT(IMPL, C, BronsonAVLTreeMap_rcu_gpb_less_pool_simple)\
-    TEST_MAP_NOLF_EXTRACT(IMPL, C, BronsonAVLTreeMap_rcu_gpt_less_pool_simple)\
-    TEST_MAP_NOLF_EXTRACT(IMPL, C, BronsonAVLTreeMap_rcu_gpi_less_pool_simple_stat)\
-    TEST_MAP_NOLF_EXTRACT(IMPL, C, BronsonAVLTreeMap_rcu_gpb_less_pool_simple_stat)\
-    TEST_MAP_NOLF_EXTRACT(IMPL, C, BronsonAVLTreeMap_rcu_gpt_less_pool_simple_stat)\
-    TEST_MAP_NOLF_EXTRACT(IMPL, C, BronsonAVLTreeMap_rcu_gpi_less_pool_lazy)\
-    TEST_MAP_NOLF_EXTRACT(IMPL, C, BronsonAVLTreeMap_rcu_gpb_less_pool_lazy)\
-    TEST_MAP_NOLF_EXTRACT(IMPL, C, BronsonAVLTreeMap_rcu_gpt_less_pool_lazy)\
-    TEST_MAP_NOLF_EXTRACT(IMPL, C, BronsonAVLTreeMap_rcu_gpi_less_pool_lazy_stat)\
-    TEST_MAP_NOLF_EXTRACT(IMPL, C, BronsonAVLTreeMap_rcu_gpb_less_pool_lazy_stat)\
-    TEST_MAP_NOLF_EXTRACT(IMPL, C, BronsonAVLTreeMap_rcu_gpt_less_pool_lazy_stat)\
-    TEST_MAP_NOLF_EXTRACT(IMPL, C, BronsonAVLTreeMap_rcu_gpi_less_pool_bounded)\
-    TEST_MAP_NOLF_EXTRACT(IMPL, C, BronsonAVLTreeMap_rcu_gpb_less_pool_bounded)\
-    TEST_MAP_NOLF_EXTRACT(IMPL, C, BronsonAVLTreeMap_rcu_gpt_less_pool_bounded)\
-    TEST_MAP_NOLF_EXTRACT(IMPL, C, BronsonAVLTreeMap_rcu_gpi_less_pool_bounded_stat)\
-    TEST_MAP_NOLF_EXTRACT(IMPL, C, BronsonAVLTreeMap_rcu_gpb_less_pool_bounded_stat)\
-    TEST_MAP_NOLF_EXTRACT(IMPL, C, BronsonAVLTreeMap_rcu_gpt_less_pool_bounded_stat)\
-    CDSUNIT_DEFINE_BronsonAVLTreeMap_RCU_signal( IMPL, C )
-
 #define CDSUNIT_TEST_BronsonAVLTreeMap \
     CPPUNIT_TEST(BronsonAVLTreeMap_rcu_gpi_less)\
     CPPUNIT_TEST(BronsonAVLTreeMap_rcu_gpi_cmp_stat)\
 // StripedMap
 
 #define CDSUNIT_DECLARE_StripedMap_common \
-    CDSUNIT_DECLARE_TEST(StripedMap_list) \
-    CDSUNIT_DECLARE_TEST(StripedMap_map) \
-    CDSUNIT_DECLARE_TEST(StripedMap_hashmap) \
-    CDSUNIT_DECLARE_TEST(StripedMap_boost_unordered_map)
-
-#define CDSUNIT_DEFINE_StripedMap_common( IMPL, C ) \
-    TEST_MAP(IMPL, C, StripedMap_list) \
-    TEST_MAP(IMPL, C, StripedMap_map) \
-    TEST_MAP(IMPL, C, StripedMap_hashmap) \
-    TEST_MAP(IMPL, C, StripedMap_boost_unordered_map)
+    TEST_CASE(tag_StripedMap, StripedMap_list) \
+    TEST_CASE(tag_StripedMap, StripedMap_map) \
+    TEST_CASE(tag_StripedMap, StripedMap_hashmap) \
+    TEST_CASE(tag_StripedMap, StripedMap_boost_unordered_map)
 
 #define CDSUNIT_TEST_StripedMap_common \
     CPPUNIT_TEST(StripedMap_list) \
 
 #if BOOST_VERSION >= 104800
 #   define CDSUNIT_DECLARE_StripedMap_boost_container \
-        CDSUNIT_DECLARE_TEST(StripedMap_boost_list) \
-        CDSUNIT_DECLARE_TEST(StripedMap_slist) \
-        CDSUNIT_DECLARE_TEST(StripedMap_boost_map)
-#   define CDSUNIT_DEFINE_StripedMap_boost_container( IMPL, C ) \
-        TEST_MAP(IMPL, C, StripedMap_boost_list) \
-        TEST_MAP(IMPL, C, StripedMap_slist) \
-        TEST_MAP(IMPL, C, StripedMap_boost_map)
+        TEST_CASE(tag_StripedMap, StripedMap_boost_list) \
+        TEST_CASE(tag_StripedMap, StripedMap_slist) \
+        TEST_CASE(tag_StripedMap, StripedMap_boost_map)
+
 #   define CDSUNIT_TEST_StripedMap_boost_container \
         CPPUNIT_TEST(StripedMap_boost_list) \
         CPPUNIT_TEST(StripedMap_slist) \
         CPPUNIT_TEST(StripedMap_boost_map)
 #else
 #   define CDSUNIT_DECLARE_StripedMap_boost_container
-#   define CDSUNIT_DEFINE_StripedMap_boost_container( IMPL, C )
 #   define CDSUNIT_TEST_StripedMap_boost_container
 #endif
 
 #if BOOST_VERSION >= 104800 && defined(CDS_UNIT_MAP_TYPES_ENABLE_BOOST_FLAT_CONTAINERS)
 #   define CDSUNIT_DECLARE_StripedMap_boost_flat_container \
-        CDSUNIT_DECLARE_TEST(StripedMap_boost_flat_map)
-#   define CDSUNIT_DEFINE_StripedMap_boost_flat_container( IMPL, C ) \
-        TEST_MAP(IMPL, C, StripedMap_boost_flat_map)
+        TEST_CASE(tag_StripedMap, StripedMap_boost_flat_map)
+
 #   define CDSUNIT_TEST_StripedMap_boost_flat_container \
         CPPUNIT_TEST(StripedMap_boost_flat_map)
 #else
 #   define CDSUNIT_DECLARE_StripedMap_boost_flat_container
-#   define CDSUNIT_DEFINE_StripedMap_boost_flat_container( IMPL, C )
 #   define CDSUNIT_TEST_StripedMap_boost_flat_container
 #endif
 
     CDSUNIT_DECLARE_StripedMap_common \
     CDSUNIT_DECLARE_StripedMap_boost_container \
     CDSUNIT_DECLARE_StripedMap_boost_flat_container
-#define CDSUNIT_DEFINE_StripedMap( IMPL, C ) \
-    CDSUNIT_DEFINE_StripedMap_common( IMPL, C ) \
-    CDSUNIT_DEFINE_StripedMap_boost_container( IMPL, C ) \
-    CDSUNIT_DEFINE_StripedMap_boost_flat_container( IMPL, C )
+
 #define CDSUNIT_TEST_StripedMap \
     CDSUNIT_TEST_StripedMap_common \
     CDSUNIT_TEST_StripedMap_boost_container \
 // RefinableMap
 
 #define CDSUNIT_DECLARE_RefinableMap_common \
-    CDSUNIT_DECLARE_TEST(RefinableMap_list) \
-    CDSUNIT_DECLARE_TEST(RefinableMap_map) \
-    CDSUNIT_DECLARE_TEST(RefinableMap_hashmap) \
-    CDSUNIT_DECLARE_TEST(RefinableMap_boost_unordered_map)
-#define CDSUNIT_DEFINE_RefinableMap_common( IMPL, C ) \
-    TEST_MAP(IMPL, C, RefinableMap_list) \
-    TEST_MAP(IMPL, C, RefinableMap_map) \
-    TEST_MAP(IMPL, C, RefinableMap_hashmap) \
-    TEST_MAP(IMPL, C, RefinableMap_boost_unordered_map)
+    TEST_CASE(tag_StripedMap, RefinableMap_list) \
+    TEST_CASE(tag_StripedMap, RefinableMap_map) \
+    TEST_CASE(tag_StripedMap, RefinableMap_hashmap) \
+    TEST_CASE(tag_StripedMap, RefinableMap_boost_unordered_map)
+
 #define CDSUNIT_TEST_RefinableMap_common \
     CPPUNIT_TEST(RefinableMap_list) \
     CPPUNIT_TEST(RefinableMap_map) \
 
 #if BOOST_VERSION >= 104800
 #   define CDSUNIT_DECLARE_RefinableMap_boost_container \
-        CDSUNIT_DECLARE_TEST(RefinableMap_boost_list) \
-        CDSUNIT_DECLARE_TEST(RefinableMap_slist) \
-        CDSUNIT_DECLARE_TEST(RefinableMap_boost_map)
-#   define CDSUNIT_DEFINE_RefinableMap_boost_container( IMPL, C ) \
-        TEST_MAP(IMPL, C, RefinableMap_boost_list) \
-        TEST_MAP(IMPL, C, RefinableMap_slist) \
-        TEST_MAP(IMPL, C, RefinableMap_boost_map)
+        TEST_CASE(tag_StripedMap, RefinableMap_boost_list) \
+        TEST_CASE(tag_StripedMap, RefinableMap_slist) \
+        TEST_CASE(tag_StripedMap, RefinableMap_boost_map)
+
 #   define CDSUNIT_TEST_RefinableMap_boost_container \
         CPPUNIT_TEST(RefinableMap_boost_list) \
         CPPUNIT_TEST(RefinableMap_slist) \
         CPPUNIT_TEST(RefinableMap_boost_map)
 #else
 #   define CDSUNIT_DECLARE_RefinableMap_boost_container
-#   define CDSUNIT_DEFINE_RefinableMap_boost_container( IMPL, C )
 #   define CDSUNIT_TEST_RefinableMap_boost_container
 #endif
 
 #if BOOST_VERSION >= 104800 && defined(CDS_UNIT_MAP_TYPES_ENABLE_BOOST_FLAT_CONTAINERS)
 #   define CDSUNIT_DECLARE_RefinableMap_boost_flat_container \
-        CDSUNIT_DECLARE_TEST(RefinableMap_boost_flat_map)
-#   define CDSUNIT_DEFINE_RefinableMap_boost_flat_container( IMPL, C ) \
-        TEST_MAP( IMPL, C, RefinableMap_boost_flat_map)
+        TEST_CASE(tag_StripedMap, RefinableMap_boost_flat_map)
+
 #   define CDSUNIT_TEST_RefinableMap_boost_flat_container \
         CPPUNIT_TEST(RefinableMap_boost_flat_map)
 #else
 #   define CDSUNIT_DECLARE_RefinableMap_boost_flat_container
-#   define CDSUNIT_DEFINE_RefinableMap_boost_flat_container( IMPL, C )
 #   define CDSUNIT_TEST_RefinableMap_boost_flat_container
 #endif
 
     CDSUNIT_DECLARE_RefinableMap_common \
     CDSUNIT_DECLARE_RefinableMap_boost_container \
     CDSUNIT_DECLARE_RefinableMap_boost_flat_container
-#define CDSUNIT_DEFINE_RefinableMap( IMPL, C ) \
-    CDSUNIT_DEFINE_RefinableMap_common( IMPL, C ) \
-    CDSUNIT_DEFINE_RefinableMap_boost_container( IMPL, C ) \
-    CDSUNIT_DEFINE_RefinableMap_boost_flat_container( IMPL, C )
+
 #define CDSUNIT_TEST_RefinableMap \
     CDSUNIT_TEST_RefinableMap_common \
     CDSUNIT_TEST_RefinableMap_boost_container \
 // CuckooMap
 
 #define CDSUNIT_DECLARE_CuckooMap \
-    CDSUNIT_DECLARE_TEST(CuckooStripedMap_list_unord)\
-    CDSUNIT_DECLARE_TEST(CuckooStripedMap_list_ord)\
-    CDSUNIT_DECLARE_TEST(CuckooStripedMap_vector_unord)\
-    CDSUNIT_DECLARE_TEST(CuckooStripedMap_vector_ord)\
-    CDSUNIT_DECLARE_TEST(CuckooStripedMap_list_unord_stat)\
-    CDSUNIT_DECLARE_TEST(CuckooStripedMap_list_ord_stat)\
-    CDSUNIT_DECLARE_TEST(CuckooStripedMap_vector_unord_stat)\
-    CDSUNIT_DECLARE_TEST(CuckooStripedMap_vector_ord_stat)\
-    CDSUNIT_DECLARE_TEST(CuckooRefinableMap_list_unord)\
-    CDSUNIT_DECLARE_TEST(CuckooRefinableMap_list_ord)\
-    CDSUNIT_DECLARE_TEST(CuckooRefinableMap_vector_unord)\
-    CDSUNIT_DECLARE_TEST(CuckooRefinableMap_vector_ord) \
-    CDSUNIT_DECLARE_TEST(CuckooRefinableMap_list_unord_stat)\
-    CDSUNIT_DECLARE_TEST(CuckooRefinableMap_list_ord_stat)\
-    CDSUNIT_DECLARE_TEST(CuckooRefinableMap_vector_unord_stat)\
-    CDSUNIT_DECLARE_TEST(CuckooRefinableMap_vector_ord_stat) \
-    CDSUNIT_DECLARE_TEST(CuckooStripedMap_list_unord_storehash)\
-    CDSUNIT_DECLARE_TEST(CuckooStripedMap_list_ord_storehash)\
-    CDSUNIT_DECLARE_TEST(CuckooStripedMap_vector_unord_storehash)\
-    CDSUNIT_DECLARE_TEST(CuckooStripedMap_vector_ord_storehash)\
-    CDSUNIT_DECLARE_TEST(CuckooRefinableMap_list_unord_storehash)\
-    CDSUNIT_DECLARE_TEST(CuckooRefinableMap_list_ord_storehash)\
-    CDSUNIT_DECLARE_TEST(CuckooRefinableMap_vector_unord_storehash)\
-    CDSUNIT_DECLARE_TEST(CuckooRefinableMap_vector_ord_storehash)
-
-#define CDSUNIT_DEFINE_CuckooMap( IMPL, C ) \
-    TEST_MAP(IMPL, C, CuckooStripedMap_list_unord)\
-    TEST_MAP(IMPL, C, CuckooStripedMap_list_ord)\
-    TEST_MAP(IMPL, C, CuckooStripedMap_vector_unord)\
-    TEST_MAP(IMPL, C, CuckooStripedMap_vector_ord)\
-    TEST_MAP(IMPL, C, CuckooStripedMap_list_unord_stat)\
-    TEST_MAP(IMPL, C, CuckooStripedMap_list_ord_stat)\
-    TEST_MAP(IMPL, C, CuckooStripedMap_vector_unord_stat)\
-    TEST_MAP(IMPL, C, CuckooStripedMap_vector_ord_stat)\
-    TEST_MAP(IMPL, C, CuckooRefinableMap_list_unord)\
-    TEST_MAP(IMPL, C, CuckooRefinableMap_list_ord)\
-    TEST_MAP(IMPL, C, CuckooRefinableMap_vector_unord)\
-    TEST_MAP(IMPL, C, CuckooRefinableMap_vector_ord) \
-    TEST_MAP(IMPL, C, CuckooRefinableMap_list_unord_stat)\
-    TEST_MAP(IMPL, C, CuckooRefinableMap_list_ord_stat)\
-    TEST_MAP(IMPL, C, CuckooRefinableMap_vector_unord_stat)\
-    TEST_MAP(IMPL, C, CuckooRefinableMap_vector_ord_stat) \
-    TEST_MAP(IMPL, C, CuckooStripedMap_list_unord_storehash)\
-    TEST_MAP(IMPL, C, CuckooStripedMap_list_ord_storehash)\
-    TEST_MAP(IMPL, C, CuckooStripedMap_vector_unord_storehash)\
-    TEST_MAP(IMPL, C, CuckooStripedMap_vector_ord_storehash)\
-    TEST_MAP(IMPL, C, CuckooRefinableMap_list_unord_storehash)\
-    TEST_MAP(IMPL, C, CuckooRefinableMap_list_ord_storehash)\
-    TEST_MAP(IMPL, C, CuckooRefinableMap_vector_unord_storehash)\
-    TEST_MAP(IMPL, C, CuckooRefinableMap_vector_ord_storehash)
+    TEST_CASE(tag_CuckooMap, CuckooStripedMap_list_unord)\
+    TEST_CASE(tag_CuckooMap, CuckooStripedMap_list_ord)\
+    TEST_CASE(tag_CuckooMap, CuckooStripedMap_vector_unord)\
+    TEST_CASE(tag_CuckooMap, CuckooStripedMap_vector_ord)\
+    TEST_CASE(tag_CuckooMap, CuckooStripedMap_list_unord_stat)\
+    TEST_CASE(tag_CuckooMap, CuckooStripedMap_list_ord_stat)\
+    TEST_CASE(tag_CuckooMap, CuckooStripedMap_vector_unord_stat)\
+    TEST_CASE(tag_CuckooMap, CuckooStripedMap_vector_ord_stat)\
+    TEST_CASE(tag_CuckooMap, CuckooRefinableMap_list_unord)\
+    TEST_CASE(tag_CuckooMap, CuckooRefinableMap_list_ord)\
+    TEST_CASE(tag_CuckooMap, CuckooRefinableMap_vector_unord)\
+    TEST_CASE(tag_CuckooMap, CuckooRefinableMap_vector_ord) \
+    TEST_CASE(tag_CuckooMap, CuckooRefinableMap_list_unord_stat)\
+    TEST_CASE(tag_CuckooMap, CuckooRefinableMap_list_ord_stat)\
+    TEST_CASE(tag_CuckooMap, CuckooRefinableMap_vector_unord_stat)\
+    TEST_CASE(tag_CuckooMap, CuckooRefinableMap_vector_ord_stat) \
+    TEST_CASE(tag_CuckooMap, CuckooStripedMap_list_unord_storehash)\
+    TEST_CASE(tag_CuckooMap, CuckooStripedMap_list_ord_storehash)\
+    TEST_CASE(tag_CuckooMap, CuckooStripedMap_vector_unord_storehash)\
+    TEST_CASE(tag_CuckooMap, CuckooStripedMap_vector_ord_storehash)\
+    TEST_CASE(tag_CuckooMap, CuckooRefinableMap_list_unord_storehash)\
+    TEST_CASE(tag_CuckooMap, CuckooRefinableMap_list_ord_storehash)\
+    TEST_CASE(tag_CuckooMap, CuckooRefinableMap_vector_unord_storehash)\
+    TEST_CASE(tag_CuckooMap, CuckooRefinableMap_vector_ord_storehash)
 
 #define CDSUNIT_TEST_CuckooMap \
     CPPUNIT_TEST(CuckooStripedMap_list_unord)\
 
 
 // **************************************************************************************
-// MultiLevelHashMap
-
-#undef CDSUNIT_DECLARE_MultiLevelHashMap
-#define CDSUNIT_DECLARE_MultiLevelHashMap  \
-    TEST_CASE(tag_MultiLevelHashMap, MultiLevelHashMap_hp_stdhash) \
-    TEST_CASE(tag_MultiLevelHashMap, MultiLevelHashMap_hp_stdhash_stat) \
-    TEST_CASE(tag_MultiLevelHashMap, MultiLevelHashMap_dhp_stdhash) \
-    TEST_CASE(tag_MultiLevelHashMap, MultiLevelHashMap_dhp_stdhash_stat)
-
-#undef CDSUNIT_TEST_MultiLevelHashMap
-#define CDSUNIT_TEST_MultiLevelHashMap  \
-    CPPUNIT_TEST(MultiLevelHashMap_hp_stdhash) \
-    CPPUNIT_TEST(MultiLevelHashMap_hp_stdhash_stat) \
-    CPPUNIT_TEST(MultiLevelHashMap_dhp_stdhash) \
-    CPPUNIT_TEST(MultiLevelHashMap_dhp_stdhash_stat)
+// FeldmanHashMap
+
+
+// fixed-sized key - no hash function is necessary
+
+#undef CDSUNIT_DECLARE_FeldmanHashMap_fixed
+#undef CDSUNIT_DECLARE_FeldmanHashMap_fixed_RCU_Signal
+#undef CDSUNIT_TEST_FeldmanHashMap_fixed
+#undef CDSUNIT_TEST_FeldmanHashMap_fixed_RCU_Signal
+
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+#   define CDSUNIT_DECLARE_FeldmanHashMap_fixed_RCU_Signal \
+        TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_shb_fixed) \
+        TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_shb_fixed_stat) \
+        TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_sht_fixed) \
+        TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_sht_fixed_stat) \
+
+#   define CDSUNIT_TEST_FeldmanHashMap_fixed_RCU_Signal \
+        CPPUNIT_TEST(FeldmanHashMap_rcu_shb_fixed) \
+        CPPUNIT_TEST(FeldmanHashMap_rcu_shb_fixed_stat) \
+        CPPUNIT_TEST(FeldmanHashMap_rcu_sht_fixed) \
+        CPPUNIT_TEST(FeldmanHashMap_rcu_sht_fixed_stat) \
+
+#else
+#   define CDSUNIT_DECLARE_FeldmanHashMap_fixed_RCU_Signal
+#   define CDSUNIT_TEST_FeldmanHashMap_fixed_RCU_Signal
+#endif
+
+
+#define CDSUNIT_DECLARE_FeldmanHashMap_fixed \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_hp_fixed) \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_hp_fixed_stat) \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_dhp_fixed) \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_dhp_fixed_stat) \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_gpi_fixed) \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_gpi_fixed_stat) \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_gpb_fixed) \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_gpb_fixed_stat) \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_gpt_fixed) \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_gpt_fixed_stat) \
+    CDSUNIT_DECLARE_FeldmanHashMap_fixed_RCU_Signal
+
+#define CDSUNIT_TEST_FeldmanHashMap_fixed \
+    CPPUNIT_TEST(FeldmanHashMap_hp_fixed) \
+    CPPUNIT_TEST(FeldmanHashMap_hp_fixed_stat) \
+    CPPUNIT_TEST(FeldmanHashMap_dhp_fixed) \
+    CPPUNIT_TEST(FeldmanHashMap_dhp_fixed_stat) \
+    CPPUNIT_TEST(FeldmanHashMap_rcu_gpi_fixed) \
+    CPPUNIT_TEST(FeldmanHashMap_rcu_gpi_fixed_stat) \
+    CPPUNIT_TEST(FeldmanHashMap_rcu_gpb_fixed) \
+    CPPUNIT_TEST(FeldmanHashMap_rcu_gpb_fixed_stat) \
+    CPPUNIT_TEST(FeldmanHashMap_rcu_gpt_fixed) \
+    CPPUNIT_TEST(FeldmanHashMap_rcu_gpt_fixed_stat) \
+    CDSUNIT_TEST_FeldmanHashMap_fixed_RCU_Signal
+
+// std::hash
+
+#undef CDSUNIT_DECLARE_FeldmanHashMap_stdhash
+#undef CDSUNIT_DECLARE_FeldmanHashMap_stdhash_RCU_Signal
+#undef CDSUNIT_TEST_FeldmanHashMap_stdhash
+#undef CDSUNIT_TEST_FeldmanHashMap_stdhash_RCU_Signal
+
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+#   define CDSUNIT_DECLARE_FeldmanHashMap_stdhash_RCU_Signal \
+        TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_shb_stdhash) \
+        TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_shb_stdhash_stat) \
+        TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_sht_stdhash) \
+        TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_sht_stdhash_stat) \
+
+#   define CDSUNIT_TEST_FeldmanHashMap_stdhash_RCU_Signal \
+        CPPUNIT_TEST(FeldmanHashMap_rcu_shb_stdhash) \
+        CPPUNIT_TEST(FeldmanHashMap_rcu_shb_stdhash_stat) \
+        CPPUNIT_TEST(FeldmanHashMap_rcu_sht_stdhash) \
+        CPPUNIT_TEST(FeldmanHashMap_rcu_sht_stdhash_stat) \
+
+#else
+#   define CDSUNIT_DECLARE_FeldmanHashMap_stdhash_RCU_Signal
+#   define CDSUNIT_TEST_FeldmanHashMap_stdhash_RCU_Signal
+#endif
+
+
+#define CDSUNIT_DECLARE_FeldmanHashMap_stdhash \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_hp_stdhash) \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_hp_stdhash_stat) \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_dhp_stdhash) \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_dhp_stdhash_stat) \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_gpi_stdhash) \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_gpi_stdhash_stat) \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_gpb_stdhash) \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_gpb_stdhash_stat) \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_gpt_stdhash) \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_gpt_stdhash_stat) \
+    CDSUNIT_DECLARE_FeldmanHashMap_stdhash_RCU_Signal
+
+#define CDSUNIT_TEST_FeldmanHashMap_stdhash \
+    CPPUNIT_TEST(FeldmanHashMap_hp_stdhash) \
+    CPPUNIT_TEST(FeldmanHashMap_hp_stdhash_stat) \
+    CPPUNIT_TEST(FeldmanHashMap_dhp_stdhash) \
+    CPPUNIT_TEST(FeldmanHashMap_dhp_stdhash_stat) \
+    CPPUNIT_TEST(FeldmanHashMap_rcu_gpi_stdhash) \
+    CPPUNIT_TEST(FeldmanHashMap_rcu_gpi_stdhash_stat) \
+    CPPUNIT_TEST(FeldmanHashMap_rcu_gpb_stdhash) \
+    CPPUNIT_TEST(FeldmanHashMap_rcu_gpb_stdhash_stat) \
+    CPPUNIT_TEST(FeldmanHashMap_rcu_gpt_stdhash) \
+    CPPUNIT_TEST(FeldmanHashMap_rcu_gpt_stdhash_stat) \
+    CDSUNIT_TEST_FeldmanHashMap_stdhash_RCU_Signal
+
+// MD5
+
+#undef CDSUNIT_DECLARE_FeldmanHashMap_md5
+#undef CDSUNIT_DECLARE_FeldmanHashMap_md5_RCU_Signal
+#undef CDSUNIT_TEST_FeldmanHashMap_md5
+#undef CDSUNIT_TEST_FeldmanHashMap_md5_RCU_Signal
+
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+#   define CDSUNIT_DECLARE_FeldmanHashMap_md5_RCU_Signal \
+        TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_shb_md5) \
+        TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_shb_md5_stat) \
+        TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_sht_md5) \
+        TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_sht_md5_stat) \
+
+#   define CDSUNIT_TEST_FeldmanHashMap_md5_RCU_Signal \
+        CPPUNIT_TEST(FeldmanHashMap_rcu_shb_md5) \
+        CPPUNIT_TEST(FeldmanHashMap_rcu_shb_md5_stat) \
+        CPPUNIT_TEST(FeldmanHashMap_rcu_sht_md5) \
+        CPPUNIT_TEST(FeldmanHashMap_rcu_sht_md5_stat) \
+
+#else
+#   define CDSUNIT_DECLARE_FeldmanHashMap_md5_RCU_Signal
+#   define CDSUNIT_TEST_FeldmanHashMap_md5_RCU_Signal
+#endif
+
+
+#define CDSUNIT_DECLARE_FeldmanHashMap_md5 \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_hp_md5) \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_hp_md5_stat) \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_dhp_md5) \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_dhp_md5_stat) \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_gpi_md5) \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_gpi_md5_stat) \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_gpb_md5) \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_gpb_md5_stat) \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_gpt_md5) \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_gpt_md5_stat) \
+    CDSUNIT_DECLARE_FeldmanHashMap_md5_RCU_Signal
+
+#define CDSUNIT_TEST_FeldmanHashMap_md5 \
+    CPPUNIT_TEST(FeldmanHashMap_hp_md5) \
+    CPPUNIT_TEST(FeldmanHashMap_hp_md5_stat) \
+    CPPUNIT_TEST(FeldmanHashMap_dhp_md5) \
+    CPPUNIT_TEST(FeldmanHashMap_dhp_md5_stat) \
+    CPPUNIT_TEST(FeldmanHashMap_rcu_gpi_md5) \
+    CPPUNIT_TEST(FeldmanHashMap_rcu_gpi_md5_stat) \
+    CPPUNIT_TEST(FeldmanHashMap_rcu_gpb_md5) \
+    CPPUNIT_TEST(FeldmanHashMap_rcu_gpb_md5_stat) \
+    CPPUNIT_TEST(FeldmanHashMap_rcu_gpt_md5) \
+    CPPUNIT_TEST(FeldmanHashMap_rcu_gpt_md5_stat) \
+    CDSUNIT_TEST_FeldmanHashMap_md5_RCU_Signal
+
+// SHA256
+
+#undef CDSUNIT_DECLARE_FeldmanHashMap_sha256
+#undef CDSUNIT_DECLARE_FeldmanHashMap_sha256_RCU_Signal
+#undef CDSUNIT_TEST_FeldmanHashMap_sha256
+#undef CDSUNIT_TEST_FeldmanHashMap_sha256_RCU_Signal
+
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+#   define CDSUNIT_DECLARE_FeldmanHashMap_sha256_RCU_Signal \
+        TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_shb_sha256) \
+        TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_shb_sha256_stat) \
+        TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_sht_sha256) \
+        TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_sht_sha256_stat) \
+
+#   define CDSUNIT_TEST_FeldmanHashMap_sha256_RCU_Signal \
+        CPPUNIT_TEST(FeldmanHashMap_rcu_shb_sha256) \
+        CPPUNIT_TEST(FeldmanHashMap_rcu_shb_sha256_stat) \
+        CPPUNIT_TEST(FeldmanHashMap_rcu_sht_sha256) \
+        CPPUNIT_TEST(FeldmanHashMap_rcu_sht_sha256_stat) \
+
+#else
+#   define CDSUNIT_DECLARE_FeldmanHashMap_sha256_RCU_Signal
+#   define CDSUNIT_TEST_FeldmanHashMap_sha256_RCU_Signal
+#endif
+
+
+#define CDSUNIT_DECLARE_FeldmanHashMap_sha256 \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_hp_sha256) \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_hp_sha256_stat) \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_dhp_sha256) \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_dhp_sha256_stat) \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_gpi_sha256) \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_gpi_sha256_stat) \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_gpb_sha256) \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_gpb_sha256_stat) \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_gpt_sha256) \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_gpt_sha256_stat) \
+    CDSUNIT_DECLARE_FeldmanHashMap_sha256_RCU_Signal
+
+#define CDSUNIT_TEST_FeldmanHashMap_sha256 \
+    CPPUNIT_TEST(FeldmanHashMap_hp_sha256) \
+    CPPUNIT_TEST(FeldmanHashMap_hp_sha256_stat) \
+    CPPUNIT_TEST(FeldmanHashMap_dhp_sha256) \
+    CPPUNIT_TEST(FeldmanHashMap_dhp_sha256_stat) \
+    CPPUNIT_TEST(FeldmanHashMap_rcu_gpi_sha256) \
+    CPPUNIT_TEST(FeldmanHashMap_rcu_gpi_sha256_stat) \
+    CPPUNIT_TEST(FeldmanHashMap_rcu_gpb_sha256) \
+    CPPUNIT_TEST(FeldmanHashMap_rcu_gpb_sha256_stat) \
+    CPPUNIT_TEST(FeldmanHashMap_rcu_gpt_sha256) \
+    CPPUNIT_TEST(FeldmanHashMap_rcu_gpt_sha256_stat) \
+    CDSUNIT_TEST_FeldmanHashMap_sha256_RCU_Signal
+
+// CityHash - only for 64bit
+
+#undef CDSUNIT_DECLARE_FeldmanHashMap_city128_RCU_Signal
+#undef CDSUNIT_TEST_FeldmanHashMap_city128_RCU_Signal
+
+#if CDS_BUILD_BITS == 64
+
+#undef CDSUNIT_DECLARE_FeldmanHashMap_city64
+#undef CDSUNIT_DECLARE_FeldmanHashMap_city64_RCU_Signal
+#undef CDSUNIT_TEST_FeldmanHashMap_city64
+#undef CDSUNIT_TEST_FeldmanHashMap_city64_RCU_Signal
+
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+#   define CDSUNIT_DECLARE_FeldmanHashMap_city64_RCU_Signal \
+        TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_shb_city64) \
+        TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_shb_city64_stat) \
+        TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_sht_city64) \
+        TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_sht_city64_stat) \
+
+#   define CDSUNIT_TEST_FeldmanHashMap_city64_RCU_Signal \
+        CPPUNIT_TEST(FeldmanHashMap_rcu_shb_city64) \
+        CPPUNIT_TEST(FeldmanHashMap_rcu_shb_city64_stat) \
+        CPPUNIT_TEST(FeldmanHashMap_rcu_sht_city64) \
+        CPPUNIT_TEST(FeldmanHashMap_rcu_sht_city64_stat) \
+
+#else
+#   define CDSUNIT_DECLARE_FeldmanHashMap_city64_RCU_Signal
+#   define CDSUNIT_TEST_FeldmanHashMap_city64_RCU_Signal
+#endif
+
+
+#define CDSUNIT_DECLARE_FeldmanHashMap_city64 \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_hp_city64) \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_hp_city64_stat) \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_dhp_city64) \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_dhp_city64_stat) \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_gpi_city64) \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_gpi_city64_stat) \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_gpb_city64) \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_gpb_city64_stat) \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_gpt_city64) \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_gpt_city64_stat) \
+    CDSUNIT_DECLARE_FeldmanHashMap_city64_RCU_Signal
+
+#define CDSUNIT_TEST_FeldmanHashMap_city64 \
+    CPPUNIT_TEST(FeldmanHashMap_hp_city64) \
+    CPPUNIT_TEST(FeldmanHashMap_hp_city64_stat) \
+    CPPUNIT_TEST(FeldmanHashMap_dhp_city64) \
+    CPPUNIT_TEST(FeldmanHashMap_dhp_city64_stat) \
+    CPPUNIT_TEST(FeldmanHashMap_rcu_gpi_city64) \
+    CPPUNIT_TEST(FeldmanHashMap_rcu_gpi_city64_stat) \
+    CPPUNIT_TEST(FeldmanHashMap_rcu_gpb_city64) \
+    CPPUNIT_TEST(FeldmanHashMap_rcu_gpb_city64_stat) \
+    CPPUNIT_TEST(FeldmanHashMap_rcu_gpt_city64) \
+    CPPUNIT_TEST(FeldmanHashMap_rcu_gpt_city64_stat) \
+    CDSUNIT_TEST_FeldmanHashMap_city64_RCU_Signal
+
+#undef CDSUNIT_DECLARE_FeldmanHashMap_city128
+#undef CDSUNIT_DECLARE_FeldmanHashMap_city128_RCU_Signal
+#undef CDSUNIT_TEST_FeldmanHashMap_city128
+#undef CDSUNIT_TEST_FeldmanHashMap_city128_RCU_Signal
+
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+#   define CDSUNIT_DECLARE_FeldmanHashMap_city128_RCU_Signal \
+        TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_shb_city128) \
+        TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_shb_city128_stat) \
+        TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_sht_city128) \
+        TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_sht_city128_stat) \
+
+#   define CDSUNIT_TEST_FeldmanHashMap_city128_RCU_Signal \
+        CPPUNIT_TEST(FeldmanHashMap_rcu_shb_city128) \
+        CPPUNIT_TEST(FeldmanHashMap_rcu_shb_city128_stat) \
+        CPPUNIT_TEST(FeldmanHashMap_rcu_sht_city128) \
+        CPPUNIT_TEST(FeldmanHashMap_rcu_sht_city128_stat) \
+
+#else
+#   define CDSUNIT_DECLARE_FeldmanHashMap_city128_RCU_Signal
+#   define CDSUNIT_TEST_FeldmanHashMap_city128_RCU_Signal
+#endif
+
+
+#define CDSUNIT_DECLARE_FeldmanHashMap_city128 \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_hp_city128) \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_hp_city128_stat) \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_dhp_city128) \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_dhp_city128_stat) \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_gpi_city128) \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_gpi_city128_stat) \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_gpb_city128) \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_gpb_city128_stat) \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_gpt_city128) \
+    TEST_CASE(tag_FeldmanHashMap, FeldmanHashMap_rcu_gpt_city128_stat) \
+    CDSUNIT_DECLARE_FeldmanHashMap_city128_RCU_Signal
+
+#define CDSUNIT_TEST_FeldmanHashMap_city128 \
+    CPPUNIT_TEST(FeldmanHashMap_hp_city128) \
+    CPPUNIT_TEST(FeldmanHashMap_hp_city128_stat) \
+    CPPUNIT_TEST(FeldmanHashMap_dhp_city128) \
+    CPPUNIT_TEST(FeldmanHashMap_dhp_city128_stat) \
+    CPPUNIT_TEST(FeldmanHashMap_rcu_gpi_city128) \
+    CPPUNIT_TEST(FeldmanHashMap_rcu_gpi_city128_stat) \
+    CPPUNIT_TEST(FeldmanHashMap_rcu_gpb_city128) \
+    CPPUNIT_TEST(FeldmanHashMap_rcu_gpb_city128_stat) \
+    CPPUNIT_TEST(FeldmanHashMap_rcu_gpt_city128) \
+    CPPUNIT_TEST(FeldmanHashMap_rcu_gpt_city128_stat) \
+    CDSUNIT_TEST_FeldmanHashMap_city128_RCU_Signal
+
+#define CDSUNIT_DECLARE_FeldmanHashMap_city \
+    CDSUNIT_DECLARE_FeldmanHashMap_city64 \
+    CDSUNIT_DECLARE_FeldmanHashMap_city128
+
+#define CDSUNIT_TEST_FeldmanHashMap_city \
+    CDSUNIT_TEST_FeldmanHashMap_city64 \
+    CDSUNIT_TEST_FeldmanHashMap_city128
+
+#else // 32bit
+#   define CDSUNIT_DECLARE_FeldmanHashMap_city
+#   define CDSUNIT_TEST_FeldmanHashMap_city
+#endif // #if CDS_BUILD_BITS == 64
+
+#undef CDSUNIT_DECLARE_FeldmanHashMap
+#undef CDSUNIT_TEST_FeldmanHashMap
+
+#define CDSUNIT_DECLARE_FeldmanHashMap \
+    CDSUNIT_DECLARE_FeldmanHashMap_fixed \
+    CDSUNIT_DECLARE_FeldmanHashMap_stdhash \
+    CDSUNIT_DECLARE_FeldmanHashMap_md5 \
+    CDSUNIT_DECLARE_FeldmanHashMap_sha256 \
+    CDSUNIT_DECLARE_FeldmanHashMap_city \
+
+#define CDSUNIT_TEST_FeldmanHashMap \
+    CDSUNIT_TEST_FeldmanHashMap_fixed \
+    CDSUNIT_TEST_FeldmanHashMap_stdhash \
+    CDSUNIT_TEST_FeldmanHashMap_md5 \
+    CDSUNIT_TEST_FeldmanHashMap_sha256 \
+    CDSUNIT_TEST_FeldmanHashMap_city