use log::{log, Level};
pub fn log_progress(level: Level, done: usize, prev: usize, total: usize, step: usize, depth: usize) {
if log_step_crossed(done, prev, total, step) {
log!(level, "{}...{done}/{total} ({}%)", " ".repeat(depth), 100 * done / total);
}
}
pub fn log_step_crossed(done: usize, prev: usize, total: usize, step: usize) -> bool {
total > step && (done / step > prev / step || done == total)
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn step_crossing() {
assert!(!log_step_crossed(10, 9, 10, 10));
assert!( log_step_crossed(10, 9, 100, 10));
assert!(!log_step_crossed(11, 10, 100, 10));
assert!(log_step_crossed(22, 18, 100, 10));
assert!(log_step_crossed(100, 99, 100, 10));
assert!(log_step_crossed( 95, 94, 95, 10));
}
}