@Test public void testStrings() throws ParseError { assertEquals(parser.parseExpr("\"'a'\"").getClass(), StringPrimitive.class); assertEquals(parser.parseExpr("\"TRUE\"").getClass(), StringPrimitive.class); assertEquals(parser.parseExpr("\"1+4\"").getClass(), StringPrimitive.class); assertEquals( parser.parseExpr("\"Did you sell a house in 2010?\"").getClass(), StringPrimitive.class); }
@Test public void testIds() throws ParseError { assertEquals(parser.parseExpr("a").getClass(), Identifier.class); assertEquals(parser.parseExpr("abc").getClass(), Identifier.class); assertEquals(parser.parseExpr("ABC").getClass(), Identifier.class); assertEquals(parser.parseExpr("ABCDEF").getClass(), Identifier.class); assertEquals(parser.parseExpr("abc2323").getClass(), Identifier.class); assertEquals(parser.parseExpr("a2bc232").getClass(), Identifier.class); assertEquals(parser.parseExpr("a2bc232aa").getClass(), Identifier.class); }
@Test public void testRels() throws ParseError { assertEquals(parser.parseExpr("a < b").getClass(), LT.class); assertEquals(parser.parseExpr("a < b + c").getClass(), LT.class); assertEquals(parser.parseExpr("a < (b * c)").getClass(), LT.class); assertEquals(parser.parseExpr("(a * b) < c").getClass(), LT.class); assertEquals(parser.parseExpr("(a <= b)").getClass(), LEq.class); assertEquals(parser.parseExpr("a + b > c").getClass(), GT.class); assertEquals(parser.parseExpr("a > b + c").getClass(), GT.class); }
@Test public void testSimpleQlForm2() throws ParseError, IOException { final String qlText = readResource("simpleQlForm2.ql"); Form form = parser.parseForm(qlText); assertNotNull(form); assertAST( form, Form.class, CompoundStatement.class, Question.class, IfStatement.class, Identifier.class, CompoundStatement.class, Question.class, Question.class, IfStatement.class, GT.class, Sub.class, Identifier.class, Identifier.class, IntLiteral.class, CompoundStatement.class, Question.class); }
@Test public void testAdds() throws ParseError { assertEquals(parser.parseExpr("3 + 2").getClass(), Add.class); assertEquals(parser.parseExpr("(3 + 2)").getClass(), Add.class); assertEquals(parser.parseExpr("a + b").getClass(), Add.class); assertEquals(parser.parseExpr("(a + b)").getClass(), Add.class); assertEquals(parser.parseExpr("a + b + c").getClass(), Add.class); assertEquals(parser.parseExpr("(a + b + c)").getClass(), Add.class); assertEquals(parser.parseExpr("a + (b + c)").getClass(), Add.class); assertEquals(parser.parseExpr("(a + b) + c").getClass(), Add.class); assertEquals(parser.parseExpr("(a + b)").getClass(), Add.class); assertEquals(parser.parseExpr("a + b * c").getClass(), Add.class); assertEquals(parser.parseExpr("a * b + c").getClass(), Add.class); }
@Test public void testBools() throws ParseError { assertEquals(parser.parseExpr("!b").getClass(), Not.class); assertEquals(parser.parseExpr("a && b").getClass(), And.class); assertEquals(parser.parseExpr("a > b && b > c").getClass(), And.class); assertEquals(parser.parseExpr("(a > b) && (b > c)").getClass(), And.class); assertEquals(parser.parseExpr("a||b").getClass(), Or.class); assertEquals(parser.parseExpr("TRUE||FALSE").getClass(), Or.class); assertEquals(parser.parseExpr("TRUE").getClass(), BooleanPrimitive.class); }
@Test public void testNums() throws ParseError { assertEquals(parser.parseExpr("0").getClass(), IntegerPrimitive.class); assertEquals(parser.parseExpr("(0)").getClass(), IntegerPrimitive.class); assertEquals(parser.parseExpr("-1").getClass(), Neg.class); assertEquals(parser.parseExpr("+1").getClass(), Pos.class); assertEquals(parser.parseExpr("(-1)").getClass(), Neg.class); assertEquals(parser.parseExpr("(+1)").getClass(), Pos.class); assertEquals(parser.parseExpr("1223").getClass(), IntegerPrimitive.class); assertEquals(parser.parseExpr("234234234").getClass(), IntegerPrimitive.class); }
@Test public void testMuls() throws ParseError { assertEquals(parser.parseExpr("5 * b").getClass(), Mul.class); assertEquals(parser.parseExpr("a * b").getClass(), Mul.class); assertEquals(parser.parseExpr("a * b * c").getClass(), Mul.class); assertEquals(parser.parseExpr("(a * b * c)").getClass(), Mul.class); assertEquals(parser.parseExpr("a * (b * c)").getClass(), Mul.class); assertEquals(parser.parseExpr("(a * b) * c").getClass(), Mul.class); assertEquals(parser.parseExpr("(a * b)").getClass(), Mul.class); assertEquals(parser.parseExpr("(a + b) * c").getClass(), Mul.class); assertEquals(parser.parseExpr("a * (b + c)").getClass(), Mul.class); }