()
| 1401 | |
| 1402 | #[tokio::test] |
| 1403 | async fn test_agent_context_provider_events() { |
| 1404 | let mock_client = Arc::new(MockLlmClient::new(vec![MockLlmClient::text_response( |
| 1405 | "Answer", |
| 1406 | )])); |
| 1407 | |
| 1408 | let tool_executor = Arc::new(ToolExecutor::new("/tmp".to_string())); |
| 1409 | |
| 1410 | let provider = MockContextProvider::new("event-provider").with_items(vec![ContextItem::new( |
| 1411 | "item-1", |
| 1412 | ContextType::Memory, |
| 1413 | "Memory content", |
| 1414 | ) |
| 1415 | .with_token_count(50)]); |
| 1416 | |
| 1417 | let config = AgentConfig { |
| 1418 | context_providers: vec![Arc::new(provider)], |
| 1419 | ..Default::default() |
| 1420 | }; |
| 1421 | |
| 1422 | let (tx, mut rx) = mpsc::channel(100); |
| 1423 | let agent = AgentLoop::new(mock_client, tool_executor, test_tool_context(), config); |
| 1424 | let _result = agent.execute(&[], "Test prompt", Some(tx)).await.unwrap(); |
| 1425 | |
| 1426 | // Collect events |
| 1427 | let mut events = Vec::new(); |
| 1428 | while let Ok(event) = rx.try_recv() { |
| 1429 | events.push(event); |
| 1430 | } |
| 1431 | |
| 1432 | // Should have ContextResolving and ContextResolved events |
| 1433 | assert!( |
| 1434 | events |
| 1435 | .iter() |
| 1436 | .any(|e| matches!(e, AgentEvent::ContextResolving { .. })), |
| 1437 | "Should have ContextResolving event" |
| 1438 | ); |
| 1439 | assert!( |
| 1440 | events |
| 1441 | .iter() |
| 1442 | .any(|e| matches!(e, AgentEvent::ContextResolved { .. })), |
| 1443 | "Should have ContextResolved event" |
| 1444 | ); |
| 1445 | |
| 1446 | // Check context resolved values |
| 1447 | for event in &events { |
| 1448 | if let AgentEvent::ContextResolved { |
| 1449 | total_items, |
| 1450 | total_tokens, |
| 1451 | } = event |
| 1452 | { |
| 1453 | assert_eq!(*total_items, 1); |
| 1454 | assert_eq!(*total_tokens, 50); |
| 1455 | } |
| 1456 | } |
| 1457 | } |
| 1458 | |
| 1459 | #[tokio::test] |
| 1460 | async fn test_agent_multiple_context_providers() { |
nothing calls this directly
no test coverage detected