Storm 1.11.1.1
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
GameBasedDtmcModelCheckerTest.cpp
Go to the documentation of this file.
1#include "storm-config.h"
2#include "test/storm_gtest.h"
3
17
18class Cudd {
19 public:
20 static void checkLibraryAvailable() {
21#ifndef STORM_HAVE_CUDD
22 GTEST_SKIP() << "Library CUDD not available.";
23#endif
24 }
25
27};
28
29class Sylvan {
30 public:
31 static void checkLibraryAvailable() {
32#ifndef STORM_HAVE_SYLVAN
33 GTEST_SKIP() << "Library Sylvan not available.";
34#endif
35 }
36
38};
39
40template<typename TestType>
41class GameBasedDtmcModelCheckerTest : public ::testing::Test {
42 public:
43 static const storm::dd::DdType DdType = TestType::DdType;
44
45 protected:
46 void SetUp() override {
47#ifndef STORM_HAVE_MATHSAT
48 GTEST_SKIP() << "MathSAT not available.";
49#endif
50 TestType::checkLibraryAvailable();
51 }
52};
53
54typedef ::testing::Types<Cudd, Sylvan> TestingTypes;
56
58 const storm::dd::DdType DdType = TestFixture::DdType;
59 storm::prism::Program program = storm::parser::PrismParser::parse(STORM_TEST_RESOURCES_DIR "/dtmc/die.pm");
60 auto checker = std::make_shared<storm::gbar::modelchecker::GameBasedMdpModelChecker<DdType, storm::models::symbolic::Dtmc<DdType>>>(program);
61
62 // A parser that we use for conveniently constructing the formulas.
63 storm::parser::FormulaParser formulaParser;
64
65 std::shared_ptr<storm::logic::Formula const> formula = formulaParser.parseSingleFormulaFromString("P=? [F \"one\"]");
67
68 std::unique_ptr<storm::modelchecker::CheckResult> result = checker->check(task);
70
71 EXPECT_NEAR(1.0 / 6.0, quantitativeResult1[0], storm::settings::getModule<storm::settings::modules::NativeEquationSolverSettings>().getPrecision());
72
73 formula = formulaParser.parseSingleFormulaFromString("P=? [F \"two\"]");
75
76 result = checker->check(task);
78
79 EXPECT_NEAR(1.0 / 6.0, quantitativeResult2[0], storm::settings::getModule<storm::settings::modules::NativeEquationSolverSettings>().getPrecision());
80
81 formula = formulaParser.parseSingleFormulaFromString("P=? [F \"three\"]");
83
84 result = checker->check(task);
86
87 EXPECT_NEAR(1.0 / 6.0, quantitativeResult3[0], storm::settings::getModule<storm::settings::modules::NativeEquationSolverSettings>().getPrecision());
88}
89
91 const storm::dd::DdType DdType = TestFixture::DdType;
92 storm::prism::Program program = storm::parser::PrismParser::parse(STORM_TEST_RESOURCES_DIR "/dtmc/leader-3-5.pm");
93 program = program.substituteConstantsFormulas();
94
95 // A parser that we use for conveniently constructing the formulas.
96 storm::parser::FormulaParser formulaParser;
97
98 auto checker = std::make_shared<storm::gbar::modelchecker::GameBasedMdpModelChecker<DdType, storm::models::symbolic::Dtmc<DdType>>>(program);
99
100 std::shared_ptr<storm::logic::Formula const> formula = formulaParser.parseSingleFormulaFromString("P=? [F \"elected\"]");
102
103 std::unique_ptr<storm::modelchecker::CheckResult> result = checker->check(task);
105
106 EXPECT_NEAR(1.0, quantitativeResult1[0], storm::settings::getModule<storm::settings::modules::NativeEquationSolverSettings>().getPrecision());
107}
TYPED_TEST(GameBasedDtmcModelCheckerTest, Die)
::testing::Types< Cudd, Sylvan > TestingTypes
TYPED_TEST_SUITE(GameBasedDtmcModelCheckerTest, TestingTypes,)
static void checkLibraryAvailable()
static const storm::dd::DdType DdType
Definition GraphTest.cpp:31
static const storm::dd::DdType DdType
Definition GraphTest.cpp:42
static void checkLibraryAvailable()
ExplicitQuantitativeCheckResult< ValueType > & asExplicitQuantitativeCheckResult()
std::shared_ptr< storm::logic::Formula const > parseSingleFormulaFromString(std::string const &formulaString) const
Parses the formula given by the provided string.
static storm::prism::Program parse(std::string const &filename, bool prismCompatability=false)
Parses the given file into the PRISM storage classes assuming it complies with the PRISM syntax.
Program substituteConstantsFormulas(bool substituteConstants=true, bool substituteFormulas=true) const
Substitutes all constants and/or formulas appearing in the expressions of the program by their defini...
Definition Program.cpp:1091
::testing::Types< Cudd, Sylvan > TestingTypes
Definition GraphTest.cpp:59