use super::*;
#[test]
fn cognition_output_is_reserved_from_32k_and_65k_context_windows() {
let capability = ChatCompletionsCapability {
cognition: Some(true),
..Default::default()
};
let cases = [
(Cognition::Zen, 26_214, 52_428),
(Cognition::Rational, 26_214, 52_428),
(Cognition::Thoughtful, 22_768, 52_428),
(Cognition::Meticulous, 16_768, 49_536),
];
for (cognition, expected_32k, expected_65k) in cases {
let policy = GenerationPolicy::resolve(
Some(cognition),
None,
capability,
ReasoningReplayScope::Never,
);
assert_eq!(
num_ctx_input_ceiling(Some(32_768), 80, policy.max_output_tokens),
Some(expected_32k),
"32K {cognition}"
);
assert_eq!(
num_ctx_input_ceiling(Some(65_536), 80, policy.max_output_tokens),
Some(expected_65k),
"65K {cognition}"
);
}
}
#[test]
fn recovered_full_window_reapplies_output_reserve_without_failing_open() {
assert_eq!(
recovered_input_budget(32_768, 80, Some(16_000), Some(49_536)),
16_768,
"a 32K recovered window reserves meticulous's 16K output"
);
assert_eq!(
recovered_input_budget(8_000, 80, Some(10_000), Some(22_768)),
0,
"output consuming the recovered window remains an authoritative zero"
);
}
#[test]
fn first_turn_fresh_cache_trigger_sees_the_num_ctx_ceiling() {
let budget = initial_send_budget(None, None, num_ctx_input_ceiling(Some(4096), 80, None));
assert_eq!(budget, Some(3276), "80% of 4096 — reply headroom reserved");
let trigger = compression_trigger(
3,
41_355,
39_900,
CompressionTriggerLimits {
count_threshold: 40,
token_threshold: None,
send_budget: budget,
tool_tokens: 1_432,
policy: CompactionTriggerPolicy::HeadroomAware,
has_authoritative_headroom: true,
},
)
.expect("the ceiling must fire the trigger on the first turn");
assert!(trigger.hard_budget, "a real token budget, not a soft halve");
assert_eq!(
trigger.budget,
3_276 - 1_432,
"budget lands in message space: ceiling minus tool-schema tokens"
);
assert_eq!(trigger.max_messages, None, "no count firing here");
}
#[test]
fn absent_num_ctx_leaves_the_budget_unchanged() {
assert_eq!(initial_send_budget(None, None, None), None);
assert_eq!(initial_send_budget(Some(2_000), None, None), Some(2_000));
assert_eq!(initial_send_budget(None, Some(5_000), None), Some(5_000));
assert_eq!(
initial_send_budget(Some(2_000), Some(5_000), None),
Some(5_000),
"an HWM below safe_context is a floor, not a cap — safe_context wins"
);
assert_eq!(
compression_trigger(
3,
41_355,
39_900,
CompressionTriggerLimits {
count_threshold: 40,
token_threshold: None,
send_budget: None,
tool_tokens: 1_432,
policy: CompactionTriggerPolicy::HeadroomAware,
has_authoritative_headroom: false,
},
),
None
);
}
#[test]
fn cached_budget_is_max_of_proven_and_believed() {
assert_eq!(
initial_send_budget(Some(6_068), Some(26_214), None),
Some(26_214),
"HWM below safe_context → safe_context"
);
assert_eq!(
initial_send_budget(Some(8_734), Some(6_553), None),
Some(8_734),
"HWM above safe_context (proven beyond the claim) → HWM"
);
assert_eq!(
initial_send_budget(Some(800_000), Some(64_000), None),
Some(800_000),
"post-cw-400: max_ok_input is the authoritative cap"
);
assert_eq!(
initial_send_budget(Some(800_000), Some(800_000), None),
Some(800_000)
);
}
#[test]
fn ceiling_composes_with_cached_budgets_via_min() {
assert_eq!(
initial_send_budget(
Some(2_135),
None,
num_ctx_input_ceiling(Some(4_096), 80, None),
),
Some(2_135)
);
assert_eq!(
initial_send_budget(
None,
Some(104_857),
num_ctx_input_ceiling(Some(4_096), 80, None),
),
Some(3_276)
);
assert_eq!(
initial_send_budget(
Some(104_857),
Some(104_857),
num_ctx_input_ceiling(Some(4_096), 80, None),
),
Some(3_276)
);
}
#[test]
fn zero_remaining_input_budget_does_not_fail_open() {
assert_eq!(num_ctx_input_ceiling(None, 80, Some(16_000)), None);
assert_eq!(num_ctx_input_ceiling(Some(0), 80, None), Some(0));
assert_eq!(num_ctx_input_ceiling(Some(1), 80, None), Some(0));
assert_eq!(
num_ctx_input_ceiling(Some(4_096), 80, Some(4_096)),
Some(0),
"the output reserve consumes the whole known window"
);
assert_eq!(initial_send_budget(None, None, Some(0)), Some(0));
assert_eq!(
initial_send_budget(Some(2_000), None, Some(0)),
Some(0),
"an authoritative zero ceiling must shadow cached evidence"
);
}
#[test]
fn programmatic_percentage_values_use_config_normalization() {
assert_eq!(num_ctx_input_ceiling(Some(10_000), 0, None), Some(8_000));
assert_eq!(num_ctx_input_ceiling(Some(10_000), 100, None), Some(8_000));
assert_eq!(
num_ctx_input_ceiling(Some(10_000), u32::MAX, None),
Some(8_000)
);
}