43 lines
841 B
Go
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)
|
|
}
|