From 7374b7222d236ea532b7271edd2029259de82539 Mon Sep 17 00:00:00 2001 From: Valmo Trindade <70849974+valmojr@users.noreply.github.com> Date: Fri, 7 Aug 2026 14:23:29 -0300 Subject: [PATCH] Add unit coverage for digital pointer CoT payloads --- src/cot/digital_pointer.rs | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/cot/digital_pointer.rs b/src/cot/digital_pointer.rs index d70a6c8..01c24f3 100644 --- a/src/cot/digital_pointer.rs +++ b/src/cot/digital_pointer.rs @@ -45,3 +45,34 @@ impl DigitalPointerPayload { } } } + +#[cfg(test)] +mod tests { + use super::DigitalPointerPayload; + use arma_rs::FromArma; + + #[test] + fn parses_digital_pointer_and_maps_spi_contract() { + let payload = DigitalPointerPayload::from_arma( + r#"["operator-1","Falcon SPI",-30.1,-51.2,20.0]"#.to_string(), + ) + .expect("digital pointer should parse"); + + assert_eq!(payload.link_uid, "operator-1"); + assert_eq!(payload.contact_callsign, "Falcon SPI"); + + let cot = payload.to_cot(); + assert_eq!(cot.uuid.as_deref(), Some("operator-1.SPI1")); + assert_eq!(cot.r#type.as_deref(), Some("b-m-p-s-p-i")); + assert_eq!(cot.point_lat, -30.1); + assert_eq!(cot.point_lon, -51.2); + assert_eq!(cot.point_hae, 20.0); + assert_eq!(cot.contact_callsign, "Falcon SPI"); + assert_eq!(cot.link_uid.as_deref(), Some("operator-1")); + assert_eq!(cot.stale_seconds, Some(7)); + assert!(cot.group_name.is_none()); + assert!(cot.track_course.is_none()); + assert!(cot.remarker.is_none()); + assert!(cot.video_url.is_none()); + } +}