1#include "storm-config.h"
4#include <carl/core/VariablePool.h>
5#include <carl/numbers/numbers.h>
12TEST(DftInstantiatorTest, InstantiateSimple) {
13 carl::VariablePool::getInstance().clear();
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());
22 std::map<storm::RationalFunctionVariable, storm::RationalFunctionCoefficient> valuation;
24 ASSERT_NE(x, carl::Variable::NO_VARIABLE);
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);
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);
40TEST(DftInstantiatorTest, InstantiateSymmetry) {
41 carl::VariablePool::getInstance().clear();
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());
50 std::map<storm::RationalFunctionVariable, storm::RationalFunctionCoefficient> valuation;
52 ASSERT_NE(x, carl::Variable::NO_VARIABLE);
54 ASSERT_NE(y, carl::Variable::NO_VARIABLE);
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);
carl::Variable RationalFunctionVariable