From 7a6c4d5bfc67180b21375969942fc7a5bc882f40 Mon Sep 17 00:00:00 2001
From: Valmo Trindade <70849974+valmojr@users.noreply.github.com>
Date: Fri, 7 Aug 2026 14:20:03 -0300
Subject: [PATCH] Add full unit coverage for generic CoT serialization
---
src/cot/cot.rs | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 79 insertions(+)
diff --git a/src/cot/cot.rs b/src/cot/cot.rs
index b2304ae..b509b96 100644
--- a/src/cot/cot.rs
+++ b/src/cot/cot.rs
@@ -122,3 +122,82 @@ impl CursorOverTime {
return xml;
}
}
+
+#[cfg(test)]
+mod tests {
+ use super::CursorOverTime;
+
+ fn minimal_marker() -> CursorOverTime {
+ CursorOverTime {
+ uuid: None,
+ r#type: None,
+ point_lat: -30.0,
+ point_lon: -51.0,
+ point_hae: 10.0,
+ point_ce: None,
+ point_le: None,
+ contact_callsign: "Falcon".to_string(),
+ group_name: None,
+ group_role: None,
+ track_course: None,
+ track_speed: None,
+ link_uid: None,
+ remarker: None,
+ video_url: None,
+ stale_seconds: None,
+ }
+ }
+
+ #[test]
+ fn serializes_minimal_marker_with_tak_defaults() {
+ let xml = minimal_marker().convert_to_xml();
+
+ assert!(xml.starts_with(""));
+ assert!(xml.contains(""));
+ assert!(xml.contains(""));
+ assert!(xml.contains(""));
+ assert!(!xml.contains(""));
+ assert!(!xml.contains("<__video>"));
+ assert!(xml.ends_with(""));
+ }
+
+ #[test]
+ fn serializes_all_optional_marker_details() {
+ let marker = CursorOverTime {
+ uuid: Some("marker-1".to_string()),
+ r#type: Some("a-f-G-U-C".to_string()),
+ point_lat: 1.25,
+ point_lon: 2.5,
+ point_hae: 100.0,
+ point_ce: Some(3.0),
+ point_le: Some(4.0),
+ contact_callsign: "Raven".to_string(),
+ group_name: Some("Cyan".to_string()),
+ group_role: Some("Team Member".to_string()),
+ track_course: Some(180),
+ track_speed: Some(12.5),
+ link_uid: Some("parent-1".to_string()),
+ remarker: Some("test remark".to_string()),
+ video_url: Some("rtsp://video.example.test:8554/live".to_string()),
+ stale_seconds: Some(0),
+ };
+
+ let xml = marker.convert_to_xml();
+
+ assert!(xml.contains("type=\"a-f-G-U-C\""));
+ assert!(xml.contains("uid=\"marker-1\""));
+ assert!(xml.contains(""));
+ assert!(xml.contains(""));
+ assert!(xml.contains(""));
+ assert!(xml.contains(""));
+ assert!(xml.contains(""));
+ assert!(xml.contains(""));
+ assert!(xml.contains("<__group name=\"Cyan\" role=\"Team Member\" />"));
+ assert!(xml.contains("ARMATAK | test remark"));
+ assert!(xml.contains("