repos / pico

pico services mono repo
git clone https://github.com/picosh/pico.git

pico / pkg / send / utils
Antonio Mika  ·  2025-03-12

limit_reader_test.go

 1package utils
 2
 3import (
 4	"bytes"
 5	"io"
 6	"testing"
 7
 8	"github.com/matryer/is"
 9)
10
11func TestLimitedReader(t *testing.T) {
12	t.Run("partial", func(t *testing.T) {
13		is := is.New(t)
14		var b bytes.Buffer
15		b.WriteString("writing some bytes")
16		r := NewLimitReader(&b, 7)
17
18		bts, err := io.ReadAll(r)
19		is.NoErr(err)
20		is.Equal("writing", string(bts))
21	})
22
23	t.Run("full", func(t *testing.T) {
24		is := is.New(t)
25		var b bytes.Buffer
26		b.WriteString("some text")
27		r := NewLimitReader(&b, b.Len())
28
29		bts, err := io.ReadAll(r)
30		is.NoErr(err)
31		is.Equal("some text", string(bts))
32	})
33
34	t.Run("pass limit", func(t *testing.T) {
35		is := is.New(t)
36		var b bytes.Buffer
37		b.WriteString("another text")
38		r := NewLimitReader(&b, b.Len()+10)
39
40		bts, err := io.ReadAll(r)
41		is.NoErr(err)
42		is.Equal("another text", string(bts))
43	})
44}