1#include "storm-config.h"
4#include <carl/core/VariablePool.h>
5#include <carl/numbers/numbers.h>
11TEST(DftInstantiatorTest, InstantiateSimple) {
12 carl::VariablePool::getInstance().clear();
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());
21 std::map<storm::RationalFunctionVariable, storm::RationalFunctionCoefficient> valuation;
23 ASSERT_NE(x, carl::Variable::NO_VARIABLE);
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);
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);
39TEST(DftInstantiatorTest, InstantiateSymmetry) {
40 carl::VariablePool::getInstance().clear();
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());
49 std::map<storm::RationalFunctionVariable, storm::RationalFunctionCoefficient> valuation;
51 ASSERT_NE(x, carl::Variable::NO_VARIABLE);
53 ASSERT_NE(y, carl::Variable::NO_VARIABLE);
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);
carl::Variable RationalFunctionVariable