private void CheckForComparisonDelegateLoops(String delegateName)
        {
            String    nextDelegateName           = delegateName;
            Hashtable alreadyReferencedDelegates = new Hashtable();

            while (true)
            {
                ComparisonEvaluator nextComparisonEvaluator =
                    (ComparisonEvaluator)_comparisonEvaluators[nextDelegateName];
                if (nextComparisonEvaluator == null)
                {
                    break;
                }

                if (alreadyReferencedDelegates.Contains(nextDelegateName))
                {
                    String msg = SR.GetString(SR.DevFiltDict_FoundLoop,
                                              nextComparisonEvaluator.capabilityName,
                                              delegateName);
                    throw new Exception(msg);
                }

                alreadyReferencedDelegates[nextDelegateName] = null;
                nextDelegateName = nextComparisonEvaluator.capabilityName;
            }
        }
        internal void AddComparisonDelegate(String delegateName, String comparisonName,
                                            String argument)
        {
            _comparisonEvaluators[delegateName] = new ComparisonEvaluator(comparisonName,
                                                                          argument);

            CheckForComparisonDelegateLoops(delegateName);
        }
    void If_Command(string[] param)
    {
        int    firstOperand  = int.Parse(param [0]);
        string operatorName  = param[1];
        int    secondOperand = int.Parse(param [2]);

        Debug.Log("If " + firstOperand + " " + operatorName + " " + secondOperand);
        if (ComparisonEvaluator.Evaluate(firstOperand, operatorName, secondOperand) == false)
        {
            GotoNextElseOrEndif();
        } // else, continue running and enter the if clause
    }
        internal bool FindComparisonEvaluator(String evaluatorName, out String capabilityName,
                                              out String capabilityArgument)
        {
            capabilityName     = null;
            capabilityArgument = null;

            ComparisonEvaluator evaluator = (ComparisonEvaluator)_comparisonEvaluators[evaluatorName];

            if (evaluator == null)
            {
                return(false);
            }

            capabilityName     = evaluator.capabilityName;
            capabilityArgument = evaluator.capabilityArgument;

            return(true);
        }
Esempio n. 5
0
        private void Workhorse(string currentValue, string comparisonValue, List <string> expectedTrueComparisons)
        {
            List <string> errors = new List <string>();

            var evaluator = new ComparisonEvaluator(new Core.EnumConverter());

            //Act
            ComparisonEvaluator.AllowedComparisons.ForEach((string comparisonType) =>
            {
                bool status = evaluator.CompareValues(currentValue, comparisonValue, comparisonType);

                if (expectedTrueComparisons.Contains(comparisonType) && !status)
                {
                    errors.Add($"{comparisonType} was not {!status}, but should have been.");
                }
                if (!expectedTrueComparisons.Contains(comparisonType) && status)
                {
                    errors.Add($"{comparisonType} was {status}, but should not have been.");
                }
            });

            //Assert
            Assert.IsFalse(errors.Any(), string.Join(" | ", errors));
        }
        internal void AddComparisonDelegate(String delegateName, String comparisonName,
            String argument)
        {
            _comparisonEvaluators[delegateName] = new ComparisonEvaluator(comparisonName,
                argument);

            CheckForComparisonDelegateLoops(delegateName);
        }