chore: seed sgclaw rust baseline
This commit is contained in:
38
tests/common/mod.rs
Normal file
38
tests/common/mod.rs
Normal file
@@ -0,0 +1,38 @@
|
||||
use std::collections::VecDeque;
|
||||
use std::sync::Mutex;
|
||||
use std::time::Duration;
|
||||
|
||||
use sgclaw::pipe::{AgentMessage, BrowserMessage, PipeError, Transport};
|
||||
|
||||
pub struct MockTransport {
|
||||
incoming: Mutex<VecDeque<BrowserMessage>>,
|
||||
sent: Mutex<Vec<AgentMessage>>,
|
||||
}
|
||||
|
||||
impl MockTransport {
|
||||
pub fn new(messages: Vec<BrowserMessage>) -> Self {
|
||||
Self {
|
||||
incoming: Mutex::new(VecDeque::from(messages)),
|
||||
sent: Mutex::new(Vec::new()),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn sent_messages(&self) -> Vec<AgentMessage> {
|
||||
self.sent.lock().unwrap().clone()
|
||||
}
|
||||
}
|
||||
|
||||
impl Transport for MockTransport {
|
||||
fn send(&self, message: &AgentMessage) -> Result<(), PipeError> {
|
||||
self.sent.lock().unwrap().push(message.clone());
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn recv_timeout(&self, _timeout: Duration) -> Result<BrowserMessage, PipeError> {
|
||||
self.incoming
|
||||
.lock()
|
||||
.unwrap()
|
||||
.pop_front()
|
||||
.ok_or(PipeError::Timeout)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user