Storm
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
7
8namespace {
9
10TEST(DftModelBuildingTest, RelevantEvents) {
11 // Initialize
12 std::string file = STORM_TEST_RESOURCES_DIR "/dft/dont_care.dft";
13 std::shared_ptr<storm::dft::storage::DFT<double>> dft = storm::dft::api::loadDFTGalileoFile<double>(file);
14 EXPECT_TRUE(storm::dft::api::isWellFormed(*dft).first);
15 std::string property = "Tmin=? [F \"failed\"]";
16 std::vector<std::shared_ptr<storm::logic::Formula const>> properties = storm::api::extractFormulasFromProperties(storm::api::parseProperties(property));
18
19 // Set relevant events (none)
21 dft->setRelevantEvents(relevantEvents, false);
22 // Build model
24 builder.buildModel(0, 0.0);
25 std::shared_ptr<storm::models::sparse::Model<double>> model = builder.getModel();
26 EXPECT_EQ(8ul, model->getNumberOfStates());
27 EXPECT_EQ(13ul, model->getNumberOfTransitions());
28
29 // Set relevant events (all)
30 relevantEvents = storm::dft::utility::RelevantEvents({"all"});
31 dft->setRelevantEvents(relevantEvents, false);
32 // Build model
34 builder2.buildModel(0, 0.0);
35 model = builder2.getModel();
36 EXPECT_EQ(512ul, model->getNumberOfStates());
37 EXPECT_EQ(2305ul, model->getNumberOfTransitions());
38
39 // Set relevant events (H)
40 relevantEvents = storm::dft::utility::RelevantEvents({"H"});
41 dft->setRelevantEvents(relevantEvents, false);
42 // Build model
44 builder3.buildModel(0, 0.0);
45 model = builder3.getModel();
46 EXPECT_EQ(12ul, model->getNumberOfStates());
47 EXPECT_EQ(25ul, model->getNumberOfTransitions());
48
49 // Set relevant events (H, I)
50 relevantEvents = storm::dft::utility::RelevantEvents({"H", "I"});
51 dft->setRelevantEvents(relevantEvents, false);
52 // Build model
54 builder4.buildModel(0, 0.0);
55 model = builder4.getModel();
56 EXPECT_EQ(16ul, model->getNumberOfStates());
57 EXPECT_EQ(33ul, model->getNumberOfTransitions());
58
59 // Set relevant events (none)
60 relevantEvents = storm::dft::utility::RelevantEvents{};
61 dft->setRelevantEvents(relevantEvents, true);
62 // Build model
64 builder5.buildModel(0, 0.0);
65 model = builder5.getModel();
66 EXPECT_EQ(8ul, model->getNumberOfStates());
67 EXPECT_EQ(13ul, model->getNumberOfTransitions());
68
69 // Set relevant events (all)
70 relevantEvents = storm::dft::utility::RelevantEvents({"all"});
71 dft->setRelevantEvents(relevantEvents, true);
72 // Build model
74 builder6.buildModel(0, 0.0);
75 model = builder6.getModel();
76 EXPECT_EQ(8ul, model->getNumberOfStates());
77 EXPECT_EQ(13ul, model->getNumberOfTransitions());
78
79 // Set relevant events (H, I)
80 relevantEvents = storm::dft::utility::RelevantEvents({"H", "I"});
81 dft->setRelevantEvents(relevantEvents, true);
82 // Build model
84 builder7.buildModel(0, 0.0);
85 model = builder7.getModel();
86 EXPECT_EQ(8ul, model->getNumberOfStates());
87 EXPECT_EQ(13ul, model->getNumberOfTransitions());
88}
89
90} // namespace
TEST(OrderTest, Simple)
Definition OrderTest.cpp:8
std::vector< storm::jani::Property > parseProperties(storm::parser::FormulaParser &formulaParser, std::string const &inputString, boost::optional< std::set< std::string > > const &propertyFilter)
std::vector< std::shared_ptr< storm::logic::Formula const > > extractFormulasFromProperties(std::vector< storm::jani::Property > const &properties)
std::pair< bool, std::string > isWellFormed(storm::dft::storage::DFT< ValueType > const &dft, bool validForMarkovianAnalysis=true)
Check whether the DFT is well-formed.
Definition storm-dft.h:64