"""Tests covering the reader."""

from lilith.parser import Apply, Args, Block, Symbol
from lilith.reader import Module, read_buffer

import pytest


@pytest.mark.parametrize(
    "example, expected",
    [
        (
            """!def[main, lang[lil]]\nprint["hello, world"]\n""",
            Module(
                "&buff",
                {
                    Symbol("main"): Block(
                        Apply(Symbol("lang"), Args([Symbol("lil")], {})),
                        ['print["hello, world"]'],
                    )
                },
            ),
        )
    ],
)
def test_read(example, expected):
    got = read_buffer(example)
    assert got == expected