diff --git a/tests/lexer/test_annotation_lexer.py b/tests/lexer/test_annotation_lexer.py new file mode 100644 index 0000000..4d08f7f --- /dev/null +++ b/tests/lexer/test_annotation_lexer.py @@ -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 \ No newline at end of file