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  }