mirror of
https://github.com/openai/codex.git
synced 2026-11-09 20:50:33 +00:00
110 lines
3.2 KiB
Rust
110 lines
3.2 KiB
Rust
use super::*;
|
|
use crate::ModelsManagerConfig;
|
|
use codex_protocol::openai_models::ReasoningEffortPreset;
|
|
use pretty_assertions::assert_eq;
|
|
|
|
#[test]
|
|
fn ultra_reasoning_requires_feature() {
|
|
let mut model = model_info_from_slug("unknown-model");
|
|
model.default_reasoning_level = Some(ReasoningEffort::Ultra);
|
|
model.supported_reasoning_levels = vec![
|
|
ReasoningEffortPreset {
|
|
effort: ReasoningEffort::Low,
|
|
description: "Low".to_string(),
|
|
},
|
|
ReasoningEffortPreset {
|
|
effort: ReasoningEffort::Ultra,
|
|
description: "Ultra".to_string(),
|
|
},
|
|
];
|
|
let mut expected_without_ultra = model.clone();
|
|
expected_without_ultra.default_reasoning_level = Some(ReasoningEffort::Low);
|
|
expected_without_ultra.supported_reasoning_levels.pop();
|
|
|
|
assert_eq!(
|
|
with_config_overrides(model.clone(), &ModelsManagerConfig::default()),
|
|
expected_without_ultra
|
|
);
|
|
assert_eq!(
|
|
with_config_overrides(
|
|
model.clone(),
|
|
&ModelsManagerConfig {
|
|
ultra_reasoning_enabled: true,
|
|
..Default::default()
|
|
},
|
|
),
|
|
model
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn reasoning_summaries_override_true_enables_support() {
|
|
let model = model_info_from_slug("unknown-model");
|
|
let config = ModelsManagerConfig {
|
|
model_supports_reasoning_summaries: Some(true),
|
|
..Default::default()
|
|
};
|
|
|
|
let updated = with_config_overrides(model.clone(), &config);
|
|
let mut expected = model;
|
|
expected.supports_reasoning_summaries = true;
|
|
|
|
assert_eq!(updated, expected);
|
|
}
|
|
|
|
#[test]
|
|
fn reasoning_summaries_override_false_does_not_disable_support() {
|
|
let mut model = model_info_from_slug("unknown-model");
|
|
model.supports_reasoning_summaries = true;
|
|
let config = ModelsManagerConfig {
|
|
model_supports_reasoning_summaries: Some(false),
|
|
..Default::default()
|
|
};
|
|
|
|
let updated = with_config_overrides(model.clone(), &config);
|
|
|
|
assert_eq!(updated, model);
|
|
}
|
|
|
|
#[test]
|
|
fn reasoning_summaries_override_false_is_noop_when_model_is_false() {
|
|
let model = model_info_from_slug("unknown-model");
|
|
let config = ModelsManagerConfig {
|
|
model_supports_reasoning_summaries: Some(false),
|
|
..Default::default()
|
|
};
|
|
|
|
let updated = with_config_overrides(model.clone(), &config);
|
|
|
|
assert_eq!(updated, model);
|
|
}
|
|
|
|
#[test]
|
|
fn model_context_window_override_clamps_to_max_context_window() {
|
|
let mut model = model_info_from_slug("unknown-model");
|
|
model.context_window = Some(273_000);
|
|
model.max_context_window = Some(400_000);
|
|
let config = ModelsManagerConfig {
|
|
model_context_window: Some(500_000),
|
|
..Default::default()
|
|
};
|
|
|
|
let updated = with_config_overrides(model.clone(), &config);
|
|
let mut expected = model;
|
|
expected.context_window = Some(400_000);
|
|
|
|
assert_eq!(updated, expected);
|
|
}
|
|
|
|
#[test]
|
|
fn model_context_window_uses_model_value_without_override() {
|
|
let mut model = model_info_from_slug("unknown-model");
|
|
model.context_window = Some(273_000);
|
|
model.max_context_window = Some(400_000);
|
|
let config = ModelsManagerConfig::default();
|
|
|
|
let updated = with_config_overrides(model.clone(), &config);
|
|
|
|
assert_eq!(updated, model);
|
|
}
|