source/projects/lilith/test/python/test_interpreter.py
2021-09-19 18:05:22 -06:00

51 lines
1,017 B
Python

"""
"""
from lilith.interpreter import (
Bindings,
eval,
Runtime,
)
from lilith.parser import Apply, Args, Symbol
from lilith.reader import Def, Module
import pytest
@pytest.fixture
def runtime():
return Runtime("test", None, {})
@pytest.mark.parametrize(
"expr, expected",
[
(1, 1),
([1, 2], [1, 2]),
({"foo": "bar"}, {"foo": "bar"}),
],
)
def test_eval(runtime, expr, expected):
assert (
eval(
runtime,
Module("__repl__", [], dict()),
Bindings("__root__", None),
expr,
)
== expected
)
def test_hello_world(capsys, runtime):
assert (
eval(
runtime,
Module("__repl__", [], {Symbol("print"): Def("__builtin__.print", print)}),
Bindings("__root__", None),
Apply(Symbol("print"), Args(["hello, world"], {})),
)
is None
)
captured = capsys.readouterr()
assert captured.out == "hello, world\n"