use crate::{Frame, info::MockInfoBuilder, sound::Sound}; pub fn expect_frame_soon(expected_frame: Frame, sound: &mut dyn Sound) { const NUM_SAMPLES_TO_WAIT: usize = 10; let mut collected_samples = vec![]; for _ in 0..NUM_SAMPLES_TO_WAIT { let frame = sound.process_one(1.0, &MockInfoBuilder::new().build()); if frame == expected_frame { return; } collected_samples.push(frame); } panic!( "Sound did not output frame with value {:?} within {} samples. Recent samples: {:#?}", expected_frame, NUM_SAMPLES_TO_WAIT, collected_samples ); }