コード例 #1
0
def test_inttype_verify():
    for size in (8, 16, 32, 64, 128):
        assert verify(types.IntType(size)) is None, \
            f"IntType({size}) is valid"

    with pytest.raises(errors.TypeError):
        verify(types.IntType(7))
コード例 #2
0
def test_enumtype_verify():
    typ = types.EnumType("test_enum", variants=("A", "B", "C"))
    assert verify(typ) is None, "EnumType without duplicate variants is ok"

    typ2 = types.EnumType("test_enum", variants=("A", "A"))
    with pytest.raises(errors.TypeError):
        verify(typ2)
コード例 #3
0
def test_floattype_verify():
    for size in (32, 64):
        assert verify(types.FloatType(size)) is None, \
            f"FloatType({size}) is valid"

    with pytest.raises(errors.TypeError):
        verify(types.FloatType(128))
コード例 #4
0
def test_structtype_verify():
    typ = types.StructType("test_struct",
                           fields=(
                               ("a", types.IntType(8)),
                               ("b", types.IntType(16)),
                           ))

    assert verify(typ) is None, "Struct with unique field names is ok"

    typ = types.StructType("test_struct",
                           fields=(
                               ("a", types.IntType(8)),
                               ("a", types.IntType(16)),
                           ))

    with pytest.raises(errors.TypeError):
        verify(typ)
コード例 #5
0
def test_uniontype_verify():
    typ = types.UnionType("test_union",
                          variants=(
                              ("A", types.TupleType((types.IntType(32), ))),
                              ("B", types.TupleType((types.IntType(16), ))),
                          ))

    assert verify(typ) is None, "Union with unique variant names is ok"

    typ = types.UnionType("test_union",
                          variants=(
                              ("A", types.TupleType((types.IntType(32), ))),
                              ("A", types.TupleType((types.IntType(16), ))),
                          ))

    with pytest.raises(errors.TypeError):
        verify(typ)
コード例 #6
0
def test_functiontemplate_verify():
    typ = types.FunctionType(
        name="test_func",
        return_type=None,
        parameters=(("a", types.IntType(8)), ("b", types.IntType(8))),
    )

    assert verify(typ) is None, "FunctionType with unique params is ok"

    typ = types.FunctionType(
        name="test_func",
        return_type=None,
        parameters=(("a", types.IntType(8)), ("a", types.IntType(8))),
    )

    with pytest.raises(errors.TypeError):
        verify(typ)
コード例 #7
0
def test_scopedtype_verify():
    typ = types.StructType(name="test_struct",
                           type_parameters=(types.TypeVariable("T"),
                                            types.TypeVariable("U")),
                           fields=(("a", types.IntType(32)), ))

    assert verify(typ) is None, "ScopedType with unique parameters is ok"

    typ = types.StructType(name="duplicate_type_variable",
                           type_parameters=(types.TypeVariable("T"),
                                            types.TypeVariable("T")),
                           fields=(("a", types.IntType(32)), ))

    with pytest.raises(errors.TypeError):
        verify(typ)

    typ = types.StructType(name="unbound_type_variable",
                           fields=(("a", types.TypeVariable("T")), ))

    with pytest.raises(errors.ReferenceError):
        verify(typ)
コード例 #8
0
def test_symboltype_verify():
    assert verify(types.SymbolType()) is None, 'SymbolType is valid'
コード例 #9
0
def test_booltype_verify():
    assert verify(types.BoolType()) is None, "BoolType is valid"
コード例 #10
0
def test_slicetype_verify():
    assert verify(types.SliceType(types.FloatType(32))) is None, \
        "SliceType of int8 is valid"
コード例 #11
0
def test_arraytype_verify():
    assert verify(types.ArrayType(3, types.IntType(8))) is None, \
        "ArrayType of int8[3] is valid"
コード例 #12
0
def test_tupletype_verify():
    assert verify(types.TupleType()) is None, "Empty TupleType is ok"
    assert verify(types.TupleType((types.IntType(8),))) is None, \
        "Non-empty TupleType is ok"