package ql.tests.evaluator; import org.junit.Test; import ql.semantics.ValueTable; import ql.semantics.values.BoolValue; import ql.semantics.values.UndefValue; import ql.tests.TestHelper; import static org.junit.Assert.*; /** * Created by bore on 24/02/15. */ public class Logical { @Test public void andFalse() { BoolValue v = TestHelper.as(TestHelper.evaluate("true&&false", null), BoolValue.class); assertNotNull(v); assertFalse(v.getValue()); } @Test public void andTrue() { BoolValue v = TestHelper.as(TestHelper.evaluate("true&&true", null), BoolValue.class); assertNotNull(v); assertTrue(v.getValue()); } @Test public void orTrue() { BoolValue v = TestHelper.as(TestHelper.evaluate("true||false", null), BoolValue.class); assertNotNull(v); assertTrue(v.getValue()); } @Test public void orFalse() { BoolValue v = TestHelper.as(TestHelper.evaluate("false||false", null), BoolValue.class); assertNotNull(v); assertFalse(v.getValue()); } @Test public void not() { BoolValue v = TestHelper.as(TestHelper.evaluate("!true", null), BoolValue.class); assertNotNull(v); assertFalse(v.getValue()); } @Test public void undefinedNot() { ValueTable table = new ValueTable(); table.storeValue("hasHouse", new UndefValue()); UndefValue v = TestHelper.as(TestHelper.evaluate("!hasHouse", table), UndefValue.class); assertNotNull(v); } @Test public void undefinedAnd() { ValueTable table = new ValueTable(); table.storeValue("hasHouse", new UndefValue()); UndefValue v = TestHelper.as(TestHelper.evaluate("true&&hasHouse&&false", table), UndefValue.class); assertNotNull(v); } @Test public void undefinedOr() { ValueTable table = new ValueTable(); table.storeValue("hasHouse", new UndefValue()); UndefValue v = TestHelper.as(TestHelper.evaluate("true||hasHouse||false", table), UndefValue.class); assertNotNull(v); } }