diff --git a/src-tauri/src/capture.rs b/src-tauri/src/capture.rs index 06cfa9e..f12633e 100644 --- a/src-tauri/src/capture.rs +++ b/src-tauri/src/capture.rs @@ -903,3 +903,38 @@ fn process_payload( }, ); } + + +#[cfg(test)] +mod self_test_regressions { + use super::*; + use std::io::Cursor; + + fn read_test_capture(mut reader: R) -> Result, std::io::Error> { + let mut bytes = Vec::new(); + let mut buffer = [0u8; 32 * 1024]; + loop { + match reader.read(&mut buffer) { + Ok(0) => break, + Ok(read) => bytes.extend_from_slice(&buffer[..read]), + Err(error) => return Err(error), + } + } + Ok(bytes) + } + + #[test] + fn self_test_stream_payload_is_preserved_for_capture_processing() { + let payload = b"%PDF-1.4\nFieldLens capture self-test\n%%EOF\n"; + let bytes = read_test_capture(Cursor::new(payload)).expect("read self-test payload"); + assert_eq!(bytes, payload); + assert!(!bytes.is_empty()); + } + + #[test] + fn empty_self_test_stream_stays_empty() { + let bytes = read_test_capture(Cursor::new(Vec::::new())) + .expect("read empty self-test payload"); + assert!(bytes.is_empty()); + } +}