From 30ce67abf0a30c81a08da5fd128b4a23cbff3fef Mon Sep 17 00:00:00 2001 From: Kristóf Marussy Date: Sat, 15 Jul 2023 00:54:03 +0200 Subject: fix: ConstantLiteral to PConstraint --- .../query/viatra/internal/pquery/Dnf2PQuery.java | 2 +- .../refinery/store/query/viatra/QueryTest.java | 38 ++++++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) (limited to 'subprojects') diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/Dnf2PQuery.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/Dnf2PQuery.java index 8110a98f..15c4e0e1 100644 --- a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/Dnf2PQuery.java +++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/Dnf2PQuery.java @@ -190,7 +190,7 @@ public class Dnf2PQuery { private void translateConstantLiteral(ConstantLiteral constantLiteral, PBody body) { var variable = body.getOrCreateVariableByName(constantLiteral.getVariable().getUniqueName()); - new ConstantValue(body, variable, constantLiteral.getNodeId()); + new ConstantValue(body, variable, tools.refinery.store.tuple.Tuple.of(constantLiteral.getNodeId())); } private void translateAssignLiteral(AssignLiteral assignLiteral, PBody body) { 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 8ecbe11a..8e945731 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 @@ -109,6 +109,44 @@ class QueryTest { ), predicateResultSet); } + @QueryEngineTest + void isConstantTest(QueryEvaluationHint hint) { + var predicate = Query.of("RelationConstraint", (builder, p1, p2) -> builder.clause( + personView.call(p1), + p1.isConstant(1), + friendMustView.call(p1, p2) + )); + + var store = ModelStore.builder() + .symbols(person, friend) + .with(ViatraModelQueryAdapter.builder() + .defaultHint(hint) + .queries(predicate)) + .build(); + + var model = store.createEmptyModel(); + var personInterpretation = model.getInterpretation(person); + var friendInterpretation = model.getInterpretation(friend); + var queryEngine = model.getAdapter(ModelQueryAdapter.class); + var predicateResultSet = queryEngine.getResultSet(predicate); + + personInterpretation.put(Tuple.of(0), true); + personInterpretation.put(Tuple.of(1), true); + personInterpretation.put(Tuple.of(2), true); + + friendInterpretation.put(Tuple.of(0, 1), TruthValue.TRUE); + friendInterpretation.put(Tuple.of(1, 0), TruthValue.TRUE); + friendInterpretation.put(Tuple.of(1, 2), TruthValue.TRUE); + + queryEngine.flushChanges(); + assertResults(Map.of( + Tuple.of(0, 1), false, + Tuple.of(1, 0), true, + Tuple.of(1, 2), true, + Tuple.of(2, 1), false + ), predicateResultSet); + } + @QueryEngineTest void existTest(QueryEvaluationHint hint) { var predicate = Query.of("Exists", (builder, p1) -> builder.clause((p2) -> List.of( -- cgit v1.2.3-70-g09d2