def check_transcoding(data, src_encoding, dest_encoding, chunk_sizes): chunk_sizes = iter(chunk_sizes) stream = pa.transcoding_input_stream( pa.BufferReader(data.encode(src_encoding)), src_encoding, dest_encoding) out = [] while True: buf = stream.read(next(chunk_sizes)) out.append(buf) if not buf: break out = b''.join(out) assert out.decode(dest_encoding) == data
def test_transcoding_no_ops(src_encoding, dest_encoding): # No indirection is wasted when a trivial transcoding is requested stream = pa.BufferReader(b"abc123") assert pa.transcoding_input_stream( stream, src_encoding, dest_encoding) is stream
def test_transcoding_decoding_error(src_encoding, dest_encoding): # The given bytestring is not valid in the source encoding stream = pa.transcoding_input_stream(pa.BufferReader(b"\xff\xff\xff\xff"), src_encoding, dest_encoding) with pytest.raises(UnicodeError): stream.read(1)