From 7bb2da24129dd257b77b5ccf679abcc379642810 Mon Sep 17 00:00:00 2001 From: Valmo Trindade <70849974+valmojr@users.noreply.github.com> Date: Fri, 7 Aug 2026 14:24:31 -0300 Subject: [PATCH] Add unit coverage for GeoChat CoT messages --- src/cot/message.rs | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/src/cot/message.rs b/src/cot/message.rs index 2846d49..3f9f837 100644 --- a/src/cot/message.rs +++ b/src/cot/message.rs @@ -145,3 +145,39 @@ impl MessageCot { xml } } + +#[cfg(test)] +mod tests { + use super::{MessageCot, MessagePayload}; + use arma_rs::FromArma; + + #[test] + fn parses_chat_payload_and_serializes_geochat_event() { + let payload = MessagePayload::from_arma( + r#"["Falcon","Operations Room","Message received",-30.1,-51.2,15.0,"sender-1"]"# + .to_string(), + ) + .expect("chat payload should parse"); + + assert_eq!(payload.sender_callsign, "Falcon"); + assert_eq!(payload.chatroom, "Operations Room"); + assert_eq!(payload.message_text, "Message received"); + assert_eq!(payload.sender_uid, "sender-1"); + + let cot = MessageCot::from_payload(payload); + let xml = cot.to_xml(); + + assert!(xml.starts_with("")); + assert!(xml.contains("type=\"b-t-f\"")); + assert!(xml.contains("uid=\"GeoChat.sender-1.Operations_Room.")); + assert!(xml.contains("lat=\"-30.1\" lon=\"-51.2\" hae=\"15\"")); + assert!(xml.contains("chatroom=\"Operations Room\"")); + assert!(xml.contains("senderCallsign=\"Falcon\"")); + assert!(xml.contains("")); + assert!(xml.contains("")); + assert!(xml.contains("<__serverdestination destinations=\"0.0.0.0:0:tcp:sender-1\" />")); + assert!(xml.contains("Message received")); + assert!(xml.ends_with("")); + } +}