use nanologger::{init, InitError, LogLevel, LoggerBuilder};
#[test]
fn test_init_default_and_double_init() {
let result = init();
assert!(result.is_ok(), "First init() should succeed");
let result2 = LoggerBuilder::new().level(LogLevel::Debug).init();
assert!(result2.is_err(), "Second init() should return InitError");
let err = result2.unwrap_err();
let msg = err.to_string();
assert!(
msg.contains("already initialized"),
"InitError message should mention 'already initialized', got: {msg}"
);
}
#[test]
fn test_init_error_is_std_error() {
let err = InitError;
let _: &dyn std::error::Error = &err;
}
#[test]
fn test_parse_level_error_display() {
let err: Result<LogLevel, _> = "garbage".parse();
let msg = err.unwrap_err().to_string();
assert!(
msg.contains("garbage"),
"ParseLevelError should include the invalid input, got: {msg}"
);
}
#[test]
fn test_logger_builder_default() {
let builder: LoggerBuilder = Default::default();
assert_eq!(builder.get_level(), LogLevel::Info);
}