52 lines
1.4 KiB
Python
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
|