def test_parse_code(): code = ''' """ input = a,b output = c """ c = a+b ''' from openalea.core.model import PythonModel m1 = PythonModel(name='m1', code=code) m2 = PythonModel(name='m2') m2.code = code m3 = PythonModel(name='m3') m3.set_code(code) assert m1.run(a=1, b=2) == 3 assert m2.run(a=2, b=3) == 5 assert m3.run(a=3, b=4) == 7 m1 = PythonModel(name='ModelWithoutDoc') assert m1.get_documentation() == '' m1 = PythonModel(name='ModelWithDoc', code=code) assert m1.get_documentation()
def test_model_inputs_info(): model_src = '''""" input = x:int=4, y:float=3.14, z, debug:bool output = success beautifull doc """ print "ok" ''' model = PythonModel(code=model_src) assert len(model.inputs_info) == 4 assert len(model.outputs_info) == 1 assert model.inputs_info[0].name == "x" assert model.inputs_info[0].default == "4" # assert model.inputs_info[0].interface == "int" assert model.inputs_info[1].name == "y" assert model.inputs_info[1].default == "3.14" # assert model.inputs_info[1].interface == "float" assert model.inputs_info[2].name == "z" assert model.inputs_info[3].name == "debug" # assert model.inputs_info[3].interface == "bool" assert model.outputs_info[0].name == "success" assert model.get_documentation() == """input = x:int=4, y:float=3.14, z, debug:bool output = success beautifull doc""" model_src2 = '''""" input = x=[1,2,3], y=(1,2), z=(1,), a=4, b output = c, d, e:bool beautifull doc """ print "ok" ''' model2 = PythonModel(code=model_src2) assert len(model2.inputs_info) == 5 assert len(model2.outputs_info) == 3 assert model2.inputs_info[0].name == "x" assert model2.inputs_info[0].default == "[1,2,3]" assert model2.inputs_info[1].name == "y" assert model2.inputs_info[1].default == "(1,2)" assert model2.inputs_info[2].name == "z" assert model2.inputs_info[2].default == "(1,)" assert model2.inputs_info[3].name == "a" assert model2.inputs_info[3].default == "4" assert model2.inputs_info[4].name == "b" assert model2.outputs_info[0].name == "c" assert model2.outputs_info[1].name == "d" assert model2.outputs_info[2].name == "e" # assert model2.outputs_info[2].interface == "bool" assert model2.get_documentation() == """input = x=[1,2,3], y=(1,2), z=(1,), a=4, b
def test_model_get_documentation(): model_src = '''""" This is the doc of my model """ print "ok" result = 42 """ ok """ ''' model = PythonModel(code=model_src) assert model.get_documentation() == "This is the doc of my model"
def test_magic(): model_src = '''""" input = x:int=4, y:float=3.14, z, debug:bool output = success beautifull doc """ %pylab inline print "ok" ''' model = PythonModel(code=model_src) assert model.repr_code() == model_src assert model.get_documentation() is not None assert len(model.inputs_info) == 4 assert len(model.outputs_info) == 1