use j2k_codec_math::dwt;
#[test]
fn generated_source_comparison_ignores_only_line_endings() {
assert!(generated_source_matches(
"alpha\r\nbeta\r\n",
"alpha\nbeta\n"
));
assert!(!generated_source_matches(
"alpha\r\ngamma\r\n",
"alpha\nbeta\n"
));
}
#[test]
fn metal_dwt97_fragment_matches_rust_constants() {
let expected = [
"// Generated from crates/j2k-codec-math/src/dwt.rs.".to_string(),
format!(
"constant float CODEC_MATH_DWT97_ALPHA = {}f;",
compact_f32(dwt::DWT97_ALPHA_F32)
),
format!(
"constant float CODEC_MATH_DWT97_BETA = {}f;",
compact_f32(dwt::DWT97_BETA_F32)
),
format!(
"constant float CODEC_MATH_DWT97_GAMMA = {}f;",
compact_f32(dwt::DWT97_GAMMA_F32)
),
format!(
"constant float CODEC_MATH_DWT97_DELTA = {}f;",
compact_f32(dwt::DWT97_DELTA_F32)
),
format!(
"constant float CODEC_MATH_DWT97_KAPPA = {}f;",
compact_f32(dwt::DWT97_KAPPA_F32)
),
"constant float CODEC_MATH_DWT97_INV_KAPPA = 1.0f / CODEC_MATH_DWT97_KAPPA;".to_string(),
format!(
"constant float CODEC_MATH_IDWT97_NEG_ALPHA = {}f;",
compact_f32(dwt::IDWT97_NEG_ALPHA_F32)
),
format!(
"constant float CODEC_MATH_IDWT97_NEG_BETA = {}f;",
compact_f32(dwt::IDWT97_NEG_BETA_F32)
),
format!(
"constant float CODEC_MATH_IDWT97_NEG_GAMMA = {}f;",
compact_f32(dwt::IDWT97_NEG_GAMMA_F32)
),
format!(
"constant float CODEC_MATH_IDWT97_NEG_DELTA = {}f;",
compact_f32(dwt::IDWT97_NEG_DELTA_F32)
),
]
.join("\n")
+ "\n";
assert!(
generated_source_matches(
include_str!("../generated/dwt97_constants.metal"),
&expected
),
"generated Metal constants differ from the Rust source constants"
);
}
#[test]
fn rust_dwt97_fragment_matches_rust_constants() {
let expected = [
"// Generated from crates/j2k-codec-math/src/dwt.rs.".to_string(),
format!(
"pub const CODEC_MATH_DWT97_ALPHA: f32 = {};",
compact_f32(dwt::DWT97_ALPHA_F32)
),
format!(
"pub const CODEC_MATH_DWT97_BETA: f32 = {};",
compact_f32(dwt::DWT97_BETA_F32)
),
format!(
"pub const CODEC_MATH_DWT97_GAMMA: f32 = {};",
compact_f32(dwt::DWT97_GAMMA_F32)
),
format!(
"pub const CODEC_MATH_DWT97_DELTA: f32 = {};",
compact_f32(dwt::DWT97_DELTA_F32)
),
format!(
"pub const CODEC_MATH_DWT97_KAPPA: f32 = {};",
compact_f32(dwt::DWT97_KAPPA_F32)
),
"pub const CODEC_MATH_DWT97_INV_KAPPA: f32 = 1.0 / CODEC_MATH_DWT97_KAPPA;".to_string(),
format!(
"pub const CODEC_MATH_IDWT97_NEG_ALPHA: f32 = {};",
compact_f32(dwt::IDWT97_NEG_ALPHA_F32)
),
format!(
"pub const CODEC_MATH_IDWT97_NEG_BETA: f32 = {};",
compact_f32(dwt::IDWT97_NEG_BETA_F32)
),
format!(
"pub const CODEC_MATH_IDWT97_NEG_GAMMA: f32 = {};",
compact_f32(dwt::IDWT97_NEG_GAMMA_F32)
),
format!(
"pub const CODEC_MATH_IDWT97_NEG_DELTA: f32 = {};",
compact_f32(dwt::IDWT97_NEG_DELTA_F32)
),
]
.join("\n")
+ "\n";
assert!(
generated_source_matches(include_str!("../generated/dwt97_constants.rs"), &expected),
"generated Rust constants differ from the source constants"
);
}
fn compact_f32(value: f32) -> String {
format!("{value:?}")
}
fn generated_source_matches(actual: &str, expected: &str) -> bool {
actual.replace("\r\n", "\n") == expected.replace("\r\n", "\n")
}