From 473cf73752e5c3b70d35f7dff32e735419ba85c1 Mon Sep 17 00:00:00 2001 From: OszkarSemerath Date: Mon, 25 Oct 2021 11:52:43 +0200 Subject: Query transaction testing first example --- .../store/query/test/QueryTransactionTest.java | 58 ++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 store/src/test/java/tools/refinery/store/query/test/QueryTransactionTest.java (limited to 'store') diff --git a/store/src/test/java/tools/refinery/store/query/test/QueryTransactionTest.java b/store/src/test/java/tools/refinery/store/query/test/QueryTransactionTest.java new file mode 100644 index 00000000..e72186b9 --- /dev/null +++ b/store/src/test/java/tools/refinery/store/query/test/QueryTransactionTest.java @@ -0,0 +1,58 @@ +package tools.refinery.store.query.test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Set; + +import org.junit.jupiter.api.Test; + +import tools.refinery.store.model.Tuple; +import tools.refinery.store.model.representation.Relation; +import tools.refinery.store.query.QueriableModel; +import tools.refinery.store.query.QueriableModelStore; +import tools.refinery.store.query.QueriableModelStoreImpl; +import tools.refinery.store.query.building.DNFAnd; +import tools.refinery.store.query.building.DNFPredicate; +import tools.refinery.store.query.building.RelationAtom; +import tools.refinery.store.query.building.Variable; +import tools.refinery.store.query.view.KeyOnlyRelationView; +import tools.refinery.store.query.view.RelationView; + +class QueryTransactionTest { + @Test + void flushTest() { + Relation person = new Relation<>("Person", 1, false); + Relation asset = new Relation<>("Asset", 1, false); + RelationView persionView = new KeyOnlyRelationView(person); + + List parameters = Arrays.asList(new Variable("p1")); + RelationAtom personRelationAtom = new RelationAtom(persionView, parameters); + DNFAnd clause = new DNFAnd(Collections.emptySet(), Arrays.asList(personRelationAtom)); + DNFPredicate predicate = new DNFPredicate("TypeConstraint", parameters, Arrays.asList(clause)); + + QueriableModelStore store = new QueriableModelStoreImpl(Set.of(person, asset), Set.of(persionView), + Set.of(predicate)); + QueriableModel model = store.createModel(); + + assertEquals(0, model.countResults(predicate)); + + model.put(person, Tuple.of(0), true); + model.put(person, Tuple.of(1), true); + model.put(asset, Tuple.of(1), true); + model.put(asset, Tuple.of(2), true); + + assertEquals(0, model.countResults(predicate)); + + model.flushChanges(); + assertEquals(2, model.countResults(predicate)); + + model.put(person, Tuple.of(4), true); + assertEquals(2, model.countResults(predicate)); + + model.flushChanges(); + assertEquals(3, model.countResults(predicate)); + } +} -- cgit v1.2.3-54-g00ecf