From 71f1c74b13aed7c0e8d5e1cb6897cf32f21c697f Mon Sep 17 00:00:00 2001
From: Timm Fitschen <t.fitschen@indiscale.com>
Date: Tue, 26 Nov 2019 21:10:29 +0100
Subject: [PATCH] TST: query parser tests (backref like pattern)

---
 .../java/caosdb/server/query/TestCQL.java     | 24 +++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/src/test/java/caosdb/server/query/TestCQL.java b/src/test/java/caosdb/server/query/TestCQL.java
index cae8b261..d5a93957 100644
--- a/src/test/java/caosdb/server/query/TestCQL.java
+++ b/src/test/java/caosdb/server/query/TestCQL.java
@@ -230,6 +230,8 @@ public class TestCQL {
   String filepath_pat03 = "/foo\\\\\\\\*/"; // -> \\\\* (4)
   String filepath_pat04 = "/foo**/";
 
+  String referenceByLikePattern = "FIND ENTITY WHICH IS REFERENCED BY *name*";
+
   @Test
   public void testQuery1()
       throws InterruptedException, SQLException, ConnectionException, QueryException {
@@ -6154,4 +6156,26 @@ public class TestCQL {
     assertTrue(StoredAt.requiresPatternMatching(filepath_pat03));
     assertTrue(StoredAt.requiresPatternMatching(filepath_pat04));
   }
+
+  /** String referenceByLikePattern = "FIND ENTITY WHICH IS REFERENCED BY *name*"; */
+  @Test
+  public void testReferencedByLike() {
+    CQLLexer lexer;
+    lexer = new CQLLexer(CharStreams.fromString(this.referenceByLikePattern));
+    final CommonTokenStream tokens = new CommonTokenStream(lexer);
+
+    final CQLParser parser = new CQLParser(tokens);
+    final CqContext sfq = parser.cq();
+
+    assertEquals(Query.Role.ENTITY, sfq.r);
+    assertNotNull(sfq.filter);
+    assertEquals(Backreference.class.getName(), sfq.filter.getClass().getName());
+    final EntityFilterInterface f = sfq.filter;
+
+    assertNotNull(f);
+    assertEquals("@(%name%,null)", f.toString());
+
+    assertTrue(f instanceof Backreference);
+    assertEquals("%name%", ((Backreference) f).getEntity());
+  }
 }
-- 
GitLab