rock_n_rollup/plugins/
logger.rs

1use crate::core::Runtime;
2
3pub trait Logger {
4    /// Logs to stdout
5    ///
6    /// Add an break at the end of the line
7    /// If you don't want to add a break please use write_debug
8    fn log(&mut self, msg: &str);
9
10    /// Prefix the log by [INFO]
11    fn info(&mut self, msg: &str);
12
13    /// Prefix the log by [WARN]
14    fn warn(&mut self, msg: &str);
15
16    /// Prefix the log by [ERR]
17    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}