Storm
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:
21};
22
23class Sylvan {
24 public:
26};
27
28template<typename TestType>
29class GameBasedDtmcModelCheckerTest : public ::testing::Test {
30 public:
31 static const storm::dd::DdType DdType = TestType::DdType;
32
33 protected:
34 void SetUp() override {
35#ifndef STORM_HAVE_MSAT
36 GTEST_SKIP() << "MathSAT not available.";
37#endif
38 }
39};
40
41typedef ::testing::Types<Cudd, Sylvan> TestingTypes;
43
45 const storm::dd::DdType DdType = TestFixture::DdType;
46 storm::prism::Program program = storm::parser::PrismParser::parse(STORM_TEST_RESOURCES_DIR "/dtmc/die.pm");
47 auto checker = std::make_shared<storm::gbar::modelchecker::GameBasedMdpModelChecker<DdType, storm::models::symbolic::Dtmc<DdType>>>(program);
48
49 // A parser that we use for conveniently constructing the formulas.
50 storm::parser::FormulaParser formulaParser;
51
52 std::shared_ptr<storm::logic::Formula const> formula = formulaParser.parseSingleFormulaFromString("P=? [F \"one\"]");
54
55 std::unique_ptr<storm::modelchecker::CheckResult> result = checker->check(task);
57
58 EXPECT_NEAR(1.0 / 6.0, quantitativeResult1[0], storm::settings::getModule<storm::settings::modules::NativeEquationSolverSettings>().getPrecision());
59
60 formula = formulaParser.parseSingleFormulaFromString("P=? [F \"two\"]");
62
63 result = checker->check(task);
65
66 EXPECT_NEAR(1.0 / 6.0, quantitativeResult2[0], storm::settings::getModule<storm::settings::modules::NativeEquationSolverSettings>().getPrecision());
67
68 formula = formulaParser.parseSingleFormulaFromString("P=? [F \"three\"]");
70
71 result = checker->check(task);
73
74 EXPECT_NEAR(1.0 / 6.0, quantitativeResult3[0], storm::settings::getModule<storm::settings::modules::NativeEquationSolverSettings>().getPrecision());
75}
76
78 const storm::dd::DdType DdType = TestFixture::DdType;
79 storm::prism::Program program = storm::parser::PrismParser::parse(STORM_TEST_RESOURCES_DIR "/dtmc/leader-3-5.pm");
80 program = program.substituteConstantsFormulas();
81
82 // A parser that we use for conveniently constructing the formulas.
83 storm::parser::FormulaParser formulaParser;
84
85 auto checker = std::make_shared<storm::gbar::modelchecker::GameBasedMdpModelChecker<DdType, storm::models::symbolic::Dtmc<DdType>>>(program);
86
87 std::shared_ptr<storm::logic::Formula const> formula = formulaParser.parseSingleFormulaFromString("P=? [F \"elected\"]");
89
90 std::unique_ptr<storm::modelchecker::CheckResult> result = checker->check(task);
92
93 EXPECT_NEAR(1.0, quantitativeResult1[0], storm::settings::getModule<storm::settings::modules::NativeEquationSolverSettings>().getPrecision());
94}
TYPED_TEST(GameBasedDtmcModelCheckerTest, Die)
::testing::Types< Cudd, Sylvan > TestingTypes
TYPED_TEST_SUITE(GameBasedDtmcModelCheckerTest, TestingTypes,)
static const storm::dd::DdType DdType
Definition GraphTest.cpp:25
static const storm::dd::DdType DdType
Definition GraphTest.cpp:30
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:1078
SettingsType const & getModule()
Get module.
::testing::Types< Cudd, Sylvan > TestingTypes
Definition GraphTest.cpp:46