Skip to content

Commit aed7857

Browse files
authored
Merge pull request #3591 from tautschnig/unit-test-bits
Unit test of expr2bits/bits2expr [blocks: #3592]
2 parents 94ebd97 + c384b09 commit aed7857

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

unit/util/simplify_expr.cpp

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
#include <util/namespace.h>
1717
#include <util/pointer_predicates.h>
1818
#include <util/simplify_expr.h>
19+
#include <util/simplify_expr_class.h>
1920
#include <util/std_expr.h>
2021
#include <util/symbol_table.h>
2122

@@ -80,3 +81,28 @@ TEST_CASE("Simplify byte extract")
8081

8182
REQUIRE(simp == s);
8283
}
84+
85+
TEST_CASE("expr2bits and bits2expr respect bit order")
86+
{
87+
symbol_tablet symbol_table;
88+
namespacet ns(symbol_table);
89+
simplify_exprt simp(ns);
90+
91+
exprt deadbeef = from_integer(0xdeadbeef, unsignedbv_typet(32));
92+
93+
const auto le = simp.expr2bits(deadbeef, true);
94+
REQUIRE(le.has_value());
95+
REQUIRE(le->size() == 32);
96+
97+
const exprt should_be_deadbeef1 =
98+
simp.bits2expr(*le, unsignedbv_typet(32), true);
99+
REQUIRE(deadbeef == should_be_deadbeef1);
100+
101+
const auto be = simp.expr2bits(deadbeef, false);
102+
REQUIRE(be.has_value());
103+
REQUIRE(be->size() == 32);
104+
105+
const exprt should_be_deadbeef2 =
106+
simp.bits2expr(*be, unsignedbv_typet(32), false);
107+
REQUIRE(deadbeef == should_be_deadbeef2);
108+
}

0 commit comments

Comments
 (0)