13TEST(DirectEncodingParserTest, DtmcParsing) {
14 std::shared_ptr<storm::models::sparse::Model<double>> modelPtr =
19 ASSERT_EQ(8607ul, modelPtr->getNumberOfStates());
20 ASSERT_EQ(15113ul, modelPtr->getNumberOfTransitions());
21 ASSERT_TRUE(modelPtr->hasLabel(
"init"));
22 ASSERT_EQ(1ul, modelPtr->getInitialStates().getNumberOfSetBits());
23 ASSERT_TRUE(modelPtr->hasLabel(
"observeIGreater1"));
24 ASSERT_EQ(4650ul, modelPtr->getStates(
"observeIGreater1").getNumberOfSetBits());
25 ASSERT_TRUE(modelPtr->hasLabel(
"observe0Greater1"));
26 ASSERT_EQ(1260ul, modelPtr->getStates(
"observe0Greater1").getNumberOfSetBits());
28 std::shared_ptr<storm::models::ModelBase> modelBasePtr =
32 ASSERT_EQ(8607ul, dtmc->getNumberOfStates());
35TEST(DirectEncodingParserTest, DtmcRationalParsing) {
36 std::shared_ptr<storm::models::sparse::Model<storm::RationalNumber>> modelPtr =
41 ASSERT_EQ(8607ul, modelPtr->getNumberOfStates());
42 ASSERT_EQ(15113ul, modelPtr->getNumberOfTransitions());
43 ASSERT_TRUE(modelPtr->hasLabel(
"init"));
44 ASSERT_EQ(1ul, modelPtr->getInitialStates().getNumberOfSetBits());
45 ASSERT_TRUE(modelPtr->hasLabel(
"observeIGreater1"));
46 ASSERT_EQ(4650ul, modelPtr->getStates(
"observeIGreater1").getNumberOfSetBits());
47 ASSERT_TRUE(modelPtr->hasLabel(
"observe0Greater1"));
48 ASSERT_EQ(1260ul, modelPtr->getStates(
"observe0Greater1").getNumberOfSetBits());
50 std::shared_ptr<storm::models::ModelBase> modelBasePtr =
54 ASSERT_EQ(8607ul, dtmc->getNumberOfStates());
57TEST(DirectEncodingParserTest, MdpParsing) {
58 std::shared_ptr<storm::models::sparse::Model<double>> modelPtr =
63 ASSERT_EQ(169ul, modelPtr->getNumberOfStates());
64 ASSERT_EQ(436ul, modelPtr->getNumberOfTransitions());
66 ASSERT_TRUE(modelPtr->hasLabel(
"init"));
67 ASSERT_EQ(1ul, modelPtr->getInitialStates().getNumberOfSetBits());
68 ASSERT_TRUE(modelPtr->hasLabel(
"six"));
69 ASSERT_EQ(5ul, modelPtr->getStates(
"six").getNumberOfSetBits());
70 ASSERT_TRUE(modelPtr->hasLabel(
"eleven"));
71 ASSERT_EQ(2ul, modelPtr->getStates(
"eleven").getNumberOfSetBits());
72 ASSERT_EQ(1ul, modelPtr->getNumberOfRewardModels());
73 ASSERT_TRUE(modelPtr->hasRewardModel(
"coinflips"));
74 ASSERT_TRUE(!modelPtr->getRewardModel(
"coinflips").hasStateRewards());
75 ASSERT_TRUE(modelPtr->getRewardModel(
"coinflips").hasStateActionRewards());
76 ASSERT_TRUE(!modelPtr->getRewardModel(
"coinflips").isAllZero());
79TEST(DirectEncodingParserTest, CtmcParsing) {
80 std::shared_ptr<storm::models::sparse::Model<double>> modelPtr =
85 ASSERT_EQ(276ul, modelPtr->getNumberOfStates());
86 ASSERT_EQ(1120ul, modelPtr->getNumberOfTransitions());
87 ASSERT_TRUE(modelPtr->hasLabel(
"init"));
88 ASSERT_EQ(1ul, modelPtr->getInitialStates().getNumberOfSetBits());
89 ASSERT_TRUE(modelPtr->hasLabel(
"premium"));
90 ASSERT_EQ(64ul, modelPtr->getStates(
"premium").getNumberOfSetBits());
91 ASSERT_TRUE(modelPtr->hasLabel(
"minimum"));
92 ASSERT_EQ(132ul, modelPtr->getStates(
"minimum").getNumberOfSetBits());
93 ASSERT_EQ(1ul, modelPtr->getNumberOfRewardModels());
94 ASSERT_TRUE(modelPtr->hasRewardModel(
"num_repairs"));
95 ASSERT_TRUE(!modelPtr->getRewardModel(
"num_repairs").hasStateRewards());
96 ASSERT_TRUE(modelPtr->getRewardModel(
"num_repairs").hasStateActionRewards());
97 ASSERT_TRUE(!modelPtr->getRewardModel(
"num_repairs").isAllZero());
100TEST(DirectEncodingParserTest, MarkovAutomatonParsing) {
101 std::shared_ptr<storm::models::sparse::Model<double>> modelPtr =
107 ASSERT_EQ(17ul, ma->getNumberOfStates());
108 ASSERT_EQ(25ul, ma->getNumberOfTransitions());
109 ASSERT_EQ(19ul, ma->getNumberOfChoices());
110 ASSERT_EQ(10ul, ma->getMarkovianStates().getNumberOfSetBits());
111 ASSERT_EQ(5, ma->getMaximalExitRate());
112 ASSERT_EQ(1ul, ma->getNumberOfRewardModels());
113 ASSERT_TRUE(ma->hasRewardModel(
"avg_waiting_time"));
114 ASSERT_TRUE(ma->getRewardModel(
"avg_waiting_time").hasStateRewards());
115 ASSERT_TRUE(!ma->getRewardModel(
"avg_waiting_time").hasStateActionRewards());
116 ASSERT_TRUE(!ma->getRewardModel(
"avg_waiting_time").isAllZero());
117 ASSERT_TRUE(modelPtr->hasLabel(
"init"));
118 ASSERT_EQ(1ul, modelPtr->getInitialStates().getNumberOfSetBits());
119 ASSERT_TRUE(modelPtr->hasLabel(
"one_job_finished"));
120 ASSERT_EQ(6ul, modelPtr->getStates(
"one_job_finished").getNumberOfSetBits());
123TEST(DirectEncodingParserTest, IntervalDtmcTest) {
124 std::shared_ptr<storm::models::sparse::Model<storm::Interval>> modelPtr =
128 ASSERT_EQ(613ul, dtmc->getNumberOfStates());
129 EXPECT_TRUE(modelPtr->hasUncertainty());
131 std::shared_ptr<storm::models::ModelBase> modelBasePtr =
135 ASSERT_EQ(613ul, dtmc->getNumberOfStates());
136 EXPECT_TRUE(modelPtr->hasUncertainty());
139TEST(DirectEncodingParserTest, RationalIntervalDtmcTest) {
140 std::shared_ptr<storm::models::sparse::Model<storm::RationalInterval>> modelPtr =
144 ASSERT_EQ(613ul, dtmc->getNumberOfStates());
145 EXPECT_TRUE(modelPtr->hasUncertainty());
147 std::shared_ptr<storm::models::ModelBase> modelBasePtr =
151 ASSERT_EQ(613ul, dtmc->getNumberOfStates());
152 EXPECT_TRUE(modelPtr->hasUncertainty());
155TEST(DirectEncodingParserTest, PomdpParsing) {
156 std::shared_ptr<storm::models::sparse::Model<double>> modelPtr =
161 ASSERT_EQ(15ul, modelPtr->getNumberOfStates());
162 ASSERT_EQ(66ul, modelPtr->getNumberOfTransitions());
164 ASSERT_TRUE(modelPtr->hasLabel(
"init"));
165 ASSERT_EQ(1ul, modelPtr->getInitialStates().getNumberOfSetBits());
166 ASSERT_TRUE(modelPtr->hasLabel(
"bad"));
167 ASSERT_EQ(2ul, modelPtr->getStates(
"bad").getNumberOfSetBits());
168 ASSERT_TRUE(modelPtr->hasLabel(
"goal"));
169 ASSERT_EQ(1ul, modelPtr->getStates(
"goal").getNumberOfSetBits());
170 ASSERT_EQ(1ul, modelPtr->getNumberOfRewardModels());
171 ASSERT_TRUE(modelPtr->hasRewardModel(
"rew"));
172 ASSERT_TRUE(!modelPtr->getRewardModel(
"rew").hasStateRewards());
173 ASSERT_TRUE(modelPtr->getRewardModel(
"rew").hasStateActionRewards());
174 ASSERT_TRUE(!modelPtr->getRewardModel(
"rew").isAllZero());
180 ASSERT_EQ(15ul, modelPtr->getNumberOfStates());
181 ASSERT_EQ(66ul, modelPtr->getNumberOfTransitions());
183 ASSERT_TRUE(modelPtr->hasLabel(
"init"));
184 ASSERT_EQ(1ul, modelPtr->getInitialStates().getNumberOfSetBits());
185 ASSERT_TRUE(modelPtr->hasLabel(
"bad"));
186 ASSERT_EQ(2ul, modelPtr->getStates(
"bad").getNumberOfSetBits());
187 ASSERT_TRUE(modelPtr->hasLabel(
"goal"));
188 ASSERT_EQ(1ul, modelPtr->getStates(
"goal").getNumberOfSetBits());
189 ASSERT_EQ(0ul, modelPtr->getNumberOfRewardModels());
190 ASSERT_FALSE(modelPtr->hasRewardModel());
193TEST(DirectEncodingParserTest, CompressedParsing) {
194#ifndef STORM_HAVE_LIBARCHIVE
196 storm::exceptions::MissingLibraryException);
198 storm::exceptions::MissingLibraryException);
199 GTEST_SKIP() <<
"libarchive not available.";
204 ASSERT_EQ(677ul, dtmc->getNumberOfStates());
209 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.