-
Notifications
You must be signed in to change notification settings - Fork 0
/
testloadsave.go
49 lines (38 loc) · 919 Bytes
/
testloadsave.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
package fssafe
import (
"bytes"
"io"
)
type TestingReader struct {
*bytes.Reader
Closed bool
}
func (t *TestingReader) Close() error { t.Closed = true; return nil }
type TestingWriter struct {
*bytes.Buffer
Closed bool
}
func (t *TestingWriter) Close() error { t.Closed = true; return nil }
type TestingLoaderSaver struct {
BasicLoaderSaver
Readers []*TestingReader
Writers []*TestingWriter
}
func NewTestingLoaderSaver() *TestingLoaderSaver {
rs := make([]*TestingReader, 0)
ws := make([]*TestingWriter, 0)
var buf *bytes.Buffer
loader := func() (io.ReadCloser, error) {
r := &TestingReader{bytes.NewReader(buf.Bytes()), false}
rs = append(rs, r)
return r, nil
}
saver := func() (io.WriteCloser, error) {
buf = new(bytes.Buffer)
w := &TestingWriter{buf, false}
ws = append(ws, w)
return w, nil
}
ls := TestingLoaderSaver{BasicLoaderSaver{loader, saver}, rs, ws}
return &ls
}