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");
        }
示例#2
0
        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
        }