-
Notifications
You must be signed in to change notification settings - Fork 191
/
Copy pathio_test.go
72 lines (57 loc) · 1.41 KB
/
io_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
package fakeobj_test
import (
"errors"
"testing"
"github.com/gookit/goutil/testutil/assert"
"github.com/gookit/goutil/testutil/fakeobj"
)
func TestIOWriter(t *testing.T) {
w := fakeobj.NewIOWriter()
m, err := w.Write([]byte("hello"))
assert.Eq(t, 5, m)
assert.NoErr(t, err)
assert.Eq(t, "hello", string(w.Buf))
w.Reset()
w.ErrOnWrite = true
_, err = w.Write([]byte("hello"))
assert.Err(t, err)
}
func TestNewReader(t *testing.T) {
tr := fakeobj.NewReader()
tr.Write([]byte("hello"))
buf := make([]byte, 5)
n, err := tr.Read(buf)
assert.NoErr(t, err)
assert.Eq(t, 5, n)
assert.Eq(t, "hello", string(buf))
tr.SetErrOnRead()
_, err = tr.Read(buf)
assert.Err(t, err)
tr = fakeobj.NewStrReader("hello")
tr.CloseErr = errors.New("fake close error")
assert.Err(t, tr.Close())
}
func TestNewWriter(t *testing.T) {
tw := fakeobj.NewBuffer()
_, err := tw.Write([]byte("hello"))
assert.NoErr(t, err)
assert.Eq(t, "hello", tw.String())
assert.NoErr(t, tw.Flush())
assert.NoErr(t, tw.Sync())
assert.Eq(t, "", tw.String())
assert.NoErr(t, tw.Close())
// write string
_, err = tw.WriteString("hello")
assert.NoErr(t, err)
assert.Eq(t, "hello", tw.ResetGet())
tw.SetErrOnWrite()
_, err = tw.Write([]byte("hello"))
assert.Err(t, err)
assert.Eq(t, "", tw.String())
tw.SetErrOnFlush()
assert.Err(t, tw.Flush())
tw.SetErrOnSync()
assert.Err(t, tw.Sync())
tw.SetErrOnClose()
assert.Err(t, tw.Close())
}