Пример #1
0
        protected void AssertExpressionValue <T>(string code, T expected)
        {
            ExprNode expr = this.AssertExpression(code);

            Assert.That(ConstantExpressionEvaluator.TryEvaluateAs(expr, out T result));
            Assert.That(result, Is.Not.Null);
            Assert.That(result, Is.EqualTo(expected).Within(1e-10));
        }
Пример #2
0
        protected IfStatNode AssertIfStatement(string src, object condValue, int thenStatementCount = 1, int?elseStatementCount = null)
        {
            IfStatNode node = this.GenerateAST(src).As <IfStatNode>();

            Assert.That(node, Is.Not.Null);
            this.AssertChildrenParentProperties(node);
            Assert.That(ConstantExpressionEvaluator.Evaluate(node.Condition), Is.EqualTo(condValue));
            Assert.That(node.ThenStat.Children, Has.Exactly(thenStatementCount).Items);
            if (elseStatementCount is { })
Пример #3
0
        protected void AssertLiteralSuffix(string code, string suffix, object value, Type type)
        {
            LitExprNode literal = this.GenerateAST(code).As <LitExprNode>();

            Assert.That(literal, Is.Not.Null);
            Assert.That(literal.Value?.GetType(), Is.EqualTo(type));
            Assert.That(literal.Suffix, Is.EqualTo(suffix));
            Assert.That(ConstantExpressionEvaluator.Evaluate(literal), Is.EqualTo(value).Within(1e-10));
        }
Пример #4
0
        protected void AssertEvaluationException(string code)
        {
            ExprNode expr = this.AssertExpression(code);

            Assert.That(() => ConstantExpressionEvaluator.TryEvaluateAs(expr, out object result), Throws.InstanceOf <EvaluationException>());
        }