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}