| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- import pytest
- from cq2_sdk.utils.encoding import encode6bit, decode6bit
- def test_encode_empty():
- assert encode6bit(b"") == b""
- def test_decode_empty():
- assert decode6bit(b"") == b""
- def test_encode_ascii_produces_printable():
- # 3 input bytes -> 4 output bytes
- result = encode6bit(b"abc")
- assert isinstance(result, bytes)
- assert len(result) == 4
- # All output bytes should be printable ASCII (>= 0x3B offset means >= 0x3B)
- for b in result:
- assert 0x3B <= b <= 0x3B + 0x3F # 0x3B to 0x7A
- def test_roundtrip_3_bytes():
- original = b"abc"
- assert decode6bit(encode6bit(original)) == original
- def test_roundtrip_typical_password():
- original = b"hello world 123 !@#"
- encoded = encode6bit(original)
- decoded = decode6bit(encoded)
- assert decoded == original
- @pytest.mark.parametrize("inp", [
- b"a",
- b"ab",
- b"abcd",
- b"abcdef",
- b"a" * 100,
- b"\x00\xff\x7f\x80",
- bytes(range(256)),
- ])
- def test_roundtrip_various_lengths(inp):
- encoded = encode6bit(inp)
- decoded = decode6bit(encoded)
- assert decoded == inp, f"failed for input of length {len(inp)}"
- def test_encode_known_vector_abc():
- # Literal derived from the extracted substitution table and ARM64 codec.
- assert encode6bit(b"abc") == b"xK_H"
|