use crate::*;
use std::{
fmt,
io::{self, Error},
};
#[derive(Debug, Default)]
pub struct MockHandler {}
impl fmt::Display for MockHandler {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "MockHandler!!")
}
}
impl HandlerTrait for MockHandler {
fn create(_name: &str) -> Result<Self, Error>
where
Self: Sized,
{
Ok(Default::default())
}
fn close(&mut self) {}
fn flush(&mut self) {}
fn get_formatter(&self) -> Formatter {
Default::default()
}
fn get_log(&self) -> String {
Default::default()
}
fn is_open(&self) -> bool {
false
}
#[allow(private_interfaces)]
fn publish(&mut self, _log_entry: &LogEntry) {}
fn set_formatter(&mut self, _formatter: Formatter) {}
fn set_test_mode(&mut self, _state: bool) {}
}
#[cfg(test)]
mod tests {
use super::*;
use crate::{Handler, Logger, logger};
#[test]
fn handler_trait() {
let mut log = Logger::custom_logger(
module_path!(),
"Mock",
Box::new(MockHandler::create(module_path!()).unwrap()),
);
assert_eq!("flogging::handlers::mock_handler::tests:: - [INFO]\n\nHandler::Custom(Mock): MockHandler!!\n\n".to_string(), log.to_string());
log.info("trait methods");
log.warning("The sky is falling!");
let handler = log
.get_handler(crate::Handler::Custom("Mock".to_string()))
.unwrap();
handler.set_test_mode(true);
assert!(!handler.is_open());
handler.set_formatter(FormatType::Simple.create(None));
assert_eq!(
handler.get_formatter().to_string(),
"dt_fmt: \"\" - fmt_string: \"{mod_path}->{fn_name} [{level:7}] {message}\""
.to_string()
);
assert_eq!(handler.get_log(), "".to_string());
handler.flush();
assert_eq!(handler.get_log(), "".to_string());
handler.close();
}
}