Esempio n. 1
0
        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>());
        }
Esempio n. 2
0
        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"]);
        }
Esempio n. 3
0
        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));
        }