From a26a13bce45ba86c960986677c44a3d3bcf20e30 Mon Sep 17 00:00:00 2001 From: Wanjohi Date: Sun, 18 Oct 2026 23:36:14 +0300 Subject: [PATCH] test(nescapture): move the pause test into its own module --- apps/nescapture/src/encode.rs | 37 ++++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/apps/nescapture/src/encode.rs b/apps/nescapture/src/encode.rs index 0c3913ab..ec967fcd 100644 --- a/apps/nescapture/src/encode.rs +++ b/apps/nescapture/src/encode.rs @@ -1564,6 +1564,27 @@ fn apply_pause_message(msg: u8, paused: &AtomicBool, idr_requested: &AtomicBool) } } +#[cfg(test)] +mod pause_tests { + use super::*; + + #[test] + fn pause_stops_and_resume_starts_with_a_keyframe() { + let paused = AtomicBool::new(false); + let idr = AtomicBool::new(false); + apply_pause_message(MSG_WINDOW_PAUSE, &paused, &idr); + assert!(paused.load(Ordering::Relaxed)); + assert!(!idr.load(Ordering::Relaxed), "a pause asks for nothing"); + apply_pause_message(MSG_WINDOW_RESUME, &paused, &idr); + assert!(!paused.load(Ordering::Relaxed)); + assert!(idr.load(Ordering::Relaxed)); + // A resume that was never paused is still a keyframe request, harmless. + idr.store(false, Ordering::Relaxed); + apply_pause_message(MSG_WINDOW_RESUME, &paused, &idr); + assert!(idr.load(Ordering::Relaxed)); + } +} + fn encoder_thread( mut cfg: EncoderConfig, frame_rx: mpsc::Receiver, @@ -3888,22 +3909,6 @@ mod encoder_identity_tests { assert!(encoder_still_serves(HD, HD)); } - #[test] - fn pause_stops_and_resume_starts_with_a_keyframe() { - let paused = AtomicBool::new(false); - let idr = AtomicBool::new(false); - apply_pause_message(MSG_WINDOW_PAUSE, &paused, &idr); - assert!(paused.load(Ordering::Relaxed)); - assert!(!idr.load(Ordering::Relaxed), "a pause asks for nothing"); - apply_pause_message(MSG_WINDOW_RESUME, &paused, &idr); - assert!(!paused.load(Ordering::Relaxed)); - assert!(idr.load(Ordering::Relaxed)); - // A resume that was never paused is still a keyframe request, harmless. - idr.store(false, Ordering::Relaxed); - apply_pause_message(MSG_WINDOW_RESUME, &paused, &idr); - assert!(idr.load(Ordering::Relaxed)); - } - #[test] fn a_resolution_change_rebuilds_in_either_direction() { // The regression. Shrinking left the encoder sending the old geometry