Storm 1.11.1.1
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
DftInstantiatorTest.cpp
Go to the documentation of this file.
1#include "storm-config.h"
2#include "test/storm_gtest.h"
3
7
8namespace {
9
10TEST(DftInstantiatorTest, InstantiateSimple) {
11 carl::VariablePool::getInstance().clear();
12
13 std::string file = STORM_TEST_RESOURCES_DIR "/dft/and_param.dft";
14 std::shared_ptr<storm::dft::storage::DFT<storm::RationalFunction>> dft = storm::dft::api::loadDFTGalileoFile<storm::RationalFunction>(file);
15 EXPECT_EQ(3ul, dft->nrElements());
16 EXPECT_EQ(2ul, dft->nrBasicElements());
17
19
20 std::map<storm::RationalFunctionVariable, storm::RationalFunctionCoefficient> valuation;
21 storm::RationalFunctionVariable const& x = carl::VariablePool::getInstance().findVariableWithName("x");
22 ASSERT_NE(x, carl::Variable::NO_VARIABLE);
23
24 valuation.insert(std::make_pair(x, storm::utility::convertNumber<storm::RationalFunctionCoefficient>(0.5)));
25 std::shared_ptr<storm::dft::storage::DFT<double>> instDft = instantiator.instantiate(valuation);
26 std::shared_ptr<storm::dft::storage::elements::DFTBE<double> const> elem = instDft->getBasicElement(dft->getIndex("C"));
27 auto beExp = std::static_pointer_cast<storm::dft::storage::elements::BEExponential<double> const>(elem);
28 EXPECT_EQ(beExp->activeFailureRate(), 0.5);
29
30 valuation.clear();
31 valuation.insert(std::make_pair(x, storm::utility::convertNumber<storm::RationalFunctionCoefficient>(1.5)));
32 instDft = instantiator.instantiate(valuation);
33 elem = instDft->getBasicElement(dft->getIndex("C"));
34 beExp = std::static_pointer_cast<storm::dft::storage::elements::BEExponential<double> const>(elem);
35 EXPECT_EQ(beExp->activeFailureRate(), 1.5);
36}
37
38TEST(DftInstantiatorTest, InstantiateSymmetry) {
39 carl::VariablePool::getInstance().clear();
40
41 std::string file = STORM_TEST_RESOURCES_DIR "/dft/symmetry_param.dft";
42 std::shared_ptr<storm::dft::storage::DFT<storm::RationalFunction>> dft = storm::dft::api::loadDFTGalileoFile<storm::RationalFunction>(file);
43 EXPECT_EQ(7ul, dft->nrElements());
44 EXPECT_EQ(4ul, dft->nrBasicElements());
45
47
48 std::map<storm::RationalFunctionVariable, storm::RationalFunctionCoefficient> valuation;
49 storm::RationalFunctionVariable const& x = carl::VariablePool::getInstance().findVariableWithName("x");
50 ASSERT_NE(x, carl::Variable::NO_VARIABLE);
51 storm::RationalFunctionVariable const& y = carl::VariablePool::getInstance().findVariableWithName("y");
52 ASSERT_NE(y, carl::Variable::NO_VARIABLE);
53
54 valuation.insert(std::make_pair(x, storm::utility::convertNumber<storm::RationalFunctionCoefficient>(5)));
55 valuation.insert(std::make_pair(y, storm::utility::convertNumber<storm::RationalFunctionCoefficient>(0.01)));
56 std::shared_ptr<storm::dft::storage::DFT<double>> instDft = instantiator.instantiate(valuation);
57 std::shared_ptr<storm::dft::storage::elements::DFTBE<double> const> elem = instDft->getBasicElement(dft->getIndex("C"));
58 auto beExp = std::static_pointer_cast<storm::dft::storage::elements::BEExponential<double> const>(elem);
59 EXPECT_EQ(beExp->activeFailureRate(), 5);
60 EXPECT_EQ(beExp->passiveFailureRate(), 0.05);
61 elem = instDft->getBasicElement(dft->getIndex("D"));
62 beExp = std::static_pointer_cast<storm::dft::storage::elements::BEExponential<double> const>(elem);
63 EXPECT_EQ(beExp->activeFailureRate(), 0.01);
64}
65} // namespace
TEST(OrderTest, Simple)
Definition OrderTest.cpp:15
Instantiator to yield a concrete DFT from a parametric DFT (with parametric failure rates).
carl::Variable RationalFunctionVariable