コード例 #1
0
        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)));
        }
コード例 #2
0
        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();
        }