Пример #1
0
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
Пример #2
0
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
Пример #3
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
Пример #4
0
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
Пример #5
0
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
Пример #6
0
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
Пример #7
0
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)
Пример #8
0
def test_no_method_type_found():
    assert ctyp.method_type_info("bogus", "pt") is None