Storm
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
DftTransformerTest.cpp
Go to the documentation of this file.
1#include "storm-config.h"
2#include "test/storm_gtest.h"
3
6
7namespace {
8
9TEST(DftTransformerTest, UniqueConstantFailedTest) {
10 std::string file = STORM_TEST_RESOURCES_DIR "/dft/const_be_test.dft";
11 std::shared_ptr<storm::dft::storage::DFT<double>> originalDft = storm::dft::api::loadDFTGalileoFile<double>(file);
12 std::shared_ptr<storm::dft::storage::DFT<double>> transformedDft =
14
15 // Count in original DFT
16 auto bes = originalDft->getBasicElements();
17 uint64_t constBeFailedCount = 0;
18 uint64_t constBeFailsafeCount = 0;
19 for (auto &be : bes) {
21 if (be->canFail()) {
22 ++constBeFailedCount;
23 } else {
24 ++constBeFailsafeCount;
25 }
26 }
27 }
28 EXPECT_EQ(3ul, constBeFailedCount);
29 EXPECT_EQ(0ul, constBeFailsafeCount);
30
31 // Count in transformed DFT
32 bes = transformedDft->getBasicElements();
33 constBeFailedCount = 0;
34 constBeFailsafeCount = 0;
35 for (auto &be : bes) {
37 if (be->canFail()) {
38 ++constBeFailedCount;
39 } else {
40 ++constBeFailsafeCount;
41 }
42 }
43 }
44 EXPECT_EQ(1ul, constBeFailedCount);
45 EXPECT_EQ(3ul, constBeFailsafeCount);
46}
47
48TEST(DftTransformerTest, BinaryFDEPTest) {
49 std::string file = STORM_TEST_RESOURCES_DIR "/dft/fdep5.dft";
50 std::shared_ptr<storm::dft::storage::DFT<double>> originalDft = storm::dft::api::loadDFTGalileoFile<double>(file);
51 std::shared_ptr<storm::dft::storage::DFT<double>> transformedDft =
53
54 // Count in original DFT
55 uint64_t dependencyCount = originalDft->getDependencies().size();
56 EXPECT_EQ(1ul, dependencyCount);
57
58 // Count in transformed DFT
59 dependencyCount = transformedDft->getDependencies().size();
60 EXPECT_EQ(2ul, dependencyCount);
61}
62
63TEST(DftTransformerTest, PDEPTransformTest) {
64 std::string file = STORM_TEST_RESOURCES_DIR "/dft/pdep4.dft";
65 std::shared_ptr<storm::dft::storage::DFT<double>> originalDft = storm::dft::api::loadDFTGalileoFile<double>(file);
66 std::shared_ptr<storm::dft::storage::DFT<double>> transformedDft =
68
69 // Count in original DFT
70 uint64_t fdepCount = 0;
71 uint64_t pdepCount = 0;
72 for (auto depIndex : originalDft->getDependencies()) {
73 auto dep = originalDft->getDependency(depIndex);
74 if (dep->probability() == 1) {
75 ++fdepCount;
76 } else {
77 ++pdepCount;
78 }
79 }
80 EXPECT_EQ(1ul, pdepCount);
81 EXPECT_EQ(0ul, fdepCount);
82 EXPECT_EQ(3ul, originalDft->nrBasicElements());
83
84 // Count in transformed DFT
85 fdepCount = 0;
86 pdepCount = 0;
87 for (auto depIndex : transformedDft->getDependencies()) {
88 auto dep = transformedDft->getDependency(depIndex);
89 if (dep->probability() == 1) {
90 ++fdepCount;
91 } else {
92 ++pdepCount;
93 }
94 }
95 EXPECT_EQ(1ul, pdepCount);
96 EXPECT_EQ(2ul, fdepCount);
97 EXPECT_EQ(4ul, transformedDft->nrBasicElements());
98}
99
100} // namespace
TEST(OrderTest, Simple)
Definition OrderTest.cpp:8
static std::shared_ptr< storm::dft::storage::DFT< ValueType > > transformUniqueFailedBE(storm::dft::storage::DFT< ValueType > const &dft)
Introduce unique BE which is always failed (instead of multiple ones).
static std::shared_ptr< storm::dft::storage::DFT< ValueType > > transformBinaryDependencies(storm::dft::storage::DFT< ValueType > const &dft)
Introduce binary dependencies (with only one dependent event) instead of dependencies with multiple d...