public int Calculate(string equation) { var value = 0; var range = _nestingIdentifier.FindDeepestNest(equation); while (range != null) { var nest = equation.Substring(range.StartIndex + 1, range.Length - 2); var resolvedNest = _mathsResolver.ResolveSection(nest); equation = equation.Remove(range.StartIndex, range.Length); equation = equation.Insert(range.StartIndex, resolvedNest); range = _nestingIdentifier.FindDeepestNest(equation); } return(Int32.Parse(_mathsResolver.ResolveSection(equation))); }
public void Calculate_NoBrackets_ReturnsDirectCalculation() { var equation = "1"; StringRange deepestNest = null; var section = "1"; A.CallTo(() => _nestingIdentifier.FindDeepestNest(equation)).Returns(deepestNest); A.CallTo(() => _mathsResolver.ResolveSection(section)).Returns("1"); var response = _calculator.Calculate(equation); response.Should().Be(1); A.CallTo(() => _nestingIdentifier.FindDeepestNest(equation)).MustHaveHappened(); A.CallTo(() => _mathsResolver.ResolveSection(section)).MustHaveHappened(); }