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); }
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)); }