rock_n_rollup/plugins/
logger.rs1use crate::core::Runtime;
2
3pub trait Logger {
4 fn log(&mut self, msg: &str);
9
10 fn info(&mut self, msg: &str);
12
13 fn warn(&mut self, msg: &str);
15
16 fn err(&mut self, msg: &str);
18}
19
20impl<T> Logger for T
21where
22 T: Runtime,
23{
24 fn log(&mut self, msg: &str) {
25 self.write_debug(&format!("{}\n", msg));
26 }
27
28 fn info(&mut self, msg: &str) {
29 self.write_debug(&format!("[INFO] {}\n", msg));
30 }
31
32 fn warn(&mut self, msg: &str) {
33 self.write_debug(&format!("[WARN] {}\n", msg));
34 }
35
36 fn err(&mut self, msg: &str) {
37 self.write_debug(&format!("[ERR] {}\n", msg));
38 }
39}
40
41#[cfg(test)]
42mod tests {
43 use crate::core::MockRuntime;
44
45 use super::Logger;
46
47 #[test]
48 fn log_test() {
49 let mut runtime = MockRuntime::default();
50 runtime.log("Hello world");
51
52 assert_eq!(runtime.stdout(), vec!["Hello world\n"])
53 }
54
55 #[test]
56 fn info_test() {
57 let mut runtime = MockRuntime::default();
58 runtime.info("Hello world");
59
60 assert_eq!(runtime.stdout(), vec!["[INFO] Hello world\n"])
61 }
62
63 #[test]
64 fn warn_test() {
65 let mut runtime = MockRuntime::default();
66 runtime.warn("Hello world");
67
68 assert_eq!(runtime.stdout(), vec!["[WARN] Hello world\n"])
69 }
70
71 #[test]
72 fn err_test() {
73 let mut runtime = MockRuntime::default();
74 runtime.err("Hello world");
75
76 assert_eq!(runtime.stdout(), vec!["[ERR] Hello world\n"])
77 }
78}