diff --git a/crates/arr-core/src/policy.rs b/crates/arr-core/src/policy.rs index 9ab530c..223b248 100644 --- a/crates/arr-core/src/policy.rs +++ b/crates/arr-core/src/policy.rs @@ -695,20 +695,40 @@ mod tests { #[test] fn dolby_vision_profile_5_is_rejected() { - assert_dolby_vision_verdict(5, None, true); + assert_dolby_vision_verdict(&policy(), 5, None, true); } #[test] fn dolby_vision_profile_7_is_rejected() { - assert_dolby_vision_verdict(7, Some(6), true); + assert_dolby_vision_verdict(&policy(), 7, Some(6), true); } #[test] fn dolby_vision_profile_8_1_is_accepted() { - assert_dolby_vision_verdict(8, Some(1), false); + assert_dolby_vision_verdict(&policy(), 8, Some(1), false); } - fn assert_dolby_vision_verdict(profile: u8, compatibility_id: Option, rejected: bool) { + #[test] + fn compatibility_specific_rule_matches_only_that_id() { + let mut policy = policy(); + policy + .hdr_rules + .rejected_dolby_vision_profiles + .push(DolbyVisionProfile { + profile: 8, + compatibility_id: Some(2), + }); + + assert_dolby_vision_verdict(&policy, 8, Some(2), true); + assert_dolby_vision_verdict(&policy, 8, Some(1), false); + } + + fn assert_dolby_vision_verdict( + policy: &Policy, + profile: u8, + compatibility_id: Option, + rejected: bool, + ) { let mut media = probed(Resolution::R2160p, Some(Source::WebDl)); let profile = DolbyVisionProfile { profile, @@ -717,7 +737,7 @@ mod tests { media.hdr = HdrFormat::DolbyVision(profile); let report = evaluate( - &policy(), + policy, &MovieOverrides::default(), &en(), Candidate::PostDownload(&media),