diff --git a/tests/mav_frame_tests.rs b/tests/mav_frame_tests.rs index 6d96c25b23..33399fb376 100644 --- a/tests/mav_frame_tests.rs +++ b/tests/mav_frame_tests.rs @@ -1,7 +1,11 @@ pub mod test_shared; mod mav_frame_tests { - // NOTE: No header + use mavlink::common::MavMessage; + use mavlink::MavFrame; + use mavlink::MavHeader; + + // NOTE: No header, based over get_heartbeat_msg pub const HEARTBEAT_V2: &[u8] = &[ crate::test_shared::COMMON_MSG_HEADER.sequence, crate::test_shared::COMMON_MSG_HEADER.system_id, @@ -44,4 +48,49 @@ mod mav_frame_tests { assert_eq!(msg.system_status, heartbeat_msg.system_status); assert_eq!(msg.mavlink_version, heartbeat_msg.mavlink_version); } + + #[test] + pub fn test_deser_ser_message() { + let mavlink_message = mavlink_message(); + let mavlink_frame = new(mavlink_message); + + let buffer = mavlink_frame.ser(); + + let parsed_mavlink_frame = + MavFrame::::deser(mavlink::MavlinkVersion::V2, &buffer) + .unwrap(); + + assert_eq!( + format!("{mavlink_frame:?}"), + format!("{parsed_mavlink_frame:?}") + ); + } + + fn mavlink_message() -> mavlink::common::MavMessage { + mavlink::common::MavMessage::LINK_NODE_STATUS(mavlink::common::LINK_NODE_STATUS_DATA { + timestamp: 92197916, + tx_rate: 0x11223344, + rx_rate: 0x55667788, + messages_sent: 0x99001122, + messages_received: 0x33445566, + messages_lost: 0x77889900, + rx_parse_err: 0x1122, + tx_overflows: 0x3355, + rx_overflows: 0x5566, + tx_buf: 0xff, + rx_buf: 0x11, + }) + } + + fn new(msg: MavMessage) -> MavFrame { + MavFrame { + header: MavHeader { + system_id: 1, + component_id: 2, + sequence: 84, + }, + msg, + protocol_version: mavlink::MavlinkVersion::V2, + } + } }