gts_logger/
lib.rs

1pub mod error;
2pub mod logbackend;
3pub mod logclient;
4
5#[cfg(test)]
6mod tests {
7    use crate::logbackend::mock::MockLogBacked;
8    use crate::logclient::LogClient;
9    use arrayvec::ArrayString;
10    use serde::{Deserialize, Serialize};
11
12    #[derive(Debug, Serialize, Deserialize, Copy, Clone, PartialEq)]
13    pub struct LogOneStruct {
14        some_num: u64,
15        some_other_num: u64,
16        some_string: ArrayString<16>,
17    }
18
19    #[derive(Debug, Serialize, Deserialize, Copy, Clone, PartialEq)]
20    pub struct LogTwoStruct {
21        some_string: ArrayString<16>,
22    }
23
24    #[derive(Debug, Serialize, Deserialize, Copy, Clone, PartialEq)]
25    #[serde(tag = "t", content = "c")]
26    pub enum LogEvent {
27        LogOneOne(LogOneStruct),
28        LogTwo(LogTwoStruct),
29    }
30
31    #[test]
32    fn create_logger() {
33        let event = LogEvent::LogOneOne(LogOneStruct {
34            some_num: 5,
35            some_other_num: 7,
36            some_string: ArrayString::from("333").unwrap(),
37        });
38
39        let copy_event = event;
40
41        let log_client = LogClient::<_, LogEvent>::new(MockLogBacked::new());
42
43        log_client.log(event).unwrap();
44
45        let rr = log_client.backend().pop_front();
46        assert!(matches!(rr, Some(ev) if ev.data == copy_event));
47
48        let rr = log_client.backend().pop_front();
49        assert!(rr.is_none());
50
51        log_client.log(event).unwrap();
52        let rr = log_client.backend().pop_front();
53        assert!(matches!(rr, Some(ev) if ev.data == copy_event));
54
55        let rr = log_client.backend().pop_front();
56        assert!(rr.is_none());
57    }
58}