Ejemplo n.º 1
0
def test_ptr():
    gun, = autowrap.PXDParser.parse_str("""
cdef extern from "":
    unsigned int * gun (vector[double *] *)
            """)
    assert gun.result_type == CppType.from_string("unsigned int *")
    (n, t), = gun.arguments
    assert t == CppType.from_string("vector[double *] *")
Ejemplo n.º 2
0
def test_ptr():
    gun, = autowrap.PXDParser.parse_str("""
cdef extern from "":
    unsigned int * gun (vector[double *] *)
            """)
    assert gun.result_type == CppType.from_string("unsigned int *")
    (n, t), = gun.arguments
    assert t == CppType.from_string("vector[double *] *")
Ejemplo n.º 3
0
def _assert_exeception_when_testing(str_):
    try:
        CppType.from_string(str_).check_for_recursion()
    except Exception as e:
        estr = str(e)
        if not estr.startswith("recursion check for "):
            if not estr.endswith(" failed"):
                raise e
    else:
        assert False, "invalid type '%s' passed test" % str_
Ejemplo n.º 4
0
def _assert_exeception_when_testing(str_):
    try:
        CppType.from_string(str_).check_for_recursion()
    except Exception as e:
        estr = str(e)
        if not estr.startswith("recursion check for "):
            if not estr.endswith(" failed"):
                raise e
    else:
        assert False, "invalid type '%s' passed test" % str_
Ejemplo n.º 5
0
def test_nested_mapping_flattening():
    from autowrap.Types import CppType
    B = CppType.from_string("B")
    Y = CppType.from_string("Y")
    Z = CppType.from_string("Z")
    CXD = CppType.from_string("C[X,D]")

    mapping = dict(A=B, B=CXD, C=Z, D=Y)
    autowrap.Utils.flatten(mapping)
    assert str(mapping["A"]) == "Z[X,Y]"
    assert str(mapping["B"]) == "Z[X,Y]"
    assert str(mapping["C"]) == "Z"
    assert str(mapping["D"]) == "Y"
Ejemplo n.º 6
0
def test_nested_mapping_flattening():
    from autowrap.Types import CppType
    B = CppType.from_string("B")
    Y = CppType.from_string("Y")
    Z = CppType.from_string("Z")
    CXD = CppType.from_string("C[X,D]")

    mapping = dict(A=B, B=CXD, C=Z, D=Y)
    autowrap.Utils.flatten(mapping)
    assert str(mapping["A"]) == "Z[X,Y]"
    assert str(mapping["B"]) == "Z[X,Y]"
    assert str(mapping["C"]) == "Z"
    assert str(mapping["D"]) == "Y"
Ejemplo n.º 7
0
def test_inv_transform():
    A = CppType.from_string("A")
    AX = CppType.from_string("A[X]")
    AXX = CppType.from_string("A[X,X]")
    ABX = CppType.from_string("A[B[X]]")
    ABXX = CppType.from_string("A[B[X],X]")

    T = CppType.from_string("T")

    def check(t, map_, expected):
        is_ = str(t.inv_transformed(map_))
        assert is_ == expected, is_

    map1 = dict(Z=A)
    check(A, map1, "Z")
    check(AX, map1, "A[X]")

    map2 = dict(Z=CppType.from_string("B[X]"))
    check(ABX, map2, "A[Z]")
    check(ABXX, map2, "A[Z,X]")

    ABXp = ABX.copy()
    ABXp.is_ptr = True
    check(ABXp, map2, "A[Z] *")

    ABXXp = ABXX.copy()
    ABXXp.template_args[0].is_ptr = True

    check(ABXXp, map2, "A[Z *,X]")
