use super::{STREAM_ABS_HEADROOM, check_stream_abs_headroom};
#[test]
fn accepts_exactly_at_the_boundary() {
let history_abs_start = usize::MAX - STREAM_ABS_HEADROOM - 2;
check_stream_abs_headroom(history_abs_start, 1, 1);
}
#[test]
fn accepts_well_below_the_boundary() {
check_stream_abs_headroom(0, 1 << 20, 1 << 20);
}
#[test]
#[should_panic(expected = "STREAM_ABS_HEADROOM")]
fn rejects_one_byte_past_the_boundary() {
let history_abs_start = usize::MAX - STREAM_ABS_HEADROOM - 1;
check_stream_abs_headroom(history_abs_start, 1, 1);
}
#[test]
#[should_panic(expected = "STREAM_ABS_HEADROOM")]
fn rejects_history_abs_start_already_too_high() {
check_stream_abs_headroom(usize::MAX - 10, 0, 0);
}
#[test]
#[should_panic(expected = "STREAM_ABS_HEADROOM")]
fn counts_bytes_already_carried_by_the_ingest_buffer() {
let carried = 64usize;
let history_abs_start = usize::MAX - STREAM_ABS_HEADROOM - carried - 1;
let mut table = super::MatchTable::new(1 << 16);
table.history_abs_start = history_abs_start;
table.fill_uncommitted(carried, |buf| {
buf.resize(carried, 0);
(carried, false)
});
table.fill_uncommitted(carried, |buf| {
buf.resize(2 * carried, 0);
(carried, true)
});
}