6
6
#include < util/c_types.h>
7
7
#include < util/mathematical_types.h>
8
8
#include < util/namespace.h>
9
+ #include < util/simplify_expr.h>
9
10
#include < util/symbol_table.h>
10
11
11
12
#include < solvers/smt2_incremental/encoding/nondet_padding.h>
@@ -242,12 +243,16 @@ TEST_CASE("struct encoding of expressions", "[core][smt2_incremental]")
242
243
symbol_expr,
243
244
make_member_name_expression (" green" ),
244
245
from_integer (0 , signedbv_typet{32 })};
245
- const concatenation_exprt expected{
246
- {from_integer (0 , signedbv_typet{32 }),
247
- extractbits_exprt{symbol_expr_as_bv, 24 , unsignedbv_typet{16 }},
248
- extractbits_exprt{symbol_expr_as_bv, 0 , signedbv_typet{24 }}},
249
- bv_typet{72 }};
250
- REQUIRE (test.struct_encoding .encode (with) == expected);
246
+ const exprt expected = simplify_expr (
247
+ concatenation_exprt{
248
+ {from_integer (0 , signedbv_typet{32 }),
249
+ extractbits_exprt{symbol_expr_as_bv, 24 , unsignedbv_typet{16 }},
250
+ extractbits_exprt{symbol_expr_as_bv, 0 , signedbv_typet{24 }}},
251
+ bv_typet{72 }},
252
+ test.ns );
253
+ const exprt encoded =
254
+ simplify_expr (test.struct_encoding .encode (with), test.ns );
255
+ REQUIRE (encoded == expected);
251
256
}
252
257
SECTION (" Second member" )
253
258
{
@@ -268,20 +273,26 @@ TEST_CASE("struct encoding of expressions", "[core][smt2_incremental]")
268
273
symbol_expr,
269
274
make_member_name_expression (" ham" ),
270
275
from_integer (0 , signedbv_typet{24 })};
271
- const concatenation_exprt expected{
272
- {extractbits_exprt{symbol_expr_as_bv, 40 , signedbv_typet{32 }},
273
- extractbits_exprt{symbol_expr_as_bv, 24 , unsignedbv_typet{16 }},
274
- from_integer (0 , signedbv_typet{24 })},
275
- bv_typet{72 }};
276
- REQUIRE (test.struct_encoding .encode (with) == expected);
276
+ const exprt expected = simplify_expr (
277
+ concatenation_exprt{
278
+ {extractbits_exprt{symbol_expr_as_bv, 40 , signedbv_typet{32 }},
279
+ extractbits_exprt{symbol_expr_as_bv, 24 , unsignedbv_typet{16 }},
280
+ from_integer (0 , signedbv_typet{24 })},
281
+ bv_typet{72 }},
282
+ test.ns );
283
+ const exprt encoded =
284
+ simplify_expr (test.struct_encoding .encode (with), test.ns );
285
+ REQUIRE (encoded == expected);
277
286
}
278
287
SECTION (" First and second members" )
279
288
{
280
- const concatenation_exprt expected{
281
- {from_integer (0 , signedbv_typet{32 }),
282
- from_integer (1 , unsignedbv_typet{16 }),
283
- extractbits_exprt{symbol_expr_as_bv, 0 , signedbv_typet{24 }}},
284
- bv_typet{72 }};
289
+ const exprt expected = simplify_expr (
290
+ concatenation_exprt{
291
+ {from_integer (0 , signedbv_typet{32 }),
292
+ from_integer (1 , unsignedbv_typet{16 }),
293
+ extractbits_exprt{symbol_expr_as_bv, 0 , signedbv_typet{24 }}},
294
+ bv_typet{72 }},
295
+ test.ns );
285
296
SECTION (" Operands in field order" )
286
297
{
287
298
with_exprt with_in_order{
@@ -291,7 +302,9 @@ TEST_CASE("struct encoding of expressions", "[core][smt2_incremental]")
291
302
with_in_order.operands ().push_back (make_member_name_expression (" eggs" ));
292
303
with_in_order.operands ().push_back (
293
304
from_integer (1 , unsignedbv_typet{16 }));
294
- REQUIRE (test.struct_encoding .encode (with_in_order) == expected);
305
+ const exprt encoded =
306
+ simplify_expr (test.struct_encoding .encode (with_in_order), test.ns );
307
+ REQUIRE (encoded == expected);
295
308
}
296
309
SECTION (" Operands in reverse order vs fields" )
297
310
{
@@ -302,16 +315,20 @@ TEST_CASE("struct encoding of expressions", "[core][smt2_incremental]")
302
315
with_reversed.operands ().push_back (
303
316
make_member_name_expression (" green" ));
304
317
with_reversed.operands ().push_back (from_integer (0 , signedbv_typet{32 }));
305
- REQUIRE (test.struct_encoding .encode (with_reversed) == expected);
318
+ const exprt encoded =
319
+ simplify_expr (test.struct_encoding .encode (with_reversed), test.ns );
320
+ REQUIRE (encoded == expected);
306
321
}
307
322
}
308
323
SECTION (" First and third members" )
309
324
{
310
- const concatenation_exprt expected{
311
- {from_integer (0 , signedbv_typet{32 }),
312
- extractbits_exprt{symbol_expr_as_bv, 24 , unsignedbv_typet{16 }},
313
- from_integer (1 , signedbv_typet{24 })},
314
- bv_typet{72 }};
325
+ const exprt expected = simplify_expr (
326
+ concatenation_exprt{
327
+ {from_integer (0 , signedbv_typet{32 }),
328
+ extractbits_exprt{symbol_expr_as_bv, 24 , unsignedbv_typet{16 }},
329
+ from_integer (1 , signedbv_typet{24 })},
330
+ bv_typet{72 }},
331
+ test.ns );
315
332
SECTION (" Operands in field order" )
316
333
{
317
334
with_exprt with_in_order{
@@ -320,7 +337,9 @@ TEST_CASE("struct encoding of expressions", "[core][smt2_incremental]")
320
337
from_integer (0 , signedbv_typet{32 })};
321
338
with_in_order.operands ().push_back (make_member_name_expression (" ham" ));
322
339
with_in_order.operands ().push_back (from_integer (1 , signedbv_typet{24 }));
323
- REQUIRE (test.struct_encoding .encode (with_in_order) == expected);
340
+ const exprt encoded =
341
+ simplify_expr (test.struct_encoding .encode (with_in_order), test.ns );
342
+ REQUIRE (encoded == expected);
324
343
}
325
344
SECTION (" Operands in reverse order vs fields" )
326
345
{
@@ -331,16 +350,20 @@ TEST_CASE("struct encoding of expressions", "[core][smt2_incremental]")
331
350
with_reversed.operands ().push_back (
332
351
make_member_name_expression (" green" ));
333
352
with_reversed.operands ().push_back (from_integer (0 , signedbv_typet{32 }));
334
- REQUIRE (test.struct_encoding .encode (with_reversed) == expected);
353
+ const exprt encoded =
354
+ simplify_expr (test.struct_encoding .encode (with_reversed), test.ns );
355
+ REQUIRE (encoded == expected);
335
356
}
336
357
}
337
358
SECTION (" Second and third members" )
338
359
{
339
- const concatenation_exprt expected{
340
- {extractbits_exprt{symbol_expr_as_bv, 40 , signedbv_typet{32 }},
341
- from_integer (0 , unsignedbv_typet{16 }),
342
- from_integer (1 , signedbv_typet{24 })},
343
- bv_typet{72 }};
360
+ const exprt expected = simplify_expr (
361
+ concatenation_exprt{
362
+ {extractbits_exprt{symbol_expr_as_bv, 40 , signedbv_typet{32 }},
363
+ from_integer (0 , unsignedbv_typet{16 }),
364
+ from_integer (1 , signedbv_typet{24 })},
365
+ bv_typet{72 }},
366
+ test.ns );
344
367
SECTION (" Operands in field order" )
345
368
{
346
369
with_exprt with_in_order{
@@ -349,7 +372,9 @@ TEST_CASE("struct encoding of expressions", "[core][smt2_incremental]")
349
372
from_integer (0 , unsignedbv_typet{16 })};
350
373
with_in_order.operands ().push_back (make_member_name_expression (" ham" ));
351
374
with_in_order.operands ().push_back (from_integer (1 , signedbv_typet{24 }));
352
- REQUIRE (test.struct_encoding .encode (with_in_order) == expected);
375
+ const exprt encoded =
376
+ simplify_expr (test.struct_encoding .encode (with_in_order), test.ns );
377
+ REQUIRE (encoded == expected);
353
378
}
354
379
SECTION (" Operands in reverse order vs fields" )
355
380
{
@@ -360,16 +385,20 @@ TEST_CASE("struct encoding of expressions", "[core][smt2_incremental]")
360
385
with_reversed.operands ().push_back (make_member_name_expression (" eggs" ));
361
386
with_reversed.operands ().push_back (
362
387
from_integer (0 , unsignedbv_typet{16 }));
363
- REQUIRE (test.struct_encoding .encode (with_reversed) == expected);
388
+ const exprt encoded =
389
+ simplify_expr (test.struct_encoding .encode (with_reversed), test.ns );
390
+ REQUIRE (encoded == expected);
364
391
}
365
392
}
366
393
SECTION (" All members" )
367
394
{
368
- const concatenation_exprt expected{
369
- {from_integer (1 , signedbv_typet{32 }),
370
- from_integer (2 , unsignedbv_typet{16 }),
371
- from_integer (3 , signedbv_typet{24 })},
372
- bv_typet{72 }};
395
+ const exprt expected = simplify_expr (
396
+ concatenation_exprt{
397
+ {from_integer (1 , signedbv_typet{32 }),
398
+ from_integer (2 , unsignedbv_typet{16 }),
399
+ from_integer (3 , signedbv_typet{24 })},
400
+ bv_typet{72 }},
401
+ test.ns );
373
402
SECTION (" Operands in field order" )
374
403
{
375
404
with_exprt with{
@@ -380,7 +409,9 @@ TEST_CASE("struct encoding of expressions", "[core][smt2_incremental]")
380
409
with.operands ().push_back (from_integer (2 , unsignedbv_typet{16 }));
381
410
with.operands ().push_back (make_member_name_expression (" ham" ));
382
411
with.operands ().push_back (from_integer (3 , signedbv_typet{24 }));
383
- REQUIRE (test.struct_encoding .encode (with) == expected);
412
+ const exprt encoded =
413
+ simplify_expr (test.struct_encoding .encode (with), test.ns );
414
+ REQUIRE (encoded == expected);
384
415
}
385
416
SECTION (" Operands out of order vs fields" )
386
417
{
@@ -392,7 +423,9 @@ TEST_CASE("struct encoding of expressions", "[core][smt2_incremental]")
392
423
with.operands ().push_back (from_integer (3 , signedbv_typet{24 }));
393
424
with.operands ().push_back (make_member_name_expression (" green" ));
394
425
with.operands ().push_back (from_integer (1 , signedbv_typet{32 }));
395
- REQUIRE (test.struct_encoding .encode (with) == expected);
426
+ const exprt encoded =
427
+ simplify_expr (test.struct_encoding .encode (with), test.ns );
428
+ REQUIRE (encoded == expected);
396
429
}
397
430
}
398
431
}
0 commit comments