public void NumericalConstant(string text, int result)
        {
            ProcessingUnitMock  pu         = new ProcessingUnitMock();
            NumericalExpression expression = Interpreter.AsNumericalExpression(text, pu);

            Assert.IsTrue(expression.IsValid());
            Assert.IsEqual(expression.Result(pu), result);
        }
        public void NumericalVariables()
        {
            ProcessingUnitMock pu = new ProcessingUnitMock();

            pu.IntLookup.Add("intVar", 5);
            NumericalExpression expressionA = Interpreter.AsNumericalExpression("intVar", pu);

            Assert.IsTrue(expressionA.IsValid());
            Assert.IsEqual(expressionA.Result(pu), 5);
            NumericalExpression expressionB = Interpreter.AsNumericalExpression("invalidVar", pu);

            Assert.IsFalse(expressionB.IsValid());
        }
        /// <summary>
        /// Calculates the result of this boolean expression
        /// </summary>
        public override bool Result(IProcessingUnit pu)
        {
            switch (_operator)
            {
            case GreaterThan:
                return(_left.Result(pu) > _right.Result(pu));

            case SmallerThan:
                return(_left.Result(pu) < _right.Result(pu));

            case GreaterEqual:
                return(_left.Result(pu) >= _right.Result(pu));

            case SmallerEqual:
                return(_left.Result(pu) <= _right.Result(pu));

            case Equal:
            case EqualSingle:
                return(_left.Result(pu) == _right.Result(pu));
            }
            Godot.GD.PushError("Unknown operator " + _operator);
            return(false);
        }
        public void NumericalIO()
        {
            var intKeys = new List <StateEntry <int> >
            {
                { new StateEntry <int>("testInt", 1, "", "") }
            };
            var inputRegisters              = new StateTable(new List <StateEntry <bool> >(), intKeys);
            var outputRegisters             = new StateTable(new List <StateEntry <bool> >(), new List <StateEntry <int> >());
            ProcessingUnitMock  pu          = new ProcessingUnitMock(inputRegisters, outputRegisters);
            NumericalExpression expressionA = Interpreter.AsNumericalExpression("testInt", pu);

            Assert.IsTrue(expressionA.IsValid());
            Assert.IsEqual(expressionA.Result(pu), 1);
            NumericalExpression expressionB = Interpreter.AsNumericalExpression("invalidInt", pu);

            Assert.IsFalse(expressionB.IsValid());
        }