From d6efccead8ade1f258502bb652e1148881992e8c Mon Sep 17 00:00:00 2001 From: Daniel Hornung <d.hornung@indiscale.com> Date: Mon, 15 Jun 2020 17:04:05 +0200 Subject: [PATCH] TEST: Test for issue #31 (file path is split by query keyword). --- .../java/caosdb/server/query/TestCQL.java | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/test/java/caosdb/server/query/TestCQL.java b/src/test/java/caosdb/server/query/TestCQL.java index 37bb5e59..3869b607 100644 --- a/src/test/java/caosdb/server/query/TestCQL.java +++ b/src/test/java/caosdb/server/query/TestCQL.java @@ -216,6 +216,7 @@ public class TestCQL { String query56b = "FIND RECORD WHICH REFERENCES AN ename2"; String query56c = "FIND RECORD WHICH REFERENCES atom"; String query56d = "FIND RECORD WHICH REFERENCES A tom"; + String queryIssue31 = "FIND FILE WHICH IS STORED AT /data/in0.foo"; // File paths /////////////////////////////////////////////////////////////// String filepath_verb01 = "/foo/"; @@ -6269,4 +6270,29 @@ public class TestCQL { EntityFilterInterface pov = sfq.filter; assertEquals("POV(prop,=,)", pov.toString()); } + + /** String queryIssue31 = "FIND FILE WHICH IS STORED AT /data/in0.foo"; */ + @Test + public void testIssue31() { + CQLLexer lexer; + lexer = new CQLLexer(CharStreams.fromString(this.queryIssue31)); + final CommonTokenStream tokens = new CommonTokenStream(lexer); + + final CQLParser parser = new CQLParser(tokens); + final CqContext sfq = parser.cq(); + + System.out.println(sfq.toStringTree(parser)); + + // 4 children: FIND, role, WHICHCLAUSE, EOF + assertEquals(4, sfq.getChildCount()); + assertEquals("WHICHIS STORED AT/data/in0.foo", sfq.getChild(2).getText()); + assertEquals("FILE", sfq.r.toString()); + assertNull(sfq.e); + assertEquals("StoredAt", sfq.filter.getClass().getSimpleName()); + final ParseTree whichclause = sfq.getChild(2); + final ParseTree transactionFilter = whichclause.getChild(1).getChild(0); + assertEquals("/data/in0.foo", transactionFilter.getChild(1).getText()); + final StoredAt storedAt = (StoredAt) sfq.filter; + assertEquals("SAT(/data/in0.foo)", storedAt.toString()); + } } -- GitLab