pub(crate) use crate::compressor::core::shared::constants::*;
pub(crate) const WINDOW_BITS_FAST: usize = 18;
pub(crate) const MAX_BACKWARD_DISTANCE: usize = (1 << WINDOW_BITS_FAST) - WINDOW_GAP;
pub(crate) const Q0_MAX_HASH_ENTRIES: usize = 1 << 15;
pub(crate) const Q1_MAX_HASH_ENTRIES: usize = 1 << 17;
pub(crate) const MIN_HASH_ENTRIES: usize = 256;
pub(crate) const Q0_MIN_MATCH: usize = 5;
pub(crate) const Q1_MIN_MATCH_SMALL: usize = 4;
pub(crate) const Q1_MIN_MATCH_LARGE: usize = 6;
pub(crate) const Q0_FIRST_BLOCK_SIZE: usize = 3 << 15;
pub(crate) const Q0_MERGE_BLOCK_SIZE: usize = 1 << 16;
pub(crate) const Q0_MAX_MERGED_BLOCK_SIZE: usize = 1 << 20;
pub(crate) const Q1_BLOCK_SIZE: usize = 1 << 17;
pub(crate) const LITERAL_SAMPLE_RATE: usize = 29;
pub(crate) const BLOCK_SAMPLE_RATE: usize = 43;
pub(crate) const Q0_MIN_RATIO: usize = 980;
pub(crate) const Q1_MIN_RATIO: f64 = 0.98;
pub(crate) const SHORT_INSERT_LIMIT: usize = 6210;
pub(crate) const LONG_INSERT_LIMIT: usize = 22594;
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn constants_match_the_reference_encoder() {
assert_eq!(WINDOW_BITS_FAST, 18);
assert_eq!(MAX_BACKWARD_DISTANCE, 262_128);
assert_eq!(Q0_MAX_HASH_ENTRIES, 32_768);
assert_eq!(Q1_MAX_HASH_ENTRIES, 131_072);
assert_eq!(Q0_FIRST_BLOCK_SIZE, 98_304);
assert_eq!(Q0_MERGE_BLOCK_SIZE, 65_536);
assert_eq!(Q0_MAX_MERGED_BLOCK_SIZE, 1_048_576);
assert_eq!(Q1_BLOCK_SIZE, 131_072);
assert_eq!(LITERAL_SAMPLE_RATE, 29);
assert_eq!(BLOCK_SAMPLE_RATE, 43);
assert_eq!(SHORT_INSERT_LIMIT, 6_210);
assert_eq!(LONG_INSERT_LIMIT, 22_594);
}
}