import random import pytest from framing import FrameDecoder, encode def test_any_split_restores_messages(): msgs = [{"seq": i, "text": "你好" * i} for i in range(20)] stream = b"".join(encode(m) for m in msgs) rng = random.Random(42) for _ in range(100): # 随机切分 100 种方式 dec, out, i = FrameDecoder(), [], 0 while i < len(stream): j = i + rng.randint(1, 17) out += dec.feed(stream[i:j]) i = j assert out == msgs def test_rejects_oversized_frame(): with pytest.raises(ValueError): FrameDecoder(max_frame=10).feed(encode({"text": "x" * 100}))