public void Setup() { _equationPartsIdentifier = A.Fake <IEquationPartsIdentifier>(); _mathsRuleResolver = A.Fake <IMathsRuleResolver>(); _mathsResolver = new MathsResolver(_equationPartsIdentifier, new List <IMathsRuleResolver> { _mathsRuleResolver }); }
private List <string> ResolveGeneric(List <string> equationList, IMathsRuleResolver mathsRuleResolver) { while (equationList.Contains(mathsRuleResolver.Operator)) { var i = 0; while (i < equationList.Count) { if (equationList[i] == mathsRuleResolver.Operator) { if (FirstTermIsNegative(equationList, i) && SecondTermIsNegative(equationList, i)) { equationList[i - 2] = PrependPosSign(mathsRuleResolver.BothNegativeResolution(equationList, i)); equationList.RemoveRange(i - 1, 4); } else if (FirstTermIsNegative(equationList, i)) { equationList[i - 2] = PrependPosSign(mathsRuleResolver.FirstTermNegativeResolution(equationList, i)); equationList.RemoveRange(i - 1, 3); } else if (SecondTermIsNegative(equationList, i)) { equationList[i - 1] = PrependPosSign(mathsRuleResolver.SecondTermNegativeResolution(equationList, i)); equationList.RemoveRange(i, 3); } else if (i == 0) { equationList[i] = PrependPosSign(mathsRuleResolver.BothPositiveResolution(equationList, i)); equationList.RemoveRange(i + 1, 1); } else { equationList[i - 1] = PrependPosSign(mathsRuleResolver.BothPositiveResolution(equationList, i)); equationList.RemoveRange(i, 2); } i = equationList.Count; } i++; } } return(equationList); }