#![allow(clippy::result_large_err)]
use adk_rust::prelude::*;
use std::sync::Arc;
#[tokio::main]
async fn main() -> Result<()> {
println!("🚀 Testing ADK-Rust unified crate...\n");
let api_key = match std::env::var("GOOGLE_API_KEY") {
Ok(key) => key,
Err(_) => {
println!("⚠️ Note: GOOGLE_API_KEY not set (expected for test)");
"test-key".to_string()
}
};
println!("✅ Creating Gemini model...");
let model_result = GeminiModel::new(&api_key, "gemini-2.5-flash");
if let Ok(model) = model_result {
println!(" Model: {}", model.name());
println!("✅ Building LLM agent...");
let agent = LlmAgentBuilder::new("test-agent")
.description("Test agent from unified crate")
.model(Arc::new(model))
.build()?;
println!(" Agent: {}", agent.name());
println!(" Description: {}", agent.description());
println!("✅ Creating tools...");
let search_tool = GoogleSearchTool::new();
println!(" Tool: {}", search_tool.name());
println!("✅ Creating session service...");
let session_service = InMemorySessionService::new();
println!(" Session service: InMemory");
println!("✅ Creating runner...");
let _runner = Runner::builder()
.app_name("test-app")
.agent(Arc::new(agent))
.session_service(Arc::new(session_service))
.build()?;
println!(" Runner created successfully");
} else {
println!("⚠️ Skipping agent tests (API key needed for real usage)");
}
println!("\n🎉 All tests passed!");
println!("\n📦 The unified adk-rust crate is working correctly!");
println!("\nUsage:");
println!(" cargo add adk-rust");
println!(" use adk_rust::prelude::*;");
Ok(())
}