#![cfg(feature = "posix")]
use osal_rs::log::{
get_enable_log, get_level_log, is_enabled_log, log_levels, set_enable_color, set_enable_log,
set_level_log, sys_log, LOG_BUFFER_SIZE, RETURN,
};
use osal_rs::utils::Result;
use osal_rs::{log_debug, log_error, log_fatal, log_info, log_warning, print, println};
const TAG: &str = "LogTests";
#[test]
fn test_log_mask_and_macros() -> Result<()> {
log_info!(TAG, "Starting test_log_mask_and_macros");
assert_eq!(LOG_BUFFER_SIZE, 256);
assert_eq!(RETURN, "\r\n");
assert_eq!(
log_levels::LEVEL_DEBUG,
log_levels::FLAG_DEBUG | log_levels::LEVEL_INFO
);
assert_eq!(
log_levels::LEVEL_INFO,
log_levels::FLAG_INFO | log_levels::LEVEL_WARNING
);
assert_eq!(
log_levels::LEVEL_WARNING,
log_levels::FLAG_WARNING | log_levels::LEVEL_ERROR
);
assert_eq!(
log_levels::LEVEL_ERROR,
log_levels::FLAG_ERROR | log_levels::LEVEL_FATAL
);
assert_eq!(log_levels::LEVEL_FATAL, log_levels::FLAG_FATAL);
assert!(get_enable_log(), "logging is on by default");
set_enable_log(false);
assert!(!get_enable_log());
assert!(!is_enabled_log(log_levels::FLAG_FATAL));
assert!(!is_enabled_log(log_levels::FLAG_DEBUG));
log_debug!(TAG, "suppressed debug");
log_fatal!(TAG, "suppressed fatal");
set_enable_log(true);
assert!(get_enable_log());
let original_level = get_level_log();
set_level_log(log_levels::LEVEL_DEBUG);
assert_eq!(get_level_log(), log_levels::LEVEL_DEBUG);
assert!(is_enabled_log(log_levels::FLAG_DEBUG));
assert!(is_enabled_log(log_levels::FLAG_INFO));
assert!(is_enabled_log(log_levels::FLAG_WARNING));
assert!(is_enabled_log(log_levels::FLAG_ERROR));
assert!(is_enabled_log(log_levels::FLAG_FATAL));
log_debug!(TAG, "debug message");
log_info!(TAG, "info message");
log_warning!(TAG, "warning message");
log_error!(TAG, "error message");
log_fatal!(TAG, "fatal message");
log_debug!(TAG, "debug {} {}", 1, "arg");
log_info!(TAG, "info {}", 2);
log_warning!(TAG, "warning {}", 3);
log_error!(TAG, "error {}", 4);
log_fatal!(TAG, "fatal {}", 5);
set_level_log(log_levels::LEVEL_ERROR);
assert_eq!(get_level_log(), log_levels::LEVEL_ERROR);
assert!(!is_enabled_log(log_levels::FLAG_DEBUG));
assert!(!is_enabled_log(log_levels::FLAG_INFO));
assert!(!is_enabled_log(log_levels::FLAG_WARNING));
assert!(is_enabled_log(log_levels::FLAG_ERROR));
assert!(is_enabled_log(log_levels::FLAG_FATAL));
log_debug!(TAG, "filtered out");
log_info!(TAG, "filtered out");
log_warning!(TAG, "filtered out");
log_error!(TAG, "still printed");
set_level_log(log_levels::LEVEL_FATAL);
assert_eq!(get_level_log(), log_levels::LEVEL_FATAL);
assert!(!is_enabled_log(log_levels::FLAG_ERROR));
assert!(is_enabled_log(log_levels::FLAG_FATAL));
assert!(get_enable_log());
set_level_log(log_levels::LEVEL_DEBUG);
set_enable_color(true);
sys_log(TAG, log_levels::FLAG_DEBUG, "coloured debug");
sys_log(TAG, log_levels::FLAG_INFO, "coloured info");
sys_log(TAG, log_levels::FLAG_WARNING, "coloured warning");
sys_log(TAG, log_levels::FLAG_ERROR, "coloured error");
sys_log(TAG, log_levels::FLAG_FATAL, "coloured fatal");
sys_log(TAG, 0, "coloured unknown");
set_enable_color(false);
sys_log(TAG, log_levels::FLAG_DEBUG, "plain debug");
sys_log(TAG, log_levels::FLAG_FATAL, "plain fatal");
assert_eq!(get_level_log(), log_levels::LEVEL_DEBUG);
set_enable_color(true);
print!("print without args\r\n");
print!("print with {} {}\r\n", "two", "args");
println!();
println!("println without args");
println!("println with {} args", 1);
set_level_log(original_level);
set_enable_log(true);
set_enable_color(true);
assert_eq!(get_level_log(), original_level);
log_info!(TAG, "test_log_mask_and_macros PASSED");
Ok(())
}