32TEST(Expression, AccessorTest) {
43 ASSERT_NO_THROW(trueExpression = manager->boolean(
true));
44 ASSERT_NO_THROW(falseExpression = manager->boolean(
false));
45 ASSERT_NO_THROW(threeExpression = manager->integer(3));
46 ASSERT_NO_THROW(piExpression = manager->rational(3.14));
47 ASSERT_NO_THROW(boolVarExpression = manager->declareBooleanVariable(
"x"));
48 ASSERT_NO_THROW(intVarExpression = manager->declareIntegerVariable(
"y"));
49 ASSERT_NO_THROW(rationalVarExpression = manager->declareRationalVariable(
"z"));
53 EXPECT_TRUE(trueExpression.
isTrue());
54 EXPECT_FALSE(trueExpression.
isFalse());
55 EXPECT_TRUE(trueExpression.
getVariables() == std::set<storm::expressions::Variable>());
59 EXPECT_FALSE(falseExpression.
isTrue());
60 EXPECT_TRUE(falseExpression.
isFalse());
61 EXPECT_TRUE(falseExpression.
getVariables() == std::set<storm::expressions::Variable>());
65 EXPECT_FALSE(threeExpression.
isTrue());
66 EXPECT_FALSE(threeExpression.
isFalse());
67 EXPECT_TRUE(threeExpression.
getVariables() == std::set<storm::expressions::Variable>());
71 EXPECT_FALSE(piExpression.
isTrue());
72 EXPECT_FALSE(piExpression.
isFalse());
73 EXPECT_TRUE(piExpression.
getVariables() == std::set<storm::expressions::Variable>());
76 EXPECT_FALSE(boolVarExpression.
isLiteral());
77 EXPECT_FALSE(boolVarExpression.
isTrue());
78 EXPECT_FALSE(boolVarExpression.
isFalse());
79 EXPECT_TRUE(boolVarExpression.
getVariables() == std::set<storm::expressions::Variable>({manager->getVariable(
"x")}));
82 EXPECT_FALSE(intVarExpression.
isLiteral());
83 EXPECT_FALSE(intVarExpression.
isTrue());
84 EXPECT_FALSE(intVarExpression.
isFalse());
85 EXPECT_TRUE(intVarExpression.
getVariables() == std::set<storm::expressions::Variable>({manager->getVariable(
"y")}));
88 EXPECT_FALSE(rationalVarExpression.
isLiteral());
89 EXPECT_FALSE(rationalVarExpression.
isTrue());
90 EXPECT_FALSE(rationalVarExpression.
isFalse());
91 EXPECT_TRUE(rationalVarExpression.
getVariables() == std::set<storm::expressions::Variable>({manager->getVariable(
"z")}));
94TEST(Expression, OperatorTest) {
105 ASSERT_NO_THROW(trueExpression = manager->boolean(
true));
106 ASSERT_NO_THROW(falseExpression = manager->boolean(
false));
107 ASSERT_NO_THROW(threeExpression = manager->integer(3));
108 ASSERT_NO_THROW(piExpression = manager->rational(3.14));
109 ASSERT_NO_THROW(boolVarExpression = manager->declareBooleanVariable(
"x"));
110 ASSERT_NO_THROW(intVarExpression = manager->declareIntegerVariable(
"y"));
111 ASSERT_NO_THROW(rationalVarExpression = manager->declareRationalVariable(
"z"));
116 ASSERT_NO_THROW(tempExpression =
storm::expressions::ite(boolVarExpression, threeExpression, rationalVarExpression));
118 ASSERT_NO_THROW(tempExpression =
storm::expressions::ite(boolVarExpression, threeExpression, intVarExpression));
124 ASSERT_NO_THROW(tempExpression = threeExpression + threeExpression);
126 ASSERT_NO_THROW(tempExpression = threeExpression + piExpression);
128 ASSERT_NO_THROW(tempExpression = rationalVarExpression + rationalVarExpression);
132 ASSERT_NO_THROW(tempExpression = threeExpression - threeExpression);
134 ASSERT_NO_THROW(tempExpression = threeExpression - piExpression);
136 ASSERT_NO_THROW(tempExpression = rationalVarExpression - rationalVarExpression);
140 ASSERT_NO_THROW(tempExpression = -threeExpression);
142 ASSERT_NO_THROW(tempExpression = -piExpression);
144 ASSERT_NO_THROW(tempExpression = -rationalVarExpression);
148 ASSERT_NO_THROW(tempExpression = threeExpression * threeExpression);
150 ASSERT_NO_THROW(tempExpression = threeExpression * piExpression);
152 ASSERT_NO_THROW(tempExpression = intVarExpression * intVarExpression);
156 ASSERT_NO_THROW(tempExpression = threeExpression / threeExpression);
158 ASSERT_NO_THROW(tempExpression = threeExpression / piExpression);
160 ASSERT_NO_THROW(tempExpression = rationalVarExpression / intVarExpression);
164 ASSERT_NO_THROW(tempExpression = trueExpression && falseExpression);
166 ASSERT_NO_THROW(tempExpression = boolVarExpression && boolVarExpression);
170 ASSERT_NO_THROW(tempExpression = trueExpression || falseExpression);
172 ASSERT_NO_THROW(tempExpression = boolVarExpression || boolVarExpression);
176 ASSERT_NO_THROW(tempExpression = !trueExpression);
178 ASSERT_NO_THROW(tempExpression = !boolVarExpression);
182 ASSERT_NO_THROW(tempExpression = threeExpression == threeExpression);
184 ASSERT_NO_THROW(tempExpression = intVarExpression == rationalVarExpression);
188 ASSERT_NO_THROW(tempExpression = threeExpression != threeExpression);
190 ASSERT_NO_THROW(tempExpression = intVarExpression != rationalVarExpression);
194 ASSERT_NO_THROW(tempExpression = threeExpression > threeExpression);
196 ASSERT_NO_THROW(tempExpression = intVarExpression > rationalVarExpression);
200 ASSERT_NO_THROW(tempExpression = threeExpression >= threeExpression);
202 ASSERT_NO_THROW(tempExpression = intVarExpression >= rationalVarExpression);
206 ASSERT_NO_THROW(tempExpression = threeExpression < threeExpression);
208 ASSERT_NO_THROW(tempExpression = intVarExpression < rationalVarExpression);
212 ASSERT_NO_THROW(tempExpression = threeExpression <= threeExpression);
214 ASSERT_NO_THROW(tempExpression = intVarExpression <= rationalVarExpression);
218 ASSERT_NO_THROW(tempExpression = threeExpression % threeExpression);
220 ASSERT_NO_THROW(tempExpression = threeExpression % piExpression);
222 ASSERT_NO_THROW(tempExpression = piExpression % threeExpression);
224 ASSERT_NO_THROW(tempExpression = piExpression % piExpression);
262 ASSERT_NO_THROW(tempExpression = trueExpression != falseExpression);
264 ASSERT_NO_THROW(tempExpression = boolVarExpression != boolVarExpression);