43 lines
871 B
Python
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
|
|
|