aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/store/src/test
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2023-02-02 17:20:35 +0100
committerLibravatar Kristóf Marussy <kristof@marussy.com>2023-02-02 17:20:35 +0100
commitf062947f68e79dc866fc0d8d1f9b8874fd00b51e (patch)
tree9719e020fd3a9c0fa5a3fe7877937a81dad45b35 /subprojects/store/src/test
parentfeat: track ModelQuery pending changes (diff)
downloadrefinery-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.java31
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 @@
1package tools.refinery.store.model.tests; 1package tools.refinery.store.model.tests;
2 2
3import org.junit.jupiter.api.Test; 3import org.junit.jupiter.api.Test;
4import tools.refinery.store.model.Model;
4import tools.refinery.store.model.ModelStore; 5import tools.refinery.store.model.ModelStore;
5import tools.refinery.store.representation.Symbol; 6import tools.refinery.store.representation.Symbol;
6import tools.refinery.store.tuple.Tuple; 7import 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 }