コード例 #1
0
        public void RemainingDataShouldReturnTheReconstructedExpression()
        {
            //Act
            var remaining = _keeper.RemainingData();

            //Assert
            remaining.Should().Be(string.Join(" ", _tokens.Select(t => t.Text)));
        }
コード例 #2
0
        public static ArithmeticExpression Parse(string input)
        {
            var tokens = LexicalAnalyser.ExtractTokens(input ?? string.Empty);
            var pos    = new TokenKeeper(tokens);

            if (TryTakeCalc(pos, out var calculation) && pos.Finished)
            {
                return(new ArithmeticExpression(calculation));
            }
            else
            {
                var errorMessage = $"Unable to interpret calculation at \"{pos.RemainingData()}\"";
                return(new ArithmeticExpression(errorMessage));
            }
        }
コード例 #3
0
        public void DiscardWhileShouldConsumeAllMatchingTokens()
        {
            //Arrange
            var original = new TokenKeeper(_keeper);

            //Act
            _keeper.DiscardWhile(TokenType.OpenParens, TokenType.NumericLiteral, TokenType.Operator);

            //Assert
            while (original.Next.TokenType != TokenType.CloseParens)
            {
                original.Take();
            }

            var remaining = _keeper.RemainingData();

            remaining.Should().Be(original.RemainingData());
        }