68 lines
2.4 KiB
C#
68 lines
2.4 KiB
C#
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
|||
|
using ShintenScript;
|
|||
|
using System;
|
|||
|
using System.Linq;
|
|||
|
|
|||
|
namespace ShintenScriptTest
|
|||
|
{
|
|||
|
[TestClass]
|
|||
|
public class LexerTests
|
|||
|
{
|
|||
|
[TestMethod]
|
|||
|
public void TestAllTokens()
|
|||
|
{
|
|||
|
Lexer lexer = new Lexer(@"
|
|||
|
hello
|
|||
|
5
|
|||
|
0.5
|
|||
|
0xCafeBabe
|
|||
|
1.5e6
|
|||
|
2.4e-6
|
|||
|
|
|||
|
( ) { }
|
|||
|
+ - * /
|
|||
|
> < == >= <= !=
|
|||
|
=
|
|||
|
+= -= *= /=
|
|||
|
|
|||
|
if while fn
|
|||
|
");
|
|||
|
|
|||
|
Assert.IsTrue(lexer.TokenStream().SequenceEqual(new Token[] {
|
|||
|
new Token { type = Token.Type.IDENTIFIER, data = "hello" },
|
|||
|
new Token { type = Token.Type.NUMBER, data = 5f },
|
|||
|
new Token { type = Token.Type.NUMBER, data = 0.5f },
|
|||
|
new Token { type = Token.Type.NUMBER, data = 3405691582f },
|
|||
|
new Token { type = Token.Type.NUMBER, data = 1.5e6f },
|
|||
|
new Token { type = Token.Type.NUMBER, data = 2.4e-6f },
|
|||
|
|
|||
|
new Token { type = Token.Type.LPAREN },
|
|||
|
new Token { type = Token.Type.RPAREN },
|
|||
|
new Token { type = Token.Type.LBRACE },
|
|||
|
new Token { type = Token.Type.RBRACE },
|
|||
|
new Token { type = Token.Type.PLUS },
|
|||
|
new Token { type = Token.Type.MINUS },
|
|||
|
new Token { type = Token.Type.ASTERISK },
|
|||
|
new Token { type = Token.Type.SLASH },
|
|||
|
new Token { type = Token.Type.GT },
|
|||
|
new Token { type = Token.Type.LT },
|
|||
|
new Token { type = Token.Type.EQ },
|
|||
|
new Token { type = Token.Type.GE },
|
|||
|
new Token { type = Token.Type.LE },
|
|||
|
new Token { type = Token.Type.NE },
|
|||
|
new Token { type = Token.Type.ASSIGN },
|
|||
|
new Token { type = Token.Type.PLUSASSIGN },
|
|||
|
new Token { type = Token.Type.MINUSASSIGN },
|
|||
|
new Token { type = Token.Type.ASTERISKASSIGN },
|
|||
|
new Token { type = Token.Type.SLASHASSIGN },
|
|||
|
|
|||
|
new Token { type = Token.Type.IF },
|
|||
|
new Token { type = Token.Type.WHILE },
|
|||
|
new Token { type = Token.Type.FN },
|
|||
|
|
|||
|
new Token { type = Token.Type.EOF },
|
|||
|
}));
|
|||
|
}
|
|||
|
}
|
|||
|
}
|