Esempio n. 1
0
        public void TestDefinition()
        {
            var def = new ArrayPushFunction();

            Assert.That(def.Name.Name, Is.EqualTo("array_push"));
            Assert.That(def.Parameters.Count, Is.EqualTo(2));
            Assert.That(def.Parameters.ElementAt(0).Name, Is.EqualTo("array"));
            Assert.That(def.Parameters.ElementAt(1).Name, Is.EqualTo("value"));
        }
Esempio n. 2
0
        private void Evaluate(string input, InterpreterScope scope, string expectedError = null)
        {
            var funcDef = new ArrayPushFunction();

            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);
                Assert.That(result, Is.Null);
            }
            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));
            }
        }