#![allow(clippy::unwrap_used, reason = "allow in test files")]
use std::num::{NonZeroU8, NonZeroUsize};
use crate::params::{MotionFlags, Subpel};
use super::MVAnalysisData;
fn sample_analysis_data() -> MVAnalysisData {
MVAnalysisData {
blk_size_x: NonZeroUsize::new(8).unwrap(),
blk_size_y: NonZeroUsize::new(8).unwrap(),
pel: Subpel::Half,
level_count: 3,
delta_frame: 1,
is_backward: true,
motion_flags: MotionFlags::USE_CHROMA_MOTION,
width: NonZeroUsize::new(640).unwrap(),
height: NonZeroUsize::new(480).unwrap(),
overlap_x: 2,
overlap_y: 2,
blk_x: NonZeroUsize::new(80).unwrap(),
blk_y: NonZeroUsize::new(60).unwrap(),
bits_per_sample: NonZeroU8::new(10).unwrap(),
y_ratio_uv: NonZeroU8::new(2).unwrap(),
x_ratio_uv: NonZeroU8::new(2).unwrap(),
h_padding: 16,
v_padding: 16,
}
}
#[test]
fn bytes_round_trip_through_from_bytes() {
let data = sample_analysis_data();
let decoded = MVAnalysisData::from_bytes(&data.bytes(), "Analyse", "vectors").unwrap();
assert_eq!(decoded.blk_size_x, data.blk_size_x);
assert_eq!(decoded.blk_size_y, data.blk_size_y);
assert_eq!(decoded.pel, data.pel);
assert_eq!(decoded.level_count, data.level_count);
assert_eq!(decoded.delta_frame, data.delta_frame);
assert_eq!(decoded.is_backward, data.is_backward);
assert_eq!(decoded.motion_flags, data.motion_flags);
assert_eq!(decoded.width, data.width);
assert_eq!(decoded.height, data.height);
assert_eq!(decoded.overlap_x, data.overlap_x);
assert_eq!(decoded.overlap_y, data.overlap_y);
assert_eq!(decoded.blk_x, data.blk_x);
assert_eq!(decoded.blk_y, data.blk_y);
assert_eq!(decoded.bits_per_sample, data.bits_per_sample);
assert_eq!(decoded.y_ratio_uv, data.y_ratio_uv);
assert_eq!(decoded.x_ratio_uv, data.x_ratio_uv);
assert_eq!(decoded.h_padding, data.h_padding);
assert_eq!(decoded.v_padding, data.v_padding);
}
#[test]
fn from_bytes_rejects_wrong_size() {
let err = MVAnalysisData::from_bytes(&[0u8; 4], "Analyse", "vectors").unwrap_err();
assert!(err.to_string().contains("has wrong size"));
}