3 #include "set/hdr_striped_set.h"
4 #include <cds/container/striped_set/std_vector.h>
5 #include <cds/container/striped_set.h>
6 #include <cds/sync/spinlock.h>
11 struct my_copy_policy {
12 typedef std::vector<StripedSetHdrTest::item> vector_type;
13 typedef vector_type::iterator iterator;
15 void operator()( vector_type& vec, iterator itInsert, iterator itWhat )
17 vec.insert( itInsert, std::make_pair(itWhat->key(), itWhat->val()) );
21 typedef std::vector<StripedSetHdrTest::item> sequence_t;
24 void StripedSetHdrTest::Striped_vector()
26 CPPUNIT_MESSAGE( "cmp");
27 typedef cc::StripedSet< sequence_t
28 , co::hash< hash_int >
29 , co::compare< cmp<item> >
30 ,co::mutex_policy< cc::striped_set::striping<> >
32 test_striped2< set_cmp >();
34 CPPUNIT_MESSAGE( "less");
35 typedef cc::StripedSet< sequence_t
36 , co::hash< hash_int >
37 ,co::mutex_policy< cc::striped_set::striping<> >
38 , co::less< less<item> >
40 test_striped2< set_less >();
42 CPPUNIT_MESSAGE( "cmpmix");
43 typedef cc::StripedSet< sequence_t
44 , co::hash< hash_int >
45 , co::compare< cmp<item> >
46 ,co::mutex_policy< cc::striped_set::striping<> >
47 , co::less< less<item> >
49 test_striped2< set_cmpmix >();
51 // Spinlock as lock policy
52 CPPUNIT_MESSAGE( "spinlock");
53 typedef cc::StripedSet< sequence_t
54 , co::hash< hash_int >
55 , co::less< less<item> >
56 , co::mutex_policy< cc::striped_set::striping< cds::sync::spin> >
58 test_striped2< set_spin >();
61 CPPUNIT_MESSAGE( "load_factor_resizing<0>(8)");
63 typedef cc::StripedSet< sequence_t
64 , co::hash< hash_int >
65 , co::less< less<item> >
66 , co::resizing_policy< cc::striped_set::load_factor_resizing<0> >
67 > set_less_resizing_lf;
68 set_less_resizing_lf s( 30, cc::striped_set::load_factor_resizing<0>(8));
72 CPPUNIT_MESSAGE( "load_factor_resizing<4>");
73 typedef cc::StripedSet< sequence_t
74 , co::hash< hash_int >
75 , co::less< less<item> >
76 , co::resizing_policy< cc::striped_set::load_factor_resizing<4> >
77 > set_less_resizing_lf16;
78 test_striped2< set_less_resizing_lf16 >();
80 CPPUNIT_MESSAGE( "single_bucket_size_threshold<0>(8)");
82 typedef cc::StripedSet< sequence_t
83 , co::hash< hash_int >
84 , co::less< less<item> >
85 , co::resizing_policy< cc::striped_set::single_bucket_size_threshold<0> >
86 > set_less_resizing_sbt;
87 set_less_resizing_sbt s(30, cc::striped_set::single_bucket_size_threshold<0>(8) );
91 CPPUNIT_MESSAGE( "single_bucket_size_threshold<6>");
92 typedef cc::StripedSet< sequence_t
93 , co::hash< hash_int >
94 , co::less< less<item> >
95 , co::resizing_policy< cc::striped_set::single_bucket_size_threshold<6> >
96 > set_less_resizing_sbt6;
97 test_striped2< set_less_resizing_sbt6 >();
100 CPPUNIT_MESSAGE( "copy_item");
101 typedef cc::StripedSet< sequence_t
102 , co::hash< hash_int >
103 , co::compare< cmp<item> >
104 , co::copy_policy< cc::striped_set::copy_item >
106 test_striped2< set_copy_item >();
108 CPPUNIT_MESSAGE( "swap_item");
109 typedef cc::StripedSet< sequence_t
110 , co::hash< hash_int >
111 , co::compare< cmp<item> >
112 , co::copy_policy< cc::striped_set::swap_item >
114 test_striped2< set_swap_item >();
116 CPPUNIT_MESSAGE( "move_item");
117 typedef cc::StripedSet< sequence_t
118 , co::hash< hash_int >
119 , co::compare< cmp<item> >
120 , co::copy_policy< cc::striped_set::move_item >
122 test_striped2< set_move_item >();
124 CPPUNIT_MESSAGE( "special copy_item");
125 typedef cc::StripedSet< sequence_t
126 , co::hash< hash_int >
127 , co::compare< cmp<item> >
128 , co::copy_policy< my_copy_policy >
129 > set_special_copy_item;
130 test_striped2< set_special_copy_item >();
135 CPPUNIT_TEST_SUITE_REGISTRATION(set::StripedSetHdrTest);