27TEST(Expression, AccessorTest) {
38 ASSERT_NO_THROW(trueExpression = manager->boolean(
true));
39 ASSERT_NO_THROW(falseExpression = manager->boolean(
false));
40 ASSERT_NO_THROW(threeExpression = manager->integer(3));
41 ASSERT_NO_THROW(piExpression = manager->rational(3.14));
42 ASSERT_NO_THROW(boolVarExpression = manager->declareBooleanVariable(
"x"));
43 ASSERT_NO_THROW(intVarExpression = manager->declareIntegerVariable(
"y"));
44 ASSERT_NO_THROW(rationalVarExpression = manager->declareRationalVariable(
"z"));
48 EXPECT_TRUE(trueExpression.
isTrue());
49 EXPECT_FALSE(trueExpression.
isFalse());
50 EXPECT_TRUE(trueExpression.
getVariables() == std::set<storm::expressions::Variable>());
54 EXPECT_FALSE(falseExpression.
isTrue());
55 EXPECT_TRUE(falseExpression.
isFalse());
56 EXPECT_TRUE(falseExpression.
getVariables() == std::set<storm::expressions::Variable>());
60 EXPECT_FALSE(threeExpression.
isTrue());
61 EXPECT_FALSE(threeExpression.
isFalse());
62 EXPECT_TRUE(threeExpression.
getVariables() == std::set<storm::expressions::Variable>());
66 EXPECT_FALSE(piExpression.
isTrue());
67 EXPECT_FALSE(piExpression.
isFalse());
68 EXPECT_TRUE(piExpression.
getVariables() == std::set<storm::expressions::Variable>());
71 EXPECT_FALSE(boolVarExpression.
isLiteral());
72 EXPECT_FALSE(boolVarExpression.
isTrue());
73 EXPECT_FALSE(boolVarExpression.
isFalse());
74 EXPECT_TRUE(boolVarExpression.
getVariables() == std::set<storm::expressions::Variable>({manager->getVariable(
"x")}));
77 EXPECT_FALSE(intVarExpression.
isLiteral());
78 EXPECT_FALSE(intVarExpression.
isTrue());
79 EXPECT_FALSE(intVarExpression.
isFalse());
80 EXPECT_TRUE(intVarExpression.
getVariables() == std::set<storm::expressions::Variable>({manager->getVariable(
"y")}));
83 EXPECT_FALSE(rationalVarExpression.
isLiteral());
84 EXPECT_FALSE(rationalVarExpression.
isTrue());
85 EXPECT_FALSE(rationalVarExpression.
isFalse());
86 EXPECT_TRUE(rationalVarExpression.
getVariables() == std::set<storm::expressions::Variable>({manager->getVariable(
"z")}));
89TEST(Expression, OperatorTest) {
100 ASSERT_NO_THROW(trueExpression = manager->boolean(
true));
101 ASSERT_NO_THROW(falseExpression = manager->boolean(
false));
102 ASSERT_NO_THROW(threeExpression = manager->integer(3));
103 ASSERT_NO_THROW(piExpression = manager->rational(3.14));
104 ASSERT_NO_THROW(boolVarExpression = manager->declareBooleanVariable(
"x"));
105 ASSERT_NO_THROW(intVarExpression = manager->declareIntegerVariable(
"y"));
106 ASSERT_NO_THROW(rationalVarExpression = manager->declareRationalVariable(
"z"));
111 ASSERT_NO_THROW(tempExpression =
storm::expressions::ite(boolVarExpression, threeExpression, rationalVarExpression));
113 ASSERT_NO_THROW(tempExpression =
storm::expressions::ite(boolVarExpression, threeExpression, intVarExpression));
119 ASSERT_NO_THROW(tempExpression = threeExpression + threeExpression);
121 ASSERT_NO_THROW(tempExpression = threeExpression + piExpression);
123 ASSERT_NO_THROW(tempExpression = rationalVarExpression + rationalVarExpression);
127 ASSERT_NO_THROW(tempExpression = threeExpression - threeExpression);
129 ASSERT_NO_THROW(tempExpression = threeExpression - piExpression);
131 ASSERT_NO_THROW(tempExpression = rationalVarExpression - rationalVarExpression);
135 ASSERT_NO_THROW(tempExpression = -threeExpression);
137 ASSERT_NO_THROW(tempExpression = -piExpression);
139 ASSERT_NO_THROW(tempExpression = -rationalVarExpression);
143 ASSERT_NO_THROW(tempExpression = threeExpression * threeExpression);
145 ASSERT_NO_THROW(tempExpression = threeExpression * piExpression);
147 ASSERT_NO_THROW(tempExpression = intVarExpression * intVarExpression);
151 ASSERT_NO_THROW(tempExpression = threeExpression / threeExpression);
153 ASSERT_NO_THROW(tempExpression = threeExpression / piExpression);
155 ASSERT_NO_THROW(tempExpression = rationalVarExpression / intVarExpression);
159 ASSERT_NO_THROW(tempExpression = trueExpression && falseExpression);
161 ASSERT_NO_THROW(tempExpression = boolVarExpression && boolVarExpression);
165 ASSERT_NO_THROW(tempExpression = trueExpression || falseExpression);
167 ASSERT_NO_THROW(tempExpression = boolVarExpression || boolVarExpression);
171 ASSERT_NO_THROW(tempExpression = !trueExpression);
173 ASSERT_NO_THROW(tempExpression = !boolVarExpression);
177 ASSERT_NO_THROW(tempExpression = threeExpression == threeExpression);
179 ASSERT_NO_THROW(tempExpression = intVarExpression == rationalVarExpression);
183 ASSERT_NO_THROW(tempExpression = threeExpression != threeExpression);
185 ASSERT_NO_THROW(tempExpression = intVarExpression != rationalVarExpression);
189 ASSERT_NO_THROW(tempExpression = threeExpression > threeExpression);
191 ASSERT_NO_THROW(tempExpression = intVarExpression > rationalVarExpression);
195 ASSERT_NO_THROW(tempExpression = threeExpression >= threeExpression);
197 ASSERT_NO_THROW(tempExpression = intVarExpression >= rationalVarExpression);
201 ASSERT_NO_THROW(tempExpression = threeExpression < threeExpression);
203 ASSERT_NO_THROW(tempExpression = intVarExpression < rationalVarExpression);
207 ASSERT_NO_THROW(tempExpression = threeExpression <= threeExpression);
209 ASSERT_NO_THROW(tempExpression = intVarExpression <= rationalVarExpression);
213 ASSERT_NO_THROW(tempExpression = threeExpression % threeExpression);
215 ASSERT_NO_THROW(tempExpression = threeExpression % piExpression);
217 ASSERT_NO_THROW(tempExpression = piExpression % threeExpression);
219 ASSERT_NO_THROW(tempExpression = piExpression % piExpression);
257 ASSERT_NO_THROW(tempExpression = trueExpression != falseExpression);
259 ASSERT_NO_THROW(tempExpression = boolVarExpression != boolVarExpression);