aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/store-query-viatra/src/test
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2023-06-18 14:12:20 +0200
committerLibravatar Kristóf Marussy <kristof@marussy.com>2023-06-18 14:12:20 +0200
commit2069579ce57dbaf04bff610f8151409e25bf114a (patch)
tree1f64df9abe0cdf3b5f87de44fcf1d4815fed970e /subprojects/store-query-viatra/src/test
parentfix: further Dnf tests and fixes (diff)
downloadrefinery-2069579ce57dbaf04bff610f8151409e25bf114a.tar.gz
refinery-2069579ce57dbaf04bff610f8151409e25bf114a.tar.zst
refinery-2069579ce57dbaf04bff610f8151409e25bf114a.zip
refactor: clean up Symbol constructor
Shorthad syntax for the most commonly used symbol types.
Diffstat (limited to 'subprojects/store-query-viatra/src/test')
-rw-r--r--subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/DiagonalQueryTest.java110
-rw-r--r--subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/FunctionalQueryTest.java63
-rw-r--r--subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/QueryTest.java75
-rw-r--r--subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/QueryTransactionTest.java43
4 files changed, 67 insertions, 224 deletions
diff --git a/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/DiagonalQueryTest.java b/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/DiagonalQueryTest.java
index 86a27f5b..b21c254c 100644
--- a/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/DiagonalQueryTest.java
+++ b/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/DiagonalQueryTest.java
@@ -11,6 +11,7 @@ import tools.refinery.store.query.ModelQueryAdapter;
11import tools.refinery.store.query.dnf.Dnf; 11import tools.refinery.store.query.dnf.Dnf;
12import tools.refinery.store.query.dnf.Query; 12import tools.refinery.store.query.dnf.Query;
13import tools.refinery.store.query.viatra.tests.QueryEngineTest; 13import tools.refinery.store.query.viatra.tests.QueryEngineTest;
14import tools.refinery.store.query.view.AnySymbolView;
14import tools.refinery.store.query.view.FunctionView; 15import tools.refinery.store.query.view.FunctionView;
15import tools.refinery.store.query.view.KeyOnlyView; 16import tools.refinery.store.query.view.KeyOnlyView;
16import tools.refinery.store.representation.Symbol; 17import tools.refinery.store.representation.Symbol;
@@ -26,13 +27,17 @@ import static tools.refinery.store.query.viatra.tests.QueryAssertions.assertNull
26import static tools.refinery.store.query.viatra.tests.QueryAssertions.assertResults; 27import static tools.refinery.store.query.viatra.tests.QueryAssertions.assertResults;
27 28
28class DiagonalQueryTest { 29class DiagonalQueryTest {
30 private static final Symbol<Boolean> person = Symbol.of("Person", 1);
31 private static final Symbol<Boolean> friend = Symbol.of("friend", 2);
32 private static final Symbol<Boolean> symbol = Symbol.of("symbol", 4);
33 private static final Symbol<Integer> intSymbol = Symbol.of("intSymbol", 4, Integer.class);
34 private static final AnySymbolView personView = new KeyOnlyView<>(person);
35 private static final AnySymbolView friendView = new KeyOnlyView<>(friend);
36 private static final AnySymbolView symbolView = new KeyOnlyView<>(symbol);
37 private static final AnySymbolView intSymbolView = new FunctionView<>(intSymbol);
38
29 @QueryEngineTest 39 @QueryEngineTest
30 void inputKeyNegationTest(QueryEvaluationHint hint) { 40 void inputKeyNegationTest(QueryEvaluationHint hint) {
31 var person = new Symbol<>("Person", 1, Boolean.class, false);
32 var symbol = new Symbol<>("symbol", 4, Boolean.class, false);
33 var personView = new KeyOnlyView<>(person);
34 var symbolView = new KeyOnlyView<>(symbol);
35
36 var query = Query.of("Diagonal", (builder, p1) -> builder.clause(p2 -> List.of( 41 var query = Query.of("Diagonal", (builder, p1) -> builder.clause(p2 -> List.of(
37 personView.call(p1), 42 personView.call(p1),
38 not(symbolView.call(p1, p1, p2, p2)) 43 not(symbolView.call(p1, p1, p2, p2))
@@ -71,11 +76,6 @@ class DiagonalQueryTest {
71 76
72 @QueryEngineTest 77 @QueryEngineTest
73 void subQueryNegationTest(QueryEvaluationHint hint) { 78 void subQueryNegationTest(QueryEvaluationHint hint) {
74 var person = new Symbol<>("Person", 1, Boolean.class, false);
75 var symbol = new Symbol<>("symbol", 4, Boolean.class, false);
76 var personView = new KeyOnlyView<>(person);
77 var symbolView = new KeyOnlyView<>(symbol);
78
79 var subQuery = Dnf.of("SubQuery", builder -> { 79 var subQuery = Dnf.of("SubQuery", builder -> {
80 var p1 = builder.parameter("p1"); 80 var p1 = builder.parameter("p1");
81 var p2 = builder.parameter("p2"); 81 var p2 = builder.parameter("p2");
@@ -128,11 +128,6 @@ class DiagonalQueryTest {
128 128
129 @QueryEngineTest 129 @QueryEngineTest
130 void inputKeyCountTest(QueryEvaluationHint hint) { 130 void inputKeyCountTest(QueryEvaluationHint hint) {
131 var person = new Symbol<>("Person", 1, Boolean.class, false);
132 var symbol = new Symbol<>("symbol", 4, Boolean.class, false);
133 var personView = new KeyOnlyView<>(person);
134 var symbolView = new KeyOnlyView<>(symbol);
135
136 var query = Query.of("Diagonal", Integer.class, (builder, p1, output) -> builder.clause(p2 -> List.of( 131 var query = Query.of("Diagonal", Integer.class, (builder, p1, output) -> builder.clause(p2 -> List.of(
137 personView.call(p1), 132 personView.call(p1),
138 output.assign(symbolView.count(p1, p1, p2, p2)) 133 output.assign(symbolView.count(p1, p1, p2, p2))
@@ -172,11 +167,6 @@ class DiagonalQueryTest {
172 167
173 @QueryEngineTest 168 @QueryEngineTest
174 void subQueryCountTest(QueryEvaluationHint hint) { 169 void subQueryCountTest(QueryEvaluationHint hint) {
175 var person = new Symbol<>("Person", 1, Boolean.class, false);
176 var symbol = new Symbol<>("symbol", 4, Boolean.class, false);
177 var personView = new KeyOnlyView<>(person);
178 var symbolView = new KeyOnlyView<>(symbol);
179
180 var subQuery = Dnf.of("SubQuery", builder -> { 170 var subQuery = Dnf.of("SubQuery", builder -> {
181 var p1 = builder.parameter("p1"); 171 var p1 = builder.parameter("p1");
182 var p2 = builder.parameter("p2"); 172 var p2 = builder.parameter("p2");
@@ -230,19 +220,14 @@ class DiagonalQueryTest {
230 220
231 @QueryEngineTest 221 @QueryEngineTest
232 void inputKeyAggregationTest(QueryEvaluationHint hint) { 222 void inputKeyAggregationTest(QueryEvaluationHint hint) {
233 var person = new Symbol<>("Person", 1, Boolean.class, false);
234 var symbol = new Symbol<>("symbol", 4, Integer.class, null);
235 var personView = new KeyOnlyView<>(person);
236 var symbolView = new FunctionView<>(symbol);
237
238 var query = Query.of("Diagonal", Integer.class, (builder, p1, output) -> builder.clause(Integer.class, 223 var query = Query.of("Diagonal", Integer.class, (builder, p1, output) -> builder.clause(Integer.class,
239 (p2, y) -> List.of( 224 (p2, y) -> List.of(
240 personView.call(p1), 225 personView.call(p1),
241 output.assign(symbolView.aggregate(y, INT_SUM, p1, p1, p2, p2, y)) 226 output.assign(intSymbolView.aggregate(y, INT_SUM, p1, p1, p2, p2, y))
242 ))); 227 )));
243 228
244 var store = ModelStore.builder() 229 var store = ModelStore.builder()
245 .symbols(person, symbol) 230 .symbols(person, intSymbol)
246 .with(ViatraModelQueryAdapter.builder() 231 .with(ViatraModelQueryAdapter.builder()
247 .defaultHint(hint) 232 .defaultHint(hint)
248 .queries(query)) 233 .queries(query))
@@ -250,7 +235,7 @@ class DiagonalQueryTest {
250 235
251 var model = store.createEmptyModel(); 236 var model = store.createEmptyModel();
252 var personInterpretation = model.getInterpretation(person); 237 var personInterpretation = model.getInterpretation(person);
253 var symbolInterpretation = model.getInterpretation(symbol); 238 var intSymbolInterpretation = model.getInterpretation(intSymbol);
254 var queryEngine = model.getAdapter(ModelQueryAdapter.class); 239 var queryEngine = model.getAdapter(ModelQueryAdapter.class);
255 var queryResultSet = queryEngine.getResultSet(query); 240 var queryResultSet = queryEngine.getResultSet(query);
256 241
@@ -258,11 +243,11 @@ class DiagonalQueryTest {
258 personInterpretation.put(Tuple.of(1), true); 243 personInterpretation.put(Tuple.of(1), true);
259 personInterpretation.put(Tuple.of(2), true); 244 personInterpretation.put(Tuple.of(2), true);
260 245
261 symbolInterpretation.put(Tuple.of(0, 0, 1, 1), 1); 246 intSymbolInterpretation.put(Tuple.of(0, 0, 1, 1), 1);
262 symbolInterpretation.put(Tuple.of(0, 0, 2, 2), 2); 247 intSymbolInterpretation.put(Tuple.of(0, 0, 2, 2), 2);
263 symbolInterpretation.put(Tuple.of(0, 0, 1, 2), 10); 248 intSymbolInterpretation.put(Tuple.of(0, 0, 1, 2), 10);
264 symbolInterpretation.put(Tuple.of(1, 1, 0, 1), 11); 249 intSymbolInterpretation.put(Tuple.of(1, 1, 0, 1), 11);
265 symbolInterpretation.put(Tuple.of(1, 2, 1, 1), 12); 250 intSymbolInterpretation.put(Tuple.of(1, 2, 1, 1), 12);
266 251
267 queryEngine.flushChanges(); 252 queryEngine.flushChanges();
268 assertNullableResults(Map.of( 253 assertNullableResults(Map.of(
@@ -275,11 +260,6 @@ class DiagonalQueryTest {
275 260
276 @QueryEngineTest 261 @QueryEngineTest
277 void subQueryAggregationTest(QueryEvaluationHint hint) { 262 void subQueryAggregationTest(QueryEvaluationHint hint) {
278 var person = new Symbol<>("Person", 1, Boolean.class, false);
279 var symbol = new Symbol<>("symbol", 4, Integer.class, null);
280 var personView = new KeyOnlyView<>(person);
281 var symbolView = new FunctionView<>(symbol);
282
283 var subQuery = Dnf.of("SubQuery", builder -> { 263 var subQuery = Dnf.of("SubQuery", builder -> {
284 var p1 = builder.parameter("p1"); 264 var p1 = builder.parameter("p1");
285 var p2 = builder.parameter("p2"); 265 var p2 = builder.parameter("p2");
@@ -289,12 +269,12 @@ class DiagonalQueryTest {
289 var y = builder.parameter("y", Integer.class); 269 var y = builder.parameter("y", Integer.class);
290 builder.clause( 270 builder.clause(
291 personView.call(p1), 271 personView.call(p1),
292 symbolView.call(p1, p2, p3, p4, x), 272 intSymbolView.call(p1, p2, p3, p4, x),
293 y.assign(x) 273 y.assign(x)
294 ); 274 );
295 builder.clause( 275 builder.clause(
296 personView.call(p2), 276 personView.call(p2),
297 symbolView.call(p1, p2, p3, p4, x), 277 intSymbolView.call(p1, p2, p3, p4, x),
298 y.assign(x) 278 y.assign(x)
299 ); 279 );
300 }); 280 });
@@ -305,7 +285,7 @@ class DiagonalQueryTest {
305 ))); 285 )));
306 286
307 var store = ModelStore.builder() 287 var store = ModelStore.builder()
308 .symbols(person, symbol) 288 .symbols(person, intSymbol)
309 .with(ViatraModelQueryAdapter.builder() 289 .with(ViatraModelQueryAdapter.builder()
310 .defaultHint(hint) 290 .defaultHint(hint)
311 .queries(query)) 291 .queries(query))
@@ -313,7 +293,7 @@ class DiagonalQueryTest {
313 293
314 var model = store.createEmptyModel(); 294 var model = store.createEmptyModel();
315 var personInterpretation = model.getInterpretation(person); 295 var personInterpretation = model.getInterpretation(person);
316 var symbolInterpretation = model.getInterpretation(symbol); 296 var intSymbolInterpretation = model.getInterpretation(intSymbol);
317 var queryEngine = model.getAdapter(ModelQueryAdapter.class); 297 var queryEngine = model.getAdapter(ModelQueryAdapter.class);
318 var queryResultSet = queryEngine.getResultSet(query); 298 var queryResultSet = queryEngine.getResultSet(query);
319 299
@@ -321,11 +301,11 @@ class DiagonalQueryTest {
321 personInterpretation.put(Tuple.of(1), true); 301 personInterpretation.put(Tuple.of(1), true);
322 personInterpretation.put(Tuple.of(2), true); 302 personInterpretation.put(Tuple.of(2), true);
323 303
324 symbolInterpretation.put(Tuple.of(0, 0, 1, 1), 1); 304 intSymbolInterpretation.put(Tuple.of(0, 0, 1, 1), 1);
325 symbolInterpretation.put(Tuple.of(0, 0, 2, 2), 2); 305 intSymbolInterpretation.put(Tuple.of(0, 0, 2, 2), 2);
326 symbolInterpretation.put(Tuple.of(0, 0, 1, 2), 10); 306 intSymbolInterpretation.put(Tuple.of(0, 0, 1, 2), 10);
327 symbolInterpretation.put(Tuple.of(1, 1, 0, 1), 11); 307 intSymbolInterpretation.put(Tuple.of(1, 1, 0, 1), 11);
328 symbolInterpretation.put(Tuple.of(1, 2, 1, 1), 12); 308 intSymbolInterpretation.put(Tuple.of(1, 2, 1, 1), 12);
329 309
330 queryEngine.flushChanges(); 310 queryEngine.flushChanges();
331 assertNullableResults(Map.of( 311 assertNullableResults(Map.of(
@@ -338,18 +318,13 @@ class DiagonalQueryTest {
338 318
339 @QueryEngineTest 319 @QueryEngineTest
340 void inputKeyTransitiveTest(QueryEvaluationHint hint) { 320 void inputKeyTransitiveTest(QueryEvaluationHint hint) {
341 var person = new Symbol<>("Person", 1, Boolean.class, false);
342 var symbol = new Symbol<>("symbol", 2, Boolean.class, false);
343 var personView = new KeyOnlyView<>(person);
344 var symbolView = new KeyOnlyView<>(symbol);
345
346 var query = Query.of("Diagonal", (builder, p1) -> builder.clause( 321 var query = Query.of("Diagonal", (builder, p1) -> builder.clause(
347 personView.call(p1), 322 personView.call(p1),
348 symbolView.callTransitive(p1, p1) 323 friendView.callTransitive(p1, p1)
349 )); 324 ));
350 325
351 var store = ModelStore.builder() 326 var store = ModelStore.builder()
352 .symbols(person, symbol) 327 .symbols(person, friend)
353 .with(ViatraModelQueryAdapter.builder() 328 .with(ViatraModelQueryAdapter.builder()
354 .defaultHint(hint) 329 .defaultHint(hint)
355 .queries(query)) 330 .queries(query))
@@ -357,7 +332,7 @@ class DiagonalQueryTest {
357 332
358 var model = store.createEmptyModel(); 333 var model = store.createEmptyModel();
359 var personInterpretation = model.getInterpretation(person); 334 var personInterpretation = model.getInterpretation(person);
360 var symbolInterpretation = model.getInterpretation(symbol); 335 var friendInterpretation = model.getInterpretation(friend);
361 var queryEngine = model.getAdapter(ModelQueryAdapter.class); 336 var queryEngine = model.getAdapter(ModelQueryAdapter.class);
362 var queryResultSet = queryEngine.getResultSet(query); 337 var queryResultSet = queryEngine.getResultSet(query);
363 338
@@ -365,9 +340,9 @@ class DiagonalQueryTest {
365 personInterpretation.put(Tuple.of(1), true); 340 personInterpretation.put(Tuple.of(1), true);
366 personInterpretation.put(Tuple.of(2), true); 341 personInterpretation.put(Tuple.of(2), true);
367 342
368 symbolInterpretation.put(Tuple.of(0, 0), true); 343 friendInterpretation.put(Tuple.of(0, 0), true);
369 symbolInterpretation.put(Tuple.of(0, 1), true); 344 friendInterpretation.put(Tuple.of(0, 1), true);
370 symbolInterpretation.put(Tuple.of(1, 2), true); 345 friendInterpretation.put(Tuple.of(1, 2), true);
371 346
372 queryEngine.flushChanges(); 347 queryEngine.flushChanges();
373 assertResults(Map.of( 348 assertResults(Map.of(
@@ -380,21 +355,16 @@ class DiagonalQueryTest {
380 355
381 @QueryEngineTest 356 @QueryEngineTest
382 void subQueryTransitiveTest(QueryEvaluationHint hint) { 357 void subQueryTransitiveTest(QueryEvaluationHint hint) {
383 var person = new Symbol<>("Person", 1, Boolean.class, false);
384 var symbol = new Symbol<>("symbol", 2, Boolean.class, false);
385 var personView = new KeyOnlyView<>(person);
386 var symbolView = new KeyOnlyView<>(symbol);
387
388 var subQuery = Dnf.of("SubQuery", builder -> { 358 var subQuery = Dnf.of("SubQuery", builder -> {
389 var p1 = builder.parameter("p1"); 359 var p1 = builder.parameter("p1");
390 var p2 = builder.parameter("p2"); 360 var p2 = builder.parameter("p2");
391 builder.clause( 361 builder.clause(
392 personView.call(p1), 362 personView.call(p1),
393 symbolView.call(p1, p2) 363 friendView.call(p1, p2)
394 ); 364 );
395 builder.clause( 365 builder.clause(
396 personView.call(p2), 366 personView.call(p2),
397 symbolView.call(p1, p2) 367 friendView.call(p1, p2)
398 ); 368 );
399 }); 369 });
400 var query = Query.of("Diagonal", (builder, p1) -> builder.clause( 370 var query = Query.of("Diagonal", (builder, p1) -> builder.clause(
@@ -403,7 +373,7 @@ class DiagonalQueryTest {
403 )); 373 ));
404 374
405 var store = ModelStore.builder() 375 var store = ModelStore.builder()
406 .symbols(person, symbol) 376 .symbols(person, friend)
407 .with(ViatraModelQueryAdapter.builder() 377 .with(ViatraModelQueryAdapter.builder()
408 .defaultHint(hint) 378 .defaultHint(hint)
409 .queries(query)) 379 .queries(query))
@@ -411,7 +381,7 @@ class DiagonalQueryTest {
411 381
412 var model = store.createEmptyModel(); 382 var model = store.createEmptyModel();
413 var personInterpretation = model.getInterpretation(person); 383 var personInterpretation = model.getInterpretation(person);
414 var symbolInterpretation = model.getInterpretation(symbol); 384 var friendInterpretation = model.getInterpretation(friend);
415 var queryEngine = model.getAdapter(ModelQueryAdapter.class); 385 var queryEngine = model.getAdapter(ModelQueryAdapter.class);
416 var queryResultSet = queryEngine.getResultSet(query); 386 var queryResultSet = queryEngine.getResultSet(query);
417 387
@@ -419,9 +389,9 @@ class DiagonalQueryTest {
419 personInterpretation.put(Tuple.of(1), true); 389 personInterpretation.put(Tuple.of(1), true);
420 personInterpretation.put(Tuple.of(2), true); 390 personInterpretation.put(Tuple.of(2), true);
421 391
422 symbolInterpretation.put(Tuple.of(0, 0), true); 392 friendInterpretation.put(Tuple.of(0, 0), true);
423 symbolInterpretation.put(Tuple.of(0, 1), true); 393 friendInterpretation.put(Tuple.of(0, 1), true);
424 symbolInterpretation.put(Tuple.of(1, 2), true); 394 friendInterpretation.put(Tuple.of(1, 2), true);
425 395
426 queryEngine.flushChanges(); 396 queryEngine.flushChanges();
427 assertResults(Map.of( 397 assertResults(Map.of(
diff --git a/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/FunctionalQueryTest.java b/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/FunctionalQueryTest.java
index 98c8cd92..723e9180 100644
--- a/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/FunctionalQueryTest.java
+++ b/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/FunctionalQueryTest.java
@@ -13,6 +13,7 @@ import tools.refinery.store.query.dnf.Dnf;
13import tools.refinery.store.query.dnf.Query; 13import tools.refinery.store.query.dnf.Query;
14import tools.refinery.store.query.term.Variable; 14import tools.refinery.store.query.term.Variable;
15import tools.refinery.store.query.viatra.tests.QueryEngineTest; 15import tools.refinery.store.query.viatra.tests.QueryEngineTest;
16import tools.refinery.store.query.view.AnySymbolView;
16import tools.refinery.store.query.view.FilteredView; 17import tools.refinery.store.query.view.FilteredView;
17import tools.refinery.store.query.view.FunctionView; 18import tools.refinery.store.query.view.FunctionView;
18import tools.refinery.store.query.view.KeyOnlyView; 19import tools.refinery.store.query.view.KeyOnlyView;
@@ -35,13 +36,15 @@ import static tools.refinery.store.query.viatra.tests.QueryAssertions.assertNull
35import static tools.refinery.store.query.viatra.tests.QueryAssertions.assertResults; 36import static tools.refinery.store.query.viatra.tests.QueryAssertions.assertResults;
36 37
37class FunctionalQueryTest { 38class FunctionalQueryTest {
39 private static final Symbol<Boolean> person = Symbol.of("Person", 1);
40 private static final Symbol<Integer> age = Symbol.of("age", 1, Integer.class);
41 private static final Symbol<TruthValue> friend = Symbol.of("friend", 2, TruthValue.class, TruthValue.FALSE);
42 private static final AnySymbolView personView = new KeyOnlyView<>(person);
43 private static final AnySymbolView ageView = new FunctionView<>(age);
44 private static final AnySymbolView friendMustView = new FilteredView<>(friend, "must", TruthValue::must);
45
38 @QueryEngineTest 46 @QueryEngineTest
39 void inputKeyTest(QueryEvaluationHint hint) { 47 void inputKeyTest(QueryEvaluationHint hint) {
40 var person = new Symbol<>("Person", 1, Boolean.class, false);
41 var age = new Symbol<>("age", 1, Integer.class, null);
42 var personView = new KeyOnlyView<>(person);
43 var ageView = new FunctionView<>(age);
44
45 var query = Query.of("InputKey", Integer.class, (builder, p1, output) -> builder.clause( 48 var query = Query.of("InputKey", Integer.class, (builder, p1, output) -> builder.clause(
46 personView.call(p1), 49 personView.call(p1),
47 ageView.call(p1, output) 50 ageView.call(p1, output)
@@ -77,11 +80,6 @@ class FunctionalQueryTest {
77 80
78 @QueryEngineTest 81 @QueryEngineTest
79 void predicateTest(QueryEvaluationHint hint) { 82 void predicateTest(QueryEvaluationHint hint) {
80 var person = new Symbol<>("Person", 1, Boolean.class, false);
81 var age = new Symbol<>("age", 1, Integer.class, null);
82 var personView = new KeyOnlyView<>(person);
83 var ageView = new FunctionView<>(age);
84
85 var subQuery = Dnf.of("SubQuery", builder -> { 83 var subQuery = Dnf.of("SubQuery", builder -> {
86 var p1 = builder.parameter("p1"); 84 var p1 = builder.parameter("p1");
87 var x = builder.parameter("x", Integer.class); 85 var x = builder.parameter("x", Integer.class);
@@ -125,11 +123,6 @@ class FunctionalQueryTest {
125 123
126 @QueryEngineTest 124 @QueryEngineTest
127 void computationTest(QueryEvaluationHint hint) { 125 void computationTest(QueryEvaluationHint hint) {
128 var person = new Symbol<>("Person", 1, Boolean.class, false);
129 var age = new Symbol<>("age", 1, Integer.class, null);
130 var personView = new KeyOnlyView<>(person);
131 var ageView = new FunctionView<>(age);
132
133 var query = Query.of("Computation", Integer.class, (builder, p1, output) -> builder.clause(() -> { 126 var query = Query.of("Computation", Integer.class, (builder, p1, output) -> builder.clause(() -> {
134 var x = Variable.of("x", Integer.class); 127 var x = Variable.of("x", Integer.class);
135 return List.of( 128 return List.of(
@@ -168,11 +161,6 @@ class FunctionalQueryTest {
168 161
169 @QueryEngineTest 162 @QueryEngineTest
170 void inputKeyCountTest(QueryEvaluationHint hint) { 163 void inputKeyCountTest(QueryEvaluationHint hint) {
171 var person = new Symbol<>("Person", 1, Boolean.class, false);
172 var friend = new Symbol<>("friend", 2, TruthValue.class, TruthValue.FALSE);
173 var personView = new KeyOnlyView<>(person);
174 var friendMustView = new FilteredView<>(friend, "must", TruthValue::must);
175
176 var query = Query.of("Count", Integer.class, (builder, p1, output) -> builder.clause( 164 var query = Query.of("Count", Integer.class, (builder, p1, output) -> builder.clause(
177 personView.call(p1), 165 personView.call(p1),
178 output.assign(friendMustView.count(p1, Variable.of())) 166 output.assign(friendMustView.count(p1, Variable.of()))
@@ -210,11 +198,6 @@ class FunctionalQueryTest {
210 198
211 @QueryEngineTest 199 @QueryEngineTest
212 void predicateCountTest(QueryEvaluationHint hint) { 200 void predicateCountTest(QueryEvaluationHint hint) {
213 var person = new Symbol<>("Person", 1, Boolean.class, false);
214 var friend = new Symbol<>("friend", 2, TruthValue.class, TruthValue.FALSE);
215 var personView = new KeyOnlyView<>(person);
216 var friendMustView = new FilteredView<>(friend, "must", TruthValue::must);
217
218 var subQuery = Dnf.of("SubQuery", builder -> { 201 var subQuery = Dnf.of("SubQuery", builder -> {
219 var p1 = builder.parameter("p1"); 202 var p1 = builder.parameter("p1");
220 var p2 = builder.parameter("p2"); 203 var p2 = builder.parameter("p2");
@@ -261,9 +244,6 @@ class FunctionalQueryTest {
261 244
262 @QueryEngineTest 245 @QueryEngineTest
263 void inputKeyAggregationTest(QueryEvaluationHint hint) { 246 void inputKeyAggregationTest(QueryEvaluationHint hint) {
264 var age = new Symbol<>("age", 1, Integer.class, null);
265 var ageView = new FunctionView<>(age);
266
267 var query = Query.of("Aggregate", Integer.class, (builder, output) -> builder.clause(Integer.class, 247 var query = Query.of("Aggregate", Integer.class, (builder, output) -> builder.clause(Integer.class,
268 (y) -> List.of(output.assign(ageView.aggregate(y, INT_SUM, Variable.of(), y))))); 248 (y) -> List.of(output.assign(ageView.aggregate(y, INT_SUM, Variable.of(), y)))));
269 249
@@ -288,11 +268,6 @@ class FunctionalQueryTest {
288 268
289 @QueryEngineTest 269 @QueryEngineTest
290 void predicateAggregationTest(QueryEvaluationHint hint) { 270 void predicateAggregationTest(QueryEvaluationHint hint) {
291 var person = new Symbol<>("Person", 1, Boolean.class, false);
292 var age = new Symbol<>("age", 1, Integer.class, null);
293 var personView = new KeyOnlyView<>(person);
294 var ageView = new FunctionView<>(age);
295
296 var subQuery = Dnf.of("SubQuery", builder -> { 271 var subQuery = Dnf.of("SubQuery", builder -> {
297 var p1 = builder.parameter("p1"); 272 var p1 = builder.parameter("p1");
298 var x = builder.parameter("x", Integer.class); 273 var x = builder.parameter("x", Integer.class);
@@ -329,11 +304,6 @@ class FunctionalQueryTest {
329 304
330 @QueryEngineTest 305 @QueryEngineTest
331 void extremeValueTest(QueryEvaluationHint hint) { 306 void extremeValueTest(QueryEvaluationHint hint) {
332 var person = new Symbol<>("Person", 1, Boolean.class, false);
333 var friend = new Symbol<>("friend", 2, TruthValue.class, TruthValue.FALSE);
334 var personView = new KeyOnlyView<>(person);
335 var friendMustView = new FilteredView<>(friend, "must", TruthValue::must);
336
337 var subQuery = Dnf.of("SubQuery", builder -> { 307 var subQuery = Dnf.of("SubQuery", builder -> {
338 var p1 = builder.parameter("p1"); 308 var p1 = builder.parameter("p1");
339 var x = builder.parameter("x", Integer.class); 309 var x = builder.parameter("x", Integer.class);
@@ -394,11 +364,6 @@ class FunctionalQueryTest {
394 364
395 @QueryEngineTest 365 @QueryEngineTest
396 void invalidComputationTest(QueryEvaluationHint hint) { 366 void invalidComputationTest(QueryEvaluationHint hint) {
397 var person = new Symbol<>("Person", 1, Boolean.class, false);
398 var age = new Symbol<>("age", 1, Integer.class, null);
399 var personView = new KeyOnlyView<>(person);
400 var ageView = new FunctionView<>(age);
401
402 var query = Query.of("InvalidComputation", Integer.class, 367 var query = Query.of("InvalidComputation", Integer.class,
403 (builder, p1, output) -> builder.clause(Integer.class, (x) -> List.of( 368 (builder, p1, output) -> builder.clause(Integer.class, (x) -> List.of(
404 personView.call(p1), 369 personView.call(p1),
@@ -435,11 +400,6 @@ class FunctionalQueryTest {
435 400
436 @QueryEngineTest 401 @QueryEngineTest
437 void invalidAssumeTest(QueryEvaluationHint hint) { 402 void invalidAssumeTest(QueryEvaluationHint hint) {
438 var person = new Symbol<>("Person", 1, Boolean.class, false);
439 var age = new Symbol<>("age", 1, Integer.class, null);
440 var personView = new KeyOnlyView<>(person);
441 var ageView = new FunctionView<>(age);
442
443 var query = Query.of("InvalidAssume", (builder, p1) -> builder.clause(Integer.class, (x) -> List.of( 403 var query = Query.of("InvalidAssume", (builder, p1) -> builder.clause(Integer.class, (x) -> List.of(
444 personView.call(p1), 404 personView.call(p1),
445 ageView.call(p1, x), 405 ageView.call(p1, x),
@@ -478,13 +438,6 @@ class FunctionalQueryTest {
478 438
479 @QueryEngineTest 439 @QueryEngineTest
480 void notFunctionalTest(QueryEvaluationHint hint) { 440 void notFunctionalTest(QueryEvaluationHint hint) {
481 var person = new Symbol<>("Person", 1, Boolean.class, false);
482 var age = new Symbol<>("age", 1, Integer.class, null);
483 var friend = new Symbol<>("friend", 2, TruthValue.class, TruthValue.FALSE);
484 var personView = new KeyOnlyView<>(person);
485 var ageView = new FunctionView<>(age);
486 var friendMustView = new FilteredView<>(friend, "must", TruthValue::must);
487
488 var query = Query.of("NotFunctional", Integer.class, (builder, p1, output) -> builder.clause((p2) -> List.of( 441 var query = Query.of("NotFunctional", Integer.class, (builder, p1, output) -> builder.clause((p2) -> List.of(
489 personView.call(p1), 442 personView.call(p1),
490 friendMustView.call(p1, p2), 443 friendMustView.call(p1, p2),
diff --git a/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/QueryTest.java b/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/QueryTest.java
index a9a2f71c..de0e6da1 100644
--- a/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/QueryTest.java
+++ b/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/QueryTest.java
@@ -13,6 +13,7 @@ import tools.refinery.store.query.dnf.Dnf;
13import tools.refinery.store.query.dnf.Query; 13import tools.refinery.store.query.dnf.Query;
14import tools.refinery.store.query.term.Variable; 14import tools.refinery.store.query.term.Variable;
15import tools.refinery.store.query.viatra.tests.QueryEngineTest; 15import tools.refinery.store.query.viatra.tests.QueryEngineTest;
16import tools.refinery.store.query.view.AnySymbolView;
16import tools.refinery.store.query.view.FilteredView; 17import tools.refinery.store.query.view.FilteredView;
17import tools.refinery.store.query.view.FunctionView; 18import tools.refinery.store.query.view.FunctionView;
18import tools.refinery.store.query.view.KeyOnlyView; 19import tools.refinery.store.query.view.KeyOnlyView;
@@ -30,11 +31,14 @@ import static tools.refinery.store.query.term.int_.IntTerms.greaterEq;
30import static tools.refinery.store.query.viatra.tests.QueryAssertions.assertResults; 31import static tools.refinery.store.query.viatra.tests.QueryAssertions.assertResults;
31 32
32class QueryTest { 33class QueryTest {
34 private static final Symbol<Boolean> person = Symbol.of("Person", 1);
35 private static final Symbol<TruthValue> friend = Symbol.of("friend", 2, TruthValue.class, TruthValue.FALSE);
36 private static final AnySymbolView personView = new KeyOnlyView<>(person);
37 private static final AnySymbolView friendMustView = new FilteredView<>(friend, "must", TruthValue::must);
38
33 @QueryEngineTest 39 @QueryEngineTest
34 void typeConstraintTest(QueryEvaluationHint hint) { 40 void typeConstraintTest(QueryEvaluationHint hint) {
35 var person = new Symbol<>("Person", 1, Boolean.class, false); 41 var asset = Symbol.of("Asset", 1);
36 var asset = new Symbol<>("Asset", 1, Boolean.class, false);
37 var personView = new KeyOnlyView<>(person);
38 42
39 var predicate = Query.of("TypeConstraint", (builder, p1) -> builder.clause(personView.call(p1))); 43 var predicate = Query.of("TypeConstraint", (builder, p1) -> builder.clause(personView.call(p1)));
40 44
@@ -67,11 +71,6 @@ class QueryTest {
67 71
68 @QueryEngineTest 72 @QueryEngineTest
69 void relationConstraintTest(QueryEvaluationHint hint) { 73 void relationConstraintTest(QueryEvaluationHint hint) {
70 var person = new Symbol<>("Person", 1, Boolean.class, false);
71 var friend = new Symbol<>("friend", 2, TruthValue.class, TruthValue.FALSE);
72 var personView = new KeyOnlyView<>(person);
73 var friendMustView = new FilteredView<>(friend, "must", TruthValue::must);
74
75 var predicate = Query.of("RelationConstraint", (builder, p1, p2) -> builder.clause( 74 var predicate = Query.of("RelationConstraint", (builder, p1, p2) -> builder.clause(
76 personView.call(p1), 75 personView.call(p1),
77 personView.call(p2), 76 personView.call(p2),
@@ -111,11 +110,6 @@ class QueryTest {
111 110
112 @QueryEngineTest 111 @QueryEngineTest
113 void existTest(QueryEvaluationHint hint) { 112 void existTest(QueryEvaluationHint hint) {
114 var person = new Symbol<>("Person", 1, Boolean.class, false);
115 var friend = new Symbol<>("friend", 2, TruthValue.class, TruthValue.FALSE);
116 var personView = new KeyOnlyView<>(person);
117 var friendMustView = new FilteredView<>(friend, "must", TruthValue::must);
118
119 var predicate = Query.of("Exists", (builder, p1) -> builder.clause((p2) -> List.of( 113 var predicate = Query.of("Exists", (builder, p1) -> builder.clause((p2) -> List.of(
120 personView.call(p1), 114 personView.call(p1),
121 personView.call(p2), 115 personView.call(p2),
@@ -155,12 +149,8 @@ class QueryTest {
155 149
156 @QueryEngineTest 150 @QueryEngineTest
157 void orTest(QueryEvaluationHint hint) { 151 void orTest(QueryEvaluationHint hint) {
158 var person = new Symbol<>("Person", 1, Boolean.class, false); 152 var animal = Symbol.of("Animal", 1);
159 var animal = new Symbol<>("Animal", 1, Boolean.class, false);
160 var friend = new Symbol<>("friend", 2, TruthValue.class, TruthValue.FALSE);
161 var personView = new KeyOnlyView<>(person);
162 var animalView = new KeyOnlyView<>(animal); 153 var animalView = new KeyOnlyView<>(animal);
163 var friendMustView = new FilteredView<>(friend, "must", TruthValue::must);
164 154
165 var predicate = Query.of("Or", (builder, p1, p2) -> builder.clause( 155 var predicate = Query.of("Or", (builder, p1, p2) -> builder.clause(
166 personView.call(p1), 156 personView.call(p1),
@@ -209,9 +199,6 @@ class QueryTest {
209 199
210 @QueryEngineTest 200 @QueryEngineTest
211 void equalityTest(QueryEvaluationHint hint) { 201 void equalityTest(QueryEvaluationHint hint) {
212 var person = new Symbol<>("Person", 1, Boolean.class, false);
213 var personView = new KeyOnlyView<>(person);
214
215 var predicate = Query.of("Equality", (builder, p1, p2) -> builder.clause( 202 var predicate = Query.of("Equality", (builder, p1, p2) -> builder.clause(
216 personView.call(p1), 203 personView.call(p1),
217 personView.call(p2), 204 personView.call(p2),
@@ -246,11 +233,6 @@ class QueryTest {
246 233
247 @QueryEngineTest 234 @QueryEngineTest
248 void inequalityTest(QueryEvaluationHint hint) { 235 void inequalityTest(QueryEvaluationHint hint) {
249 var person = new Symbol<>("Person", 1, Boolean.class, false);
250 var friend = new Symbol<>("friend", 2, TruthValue.class, TruthValue.FALSE);
251 var personView = new KeyOnlyView<>(person);
252 var friendMustView = new FilteredView<>(friend, "must", TruthValue::must);
253
254 var predicate = Query.of("Inequality", (builder, p1, p2, p3) -> builder.clause( 236 var predicate = Query.of("Inequality", (builder, p1, p2, p3) -> builder.clause(
255 personView.call(p1), 237 personView.call(p1),
256 personView.call(p2), 238 personView.call(p2),
@@ -289,11 +271,6 @@ class QueryTest {
289 271
290 @QueryEngineTest 272 @QueryEngineTest
291 void patternCallTest(QueryEvaluationHint hint) { 273 void patternCallTest(QueryEvaluationHint hint) {
292 var person = new Symbol<>("Person", 1, Boolean.class, false);
293 var friend = new Symbol<>("friend", 2, TruthValue.class, TruthValue.FALSE);
294 var personView = new KeyOnlyView<>(person);
295 var friendMustView = new FilteredView<>(friend, "must", TruthValue::must);
296
297 var friendPredicate = Dnf.of("Friend", builder -> { 274 var friendPredicate = Dnf.of("Friend", builder -> {
298 var p1 = builder.parameter("p1"); 275 var p1 = builder.parameter("p1");
299 var p2 = builder.parameter("p2"); 276 var p2 = builder.parameter("p2");
@@ -341,11 +318,6 @@ class QueryTest {
341 318
342 @QueryEngineTest 319 @QueryEngineTest
343 void negativeRelationViewTest(QueryEvaluationHint hint) { 320 void negativeRelationViewTest(QueryEvaluationHint hint) {
344 var person = new Symbol<>("Person", 1, Boolean.class, false);
345 var friend = new Symbol<>("friend", 2, TruthValue.class, TruthValue.FALSE);
346 var personView = new KeyOnlyView<>(person);
347 var friendMustView = new FilteredView<>(friend, "must", TruthValue::must);
348
349 var predicate = Query.of("NegativePatternCall", (builder, p1, p2) -> builder.clause( 321 var predicate = Query.of("NegativePatternCall", (builder, p1, p2) -> builder.clause(
350 personView.call(p1), 322 personView.call(p1),
351 personView.call(p2), 323 personView.call(p2),
@@ -390,11 +362,6 @@ class QueryTest {
390 362
391 @QueryEngineTest 363 @QueryEngineTest
392 void negativePatternCallTest(QueryEvaluationHint hint) { 364 void negativePatternCallTest(QueryEvaluationHint hint) {
393 var person = new Symbol<>("Person", 1, Boolean.class, false);
394 var friend = new Symbol<>("friend", 2, TruthValue.class, TruthValue.FALSE);
395 var personView = new KeyOnlyView<>(person);
396 var friendMustView = new FilteredView<>(friend, "must", TruthValue::must);
397
398 var friendPredicate = Dnf.of("Friend", builder -> { 365 var friendPredicate = Dnf.of("Friend", builder -> {
399 var p1 = builder.parameter("p1"); 366 var p1 = builder.parameter("p1");
400 var p2 = builder.parameter("p2"); 367 var p2 = builder.parameter("p2");
@@ -448,11 +415,6 @@ class QueryTest {
448 415
449 @QueryEngineTest 416 @QueryEngineTest
450 void negativeRelationViewWithQuantificationTest(QueryEvaluationHint hint) { 417 void negativeRelationViewWithQuantificationTest(QueryEvaluationHint hint) {
451 var person = new Symbol<>("Person", 1, Boolean.class, false);
452 var friend = new Symbol<>("friend", 2, TruthValue.class, TruthValue.FALSE);
453 var personView = new KeyOnlyView<>(person);
454 var friendMustView = new FilteredView<>(friend, "must", TruthValue::must);
455
456 var predicate = Query.of("Negative", (builder, p1) -> builder.clause( 418 var predicate = Query.of("Negative", (builder, p1) -> builder.clause(
457 personView.call(p1), 419 personView.call(p1),
458 not(friendMustView.call(p1, Variable.of())) 420 not(friendMustView.call(p1, Variable.of()))
@@ -489,11 +451,6 @@ class QueryTest {
489 451
490 @QueryEngineTest 452 @QueryEngineTest
491 void negativeWithQuantificationTest(QueryEvaluationHint hint) { 453 void negativeWithQuantificationTest(QueryEvaluationHint hint) {
492 var person = new Symbol<>("Person", 1, Boolean.class, false);
493 var friend = new Symbol<>("friend", 2, TruthValue.class, TruthValue.FALSE);
494 var personView = new KeyOnlyView<>(person);
495 var friendMustView = new FilteredView<>(friend, "must", TruthValue::must);
496
497 var called = Dnf.of("Called", builder -> { 454 var called = Dnf.of("Called", builder -> {
498 var p1 = builder.parameter("p1"); 455 var p1 = builder.parameter("p1");
499 var p2 = builder.parameter("p2"); 456 var p2 = builder.parameter("p2");
@@ -539,11 +496,6 @@ class QueryTest {
539 496
540 @QueryEngineTest 497 @QueryEngineTest
541 void transitiveRelationViewTest(QueryEvaluationHint hint) { 498 void transitiveRelationViewTest(QueryEvaluationHint hint) {
542 var person = new Symbol<>("Person", 1, Boolean.class, false);
543 var friend = new Symbol<>("friend", 2, TruthValue.class, TruthValue.FALSE);
544 var personView = new KeyOnlyView<>(person);
545 var friendMustView = new FilteredView<>(friend, "must", TruthValue::must);
546
547 var predicate = Query.of("Transitive", (builder, p1, p2) -> builder.clause( 499 var predicate = Query.of("Transitive", (builder, p1, p2) -> builder.clause(
548 personView.call(p1), 500 personView.call(p1),
549 personView.call(p2), 501 personView.call(p2),
@@ -587,11 +539,6 @@ class QueryTest {
587 539
588 @QueryEngineTest 540 @QueryEngineTest
589 void transitivePatternCallTest(QueryEvaluationHint hint) { 541 void transitivePatternCallTest(QueryEvaluationHint hint) {
590 var person = new Symbol<>("Person", 1, Boolean.class, false);
591 var friend = new Symbol<>("friend", 2, TruthValue.class, TruthValue.FALSE);
592 var personView = new KeyOnlyView<>(person);
593 var friendMustView = new FilteredView<>(friend, "must", TruthValue::must);
594
595 var called = Dnf.of("Called", builder -> { 542 var called = Dnf.of("Called", builder -> {
596 var p1 = builder.parameter("p1"); 543 var p1 = builder.parameter("p1");
597 var p2 = builder.parameter("p2"); 544 var p2 = builder.parameter("p2");
@@ -644,9 +591,7 @@ class QueryTest {
644 591
645 @QueryEngineTest 592 @QueryEngineTest
646 void assumeTest(QueryEvaluationHint hint) { 593 void assumeTest(QueryEvaluationHint hint) {
647 var person = new Symbol<>("Person", 1, Boolean.class, false); 594 var age = Symbol.of("age", 1, Integer.class);
648 var age = new Symbol<>("age", 1, Integer.class, null);
649 var personView = new KeyOnlyView<>(person);
650 var ageView = new FunctionView<>(age); 595 var ageView = new FunctionView<>(age);
651 596
652 var query = Query.of("Constraint", (builder, p1) -> builder.clause(Integer.class, (x) -> List.of( 597 var query = Query.of("Constraint", (builder, p1) -> builder.clause(Integer.class, (x) -> List.of(
@@ -684,8 +629,6 @@ class QueryTest {
684 629
685 @Test 630 @Test
686 void alwaysFalseTest() { 631 void alwaysFalseTest() {
687 var person = new Symbol<>("Person", 1, Boolean.class, false);
688
689 var predicate = Query.of("AlwaysFalse", builder -> builder.parameter("p1")); 632 var predicate = Query.of("AlwaysFalse", builder -> builder.parameter("p1"));
690 633
691 var store = ModelStore.builder() 634 var store = ModelStore.builder()
diff --git a/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/QueryTransactionTest.java b/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/QueryTransactionTest.java
index 6860ece9..66f043c6 100644
--- a/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/QueryTransactionTest.java
+++ b/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/QueryTransactionTest.java
@@ -11,6 +11,8 @@ import org.junit.jupiter.api.Test;
11import tools.refinery.store.model.ModelStore; 11import tools.refinery.store.model.ModelStore;
12import tools.refinery.store.query.ModelQueryAdapter; 12import tools.refinery.store.query.ModelQueryAdapter;
13import tools.refinery.store.query.dnf.Query; 13import tools.refinery.store.query.dnf.Query;
14import tools.refinery.store.query.dnf.RelationalQuery;
15import tools.refinery.store.query.view.AnySymbolView;
14import tools.refinery.store.query.view.FilteredView; 16import tools.refinery.store.query.view.FilteredView;
15import tools.refinery.store.query.view.FunctionView; 17import tools.refinery.store.query.view.FunctionView;
16import tools.refinery.store.query.view.KeyOnlyView; 18import tools.refinery.store.query.view.KeyOnlyView;
@@ -26,13 +28,15 @@ import static tools.refinery.store.query.viatra.tests.QueryAssertions.assertNull
26import static tools.refinery.store.query.viatra.tests.QueryAssertions.assertResults; 28import static tools.refinery.store.query.viatra.tests.QueryAssertions.assertResults;
27 29
28class QueryTransactionTest { 30class QueryTransactionTest {
31 private static final Symbol<Boolean> person = Symbol.of("Person", 1);
32 private static final Symbol<Integer> age = Symbol.of("age", 1, Integer.class);
33 private static final AnySymbolView personView = new KeyOnlyView<>(person);
34 private static final AnySymbolView ageView = new FunctionView<>(age);
35 private static final RelationalQuery predicate = Query.of("TypeConstraint", (builder, p1) ->
36 builder.clause(personView.call(p1)));
37
29 @Test 38 @Test
30 void flushTest() { 39 void flushTest() {
31 var person = new Symbol<>("Person", 1, Boolean.class, false);
32 var personView = new KeyOnlyView<>(person);
33
34 var predicate = Query.of("TypeConstraint", (builder, p1) -> builder.clause(personView.call(p1)));
35
36 var store = ModelStore.builder() 40 var store = ModelStore.builder()
37 .symbols(person) 41 .symbols(person)
38 .with(ViatraModelQueryAdapter.builder() 42 .with(ViatraModelQueryAdapter.builder()
@@ -95,11 +99,6 @@ class QueryTransactionTest {
95 99
96 @Test 100 @Test
97 void localSearchTest() { 101 void localSearchTest() {
98 var person = new Symbol<>("Person", 1, Boolean.class, false);
99 var personView = new KeyOnlyView<>(person);
100
101 var predicate = Query.of("TypeConstraint", (builder, p1) -> builder.clause(personView.call(p1)));
102
103 var store = ModelStore.builder() 102 var store = ModelStore.builder()
104 .symbols(person) 103 .symbols(person)
105 .with(ViatraModelQueryAdapter.builder() 104 .with(ViatraModelQueryAdapter.builder()
@@ -145,11 +144,7 @@ class QueryTransactionTest {
145 144
146 @Test 145 @Test
147 void unrelatedChangesTest() { 146 void unrelatedChangesTest() {
148 var person = new Symbol<>("Person", 1, Boolean.class, false); 147 var asset = Symbol.of("Asset", 1);
149 var asset = new Symbol<>("Asset", 1, Boolean.class, false);
150 var personView = new KeyOnlyView<>(person);
151
152 var predicate = Query.of("TypeConstraint", (builder, p1) -> builder.clause(personView.call(p1)));
153 148
154 var store = ModelStore.builder() 149 var store = ModelStore.builder()
155 .symbols(person, asset) 150 .symbols(person, asset)
@@ -214,11 +209,6 @@ class QueryTransactionTest {
214 209
215 @Test 210 @Test
216 void tupleChangingChangeTest() { 211 void tupleChangingChangeTest() {
217 var person = new Symbol<>("Person", 1, Boolean.class, false);
218 var age = new Symbol<>("age", 1, Integer.class, null);
219 var personView = new KeyOnlyView<>(person);
220 var ageView = new FunctionView<>(age);
221
222 var query = Query.of("TypeConstraint", Integer.class, (builder, p1, output) -> builder.clause( 212 var query = Query.of("TypeConstraint", Integer.class, (builder, p1, output) -> builder.clause(
223 personView.call(p1), 213 personView.call(p1),
224 ageView.call(p1, output) 214 ageView.call(p1, output)
@@ -256,9 +246,6 @@ class QueryTransactionTest {
256 246
257 @Test 247 @Test
258 void tuplePreservingUnchangedTest() { 248 void tuplePreservingUnchangedTest() {
259 var person = new Symbol<>("Person", 1, Boolean.class, false);
260 var age = new Symbol<>("age", 1, Integer.class, null);
261 var personView = new KeyOnlyView<>(person);
262 var adultView = new FilteredView<>(age, "adult", n -> n != null && n >= 18); 249 var adultView = new FilteredView<>(age, "adult", n -> n != null && n >= 18);
263 250
264 var query = Query.of("TypeConstraint", (builder, p1) -> builder.clause( 251 var query = Query.of("TypeConstraint", (builder, p1) -> builder.clause(
@@ -299,11 +286,6 @@ class QueryTransactionTest {
299 @Disabled("TODO Fix DiffCursor") 286 @Disabled("TODO Fix DiffCursor")
300 @Test 287 @Test
301 void commitAfterFlushTest() { 288 void commitAfterFlushTest() {
302 var person = new Symbol<>("Person", 1, Boolean.class, false);
303 var personView = new KeyOnlyView<>(person);
304
305 var predicate = Query.of("TypeConstraint", (builder, p1) -> builder.clause(personView.call(p1)));
306
307 var store = ModelStore.builder() 289 var store = ModelStore.builder()
308 .symbols(person) 290 .symbols(person)
309 .with(ViatraModelQueryAdapter.builder() 291 .with(ViatraModelQueryAdapter.builder()
@@ -353,11 +335,6 @@ class QueryTransactionTest {
353 @Disabled("TODO Fix DiffCursor") 335 @Disabled("TODO Fix DiffCursor")
354 @Test 336 @Test
355 void commitWithoutFlushTest() { 337 void commitWithoutFlushTest() {
356 var person = new Symbol<>("Person", 1, Boolean.class, false);
357 var personView = new KeyOnlyView<>(person);
358
359 var predicate = Query.of("TypeConstraint", (builder, p1) -> builder.clause(personView.call(p1)));
360
361 var store = ModelStore.builder() 338 var store = ModelStore.builder()
362 .symbols(person) 339 .symbols(person)
363 .with(ViatraModelQueryAdapter.builder() 340 .with(ViatraModelQueryAdapter.builder()