public void CheckConjunctionDoesNothing() { var yes = new BooleanLiteral (true); var no = new BooleanLiteral (false); var conjunction = new LogicalConjunction (yes, no); var result = conjunction.Walk (new RefChecker (), new [] { "Foobar" }); Assert.AreEqual (1, result.Length); Assert.Contains ("Foobar", result); }
public void SerializeLogicalConjunction() { var conjunction = new LogicalConjunction( new BooleanLiteral(true), new BooleanLiteral(false) ); var sql = conjunction.Walk (new Sqlizer (foobarTable())); Assert.AreEqual ("(TRUE AND FALSE)", sql); }
public void ConjunctionErrorsOnNumbers() { var numberVal = new NumberLiteral (42); var boolVal = new BooleanLiteral (true); var left = new LogicalConjunction (numberVal, boolVal); var right = new LogicalConjunction (boolVal, numberVal); var leftEx = Assert.Throws<TypeCheckException>(() => left.Walk (new TypeChecker ())); var rightEx = Assert.Throws<TypeCheckException>(() => right.Walk (new TypeChecker ())); Assert.That (INCOMPATIBLE_RE.IsMatch (leftEx.Message)); Assert.That (INCOMPATIBLE_RE.IsMatch (rightEx.Message)); }
public void ConjunctionErrorsOnStrings() { var stringVal = new StringLiteral ("foobar"); var boolVal = new BooleanLiteral (true); var left = new LogicalConjunction (stringVal, boolVal); var right = new LogicalConjunction (boolVal, stringVal); var leftEx = Assert.Throws<TypeCheckException>(() => left.Walk (new TypeChecker ())); var rightEx = Assert.Throws<TypeCheckException>(() => right.Walk (new TypeChecker ())); Assert.That (INCOMPATIBLE_RE.IsMatch (leftEx.Message)); Assert.That (INCOMPATIBLE_RE.IsMatch (rightEx.Message)); }
public void CheckLogicalConjunction() { var lhs = new BinaryOperation ("=", new NumberLiteral (1), new NumberLiteral (2)); var rhs = new BinaryOperation ("<", new NumberLiteral (3), new NumberLiteral (4)); var conjunction = new LogicalConjunction (lhs, rhs); var type = conjunction.Walk (new TypeChecker ()); Assert.AreEqual (SpecType.Boolean, type.Type); }