1
- #include < iostream>
2
- #include < cassert>
1
+ /* ******************************************************************\
2
+
3
+ Module: Unit tests for sharing map
4
+
5
+ Author: Daniel Poetzl
6
+
7
+ \*******************************************************************/
3
8
4
9
#include < util/sharing_map.h>
10
+ #include < testing-utils/catch.hpp>
5
11
6
12
typedef sharing_mapt<irep_idt, std::string, irep_id_hash> smt;
7
13
@@ -24,50 +30,48 @@ void fill2(smt &sm)
24
30
25
31
void sharing_map_interface_test ()
26
32
{
27
- std::cout << " Running interface test" << std::endl;
28
-
29
- // empty map
33
+ SECTION (" Empty map" )
30
34
{
31
35
smt sm;
32
36
33
- assert (sm.empty ());
34
- assert (sm.size ()== 0 );
35
- assert (!sm.has_key (" i" ));
37
+ REQUIRE (sm.empty ());
38
+ REQUIRE (sm.size () == 0 );
39
+ REQUIRE (!sm.has_key (" i" ));
36
40
}
37
41
38
- // insert elements
42
+ SECTION ( " Insert elements" )
39
43
{
40
44
smt sm;
41
45
42
46
smt::const_find_type r1=sm.insert (std::make_pair (" i" , " 0" ));
43
- assert (r1.second );
47
+ REQUIRE (r1.second );
44
48
45
49
smt::const_find_type r2=sm.insert (" j" , " 1" );
46
- assert (r2.second );
50
+ REQUIRE (r2.second );
47
51
48
52
smt::const_find_type r3=sm.insert (std::make_pair (" i" , " 0" ));
49
- assert (!r3.second );
53
+ REQUIRE (!r3.second );
50
54
51
- assert (sm.size ()== 2 );
52
- assert (!sm.empty ());
55
+ REQUIRE (sm.size () == 2 );
56
+ REQUIRE (!sm.empty ());
53
57
}
54
58
55
- // place elements
59
+ SECTION ( " Place elements" )
56
60
{
57
61
smt sm1;
58
62
smt sm2 (sm1);
59
63
60
64
smt::find_type r1=sm1.place (" i" , " 0" );
61
- assert (r1.second );
62
- assert (!sm2.has_key (" i" ));
65
+ REQUIRE (r1.second );
66
+ REQUIRE (!sm2.has_key (" i" ));
63
67
64
68
std::string &s1=r1.first ;
65
69
s1=" 1" ;
66
70
67
- assert (sm1.at (" i" )== " 1" );
71
+ REQUIRE (sm1.at (" i" ) == " 1" );
68
72
}
69
73
70
- // retrieve elements
74
+ SECTION ( " Retrieve elements" )
71
75
{
72
76
smt sm;
73
77
sm.insert (" i" , " 0" );
@@ -77,109 +81,107 @@ void sharing_map_interface_test()
77
81
78
82
std::string s;
79
83
s=sm2.at (" i" );
80
- assert (s== " 0" );
84
+ REQUIRE (s == " 0" );
81
85
82
86
try {
83
87
sm2.at (" k" );
84
- assert (false );
88
+ REQUIRE (false );
85
89
} catch (...) {}
86
90
87
91
s=sm2.at (" j" );
88
- assert (s== " 1" );
92
+ REQUIRE (s == " 1" );
89
93
90
- assert (sm.has_key (" i" ));
91
- assert (sm.has_key (" j" ));
92
- assert (!sm.has_key (" k" ));
94
+ REQUIRE (sm.has_key (" i" ));
95
+ REQUIRE (sm.has_key (" j" ));
96
+ REQUIRE (!sm.has_key (" k" ));
93
97
94
98
std::string &s2=sm.at (" i" );
95
99
s2=" 3" ;
96
- assert (sm2.at (" i" )== " 3" );
100
+ REQUIRE (sm2.at (" i" ) == " 3" );
97
101
98
- assert (sm.size ()== 2 );
102
+ REQUIRE (sm.size () == 2 );
99
103
100
104
smt::find_type r=sm.find (" i" );
101
- assert (r.second );
105
+ REQUIRE (r.second );
102
106
r.first =" 4" ;
103
- assert (sm2.at (" i" )== " 4" );
107
+ REQUIRE (sm2.at (" i" ) == " 4" );
104
108
105
109
smt::const_find_type rc=sm2.find (" k" );
106
- assert (!rc.second );
110
+ REQUIRE (!rc.second );
107
111
}
108
112
109
- // remove elements
113
+ SECTION ( " Remove elements" )
110
114
{
111
115
smt sm;
112
116
sm.insert (" i" , " 0" );
113
117
sm.insert (" j" , " 1" );
114
118
115
- assert (sm.erase (" k" )== 0 );
116
- assert (sm.size ()== 2 );
119
+ REQUIRE (sm.erase (" k" ) == 0 );
120
+ REQUIRE (sm.size () == 2 );
117
121
118
- assert (sm.erase (" i" )== 1 );
119
- assert (!sm.has_key (" i" ));
122
+ REQUIRE (sm.erase (" i" ) == 1 );
123
+ REQUIRE (!sm.has_key (" i" ));
120
124
121
- assert (sm.erase (" j" )== 1 );
122
- assert (!sm.has_key (" j" ));
125
+ REQUIRE (sm.erase (" j" ) == 1 );
126
+ REQUIRE (!sm.has_key (" j" ));
123
127
124
128
sm.insert (" i" , " 0" );
125
129
sm.insert (" j" , " 1" );
126
130
127
131
smt sm3 (sm);
128
-
129
- assert (sm.has_key (" i" ));
130
- assert (sm.has_key (" j" ));
131
- assert (sm3.has_key (" i" ));
132
- assert (sm3.has_key (" j" ));
132
+
133
+ REQUIRE (sm.has_key (" i" ));
134
+ REQUIRE (sm.has_key (" j" ));
135
+ REQUIRE (sm3.has_key (" i" ));
136
+ REQUIRE (sm3.has_key (" j" ));
133
137
134
138
sm.erase (" i" );
135
139
136
- assert (!sm.has_key (" i" ));
137
- assert (sm.has_key (" j" ));
140
+ REQUIRE (!sm.has_key (" i" ));
141
+ REQUIRE (sm.has_key (" j" ));
138
142
139
- assert (sm3.has_key (" i" ));
140
- assert (sm3.has_key (" j" ));
143
+ REQUIRE (sm3.has_key (" i" ));
144
+ REQUIRE (sm3.has_key (" j" ));
141
145
142
146
sm3.erase (" i" );
143
- assert (!sm3.has_key (" i" ));
147
+ REQUIRE (!sm3.has_key (" i" ));
144
148
}
145
149
146
- // operator[]
150
+ SECTION ( " Subscript operator" )
147
151
{
148
152
smt sm;
149
153
150
154
sm[" i" ];
151
- assert (sm.has_key (" i" ));
155
+ REQUIRE (sm.has_key (" i" ));
152
156
153
157
sm[" i" ]=" 0" ;
154
- assert (sm.at (" i" )== " 0" );
158
+ REQUIRE (sm.at (" i" ) == " 0" );
155
159
156
160
sm[" j" ]=" 1" ;
157
- assert (sm.at (" j" )== " 1" );
161
+ REQUIRE (sm.at (" j" ) == " 1" );
158
162
}
159
163
}
160
164
161
165
void sharing_map_copy_test ()
162
166
{
163
- std::cout << " Running copy test" << std::endl;
164
-
165
167
smt sm1;
166
168
const smt &sm2=sm1;
167
169
168
170
fill (sm1);
169
171
170
- assert (sm2.find (" i" ).first == " 0" );
171
- assert (sm2.find (" j" ).first == " 1" );
172
- assert (sm2.find (" k" ).first == " 2" );
172
+ REQUIRE (sm2.find (" i" ).first == " 0" );
173
+ REQUIRE (sm2.find (" j" ).first == " 1" );
174
+ REQUIRE (sm2.find (" k" ).first == " 2" );
173
175
174
176
smt sm3=sm1;
175
177
const smt &sm4=sm3;
176
178
177
- assert (sm3.erase (" l" )== 0 );
178
- assert (sm3.erase (" i" )== 1 );
179
+ REQUIRE (sm3.erase (" l" ) == 0 );
180
+ REQUIRE (sm3.erase (" i" ) == 1 );
179
181
180
- assert (!sm4.has_key (" i" ));
182
+ REQUIRE (!sm4.has_key (" i" ));
181
183
sm3.place (" i" , " 3" );
182
- assert (sm4.find (" i" ).first == " 3" );
184
+ REQUIRE (sm4.find (" i" ).first == " 3" );
183
185
}
184
186
185
187
class some_keyt
@@ -208,8 +210,6 @@ class some_key_hash
208
210
209
211
void sharing_map_collision_test ()
210
212
{
211
- std::cout << " Running collision test" << std::endl;
212
-
213
213
typedef sharing_mapt<some_keyt, std::string, some_key_hash> smt;
214
214
215
215
smt sm;
@@ -223,20 +223,18 @@ void sharing_map_collision_test()
223
223
224
224
sm.erase (8 );
225
225
226
- assert (sm.has_key (0 ));
227
- assert (sm.has_key (16 ));
226
+ REQUIRE (sm.has_key (0 ));
227
+ REQUIRE (sm.has_key (16 ));
228
228
229
- assert (sm.has_key (1 ));
230
- assert (sm.has_key (2 ));
229
+ REQUIRE (sm.has_key (1 ));
230
+ REQUIRE (sm.has_key (2 ));
231
231
232
- assert (!sm.has_key (8 ));
232
+ REQUIRE (!sm.has_key (8 ));
233
233
}
234
234
235
235
void sharing_map_view_test ()
236
236
{
237
- std::cout << " Running view test" << std::endl;
238
-
239
- // view test
237
+ SECTION (" View" )
240
238
{
241
239
smt sm;
242
240
@@ -245,10 +243,10 @@ void sharing_map_view_test()
245
243
smt::viewt view;
246
244
sm.get_view (view);
247
245
248
- assert (view.size ()== 3 );
246
+ REQUIRE (view.size () == 3 );
249
247
}
250
248
251
- // delta view test (no sharing, same keys)
249
+ SECTION ( " Delta view (no sharing, same keys) " )
252
250
{
253
251
smt sm1;
254
252
fill (sm1);
@@ -259,14 +257,14 @@ void sharing_map_view_test()
259
257
smt::delta_viewt delta_view;
260
258
261
259
sm1.get_delta_view (sm2, delta_view);
262
- assert (delta_view.size ()== 3 );
260
+ REQUIRE (delta_view.size () == 3 );
263
261
264
262
delta_view.clear ();
265
263
sm1.get_delta_view (sm2, delta_view, false );
266
- assert (delta_view.size ()== 3 );
264
+ REQUIRE (delta_view.size () == 3 );
267
265
}
268
266
269
- // delta view test (all shared, same keys)
267
+ SECTION ( " delta view (all shared, same keys) " )
270
268
{
271
269
smt sm1;
272
270
fill (sm1);
@@ -276,36 +274,36 @@ void sharing_map_view_test()
276
274
smt::delta_viewt delta_view;
277
275
278
276
sm1.get_delta_view (sm2, delta_view);
279
- assert (delta_view.size ()== 0 );
277
+ REQUIRE (delta_view.size () == 0 );
280
278
281
279
delta_view.clear ();
282
280
sm1.get_delta_view (sm2, delta_view, false );
283
- assert (delta_view.size ()== 0 );
281
+ REQUIRE (delta_view.size () == 0 );
284
282
}
285
283
286
- // delta view test (some sharing, same keys)
284
+ SECTION ( " delta view (some sharing, same keys) " )
287
285
{
288
286
smt sm1;
289
287
fill (sm1);
290
288
291
289
smt sm2 (sm1);
292
290
auto r=sm2.find (" i" );
293
- assert (r.second );
291
+ REQUIRE (r.second );
294
292
r.first =" 3" ;
295
293
296
294
smt::delta_viewt delta_view;
297
295
298
296
sm1.get_delta_view (sm2, delta_view);
299
- assert (delta_view.size ()> 0 ); // not everything is shared
300
- assert (delta_view.size ()< 3 ); // there is some sharing
297
+ REQUIRE (delta_view.size () > 0 ); // not everything is shared
298
+ REQUIRE (delta_view.size () < 3 ); // there is some sharing
301
299
302
300
delta_view.clear ();
303
301
sm1.get_delta_view (sm2, delta_view, false );
304
- assert (delta_view.size ()> 0 ); // not everything is shared
305
- assert (delta_view.size ()< 3 ); // there is some sharing
302
+ REQUIRE (delta_view.size () > 0 ); // not everything is shared
303
+ REQUIRE (delta_view.size () < 3 ); // there is some sharing
306
304
}
307
305
308
- // delta view test (no sharing, different keys)
306
+ SECTION ( " delta view (no sharing, different keys) " )
309
307
{
310
308
smt sm1;
311
309
fill (sm1);
@@ -316,21 +314,30 @@ void sharing_map_view_test()
316
314
smt::delta_viewt delta_view;
317
315
318
316
sm1.get_delta_view (sm2, delta_view);
319
- assert (delta_view.size ()== 0 );
317
+ REQUIRE (delta_view.size () == 0 );
320
318
321
319
delta_view.clear ();
322
320
sm1.get_delta_view (sm2, delta_view, false );
323
- assert (delta_view.size ()== 3 );
321
+ REQUIRE (delta_view.size () == 3 );
324
322
}
325
323
}
326
324
327
- int main ( )
325
+ TEST_CASE ( " Sharing map interface " )
328
326
{
329
327
sharing_map_interface_test ();
328
+ }
329
+
330
+ TEST_CASE (" Sharing map copying" )
331
+ {
330
332
sharing_map_copy_test ();
331
- sharing_map_collision_test ();
332
- sharing_map_view_test ();
333
+ }
333
334
334
- return 0 ;
335
+ TEST_CASE (" Sharing map collisions" )
336
+ {
337
+ sharing_map_collision_test ();
335
338
}
336
339
340
+ TEST_CASE (" Sharing map views" )
341
+ {
342
+ sharing_map_view_test ();
343
+ }
0 commit comments