Files
gonic/iout/copy_range_test.go
2022-04-12 23:38:44 +01:00

43 lines
841 B
Go

package iout_test
import (
"bytes"
"testing"
"github.com/matryer/is"
"go.senan.xyz/gonic/iout"
)
func TestCopyRange(t *testing.T) {
t.Parallel()
is := is.New(t)
realLength := 50
cr := func(start, length int64) []byte {
is.Helper()
var data []byte
for i := 0; i < realLength; i++ {
data = append(data, byte(i%10))
}
var buff bytes.Buffer
is.NoErr(iout.CopyRange(&buff, bytes.NewReader(data), start, length))
return buff.Bytes()
}
// range
is.Equal(len(cr(0, 50)), 50)
is.Equal(len(cr(10, 10)), 10)
is.Equal(cr(10, 10)[0], byte(0))
is.Equal(cr(10, 10)[5], byte(5))
is.Equal(cr(25, 35)[0], byte(5))
is.Equal(cr(25, 35)[5], byte(0))
// 0 padding
is.Equal(len(cr(0, 5000)), 5000)
is.Equal(cr(0, 5000)[50:], make([]byte, 5000-50))
// no bound
is.Equal(len(cr(0, 0)), 50)
is.Equal(len(cr(50, 0)), 0)
}