12TEST(DirectEncodingParserTest, DtmcParsing) {
13 std::shared_ptr<storm::models::sparse::Model<double>> modelPtr =
18 ASSERT_EQ(8607ul, modelPtr->getNumberOfStates());
19 ASSERT_EQ(15113ul, modelPtr->getNumberOfTransitions());
20 ASSERT_TRUE(modelPtr->hasLabel(
"init"));
21 ASSERT_EQ(1ul, modelPtr->getInitialStates().getNumberOfSetBits());
22 ASSERT_TRUE(modelPtr->hasLabel(
"observeIGreater1"));
23 ASSERT_EQ(4650ul, modelPtr->getStates(
"observeIGreater1").getNumberOfSetBits());
24 ASSERT_TRUE(modelPtr->hasLabel(
"observe0Greater1"));
25 ASSERT_EQ(1260ul, modelPtr->getStates(
"observe0Greater1").getNumberOfSetBits());
27 std::shared_ptr<storm::models::ModelBase> modelBasePtr =
31 ASSERT_EQ(8607ul, dtmc->getNumberOfStates());
34TEST(DirectEncodingParserTest, DtmcRationalParsing) {
35 std::shared_ptr<storm::models::sparse::Model<storm::RationalNumber>> modelPtr =
40 ASSERT_EQ(8607ul, modelPtr->getNumberOfStates());
41 ASSERT_EQ(15113ul, modelPtr->getNumberOfTransitions());
42 ASSERT_TRUE(modelPtr->hasLabel(
"init"));
43 ASSERT_EQ(1ul, modelPtr->getInitialStates().getNumberOfSetBits());
44 ASSERT_TRUE(modelPtr->hasLabel(
"observeIGreater1"));
45 ASSERT_EQ(4650ul, modelPtr->getStates(
"observeIGreater1").getNumberOfSetBits());
46 ASSERT_TRUE(modelPtr->hasLabel(
"observe0Greater1"));
47 ASSERT_EQ(1260ul, modelPtr->getStates(
"observe0Greater1").getNumberOfSetBits());
49 std::shared_ptr<storm::models::ModelBase> modelBasePtr =
53 ASSERT_EQ(8607ul, dtmc->getNumberOfStates());
56TEST(DirectEncodingParserTest, MdpParsing) {
57 std::shared_ptr<storm::models::sparse::Model<double>> modelPtr =
62 ASSERT_EQ(169ul, modelPtr->getNumberOfStates());
63 ASSERT_EQ(436ul, modelPtr->getNumberOfTransitions());
65 ASSERT_TRUE(modelPtr->hasLabel(
"init"));
66 ASSERT_EQ(1ul, modelPtr->getInitialStates().getNumberOfSetBits());
67 ASSERT_TRUE(modelPtr->hasLabel(
"six"));
68 ASSERT_EQ(5ul, modelPtr->getStates(
"six").getNumberOfSetBits());
69 ASSERT_TRUE(modelPtr->hasLabel(
"eleven"));
70 ASSERT_EQ(2ul, modelPtr->getStates(
"eleven").getNumberOfSetBits());
71 ASSERT_EQ(1ul, modelPtr->getNumberOfRewardModels());
72 ASSERT_TRUE(modelPtr->hasRewardModel(
"coinflips"));
73 ASSERT_TRUE(!modelPtr->getRewardModel(
"coinflips").hasStateRewards());
74 ASSERT_TRUE(modelPtr->getRewardModel(
"coinflips").hasStateActionRewards());
75 ASSERT_TRUE(!modelPtr->getRewardModel(
"coinflips").isAllZero());
78TEST(DirectEncodingParserTest, CtmcParsing) {
79 std::shared_ptr<storm::models::sparse::Model<double>> modelPtr =
84 ASSERT_EQ(276ul, modelPtr->getNumberOfStates());
85 ASSERT_EQ(1120ul, modelPtr->getNumberOfTransitions());
86 ASSERT_TRUE(modelPtr->hasLabel(
"init"));
87 ASSERT_EQ(1ul, modelPtr->getInitialStates().getNumberOfSetBits());
88 ASSERT_TRUE(modelPtr->hasLabel(
"premium"));
89 ASSERT_EQ(64ul, modelPtr->getStates(
"premium").getNumberOfSetBits());
90 ASSERT_TRUE(modelPtr->hasLabel(
"minimum"));
91 ASSERT_EQ(132ul, modelPtr->getStates(
"minimum").getNumberOfSetBits());
92 ASSERT_EQ(1ul, modelPtr->getNumberOfRewardModels());
93 ASSERT_TRUE(modelPtr->hasRewardModel(
"num_repairs"));
94 ASSERT_TRUE(!modelPtr->getRewardModel(
"num_repairs").hasStateRewards());
95 ASSERT_TRUE(modelPtr->getRewardModel(
"num_repairs").hasStateActionRewards());
96 ASSERT_TRUE(!modelPtr->getRewardModel(
"num_repairs").isAllZero());
99TEST(DirectEncodingParserTest, MarkovAutomatonParsing) {
100 std::shared_ptr<storm::models::sparse::Model<double>> modelPtr =
106 ASSERT_EQ(17ul, ma->getNumberOfStates());
107 ASSERT_EQ(25ul, ma->getNumberOfTransitions());
108 ASSERT_EQ(19ul, ma->getNumberOfChoices());
109 ASSERT_EQ(10ul, ma->getMarkovianStates().getNumberOfSetBits());
110 ASSERT_EQ(5, ma->getMaximalExitRate());
111 ASSERT_EQ(1ul, ma->getNumberOfRewardModels());
112 ASSERT_TRUE(ma->hasRewardModel(
"avg_waiting_time"));
113 ASSERT_TRUE(ma->getRewardModel(
"avg_waiting_time").hasStateRewards());
114 ASSERT_TRUE(!ma->getRewardModel(
"avg_waiting_time").hasStateActionRewards());
115 ASSERT_TRUE(!ma->getRewardModel(
"avg_waiting_time").isAllZero());
116 ASSERT_TRUE(modelPtr->hasLabel(
"init"));
117 ASSERT_EQ(1ul, modelPtr->getInitialStates().getNumberOfSetBits());
118 ASSERT_TRUE(modelPtr->hasLabel(
"one_job_finished"));
119 ASSERT_EQ(6ul, modelPtr->getStates(
"one_job_finished").getNumberOfSetBits());
122TEST(DirectEncodingParserTest, IntervalDtmcTest) {
123 std::shared_ptr<storm::models::sparse::Model<storm::Interval>> modelPtr =
127 ASSERT_EQ(613ul, dtmc->getNumberOfStates());
128 EXPECT_TRUE(modelPtr->hasUncertainty());
130 std::shared_ptr<storm::models::ModelBase> modelBasePtr =
134 ASSERT_EQ(613ul, dtmc->getNumberOfStates());
135 EXPECT_TRUE(modelPtr->hasUncertainty());
138TEST(DirectEncodingParserTest, PomdpParsing) {
139 std::shared_ptr<storm::models::sparse::Model<double>> modelPtr =
144 ASSERT_EQ(15ul, modelPtr->getNumberOfStates());
145 ASSERT_EQ(66ul, modelPtr->getNumberOfTransitions());
147 ASSERT_TRUE(modelPtr->hasLabel(
"init"));
148 ASSERT_EQ(1ul, modelPtr->getInitialStates().getNumberOfSetBits());
149 ASSERT_TRUE(modelPtr->hasLabel(
"bad"));
150 ASSERT_EQ(2ul, modelPtr->getStates(
"bad").getNumberOfSetBits());
151 ASSERT_TRUE(modelPtr->hasLabel(
"goal"));
152 ASSERT_EQ(1ul, modelPtr->getStates(
"goal").getNumberOfSetBits());
153 ASSERT_EQ(1ul, modelPtr->getNumberOfRewardModels());
154 ASSERT_TRUE(modelPtr->hasRewardModel(
"rew"));
155 ASSERT_TRUE(!modelPtr->getRewardModel(
"rew").hasStateRewards());
156 ASSERT_TRUE(modelPtr->getRewardModel(
"rew").hasStateActionRewards());
157 ASSERT_TRUE(!modelPtr->getRewardModel(
"rew").isAllZero());
163 ASSERT_EQ(15ul, modelPtr->getNumberOfStates());
164 ASSERT_EQ(66ul, modelPtr->getNumberOfTransitions());
166 ASSERT_TRUE(modelPtr->hasLabel(
"init"));
167 ASSERT_EQ(1ul, modelPtr->getInitialStates().getNumberOfSetBits());
168 ASSERT_TRUE(modelPtr->hasLabel(
"bad"));
169 ASSERT_EQ(2ul, modelPtr->getStates(
"bad").getNumberOfSetBits());
170 ASSERT_TRUE(modelPtr->hasLabel(
"goal"));
171 ASSERT_EQ(1ul, modelPtr->getStates(
"goal").getNumberOfSetBits());
172 ASSERT_EQ(0ul, modelPtr->getNumberOfRewardModels());
173 ASSERT_FALSE(modelPtr->hasRewardModel());
176TEST(DirectEncodingParserTest, CompressedParsing) {
177#ifndef STORM_HAVE_LIBARCHIVE
179 storm::exceptions::MissingLibraryException);
181 storm::exceptions::MissingLibraryException);
182 GTEST_SKIP() <<
"libarchive not available.";
187 ASSERT_EQ(677ul, dtmc->getNumberOfStates());
192 ASSERT_EQ(677ul, dtmc->getNumberOfStates());
std::shared_ptr< storm::models::sparse::Model< ValueType, RewardModelType > > parseDirectEncodingModel(std::filesystem::path const &file, DirectEncodingParserOptions const &options)
Parses the given file in DRN format.