Files
galaxy/crates/galaxy_agent_rig/src/native_tests.rs
T

88 lines
2.9 KiB
Rust

use super::native_descriptor;
#[test]
fn native_descriptors_are_provider_specific() {
let descriptor = native_descriptor("anthropic", "claude-sonnet");
assert_eq!(descriptor.id, "rig-anthropic:claude-sonnet");
assert_eq!(descriptor.display_name, "Rig / anthropic / claude-sonnet");
}
#[test]
fn anthropic_discovery_prefers_live_limits_over_catalog_defaults() {
let model = super::anthropic_model_info(&serde_json::json!({
"id": "claude-opus-4-6", "display_name": "Opus", "max_input_tokens": 500000, "max_tokens": 32000
})).unwrap();
assert_eq!(model.context_size, Some(500000));
assert_eq!(model.max_output_tokens, Some(32000));
}
#[test]
fn anthropic_discovery_uses_exact_catalog_limits_when_api_omits_them() {
let model = super::anthropic_model_info(&serde_json::json!({
"id": "claude-opus-4-6", "max_input_tokens": null, "max_tokens": null
}))
.unwrap();
assert_eq!(model.context_size, Some(1000000));
assert_eq!(model.max_output_tokens, Some(128000));
let unknown =
super::anthropic_model_info(&serde_json::json!({"id": "claude-unknown"})).unwrap();
assert_eq!(unknown.context_size, None);
assert_eq!(unknown.max_output_tokens, None);
}
#[test]
fn anthropic_discovery_reads_only_supported_effort_capabilities() {
let model = super::anthropic_model_info(&serde_json::json!({
"id": "claude-future", "capabilities": {"effort": {
"supported": true, "low": {"supported": true},
"medium": {"supported": false}, "high": {"supported": true},
"xhigh": {"supported": true}, "max": {"supported": false}
}}
}))
.unwrap();
assert_eq!(model.reasoning_efforts, ["low", "high", "xhigh"]);
assert!(super::anthropic_reasoning_efforts(&serde_json::json!({
"capabilities": {"effort": {"supported": false, "low": {"supported": true}}}
}))
.is_empty());
assert!(super::anthropic_reasoning_efforts(&serde_json::json!({
"id": "claude-opus-4-6"
}))
.is_empty());
}
#[test]
fn native_reasoning_selections_use_provider_request_fields() {
assert_eq!(
super::anthropic_reasoning_params("high"),
serde_json::json!({
"output_config": {"effort": "high"}
})
);
assert_eq!(
super::gemini_reasoning_params("low"),
serde_json::json!({
"generationConfig": {"thinkingConfig": {"thinkingLevel": "low"}}
})
);
}
#[test]
fn gemini_reasoning_parameters_survive_rig_typed_conversion() {
use rig_core::providers::gemini::completion::gemini_api_types::{
AdditionalParameters, ThinkingLevel,
};
let params: AdditionalParameters =
serde_json::from_value(super::gemini_reasoning_params("medium")).unwrap();
assert_eq!(
params
.generation_config
.unwrap()
.thinking_config
.unwrap()
.thinking_level,
Some(ThinkingLevel::Medium)
);
}