diff --git a/sourced/progress_bar/bar.nu b/sourced/progress_bar/bar.nu index 92a12b68..8652775e 100644 --- a/sourced/progress_bar/bar.nu +++ b/sourced/progress_bar/bar.nu @@ -1,30 +1,32 @@ # construct bars based of a given percentage from a given width (5 is default) # > bar 0.2 # █ -# > bar 0.71 --width 10 -# ███████ +# > bar 0.71 +# ███▌ def 'bar' [ percentage: float --background (-b): string = 'default' --foreground (-f): string = 'default' - --progress (-p) # output the result using 'print -n' with '\r' at the end + --progress (-p) # output the result using 'print -n' --width (-w): int = 5 ] { let blocks = [null "▏" "▎" "▍" "▌" "▋" "▊" "▉" "█"] let $whole_part = (($blocks | last) * ($percentage * $width // 1)) let $fraction = ( - $blocks + $blocks | get ( - ($percentage * $width) mod 1 - | $in * ($blocks | length) - | math floor + ($percentage * $width) mod 1 + | $in * ($blocks | length | $in - 1) + | math round ) ) - let $result = ( - $"($whole_part)($fraction)" - | fill -c $' ' -w $width - | $"(ansi -e {fg: ($foreground), bg: ($background)})($in)(ansi reset)" + let result = ( + $"($whole_part)($fraction)" + | fill -c $' ' -w $width + | if ($foreground == 'default') and ($background == 'default') {} else { + $"(ansi -e {fg: ($foreground), bg: ($background)})($in)(ansi reset)" + } ) if $progress { @@ -34,28 +36,12 @@ def 'bar' [ } } -def assert_eq [num: int, expected: string, input_1: float, input_2?] { - let actual = ( - if ($input_2 == null) {bar $input_1} else { - bar $input_1 --width $input_2 - } - ) - let span = (metadata $expected).span; - if $actual != $expected { - error make { - msg: "Actual != Expected", - label: { - text: $"expected ($expected) but got ($actual)", start: $span.start, end: $span.end - } - } - } else { - print $"Test ($num) (ansi green)passed(ansi reset) ✓" - } -} +use std assert equal +#[test] def bar_tests [] { - assert_eq 1 "▏ " 0.03 - assert_eq 2 "▎ " 0.03 10 - assert_eq 3 "▊" 0.71 1 - assert_eq 4 "███████ " 0.71 10 -} + equal "█▌ " (bar 0.3) + equal "███ " (bar 0.3 --width 10) + equal "▊" (bar 0.71 --width 1) + equal "███████▏ " (bar 0.71 --width 10) +} \ No newline at end of file