diff options
author | 2023-02-02 17:20:35 +0100 | |
---|---|---|
committer | 2023-02-02 17:20:35 +0100 | |
commit | f062947f68e79dc866fc0d8d1f9b8874fd00b51e (patch) | |
tree | 9719e020fd3a9c0fa5a3fe7877937a81dad45b35 /subprojects/store/src/test | |
parent | feat: track ModelQuery pending changes (diff) | |
download | refinery-f062947f68e79dc866fc0d8d1f9b8874fd00b51e.tar.gz refinery-f062947f68e79dc866fc0d8d1f9b8874fd00b51e.tar.zst refinery-f062947f68e79dc866fc0d8d1f9b8874fd00b51e.zip |
feat: track uncommitted Model changes
Diffstat (limited to 'subprojects/store/src/test')
-rw-r--r-- | subprojects/store/src/test/java/tools/refinery/store/model/tests/ModelTest.java | 31 |
1 files changed, 26 insertions, 5 deletions
diff --git a/subprojects/store/src/test/java/tools/refinery/store/model/tests/ModelTest.java b/subprojects/store/src/test/java/tools/refinery/store/model/tests/ModelTest.java index e7bff1f9..371b5e47 100644 --- a/subprojects/store/src/test/java/tools/refinery/store/model/tests/ModelTest.java +++ b/subprojects/store/src/test/java/tools/refinery/store/model/tests/ModelTest.java | |||
@@ -1,6 +1,7 @@ | |||
1 | package tools.refinery.store.model.tests; | 1 | package tools.refinery.store.model.tests; |
2 | 2 | ||
3 | import org.junit.jupiter.api.Test; | 3 | import org.junit.jupiter.api.Test; |
4 | import tools.refinery.store.model.Model; | ||
4 | import tools.refinery.store.model.ModelStore; | 5 | import tools.refinery.store.model.ModelStore; |
5 | import tools.refinery.store.representation.Symbol; | 6 | import tools.refinery.store.representation.Symbol; |
6 | import tools.refinery.store.tuple.Tuple; | 7 | import tools.refinery.store.tuple.Tuple; |
@@ -30,7 +31,7 @@ class ModelTest { | |||
30 | var friend = new Symbol<>("friend", 2, Boolean.class, false); | 31 | var friend = new Symbol<>("friend", 2, Boolean.class, false); |
31 | 32 | ||
32 | var store = ModelStore.builder().symbols(person, age, friend).build(); | 33 | var store = ModelStore.builder().symbols(person, age, friend).build(); |
33 | var model = store.createModel(); | 34 | var model = store.createEmptyModel(); |
34 | var personInterpretation = model.getInterpretation(person); | 35 | var personInterpretation = model.getInterpretation(person); |
35 | var ageInterpretation = model.getInterpretation(age); | 36 | var ageInterpretation = model.getInterpretation(age); |
36 | var friendInterpretation = model.getInterpretation(friend); | 37 | var friendInterpretation = model.getInterpretation(friend); |
@@ -59,7 +60,7 @@ class ModelTest { | |||
59 | var person = new Symbol<>("Person", 1, Boolean.class, false); | 60 | var person = new Symbol<>("Person", 1, Boolean.class, false); |
60 | 61 | ||
61 | var store = ModelStore.builder().symbols(person).build(); | 62 | var store = ModelStore.builder().symbols(person).build(); |
62 | var model = store.createModel(); | 63 | var model = store.createEmptyModel(); |
63 | var personInterpretation = model.getInterpretation(person); | 64 | var personInterpretation = model.getInterpretation(person); |
64 | 65 | ||
65 | final Tuple tuple3 = Tuple.of(1, 1, 1); | 66 | final Tuple tuple3 = Tuple.of(1, 1, 1); |
@@ -72,7 +73,7 @@ class ModelTest { | |||
72 | var age = new Symbol<>("age", 1, Integer.class, null); | 73 | var age = new Symbol<>("age", 1, Integer.class, null); |
73 | 74 | ||
74 | var store = ModelStore.builder().symbols(age).build(); | 75 | var store = ModelStore.builder().symbols(age).build(); |
75 | var model = store.createModel(); | 76 | var model = store.createEmptyModel(); |
76 | var ageInterpretation = model.getInterpretation(age); | 77 | var ageInterpretation = model.getInterpretation(age); |
77 | 78 | ||
78 | ageInterpretation.put(Tuple.of(1), null); // valid | 79 | ageInterpretation.put(Tuple.of(1), null); // valid |
@@ -88,7 +89,7 @@ class ModelTest { | |||
88 | var friend = new Symbol<>("friend", 2, Boolean.class, false); | 89 | var friend = new Symbol<>("friend", 2, Boolean.class, false); |
89 | 90 | ||
90 | var store = ModelStore.builder().symbols(person, age, friend).build(); | 91 | var store = ModelStore.builder().symbols(person, age, friend).build(); |
91 | var model = store.createModel(); | 92 | var model = store.createEmptyModel(); |
92 | var personInterpretation = model.getInterpretation(person); | 93 | var personInterpretation = model.getInterpretation(person); |
93 | var ageInterpretation = model.getInterpretation(age); | 94 | var ageInterpretation = model.getInterpretation(age); |
94 | var friendInterpretation = model.getInterpretation(friend); | 95 | var friendInterpretation = model.getInterpretation(friend); |
@@ -116,7 +117,7 @@ class ModelTest { | |||
116 | var friend = new Symbol<>("friend", 2, Boolean.class, false); | 117 | var friend = new Symbol<>("friend", 2, Boolean.class, false); |
117 | 118 | ||
118 | var store = ModelStore.builder().symbols(person, friend).build(); | 119 | var store = ModelStore.builder().symbols(person, friend).build(); |
119 | var model = store.createModel(); | 120 | var model = store.createEmptyModel(); |
120 | var personInterpretation = model.getInterpretation(person); | 121 | var personInterpretation = model.getInterpretation(person); |
121 | var friendInterpretation = model.getInterpretation(friend); | 122 | var friendInterpretation = model.getInterpretation(friend); |
122 | 123 | ||
@@ -124,25 +125,45 @@ class ModelTest { | |||
124 | personInterpretation.put(Tuple.of(1), true); | 125 | personInterpretation.put(Tuple.of(1), true); |
125 | friendInterpretation.put(Tuple.of(0, 1), true); | 126 | friendInterpretation.put(Tuple.of(0, 1), true); |
126 | friendInterpretation.put(Tuple.of(1, 0), true); | 127 | friendInterpretation.put(Tuple.of(1, 0), true); |
128 | |||
129 | assertTrue(model.hasUncommittedChanges()); | ||
130 | assertEquals(Model.NO_STATE_ID, model.getState()); | ||
131 | |||
127 | long state1 = model.commit(); | 132 | long state1 = model.commit(); |
128 | 133 | ||
134 | assertFalse(model.hasUncommittedChanges()); | ||
135 | assertEquals(state1, model.getState()); | ||
136 | |||
129 | assertFalse(personInterpretation.get(Tuple.of(2))); | 137 | assertFalse(personInterpretation.get(Tuple.of(2))); |
130 | assertFalse(friendInterpretation.get(Tuple.of(0, 2))); | 138 | assertFalse(friendInterpretation.get(Tuple.of(0, 2))); |
131 | 139 | ||
132 | personInterpretation.put(Tuple.of(2), true); | 140 | personInterpretation.put(Tuple.of(2), true); |
133 | friendInterpretation.put(Tuple.of(0, 2), true); | 141 | friendInterpretation.put(Tuple.of(0, 2), true); |
142 | |||
143 | assertTrue(model.hasUncommittedChanges()); | ||
144 | assertEquals(state1, model.getState()); | ||
145 | |||
134 | long state2 = model.commit(); | 146 | long state2 = model.commit(); |
135 | 147 | ||
148 | assertFalse(model.hasUncommittedChanges()); | ||
149 | assertEquals(state2, model.getState()); | ||
150 | |||
136 | assertTrue(personInterpretation.get(Tuple.of(2))); | 151 | assertTrue(personInterpretation.get(Tuple.of(2))); |
137 | assertTrue(friendInterpretation.get(Tuple.of(0, 2))); | 152 | assertTrue(friendInterpretation.get(Tuple.of(0, 2))); |
138 | 153 | ||
139 | model.restore(state1); | 154 | model.restore(state1); |
140 | 155 | ||
156 | assertFalse(model.hasUncommittedChanges()); | ||
157 | assertEquals(state1, model.getState()); | ||
158 | |||
141 | assertFalse(personInterpretation.get(Tuple.of(2))); | 159 | assertFalse(personInterpretation.get(Tuple.of(2))); |
142 | assertFalse(friendInterpretation.get(Tuple.of(0, 2))); | 160 | assertFalse(friendInterpretation.get(Tuple.of(0, 2))); |
143 | 161 | ||
144 | model.restore(state2); | 162 | model.restore(state2); |
145 | 163 | ||
164 | assertFalse(model.hasUncommittedChanges()); | ||
165 | assertEquals(state2, model.getState()); | ||
166 | |||
146 | assertTrue(personInterpretation.get(Tuple.of(2))); | 167 | assertTrue(personInterpretation.get(Tuple.of(2))); |
147 | assertTrue(friendInterpretation.get(Tuple.of(0, 2))); | 168 | assertTrue(friendInterpretation.get(Tuple.of(0, 2))); |
148 | } | 169 | } |