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

52 lines
1.4 KiB
Python

from simpleparser import parse
from objmodel import W_Integer
from interpreter import Interpreter
def test_double_assignment():
ast = parse("""
x = 1.5
""")
interpreter = Interpreter()
w_model = interpreter.make_module()
interpreter.eval(ast, w_model)
assert isinstance(w_model.getvalue("x"), W_Double)
assert w_model.getvalue("x").value == 1.5
def test_double_operations():
ast = parse("""
x = 3 div(2)
y = 3 div(2.0)
z = 3.0 div(2.0)
""")
interpreter = Interpreter()
w_model = interpreter.make_module()
interpreter.eval(ast, w_model)
assert isinstance(w_model.getvalue("x"), W_Integer)
assert w_model.getvalue("x").value == 1
assert isinstance(w_model.getvalue("y"), W_Integer)
assert w_model.getvalue("y").value == 1
assert isinstance(w_model.getvalue("z"), W_Double)
assert w_model.getvalue("z").value == 1.5
def test_double_conversion():
ast = parse("""
x = 1.5 toint
y = 2.0 toint
z = 3 todouble
""")
interpreter = Interpreter()
w_model = interpreter.make_module()
interpreter.eval(ast, w_model)
assert isinstance(w_model.getvalue("x"), W_Integer)
assert w_model.getvalue("x").value == 1
assert isinstance(w_model.getvalue("y"), W_Integer)
assert w_model.getvalue("y").value == 2
assert isinstance(w_model.getvalue("z"), W_Double)
assert w_model.getvalue("z").value == 3.0