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(""));
+ }
+}