diff --git a/src/pb.rs b/src/pb.rs index c622849c..c6dfb28e 100644 --- a/src/pb.rs +++ b/src/pb.rs @@ -503,6 +503,7 @@ fn fract_dur(d: Duration) -> f64 { #[cfg(test)] mod test { use pb::{ProgressBar, Units}; + use std::time::Duration; #[test] fn add() { @@ -611,4 +612,34 @@ mod test { "\r0 B / 10 B [--------------------------------------------------] ", ); } + + #[test] + fn max_refresh_rate_finish() { + let count = 500; + let mut out = Vec::new(); + let mut pb = ProgressBar::on(&mut out, count); + pb.format("╢▌▌░╟"); + pb.set_width(Some(80)); + pb.set_max_refresh_rate(Some(Duration::from_millis(100))); + pb.show_speed = false; + pb.show_time_left = false; + pb.add(count / 2); + pb.add(count / 2); + let mut split = std::str::from_utf8(&out) + .unwrap() + .trim_start_matches('\r') + .split('\r'); + assert_eq!( + split.next(), + Some( + "250 / 500 ╢▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌░░░░░░░░░░░░░░░░░░░░░░░░░░░░░╟ 50.00 %" + ) + ); + assert_eq!( + split.next(), + Some( + "500 / 500 ╢▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌╟ 100.00 %" + ) + ); + } } diff --git a/tests/lib.rs b/tests/lib.rs index aac46cf4..1ddace49 100644 --- a/tests/lib.rs +++ b/tests/lib.rs @@ -120,4 +120,3 @@ fn final_redraw_max_refresh_rate() { } pb.finish_println("done!"); } -