use super::*;
#[test]
#[should_panic(expected = "strategy must be a upstream zstd 1..=9 ordinal")]
fn adjust_for_panics_on_out_of_range_strategy() {
let _ = LdmParams::adjust_for(27, 24);
}
#[test]
fn adjust_strategy_to_hash_rate_log_matches_table() {
assert_eq!(LdmParams::adjust_for(27, 1).hash_rate_log, 7);
assert_eq!(LdmParams::adjust_for(27, 3).hash_rate_log, 6);
assert_eq!(LdmParams::adjust_for(27, 6).hash_rate_log, 5);
assert_eq!(LdmParams::adjust_for(27, 9).hash_rate_log, 4);
}
#[test]
fn adjust_hash_log_clamps_within_bounds() {
assert_eq!(LdmParams::adjust_for(27, 1).hash_log, 20);
assert_eq!(LdmParams::adjust_for(10, 1).hash_log, LDM_HASHLOG_MIN);
assert_eq!(LdmParams::adjust_for(7, 1).hash_log, LDM_HASHLOG_MIN);
}
#[test]
fn adjust_min_match_halved_for_btultra_and_above() {
assert_eq!(
LdmParams::adjust_for(27, 7).min_match_length,
LDM_MIN_MATCH_LENGTH as u32
);
assert_eq!(
LdmParams::adjust_for(27, 8).min_match_length,
(LDM_MIN_MATCH_LENGTH / 2) as u32
);
assert_eq!(
LdmParams::adjust_for(27, 9).min_match_length,
(LDM_MIN_MATCH_LENGTH / 2) as u32
);
}
#[test]
fn adjust_bucket_size_log_clamps_strategy_to_bounds() {
assert_eq!(LdmParams::adjust_for(27, 1).bucket_size_log, 4);
assert_eq!(LdmParams::adjust_for(27, 4).bucket_size_log, 4);
assert_eq!(LdmParams::adjust_for(27, 7).bucket_size_log, 7);
assert_eq!(LdmParams::adjust_for(27, 9).bucket_size_log, 8);
}
#[test]
fn derived_helpers_match_log_definitions() {
let p = LdmParams::adjust_for(27, 5);
assert_eq!(p.hash_table_entries(), 1usize << p.hash_log);
assert_eq!(p.bucket_slots(), 1usize << p.bucket_size_log);
}