From cd4d5aecd2c1ceedc49657f315d3a543b48779c5 Mon Sep 17 00:00:00 2001 From: Kristóf Marussy Date: Sun, 18 Jun 2023 14:31:05 +0200 Subject: refactor: prefer Query.of over Dnf.of --- .../store/query/viatra/DiagonalQueryTest.java | 80 +++++++++------------- .../store/query/viatra/FunctionalQueryTest.java | 69 ++++++++----------- .../refinery/store/query/viatra/QueryTest.java | 57 ++++++--------- 3 files changed, 81 insertions(+), 125 deletions(-) (limited to 'subprojects/store-query-viatra') 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 b21c254c..6aae2ebe 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 @@ -34,7 +34,7 @@ class DiagonalQueryTest { 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); + private static final FunctionView intSymbolView = new FunctionView<>(intSymbol); @QueryEngineTest void inputKeyNegationTest(QueryEvaluationHint hint) { @@ -76,20 +76,15 @@ class DiagonalQueryTest { @QueryEngineTest void subQueryNegationTest(QueryEvaluationHint hint) { - var subQuery = Dnf.of("SubQuery", builder -> { - var p1 = builder.parameter("p1"); - var p2 = builder.parameter("p2"); - var p3 = builder.parameter("p3"); - var p4 = builder.parameter("p4"); - builder.clause( - personView.call(p1), - symbolView.call(p1, p2, p3, p4) - ); - builder.clause( - personView.call(p2), - symbolView.call(p1, p2, p3, p4) - ); - }); + var subQuery = Query.of("SubQuery", (builder, p1, p2, p3, p4) -> builder + .clause( + personView.call(p1), + symbolView.call(p1, p2, p3, p4) + ) + .clause( + personView.call(p2), + symbolView.call(p1, p2, p3, p4) + )); var query = Query.of("Diagonal", (builder, p1) -> builder.clause(p2 -> List.of( personView.call(p1), not(subQuery.call(p1, p1, p2, p2)) @@ -167,20 +162,14 @@ class DiagonalQueryTest { @QueryEngineTest void subQueryCountTest(QueryEvaluationHint hint) { - var subQuery = Dnf.of("SubQuery", builder -> { - var p1 = builder.parameter("p1"); - var p2 = builder.parameter("p2"); - var p3 = builder.parameter("p3"); - var p4 = builder.parameter("p4"); - builder.clause( - personView.call(p1), - symbolView.call(p1, p2, p3, p4) - ); - builder.clause( - personView.call(p2), - symbolView.call(p1, p2, p3, p4) - ); - }); + var subQuery = Query.of("SubQuery", (builder, p1, p2, p3, p4) -> builder.clause( + personView.call(p1), + symbolView.call(p1, p2, p3, p4) + ) + .clause( + personView.call(p2), + symbolView.call(p1, p2, p3, p4) + )); var query = Query.of("Diagonal", Integer.class, (builder, p1, output) -> builder.clause(p2 -> List.of( personView.call(p1), output.assign(subQuery.count(p1, p1, p2, p2)) @@ -220,10 +209,10 @@ class DiagonalQueryTest { @QueryEngineTest void inputKeyAggregationTest(QueryEvaluationHint hint) { - var query = Query.of("Diagonal", Integer.class, (builder, p1, output) -> builder.clause(Integer.class, - (p2, y) -> List.of( + var query = Query.of("Diagonal", Integer.class, (builder, p1, output) -> builder + .clause((p2) -> List.of( personView.call(p1), - output.assign(intSymbolView.aggregate(y, INT_SUM, p1, p1, p2, p2, y)) + output.assign(intSymbolView.aggregate(INT_SUM, p1, p1, p2, p2)) ))); var store = ModelStore.builder() @@ -278,10 +267,10 @@ class DiagonalQueryTest { y.assign(x) ); }); - var query = Query.of("Diagonal", Integer.class, (builder, p1, output) -> builder.clause( - Integer.class, Integer.class, (p2, y, z) -> List.of( + var query = Query.of("Diagonal", Integer.class, (builder, p1, output) -> builder + .clause(Integer.class, Integer.class, (p2, y, z) -> List.of( personView.call(p1), - output.assign(subQuery.aggregate(y, INT_SUM, p1, p1, p2, p2, y, z)) + output.assign(subQuery.aggregateBy(y, INT_SUM, p1, p1, p2, p2, y, z)) ))); var store = ModelStore.builder() @@ -355,18 +344,15 @@ class DiagonalQueryTest { @QueryEngineTest void subQueryTransitiveTest(QueryEvaluationHint hint) { - var subQuery = Dnf.of("SubQuery", builder -> { - var p1 = builder.parameter("p1"); - var p2 = builder.parameter("p2"); - builder.clause( - personView.call(p1), - friendView.call(p1, p2) - ); - builder.clause( - personView.call(p2), - friendView.call(p1, p2) - ); - }); + var subQuery = Query.of("SubQuery", (builder, p1, p2) -> builder + .clause( + personView.call(p1), + friendView.call(p1, p2) + ) + .clause( + personView.call(p2), + friendView.call(p1, p2) + )); var query = Query.of("Diagonal", (builder, p1) -> builder.clause( personView.call(p1), subQuery.callTransitive(p1, p1) 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 723e9180..258127e7 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 @@ -9,7 +9,6 @@ import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint; import tools.refinery.store.map.Cursor; import tools.refinery.store.model.ModelStore; 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.term.Variable; import tools.refinery.store.query.viatra.tests.QueryEngineTest; @@ -40,7 +39,7 @@ class FunctionalQueryTest { 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 FunctionView ageView = new FunctionView<>(age); private static final AnySymbolView friendMustView = new FilteredView<>(friend, "must", TruthValue::must); @QueryEngineTest @@ -80,17 +79,13 @@ class FunctionalQueryTest { @QueryEngineTest void predicateTest(QueryEvaluationHint hint) { - var subQuery = Dnf.of("SubQuery", builder -> { - var p1 = builder.parameter("p1"); - var x = builder.parameter("x", Integer.class); - builder.clause( - personView.call(p1), - ageView.call(p1, x) - ); - }); + var subQuery = Query.of("SubQuery", Integer.class, (builder, p1, x) -> builder.clause( + personView.call(p1), + ageView.call(p1, x) + )); var query = Query.of("Predicate", Integer.class, (builder, p1, output) -> builder.clause( personView.call(p1), - subQuery.call(p1, output) + output.assign(subQuery.call(p1)) )); var store = ModelStore.builder() @@ -198,15 +193,11 @@ class FunctionalQueryTest { @QueryEngineTest void predicateCountTest(QueryEvaluationHint hint) { - var subQuery = Dnf.of("SubQuery", builder -> { - var p1 = builder.parameter("p1"); - var p2 = builder.parameter("p2"); - builder.clause( + var subQuery = Query.of("SubQuery", (builder, p1, p2) -> builder.clause( personView.call(p1), personView.call(p2), friendMustView.call(p1, p2) - ); - }); + )); var query = Query.of("Count", Integer.class, (builder, p1, output) -> builder.clause( personView.call(p1), output.assign(subQuery.count(p1, Variable.of())) @@ -244,8 +235,9 @@ class FunctionalQueryTest { @QueryEngineTest void inputKeyAggregationTest(QueryEvaluationHint hint) { - 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))))); + var query = Query.of("Aggregate", Integer.class, (builder, output) -> builder.clause( + output.assign(ageView.aggregate(INT_SUM, Variable.of())) + )); var store = ModelStore.builder() .symbols(age) @@ -268,16 +260,13 @@ class FunctionalQueryTest { @QueryEngineTest void predicateAggregationTest(QueryEvaluationHint hint) { - var subQuery = Dnf.of("SubQuery", builder -> { - var p1 = builder.parameter("p1"); - var x = builder.parameter("x", Integer.class); - builder.clause( - personView.call(p1), - ageView.call(p1, x) - ); - }); - var query = Query.of("Aggregate", Integer.class, (builder, output) -> builder.clause(Integer.class, - (y) -> List.of(output.assign(subQuery.aggregate(y, INT_SUM, Variable.of(), y))))); + var subQuery = Query.of("SubQuery", Integer.class, (builder, p1, x) -> builder.clause( + personView.call(p1), + ageView.call(p1, x) + )); + var query = Query.of("Aggregate", Integer.class, (builder, output) -> builder.clause( + output.assign(subQuery.aggregate(INT_SUM, Variable.of())) + )); var store = ModelStore.builder() .symbols(person, age) @@ -304,18 +293,16 @@ class FunctionalQueryTest { @QueryEngineTest void extremeValueTest(QueryEvaluationHint hint) { - var subQuery = Dnf.of("SubQuery", builder -> { - var p1 = builder.parameter("p1"); - var x = builder.parameter("x", Integer.class); - builder.clause( - personView.call(p1), - x.assign(friendMustView.count(p1, Variable.of())) - ); - }); - var minQuery = Query.of("Min", Integer.class, (builder, output) -> builder.clause(Integer.class, - (y) -> List.of(output.assign(subQuery.aggregate(y, INT_MIN, Variable.of(), y))))); - var maxQuery = Query.of("Max", Integer.class, (builder, output) -> builder.clause(Integer.class, - (y) -> List.of(output.assign(subQuery.aggregate(y, INT_MAX, Variable.of(), y))))); + var subQuery = Query.of("SubQuery", Integer.class, (builder, p1, x) -> builder.clause( + personView.call(p1), + x.assign(friendMustView.count(p1, Variable.of())) + )); + var minQuery = Query.of("Min", Integer.class, (builder, output) -> builder.clause( + output.assign(subQuery.aggregate(INT_MIN, Variable.of())) + )); + var maxQuery = Query.of("Max", Integer.class, (builder, output) -> builder.clause( + output.assign(subQuery.aggregate(INT_MAX, Variable.of())) + )); var store = ModelStore.builder() .symbols(person, friend) 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 de0e6da1..297cdf04 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 @@ -9,7 +9,6 @@ import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint; import org.junit.jupiter.api.Test; import tools.refinery.store.model.ModelStore; 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.term.Variable; import tools.refinery.store.query.viatra.tests.QueryEngineTest; @@ -271,15 +270,11 @@ class QueryTest { @QueryEngineTest void patternCallTest(QueryEvaluationHint hint) { - var friendPredicate = Dnf.of("Friend", builder -> { - var p1 = builder.parameter("p1"); - var p2 = builder.parameter("p2"); - builder.clause( - personView.call(p1), - personView.call(p2), - friendMustView.call(p1, p2) - ); - }); + var friendPredicate = Query.of("Friend", (builder, p1, p2) -> builder.clause( + personView.call(p1), + personView.call(p2), + friendMustView.call(p1, p2) + )); var predicate = Query.of("PositivePatternCall", (builder, p3, p4) -> builder.clause( personView.call(p3), personView.call(p4), @@ -362,15 +357,11 @@ class QueryTest { @QueryEngineTest void negativePatternCallTest(QueryEvaluationHint hint) { - var friendPredicate = Dnf.of("Friend", builder -> { - var p1 = builder.parameter("p1"); - var p2 = builder.parameter("p2"); - builder.clause( - personView.call(p1), - personView.call(p2), - friendMustView.call(p1, p2) - ); - }); + var friendPredicate = Query.of("Friend", (builder, p1, p2) -> builder.clause( + personView.call(p1), + personView.call(p2), + friendMustView.call(p1, p2) + )); var predicate = Query.of("NegativePatternCall", (builder, p3, p4) -> builder.clause( personView.call(p3), personView.call(p4), @@ -451,15 +442,11 @@ class QueryTest { @QueryEngineTest void negativeWithQuantificationTest(QueryEvaluationHint hint) { - var called = Dnf.of("Called", builder -> { - var p1 = builder.parameter("p1"); - var p2 = builder.parameter("p2"); - builder.clause( - personView.call(p1), - personView.call(p2), - friendMustView.call(p1, p2) - ); - }); + var called = Query.of("Called", (builder, p1, p2) -> builder.clause( + personView.call(p1), + personView.call(p2), + friendMustView.call(p1, p2) + )); var predicate = Query.of("Negative", (builder, p1) -> builder.clause( personView.call(p1), not(called.call(p1, Variable.of())) @@ -539,15 +526,11 @@ class QueryTest { @QueryEngineTest void transitivePatternCallTest(QueryEvaluationHint hint) { - var called = Dnf.of("Called", builder -> { - var p1 = builder.parameter("p1"); - var p2 = builder.parameter("p2"); - builder.clause( - personView.call(p1), - personView.call(p2), - friendMustView.call(p1, p2) - ); - }); + var called = Query.of("Called", (builder, p1, p2) -> builder.clause( + personView.call(p1), + personView.call(p2), + friendMustView.call(p1, p2) + )); var predicate = Query.of("Transitive", (builder, p1, p2) -> builder.clause( personView.call(p1), personView.call(p2), -- cgit v1.2.3-54-g00ecf