llama_cpp_bindings/
chat_message_parse_outcome.rs1use llama_cpp_bindings_types::ParsedChatMessage;
2
3use crate::raw_chat_message::RawChatMessage;
4
5pub enum ChatMessageParseOutcome {
6 Recognized(ParsedChatMessage),
7 Unrecognized(RawChatMessage),
8}
9
10#[cfg(test)]
11mod tests {
12 use llama_cpp_bindings_types::ParsedChatMessage;
13
14 use super::ChatMessageParseOutcome;
15 use crate::raw_chat_message::RawChatMessage;
16
17 #[test]
18 fn recognized_variant_exposes_parsed_chat_message() {
19 let parsed =
20 ParsedChatMessage::new("content".to_owned(), "reasoning".to_owned(), Vec::new());
21 let outcome = ChatMessageParseOutcome::Recognized(parsed);
22
23 match outcome {
24 ChatMessageParseOutcome::Recognized(parsed) => {
25 assert_eq!(parsed.content, "content");
26 assert_eq!(parsed.reasoning_content, "reasoning");
27 assert!(parsed.tool_calls.is_empty());
28 }
29 ChatMessageParseOutcome::Unrecognized(_) => {
30 panic!("expected Recognized variant");
31 }
32 }
33 }
34
35 #[test]
36 fn unrecognized_variant_exposes_raw_chat_message() {
37 let outcome = ChatMessageParseOutcome::Unrecognized(RawChatMessage {
38 tools_json: "[]".to_owned(),
39 text: "raw input".to_owned(),
40 is_partial: false,
41 ffi_error_message: "parser bailed".to_owned(),
42 });
43
44 match outcome {
45 ChatMessageParseOutcome::Unrecognized(raw) => {
46 assert_eq!(raw.tools_json, "[]");
47 assert_eq!(raw.text, "raw input");
48 assert!(!raw.is_partial);
49 assert_eq!(raw.ffi_error_message, "parser bailed");
50 }
51 ChatMessageParseOutcome::Recognized(_) => {
52 panic!("expected Unrecognized variant");
53 }
54 }
55 }
56}