3 #include "map/hdr_map.h"
4 #include <cds/container/michael_kvlist_hp.h>
5 #include <cds/container/michael_map.h>
9 struct map_traits: public cc::michael_map::type_traits
11 typedef HashMapHdrTest::hash_int hash;
12 typedef HashMapHdrTest::simple_item_counter item_counter;
15 struct HP_cmp_traits: public cc::michael_list::type_traits
17 typedef HashMapHdrTest::cmp compare;
20 struct HP_less_traits: public cc::michael_list::type_traits
22 typedef HashMapHdrTest::less less;
25 struct HP_cmpmix_traits: public cc::michael_list::type_traits
27 typedef HashMapHdrTest::cmp compare;
28 typedef HashMapHdrTest::less less;
32 void HashMapHdrTest::Michael_HP_cmp()
34 typedef cc::MichaelKVList< cds::gc::HP, int, HashMapHdrTest::value_type, HP_cmp_traits > list;
36 // traits-based version
37 typedef cc::MichaelHashMap< cds::gc::HP, list, map_traits > map;
40 // option-based version
41 typedef cc::MichaelHashMap< cds::gc::HP, list,
42 cc::michael_map::make_traits<
43 cc::opt::hash< hash_int >
44 ,cc::opt::item_counter< simple_item_counter >
47 test_int< opt_map >();
50 void HashMapHdrTest::Michael_HP_less()
52 typedef cc::MichaelKVList< cds::gc::HP, int, HashMapHdrTest::value_type, HP_less_traits > list;
54 // traits-based version
55 typedef cc::MichaelHashMap< cds::gc::HP, list, map_traits > map;
58 // option-based version
59 typedef cc::MichaelHashMap< cds::gc::HP, list,
60 cc::michael_map::make_traits<
61 cc::opt::hash< hash_int >
62 ,cc::opt::item_counter< simple_item_counter >
65 test_int< opt_map >();
68 void HashMapHdrTest::Michael_HP_cmpmix()
70 typedef cc::MichaelKVList< cds::gc::HP, int, HashMapHdrTest::value_type, HP_cmpmix_traits > list;
72 // traits-based version
73 typedef cc::MichaelHashMap< cds::gc::HP, list, map_traits > map;
76 // option-based version
77 typedef cc::MichaelHashMap< cds::gc::HP, list,
78 cc::michael_map::make_traits<
79 cc::opt::hash< hash_int >
80 ,cc::opt::item_counter< simple_item_counter >
83 test_int< opt_map >();
89 CPPUNIT_TEST_SUITE_REGISTRATION(map::HashMapHdrTest);