Exemplo n.º 1
0
        public void TestDefinition()
        {
            var def = new ArrayPopFunction();

            Assert.That(def.Name.Name, Is.EqualTo("array_pop"));
            Assert.That(def.Parameters.Count, Is.EqualTo(1));
            Assert.That(def.Parameters.ElementAt(0).Name, Is.EqualTo("array"));
        }
Exemplo n.º 2
0
        private ExpressionBase Evaluate(string input, InterpreterScope scope, string expectedError = null)
        {
            var funcDef = new ArrayPopFunction();

            var expression = ExpressionBase.Parse(new PositionalTokenizer(Tokenizer.CreateTokenizer(input)));

            Assert.That(expression, Is.InstanceOf <FunctionCallExpression>());
            var funcCall = (FunctionCallExpression)expression;

            ExpressionBase error;
            var            parameterScope = funcCall.GetParameters(funcDef, scope, out error);

            if (expectedError == null)
            {
                Assert.That(error, Is.Null);

                ExpressionBase result;
                Assert.That(funcDef.Evaluate(parameterScope, out result), Is.True);
                return(result);
            }
            else
            {
                if (error == null)
                {
                    Assert.That(funcDef.Evaluate(parameterScope, out error), Is.False);
                }

                Assert.That(error, Is.InstanceOf <ParseErrorExpression>());

                var parseError = (ParseErrorExpression)error;
                while (parseError.InnerError != null)
                {
                    parseError = parseError.InnerError;
                }
                Assert.That(parseError.Message, Is.EqualTo(expectedError));

                return(null);
            }
        }