56 lines
1.3 KiB
Go
56 lines
1.3 KiB
Go
|
package util
|
||
|
|
||
|
import (
|
||
|
"github.com/stretchr/testify/require"
|
||
|
"io"
|
||
|
"strings"
|
||
|
"testing"
|
||
|
)
|
||
|
|
||
|
func TestPeak_LimitReached(t *testing.T) {
|
||
|
underlying := io.NopCloser(strings.NewReader("1234567890"))
|
||
|
peaked, err := Peek(underlying, 5)
|
||
|
if err != nil {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
require.Equal(t, []byte("12345"), peaked.PeekedBytes)
|
||
|
require.Equal(t, true, peaked.LimitReached)
|
||
|
|
||
|
all, err := io.ReadAll(peaked)
|
||
|
if err != nil {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
require.Equal(t, []byte("1234567890"), all)
|
||
|
require.Equal(t, []byte("12345"), peaked.PeekedBytes)
|
||
|
require.Equal(t, true, peaked.LimitReached)
|
||
|
}
|
||
|
|
||
|
func TestPeak_LimitNotReached(t *testing.T) {
|
||
|
underlying := io.NopCloser(strings.NewReader("1234567890"))
|
||
|
peaked, err := Peek(underlying, 15)
|
||
|
if err != nil {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
all, err := io.ReadAll(peaked)
|
||
|
if err != nil {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
require.Equal(t, []byte("1234567890"), all)
|
||
|
require.Equal(t, []byte("1234567890"), peaked.PeekedBytes)
|
||
|
require.Equal(t, false, peaked.LimitReached)
|
||
|
}
|
||
|
|
||
|
func TestPeak_Nil(t *testing.T) {
|
||
|
peaked, err := Peek(nil, 15)
|
||
|
if err != nil {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
all, err := io.ReadAll(peaked)
|
||
|
if err != nil {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
require.Equal(t, []byte(""), all)
|
||
|
require.Equal(t, []byte(""), peaked.PeekedBytes)
|
||
|
require.Equal(t, false, peaked.LimitReached)
|
||
|
}
|