diff --git a/src/test/java/caosdb/server/query/TestCQL.java b/src/test/java/caosdb/server/query/TestCQL.java index 345d93c0669dd152b3bbcfedf6a77942bdb53747..829e148a45223e560f4d3236f51d6ec4ad0bde4c 100644 --- a/src/test/java/caosdb/server/query/TestCQL.java +++ b/src/test/java/caosdb/server/query/TestCQL.java @@ -169,7 +169,9 @@ public class TestCQL { String query33 = "FIND ename WITH a date IN 2015"; String query33a = "FIND ename WITH a date IN \"2015\""; String query34 = "FIND ename WITH a date NOT IN 2015"; + String query34a = "FIND ename WITH a date NOT IN \"2015\""; String query35 = "FIND ename WITH a date IN 2015-01-01"; + String query35a = "FIND ename WITH a date IN \"2015-01-01\""; String query36 = "FIND ename.pname LIKE \"wil*card\""; String query37 = "FIND ename.pname LIKE wil*card"; String query38 = "FIND ename WHICH HAS A pname LIKE \"wil*\""; @@ -4750,6 +4752,46 @@ public class TestCQL { assertEquals("2015", pov.getValue()); } + /** String query34a = "FIND ename WITH a date NOT IN \"2015\""; */ + @Test + public void testQuery34a() { + CQLLexer lexer; + lexer = new CQLLexer(CharStreams.fromString(this.query34a)); + 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("FIND", sfq.getChild(0).getText()); + assertEquals("ename", sfq.getChild(1).getText()); + assertEquals("WITHadateNOTIN\"2015\"", sfq.getChild(2).getText()); + assertEquals("ename", sfq.e.toString()); + assertNull(sfq.r); + assertEquals("POV", sfq.filter.getClass().getSimpleName()); + + final ParseTree whichclause = sfq.getChild(2); + // 2 children: WHICH, POV + assertEquals(2, whichclause.getChildCount()); + assertEquals("WITHa", whichclause.getChild(0).getText()); + assertEquals("dateNOTIN\"2015\"", whichclause.getChild(1).getText()); + + final ParseTree transactionFilter = whichclause.getChild(1).getChild(0); + assertEquals(4, transactionFilter.getChildCount()); + assertEquals("date", transactionFilter.getChild(0).getText()); + assertEquals("NOT", transactionFilter.getChild(1).getText()); + assertEquals("IN", transactionFilter.getChild(2).getText()); + assertEquals("\"2015\"", transactionFilter.getChild(3).getText()); + + assertTrue(sfq.filter instanceof POV); + final POV pov = (POV) sfq.filter; + assertEquals("!(", pov.getOperator()); + assertEquals("2015", pov.getValue()); + } + /** String query35 = "FIND ename WITH a date IN 2015-01-01"; */ @Test public void testQuery35() { @@ -4789,6 +4831,45 @@ public class TestCQL { assertEquals("2015-01-01", pov.getValue()); } + /** String query35a = "FIND ename WITH a date IN \"2015-01-01\""; */ + @Test + public void testQuery35a() { + CQLLexer lexer; + lexer = new CQLLexer(CharStreams.fromString(this.query35a)); + 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("FIND", sfq.getChild(0).getText()); + assertEquals("ename", sfq.getChild(1).getText()); + assertEquals("WITHadateIN\"2015-01-01\"", sfq.getChild(2).getText()); + assertEquals("ename", sfq.e.toString()); + assertNull(sfq.r); + assertEquals("POV", sfq.filter.getClass().getSimpleName()); + + final ParseTree whichclause = sfq.getChild(2); + // 2 children: WHICH, POV + assertEquals(2, whichclause.getChildCount()); + assertEquals("WITHa", whichclause.getChild(0).getText()); + assertEquals("dateIN\"2015-01-01\"", whichclause.getChild(1).getText()); + + final ParseTree transactionFilter = whichclause.getChild(1).getChild(0); + assertEquals(3, transactionFilter.getChildCount()); + assertEquals("date", transactionFilter.getChild(0).getText()); + assertEquals("IN", transactionFilter.getChild(1).getText()); + assertEquals("\"2015-01-01\"", transactionFilter.getChild(2).getText()); + + assertTrue(sfq.filter instanceof POV); + final POV pov = (POV) sfq.filter; + assertEquals("(", pov.getOperator()); + assertEquals("2015-01-01", pov.getValue()); + } + /** String query36 = "FIND ename.pname LIKE \"wil*card\""; */ @Test public void testQuery36() {