/** Set the expression for the subscription. */ public void setExpression(String expression) { this.expression = expression; this.expr = Parser.parseDataExpr(expression); }
private DataExpr parse(String expr) { DataExpr de = Parser.parseDataExpr(expr); Assertions.assertEquals(expr, de.toString()); return de; }
@Test public void mismatchedClosingParen() { Assertions.assertThrows(IllegalArgumentException.class, () -> Parser.parseDataExpr("key,(,key,),),:in,:sum")); }
@Test public void mismatchedOpenParen() { Assertions.assertThrows(IllegalArgumentException.class, () -> Parser.parseDataExpr("key,(,key,(,),:in,:sum")); }
@Test public void nestedInClauses() { Set<String> values = new TreeSet<>(); values.add("key"); values.add("("); values.add("a"); values.add("b"); values.add(")"); values.add(":in"); DataExpr expected = new DataExpr.Sum(new Query.In("key", values)); DataExpr actual = Parser.parseDataExpr("key,(,key,(,a,b,),:in,),:in,:sum"); Assertions.assertEquals(expected, actual); }
@Test public void multiNestedInClauses() { Set<String> values = new TreeSet<>( Arrays.asList("key,(,a,(,b,(,c,),),(,),),:in".split(","))); DataExpr expected = new DataExpr.Sum(new Query.In("key", values)); DataExpr actual = Parser.parseDataExpr("key,(,key,(,a,(,b,(,c,),),(,),),:in,),:in,:sum"); Assertions.assertEquals(expected, actual); }