#![allow(clippy::unwrap_used, reason = "allow in test files")]
use crate::video::Framerate;
#[test]
fn resolve_target_fps_doubles_source_when_num_or_den_is_zero() {
let source = Framerate {
numerator: 24_000,
denominator: 1_001,
};
assert_eq!(
super::resolve_target_fps(source, 0, 1).unwrap(),
(48_000, 1_001)
);
assert_eq!(
super::resolve_target_fps(source, 25, 0).unwrap(),
(48_000, 1_001)
);
}
#[test]
fn output_num_frames_matches_c_formula() {
assert_eq!(super::output_num_frames(10, 1, 2), 19);
assert_eq!(super::output_num_frames(20, 1, 2), 39);
}
#[test]
fn frame_window_matches_c_rounding() {
let window = super::frame_window(3, 1, 2, 1);
assert_eq!(window.nleft, 1);
assert_eq!(window.nright, 2);
assert_eq!(window.time256, 128);
}
#[test]
fn frame_window_scales_fraction_for_delta_gt_one() {
let window = super::frame_window(1, 2, 3, 2);
assert_eq!(window.nleft, 0);
assert_eq!(window.nright, 2);
assert_eq!(window.time256, 85);
}
#[test]
fn blend_plane_matches_time_weighted_average() {
let mut dst = vec![0u8; 2];
let src = vec![10u8, 30];
let reference = vec![50u8, 70];
super::blend_plane(&mut dst, &src, &reference, 2, 2, 2, 2, 1, 128);
assert_eq!(dst, vec![30, 50]);
}