public void Execute_NotBoolExpr_ThrowsSyntaxExpression() { var context = new Mock <IContext>(); var expr = new Mock <IExpression>(); var stmt = new Mock <IStatement>(); expr.Setup(e => e.Interpret(It.IsAny <IContext>())) .Returns(new Value(ValueTypes.Int, 12)); var subject = new While(expr.Object, stmt.Object); Assert.That(() => subject.Execute(context.Object), Throws.InstanceOf <SyntaxException>()); }
public void CalculateWhileTest() { var parameters = new ExpressionParameters(); parameters.Variables.Add(new Parameter("x", 0)); var body = new Define(Variable.X, new Add(Variable.X, new Number(2))); var cond = new LessThan(Variable.X, new Number(10)); var @while = new While(body, cond); @while.Execute(parameters); Assert.Equal(10.0, parameters.Variables["x"]); }
public void Execute_FalseExpr_ExecutesZeroTimes() { int wasCalled = 0; var context = new Mock <IContext>(); var expr = new Mock <IExpression>(); var stmt = new Mock <IStatement>(); expr.Setup(e => e.Interpret(It.IsAny <IContext>())) .Returns(new Value(ValueTypes.Bool, false)); stmt.Setup(s => s.Execute(It.IsAny <IContext>())).Callback(() => wasCalled++); var subject = new While(expr.Object, stmt.Object); subject.Execute(context.Object); Assert.That(wasCalled, Is.EqualTo(0)); }