vtcode_core/llm/
capabilities.rs1pub use super::provider::ProviderCapabilities;
4
5#[cfg(test)]
6mod tests {
7 use super::ProviderCapabilities;
8
9 #[test]
10 fn capability_summary_reports_enabled_features() {
11 let caps = ProviderCapabilities {
12 provider_name: "gemini".to_owned(),
13 model: "gemini-2.0-pro".to_owned(),
14 streaming: true,
15 reasoning: false,
16 reasoning_effort: false,
17 tools: true,
18 parallel_tool_config: false,
19 structured_output: true,
20 context_caching: true,
21 responses_compaction: false,
22 context_edits: false,
23 vision: true,
24 context_size: 2_000_000,
25 };
26
27 let summary = caps.summary();
28 assert!(summary.contains("gemini-2.0-pro"));
29 assert!(summary.contains("2000000"));
30 assert!(summary.contains("structured-output"));
31 assert!(summary.contains("context-caching"));
32 }
33
34 #[test]
35 fn advanced_feature_detection_matches_fields() {
36 let basic = ProviderCapabilities {
37 provider_name: "basic".to_owned(),
38 model: "basic-model".to_owned(),
39 streaming: false,
40 reasoning: false,
41 reasoning_effort: false,
42 tools: true,
43 parallel_tool_config: false,
44 structured_output: false,
45 context_caching: false,
46 responses_compaction: false,
47 context_edits: false,
48 vision: false,
49 context_size: 128_000,
50 };
51
52 assert!(!basic.has_advanced_features());
53
54 let advanced = ProviderCapabilities {
55 structured_output: true,
56 ..basic
57 };
58
59 assert!(advanced.has_advanced_features());
60 }
61}