Storm 1.14.0.1
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
DftModelBuildingTest.cpp
Go to the documentation of this file.
1#include "storm-config.h"
2#include "test/storm_gtest.h"
3
4#include "storm-dft/api/io.h"
13
14namespace {
15
16TEST(DftModelBuildingTest, RelevantEvents) {
17 // Initialize
18 std::string file = STORM_TEST_RESOURCES_DIR "/dft/dont_care.dft";
19 std::shared_ptr<storm::dft::storage::DFT<double>> dft = storm::dft::api::loadDFTGalileoFile<double>(file);
20 EXPECT_TRUE(storm::dft::api::isWellFormed(*dft).first);
21 std::string property = "Tmin=? [F \"failed\"]";
22 std::vector<std::shared_ptr<storm::logic::Formula const>> properties = storm::api::extractFormulasFromProperties(storm::api::parseProperties(property));
26
27 // Set relevant events (none)
29 dft->setRelevantEvents(relevantEvents, false);
30 // Build model
31 storm::dft::builder::ExplicitDFTModelBuilder<double> builder(env, *dft, symmetries);
32 builder.buildModel(0, 0.0);
33 std::shared_ptr<storm::models::sparse::Model<double>> model = builder.getModel();
34 EXPECT_EQ(8ul, model->getNumberOfStates());
35 EXPECT_EQ(13ul, model->getNumberOfTransitions());
36
37 // Set relevant events (all)
38 relevantEvents = storm::dft::utility::RelevantEvents({"all"});
39 dft->setRelevantEvents(relevantEvents, false);
40 // Build model
41 storm::dft::builder::ExplicitDFTModelBuilder<double> builder2(env, *dft, symmetries);
42 builder2.buildModel(0, 0.0);
43 model = builder2.getModel();
44 EXPECT_EQ(512ul, model->getNumberOfStates());
45 EXPECT_EQ(2305ul, model->getNumberOfTransitions());
46
47 // Set relevant events (H)
48 relevantEvents = storm::dft::utility::RelevantEvents({"H"});
49 dft->setRelevantEvents(relevantEvents, false);
50 // Build model
51 storm::dft::builder::ExplicitDFTModelBuilder<double> builder3(env, *dft, symmetries);
52 builder3.buildModel(0, 0.0);
53 model = builder3.getModel();
54 EXPECT_EQ(12ul, model->getNumberOfStates());
55 EXPECT_EQ(25ul, model->getNumberOfTransitions());
56
57 // Set relevant events (H, I)
58 relevantEvents = storm::dft::utility::RelevantEvents({"H", "I"});
59 dft->setRelevantEvents(relevantEvents, false);
60 // Build model
61 storm::dft::builder::ExplicitDFTModelBuilder<double> builder4(env, *dft, symmetries);
62 builder4.buildModel(0, 0.0);
63 model = builder4.getModel();
64 EXPECT_EQ(16ul, model->getNumberOfStates());
65 EXPECT_EQ(33ul, model->getNumberOfTransitions());
66
67 // Set relevant events (none)
68 relevantEvents = storm::dft::utility::RelevantEvents{};
69 dft->setRelevantEvents(relevantEvents, true);
70 // Build model
71 storm::dft::builder::ExplicitDFTModelBuilder<double> builder5(env, *dft, symmetries);
72 builder5.buildModel(0, 0.0);
73 model = builder5.getModel();
74 EXPECT_EQ(8ul, model->getNumberOfStates());
75 EXPECT_EQ(13ul, model->getNumberOfTransitions());
76
77 // Set relevant events (all)
78 relevantEvents = storm::dft::utility::RelevantEvents({"all"});
79 dft->setRelevantEvents(relevantEvents, true);
80 // Build model
81 storm::dft::builder::ExplicitDFTModelBuilder<double> builder6(env, *dft, symmetries);
82 builder6.buildModel(0, 0.0);
83 model = builder6.getModel();
84 EXPECT_EQ(8ul, model->getNumberOfStates());
85 EXPECT_EQ(13ul, model->getNumberOfTransitions());
86
87 // Set relevant events (H, I)
88 relevantEvents = storm::dft::utility::RelevantEvents({"H", "I"});
89 dft->setRelevantEvents(relevantEvents, true);
90 // Build model
91 storm::dft::builder::ExplicitDFTModelBuilder<double> builder7(env, *dft, symmetries);
92 builder7.buildModel(0, 0.0);
93 model = builder7.getModel();
94 EXPECT_EQ(8ul, model->getNumberOfStates());
95 EXPECT_EQ(13ul, model->getNumberOfTransitions());
96}
97
98} // namespace
TEST(RegionConstraintCheckerTest, AffineConstraintHoldsThroughout)
Environment for storm-dft.
ModelBuilderEnvironment & modelBuilder()
std::vector< std::shared_ptr< storm::logic::Formula const > > extractFormulasFromProperties(std::vector< storm::jani::Property > const &properties)
std::vector< storm::jani::Property > parseProperties(storm::parser::FormulaParser &formulaParser, std::string const &inputString, boost::optional< std::set< std::string > > const &propertyFilter)
std::shared_ptr< storm::dft::storage::DFT< ValueType > > loadDFTGalileoFile(std::string const &file)
Load DFT from Galileo file.
Definition io.cpp:14
std::pair< bool, std::string > isWellFormed(storm::dft::storage::DFT< ValueType > const &dft, bool validForMarkovianAnalysis)
Check whether the DFT is well-formed.