Storm 1.14.0.1
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
DftParserTest.cpp
Go to the documentation of this file.
1#include "storm-config.h"
2#include "test/storm_gtest.h"
3
4#include "storm-dft/api/io.h"
8
9namespace {
10
11TEST(DftParserTest, LoadFromGalileoFile) {
12 std::string file = STORM_TEST_RESOURCES_DIR "/dft/and.dft";
13 std::shared_ptr<storm::dft::storage::DFT<double>> dft = storm::dft::api::loadDFTGalileoFile<double>(file);
14 EXPECT_EQ(3ul, dft->nrElements());
15 EXPECT_EQ(2ul, dft->nrBasicElements());
16 EXPECT_TRUE(storm::dft::api::isWellFormed(*dft).first);
17}
18
19TEST(DftParserTest, LoadFromJsonFile) {
20 std::string file = STORM_TEST_RESOURCES_DIR "/dft/and.json";
21 std::shared_ptr<storm::dft::storage::DFT<double>> dft = storm::dft::api::loadDFTJsonFile<double>(file);
22 EXPECT_EQ(3ul, dft->nrElements());
23 EXPECT_EQ(2ul, dft->nrBasicElements());
24 EXPECT_TRUE(storm::dft::api::isWellFormed(*dft).first);
25}
26
27TEST(DftParserTest, LoadAllBeDistributionsFromGalileoFile) {
28 std::string file = STORM_TEST_RESOURCES_DIR "/dft/all_be_distributions.dft";
29 std::shared_ptr<storm::dft::storage::DFT<double>> dft = storm::dft::api::loadDFTGalileoFile<double>(file);
30 EXPECT_EQ(8ul, dft->nrElements());
31 EXPECT_EQ(7ul, dft->nrBasicElements());
32 EXPECT_TRUE(storm::dft::api::isWellFormed(*dft, false).first);
33 EXPECT_EQ(storm::dft::storage::elements::BEType::CONSTANT, dft->getBasicElement(dft->getIndex("A"))->beType());
34 EXPECT_EQ(storm::dft::storage::elements::BEType::CONSTANT, dft->getBasicElement(dft->getIndex("B"))->beType());
35 EXPECT_EQ(storm::dft::storage::elements::BEType::PROBABILITY, dft->getBasicElement(dft->getIndex("C"))->beType());
36 EXPECT_EQ(storm::dft::storage::elements::BEType::EXPONENTIAL, dft->getBasicElement(dft->getIndex("D"))->beType());
37 EXPECT_EQ(storm::dft::storage::elements::BEType::ERLANG, dft->getBasicElement(dft->getIndex("E"))->beType());
38 EXPECT_EQ(storm::dft::storage::elements::BEType::LOGNORMAL, dft->getBasicElement(dft->getIndex("F"))->beType());
39 EXPECT_EQ(storm::dft::storage::elements::BEType::WEIBULL, dft->getBasicElement(dft->getIndex("G"))->beType());
40}
41
42TEST(DftParserTest, LoadAllGatesFromGalileoFile) {
43 std::string file = STORM_TEST_RESOURCES_DIR "/dft/all_gates.dft";
44 std::shared_ptr<storm::dft::storage::DFT<double>> dft = storm::dft::api::loadDFTGalileoFile<double>(file);
45 EXPECT_EQ(42ul, dft->nrElements());
46 EXPECT_EQ(19ul, dft->nrBasicElements());
47 EXPECT_EQ(5ul, dft->nrStaticElements());
48 EXPECT_EQ(18ul, dft->nrDynamicElements());
49 EXPECT_TRUE(storm::dft::api::isWellFormed(*dft).first);
50}
51
52TEST(DftParserTest, LoadAllBEDistributionsFromJsonFile) {
53 std::string file = STORM_TEST_RESOURCES_DIR "/dft/all_be_distributions.json";
54 std::shared_ptr<storm::dft::storage::DFT<double>> dft = storm::dft::api::loadDFTJsonFile<double>(file);
55 EXPECT_EQ(8ul, dft->nrElements());
56 EXPECT_EQ(7ul, dft->nrBasicElements());
57 EXPECT_TRUE(storm::dft::api::isWellFormed(*dft, false).first);
58 EXPECT_EQ(storm::dft::storage::elements::BEType::CONSTANT, dft->getBasicElement(dft->getIndex("A"))->beType());
59 EXPECT_EQ(storm::dft::storage::elements::BEType::CONSTANT, dft->getBasicElement(dft->getIndex("B"))->beType());
60 EXPECT_EQ(storm::dft::storage::elements::BEType::PROBABILITY, dft->getBasicElement(dft->getIndex("C"))->beType());
61 EXPECT_EQ(storm::dft::storage::elements::BEType::EXPONENTIAL, dft->getBasicElement(dft->getIndex("D"))->beType());
62 EXPECT_EQ(storm::dft::storage::elements::BEType::ERLANG, dft->getBasicElement(dft->getIndex("E"))->beType());
63 EXPECT_EQ(storm::dft::storage::elements::BEType::LOGNORMAL, dft->getBasicElement(dft->getIndex("F"))->beType());
64 EXPECT_EQ(storm::dft::storage::elements::BEType::WEIBULL, dft->getBasicElement(dft->getIndex("G"))->beType());
65}
66
67TEST(DftParserTest, LoadAllGatesFromJsonFile) {
68 std::string file = STORM_TEST_RESOURCES_DIR "/dft/all_gates.json";
69 std::shared_ptr<storm::dft::storage::DFT<double>> dft = storm::dft::api::loadDFTJsonFile<double>(file);
70 EXPECT_EQ(42ul, dft->nrElements());
71 EXPECT_EQ(19ul, dft->nrBasicElements());
72 EXPECT_EQ(5ul, dft->nrStaticElements());
73 EXPECT_EQ(18ul, dft->nrDynamicElements());
74 EXPECT_TRUE(storm::dft::api::isWellFormed(*dft).first);
75}
76
77TEST(DftParserTest, CatchCycles) {
78 std::string file = STORM_TEST_RESOURCES_DIR "/dft/cyclic.dft";
79 STORM_SILENT_EXPECT_THROW(storm::dft::api::loadDFTGalileoFile<double>(file), storm::exceptions::WrongFormatException);
80}
81
82TEST(DftParserTest, LoadSeqChildren) {
83 std::string file = STORM_TEST_RESOURCES_DIR "/dft/seqChild.dft";
84 std::shared_ptr<storm::dft::storage::DFT<double>> dft = storm::dft::api::loadDFTGalileoFile<double>(file);
85 EXPECT_EQ(4ul, dft->nrElements());
86 EXPECT_EQ(2ul, dft->nrBasicElements());
87 EXPECT_TRUE(storm::dft::api::isWellFormed(*dft).first);
88}
89
90TEST(DftParserTest, LoadParametricFromGalileoFile) {
91 std::string file = STORM_TEST_RESOURCES_DIR "/dft/and_param.dft";
92 std::shared_ptr<storm::dft::storage::DFT<storm::RationalFunction>> dft = storm::dft::api::loadDFTGalileoFile<storm::RationalFunction>(file);
93 EXPECT_EQ(3ul, dft->nrElements());
94 EXPECT_EQ(2ul, dft->nrBasicElements());
95 EXPECT_TRUE(storm::dft::api::isWellFormed(*dft).first);
96 auto parameters = storm::dft::storage::getParameters(*dft);
97 EXPECT_TRUE(parameters.size() == 1);
98 auto it = std::find_if(parameters.begin(), parameters.end(), [](storm::RationalFunctionVariable const& x) { return x.name() == "x"; });
99 EXPECT_TRUE(it != parameters.end());
100}
101
102TEST(DftParserTest, LoadParametricFromJsonFile) {
103 std::string file = STORM_TEST_RESOURCES_DIR "/dft/and_param.json";
104 std::shared_ptr<storm::dft::storage::DFT<storm::RationalFunction>> dft = storm::dft::api::loadDFTJsonFile<storm::RationalFunction>(file);
105 EXPECT_EQ(3ul, dft->nrElements());
106 EXPECT_EQ(2ul, dft->nrBasicElements());
107 EXPECT_TRUE(storm::dft::api::isWellFormed(*dft).first);
108 auto parameters = storm::dft::storage::getParameters(*dft);
109 EXPECT_TRUE(parameters.size() == 1);
110 auto it = std::find_if(parameters.begin(), parameters.end(), [](storm::RationalFunctionVariable const& x) { return x.name() == "x"; });
111 EXPECT_TRUE(it != parameters.end());
112}
113} // namespace
TEST(OrderTest, Simple)
Definition OrderTest.cpp:15
std::shared_ptr< storm::dft::storage::DFT< ValueType > > loadDFTGalileoFile(std::string const &file)
Load DFT from Galileo file.
Definition io.cpp:14
std::shared_ptr< storm::dft::storage::DFT< ValueType > > loadDFTJsonFile(std::string const &file)
Load DFT from JSON file.
Definition io.cpp:24
std::pair< bool, std::string > isWellFormed(storm::dft::storage::DFT< ValueType > const &dft, bool validForMarkovianAnalysis)
Check whether the DFT is well-formed.
std::set< storm::RationalFunctionVariable > getParameters(DFT< storm::RationalFunction > const &dft)
Get all rate/probability parameters occurring in the DFT.
Definition DFT.cpp:826
carl::Variable RationalFunctionVariable
#define STORM_SILENT_EXPECT_THROW(statement, expected_exception)
Definition storm_gtest.h:19