public void RemainingDataShouldReturnTheReconstructedExpression() { //Act var remaining = _keeper.RemainingData(); //Assert remaining.Should().Be(string.Join(" ", _tokens.Select(t => t.Text))); }
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)); } }
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()); }