From 2069579ce57dbaf04bff610f8151409e25bf114a Mon Sep 17 00:00:00 2001 From: Kristóf Marussy Date: Sun, 18 Jun 2023 14:12:20 +0200 Subject: refactor: clean up Symbol constructor Shorthad syntax for the most commonly used symbol types. --- .../store/query/viatra/DiagonalQueryTest.java | 110 ++++++++------------- .../store/query/viatra/FunctionalQueryTest.java | 63 ++---------- .../refinery/store/query/viatra/QueryTest.java | 75 ++------------ .../store/query/viatra/QueryTransactionTest.java | 43 ++------ 4 files changed, 67 insertions(+), 224 deletions(-) (limited to 'subprojects/store-query-viatra/src') 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; import tools.refinery.store.query.dnf.Dnf; import tools.refinery.store.query.dnf.Query; import tools.refinery.store.query.viatra.tests.QueryEngineTest; +import tools.refinery.store.query.view.AnySymbolView; import tools.refinery.store.query.view.FunctionView; import tools.refinery.store.query.view.KeyOnlyView; import tools.refinery.store.representation.Symbol; @@ -26,13 +27,17 @@ import static tools.refinery.store.query.viatra.tests.QueryAssertions.assertNull import static tools.refinery.store.query.viatra.tests.QueryAssertions.assertResults; class DiagonalQueryTest { + private static final Symbol person = Symbol.of("Person", 1); + private static final Symbol friend = Symbol.of("friend", 2); + private static final Symbol symbol = Symbol.of("symbol", 4); + private static final Symbol intSymbol = Symbol.of("intSymbol", 4, Integer.class); + private static final AnySymbolView personView = new KeyOnlyView<>(person); + private static final AnySymbolView friendView = new KeyOnlyView<>(friend); + private static final AnySymbolView symbolView = new KeyOnlyView<>(symbol); + private static final AnySymbolView intSymbolView = new FunctionView<>(intSymbol); + @QueryEngineTest void inputKeyNegationTest(QueryEvaluationHint hint) { - var person = new Symbol<>("Person", 1, Boolean.class, false); - var symbol = new Symbol<>("symbol", 4, Boolean.class, false); - var personView = new KeyOnlyView<>(person); - var symbolView = new KeyOnlyView<>(symbol); - var query = Query.of("Diagonal", (builder, p1) -> builder.clause(p2 -> List.of( personView.call(p1), not(symbolView.call(p1, p1, p2, p2)) @@ -71,11 +76,6 @@ class DiagonalQueryTest { @QueryEngineTest void subQueryNegationTest(QueryEvaluationHint hint) { - var person = new Symbol<>("Person", 1, Boolean.class, false); - var symbol = new Symbol<>("symbol", 4, Boolean.class, false); - var personView = new KeyOnlyView<>(person); - var symbolView = new KeyOnlyView<>(symbol); - var subQuery = Dnf.of("SubQuery", builder -> { var p1 = builder.parameter("p1"); var p2 = builder.parameter("p2"); @@ -128,11 +128,6 @@ class DiagonalQueryTest { @QueryEngineTest void inputKeyCountTest(QueryEvaluationHint hint) { - var person = new Symbol<>("Person", 1, Boolean.class, false); - var symbol = new Symbol<>("symbol", 4, Boolean.class, false); - var personView = new KeyOnlyView<>(person); - var symbolView = new KeyOnlyView<>(symbol); - var query = Query.of("Diagonal", Integer.class, (builder, p1, output) -> builder.clause(p2 -> List.of( personView.call(p1), output.assign(symbolView.count(p1, p1, p2, p2)) @@ -172,11 +167,6 @@ class DiagonalQueryTest { @QueryEngineTest void subQueryCountTest(QueryEvaluationHint hint) { - var person = new Symbol<>("Person", 1, Boolean.class, false); - var symbol = new Symbol<>("symbol", 4, Boolean.class, false); - var personView = new KeyOnlyView<>(person); - var symbolView = new KeyOnlyView<>(symbol); - var subQuery = Dnf.of("SubQuery", builder -> { var p1 = builder.parameter("p1"); var p2 = builder.parameter("p2"); @@ -230,19 +220,14 @@ class DiagonalQueryTest { @QueryEngineTest void inputKeyAggregationTest(QueryEvaluationHint hint) { - var person = new Symbol<>("Person", 1, Boolean.class, false); - var symbol = new Symbol<>("symbol", 4, Integer.class, null); - var personView = new KeyOnlyView<>(person); - var symbolView = new FunctionView<>(symbol); - var query = Query.of("Diagonal", Integer.class, (builder, p1, output) -> builder.clause(Integer.class, (p2, y) -> List.of( personView.call(p1), - output.assign(symbolView.aggregate(y, INT_SUM, p1, p1, p2, p2, y)) + output.assign(intSymbolView.aggregate(y, INT_SUM, p1, p1, p2, p2, y)) ))); var store = ModelStore.builder() - .symbols(person, symbol) + .symbols(person, intSymbol) .with(ViatraModelQueryAdapter.builder() .defaultHint(hint) .queries(query)) @@ -250,7 +235,7 @@ class DiagonalQueryTest { var model = store.createEmptyModel(); var personInterpretation = model.getInterpretation(person); - var symbolInterpretation = model.getInterpretation(symbol); + var intSymbolInterpretation = model.getInterpretation(intSymbol); var queryEngine = model.getAdapter(ModelQueryAdapter.class); var queryResultSet = queryEngine.getResultSet(query); @@ -258,11 +243,11 @@ class DiagonalQueryTest { personInterpretation.put(Tuple.of(1), true); personInterpretation.put(Tuple.of(2), true); - symbolInterpretation.put(Tuple.of(0, 0, 1, 1), 1); - symbolInterpretation.put(Tuple.of(0, 0, 2, 2), 2); - symbolInterpretation.put(Tuple.of(0, 0, 1, 2), 10); - symbolInterpretation.put(Tuple.of(1, 1, 0, 1), 11); - symbolInterpretation.put(Tuple.of(1, 2, 1, 1), 12); + intSymbolInterpretation.put(Tuple.of(0, 0, 1, 1), 1); + intSymbolInterpretation.put(Tuple.of(0, 0, 2, 2), 2); + intSymbolInterpretation.put(Tuple.of(0, 0, 1, 2), 10); + intSymbolInterpretation.put(Tuple.of(1, 1, 0, 1), 11); + intSymbolInterpretation.put(Tuple.of(1, 2, 1, 1), 12); queryEngine.flushChanges(); assertNullableResults(Map.of( @@ -275,11 +260,6 @@ class DiagonalQueryTest { @QueryEngineTest void subQueryAggregationTest(QueryEvaluationHint hint) { - var person = new Symbol<>("Person", 1, Boolean.class, false); - var symbol = new Symbol<>("symbol", 4, Integer.class, null); - var personView = new KeyOnlyView<>(person); - var symbolView = new FunctionView<>(symbol); - var subQuery = Dnf.of("SubQuery", builder -> { var p1 = builder.parameter("p1"); var p2 = builder.parameter("p2"); @@ -289,12 +269,12 @@ class DiagonalQueryTest { var y = builder.parameter("y", Integer.class); builder.clause( personView.call(p1), - symbolView.call(p1, p2, p3, p4, x), + intSymbolView.call(p1, p2, p3, p4, x), y.assign(x) ); builder.clause( personView.call(p2), - symbolView.call(p1, p2, p3, p4, x), + intSymbolView.call(p1, p2, p3, p4, x), y.assign(x) ); }); @@ -305,7 +285,7 @@ class DiagonalQueryTest { ))); var store = ModelStore.builder() - .symbols(person, symbol) + .symbols(person, intSymbol) .with(ViatraModelQueryAdapter.builder() .defaultHint(hint) .queries(query)) @@ -313,7 +293,7 @@ class DiagonalQueryTest { var model = store.createEmptyModel(); var personInterpretation = model.getInterpretation(person); - var symbolInterpretation = model.getInterpretation(symbol); + var intSymbolInterpretation = model.getInterpretation(intSymbol); var queryEngine = model.getAdapter(ModelQueryAdapter.class); var queryResultSet = queryEngine.getResultSet(query); @@ -321,11 +301,11 @@ class DiagonalQueryTest { personInterpretation.put(Tuple.of(1), true); personInterpretation.put(Tuple.of(2), true); - symbolInterpretation.put(Tuple.of(0, 0, 1, 1), 1); - symbolInterpretation.put(Tuple.of(0, 0, 2, 2), 2); - symbolInterpretation.put(Tuple.of(0, 0, 1, 2), 10); - symbolInterpretation.put(Tuple.of(1, 1, 0, 1), 11); - symbolInterpretation.put(Tuple.of(1, 2, 1, 1), 12); + intSymbolInterpretation.put(Tuple.of(0, 0, 1, 1), 1); + intSymbolInterpretation.put(Tuple.of(0, 0, 2, 2), 2); + intSymbolInterpretation.put(Tuple.of(0, 0, 1, 2), 10); + intSymbolInterpretation.put(Tuple.of(1, 1, 0, 1), 11); + intSymbolInterpretation.put(Tuple.of(1, 2, 1, 1), 12); queryEngine.flushChanges(); assertNullableResults(Map.of( @@ -338,18 +318,13 @@ class DiagonalQueryTest { @QueryEngineTest void inputKeyTransitiveTest(QueryEvaluationHint hint) { - var person = new Symbol<>("Person", 1, Boolean.class, false); - var symbol = new Symbol<>("symbol", 2, Boolean.class, false); - var personView = new KeyOnlyView<>(person); - var symbolView = new KeyOnlyView<>(symbol); - var query = Query.of("Diagonal", (builder, p1) -> builder.clause( personView.call(p1), - symbolView.callTransitive(p1, p1) + friendView.callTransitive(p1, p1) )); var store = ModelStore.builder() - .symbols(person, symbol) + .symbols(person, friend) .with(ViatraModelQueryAdapter.builder() .defaultHint(hint) .queries(query)) @@ -357,7 +332,7 @@ class DiagonalQueryTest { var model = store.createEmptyModel(); var personInterpretation = model.getInterpretation(person); - var symbolInterpretation = model.getInterpretation(symbol); + var friendInterpretation = model.getInterpretation(friend); var queryEngine = model.getAdapter(ModelQueryAdapter.class); var queryResultSet = queryEngine.getResultSet(query); @@ -365,9 +340,9 @@ class DiagonalQueryTest { personInterpretation.put(Tuple.of(1), true); personInterpretation.put(Tuple.of(2), true); - symbolInterpretation.put(Tuple.of(0, 0), true); - symbolInterpretation.put(Tuple.of(0, 1), true); - symbolInterpretation.put(Tuple.of(1, 2), true); + friendInterpretation.put(Tuple.of(0, 0), true); + friendInterpretation.put(Tuple.of(0, 1), true); + friendInterpretation.put(Tuple.of(1, 2), true); queryEngine.flushChanges(); assertResults(Map.of( @@ -380,21 +355,16 @@ class DiagonalQueryTest { @QueryEngineTest void subQueryTransitiveTest(QueryEvaluationHint hint) { - var person = new Symbol<>("Person", 1, Boolean.class, false); - var symbol = new Symbol<>("symbol", 2, Boolean.class, false); - var personView = new KeyOnlyView<>(person); - var symbolView = new KeyOnlyView<>(symbol); - var subQuery = Dnf.of("SubQuery", builder -> { var p1 = builder.parameter("p1"); var p2 = builder.parameter("p2"); builder.clause( personView.call(p1), - symbolView.call(p1, p2) + friendView.call(p1, p2) ); builder.clause( personView.call(p2), - symbolView.call(p1, p2) + friendView.call(p1, p2) ); }); var query = Query.of("Diagonal", (builder, p1) -> builder.clause( @@ -403,7 +373,7 @@ class DiagonalQueryTest { )); var store = ModelStore.builder() - .symbols(person, symbol) + .symbols(person, friend) .with(ViatraModelQueryAdapter.builder() .defaultHint(hint) .queries(query)) @@ -411,7 +381,7 @@ class DiagonalQueryTest { var model = store.createEmptyModel(); var personInterpretation = model.getInterpretation(person); - var symbolInterpretation = model.getInterpretation(symbol); + var friendInterpretation = model.getInterpretation(friend); var queryEngine = model.getAdapter(ModelQueryAdapter.class); var queryResultSet = queryEngine.getResultSet(query); @@ -419,9 +389,9 @@ class DiagonalQueryTest { personInterpretation.put(Tuple.of(1), true); personInterpretation.put(Tuple.of(2), true); - symbolInterpretation.put(Tuple.of(0, 0), true); - symbolInterpretation.put(Tuple.of(0, 1), true); - symbolInterpretation.put(Tuple.of(1, 2), true); + friendInterpretation.put(Tuple.of(0, 0), true); + friendInterpretation.put(Tuple.of(0, 1), true); + friendInterpretation.put(Tuple.of(1, 2), true); queryEngine.flushChanges(); 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; import tools.refinery.store.query.dnf.Query; import tools.refinery.store.query.term.Variable; import tools.refinery.store.query.viatra.tests.QueryEngineTest; +import tools.refinery.store.query.view.AnySymbolView; import tools.refinery.store.query.view.FilteredView; import tools.refinery.store.query.view.FunctionView; import tools.refinery.store.query.view.KeyOnlyView; @@ -35,13 +36,15 @@ import static tools.refinery.store.query.viatra.tests.QueryAssertions.assertNull import static tools.refinery.store.query.viatra.tests.QueryAssertions.assertResults; class FunctionalQueryTest { + private static final Symbol person = Symbol.of("Person", 1); + private static final Symbol age = Symbol.of("age", 1, Integer.class); + private static final Symbol friend = Symbol.of("friend", 2, TruthValue.class, TruthValue.FALSE); + private static final AnySymbolView personView = new KeyOnlyView<>(person); + private static final AnySymbolView ageView = new FunctionView<>(age); + private static final AnySymbolView friendMustView = new FilteredView<>(friend, "must", TruthValue::must); + @QueryEngineTest void inputKeyTest(QueryEvaluationHint hint) { - var person = new Symbol<>("Person", 1, Boolean.class, false); - var age = new Symbol<>("age", 1, Integer.class, null); - var personView = new KeyOnlyView<>(person); - var ageView = new FunctionView<>(age); - var query = Query.of("InputKey", Integer.class, (builder, p1, output) -> builder.clause( personView.call(p1), ageView.call(p1, output) @@ -77,11 +80,6 @@ class FunctionalQueryTest { @QueryEngineTest void predicateTest(QueryEvaluationHint hint) { - var person = new Symbol<>("Person", 1, Boolean.class, false); - var age = new Symbol<>("age", 1, Integer.class, null); - var personView = new KeyOnlyView<>(person); - var ageView = new FunctionView<>(age); - var subQuery = Dnf.of("SubQuery", builder -> { var p1 = builder.parameter("p1"); var x = builder.parameter("x", Integer.class); @@ -125,11 +123,6 @@ class FunctionalQueryTest { @QueryEngineTest void computationTest(QueryEvaluationHint hint) { - var person = new Symbol<>("Person", 1, Boolean.class, false); - var age = new Symbol<>("age", 1, Integer.class, null); - var personView = new KeyOnlyView<>(person); - var ageView = new FunctionView<>(age); - var query = Query.of("Computation", Integer.class, (builder, p1, output) -> builder.clause(() -> { var x = Variable.of("x", Integer.class); return List.of( @@ -168,11 +161,6 @@ class FunctionalQueryTest { @QueryEngineTest void inputKeyCountTest(QueryEvaluationHint hint) { - var person = new Symbol<>("Person", 1, Boolean.class, false); - var friend = new Symbol<>("friend", 2, TruthValue.class, TruthValue.FALSE); - var personView = new KeyOnlyView<>(person); - var friendMustView = new FilteredView<>(friend, "must", TruthValue::must); - var query = Query.of("Count", Integer.class, (builder, p1, output) -> builder.clause( personView.call(p1), output.assign(friendMustView.count(p1, Variable.of())) @@ -210,11 +198,6 @@ class FunctionalQueryTest { @QueryEngineTest void predicateCountTest(QueryEvaluationHint hint) { - var person = new Symbol<>("Person", 1, Boolean.class, false); - var friend = new Symbol<>("friend", 2, TruthValue.class, TruthValue.FALSE); - var personView = new KeyOnlyView<>(person); - var friendMustView = new FilteredView<>(friend, "must", TruthValue::must); - var subQuery = Dnf.of("SubQuery", builder -> { var p1 = builder.parameter("p1"); var p2 = builder.parameter("p2"); @@ -261,9 +244,6 @@ class FunctionalQueryTest { @QueryEngineTest void inputKeyAggregationTest(QueryEvaluationHint hint) { - var age = new Symbol<>("age", 1, Integer.class, null); - var ageView = new FunctionView<>(age); - var query = Query.of("Aggregate", Integer.class, (builder, output) -> builder.clause(Integer.class, (y) -> List.of(output.assign(ageView.aggregate(y, INT_SUM, Variable.of(), y))))); @@ -288,11 +268,6 @@ class FunctionalQueryTest { @QueryEngineTest void predicateAggregationTest(QueryEvaluationHint hint) { - var person = new Symbol<>("Person", 1, Boolean.class, false); - var age = new Symbol<>("age", 1, Integer.class, null); - var personView = new KeyOnlyView<>(person); - var ageView = new FunctionView<>(age); - var subQuery = Dnf.of("SubQuery", builder -> { var p1 = builder.parameter("p1"); var x = builder.parameter("x", Integer.class); @@ -329,11 +304,6 @@ class FunctionalQueryTest { @QueryEngineTest void extremeValueTest(QueryEvaluationHint hint) { - var person = new Symbol<>("Person", 1, Boolean.class, false); - var friend = new Symbol<>("friend", 2, TruthValue.class, TruthValue.FALSE); - var personView = new KeyOnlyView<>(person); - var friendMustView = new FilteredView<>(friend, "must", TruthValue::must); - var subQuery = Dnf.of("SubQuery", builder -> { var p1 = builder.parameter("p1"); var x = builder.parameter("x", Integer.class); @@ -394,11 +364,6 @@ class FunctionalQueryTest { @QueryEngineTest void invalidComputationTest(QueryEvaluationHint hint) { - var person = new Symbol<>("Person", 1, Boolean.class, false); - var age = new Symbol<>("age", 1, Integer.class, null); - var personView = new KeyOnlyView<>(person); - var ageView = new FunctionView<>(age); - var query = Query.of("InvalidComputation", Integer.class, (builder, p1, output) -> builder.clause(Integer.class, (x) -> List.of( personView.call(p1), @@ -435,11 +400,6 @@ class FunctionalQueryTest { @QueryEngineTest void invalidAssumeTest(QueryEvaluationHint hint) { - var person = new Symbol<>("Person", 1, Boolean.class, false); - var age = new Symbol<>("age", 1, Integer.class, null); - var personView = new KeyOnlyView<>(person); - var ageView = new FunctionView<>(age); - var query = Query.of("InvalidAssume", (builder, p1) -> builder.clause(Integer.class, (x) -> List.of( personView.call(p1), ageView.call(p1, x), @@ -478,13 +438,6 @@ class FunctionalQueryTest { @QueryEngineTest void notFunctionalTest(QueryEvaluationHint hint) { - var person = new Symbol<>("Person", 1, Boolean.class, false); - var age = new Symbol<>("age", 1, Integer.class, null); - var friend = new Symbol<>("friend", 2, TruthValue.class, TruthValue.FALSE); - var personView = new KeyOnlyView<>(person); - var ageView = new FunctionView<>(age); - var friendMustView = new FilteredView<>(friend, "must", TruthValue::must); - var query = Query.of("NotFunctional", Integer.class, (builder, p1, output) -> builder.clause((p2) -> List.of( personView.call(p1), 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; import tools.refinery.store.query.dnf.Query; import tools.refinery.store.query.term.Variable; import tools.refinery.store.query.viatra.tests.QueryEngineTest; +import tools.refinery.store.query.view.AnySymbolView; import tools.refinery.store.query.view.FilteredView; import tools.refinery.store.query.view.FunctionView; import tools.refinery.store.query.view.KeyOnlyView; @@ -30,11 +31,14 @@ import static tools.refinery.store.query.term.int_.IntTerms.greaterEq; import static tools.refinery.store.query.viatra.tests.QueryAssertions.assertResults; class QueryTest { + private static final Symbol person = Symbol.of("Person", 1); + private static final Symbol friend = Symbol.of("friend", 2, TruthValue.class, TruthValue.FALSE); + private static final AnySymbolView personView = new KeyOnlyView<>(person); + private static final AnySymbolView friendMustView = new FilteredView<>(friend, "must", TruthValue::must); + @QueryEngineTest void typeConstraintTest(QueryEvaluationHint hint) { - var person = new Symbol<>("Person", 1, Boolean.class, false); - var asset = new Symbol<>("Asset", 1, Boolean.class, false); - var personView = new KeyOnlyView<>(person); + var asset = Symbol.of("Asset", 1); var predicate = Query.of("TypeConstraint", (builder, p1) -> builder.clause(personView.call(p1))); @@ -67,11 +71,6 @@ class QueryTest { @QueryEngineTest void relationConstraintTest(QueryEvaluationHint hint) { - var person = new Symbol<>("Person", 1, Boolean.class, false); - var friend = new Symbol<>("friend", 2, TruthValue.class, TruthValue.FALSE); - var personView = new KeyOnlyView<>(person); - var friendMustView = new FilteredView<>(friend, "must", TruthValue::must); - var predicate = Query.of("RelationConstraint", (builder, p1, p2) -> builder.clause( personView.call(p1), personView.call(p2), @@ -111,11 +110,6 @@ class QueryTest { @QueryEngineTest void existTest(QueryEvaluationHint hint) { - var person = new Symbol<>("Person", 1, Boolean.class, false); - var friend = new Symbol<>("friend", 2, TruthValue.class, TruthValue.FALSE); - var personView = new KeyOnlyView<>(person); - var friendMustView = new FilteredView<>(friend, "must", TruthValue::must); - var predicate = Query.of("Exists", (builder, p1) -> builder.clause((p2) -> List.of( personView.call(p1), personView.call(p2), @@ -155,12 +149,8 @@ class QueryTest { @QueryEngineTest void orTest(QueryEvaluationHint hint) { - var person = new Symbol<>("Person", 1, Boolean.class, false); - var animal = new Symbol<>("Animal", 1, Boolean.class, false); - var friend = new Symbol<>("friend", 2, TruthValue.class, TruthValue.FALSE); - var personView = new KeyOnlyView<>(person); + var animal = Symbol.of("Animal", 1); var animalView = new KeyOnlyView<>(animal); - var friendMustView = new FilteredView<>(friend, "must", TruthValue::must); var predicate = Query.of("Or", (builder, p1, p2) -> builder.clause( personView.call(p1), @@ -209,9 +199,6 @@ class QueryTest { @QueryEngineTest void equalityTest(QueryEvaluationHint hint) { - var person = new Symbol<>("Person", 1, Boolean.class, false); - var personView = new KeyOnlyView<>(person); - var predicate = Query.of("Equality", (builder, p1, p2) -> builder.clause( personView.call(p1), personView.call(p2), @@ -246,11 +233,6 @@ class QueryTest { @QueryEngineTest void inequalityTest(QueryEvaluationHint hint) { - var person = new Symbol<>("Person", 1, Boolean.class, false); - var friend = new Symbol<>("friend", 2, TruthValue.class, TruthValue.FALSE); - var personView = new KeyOnlyView<>(person); - var friendMustView = new FilteredView<>(friend, "must", TruthValue::must); - var predicate = Query.of("Inequality", (builder, p1, p2, p3) -> builder.clause( personView.call(p1), personView.call(p2), @@ -289,11 +271,6 @@ class QueryTest { @QueryEngineTest void patternCallTest(QueryEvaluationHint hint) { - var person = new Symbol<>("Person", 1, Boolean.class, false); - var friend = new Symbol<>("friend", 2, TruthValue.class, TruthValue.FALSE); - var personView = new KeyOnlyView<>(person); - var friendMustView = new FilteredView<>(friend, "must", TruthValue::must); - var friendPredicate = Dnf.of("Friend", builder -> { var p1 = builder.parameter("p1"); var p2 = builder.parameter("p2"); @@ -341,11 +318,6 @@ class QueryTest { @QueryEngineTest void negativeRelationViewTest(QueryEvaluationHint hint) { - var person = new Symbol<>("Person", 1, Boolean.class, false); - var friend = new Symbol<>("friend", 2, TruthValue.class, TruthValue.FALSE); - var personView = new KeyOnlyView<>(person); - var friendMustView = new FilteredView<>(friend, "must", TruthValue::must); - var predicate = Query.of("NegativePatternCall", (builder, p1, p2) -> builder.clause( personView.call(p1), personView.call(p2), @@ -390,11 +362,6 @@ class QueryTest { @QueryEngineTest void negativePatternCallTest(QueryEvaluationHint hint) { - var person = new Symbol<>("Person", 1, Boolean.class, false); - var friend = new Symbol<>("friend", 2, TruthValue.class, TruthValue.FALSE); - var personView = new KeyOnlyView<>(person); - var friendMustView = new FilteredView<>(friend, "must", TruthValue::must); - var friendPredicate = Dnf.of("Friend", builder -> { var p1 = builder.parameter("p1"); var p2 = builder.parameter("p2"); @@ -448,11 +415,6 @@ class QueryTest { @QueryEngineTest void negativeRelationViewWithQuantificationTest(QueryEvaluationHint hint) { - var person = new Symbol<>("Person", 1, Boolean.class, false); - var friend = new Symbol<>("friend", 2, TruthValue.class, TruthValue.FALSE); - var personView = new KeyOnlyView<>(person); - var friendMustView = new FilteredView<>(friend, "must", TruthValue::must); - var predicate = Query.of("Negative", (builder, p1) -> builder.clause( personView.call(p1), not(friendMustView.call(p1, Variable.of())) @@ -489,11 +451,6 @@ class QueryTest { @QueryEngineTest void negativeWithQuantificationTest(QueryEvaluationHint hint) { - var person = new Symbol<>("Person", 1, Boolean.class, false); - var friend = new Symbol<>("friend", 2, TruthValue.class, TruthValue.FALSE); - var personView = new KeyOnlyView<>(person); - var friendMustView = new FilteredView<>(friend, "must", TruthValue::must); - var called = Dnf.of("Called", builder -> { var p1 = builder.parameter("p1"); var p2 = builder.parameter("p2"); @@ -539,11 +496,6 @@ class QueryTest { @QueryEngineTest void transitiveRelationViewTest(QueryEvaluationHint hint) { - var person = new Symbol<>("Person", 1, Boolean.class, false); - var friend = new Symbol<>("friend", 2, TruthValue.class, TruthValue.FALSE); - var personView = new KeyOnlyView<>(person); - var friendMustView = new FilteredView<>(friend, "must", TruthValue::must); - var predicate = Query.of("Transitive", (builder, p1, p2) -> builder.clause( personView.call(p1), personView.call(p2), @@ -587,11 +539,6 @@ class QueryTest { @QueryEngineTest void transitivePatternCallTest(QueryEvaluationHint hint) { - var person = new Symbol<>("Person", 1, Boolean.class, false); - var friend = new Symbol<>("friend", 2, TruthValue.class, TruthValue.FALSE); - var personView = new KeyOnlyView<>(person); - var friendMustView = new FilteredView<>(friend, "must", TruthValue::must); - var called = Dnf.of("Called", builder -> { var p1 = builder.parameter("p1"); var p2 = builder.parameter("p2"); @@ -644,9 +591,7 @@ class QueryTest { @QueryEngineTest void assumeTest(QueryEvaluationHint hint) { - var person = new Symbol<>("Person", 1, Boolean.class, false); - var age = new Symbol<>("age", 1, Integer.class, null); - var personView = new KeyOnlyView<>(person); + var age = Symbol.of("age", 1, Integer.class); var ageView = new FunctionView<>(age); var query = Query.of("Constraint", (builder, p1) -> builder.clause(Integer.class, (x) -> List.of( @@ -684,8 +629,6 @@ class QueryTest { @Test void alwaysFalseTest() { - var person = new Symbol<>("Person", 1, Boolean.class, false); - var predicate = Query.of("AlwaysFalse", builder -> builder.parameter("p1")); 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; import tools.refinery.store.model.ModelStore; import tools.refinery.store.query.ModelQueryAdapter; import tools.refinery.store.query.dnf.Query; +import tools.refinery.store.query.dnf.RelationalQuery; +import tools.refinery.store.query.view.AnySymbolView; import tools.refinery.store.query.view.FilteredView; import tools.refinery.store.query.view.FunctionView; import tools.refinery.store.query.view.KeyOnlyView; @@ -26,13 +28,15 @@ import static tools.refinery.store.query.viatra.tests.QueryAssertions.assertNull import static tools.refinery.store.query.viatra.tests.QueryAssertions.assertResults; class QueryTransactionTest { + private static final Symbol person = Symbol.of("Person", 1); + private static final Symbol age = Symbol.of("age", 1, Integer.class); + private static final AnySymbolView personView = new KeyOnlyView<>(person); + private static final AnySymbolView ageView = new FunctionView<>(age); + private static final RelationalQuery predicate = Query.of("TypeConstraint", (builder, p1) -> + builder.clause(personView.call(p1))); + @Test void flushTest() { - var person = new Symbol<>("Person", 1, Boolean.class, false); - var personView = new KeyOnlyView<>(person); - - var predicate = Query.of("TypeConstraint", (builder, p1) -> builder.clause(personView.call(p1))); - var store = ModelStore.builder() .symbols(person) .with(ViatraModelQueryAdapter.builder() @@ -95,11 +99,6 @@ class QueryTransactionTest { @Test void localSearchTest() { - var person = new Symbol<>("Person", 1, Boolean.class, false); - var personView = new KeyOnlyView<>(person); - - var predicate = Query.of("TypeConstraint", (builder, p1) -> builder.clause(personView.call(p1))); - var store = ModelStore.builder() .symbols(person) .with(ViatraModelQueryAdapter.builder() @@ -145,11 +144,7 @@ class QueryTransactionTest { @Test void unrelatedChangesTest() { - var person = new Symbol<>("Person", 1, Boolean.class, false); - var asset = new Symbol<>("Asset", 1, Boolean.class, false); - var personView = new KeyOnlyView<>(person); - - var predicate = Query.of("TypeConstraint", (builder, p1) -> builder.clause(personView.call(p1))); + var asset = Symbol.of("Asset", 1); var store = ModelStore.builder() .symbols(person, asset) @@ -214,11 +209,6 @@ class QueryTransactionTest { @Test void tupleChangingChangeTest() { - var person = new Symbol<>("Person", 1, Boolean.class, false); - var age = new Symbol<>("age", 1, Integer.class, null); - var personView = new KeyOnlyView<>(person); - var ageView = new FunctionView<>(age); - var query = Query.of("TypeConstraint", Integer.class, (builder, p1, output) -> builder.clause( personView.call(p1), ageView.call(p1, output) @@ -256,9 +246,6 @@ class QueryTransactionTest { @Test void tuplePreservingUnchangedTest() { - var person = new Symbol<>("Person", 1, Boolean.class, false); - var age = new Symbol<>("age", 1, Integer.class, null); - var personView = new KeyOnlyView<>(person); var adultView = new FilteredView<>(age, "adult", n -> n != null && n >= 18); var query = Query.of("TypeConstraint", (builder, p1) -> builder.clause( @@ -299,11 +286,6 @@ class QueryTransactionTest { @Disabled("TODO Fix DiffCursor") @Test void commitAfterFlushTest() { - var person = new Symbol<>("Person", 1, Boolean.class, false); - var personView = new KeyOnlyView<>(person); - - var predicate = Query.of("TypeConstraint", (builder, p1) -> builder.clause(personView.call(p1))); - var store = ModelStore.builder() .symbols(person) .with(ViatraModelQueryAdapter.builder() @@ -353,11 +335,6 @@ class QueryTransactionTest { @Disabled("TODO Fix DiffCursor") @Test void commitWithoutFlushTest() { - var person = new Symbol<>("Person", 1, Boolean.class, false); - var personView = new KeyOnlyView<>(person); - - var predicate = Query.of("TypeConstraint", (builder, p1) -> builder.clause(personView.call(p1))); - var store = ModelStore.builder() .symbols(person) .with(ViatraModelQueryAdapter.builder() -- cgit v1.2.3-70-g09d2