29TEST(Expression, AccessorTest) {
40 ASSERT_NO_THROW(trueExpression = manager->boolean(
true));
41 ASSERT_NO_THROW(falseExpression = manager->boolean(
false));
42 ASSERT_NO_THROW(threeExpression = manager->integer(3));
43 ASSERT_NO_THROW(piExpression = manager->rational(3.14));
44 ASSERT_NO_THROW(boolVarExpression = manager->declareBooleanVariable(
"x"));
45 ASSERT_NO_THROW(intVarExpression = manager->declareIntegerVariable(
"y"));
46 ASSERT_NO_THROW(rationalVarExpression = manager->declareRationalVariable(
"z"));
50 EXPECT_TRUE(trueExpression.
isTrue());
51 EXPECT_FALSE(trueExpression.
isFalse());
52 EXPECT_TRUE(trueExpression.
getVariables() == std::set<storm::expressions::Variable>());
56 EXPECT_FALSE(falseExpression.
isTrue());
57 EXPECT_TRUE(falseExpression.
isFalse());
58 EXPECT_TRUE(falseExpression.
getVariables() == std::set<storm::expressions::Variable>());
62 EXPECT_FALSE(threeExpression.
isTrue());
63 EXPECT_FALSE(threeExpression.
isFalse());
64 EXPECT_TRUE(threeExpression.
getVariables() == std::set<storm::expressions::Variable>());
68 EXPECT_FALSE(piExpression.
isTrue());
69 EXPECT_FALSE(piExpression.
isFalse());
70 EXPECT_TRUE(piExpression.
getVariables() == std::set<storm::expressions::Variable>());
73 EXPECT_FALSE(boolVarExpression.
isLiteral());
74 EXPECT_FALSE(boolVarExpression.
isTrue());
75 EXPECT_FALSE(boolVarExpression.
isFalse());
76 EXPECT_TRUE(boolVarExpression.
getVariables() == std::set<storm::expressions::Variable>({manager->getVariable(
"x")}));
79 EXPECT_FALSE(intVarExpression.
isLiteral());
80 EXPECT_FALSE(intVarExpression.
isTrue());
81 EXPECT_FALSE(intVarExpression.
isFalse());
82 EXPECT_TRUE(intVarExpression.
getVariables() == std::set<storm::expressions::Variable>({manager->getVariable(
"y")}));
85 EXPECT_FALSE(rationalVarExpression.
isLiteral());
86 EXPECT_FALSE(rationalVarExpression.
isTrue());
87 EXPECT_FALSE(rationalVarExpression.
isFalse());
88 EXPECT_TRUE(rationalVarExpression.
getVariables() == std::set<storm::expressions::Variable>({manager->getVariable(
"z")}));
91TEST(Expression, OperatorTest) {
102 ASSERT_NO_THROW(trueExpression = manager->boolean(
true));
103 ASSERT_NO_THROW(falseExpression = manager->boolean(
false));
104 ASSERT_NO_THROW(threeExpression = manager->integer(3));
105 ASSERT_NO_THROW(piExpression = manager->rational(3.14));
106 ASSERT_NO_THROW(boolVarExpression = manager->declareBooleanVariable(
"x"));
107 ASSERT_NO_THROW(intVarExpression = manager->declareIntegerVariable(
"y"));
108 ASSERT_NO_THROW(rationalVarExpression = manager->declareRationalVariable(
"z"));
113 ASSERT_NO_THROW(tempExpression =
storm::expressions::ite(boolVarExpression, threeExpression, rationalVarExpression));
115 ASSERT_NO_THROW(tempExpression =
storm::expressions::ite(boolVarExpression, threeExpression, intVarExpression));
121 ASSERT_NO_THROW(tempExpression = threeExpression + threeExpression);
123 ASSERT_NO_THROW(tempExpression = threeExpression + piExpression);
125 ASSERT_NO_THROW(tempExpression = rationalVarExpression + rationalVarExpression);
129 ASSERT_NO_THROW(tempExpression = threeExpression - threeExpression);
131 ASSERT_NO_THROW(tempExpression = threeExpression - piExpression);
133 ASSERT_NO_THROW(tempExpression = rationalVarExpression - rationalVarExpression);
137 ASSERT_NO_THROW(tempExpression = -threeExpression);
139 ASSERT_NO_THROW(tempExpression = -piExpression);
141 ASSERT_NO_THROW(tempExpression = -rationalVarExpression);
145 ASSERT_NO_THROW(tempExpression = threeExpression * threeExpression);
147 ASSERT_NO_THROW(tempExpression = threeExpression * piExpression);
149 ASSERT_NO_THROW(tempExpression = intVarExpression * intVarExpression);
153 ASSERT_NO_THROW(tempExpression = threeExpression / threeExpression);
155 ASSERT_NO_THROW(tempExpression = threeExpression / piExpression);
157 ASSERT_NO_THROW(tempExpression = rationalVarExpression / intVarExpression);
161 ASSERT_NO_THROW(tempExpression = trueExpression && falseExpression);
163 ASSERT_NO_THROW(tempExpression = boolVarExpression && boolVarExpression);
167 ASSERT_NO_THROW(tempExpression = trueExpression || falseExpression);
169 ASSERT_NO_THROW(tempExpression = boolVarExpression || boolVarExpression);
173 ASSERT_NO_THROW(tempExpression = !trueExpression);
175 ASSERT_NO_THROW(tempExpression = !boolVarExpression);
179 ASSERT_NO_THROW(tempExpression = threeExpression == threeExpression);
181 ASSERT_NO_THROW(tempExpression = intVarExpression == rationalVarExpression);
185 ASSERT_NO_THROW(tempExpression = threeExpression != threeExpression);
187 ASSERT_NO_THROW(tempExpression = intVarExpression != rationalVarExpression);
191 ASSERT_NO_THROW(tempExpression = threeExpression > threeExpression);
193 ASSERT_NO_THROW(tempExpression = intVarExpression > rationalVarExpression);
197 ASSERT_NO_THROW(tempExpression = threeExpression >= threeExpression);
199 ASSERT_NO_THROW(tempExpression = intVarExpression >= rationalVarExpression);
203 ASSERT_NO_THROW(tempExpression = threeExpression < threeExpression);
205 ASSERT_NO_THROW(tempExpression = intVarExpression < rationalVarExpression);
209 ASSERT_NO_THROW(tempExpression = threeExpression <= threeExpression);
211 ASSERT_NO_THROW(tempExpression = intVarExpression <= rationalVarExpression);
215 ASSERT_NO_THROW(tempExpression = threeExpression % threeExpression);
217 ASSERT_NO_THROW(tempExpression = threeExpression % piExpression);
219 ASSERT_NO_THROW(tempExpression = piExpression % threeExpression);
221 ASSERT_NO_THROW(tempExpression = piExpression % piExpression);
259 ASSERT_NO_THROW(tempExpression = trueExpression != falseExpression);
261 ASSERT_NO_THROW(tempExpression = boolVarExpression != boolVarExpression);