public void ModulusTwoIntegers() { ModulusExpression expr = new ModulusExpression(new ConstantExpression(6), new ConstantExpression(2)); Assert.AreEqual(0, expr.Evaluate(null)); Assert.AreSame(TypeInfo.Int, expr.TypeInfo); }
public void TestEvaluate() { var expression = new ModulusExpression( Mock.Of <IExpression>(e => e.Evaluate(It.IsAny <IDictionary <string, object> >()) == (object)5), Mock.Of <IExpression>(e => e.Evaluate(It.IsAny <IDictionary <string, object> >()) == (object)2), new Context(ExpressiveOptions.None)); Assert.AreEqual(1, expression.Evaluate(null)); }
public void EvaluateWithTwoNormalOperands() { var left = new ConstantExpression(1); var right = new ConstantExpression(2); var expression = new ModulusExpression(left, right); Assert.AreEqual(1, expression.Evaluate()); }
public void EvaluateWithOneModulusExpression() { var left = new ConstantExpression(1); var leftTwo = new ConstantExpression(2); var rightTwo = new ConstantExpression(4); var right = new ModulusExpression(leftTwo, rightTwo); var expression = new ModulusExpression(left, right); Assert.AreEqual(1, expression.Evaluate()); }
private IExpression ParseBinaryExpression(int level) { if (level >= binaryoperators.Length) { return(this.ParseTerm()); } IExpression expr = this.ParseBinaryExpression(level + 1); if (expr == null) { return(null); } Token token; for (token = this.NextToken(); token != null && this.IsBinaryOperator(level, token); token = this.NextToken()) { if (token.Value == "+") { expr = new AddExpression(expr, this.ParseBinaryExpression(level + 1)); } else if (token.Value == "-") { expr = new SubtractExpression(expr, this.ParseBinaryExpression(level + 1)); } else if (token.Value == "*") { expr = new MultiplyExpression(expr, this.ParseBinaryExpression(level + 1)); } else if (token.Value == "/") { expr = new DivideExpression(expr, this.ParseBinaryExpression(level + 1)); } else if (token.Value == "%") { expr = new ModulusExpression(expr, this.ParseBinaryExpression(level + 1)); } else if (token.Value == "==") { expr = new EqualExpression(expr, this.ParseBinaryExpression(level + 1)); } } if (token != null) { this.PushToken(token); } return(expr); }
public void ModulusTwoDoubles() { ModulusExpression expr = new ModulusExpression(new ConstantExpression(2.5), new ConstantExpression(3.7)); try { expr.Evaluate(null); Assert.Fail(); } catch (Exception ex) { Assert.IsInstanceOfType(ex, typeof(InvalidOperationException)); } }