/** * Parse the supplied expression and then create a string representation of the resultant AST, it should be the same * as the original expression. * * @param expression the expression to parse *and* the expected value of the string form of the resultant AST */ public void parseCheck(String expression) { parseCheck(expression, expression); }
@Test public void testReferences01() { parseCheck("@foo"); parseCheck("@'foo.bar'"); parseCheck("@\"foo.bar.goo\"","@'foo.bar.goo'"); }
@Test public void testRelOperatorsMatches01() { parseCheck("'5.0067' matches '^-?\\d+(\\.\\d{2})?$'", "('5.0067' matches '^-?\\d+(\\.\\d{2})?$')"); }// false
@Test public void testMixedOperators01() { parseCheck("true and 5>3", "(true and (5 > 3))"); }
@Test public void testProperties02() { parseCheck("placeofbirth.CitY"); }
@Test public void testFunctions01() { parseCheck("#fn(1,2,3)"); }
@Test public void testTernaryOperator01() { parseCheck("1>2?3:4","(1 > 2) ? 3 : 4"); }
@Test public void testLiteralString01() { parseCheck("'hello'"); }
@Test public void testBooleanOperatorsOr04() { parseCheck("true or false", "(true or false)"); }
@Test public void testRelOperatorsGT01() { parseCheck("3>6", "(3 > 6)"); }
@Test public void testRelOperatorsLE01() { parseCheck("3<=6", "(3 <= 6)"); }
@Test public void testRelOperatorsMatches02() { parseCheck("'5.00' matches '^-?\\d+(\\.\\d{2})?$'", "('5.00' matches '^-?\\d+(\\.\\d{2})?$')"); }// true
@Test public void testMathOperatorsAdd02() { parseCheck("'a'+'b'", "('a' + 'b')"); }
@Test public void testInlineListCreation02() { parseCheck("{'abc','xyz'}", "{'abc','xyz'}"); }
@Test public void testInlineMapCreation01() { parseCheck("{'key1':'Value 1','today':DateTime.Today}"); }
@Test public void testMethods03() { parseCheck("age.doubleItAndAdd(12)"); }
@Test public void testVariables01() { parseCheck("#foo"); }
@Test public void testLiteralString02() { parseCheck("'joe bloggs'"); }
@Test public void testBooleanOperatorsOr02() { parseCheck("false or true", "(false or true)"); }
@Test public void testReferences03() { parseCheck("@$$foo"); }