dis_rs/common/action_request_r/
mod.rs

1pub mod builder;
2pub mod model;
3pub mod parser;
4pub mod writer;
5
6#[cfg(test)]
7mod tests {
8    use crate::action_request_r::model::ActionRequestR;
9    use crate::common::model::DisTimeStamp;
10    use crate::common::model::{EntityId, FixedDatum, Pdu, PduHeader, VariableDatum};
11    use crate::common::parser::parse_pdu;
12    use crate::enumerations::{ActionId, PduType, RequiredReliabilityService, VariableRecordType};
13    use bytes::BytesMut;
14
15    #[test]
16    fn action_request_r_internal_consistency() {
17        let header = PduHeader::new_v6(1, PduType::ActionRequestR);
18
19        let body = ActionRequestR::builder()
20            .with_origination_id(EntityId::new(10, 10, 10))
21            .with_receiving_id(EntityId::new(20, 20, 20))
22            .with_required_reliability_service(RequiredReliabilityService::Acknowledged)
23            .with_request_id(5)
24            .with_action_id(ActionId::Dismount)
25            .with_fixed_datums(vec![FixedDatum::new(VariableRecordType::Azimuth_52340, 45)])
26            .with_variable_datums(vec![VariableDatum::new(
27                VariableRecordType::Azimuth_52340,
28                vec![1, 2, 3, 4, 5, 6, 7],
29            )])
30            .build()
31            .into_pdu_body();
32        let original_pdu =
33            Pdu::finalize_from_parts(header, body, DisTimeStamp::new_absolute_from_secs(100));
34        let pdu_length = original_pdu.header.pdu_length;
35        let original_length = original_pdu.pdu_length();
36
37        let mut buf = BytesMut::with_capacity(pdu_length as usize);
38
39        let serialized_length = original_pdu.serialize(&mut buf).unwrap();
40
41        assert_eq!(original_length, serialized_length);
42
43        let parsed = parse_pdu(&buf);
44        match parsed {
45            Ok(ref pdu) => {
46                assert_eq!(&original_pdu, pdu);
47            }
48            Err(ref err) => {
49                panic!("Parse error: {err}");
50            }
51        }
52    }
53}