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)
Esempio n. 2
0
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")
Esempio n. 4
0
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")