package org.uva.ql.test.typechecker; import org.junit.Assert; import org.junit.Test; import org.uva.ql.ast.CodePosition; import org.uva.ql.ast.expression.binary.Addition; import org.uva.ql.ast.expression.binary.And; import org.uva.ql.ast.expression.binary.Divide; import org.uva.ql.ast.expression.binary.Equal; import org.uva.ql.ast.expression.binary.Greater; import org.uva.ql.ast.expression.binary.GreaterEqual; import org.uva.ql.ast.expression.binary.Less; import org.uva.ql.ast.expression.binary.LessEqual; import org.uva.ql.ast.expression.binary.Multiply; import org.uva.ql.ast.expression.binary.NotEqual; import org.uva.ql.ast.expression.binary.Or; import org.uva.ql.ast.expression.binary.Substraction; import org.uva.ql.ast.expression.literal.BoolLiteral; import org.uva.ql.ast.expression.literal.Literal; import org.uva.ql.typechecker.TypeChecker; public class BoolTest { private final TypeChecker TYPECHECKER = new TypeChecker(); private final CodePosition POS = new CodePosition(0, 0); private final Literal LEFT_EXPR = new BoolLiteral(true, POS); private final Literal RIGHT_EXPR = new BoolLiteral(false, POS); @Test public void testBoolAdditionBool() { Addition add = new Addition(LEFT_EXPR, RIGHT_EXPR, POS); Assert.assertEquals(TYPECHECKER.visit(add), false); } @Test public void testBoolSubstractionBool() { Substraction substraction = new Substraction(LEFT_EXPR, RIGHT_EXPR, POS); Assert.assertEquals(TYPECHECKER.visit(substraction), false); } @Test public void testBoolMultiplyBool() { Multiply multiply = new Multiply(LEFT_EXPR, RIGHT_EXPR, POS); Assert.assertEquals(TYPECHECKER.visit(multiply), false); } @Test public void testBoolDivideBool() { Divide divide = new Divide(LEFT_EXPR, RIGHT_EXPR, POS); Assert.assertEquals(TYPECHECKER.visit(divide), false); } @Test public void testBoolGreaterBool() { GreaterEqual greaterEqual = new GreaterEqual(LEFT_EXPR, RIGHT_EXPR, POS); Assert.assertEquals(TYPECHECKER.visit(greaterEqual), false); } @Test public void testBoolGreaterEqualBool() { Greater greater = new Greater(LEFT_EXPR, RIGHT_EXPR, POS); Assert.assertEquals(TYPECHECKER.visit(greater), false); } @Test public void testBoolLessBool() { Less less = new Less(LEFT_EXPR, RIGHT_EXPR, POS); Assert.assertEquals(TYPECHECKER.visit(less), false); } @Test public void testBoolLessEqualBool() { LessEqual lessEqual = new LessEqual(LEFT_EXPR, RIGHT_EXPR, POS); Assert.assertEquals(TYPECHECKER.visit(lessEqual), false); } @Test public void testBoolEqualBool() { Equal equal = new Equal(LEFT_EXPR, RIGHT_EXPR, POS); Assert.assertEquals(TYPECHECKER.visit(equal), true); } @Test public void testBoolNotEqualBool() { NotEqual notEqual = new NotEqual(LEFT_EXPR, RIGHT_EXPR, POS); Assert.assertEquals(TYPECHECKER.visit(notEqual), true); } @Test public void testBoolOrBool() { Or or = new Or(LEFT_EXPR, RIGHT_EXPR, POS); Assert.assertEquals(TYPECHECKER.visit(or), true); } @Test public void testBoolAndBool() { And and = new And(LEFT_EXPR, RIGHT_EXPR, POS); Assert.assertEquals(TYPECHECKER.visit(and), true); } }