Skip to main content

aether_core/testing/
fake_agent_observer.rs

1use crate::events::{AgentEvent, AgentObserver};
2use std::sync::{Arc, Mutex};
3
4/// In-memory [`AgentObserver`] that records every event it receives, for
5/// asserting on the stream an agent emits.
6#[derive(Default)]
7pub struct FakeAgentObserver {
8    events: Arc<Mutex<Vec<AgentEvent>>>,
9}
10
11impl FakeAgentObserver {
12    pub fn new() -> Self {
13        Self::default()
14    }
15
16    /// Shared handle to the recorded events; clones observe future events too.
17    pub fn events(&self) -> Arc<Mutex<Vec<AgentEvent>>> {
18        Arc::clone(&self.events)
19    }
20}
21
22impl AgentObserver for FakeAgentObserver {
23    fn on_event(&mut self, message: &AgentEvent) {
24        self.events.lock().unwrap().push(message.clone());
25    }
26}