Skip to content

Commit 0304a01

Browse files
committed
Add valid type information to test
So that it is compatible with the new INVARIANT in the constructor of `member_exprt`.
1 parent 76915e3 commit 0304a01

File tree

1 file changed

+35
-10
lines changed

1 file changed

+35
-10
lines changed

unit/solvers/smt2_incremental/object_tracking.cpp

Lines changed: 35 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
// Author: Diffblue Ltd.
22

3+
#include <util/arith_tools.h>
34
#include <util/c_types.h>
45
#include <util/namespace.h>
56
#include <util/std_expr.h>
@@ -13,39 +14,63 @@
1314

1415
TEST_CASE("find_object_base_expression", "[core][smt2_incremental]")
1516
{
16-
const typet base_type = pointer_typet{unsignedbv_typet{8}, 18};
17-
const symbol_exprt object_base{"base", base_type};
18-
const symbol_exprt index{"index", base_type};
19-
const pointer_typet pointer_type{base_type, 12};
17+
const std::size_t pointer_bits = 64;
2018
SECTION("Address of symbol")
2119
{
22-
const address_of_exprt address_of{object_base, pointer_type};
20+
const typet base_type = unsignedbv_typet{8};
21+
const symbol_exprt object_base{"base", base_type};
22+
const address_of_exprt address_of{
23+
object_base, pointer_typet{base_type, pointer_bits}};
2324
CHECK(find_object_base_expression(address_of) == object_base);
2425
}
2526
SECTION("Address of index")
2627
{
28+
const unsignedbv_typet element_type{8};
29+
const signedbv_typet index_type{pointer_bits};
30+
const array_typet base_type{element_type, from_integer(42, index_type)};
31+
const symbol_exprt object_base{"base", base_type};
32+
const symbol_exprt index{"index", index_type};
33+
const pointer_typet pointer_type{element_type, pointer_bits};
2734
const address_of_exprt address_of{
2835
index_exprt{object_base, index}, pointer_type};
2936
CHECK(find_object_base_expression(address_of) == object_base);
3037
}
3138
SECTION("Address of struct member")
3239
{
40+
const struct_tag_typet base_type{"structt"};
41+
const symbol_exprt object_base{"base", base_type};
42+
const unsignedbv_typet member_type{8};
3343
const address_of_exprt address_of{
34-
member_exprt{object_base, "baz", unsignedbv_typet{8}}, pointer_type};
44+
member_exprt{object_base, "baz", member_type},
45+
pointer_typet{member_type, pointer_bits}};
3546
CHECK(find_object_base_expression(address_of) == object_base);
3647
}
3748
SECTION("Address of index of struct member")
3849
{
50+
const struct_tag_typet base_type{"structt"};
51+
const symbol_exprt object_base{"base", base_type};
52+
53+
const unsignedbv_typet element_type{8};
54+
const signedbv_typet index_type{pointer_bits};
55+
const array_typet member_type{element_type, from_integer(42, index_type)};
56+
const symbol_exprt index{"index", index_type};
57+
3958
const address_of_exprt address_of{
40-
index_exprt{member_exprt{object_base, "baz", base_type}, index},
41-
pointer_type};
59+
index_exprt{member_exprt{object_base, "baz", member_type}, index},
60+
pointer_typet{element_type, pointer_bits}};
4261
CHECK(find_object_base_expression(address_of) == object_base);
4362
}
4463
SECTION("Address of struct member at index")
4564
{
65+
const struct_tag_typet element_type{"struct_elementt"};
66+
const signedbv_typet index_type{pointer_bits};
67+
const array_typet base_type{element_type, from_integer(42, index_type)};
68+
const symbol_exprt object_base{"base", base_type};
69+
const symbol_exprt index{"index", index_type};
70+
const unsignedbv_typet member_type{8};
4671
const address_of_exprt address_of{
47-
member_exprt{index_exprt{object_base, index}, "baz", unsignedbv_typet{8}},
48-
pointer_type};
72+
member_exprt{index_exprt{object_base, index}, "qux", member_type},
73+
pointer_typet{member_type, pointer_bits}};
4974
CHECK(find_object_base_expression(address_of) == object_base);
5075
}
5176
}

0 commit comments

Comments
 (0)