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  }