Source code for pycropml.test_generator

from pycropml import render_fortran
from pycropml import render_java
from pycropml import render_csharp
from pycropml.render_cyml import transf
import six
[docs]def generate_test_py(model,dir=None): tab = ' '*4 m = model #name = m.description.Title name = m.name name.strip() name = name.replace(' ', '_').lower() model_name = name psets = m.parametersets code_test = [] for v_tests in m.testsets: #test_name = v_tests.name # name of tests test_runs = v_tests.test # different run in the thest test_paramsets = v_tests.parameterset # name of paramsets # map the paramsets params = {} if test_paramsets.strip() != "" and test_paramsets not in list(psets.keys()): print(' Unknow parameter %s' % test_paramsets) else: if test_paramsets.strip() != "": params.update(psets[test_paramsets].params) for each_run in test_runs: test_codes = [] # make a function that transforms a title into a function name tname = list(each_run.keys())[0].replace(' ', '_') tname = tname.replace('-', '_') (run, inouts) = list(each_run.items())[0] ins = inouts['inputs'] outs = inouts['outputs'] code = "params= model_%s(" % model_name test_codes.append(code) run_param = params.copy() run_param.update(ins) for k, v in six.iteritems(run_param): type = [inp.datatype for inp in m.inputs if inp.name==k][0] code = tab + "%s = %s," % (k, transf(type, v)) test_codes.append(code) code = " )" test_codes.append(code) for j, k in enumerate(m.outputs): if k.datatype in ("STRINGLIST", "DATELIST", "STRINGARRAY", "DATEARRAY"): code = "print('%s_estimated =')" % k.name test_codes.append(code) code = "print(params[%s])" % (j) if len( m.outputs) > 1 else "print(params)" % k.name test_codes.append(code) code = "# %s_computed = %s" % ( k.name, outs[k.name][0]) test_codes.append(code) if k.datatype in ("STRING", "BOOL", "INT", "DATE"): code = "print('%s_estimated =')" % (k.name if k.datatype !="BOOLEAN" else k.datatype.lower().capitalize()) test_codes.append(code) code = "print(params[%s])" % (j) if len( m.outputs) > 1 else "print(params)" test_codes.append(code) code = "# %s_computed = %s" % ( k.name, outs[k.name][0]) test_codes.append(code) if k.datatype in ("DOUBLELIST", "DOUBLEARRAY"): code = "print('%s_estimated =')" % k.name test_codes.append(code) code = "print(numpy.around(params[%s], %s))" % (j, outs[k.name][1]) if len( m.outputs) > 1 else "print(numpy.around(params, %s))" % outs[k.name][1] test_codes.append(code) code = "# %s_computed = %s" % ( k.name, outs[k.name][0]) test_codes.append(code) if k.datatype in ("INTLIST", "INTARRAY"): code = "print('%s_estimated =')" % k.name test_codes.append(code) code = "print(params[%s])" % (j) if len( m.outputs) > 1 else "print(params)" test_codes.append(code) code = "# %s_computed = %s" % ( k.name, outs[k.name][0]) test_codes.append(code) if k.datatype == "DOUBLE": code = "print('%s_estimated =')" % k.name test_codes.append(code) code = "print(round(params[%s], %s))" % (j, outs[k.name][1]) if len( m.outputs) > 1 else "print(round(params, %s))" % outs[k.name][1] test_codes.append(code) code = "# %s_computed = %s" % ( k.name, outs[k.name][0]) test_codes.append(code) code = '\n'.join(test_codes) code_test.append(code) return code_test
[docs]def generate_test_f90(model, dir): return [render_fortran.Model2Package(model, dir).generate_test(model)]
[docs]def generate_test_cs(model, dir): return [render_csharp.Model2Package(model, dir).generate_test(model)]
[docs]def generate_test_java(model,directory=None): return [render_java.Model2Package(model, directory).generate_test(model)]
[docs]def generate_test_simplace(model,dir=None): pass
[docs]def generate_test_sirius(model,dir=None): pass
[docs]def generate_test_openalea(model,dir=None): pass
[docs]def generate_test_check(model,dir=None): pass