19TEST_F(HashVisitorTest, SyntacticallyEqualExpressionsHashEqually) {
20 auto manager = std::make_shared<storm::expressions::ExpressionManager>();
21 auto x = manager->declareBooleanVariable(
"x");
22 auto p = manager->declareRationalVariable(
"p");
23 auto q = manager->declareRationalVariable(
"q");
26 EXPECT_EQ(hash(x && x), hash(x && x));
27 EXPECT_EQ(hash((x && !x) || x), hash((x && !x) || x));
28 EXPECT_EQ(hash(p <= q), hash(p <= q));
29 EXPECT_EQ(hash(manager->integer(3) + manager->integer(4)), hash(manager->integer(3) + manager->integer(4)));
30 EXPECT_EQ(hash(manager->rational(3.5)), hash(manager->rational(3.5)));
31 EXPECT_EQ(hash(manager->boolean(
true)), hash(manager->boolean(
true)));
36 auto right = (x && x);
37 ASSERT_TRUE(left.isSyntacticallyEqual(right));
38 EXPECT_EQ(hash(left), hash(right));
41TEST_F(HashVisitorTest, DifferentExpressionsHashDifferently) {
42 auto manager = std::make_shared<storm::expressions::ExpressionManager>();
43 auto x = manager->declareBooleanVariable(
"x");
44 auto y = manager->declareBooleanVariable(
"y");
45 auto p = manager->declareRationalVariable(
"p");
46 auto q = manager->declareRationalVariable(
"q");
49 EXPECT_NE(hash(x), hash(y));
52 EXPECT_NE(hash(x && x), hash(x || x));
55 EXPECT_NE(hash(x && x), hash(x && y));
58 EXPECT_NE(hash(manager->integer(3)), hash(manager->integer(4)));
59 EXPECT_NE(hash(manager->boolean(
true)), hash(manager->boolean(
false)));
60 EXPECT_NE(hash(manager->rational(3.5)), hash(manager->rational(4.5)));
64 EXPECT_NE(hash(manager->integer(2)), hash(manager->rational(2.0)));
65 EXPECT_NE(hash(x), hash(manager->boolean(
true)));
68 EXPECT_NE(hash(p <= q), hash(p >= q));
71 EXPECT_NE(hash(p <= q), hash(q <= p));
74TEST_F(HashVisitorTest, NestedExpressionsPropagateChangesFromChildren) {
75 auto manager = std::make_shared<storm::expressions::ExpressionManager>();
76 auto x = manager->declareBooleanVariable(
"x");
77 auto y = manager->declareBooleanVariable(
"y");
81 EXPECT_NE(hash((x && x) || (x && x)), hash((x && y) || (x && y)));
109TEST_F(HashVisitorTest, PredicateExpressionsCompareSyntactically) {
110 auto manager = std::make_shared<storm::expressions::ExpressionManager>();
111 auto x = manager->declareBooleanVariable(
"x");
112 auto y = manager->declareBooleanVariable(
"y");
126TEST_F(HashVisitorTest, PredicatesNestedInExpressionsAreHashed) {
127 auto manager = std::make_shared<storm::expressions::ExpressionManager>();
128 auto x = manager->declareBooleanVariable(
"x");
129 auto y = manager->declareBooleanVariable(
"y");
130 auto z = manager->declareBooleanVariable(
"z");
131 auto p = manager->declareRationalVariable(
"p");
155TEST_F(HashVisitorTest, HashIsStableAcrossCalls) {
156 auto manager = std::make_shared<storm::expressions::ExpressionManager>();
157 auto p = manager->declareRationalVariable(
"p");
161 auto expression = (p <= manager->integer(1));
162 auto const first = hash(expression);
163 for (
int i = 0; i < 5; ++i) {
164 EXPECT_EQ(first, hash(expression));
169 EXPECT_EQ(first, fresh.
hash(expression));