github.com/falafeljan/pkger@v0.18.0/pkging/mem/file_test.go (about)

     1  package mem
     2  
     3  import (
     4  	"io/ioutil"
     5  	"testing"
     6  
     7  	"github.com/markbates/pkger/here"
     8  	"github.com/stretchr/testify/require"
     9  )
    10  
    11  func Test_File_Seek(t *testing.T) {
    12  	r := require.New(t)
    13  
    14  	info, err := here.Current()
    15  	r.NoError(err)
    16  
    17  	pkg, err := New(info)
    18  	r.NoError(err)
    19  
    20  	f, err := pkg.Create(":/wilco.band")
    21  	r.NoError(err)
    22  
    23  	data := []byte("a shot in the arm")
    24  	f.Write(data)
    25  	r.NoError(f.Close())
    26  
    27  	f, err = pkg.Open(":/wilco.band")
    28  	r.NoError(err)
    29  
    30  	// seek to end of file before read
    31  	pos, err := f.Seek(0, 2)
    32  	r.NoError(err)
    33  	r.Equal(int64(len(data)), pos)
    34  
    35  	// reset seek
    36  	pos, err = f.Seek(0, 0)
    37  	r.NoError(err)
    38  	r.Equal(int64(0), pos)
    39  
    40  	b, err := ioutil.ReadAll(f)
    41  	r.NoError(err)
    42  	r.Equal(data, b)
    43  
    44  	_, err = f.Seek(0, 0)
    45  	r.NoError(err)
    46  
    47  	b, err = ioutil.ReadAll(f)
    48  	r.NoError(err)
    49  	r.Equal(data, b)
    50  
    51  	b, err = ioutil.ReadAll(f)
    52  	r.NoError(err)
    53  	r.NotEqual(data, b)
    54  
    55  	_, err = f.Seek(10, 0)
    56  	r.NoError(err)
    57  
    58  	b, err = ioutil.ReadAll(f)
    59  	r.NoError(err)
    60  	r.NotEqual(data, b)
    61  	r.Equal([]byte("the arm"), b)
    62  }