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