def test_enum_in_repeated(caplog): msg = RepeatedFields(enumlist=[0, 1, 2, 3]) buf = BytesIO() protobuf.dump_message(buf, msg) assert len(caplog.records) == 2 for record in caplog.records: assert record.levelname == "WARNING" assert "unknown for type t" in record.getMessage()
def serialize(coin, icon): c = dict(coin) c['signed_message_header'] = c['signed_message_header'].encode() c['hash_genesis_block'] = unhexlify(c['hash_genesis_block']) c['icon'] = icon msg = CoinDef(**c) w = Writer() dump_message(w, msg) return bytes(w.buf)
def test_repeated(): msg = RepeatedFields(uintlist=[1, 2, 3], enumlist=[0, 1, 0, 1], strlist=["hello", "world"]) buf = BytesIO() protobuf.dump_message(buf, msg) buf.seek(0) retr = protobuf.load_message(buf, RepeatedFields) assert retr == msg
def test_simple_message(): msg = PrimitiveMessage( uvarint=12345678910, svarint=-12345678910, bool=True, bytes=b"\xDE\xAD\xCA\xFE", unicode="Příliš žluťoučký kůň úpěl ďábelské ódy 😊", ) buf = BytesIO() protobuf.dump_message(buf, msg) buf.seek(0) retr = protobuf.load_message(buf, PrimitiveMessage) assert msg == retr assert retr.uvarint == 12345678910 assert retr.svarint == -12345678910 assert retr.bool is True assert retr.bytes == b"\xDE\xAD\xCA\xFE" assert retr.unicode == "Příliš žluťoučký kůň úpěl ďábelské ódy 😊"
def test_validate_enum(caplog): caplog.set_level(logging.INFO) # round-trip of a valid value msg = EnumMessageMoreValues(enum=0) buf = BytesIO() protobuf.dump_message(buf, msg) buf.seek(0) retr = protobuf.load_message(buf, EnumMessageLessValues) assert retr.enum == msg.enum assert not caplog.records # dumping an invalid enum value fails msg.enum = 19 buf.seek(0) protobuf.dump_message(buf, msg) assert len(caplog.records) == 1 record = caplog.records.pop(0) assert record.levelname == "INFO" assert record.getMessage() == "Value 19 unknown for type t" msg.enum = 3 buf.seek(0) protobuf.dump_message(buf, msg) buf.seek(0) protobuf.load_message(buf, EnumMessageLessValues) assert len(caplog.records) == 1 record = caplog.records.pop(0) assert record.levelname == "INFO" assert record.getMessage() == "Value 3 unknown for type t"
def dump_message(msg): writer = BytesIO() protobuf.dump_message(writer, msg) return writer.getvalue()
def serialize_coindef(proto, icon): proto.icon = icon buf = io.BytesIO() protobuf.dump_message(buf, proto) return buf.getvalue()