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}