예제 #1
0
def test_validate():
    spec = ListTypeSpec(prim_spec.BinaryTypeSpec)
    spec.validate([b'a'])
    spec.validate([u'a'])

    with pytest.raises(TypeError):
        spec.validate(42)
예제 #2
0
def test_compile(parse):
    spec = UnionTypeSpec.compile(
        parse('''union Foo {
            1: binary b
            2: string s
            3: i32 i
            4: list<Foo> l
        }'''))

    assert spec.name == 'Foo'
    assert spec.fields == [
        FieldSpec(id=1,
                  name='b',
                  spec=prim_spec.BinaryTypeSpec,
                  required=False),
        FieldSpec(id=2, name='s', spec=prim_spec.TextTypeSpec, required=False),
        FieldSpec(id=3, name='i', spec=prim_spec.I32TypeSpec, required=False),
        FieldSpec(id=4,
                  name='l',
                  required=False,
                  spec=ListTypeSpec(TypeReference('Foo', 5))),
    ]
예제 #3
0
def slist(value):
    return ListTypeSpec(value)
예제 #4
0
def test_mapper(parse):
    ast = parse('list<binary>')
    spec = type_spec_or_ref(ast)
    assert spec == ListTypeSpec(prim_spec.BinaryTypeSpec)