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"
11
12namespace {
13
14TEST(DftModelBuildingTest, RelevantEvents) {
15 // Initialize
16 std::string file = STORM_TEST_RESOURCES_DIR "/dft/dont_care.dft";
17 std::shared_ptr<storm::dft::storage::DFT<double>> dft = storm::dft::api::loadDFTGalileoFile<double>(file);
18 EXPECT_TRUE(storm::dft::api::isWellFormed(*dft).first);
19 std::string property = "Tmin=? [F \"failed\"]";
20 std::vector<std::shared_ptr<storm::logic::Formula const>> properties = storm::api::extractFormulasFromProperties(storm::api::parseProperties(property));
22
23 // Set relevant events (none)
25 dft->setRelevantEvents(relevantEvents, false);
26 // Build model
28 builder.buildModel(0, 0.0);
29 std::shared_ptr<storm::models::sparse::Model<double>> model = builder.getModel();
30 EXPECT_EQ(8ul, model->getNumberOfStates());
31 EXPECT_EQ(13ul, model->getNumberOfTransitions());
32
33 // Set relevant events (all)
34 relevantEvents = storm::dft::utility::RelevantEvents({"all"});
35 dft->setRelevantEvents(relevantEvents, false);
36 // Build model
38 builder2.buildModel(0, 0.0);
39 model = builder2.getModel();
40 EXPECT_EQ(512ul, model->getNumberOfStates());
41 EXPECT_EQ(2305ul, model->getNumberOfTransitions());
42
43 // Set relevant events (H)
44 relevantEvents = storm::dft::utility::RelevantEvents({"H"});
45 dft->setRelevantEvents(relevantEvents, false);
46 // Build model
48 builder3.buildModel(0, 0.0);
49 model = builder3.getModel();
50 EXPECT_EQ(12ul, model->getNumberOfStates());
51 EXPECT_EQ(25ul, model->getNumberOfTransitions());
52
53 // Set relevant events (H, I)
54 relevantEvents = storm::dft::utility::RelevantEvents({"H", "I"});
55 dft->setRelevantEvents(relevantEvents, false);
56 // Build model
58 builder4.buildModel(0, 0.0);
59 model = builder4.getModel();
60 EXPECT_EQ(16ul, model->getNumberOfStates());
61 EXPECT_EQ(33ul, model->getNumberOfTransitions());
62
63 // Set relevant events (none)
64 relevantEvents = storm::dft::utility::RelevantEvents{};
65 dft->setRelevantEvents(relevantEvents, true);
66 // Build model
68 builder5.buildModel(0, 0.0);
69 model = builder5.getModel();
70 EXPECT_EQ(8ul, model->getNumberOfStates());
71 EXPECT_EQ(13ul, model->getNumberOfTransitions());
72
73 // Set relevant events (all)
74 relevantEvents = storm::dft::utility::RelevantEvents({"all"});
75 dft->setRelevantEvents(relevantEvents, true);
76 // Build model
78 builder6.buildModel(0, 0.0);
79 model = builder6.getModel();
80 EXPECT_EQ(8ul, model->getNumberOfStates());
81 EXPECT_EQ(13ul, model->getNumberOfTransitions());
82
83 // Set relevant events (H, I)
84 relevantEvents = storm::dft::utility::RelevantEvents({"H", "I"});
85 dft->setRelevantEvents(relevantEvents, true);
86 // Build model
88 builder7.buildModel(0, 0.0);
89 model = builder7.getModel();
90 EXPECT_EQ(8ul, model->getNumberOfStates());
91 EXPECT_EQ(13ul, model->getNumberOfTransitions());
92}
93
94} // namespace
TEST(OrderTest, Simple)
Definition OrderTest.cpp:15
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::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.