1
Files
lecture-interpreters/tests/test_primitive.py
2021-08-11 21:11:35 +02:00

43 lines
871 B
Python

import py
from simpleparser import parse
from objmodel import W_NormalObject
from interpreter import Interpreter
def test_primitive():
ast = parse("""
k = 10 $int_add(31)
""")
interpreter = Interpreter()
w_module = interpreter.make_module()
interpreter.eval(ast, w_module)
assert w_module.getvalue("k").value == 41
def test_primitive_error():
ast = parse("""
k = 10 $int_add(31, 12)
""")
interpreter = Interpreter()
w_module = interpreter.make_module()
with py.test.raises(TypeError):
interpreter.eval(ast, w_module)
def test_loop():
ast = parse("""
def f(x):
r = 0
while x:
r = r $int_add(x)
x = x $int_add(-1)
r
y = f(100)
""")
interpreter = Interpreter()
w_module = interpreter.make_module()
interpreter.eval(ast, w_module)
assert w_module.getvalue("y").value == 5050