jules_core/conversation/
mod.rs1use crate::message::Message;
4
5#[derive(Debug, Clone, Default, PartialEq, Eq)]
7pub struct Conversation {
8 messages: Vec<Message>,
9}
10
11impl Conversation {
12 #[must_use]
14 pub fn new() -> Self {
15 Self::default()
16 }
17
18 pub fn add_message(&mut self, message: Message) {
20 self.messages.push(message);
21 }
22
23 #[must_use]
25 pub fn messages(&self) -> &[Message] {
26 &self.messages
27 }
28}
29
30#[cfg(test)]
31mod tests {
32 use super::*;
33 use crate::message::Role;
34
35 #[test]
36 fn test_conversation_add_message() {
37 let mut conv = Conversation::new();
38 assert!(conv.messages().is_empty());
39
40 let msg = Message::new(Role::User, "Hello");
41 conv.add_message(msg);
42
43 assert_eq!(conv.messages().len(), 1);
44 assert_eq!(conv.messages()[0], Message::new(Role::User, "Hello"));
45 }
46}