tests(parser): add basic lexer test
add a basic test for the annotation lexer to check punctuation tokens
This commit is contained in:
26
tests/lexer/test_annotation_lexer.py
Normal file
26
tests/lexer/test_annotation_lexer.py
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
import pytest
|
||||||
|
|
||||||
|
from lexer.annotations import AnnotationLexer
|
||||||
|
from lexer.token import Token, TokenType
|
||||||
|
|
||||||
|
|
||||||
|
def scan(source: str) -> list[Token]:
|
||||||
|
return AnnotationLexer(source).process()
|
||||||
|
|
||||||
|
def assert_n_tokens(tokens: list[Token], n: int):
|
||||||
|
assert len(tokens) == n + 1
|
||||||
|
assert tokens[-1].type == TokenType.EOF
|
||||||
|
|
||||||
|
@pytest.mark.parametrize("src,expected", [
|
||||||
|
("(", TokenType.LEFT_PAREN),
|
||||||
|
(")", TokenType.RIGHT_PAREN),
|
||||||
|
("[", TokenType.LEFT_BRACKET),
|
||||||
|
("]", TokenType.RIGHT_BRACKET),
|
||||||
|
(":", TokenType.COLON),
|
||||||
|
(",", TokenType.COMMA),
|
||||||
|
("_", TokenType.UNDERSCORE),
|
||||||
|
])
|
||||||
|
def test_punctuation(src: str, expected: TokenType):
|
||||||
|
tokens: list[Token] = scan(src)
|
||||||
|
assert_n_tokens(tokens, 1)
|
||||||
|
assert tokens[0].type == expected
|
||||||
Reference in New Issue
Block a user