-
-
Notifications
You must be signed in to change notification settings - Fork 5
/
file_test.go
106 lines (88 loc) · 2.07 KB
/
file_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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
package packd
import (
"bytes"
"io"
"io/ioutil"
"strings"
"testing"
"github.com/stretchr/testify/require"
)
func Test_NewFile(t *testing.T) {
r := require.New(t)
input := "hi"
f, err := NewFile("foo.txt", strings.NewReader(input))
r.NoError(err)
r.NotNil(f)
r.Equal("foo.txt", f.Name())
b, err := ioutil.ReadAll(f)
r.NoError(err)
r.Equal(input, string(b))
}
func Test_File_Reader(t *testing.T) {
r := require.New(t)
input := "hi"
f, err := NewFile("foo.txt", strings.NewReader(input))
r.NoError(err)
r.Equal(input, f.String())
bb := &bytes.Buffer{}
i, err := io.Copy(bb, f)
r.NoError(err)
r.Equal(int64(2), i)
r.Equal(input, bb.String())
r.Equal(input, f.String())
// read again
bb2 := &bytes.Buffer{}
i, err = io.Copy(bb2, f)
r.NoError(err)
r.Equal(int64(2), i)
r.Equal(input, bb2.String())
r.Equal(input, f.String())
}
func Test_File_Writer(t *testing.T) {
r := require.New(t)
input := "hi"
f, err := NewFile("foo.txt", strings.NewReader(input))
r.NoError(err)
r.Equal(input, f.String())
i, err := io.Copy(f, strings.NewReader("HELLO"))
r.NoError(err)
r.Equal(int64(5), i)
r.Equal("HELLO", f.String())
}
func Test_File_Seek(t *testing.T) {
r := require.New(t)
input := "Aliqua adipisicing ullamco anim culpa minim labore sunt nostrud et exercitation veniam amet."
f, err := NewFile("foo.txt", strings.NewReader(input))
r.NoError(err)
r.Equal(input, f.String())
// Perform first read
buf := make([]byte, 6)
n, err := f.Read(buf)
r.NoError(err)
r.Equal(6, n)
r.Equal("Aliqua", string(buf))
// Seek back to beginning
i, err := f.Seek(0, io.SeekStart)
r.NoError(err)
r.Equal(int64(0), i)
// read again
buf = make([]byte, 6)
n, err = f.Read(buf)
r.NoError(err)
r.Equal(6, n)
r.Equal("Aliqua", string(buf))
i, err = f.Seek(-3, io.SeekCurrent)
r.NoError(err)
r.Equal(int64(3), i)
i, err = f.Seek(12, io.SeekCurrent)
r.NoError(err)
r.Equal(int64(15), i)
}
func Test_File_BadWrite(t *testing.T) {
r := require.New(t)
f, err := NewFile("foo.txt", nil)
r.NoError(err)
c, err := f.(*virtualFile).write("string")
r.Error(err)
r.Equal(0, c)
}