def test_template_function(): config = Config() config.register_function_specialization("addOne", "add_one_i", {"T": "int"}) config.register_function_specialization("addOne", "add_one_d", {"T": "double"}) with cython_extension_from("templatefunction.hpp", config=config): from templatefunction import add_one_i, add_one_d assert_equal(add_one_i(1), 2) assert_is_instance(add_one_i(1), int) assert_equal(add_one_d(2.0), 3.0) assert_is_instance(add_one_d(2.0), float)
def test_template_function(): config = Config() config.register_function_specialization("addOne", "add_one_i", {"T": "int"}) config.register_function_specialization("addOne", "add_one_d", {"T": "double"}) with cython_extension_from("templatefunction.hpp", config=config): from templatefunction import add_one_i, add_one_d assert_equal(add_one_i(1), 2) assert_is_instance(add_one_i(1), int) assert_equal(add_one_d(2.0), 3.0) assert_is_instance(add_one_d(2.0), float)
def test_function_specializer(): config = Config() config.register_function_specialization("MyNamespace::myFun", "myFunInt", {"T": "int"}) config.register_function_specialization("MyNamespace::myFun", "myFunDouble", {"T": "double"}) specializer = FunctionSpecializer(config) template = TemplateFunction("test.hpp", "MyNamespace", "myFun", "T") template.nodes.append(Param("a", "T")) template.template_types.append("T") functions = specializer.specialize(template) assert_equal(len(functions), 2) assert_equal(functions[0].name, "myFunInt") assert_equal(functions[0].result_type, "int") assert_equal(len(functions[0].nodes), 1) assert_equal(functions[0].nodes[0].tipe, "int") assert_equal(functions[1].name, "myFunDouble") assert_equal(functions[1].result_type, "double") assert_equal(len(functions[1].nodes), 1) assert_equal(functions[1].nodes[0].tipe, "double")
def test_function_specializer(): config = Config() config.register_function_specialization("MyNamespace::myFun", "myFunInt", {"T": "int"}) config.register_function_specialization("MyNamespace::myFun", "myFunDouble", {"T": "double"}) specializer = FunctionSpecializer(config) template = TemplateFunction("test.hpp", "MyNamespace", "myFun", "T") template.nodes.append(Param("a", "T")) template.template_types.append("T") functions = specializer.specialize(template) assert_equal(len(functions), 2) assert_equal(functions[0].name, "myFunInt") assert_equal(functions[0].result_type, "int") assert_equal(len(functions[0].nodes), 1) assert_equal(functions[0].nodes[0].tipe, "int") assert_equal(functions[1].name, "myFunDouble") assert_equal(functions[1].result_type, "double") assert_equal(len(functions[1].nodes), 1) assert_equal(functions[1].nodes[0].tipe, "double")