use colored::*;
#[derive(Debug)]
pub enum LogLevel {
Info,
Ok,
Error,
Warning,
}
#[derive(Debug)]
pub struct Log {
level: LogLevel,
code: u16,
message: String,
}
impl Log {
pub fn new(level: LogLevel, code: u16, message: &str) -> Self {
Self {
level,
code,
message: String::from(message),
}
}
pub fn show(&self) {
match self.level {
LogLevel::Info => {
println!("{} {}", "Info:".bold().green(), self.message);
}
LogLevel::Ok => {
println!("{} {}", "Ok:".bold().cyan(), self.message);
}
LogLevel::Error => {
println!("{} {}", "Error:".bold().red(), self.message);
}
LogLevel::Warning => {
println!("{} {}", "Warning:".bold().yellow(), self.message);
}
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_new_log() {
let log_new = Log::new(LogLevel::Error, 1, "message");
assert_eq!(log_new.code, 1);
assert_eq!(log_new.message, "message");
}
}