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