diff options
Diffstat (limited to '')
-rw-r--r-- | dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/draw_test.go | 378 |
1 files changed, 378 insertions, 0 deletions
diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/draw_test.go b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/draw_test.go new file mode 100644 index 0000000..2553ca6 --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/draw_test.go @@ -0,0 +1,378 @@ +package mpb + +import ( + "bytes" + "testing" + "unicode/utf8" +) + +func TestDraw(t *testing.T) { + // key is termWidth + testSuite := map[int][]struct { + name string + style string + total int64 + current int64 + refill int64 + barWidth int + trim bool + reverse bool + want string + }{ + 0: { + { + name: "t,c{60,20}", + total: 60, + current: 20, + want: "… ", + }, + { + name: "t,c{60,20}trim", + total: 60, + current: 20, + trim: true, + want: "", + }, + }, + 1: { + { + name: "t,c{60,20}", + total: 60, + current: 20, + want: "… ", + }, + { + name: "t,c{60,20}trim", + total: 60, + current: 20, + trim: true, + want: "", + }, + }, + 2: { + { + name: "t,c{60,20}", + total: 60, + current: 20, + want: " ", + }, + { + name: "t,c{60,20}trim", + total: 60, + current: 20, + trim: true, + want: "[]", + }, + }, + 3: { + { + name: "t,c{60,20}", + total: 60, + current: 20, + want: " ", + }, + { + name: "t,c{60,20}trim", + total: 60, + current: 20, + trim: true, + want: "[-]", + }, + }, + 4: { + { + name: "t,c{60,20}", + total: 60, + current: 20, + want: " [] ", + }, + { + name: "t,c{60,20}trim", + total: 60, + current: 20, + trim: true, + want: "[>-]", + }, + }, + 5: { + { + name: "t,c{60,20}", + total: 60, + current: 20, + want: " [-] ", + }, + { + name: "t,c{60,20}trim", + total: 60, + current: 20, + trim: true, + want: "[>--]", + }, + }, + 6: { + { + name: "t,c{60,20}", + total: 60, + current: 20, + want: " [>-] ", + }, + { + name: "t,c{60,20}trim", + total: 60, + current: 20, + trim: true, + want: "[>---]", + }, + }, + 7: { + { + name: "t,c{60,20}", + total: 60, + current: 20, + want: " [>--] ", + }, + { + name: "t,c{60,20}trim", + total: 60, + current: 20, + trim: true, + want: "[=>---]", + }, + }, + 8: { + { + name: "t,c{60,20}", + total: 60, + current: 20, + want: " [>---] ", + }, + { + name: "t,c{60,20}trim", + total: 60, + current: 20, + trim: true, + want: "[=>----]", + }, + }, + 80: { + { + name: "t,c{60,20}", + total: 60, + current: 20, + want: " [========================>---------------------------------------------------] ", + }, + { + name: "t,c{60,20}trim", + total: 60, + current: 20, + trim: true, + want: "[=========================>----------------------------------------------------]", + }, + { + name: "t,c,bw{60,20,60}", + total: 60, + current: 20, + barWidth: 60, + want: " [==================>---------------------------------------] ", + }, + { + name: "t,c,bw{60,20,60}trim", + total: 60, + current: 20, + barWidth: 60, + trim: true, + want: "[==================>---------------------------------------]", + }, + }, + 100: { + { + name: "t,c{100,0}", + total: 100, + current: 0, + want: " [------------------------------------------------------------------------------------------------] ", + }, + { + name: "t,c{100,0}trim", + total: 100, + current: 0, + trim: true, + want: "[--------------------------------------------------------------------------------------------------]", + }, + { + name: "t,c{100,1}", + total: 100, + current: 1, + want: " [>-----------------------------------------------------------------------------------------------] ", + }, + { + name: "t,c{100,1}trim", + total: 100, + current: 1, + trim: true, + want: "[>-------------------------------------------------------------------------------------------------]", + }, + { + name: "t,c{100,99}", + total: 100, + current: 99, + want: " [==============================================================================================>-] ", + }, + { + name: "t,c{100,99}trim", + total: 100, + current: 99, + trim: true, + want: "[================================================================================================>-]", + }, + { + name: "t,c{100,100}", + total: 100, + current: 100, + want: " [================================================================================================] ", + }, + { + name: "t,c{100,100}trim", + total: 100, + current: 100, + trim: true, + want: "[==================================================================================================]", + }, + { + name: "t,c,r{100,100,100}trim", + total: 100, + current: 100, + refill: 100, + trim: true, + want: "[++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++]", + }, + { + name: "t,c{100,33}", + total: 100, + current: 33, + want: " [===============================>----------------------------------------------------------------] ", + }, + { + name: "t,c{100,33}trim", + total: 100, + current: 33, + trim: true, + want: "[===============================>------------------------------------------------------------------]", + }, + { + name: "t,c{100,33}trim,rev", + total: 100, + current: 33, + trim: true, + reverse: true, + want: "[------------------------------------------------------------------<===============================]", + }, + { + name: "t,c,r{100,33,33}", + total: 100, + current: 33, + refill: 33, + want: " [+++++++++++++++++++++++++++++++>----------------------------------------------------------------] ", + }, + { + name: "t,c,r{100,33,33}trim", + total: 100, + current: 33, + refill: 33, + trim: true, + want: "[+++++++++++++++++++++++++++++++>------------------------------------------------------------------]", + }, + { + name: "t,c,r{100,33,33}trim,rev", + total: 100, + current: 33, + refill: 33, + trim: true, + reverse: true, + want: "[------------------------------------------------------------------<+++++++++++++++++++++++++++++++]", + }, + { + name: "t,c,r{100,40,33}", + total: 100, + current: 40, + refill: 33, + want: " [++++++++++++++++++++++++++++++++=====>----------------------------------------------------------] ", + }, + { + name: "t,c,r{100,40,33}trim", + total: 100, + current: 40, + refill: 33, + trim: true, + want: "[++++++++++++++++++++++++++++++++======>-----------------------------------------------------------]", + }, + { + name: "t,c,r{100,40,33},rev", + total: 100, + current: 40, + refill: 33, + reverse: true, + want: " [----------------------------------------------------------<=====++++++++++++++++++++++++++++++++] ", + }, + { + name: "t,c,r{100,40,33}trim,rev", + total: 100, + current: 40, + refill: 33, + trim: true, + reverse: true, + want: "[-----------------------------------------------------------<======++++++++++++++++++++++++++++++++]", + }, + { + name: "[=の-] t,c{100,1}", + style: "[=の-]", + total: 100, + current: 1, + want: " [の---------------------------------------------------------------------------------------------…] ", + }, + }, + 197: { + { + name: "t,c,r{97486999,2805950,2805483}trim", + total: 97486999, + current: 2805950, + refill: 2805483, + barWidth: 60, + trim: true, + want: "[+>--------------------------------------------------------]", + }, + }, + } + + var tmpBuf bytes.Buffer + for tw, cases := range testSuite { + for _, tc := range cases { + s := newTestState(tc.style, tc.reverse) + s.reqWidth = tc.barWidth + s.total = tc.total + s.current = tc.current + s.trimSpace = tc.trim + s.refill = tc.refill + tmpBuf.Reset() + tmpBuf.ReadFrom(s.draw(newStatistics(tw, s))) + by := tmpBuf.Bytes() + + got := string(by[:len(by)-1]) + if !utf8.ValidString(got) { + t.Fail() + } + if got != tc.want { + t.Errorf("termWidth:%d %q want: %q %d, got: %q %d\n", tw, tc.name, tc.want, utf8.RuneCountInString(tc.want), got, utf8.RuneCountInString(got)) + } + } + } +} + +func newTestState(style string, rev bool) *bState { + s := &bState{ + filler: NewBarFillerPick(style, rev), + bufP: new(bytes.Buffer), + bufB: new(bytes.Buffer), + bufA: new(bytes.Buffer), + } + return s +} |