internal void GetTokens_TokenWithComment() { var lexer = new LispLexer(new TextSource("foo;bar")); var token = lexer.GetTokens().Single(); Assert.Equal(LispTokenKind.Symbol, token.TokenKind); Assert.Equal("foo", token.Value); }
internal void GetTokens_String_ParsedCorrectly() { var lexer = new LispLexer(new TextSource("\"foobar\"")); var token = lexer.GetTokens().Single(); Assert.Equal("foobar", token.Value); Assert.Equal(LispTokenKind.String, token.TokenKind); }
internal void GetTokens_SingleTokenInputs(string input, LispTokenKind expectedTokenKind) { var lexer = new LispLexer(new TextSource(input)); var token = lexer.GetTokens().Single(); Assert.Equal(expectedTokenKind, token.TokenKind); Assert.Equal(input, token.Value); }
internal void GetTokens_MultipleTokensInInput() { const string input = "(add (mul 2 2) 2)"; var lexer = new LispLexer(new TextSource(input)); var actualTokens = lexer.GetTokens().ToArray(); var expectedTokens = new[] { new LispToken(LispTokenKind.LParen, "("), new LispToken(LispTokenKind.Symbol, "add"), new LispToken(LispTokenKind.LParen, "("), new LispToken(LispTokenKind.Symbol, "mul"), new LispToken(LispTokenKind.Number, "2"), new LispToken(LispTokenKind.Number, "2"), new LispToken(LispTokenKind.RParen, ")"), new LispToken(LispTokenKind.Number, "2"), new LispToken(LispTokenKind.RParen, ")"), }; AssertTokens(expectedTokens, actualTokens); }