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("