#![cfg(test)]
#![allow(
clippy::unwrap_used,
clippy::expect_used,
reason = "test modules may unwrap"
)]
use super::*;
#[test]
fn qpc_from_qp_returns_qpi_directly_below_30() {
assert_eq!(qpc_from_qp(20, 0), 20);
assert_eq!(qpc_from_qp(29, 0), 29);
}
#[test]
fn qpc_from_qp_maps_table_8_15_range() {
assert_eq!(qpc_from_qp(30, 0), 29);
assert_eq!(qpc_from_qp(51, 0), 39);
assert_eq!(qpc_from_qp(46, 0), 38);
}
#[test]
fn qpc_from_qp_clamps_offset_result_into_0_to_51() {
assert_eq!(qpc_from_qp(51, 5), 39);
assert_eq!(qpc_from_qp(0, -5), 0);
}
#[test]
fn dequant_normal_matches_hand_computed_value_for_qp_at_least_24() {
let mut raster = [0i32; 16];
raster[0] = 1;
let out = dequant_normal(&raster, 28).unwrap();
assert_eq!(out[0], 256);
assert_eq!(out[1..], [0; 15]);
}
#[test]
fn dequant_normal_matches_hand_computed_value_for_qp_below_24() {
let mut raster = [0i32; 16];
raster[0] = 1;
let out = dequant_normal(&raster, 0).unwrap();
assert_eq!(out[0], 10);
}
#[test]
fn dequant_luma_dc_matches_hand_computed_values() {
let mut raster = [0i32; 16];
raster[0] = 1;
assert_eq!(dequant_luma_dc(&raster, 36).unwrap()[0], 160);
assert_eq!(dequant_luma_dc(&raster, 0).unwrap()[0], 3);
}
#[test]
fn dequant_chroma_dc_matches_hand_computed_value() {
let out = dequant_chroma_dc(&[1, 0, 0, 0], 5).unwrap();
assert_eq!(out, [9, 0, 0, 0]);
}
#[test]
fn inverse_transform_4x4_of_zero_is_zero() {
assert_eq!(inverse_transform_4x4(&[0; 16]), [0; 16]);
}
#[test]
fn inverse_transform_4x4_spreads_a_dc_only_input_evenly() {
let mut d = [0i32; 16];
d[0] = 64;
assert_eq!(inverse_transform_4x4(&d), [1; 16]);
}
#[test]
fn inverse_hadamard_4x4_of_zero_is_zero() {
assert_eq!(inverse_hadamard_4x4(&[0; 16]), [0; 16]);
}
#[test]
fn inverse_hadamard_4x4_spreads_a_dc_only_input_evenly() {
let mut c = [0i32; 16];
c[0] = 16;
assert_eq!(inverse_hadamard_4x4(&c), [16; 16]);
}
#[test]
fn inverse_hadamard_2x2_of_dc_only_input_spreads_evenly() {
assert_eq!(inverse_hadamard_2x2(&[4, 0, 0, 0]), [4, 4, 4, 4]);
}
#[test]
fn inverse_hadamard_2x2_of_all_ones_collapses_to_dc_only() {
assert_eq!(inverse_hadamard_2x2(&[1, 1, 1, 1]), [4, 0, 0, 0]);
}