diff --git a/src/test/java/caosdb/server/query/TestCQL.java b/src/test/java/caosdb/server/query/TestCQL.java index cae8b26175ebd0d0fceca0753e2bb5629203dbf8..d5a939577b274f4a01355be0a8a8fd1b2a948756 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()); + } }