From 1cb33dabdd4afa63cb12881e3cb628438fa308e4 Mon Sep 17 00:00:00 2001 From: "Dylan M. Taylor" Date: Fri, 13 Nov 2026 08:17:32 -0500 Subject: [PATCH] Cover incremental PSD zlib stream draining --- crates/psd/src/compression/tests.rs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/crates/psd/src/compression/tests.rs b/crates/psd/src/compression/tests.rs index 9f8c61664..6e0d86a7e 100644 --- a/crates/psd/src/compression/tests.rs +++ b/crates/psd/src/compression/tests.rs @@ -1,5 +1,21 @@ use super::*; +#[test] +fn incremental_zlib_encoder_roundtrips_across_drains() { + let expected = (0usize..32_768).map(|n| (n.wrapping_mul(37) % 251) as u8).collect::>(); + let mut encoder = ZlibEncoder::new(); + let mut encoded = Vec::new(); + for chunk in expected.chunks(997) { + encoder.write_all(chunk).unwrap(); + encoded.extend(encoder.take_output()); + } + encoded.extend(encoder.finish().unwrap()); + + let mut decoded = Vec::new(); + flate2::read::ZlibDecoder::new(encoded.as_slice()).read_to_end(&mut decoded).unwrap(); + assert_eq!(decoded, expected); +} + /// The straightforward index-based versions, kept as the oracle for the /// register-carried rewrites in [`predict`] and [`unpredict`]. mod reference {