private void AssertTokens(string encodedTokens) { int i = 0; for (; ;) { var tok = comfil.Get(); if (tok.Type == TokenType.EOF) { break; } if (encodedTokens.Length <= i) { Assert.Fail($"Unexpected {tok}"); return; } switch (encodedTokens[i]) { case '(': Assert.AreEqual(TokenType.LPAREN, tok.Type); break; case ')': Assert.AreEqual(TokenType.RPAREN, tok.Type); break; case ':': Assert.AreEqual(TokenType.COLON, tok.Type); break; case 'd': Assert.AreEqual(TokenType.Def, tok.Type); break; case 'i': Assert.AreEqual(TokenType.ID, tok.Type); break; case 'N': Assert.AreEqual(TokenType.NEWLINE, tok.Type); break; case 'I': Assert.AreEqual(TokenType.INDENT, tok.Type); break; case 'D': Assert.AreEqual(TokenType.DEDENT, tok.Type); break; case '#': Assert.AreEqual(TokenType.COMMENT, tok.Type); break; default: Assert.Fail($"Unexpected {tok.Type}"); break; } ++i; } Assert.AreEqual(encodedTokens.Length, i, $"Expected {encodedTokens.Length} tokens"); }
private void AssertTokens(string encodedTokens) { int i = 0; for (; ;) { var tok = comfil.Get(); if (tok.Type == TokenType.EOF) { break; } Assert.True(encodedTokens.Length > i, $"Unexpected {tok}"); switch (encodedTokens[i]) { case '(': Assert.Equal(TokenType.LPAREN, tok.Type); break; case ')': Assert.Equal(TokenType.RPAREN, tok.Type); break; case ':': Assert.Equal(TokenType.COLON, tok.Type); break; case 'd': Assert.Equal(TokenType.Def, tok.Type); break; case 'i': Assert.Equal(TokenType.ID, tok.Type); break; case 'N': Assert.Equal(TokenType.NEWLINE, tok.Type); break; case 'I': Assert.Equal(TokenType.INDENT, tok.Type); break; case 'D': Assert.Equal(TokenType.DEDENT, tok.Type); break; case '#': Assert.Equal(TokenType.COMMENT, tok.Type); break; default: throw new InvalidOperationException($"Unexpected {tok.Type}"); } ++i; } Assert.Equal(encodedTokens.Length, i); // Expected {encodedTokens.Length} tokens }