Exemplo n.º 1
0
def test_read_enum():
    Color = enum('Color', ('red', 'green', 'blue', 'yellow'))
    Gender = enum('Gender', ('male', 'female', 'unknown'))
    #      color      gender     padding
    buf = '\x02\x00' '\x01\x00' '\x00\x00\x00\x00'

    blob = Struct.from_buffer(buf, 0, data_size=1, ptrs_size=0)
    color = blob._read_enum(0, Color)
    gender = blob._read_enum(2, Gender)
    assert color == Color.blue
    assert gender == Gender.female
Exemplo n.º 2
0
def test_enum():
    Color = enum('Color', ('red', 'green', 'blue'))
    assert type(Color) is type
    assert Color.red == 0
    assert Color.green == 1
    assert Color.blue == 2
    assert Color.red.name == 'red'
    assert repr(Color.red) == '<Color.red: 0>'
    assert str(Color.red) == 'red'
    assert Color(0) == Color.red
    py.test.raises(AttributeError, "Color.red.x = 42")
Exemplo n.º 3
0
def test_ItemType_from_type():
    from capnpy.enum import enum

    def check(t, expected_cls, expected_t=None):
        if expected_t is None:
            expected_t = t
        itemtype = ItemType.from_type(t)
        assert isinstance(itemtype, expected_cls)
        assert itemtype.get_type() is expected_t

    class MyStruct(Struct):
        __static_data_size__ = 0
        __static_ptrs_size__ = 0

    MyEnum = enum('MyEnum', ('a', 'b'))

    check(Types.void, VoidItemType)
    check(Types.bool, BoolItemType)
    check(Types.int8, PrimitiveItemType)
    check(Types.uint8, PrimitiveItemType)
    check(Types.int16, PrimitiveItemType)
    check(Types.uint16, PrimitiveItemType)
    check(Types.int32, PrimitiveItemType)
    check(Types.uint32, PrimitiveItemType)
    check(Types.int64, PrimitiveItemType)
    check(Types.uint64, PrimitiveItemType)
    check(Types.float32, PrimitiveItemType)
    check(Types.float64, PrimitiveItemType)
    check(Types.data, TextItemType)
    check(int, PrimitiveItemType, Types.int64)
    check(float, PrimitiveItemType, Types.float64)
    check(bytes, TextItemType, Types.text)
    check(six.text_type, TextUnicodeItemType, Types.text)
    check(MyStruct, StructItemType)
    check(MyEnum, EnumItemType)
    with pytest.raises(NotImplementedError):
        ItemType.from_type(Types.text)
    #
    # check lists
    itype = ItemType.from_type([int])
    assert isinstance(itype, ListItemType)
    assert itype.inner_item_type.get_type() is Types.int64
Exemplo n.º 4
0
 class Shape(Struct):
     __tag_offset__ = 16
     __tag__ = enum('Shape.__tag__', ('circle', 'square'))
Exemplo n.º 5
0
def test_unknown():
    Color = enum('Color', ('red', 'green', 'blue'))
    assert type(Color) is type
    pink = Color(3)
    assert pink == 3
    assert pink.name == 'unknown<3>'