summaryrefslogtreecommitdiff
path: root/tests/test_lexer.py
blob: 64fa17cb00cb65a4b1f2efba15b904c0bf0a4f10 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
"""Tests for the MML lexer."""

from mml_composemusic_mcp.lexer import TokenType, tokenize


def test_ppmck_tokens():
    source = "A t150 l8 o4 v15 q2\nc d e f"
    tokens = tokenize(source, "ppmck")
    types = [t.type for t in tokens]
    assert TokenType.TRACK_HEADER in types
    assert TokenType.TEMPO in types
    assert TokenType.NOTE in types


def test_pyxel_tokens():
    source = "0: T150 L8 O4 V100 @1\nC D E F"
    tokens = tokenize(source, "pyxel")
    types = [t.type for t in tokens]
    assert TokenType.TRACK_HEADER in types
    assert TokenType.AT in types
    assert TokenType.NOTE in types


def test_pyxel_repeat():
    tokens = tokenize("[ C D ]2", "pyxel")
    assert any(t.type == TokenType.REPEAT_START for t in tokens)
    assert any(t.type == TokenType.REPEAT_END for t in tokens)


def test_ppmck_invalid_token():
    tokens = tokenize("A t120 l4 o4 x c", "ppmck")
    assert any(t.type == TokenType.INVALID for t in tokens)


def test_pyxel_invalid_token():
    tokens = tokenize("0: T120 L4 O4 X C", "pyxel")
    assert any(t.type == TokenType.INVALID for t in tokens)