2019-09-20 17:56:26 +03:00
|
|
|
package mem
|
|
|
|
|
|
|
|
import (
|
|
|
|
"io/ioutil"
|
|
|
|
"testing"
|
|
|
|
|
2020-05-15 22:32:44 +03:00
|
|
|
"github.com/markbates/pkger/here"
|
2019-09-20 17:56:26 +03:00
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
)
|
|
|
|
|
|
|
|
func Test_File_Seek(t *testing.T) {
|
|
|
|
r := require.New(t)
|
|
|
|
|
|
|
|
info, err := here.Current()
|
|
|
|
r.NoError(err)
|
|
|
|
|
|
|
|
pkg, err := New(info)
|
|
|
|
r.NoError(err)
|
|
|
|
|
|
|
|
f, err := pkg.Create(":/wilco.band")
|
|
|
|
r.NoError(err)
|
|
|
|
|
|
|
|
data := []byte("a shot in the arm")
|
|
|
|
f.Write(data)
|
|
|
|
r.NoError(f.Close())
|
|
|
|
|
|
|
|
f, err = pkg.Open(":/wilco.band")
|
|
|
|
r.NoError(err)
|
|
|
|
|
2019-11-21 02:17:36 +03:00
|
|
|
// seek to end of file before read
|
2019-11-21 04:48:09 +03:00
|
|
|
pos, err := f.Seek(0, 2)
|
2019-11-21 02:17:36 +03:00
|
|
|
r.NoError(err)
|
|
|
|
r.Equal(int64(len(data)), pos)
|
|
|
|
|
|
|
|
// reset seek
|
|
|
|
pos, err = f.Seek(0, 0)
|
|
|
|
r.NoError(err)
|
|
|
|
r.Equal(int64(0), pos)
|
|
|
|
|
2019-09-20 17:56:26 +03:00
|
|
|
b, err := ioutil.ReadAll(f)
|
|
|
|
r.NoError(err)
|
|
|
|
r.Equal(data, b)
|
|
|
|
|
|
|
|
_, err = f.Seek(0, 0)
|
|
|
|
r.NoError(err)
|
|
|
|
|
|
|
|
b, err = ioutil.ReadAll(f)
|
|
|
|
r.NoError(err)
|
|
|
|
r.Equal(data, b)
|
|
|
|
|
|
|
|
b, err = ioutil.ReadAll(f)
|
|
|
|
r.NoError(err)
|
|
|
|
r.NotEqual(data, b)
|
|
|
|
|
|
|
|
_, err = f.Seek(10, 0)
|
|
|
|
r.NoError(err)
|
|
|
|
|
|
|
|
b, err = ioutil.ReadAll(f)
|
|
|
|
r.NoError(err)
|
|
|
|
r.NotEqual(data, b)
|
|
|
|
r.Equal([]byte("the arm"), b)
|
|
|
|
}
|