package ql.tests.ast; import org.junit.Test; import ql.ast.expression.*; import ql.tests.TestHelper; import ql.util.ParserHelper; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; /** * Created by Nik on 10-2-15. */ public class ArithmeticExpr { @Test public void addExpr() { Add a = TestHelper.as(ParserHelper.ParseExpression("x+y"), Add.class); assertNotNull(a); } @Test public void addExprThreeArgs() { Add a = TestHelper.as(ParserHelper.ParseExpression("x+y+z"), Add.class); assertNotNull(a); assertTrue(a.getLeft() instanceof Add); } @Test public void addExprNestedLeft() { Add a = TestHelper.as(ParserHelper.ParseExpression("(x+y)+z"), Add.class); assertNotNull(a); assertTrue(a.getLeft() instanceof Add); } @Test public void addExprNestedRight() { Add a = TestHelper.as(ParserHelper.ParseExpression("x+(y+z)"), Add.class); assertNotNull(a); assertTrue(a.getRight() instanceof Add); } @Test public void subExpr() { Sub s = TestHelper.as(ParserHelper.ParseExpression("x-y"), Sub.class); assertNotNull(s); } @Test public void subExprThreeArgs() { Sub s = TestHelper.as(ParserHelper.ParseExpression("x-y-z"), Sub.class); assertNotNull(s); assertTrue(s.getLeft() instanceof Sub); } @Test public void subExprNestedLeft() { Sub s = TestHelper.as(ParserHelper.ParseExpression("(x-y)-z"), Sub.class); assertNotNull(s); assertTrue(s.getLeft() instanceof Sub); } @Test public void subExprNestedRight() { Sub s = TestHelper.as(ParserHelper.ParseExpression("x-(y-z)"), Sub.class); assertNotNull(s); assertTrue(s.getRight() instanceof Sub); } @Test public void mulExpr() { Mul m = TestHelper.as(ParserHelper.ParseExpression("x*y"), Mul.class); assertNotNull(m); } @Test public void mulExprThreeArgs() { Mul m = TestHelper.as(ParserHelper.ParseExpression("x*y*z"), Mul.class); assertNotNull(m); assertTrue(m.getLeft() instanceof Mul); } @Test public void mulExprNestedLeft() { Mul m = TestHelper.as(ParserHelper.ParseExpression("(x*y)*z"), Mul.class); assertNotNull(m); assertTrue(m.getLeft() instanceof Mul); } @Test public void mulExprNestedRight() { Mul m = TestHelper.as(ParserHelper.ParseExpression("x*(y*z)"), Mul.class); assertNotNull(m); assertTrue(m.getRight() instanceof Mul); } @Test public void divExpr() { Div d = TestHelper.as(ParserHelper.ParseExpression("x/y"), Div.class); assertNotNull(d); } @Test public void divExprThreeArgs() { Div d = TestHelper.as(ParserHelper.ParseExpression("x/y/z"), Div.class); assertNotNull(d); assertTrue(d.getLeft() instanceof Div); } @Test public void divExprNestedLeft() { Div d = TestHelper.as(ParserHelper.ParseExpression("(x/y)/z"), Div.class); assertNotNull(d); assertTrue(d.getLeft() instanceof Div); } @Test public void divExprNestedRight() { Div d = TestHelper.as(ParserHelper.ParseExpression("x/(y/z)"), Div.class); assertNotNull(d); assertTrue(d.getRight() instanceof Div); } @Test public void negExpr() { Neg n = TestHelper.as(ParserHelper.ParseExpression("-x"), Neg.class); assertNotNull(n); } @Test public void negExprNested() { Neg n = TestHelper.as(ParserHelper.ParseExpression("--x"), Neg.class); assertNotNull(n); assertTrue(n.getOperand() instanceof Neg); } @Test public void posExpr() { Pos p = TestHelper.as(ParserHelper.ParseExpression("+x"), Pos.class); assertNotNull(p); } @Test public void posExprNested() { Pos p = TestHelper.as(ParserHelper.ParseExpression("++x"), Pos.class); assertNotNull(p); assertTrue(p.getOperand() instanceof Pos); } @Test public void addAndSub() { Sub a = TestHelper.as(ParserHelper.ParseExpression("x+y-z"), Sub.class); assertNotNull(a); assertTrue(a.getLeft() instanceof Add); } @Test public void addAndMul() { Add a = TestHelper.as(ParserHelper.ParseExpression("x+y*z"), Add.class); assertNotNull(a); assertTrue(a.getRight() instanceof Mul); } @Test public void addInParenAndMul() { Mul a = TestHelper.as(ParserHelper.ParseExpression("(x+y)*z"), Mul.class); assertNotNull(a); assertTrue(a.getLeft() instanceof Add); } @Test public void divAndMul() { Mul a = TestHelper.as(ParserHelper.ParseExpression("x/y*z"), Mul.class); assertNotNull(a); assertTrue(a.getLeft() instanceof Div); } @Test public void divAndMulInParen() { Div a = TestHelper.as(ParserHelper.ParseExpression("x/(y*z)"), Div.class); assertNotNull(a); assertTrue(a.getRight() instanceof Mul); } @Test public void unaryAndBinaryPlus() { Add a = TestHelper.as(ParserHelper.ParseExpression("+x+y"), Add.class); assertNotNull(a); assertTrue(a.getLeft() instanceof Pos); } @Test public void NegAndMul() { Mul a = TestHelper.as(ParserHelper.ParseExpression("x*-y"), Mul.class); assertNotNull(a); assertTrue(a.getRight() instanceof Neg); } }