Storm 1.14.0.1
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
IntervalEndComponentPreserverTest.cpp
Go to the documentation of this file.
1#include "storm-config.h"
2#include "test/storm_gtest.h"
3
4#include <string>
5
11#include "storm/api/builder.h"
15
16class IntervalEndComponentPreserverTest : public ::testing::Test {
17 protected:
18 void SetUp() override {
19#ifndef STORM_HAVE_Z3
20 GTEST_SKIP() << "Z3 not available.";
21#endif
22 }
23};
24
27 // 0 1 2
28 // ---- group 0/2 ----
29 // 0 ( [0, 1] [0, 1] 0 ) 0
30 // ---- group 1/2 ----
31 // 1 ( 0 0 [1, 1] ) 1
32 // ---- group 2/2 ----
33 // 2 ( 0 0 0 ) 2
34 // 0 1 2
35 builder.addNextValue(0, 0, storm::Interval(0, 1));
36 builder.addNextValue(0, 1, storm::Interval(0, 1));
37 builder.addNextValue(1, 2, storm::Interval(1, 1));
39
40 std::vector<storm::Interval> vector = {storm::Interval(0, 0), storm::Interval(1, 1), storm::Interval(0, 0)};
41
43 auto newMatrix = preserver.eliminateMECs(matrix, vector);
44
45 // Should be this now
46 // 0 1 2 3
47 // ---- group 0/3 ----
48 // 0 ( 0 [0, 1] 0 [0, 1] ) 0
49 // ---- group 1/3 ----
50 // 1 ( 0 0 [1, 1] 0 ) 1
51 // ---- group 2/3 ----
52 // 2 ( 0 0 0 0 ) 2
53 // ---- group 3/3 ----
54 // 3 ( 0 0 0 0 ) 3
55 // 0 1 2 3
56
57 ASSERT_EQ(newMatrix->getRowCount(), 4);
58 ASSERT_EQ(newMatrix->getColumnCount(), 4);
59 ASSERT_EQ(newMatrix->getEntryCount(), 3);
60
61 ASSERT_EQ(newMatrix->getRow(0).getNumberOfEntries(), 2);
62 ASSERT_EQ(newMatrix->getRow(0).begin()->getColumn(), 1);
63 ASSERT_EQ(newMatrix->getRow(0).begin()->getValue(), storm::Interval(0, 1));
64 ASSERT_EQ((newMatrix->getRow(0).begin() + 1)->getColumn(), 3);
65 ASSERT_EQ((newMatrix->getRow(0).begin() + 1)->getValue(), storm::Interval(0, 1));
66
67 ASSERT_EQ(newMatrix->getRow(1).getNumberOfEntries(), 1);
68 ASSERT_EQ(newMatrix->getRow(1).begin()->getColumn(), 2);
69 ASSERT_EQ(newMatrix->getRow(1).begin()->getValue(), storm::Interval(1, 1));
70
71 ASSERT_EQ(newMatrix->getRow(2).getNumberOfEntries(), 0);
72 ASSERT_EQ(newMatrix->getRow(3).getNumberOfEntries(), 0);
73}
TEST_F(IntervalEndComponentPreserverTest, Simple)
A class that can be used to build a sparse matrix by adding value by value.
void addNextValue(index_type row, index_type column, value_type const &value)
Sets the matrix entry at the given row and column to the given value.
SparseMatrix< value_type > build(index_type overriddenRowCount=0, index_type overriddenColumnCount=0, index_type overriddenRowGroupCount=0)
A class that holds a possibly non-square matrix in the compressed row storage format.
std::optional< storage::SparseMatrix< Interval > > eliminateMECs(storm::storage::SparseMatrix< Interval > const &matrix, std::vector< Interval > const &vector)
carl::Interval< double > Interval
Interval type.