github.com/argoproj/argo-cd/v3@v3.2.1/util/io/bytereadseeker_test.go (about) 1 package io 2 3 import ( 4 "io" 5 "testing" 6 7 "github.com/stretchr/testify/assert" 8 "github.com/stretchr/testify/require" 9 ) 10 11 func TestByteReadSeeker_Read(t *testing.T) { 12 inString := "hello world" 13 reader := NewByteReadSeeker([]byte(inString)) 14 bytes := make([]byte, 11) 15 n, err := reader.Read(bytes) 16 require.NoError(t, err) 17 assert.Equal(t, len(inString), n) 18 assert.Equal(t, inString, string(bytes)) 19 _, err = reader.Read(bytes) 20 require.ErrorIs(t, err, io.EOF) 21 } 22 23 func TestByteReadSeeker_Seek_Start(t *testing.T) { 24 inString := "hello world" 25 reader := NewByteReadSeeker([]byte(inString)) 26 offset, err := reader.Seek(6, io.SeekStart) 27 require.NoError(t, err) 28 assert.Equal(t, int64(6), offset) 29 bytes := make([]byte, 5) 30 n, err := reader.Read(bytes) 31 require.NoError(t, err) 32 assert.Equal(t, 5, n) 33 assert.Equal(t, "world", string(bytes)) 34 } 35 36 func TestByteReadSeeker_Seek_Current(t *testing.T) { 37 inString := "hello world" 38 reader := NewByteReadSeeker([]byte(inString)) 39 offset, err := reader.Seek(3, io.SeekCurrent) 40 require.NoError(t, err) 41 assert.Equal(t, int64(3), offset) 42 offset, err = reader.Seek(3, io.SeekCurrent) 43 require.NoError(t, err) 44 assert.Equal(t, int64(6), offset) 45 bytes := make([]byte, 5) 46 n, err := reader.Read(bytes) 47 require.NoError(t, err) 48 assert.Equal(t, 5, n) 49 assert.Equal(t, "world", string(bytes)) 50 } 51 52 func TestByteReadSeeker_Seek_End(t *testing.T) { 53 inString := "hello world" 54 reader := NewByteReadSeeker([]byte(inString)) 55 offset, err := reader.Seek(-5, io.SeekEnd) 56 require.NoError(t, err) 57 assert.Equal(t, int64(6), offset) 58 bytes := make([]byte, 5) 59 n, err := reader.Read(bytes) 60 require.NoError(t, err) 61 assert.Equal(t, 5, n) 62 assert.Equal(t, "world", string(bytes)) 63 } 64 65 func TestByteReadSeeker_Seek_OutOfBounds(t *testing.T) { 66 inString := "hello world" 67 reader := NewByteReadSeeker([]byte(inString)) 68 _, err := reader.Seek(12, io.SeekStart) 69 require.Error(t, err) 70 _, err = reader.Seek(-1, io.SeekStart) 71 require.Error(t, err) 72 }