use std::sync::Arc;
use tokio::sync::Mutex;
use crate::schemas::{memory::BaseMemory, messages::Message};
pub struct DummyMemory {}
impl DummyMemory {
pub fn new() -> Self {
Self {}
}
}
impl Into<Arc<dyn BaseMemory>> for DummyMemory {
fn into(self) -> Arc<dyn BaseMemory> {
Arc::new(self)
}
}
impl Into<Arc<Mutex<dyn BaseMemory>>> for DummyMemory {
fn into(self) -> Arc<Mutex<dyn BaseMemory>> {
Arc::new(Mutex::new(self))
}
}
impl BaseMemory for DummyMemory {
fn messages(&self) -> Vec<Message> {
vec![]
}
fn add_message(&mut self, _message: Message) {}
fn clear(&mut self) {}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn never_stores_messages() {
let mut memory = DummyMemory::new();
memory.add_user_message(&"ignored");
memory.add_ai_message(&"ignored");
assert!(memory.messages().is_empty());
assert_eq!(memory.to_string(), "");
}
}