def test_md_method_type_object_pointer(): 'Make sure a double can be set' metadata = [ { 'metadata_type': 'add_method_type_info', 'type_string': 'my_namespace::obj', 'method_name': 'vertex', 'return_type': 'my_namespace::vertex*', } ] process_metadata(metadata) t = method_type_info('my_namespace::obj', 'vertex') assert t is not None assert t.r_type.type == 'my_namespace::vertex' assert t.r_type.is_a_pointer
def test_md_method_type_double(): 'Make sure a double can be set' metadata = [ { 'metadata_type': 'add_method_type_info', 'type_string': 'my_namespace::obj', 'method_name': 'pT', 'return_type': 'double', } ] process_metadata(metadata) t = method_type_info('my_namespace::obj', 'pT') assert t is not None assert t.r_type.type == 'double' assert not t.r_type.is_a_pointer assert t.deref_depth == 0
def test_md_method_type_collection_ptr(): 'Make sure a double can be set' metadata = [ { 'metadata_type': 'add_method_type_info', 'type_string': 'my_namespace::obj', 'method_name': 'pT', 'return_type_element': 'double', 'return_type_collection': 'vector<double>*', } ] process_metadata(metadata) t = method_type_info('my_namespace::obj', 'pT') assert t is not None assert isinstance(t.r_type, collection) assert t.r_type.is_a_pointer
def test_metadata_method(): 'Make sure the metadata call is properly dealt with' a1 = parse_statement('Select(MetaData(ds, {' '"metadata_type": "add_method_type_info", ' '"type_string": "my_namespace::obj", ' '"method_name": "pT", ' '"return_type": "int", ' '}), lambda e: e + 1)') a2 = parse_statement('Select(ds, lambda e: e + 1)') new_a1 = do_nothing_executor().apply_ast_transformations(a1) assert ast.dump(a2) == ast.dump(new_a1) t = method_type_info('my_namespace::obj', 'pT') assert t is not None assert t.r_type.type == 'int' assert not t.r_type.is_a_pointer
def test_md_method_type_custom_collection(): 'Make sure a double can be set' metadata = [ { 'metadata_type': 'add_method_type_info', 'type_string': 'my_namespace::obj', 'method_name': 'pT', 'return_type_element': 'double', 'return_type_collection': 'MyCustomCollection', } ] process_metadata(metadata) t = method_type_info('my_namespace::obj', 'pT') assert t is not None assert isinstance(t.r_type, collection) assert t.r_type.type == 'MyCustomCollection' assert str(t.r_type.element_type) == 'double' assert not t.r_type.is_a_pointer
def test_md_method_type_collection_item_ptr(): 'Make sure a double can be set' metadata = [ { 'metadata_type': 'add_method_type_info', 'type_string': 'my_namespace::obj', 'method_name': 'pT', 'return_type_element': 'double*', } ] process_metadata(metadata) t = method_type_info('my_namespace::obj', 'pT') assert t is not None assert isinstance(t.r_type, collection) assert t.r_type.type == 'std::vector<double*>' assert isinstance(t.r_type.element_type, terminal) assert str(t.r_type.element_type) == 'double*' assert t.r_type.element_type.p_depth == 1 assert not t.r_type.is_a_pointer
def test_method_type_found(): ctyp.add_method_type_info("bogus", "pt", ctyp.terminal('double')) r = ctyp.method_type_info("bogus", "pt") assert r is not None assert 'double' == str(r.r_type)
def test_no_method_type_found(): assert ctyp.method_type_info("bogus", "pt") is None