veecle_os_data_support_someip/
lib.rs1#![no_std]
4#![forbid(unsafe_code)]
5#![cfg_attr(coverage_nightly, feature(coverage_attribute))]
7
8#[cfg(test)]
9macro_rules! test_round_trip {
10 ($type:ty, $value:expr, $expected:expr) => {
11 let value = $value;
12
13 let mut buffer = [0u8; 2048];
15 let buffer_length = crate::serialize::Serialize::required_length(&value);
16 let serialized_data = crate::serialize::SerializeExt::serialize(&value, &mut buffer);
17
18 assert!(matches!(serialized_data, Ok(..)));
19
20 let serialized_data = serialized_data.unwrap();
21
22 assert_eq!(serialized_data.len(), buffer_length);
25
26 assert_eq!(serialized_data, $expected);
27
28 let parsed = <$type as crate::parse::ParseExt>::parse(serialized_data);
31
32 assert!(matches!(parsed, Ok(..)));
33 assert_eq!(parsed.unwrap(), value);
34
35 for cut_off in 0..serialized_data.len().saturating_sub(1) {
37 let mut buffer = [0u8; 2048];
38
39 assert!(matches!(
40 crate::serialize::SerializeExt::serialize(&value, &mut buffer[..cut_off]),
41 Err(crate::serialize::SerializeError::BufferTooSmall)
42 ));
43 }
44
45 for cut_off in 0..serialized_data.len().saturating_sub(1) {
47 assert!(matches!(
48 <$type as crate::parse::ParseExt>::parse(&serialized_data[..cut_off]),
49 Err(crate::parse::ParseError::PayloadTooShort)
50 | Err(crate::parse::ParseError::MalformedMessage { .. })
51 ));
52 }
53
54 assert!(matches!(
56 <$type as crate::parse::ParseExt>::parse(&[]),
57 Err(crate::parse::ParseError::PayloadTooShort)
58 | Err(crate::parse::ParseError::MalformedMessage { .. })
59 ));
60 };
61}
62
63pub mod array;
64pub mod header;
65pub mod length;
66pub mod parse;
67pub mod parse_impl;
68pub mod serialize;
69pub mod serialize_impl;
70pub mod service_discovery;
71pub mod string;
72
73extern crate self as veecle_os_data_support_someip;