def test_method_specialization(): config = Config() config.register_method_specialization("MyClass", "myMethod", "my_method_b", {"T": "bool"}) specializer = MethodSpecializer(config) template = TemplateMethod("myMethod", "T", "MyClass") template.nodes.append(Param("a", "T")) template.template_types.append("T") methods = specializer.specialize(template) assert_equal(len(methods), 1) method = methods[0] assert_equal(method.name, "my_method_b") assert_equal(method.result_type, "bool") assert_equal(len(method.nodes), 1) assert_equal(method.nodes[0].tipe, "bool")
def test_template_method(): config = Config() specs = { "A::addOne": [ ("add_one_i", {"T": "int"}), ("add_one_d", {"T": "double"}) ] } config.register_method_specialization("A", "addOne", "add_one_i", {"T": "int"}) config.register_method_specialization("A", "addOne", "add_one_d", {"T": "double"}) with cython_extension_from("templatemethod.hpp", config=config): from templatemethod import A a = A() assert_equal(a.add_one_i(1), 2) assert_is_instance(a.add_one_i(1), int) assert_equal(a.add_one_d(2.0), 3.0) assert_is_instance(a.add_one_d(2.0), float)
def test_template_method(): config = Config() specs = { "A::addOne": [("add_one_i", { "T": "int" }), ("add_one_d", { "T": "double" })] } config.register_method_specialization("A", "addOne", "add_one_i", {"T": "int"}) config.register_method_specialization("A", "addOne", "add_one_d", {"T": "double"}) with cython_extension_from("templatemethod.hpp", config=config): from templatemethod import A a = A() assert_equal(a.add_one_i(1), 2) assert_is_instance(a.add_one_i(1), int) assert_equal(a.add_one_d(2.0), 3.0) assert_is_instance(a.add_one_d(2.0), float)