Add unit coverage for laser range finder payloads

This commit is contained in:
Valmo Trindade
2026-08-07 14:21:16 -03:00
parent 26a18eac6d
commit 81a5a34cf2
+45
View File
@@ -57,3 +57,48 @@ impl LaserRangeFinderClearPayload {
fn normalize_degrees(degrees: f64) -> f64 {
degrees.rem_euclid(360.0)
}
#[cfg(test)]
mod tests {
use super::{LaserRangeFinderClearPayload, LaserRangeFinderPayload};
use arma_rs::FromArma;
use chrono::DateTime;
#[test]
fn parses_lrf_payload_and_serializes_normalized_message() {
let payload = LaserRangeFinderPayload::from_arma(
r#"["laser-1",-5,-10,2.5]"#.to_string(),
)
.expect("LRF payload should parse");
assert_eq!(payload.uid, "laser-1");
assert_eq!(payload.distance_meters, -5.0);
assert_eq!(payload.azimuth_degrees, -10.0);
assert_eq!(payload.elevation_degrees, 2.5);
let message = payload.to_lrf_message();
let fields: Vec<_> = message.split(',').collect();
assert_eq!(fields.len(), 6);
assert_eq!(fields[0], "1");
assert_eq!(fields[1], "laser-1");
assert!(DateTime::parse_from_rfc3339(fields[2]).is_ok());
assert_eq!(fields[3], "0.00");
assert_eq!(fields[4], "350.00");
assert_eq!(fields[5], "2.50");
}
#[test]
fn parses_clear_payload_and_serializes_range_error() {
let payload = LaserRangeFinderClearPayload::from_arma(r#""laser-2""#.to_string())
.expect("clear LRF payload should parse");
assert_eq!(payload.uid, "laser-2");
let message = payload.to_lrf_message();
let fields: Vec<_> = message.split(',').collect();
assert_eq!(fields.len(), 4);
assert_eq!(fields[0], "1");
assert_eq!(fields[1], "laser-2");
assert!(DateTime::parse_from_rfc3339(fields[2]).is_ok());
assert_eq!(fields[3], "RANGE_ERROR");
}
}