Skip to content

Commit 4e91783

Browse files
authored
Create lexer_test.py
1 parent ad0db94 commit 4e91783

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed

lexer_test.py

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
import unittest
2+
from tokens import Token, TokenType
3+
from lexer import L exer
4+
5+
class TestLexer(unittest.TestCase):
6+
7+
def test_empty(self):
8+
tokens = list(Lexer("").generate_tokens())
9+
self.assertEqual(tokens, [])
10+
11+
def test_empty(self):
12+
tokens = list(Lexer(" \t\n \t\t\t\t\n\n").generate_tokens())
13+
self.assertEqual(tokens, [])
14+
15+
16+
def test_number(self):
17+
tokens = list(Lexer("123 123.456 123. .456 .").generate_tokens())
18+
self.assertEqual(tokens, [
19+
Token(TokenType.NUMBER, 123.000),
20+
Token(TokenType.NUMBER, 123.456),
21+
Token(TokenType.NUMBER, 123.000),
22+
Token(TokenType.NUMBER, 000.456),
23+
Token(TokenType.NUMBER, 000.000)
24+
])
25+
26+
def test_operators(self):
27+
tokens = list(Lexer("+-*/").generate_tokens())
28+
self.assertEqual(tokens, [
29+
Token(TokenType.PLUS),
30+
Token(TokenType.MINUS),
31+
Token(TokenType.MULTIPLY),
32+
Token(TokenType.DIVIDE)
33+
])
34+
35+
def test_parens(self):
36+
tokens = list(Lexer("()").generate_tokens())
37+
self.assertEqual(tokens, [
38+
Token(TokenType.LPARENT),
39+
Token(TokenType.RPARENT)
40+
])
41+
42+
def test_all(self):
43+
tokens = list(Lexer("27 + (43 / 36 - 48) * 51").generate_tokens())
44+
self.assertEqual(tokens, [
45+
Token(TokenType.NUMBER, 27),
46+
Token(TokenType.PLUS),
47+
48+
Token(TokenType.LPARENT),
49+
Token(TokenType.NUMBER, 43),
50+
Token(TokenType.DIVIDE),
51+
Token(TokenType.NUMBER, 36),
52+
Token(TokenType.MINUS),
53+
Token(TokenType.NUMBER, 48),
54+
Token(TokenType.MILTIPLY),
55+
Token(TokenType.RPARENT),
56+
57+
Token(TokenType.NUMBER, 51),
58+
])
59+
60+

0 commit comments

Comments
 (0)