22
33from freezegun import freeze_time
44
5- from roborock .roborock_message import RoborockMessage , RoborockMessageProtocol
5+ from roborock .roborock_message import MAX_PAYLOAD_REPR_LEN , RoborockMessage , RoborockMessageProtocol
66
77
88def test_roborock_message () -> None :
@@ -23,3 +23,50 @@ def test_roborock_message() -> None:
2323 assert message1 .seq != message2 .seq
2424 assert message1 .random != message2 .random
2525 assert message1 .timestamp > message2 .timestamp
26+
27+
28+ def test_roborock_message_repr () -> None :
29+ """Test custom __repr__ of RoborockMessage truncates long payloads."""
30+ # 1. Payload is None
31+ msg_none = RoborockMessage (
32+ protocol = RoborockMessageProtocol .RPC_REQUEST ,
33+ payload = None ,
34+ seq = 123456 ,
35+ version = b"1.0" ,
36+ random = 12345 ,
37+ timestamp = 1700000000 ,
38+ )
39+ assert repr (msg_none ) == (
40+ "RoborockMessage(protocol=101, payload=None, seq=123456, version=b'1.0', random=12345, timestamp=1700000000)"
41+ )
42+
43+ # 2. Payload is short (<= MAX_PAYLOAD_REPR_LEN bytes)
44+ short_payload = b"a" * MAX_PAYLOAD_REPR_LEN
45+ msg_short = RoborockMessage (
46+ protocol = RoborockMessageProtocol .RPC_REQUEST ,
47+ payload = short_payload ,
48+ seq = 123456 ,
49+ version = b"1.0" ,
50+ random = 12345 ,
51+ timestamp = 1700000000 ,
52+ )
53+ assert repr (msg_short ) == (
54+ f"RoborockMessage(protocol=101, payload={ repr (short_payload )} , seq=123456, "
55+ "version=b'1.0', random=12345, timestamp=1700000000)"
56+ )
57+
58+ # 3. Payload is long (> MAX_PAYLOAD_REPR_LEN bytes)
59+ long_payload = b"a" * (MAX_PAYLOAD_REPR_LEN + 10 )
60+ msg_long = RoborockMessage (
61+ protocol = RoborockMessageProtocol .RPC_REQUEST ,
62+ payload = long_payload ,
63+ seq = 123456 ,
64+ version = b"1.0" ,
65+ random = 12345 ,
66+ timestamp = 1700000000 ,
67+ )
68+ expected_payload_repr = f"b'{ 'a' * MAX_PAYLOAD_REPR_LEN } ...' (length: { MAX_PAYLOAD_REPR_LEN + 10 } )"
69+ assert repr (msg_long ) == (
70+ f"RoborockMessage(protocol=101, payload={ expected_payload_repr } , seq=123456, "
71+ "version=b'1.0', random=12345, timestamp=1700000000)"
72+ )
0 commit comments