vtcode_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 turn_scoped_system_messages: false,
24 vision: true,
25 context_size: 2_000_000,
26 };
27
28 let summary = caps.summary();
29 assert!(summary.contains("gemini-2.0-pro"));
30 assert!(summary.contains("2000000"));
31 assert!(summary.contains("structured-output"));
32 assert!(summary.contains("context-caching"));
33 }
34
35 #[test]
36 fn advanced_feature_detection_matches_fields() {
37 let basic = ProviderCapabilities {
38 provider_name: "basic".to_owned(),
39 model: "basic-model".to_owned(),
40 streaming: false,
41 reasoning: false,
42 reasoning_effort: false,
43 tools: true,
44 parallel_tool_config: false,
45 structured_output: false,
46 context_caching: false,
47 responses_compaction: false,
48 context_edits: false,
49 turn_scoped_system_messages: false,
50 vision: false,
51 context_size: 128_000,
52 };
53
54 assert!(!basic.has_advanced_features());
55
56 let advanced = ProviderCapabilities { structured_output: true, ..basic };
57
58 assert!(advanced.has_advanced_features());
59 }
60}