Source code repo: http://github.com/khizmax/libcds/
Download: http://sourceforge.net/projects/libcds/files/
-
+
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef CDSUNIT_MAP_TEST_FELDMAN_HASHMAP_RCU_H
ASSERT_TRUE( m.empty());
ASSERT_CONTAINER_SIZE( m, 0 );
+ typedef typename Map::key_type key_type;
+ typedef typename Map::mapped_type value_type;
typedef typename Map::value_type map_pair;
typedef typename Map::rcu_lock rcu_lock;
typedef typename Map::exempt_ptr exempt_ptr;
}
for ( auto const& i : arrKeys )
- ASSERT_TRUE( m.insert( i ) );
- ASSERT_FALSE( m.empty() );
+ ASSERT_TRUE( m.insert( i ));
+ ASSERT_FALSE( m.empty());
ASSERT_CONTAINER_SIZE( m, kkSize );
// iterators
EXPECT_TRUE( p == nullptr );
}
}
- ASSERT_TRUE( m.empty() );
+ ASSERT_TRUE( m.empty());
ASSERT_CONTAINER_SIZE( m, 0 );
}
this->test( m );
}
+ TYPED_TEST_P( FeldmanHashMap, explicit_key_size )
+ {
+ typedef typename TestFixture::rcu_type rcu_type;
+ typedef typename TestFixture::key_type2 key_type2;
+ typedef typename TestFixture::value_type value_type;
+
+ struct map_traits: public cc::feldman_hashmap::traits
+ {
+ enum: size_t {
+ hash_size = sizeof( int ) + sizeof( uint16_t )
+ };
+ typedef typename TestFixture::hash2 hash;
+ typedef typename TestFixture::less2 less;
+ typedef cc::feldman_hashmap::stat<> stat;
+ };
+ typedef cc::FeldmanHashMap< rcu_type, key_type2, value_type, map_traits > map_type;
+
+ map_type m( 5, 3 );
+ EXPECT_EQ( m.head_size(), static_cast<size_t>(1 << 6));
+ EXPECT_EQ( m.array_node_size(), static_cast<size_t>(1 << 3));
+ this->test( m );
+ }
+
// GCC 5: All test names should be written on single line, otherwise a runtime error will be encountered like as
// "No test named <test_name> can be found in this test case"
REGISTER_TYPED_TEST_CASE_P( FeldmanHashMap,
- defaulted, compare, less, cmpmix, backoff, stat
- );
+ defaulted, compare, less, cmpmix, backoff, stat, explicit_key_size
+ );
} // namespace
#endif // #ifndef CDSUNIT_MAP_TEST_FELDMAN_HASHMAP_RCU_H