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
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")
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
class Shape(Struct): __tag_offset__ = 16 __tag__ = enum('Shape.__tag__', ('circle', 'square'))
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>'