gemini_adk_rs/utils/
variant.rs1#[derive(Debug, Clone, Copy, PartialEq, Eq)]
3pub enum GoogleLlmVariant {
4 VertexAi,
6 GeminiApi,
8}
9
10pub fn get_google_llm_variant() -> GoogleLlmVariant {
18 match std::env::var("GOOGLE_GENAI_USE_VERTEXAI") {
19 Ok(val) => {
20 let lower = val.to_lowercase();
21 if lower == "true" || lower == "1" {
22 GoogleLlmVariant::VertexAi
23 } else {
24 GoogleLlmVariant::GeminiApi
25 }
26 }
27 Err(_) => GoogleLlmVariant::GeminiApi,
28 }
29}
30
31#[cfg(test)]
32mod tests {
33 use super::*;
34
35 fn with_env_var<F: FnOnce()>(val: Option<&str>, f: F) {
41 let old = std::env::var("GOOGLE_GENAI_USE_VERTEXAI").ok();
43 match val {
45 Some(v) => std::env::set_var("GOOGLE_GENAI_USE_VERTEXAI", v),
46 None => std::env::remove_var("GOOGLE_GENAI_USE_VERTEXAI"),
47 }
48 f();
49 match old {
51 Some(v) => std::env::set_var("GOOGLE_GENAI_USE_VERTEXAI", v),
52 None => std::env::remove_var("GOOGLE_GENAI_USE_VERTEXAI"),
53 }
54 }
55
56 #[test]
57 fn vertex_ai_true_lowercase() {
58 with_env_var(Some("true"), || {
59 assert_eq!(get_google_llm_variant(), GoogleLlmVariant::VertexAi);
60 });
61 }
62
63 #[test]
64 fn vertex_ai_true_uppercase() {
65 with_env_var(Some("TRUE"), || {
66 assert_eq!(get_google_llm_variant(), GoogleLlmVariant::VertexAi);
67 });
68 }
69
70 #[test]
71 fn vertex_ai_one() {
72 with_env_var(Some("1"), || {
73 assert_eq!(get_google_llm_variant(), GoogleLlmVariant::VertexAi);
74 });
75 }
76
77 #[test]
78 fn gemini_api_false() {
79 with_env_var(Some("false"), || {
80 assert_eq!(get_google_llm_variant(), GoogleLlmVariant::GeminiApi);
81 });
82 }
83
84 #[test]
85 fn gemini_api_zero() {
86 with_env_var(Some("0"), || {
87 assert_eq!(get_google_llm_variant(), GoogleLlmVariant::GeminiApi);
88 });
89 }
90
91 #[test]
92 fn gemini_api_unset() {
93 with_env_var(None, || {
94 assert_eq!(get_google_llm_variant(), GoogleLlmVariant::GeminiApi);
95 });
96 }
97
98 #[test]
99 fn gemini_api_empty_string() {
100 with_env_var(Some(""), || {
101 assert_eq!(get_google_llm_variant(), GoogleLlmVariant::GeminiApi);
102 });
103 }
104
105 #[test]
106 fn vertex_ai_mixed_case() {
107 with_env_var(Some("True"), || {
108 assert_eq!(get_google_llm_variant(), GoogleLlmVariant::VertexAi);
109 });
110 }
111}