Ejemplo n.º 8
0
def test_inv_transform():
    A = CppType.from_string("A")
    AX = CppType.from_string("A[X]")
    AXX = CppType.from_string("A[X,X]")
    ABX = CppType.from_string("A[B[X]]")
    ABXX = CppType.from_string("A[B[X],X]")

    T = CppType.from_string("T")

    def check(t, map_, expected):
        is_ = str(t.inv_transformed(map_))
        assert is_ == expected, is_

    map1 = dict(Z=A)
    check(A, map1, "Z")
    check(AX, map1, "A[X]")

    map2 = dict(Z=CppType.from_string("B[X]"))
    check(ABX, map2, "A[Z]")
    check(ABXX, map2, "A[Z,X]")

    ABXp = ABX.copy()
    ABXp.is_ptr = True
    check(ABXp, map2, "A[Z] *")

    ABXXp = ABXX.copy()
    ABXXp.template_args[0].is_ptr = True

    check(ABXXp, map2, "A[Z *,X]")
Ejemplo n.º 9
0
def test_base_type_collecting():
    def check(t, tobe):
        collected = "".join(sorted(t.all_occuring_base_types()))
        if collected != tobe:
            msg = "input '%s', collected '%s'" % (t, collected)
            assert False, msg

    check(CppType.from_string("A"), "A")
    check(CppType.from_string("A[B]"), "AB")
    check(CppType.from_string("A[B,C]"), "ABC")
    check(CppType.from_string("A[B[C]]"), "ABC")
    check(CppType.from_string("A[B[C],D]"), "ABCD")
    check(CppType.from_string("A[B[C[D]]]"), "ABCD")
Ejemplo n.º 10
0
def test_base_type_collecting():

    def check(t, tobe):
        collected = "".join(sorted(t.all_occuring_base_types()))
        if collected != tobe:
            msg = "input '%s', collected '%s'" % (t, collected)
            assert False, msg

    check(CppType.from_string("A"), "A")
    check(CppType.from_string("A[B]"), "AB")
    check(CppType.from_string("A[B,C]"), "ABC")
    check(CppType.from_string("A[B[C]]"), "ABC")
    check(CppType.from_string("A[B[C],D]"), "ABCD")
    check(CppType.from_string("A[B[C[D]]]"), "ABCD")
Ejemplo n.º 11
0
 def parse(anno):
     m = re.match("(\S+)\((\S+)\)", anno)
     assert m is not None, "invalid iter annotation"
     name, type_str = m.groups()
     return name, CppType.from_string(type_str)
Ejemplo n.º 12
0
def _test_check_for_recursion_1():
    CppType.from_string("A").check_for_recursion()
    CppType.from_string("A[B]").check_for_recursion()
    CppType.from_string("A[B,B]").check_for_recursion()
    CppType.from_string("A[B,C]").check_for_recursion()
    CppType.from_string("A[B[C],C]").check_for_recursion()
    CppType.from_string("A[B[C],D]").check_for_recursion()
    CppType.from_string("A[B[C],D[E]]").check_for_recursion()
    CppType.from_string("A[B[C],D[E],D]").check_for_recursion()
    CppType.from_string("A[B[C],D[E],B]").check_for_recursion()
Ejemplo n.º 13
0
def _testErr(s):
    CppType.from_string(s)
Ejemplo n.º 14
0
def _testType(t):
    assert t == str(CppType.from_string(t)) == t, str(CppType.from_string(t))
Ejemplo n.º 15
0
 def parse(anno):
     m = re.match("(\S+)\((\S+)\)", anno)
     assert m is not None, "invalid iter annotation"
     name, type_str = m.groups()
     return name, CppType.from_string(type_str)
Ejemplo n.º 16
0
def _test_check_for_recursion_1():
    CppType.from_string("A").check_for_recursion()
    CppType.from_string("A[B]").check_for_recursion()
    CppType.from_string("A[B,B]").check_for_recursion()
    CppType.from_string("A[B,C]").check_for_recursion()
    CppType.from_string("A[B[C],C]").check_for_recursion()
    CppType.from_string("A[B[C],D]").check_for_recursion()
    CppType.from_string("A[B[C],D[E]]").check_for_recursion()
    CppType.from_string("A[B[C],D[E],D]").check_for_recursion()
    CppType.from_string("A[B[C],D[E],B]").check_for_recursion()
Ejemplo n.º 17
0
def _testErr(s):
    CppType.from_string(s)
Ejemplo n.º 18
0
def _testType(t):
    assert t == str(CppType.from_string(t)) == t, str(CppType.from_string(t))