diff --git a/src/core/mod.rs b/src/core/mod.rs index 9836c2d..fa729d6 100644 --- a/src/core/mod.rs +++ b/src/core/mod.rs @@ -892,4 +892,42 @@ mod tests { let level = frame_level(&full); assert!(level > 0.99 && level <= 1.0, "full-scale level was {level}"); } + + #[test] + fn volume_truncates_toward_zero() { + let mut frame = vec![3, -3, 5, -5]; + apply_volume(&mut frame, 0.5); + assert_eq!(frame, vec![1, -1, 2, -2]); + } + + #[test] + fn volume_amplifies_without_saturating() { + let mut frame = vec![1000, -1000]; + apply_volume(&mut frame, 2.0); + assert_eq!(frame, vec![2000, -2000]); + } + + #[test] + fn three_peers_sum_without_saturation() { + let a = vec![10, 20]; + let b = vec![3, 4]; + let c = vec![100, -50]; + let mixed = mix_frames(&[a, b, c], 2); + assert_eq!(mixed, vec![113, -26]); + } + + #[test] + fn mix_zero_pads_output_longer_than_peer_frames() { + let a = vec![100, 200]; + let mixed = mix_frames(&[a], 4); + assert_eq!(mixed, vec![100, 200, 0, 0]); + } + + #[test] + fn frame_level_mid_range() { + let frame = vec![16384; 64]; + let level = frame_level(&frame); + assert!((level - 0.5).abs() < 1e-3, "mid-range level was {level}"); + } } +