| 0 | 0 |
package mpb_test
|
| 1 | 1 |
|
| 2 | 2 |
import (
|
|
3 |
"bytes"
|
| 3 | 4 |
"io"
|
| 4 | 5 |
"io/ioutil"
|
| 5 | 6 |
"strings"
|
|
| 27 | 28 |
}
|
| 28 | 29 |
|
| 29 | 30 |
func TestProxyReader(t *testing.T) {
|
| 30 | |
|
| 31 | 31 |
p := mpb.New(mpb.WithOutput(ioutil.Discard))
|
| 32 | 32 |
|
| 33 | |
reader := &testReader{Reader: strings.NewReader(content)}
|
|
33 |
tReader := &testReader{strings.NewReader(content), false}
|
| 34 | 34 |
|
| 35 | |
total := len(content)
|
| 36 | |
bar := p.AddBar(100, mpb.TrimSpace())
|
|
35 |
bar := p.AddBar(int64(len(content)), mpb.TrimSpace())
|
| 37 | 36 |
|
| 38 | |
written, err := io.Copy(ioutil.Discard, bar.ProxyReader(reader))
|
|
37 |
var buf bytes.Buffer
|
|
38 |
_, err := io.Copy(&buf, bar.ProxyReader(tReader))
|
| 39 | 39 |
if err != nil {
|
| 40 | 40 |
t.Errorf("Error copying from reader: %+v\n", err)
|
| 41 | 41 |
}
|
| 42 | 42 |
|
| 43 | 43 |
p.Wait()
|
| 44 | 44 |
|
| 45 | |
if !reader.called {
|
|
45 |
if !tReader.called {
|
| 46 | 46 |
t.Error("Read not called")
|
| 47 | 47 |
}
|
| 48 | 48 |
|
| 49 | |
if written != int64(total) {
|
| 50 | |
t.Errorf("Expected written: %d, got: %d\n", total, written)
|
|
49 |
if got := buf.String(); got != content {
|
|
50 |
t.Errorf("Expected content: %s, got: %s\n", content, got)
|
| 51 | 51 |
}
|
| 52 | 52 |
}
|
|
53 |
|
|
54 |
type testWriterTo struct {
|
|
55 |
io.Reader
|
|
56 |
wt io.WriterTo
|
|
57 |
called bool
|
|
58 |
}
|
|
59 |
|
|
60 |
func (wt *testWriterTo) WriteTo(w io.Writer) (n int64, err error) {
|
|
61 |
wt.called = true
|
|
62 |
return wt.wt.WriteTo(w)
|
|
63 |
}
|
|
64 |
|
|
65 |
func TestProxyWriterTo(t *testing.T) {
|
|
66 |
p := mpb.New(mpb.WithOutput(ioutil.Discard))
|
|
67 |
|
|
68 |
var reader io.Reader = strings.NewReader(content)
|
|
69 |
wt := reader.(io.WriterTo)
|
|
70 |
tReader := &testWriterTo{reader, wt, false}
|
|
71 |
|
|
72 |
bar := p.AddBar(int64(len(content)), mpb.TrimSpace())
|
|
73 |
|
|
74 |
var buf bytes.Buffer
|
|
75 |
_, err := io.Copy(&buf, bar.ProxyReader(tReader))
|
|
76 |
if err != nil {
|
|
77 |
t.Errorf("Error copying from reader: %+v\n", err)
|
|
78 |
}
|
|
79 |
|
|
80 |
p.Wait()
|
|
81 |
|
|
82 |
if !tReader.called {
|
|
83 |
t.Error("WriteTo not called")
|
|
84 |
}
|
|
85 |
|
|
86 |
if got := buf.String(); got != content {
|
|
87 |
t.Errorf("Expected content: %s, got: %s\n", content, got)
|
|
88 |
}
|
|
89 |
}
|