2020-06-05 18:07:57 +02:00
|
|
|
package fs
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"io/ioutil"
|
|
|
|
"testing"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestReaderAt(t *testing.T) {
|
|
|
|
for _, bufSize := range []int{1, 1e1, 1e2, 1e3, 1e4, 1e5} {
|
|
|
|
t.Run(fmt.Sprintf("%d", bufSize), func(t *testing.T) {
|
|
|
|
testReaderAt(t, bufSize)
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func testReaderAt(t *testing.T, bufSize int) {
|
|
|
|
path := "TestReaderAt"
|
|
|
|
const fileSize = 8 * 1024 * 1024
|
|
|
|
data := make([]byte, fileSize)
|
|
|
|
if err := ioutil.WriteFile(path, data, 0600); err != nil {
|
|
|
|
t.Fatalf("cannot create %q: %s", path, err)
|
|
|
|
}
|
|
|
|
defer MustRemoveAll(path)
|
2020-11-23 08:55:38 +01:00
|
|
|
r := MustOpenReaderAt(path)
|
2020-06-05 18:07:57 +02:00
|
|
|
defer r.MustClose()
|
|
|
|
|
|
|
|
buf := make([]byte, bufSize)
|
|
|
|
for i := 0; i < fileSize-bufSize; i += bufSize {
|
|
|
|
offset := int64(i)
|
|
|
|
r.MustReadAt(buf[:0], offset)
|
|
|
|
r.MustReadAt(buf, offset)
|
|
|
|
}
|
|
|
|
}
|