Storm
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 auto dft = storm::dft::api::loadDFTGalileoFile<double>(STORM_TEST_RESOURCES_DIR "/dft/bdd/AndOrTest.dft");
12 auto manager{std::make_shared<storm::dft::storage::SylvanBddManager>()};
13 auto transformator{std::make_shared<storm::dft::transformations::SftToBddTransformator<double>>(dft, manager)};
14
15 // Use default variable ordering x1, x2, x3, x4
16 auto bdd = transformator->transformTopLevel();
17 EXPECT_EQ("x1", manager->getName(0));
18 EXPECT_EQ("x2", manager->getName(1));
19 EXPECT_EQ("x3", manager->getName(2));
20 EXPECT_EQ("x4", manager->getName(3));
21 EXPECT_EQ(5ul, bdd.NodeCount());
22
23 // Set different variable ordering x2, x4, x1, x3
24 std::vector<size_t> beOrder;
25 beOrder.push_back(dft->getIndex("x2"));
26 beOrder.push_back(dft->getIndex("x4"));
27 beOrder.push_back(dft->getIndex("x1"));
28 beOrder.push_back(dft->getIndex("x3"));
29 dft->setBEOrder(beOrder);
30 manager = std::make_shared<storm::dft::storage::SylvanBddManager>();
31 transformator = std::make_shared<storm::dft::transformations::SftToBddTransformator<double>>(dft, manager);
32
33 bdd = transformator->transformTopLevel();
34 EXPECT_EQ("x2", manager->getName(0));
35 EXPECT_EQ("x4", manager->getName(1));
36 EXPECT_EQ("x1", manager->getName(2));
37 EXPECT_EQ("x3", manager->getName(3));
38 EXPECT_EQ(7ul, bdd.NodeCount());
39}
40
41TEST(TestBddVarOrdering, OrderParser) {
42 auto dft = storm::dft::api::loadDFTGalileoFile<double>(STORM_TEST_RESOURCES_DIR "/dft/bdd/AndOrTest.dft");
43
44 // Load variable ordering
45 auto beOrder = storm::dft::parser::BEOrderParser<double>::parseBEOrder(STORM_TEST_RESOURCES_DIR "/dft/bdd/AndOrTest_vars.txt", *dft);
46 EXPECT_EQ(4ul, beOrder.size());
47 EXPECT_EQ("x2", dft->getElement(beOrder.at(0))->name());
48 EXPECT_EQ("x4", dft->getElement(beOrder.at(1))->name());
49 EXPECT_EQ("x1", dft->getElement(beOrder.at(2))->name());
50 EXPECT_EQ("x3", dft->getElement(beOrder.at(3))->name());
51 dft->setBEOrder(beOrder);
52
53 auto manager = std::make_shared<storm::dft::storage::SylvanBddManager>();
54 auto transformator = std::make_shared<storm::dft::transformations::SftToBddTransformator<double>>(dft, manager);
55
56 auto bdd = transformator->transformTopLevel();
57 EXPECT_EQ("x2", manager->getName(0));
58 EXPECT_EQ("x4", manager->getName(1));
59 EXPECT_EQ("x1", manager->getName(2));
60 EXPECT_EQ("x3", manager->getName(3));
61 EXPECT_EQ(7ul, bdd.NodeCount());
62}
63
64} // namespace
TEST(OrderTest, Simple)
Definition OrderTest.cpp:8
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.