Storm 1.11.1.1
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
TestBddVarOrdering.cpp
Go to the documentation of this file.
1#include "storm-config.h"
2#include "test/storm_gtest.h"
3
7
8namespace {
9
10TEST(TestBddVarOrdering, VariableOrdering) {
11#ifdef STORM_HAVE_SYLVAN
12 auto dft = storm::dft::api::loadDFTGalileoFile<double>(STORM_TEST_RESOURCES_DIR "/dft/bdd/AndOrTest.dft");
13 auto manager{std::make_shared<storm::dft::storage::SylvanBddManager>()};
14 auto transformator{std::make_shared<storm::dft::transformations::SftToBddTransformator<double>>(dft, manager)};
15
16 // Use default variable ordering x1, x2, x3, x4
17 auto bdd = transformator->transformTopLevel();
18 EXPECT_EQ("x1", manager->getName(0));
19 EXPECT_EQ("x2", manager->getName(1));
20 EXPECT_EQ("x3", manager->getName(2));
21 EXPECT_EQ("x4", manager->getName(3));
22 EXPECT_EQ(5ul, bdd.NodeCount());
23
24 // Set different variable ordering x2, x4, x1, x3
25 std::vector<size_t> beOrder;
26 beOrder.push_back(dft->getIndex("x2"));
27 beOrder.push_back(dft->getIndex("x4"));
28 beOrder.push_back(dft->getIndex("x1"));
29 beOrder.push_back(dft->getIndex("x3"));
30 dft->setBEOrder(beOrder);
31 manager = std::make_shared<storm::dft::storage::SylvanBddManager>();
32 transformator = std::make_shared<storm::dft::transformations::SftToBddTransformator<double>>(dft, manager);
33
34 bdd = transformator->transformTopLevel();
35 EXPECT_EQ("x2", manager->getName(0));
36 EXPECT_EQ("x4", manager->getName(1));
37 EXPECT_EQ("x1", manager->getName(2));
38 EXPECT_EQ("x3", manager->getName(3));
39 EXPECT_EQ(7ul, bdd.NodeCount());
40#else
41 GTEST_SKIP() << "Library Sylvan not available.";
42#endif
43}
44
45TEST(TestBddVarOrdering, OrderParser) {
46#ifdef STORM_HAVE_SYLVAN
47 auto dft = storm::dft::api::loadDFTGalileoFile<double>(STORM_TEST_RESOURCES_DIR "/dft/bdd/AndOrTest.dft");
48
49 // Load variable ordering
50 auto beOrder = storm::dft::parser::BEOrderParser<double>::parseBEOrder(STORM_TEST_RESOURCES_DIR "/dft/bdd/AndOrTest_vars.txt", *dft);
51 EXPECT_EQ(4ul, beOrder.size());
52 EXPECT_EQ("x2", dft->getElement(beOrder.at(0))->name());
53 EXPECT_EQ("x4", dft->getElement(beOrder.at(1))->name());
54 EXPECT_EQ("x1", dft->getElement(beOrder.at(2))->name());
55 EXPECT_EQ("x3", dft->getElement(beOrder.at(3))->name());
56 dft->setBEOrder(beOrder);
57
58 auto manager = std::make_shared<storm::dft::storage::SylvanBddManager>();
59 auto transformator = std::make_shared<storm::dft::transformations::SftToBddTransformator<double>>(dft, manager);
60
61 auto bdd = transformator->transformTopLevel();
62 EXPECT_EQ("x2", manager->getName(0));
63 EXPECT_EQ("x4", manager->getName(1));
64 EXPECT_EQ("x1", manager->getName(2));
65 EXPECT_EQ("x3", manager->getName(3));
66 EXPECT_EQ(7ul, bdd.NodeCount());
67#else
68 GTEST_SKIP() << "Library Sylvan not available.";
69#endif
70}
71
72} // namespace
TEST(OrderTest, Simple)
Definition OrderTest.cpp:15
static std::vector< size_t > parseBEOrder(std::string const &filename, storm::dft::storage::DFT< ValueType > const &dft)
Parse BE order from given file.
SettingsManager const & manager()
Retrieves the settings manager.