1#include "storm-config.h"
10TEST(DftInstantiatorTest, InstantiateSimple) {
11 carl::VariablePool::getInstance().clear();
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());
20 std::map<storm::RationalFunctionVariable, storm::RationalFunctionCoefficient> valuation;
22 ASSERT_NE(x, carl::Variable::NO_VARIABLE);
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);
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);
38TEST(DftInstantiatorTest, InstantiateSymmetry) {
39 carl::VariablePool::getInstance().clear();
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());
48 std::map<storm::RationalFunctionVariable, storm::RationalFunctionCoefficient> valuation;
50 ASSERT_NE(x, carl::Variable::NO_VARIABLE);
52 ASSERT_NE(y, carl::Variable::NO_VARIABLE);
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);
carl::Variable RationalFunctionVariable