1pub use log;
4#[cfg(test)]
5pub use serial_test;
6use std::fmt::Write;
7pub use tokio;
8
9mod events;
10mod range;
11mod scale;
12mod state;
13pub mod task;
14
15pub use crate::utils::events::*;
16pub use crate::utils::range::*;
17pub use crate::utils::scale::*;
18pub use crate::utils::state::*;
19pub use crate::utils::task::*;
20
21#[allow(dead_code)]
23pub(crate) fn format_as_hex<T: std::fmt::UpperHex>(slice: &[T]) -> String {
24 let mut result = String::with_capacity(slice.len() * 5); for (i, byte) in slice.iter().enumerate() {
27 if i > 0 {
28 result.push_str(", ");
29 }
30 let _ = write!(result, "0x{:02X}", byte);
32 }
33
34 result
35}
36
37#[cfg(test)]
38mod tests {
39 use super::format_as_hex;
40
41 #[test]
42 fn test_format_as_hex_empty_slice() {
43 let input: [u8; 0] = [];
44 let result = format_as_hex(&input);
45 assert_eq!(result, "");
46 }
47
48 #[test]
49 fn test_format_as_hex_single_element() {
50 let input = [15u8];
51 let result = format_as_hex(&input);
52 assert_eq!(result, "0x0F");
53 }
54
55 #[test]
56 fn test_format_as_hex_multiple_elements() {
57 let input = [15u8, 255, 0, 128];
58 let result = format_as_hex(&input);
59 assert_eq!(result, "0x0F, 0xFF, 0x00, 0x80");
60 }
61
62 #[test]
63 fn test_format_as_hex_u16() {
64 let input = [4095u16, 65535];
65 let result = format_as_hex(&input);
66 assert_eq!(result, "0xFFF, 0xFFFF");
67 }
68
69 #[test]
70 fn test_format_as_hex_large_numbers() {
71 let input = [123456789u32, 4294967295];
72 let result = format_as_hex(&input);
73 assert_eq!(result, "0x75BCD15, 0xFFFFFFFF");
74 }
75}
76
77#[cfg(feature = "serde")]
78pub(crate) fn is_default<T: Default + PartialEq>(t: &T) -> bool {
80 t == &T::default()
81}
82
83#[cfg(feature = "serde")]
84#[cfg(test)]
85mod serde_tests {
86 use crate::utils::is_default;
87
88 #[test]
89 fn test_is_default() {
90 assert_eq!(is_default(&true), false);
92 assert_eq!(is_default(&false), true);
93 assert_eq!(is_default(&String::new()), true);
95 assert_eq!(is_default(&String::from("test")), false);
96 assert_eq!(is_default(&0), true);
98 assert_eq!(is_default(&69), false);
99
100 }
102}