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