private static void Match(string expected, string source, bool removeSpaces = true)
{
var actual = new StringBuilder();
var lexer = new Lexer(source);
var token = lexer.NextToken();
while (token.Type != TokenType.Eof)
{
switch (token.Type)
{
case TokenType.Number:
actual.Append("n$").Append(token.Text);
break;
case TokenType.String:
actual.Append("'").Append(token.Text).Append("'");
break;
case TokenType.Identifier:
actual.Append("i$").Append(token.Text);
break;
case TokenType.Dot:
actual.Append("d$").Append(token.Text);
break;
default:
if (token.Type.IsKeyword())
actual.Append("k$").Append(token.Text);
else
actual.Append(token.Text);
break;
}
token = lexer.NextToken();
}
actual.Append(token.Text);
if (removeSpaces)
expected = expected.Replace(Environment.NewLine, string.Empty).Replace(" ", string.Empty);
Assert.AreEqual(expected, actual.ToString());
}