From e8f967c4534ac2b87914264b79b8cba9424491a7 Mon Sep 17 00:00:00 2001 From: khizmax Date: Sat, 5 Sep 2015 16:42:28 +0300 Subject: [PATCH] Added StdMap to Map_InsDel_int MT-test --- projects/Win/vc12/unit-map-insdel.vcxproj | 1 + projects/Win/vc12/unit-map-insdel.vcxproj.filters | 3 +++ projects/source.unit.map.mk | 1 + tests/unit/map2/CMakeLists.txt | 1 + tests/unit/map2/map_defs.h | 12 +++++++----- tests/unit/map2/map_insdel_int.h | 6 ++---- tests/unit/map2/map_insdel_int_std.cpp | 12 ++++++++++++ tests/unit/map2/map_type_std.h | 10 ++++++---- tests/unit/map2/std_hash_map.h | 13 +++++++++++-- tests/unit/map2/std_map.h | 13 +++++++++++-- 10 files changed, 55 insertions(+), 17 deletions(-) create mode 100644 tests/unit/map2/map_insdel_int_std.cpp diff --git a/projects/Win/vc12/unit-map-insdel.vcxproj b/projects/Win/vc12/unit-map-insdel.vcxproj index 483a9d26..48ce135a 100644 --- a/projects/Win/vc12/unit-map-insdel.vcxproj +++ b/projects/Win/vc12/unit-map-insdel.vcxproj @@ -60,6 +60,7 @@ + diff --git a/projects/Win/vc12/unit-map-insdel.vcxproj.filters b/projects/Win/vc12/unit-map-insdel.vcxproj.filters index 303b3d71..f3be91cd 100644 --- a/projects/Win/vc12/unit-map-insdel.vcxproj.filters +++ b/projects/Win/vc12/unit-map-insdel.vcxproj.filters @@ -85,6 +85,9 @@ map_insdel_int + + map_insdel_int + diff --git a/projects/source.unit.map.mk b/projects/source.unit.map.mk index 4ab10a2d..accb9347 100644 --- a/projects/source.unit.map.mk +++ b/projects/source.unit.map.mk @@ -48,6 +48,7 @@ CDSUNIT_MAP_SOURCES := \ tests/unit/map2/map_insdel_int_skip.cpp \ tests/unit/map2/map_insdel_int_split.cpp \ tests/unit/map2/map_insdel_int_striped.cpp \ + tests/unit/map2/map_insdel_int_std.cpp \ tests/unit/map2/map_insdel_item_int.cpp \ tests/unit/map2/map_insdel_item_int_michael.cpp \ tests/unit/map2/map_insdel_item_int_split.cpp \ diff --git a/tests/unit/map2/CMakeLists.txt b/tests/unit/map2/CMakeLists.txt index 4d96a296..fbcddeec 100644 --- a/tests/unit/map2/CMakeLists.txt +++ b/tests/unit/map2/CMakeLists.txt @@ -49,6 +49,7 @@ set(CDSUNIT_MAP_SOURCES map_insdel_int_skip.cpp map_insdel_int_split.cpp map_insdel_int_striped.cpp + map_insdel_int_std.cpp map_insdel_item_int.cpp map_insdel_item_int_michael.cpp map_insdel_item_int_split.cpp diff --git a/tests/unit/map2/map_defs.h b/tests/unit/map2/map_defs.h index 6a07e050..47c17bbe 100644 --- a/tests/unit/map2/map_defs.h +++ b/tests/unit/map2/map_defs.h @@ -1,14 +1,16 @@ //$$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) \ // ************************************************************************************** diff --git a/tests/unit/map2/map_insdel_int.h b/tests/unit/map2/map_insdel_int.h index a36c6415..c6130a05 100644 --- a/tests/unit/map2/map_insdel_int.h +++ b/tests/unit/map2/map_insdel_int.h @@ -256,7 +256,7 @@ namespace map2 { CDSUNIT_DECLARE_StripedMap CDSUNIT_DECLARE_RefinableMap CDSUNIT_DECLARE_CuckooMap - //CDSUNIT_DECLARE_StdMap + CDSUNIT_DECLARE_StdMap CPPUNIT_TEST_SUITE(Map_InsDel_int) CDSUNIT_TEST_MichaelMap @@ -268,9 +268,7 @@ namespace map2 { CDSUNIT_TEST_CuckooMap CDSUNIT_TEST_StripedMap CDSUNIT_TEST_RefinableMap - //CDSUNIT_TEST_StdMap - - //CDSUNIT_TEST_MultiLevelHashMap // the test is not suitable + CDSUNIT_TEST_StdMap CPPUNIT_TEST_SUITE_END(); }; diff --git a/tests/unit/map2/map_insdel_int_std.cpp b/tests/unit/map2/map_insdel_int_std.cpp new file mode 100644 index 00000000..95c80452 --- /dev/null +++ b/tests/unit/map2/map_insdel_int_std.cpp @@ -0,0 +1,12 @@ +//$$CDS-header$$ + +#include "map2/map_insdel_int.h" +#include "map2/map_type_std.h" + +#undef TEST_CASE +#define TEST_CASE(TAG, X) void Map_InsDel_int::X() { run_test::X>(); } +#include "map2/map_defs.h" + +namespace map2 { + CDSUNIT_DECLARE_StdMap +} // namespace map2 diff --git a/tests/unit/map2/map_type_std.h b/tests/unit/map2/map_type_std.h index 3022896d..8cfce034 100644 --- a/tests/unit/map2/map_type_std.h +++ b/tests/unit/map2/map_type_std.h @@ -12,19 +12,21 @@ namespace map2 { - struct std_implementation_tag; + struct tag_StdMap; template - struct map_type< std_implementation_tag, Key, Value >: public map_type_base< Key, Value > + struct map_type< tag_StdMap, Key, Value >: public map_type_base< Key, Value > { typedef map_type_base< Key, Value > base_class; typedef typename base_class::compare compare; typedef typename base_class::less less; - typedef StdMap< Key, Value, cds::sync::spin > StdMap_Spin; - typedef StdMap< Key, Value, lock::NoLock> StdMap_NoLock; + typedef StdMap< Key, Value, cds::sync::spin > StdMap_Spin; + typedef StdMap< Key, Value, std::mutex > StdMap_Mutex; + typedef StdMap< Key, Value, lock::NoLock> StdMap_NoLock; typedef StdHashMap< Key, Value, cds::sync::spin > StdHashMap_Spin; + typedef StdHashMap< Key, Value, std::mutex > StdHashMap_Mutex; typedef StdHashMap< Key, Value, lock::NoLock > StdHashMap_NoLock; }; } // namespace map2 diff --git a/tests/unit/map2/std_hash_map.h b/tests/unit/map2/std_hash_map.h index 067e69f8..904b5e5e 100644 --- a/tests/unit/map2/std_hash_map.h +++ b/tests/unit/map2/std_hash_map.h @@ -32,7 +32,11 @@ namespace map2 { typedef typename base_class::mapped_type value_type; typedef size_t item_counter; - StdHashMap( size_t /*nMapSize*/, size_t /*nLoadFactor*/ ) + StdHashMap() + {} + + template + StdHashMap( Config const& ) {} bool find( const Key& key ) @@ -60,7 +64,7 @@ namespace map2 { } template - std::pair ensure( const T& key, Func func ) + std::pair update( const T& key, Func func, bool /*bAllowInsert*/ = true ) { scoped_lock al( m_lock ); std::pair pRet = base_class::insert( typename base_class::value_type( key, Value() )); @@ -93,6 +97,11 @@ namespace map2 { } std::ostream& dump( std::ostream& stm ) { return stm; } + + + // for testing + static CDS_CONSTEXPR bool const c_bExtractSupported = false; + static CDS_CONSTEXPR bool const c_bLoadFactorDepended = false; }; } // namespace map2 diff --git a/tests/unit/map2/std_map.h b/tests/unit/map2/std_map.h index 6923472c..3551071f 100644 --- a/tests/unit/map2/std_map.h +++ b/tests/unit/map2/std_map.h @@ -21,7 +21,11 @@ namespace map2 { typedef typename base_class::value_type pair_type; typedef size_t item_counter; - StdMap( size_t /*nMapSize*/, size_t /*nLoadFactor*/ ) + StdMap() + {} + + template + StdMap( Config const& ) {} bool find( const Key& key ) @@ -49,7 +53,7 @@ namespace map2 { } template - std::pair ensure( const T& key, Func func ) + std::pair update( const T& key, Func func, bool /*bAllowInsert*/ = true ) { scoped_lock al( m_lock ); std::pair pRet = base_class::insert( typename base_class::value_type(key, Value() )); @@ -83,6 +87,11 @@ namespace map2 { } std::ostream& dump( std::ostream& stm ) { return stm; } + + + // for testing + static CDS_CONSTEXPR bool const c_bExtractSupported = false; + static CDS_CONSTEXPR bool const c_bLoadFactorDepended = false; }; } // namespace map -- 2.34.1