class OneOfMessage(Message): a: int = Int32(number=1, required=False) b: int = Int32(number=2, required=False) c: int = Int32(number=3, required=False) d: int = Int32(number=4, required=False) first_one_of = one_of('a', 'b') second_one_of = one_of('c', 'd')
class _(Message): x = Int32(number=1, required=False) number = one_of('x')
class _(Message): x = Int32(number=1, default="123")
class Point(Message): x = Int32(number=1) y = Int32(number=1)
class OneOfMessage(Message): x: int = Int32(number=1, required=False) y: int = Int32(number=2, required=False) one_of_pair = one_of('x', 'y')
def test_decode(self, value, expected_value): stream = io.BytesIO(value) decoded_value = Int32(number=1).decode(stream) assert decoded_value == expected_value
class MyMessage(Message): x = Int32(number=1, required=False) y = Int32(number=2, required=False)
class SimpleMessage(Message): x: int = Int32(number=1, required=True)
class UserV2(Message): name: str = String(number=1) x: int = Int32(number=2)
def test_valid_field_number(self, valid_field_number): Int32(number=valid_field_number)
def test_invalid_field_number(self, invalid_field_number): with pytest.raises(FieldValidationError): Int32(number=invalid_field_number)
def test_invalid_input(self, invalid_input): with pytest.raises(ValueError): Int32(number=1).validate_value(invalid_input)
def test_valid_input(self, valid_input): Int32(number=1).validate_value(valid_input)
def test_encode_header(): assert Int32(number=1).header == b'\x08'
def test_decode_bad_input(self, bad_input): stream = io.BytesIO(bad_input) with pytest.raises(MessageDecodeError): Int32(number=1).decode(stream)
class SimpleMessage(Message): x: int = Int32(number=1)
class SimpleMessage(Message): x: int = Int32(number=1, default=0)
class OptionalDefault(Message): number: int = Int32(number=1, default=123, required=True)
class MyMessage(Message): x = Int32(number=1, default=100) y = Int32(number=2)
class OneOfMessage(Message): x: int = Int32(number=1, required=False) y: int = Int32(number=2, required=False) z: int = Int32(number=3, required=False) one_of_three = one_of('x', 'y', 'z')
class MyMessage(Message): x: int = Int32(number=1, required=True) y: int = Int32(number=2, default=default_value)
def test_encode(self, value, expected_value): encoded_value = Int32(number=1).encode_value(value) assert encoded_value == expected_value