|
|
@ -158,6 +158,25 @@ TEST(PrismParser, POMDPInputTest) { |
|
|
|
EXPECT_NO_THROW(result = storm::parser::PrismParser::parseFromString(testInput2, "testfile")); |
|
|
|
} |
|
|
|
|
|
|
|
TEST(PrismParser, NAryPredicates) { |
|
|
|
std::string testInput = |
|
|
|
R"(dtmc |
|
|
|
|
|
|
|
module example |
|
|
|
s : [0..4] init 0; |
|
|
|
i : bool init true; |
|
|
|
[] s=0 -> 0.5: (s'=1) & (i'=false) + 0.5: (s'=2) & (i'=false); |
|
|
|
[] s=1 | s=2 -> 1: (s'=3) & (i'=true); |
|
|
|
[r] s=1 -> 1: (s'=4) & (i'=true); |
|
|
|
[r] s=2 -> 1: (s'=3) & (i'=true); |
|
|
|
endmodule |
|
|
|
|
|
|
|
label "test" = atMostOneOf(s=0, s=3, s=4); |
|
|
|
label "test2" = exactlyOneOf(s=0, i, !i & s=3); |
|
|
|
)"; |
|
|
|
|
|
|
|
EXPECT_NO_THROW(result = storm::parser::PrismParser::parseFromString(testInput2, "testfile")); |
|
|
|
} |
|
|
|
|
|
|
|
TEST(PrismParser, IllegalInputTest) { |
|
|
|
std::string testInput = |
|
|
|