mirror of
https://github.com/valmojr/armatak.git
synced 2026-08-18 16:02:58 +00:00
Add unit coverage for laser range finder payloads
This commit is contained in:
@@ -57,3 +57,48 @@ impl LaserRangeFinderClearPayload {
|
|||||||
fn normalize_degrees(degrees: f64) -> f64 {
|
fn normalize_degrees(degrees: f64) -> f64 {
|
||||||
degrees.rem_euclid(360.0)
|
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");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user