github.com/bluenviron/mediacommon@v1.9.3/pkg/formats/fmp4/seekablebuffer/seekablebuffer_test.go (about) 1 package seekablebuffer 2 3 import ( 4 "io" 5 "testing" 6 7 "github.com/stretchr/testify/require" 8 ) 9 10 func TestBuffer(t *testing.T) { 11 t.Run("seek start", func(t *testing.T) { 12 var b Buffer 13 14 _, err := b.Seek(-2, io.SeekStart) 15 require.Error(t, err) 16 17 n1, err := b.Seek(0, io.SeekStart) 18 require.NoError(t, err) 19 require.Equal(t, int64(0), n1) 20 21 n2, err := b.Write([]byte{1, 2, 3, 4}) 22 require.NoError(t, err) 23 require.Equal(t, 4, n2) 24 }) 25 26 t.Run("seek current", func(t *testing.T) { 27 var b Buffer 28 29 n2, err := b.Write([]byte{1, 2, 3, 4}) 30 require.NoError(t, err) 31 require.Equal(t, 4, n2) 32 33 n1, err := b.Seek(-2, io.SeekCurrent) 34 require.NoError(t, err) 35 require.Equal(t, int64(2), n1) 36 37 n2, err = b.Write([]byte{1, 2, 3, 4}) 38 require.NoError(t, err) 39 require.Equal(t, 4, n2) 40 41 require.Equal(t, []byte{1, 2, 1, 2, 3, 4}, b.Bytes()) 42 }) 43 44 t.Run("seek end", func(t *testing.T) { 45 var b Buffer 46 47 n2, err := b.Write([]byte{1, 2, 3, 4}) 48 require.NoError(t, err) 49 require.Equal(t, 4, n2) 50 51 n1, err := b.Seek(2, io.SeekEnd) 52 require.NoError(t, err) 53 require.Equal(t, int64(6), n1) 54 55 n2, err = b.Write([]byte{1, 2, 3, 4}) 56 require.NoError(t, err) 57 require.Equal(t, 4, n2) 58 59 require.Equal(t, []byte{1, 2, 3, 4, 0, 0, 1, 2, 3, 4}, b.Bytes()) 60 }) 61 }