2015-03-19 19:30:55 +00:00
|
|
|
package lfs
|
2014-08-06 22:04:34 +00:00
|
|
|
|
|
|
|
import (
|
|
|
|
"bytes"
|
|
|
|
"testing"
|
2015-05-13 19:43:41 +00:00
|
|
|
|
2017-11-22 02:00:50 +00:00
|
|
|
"github.com/git-lfs/git-lfs/tools"
|
2016-05-25 16:43:10 +00:00
|
|
|
"github.com/stretchr/testify/assert"
|
2014-08-06 22:04:34 +00:00
|
|
|
)
|
|
|
|
|
2017-01-06 20:31:45 +00:00
|
|
|
func TestBodyWithCallback(t *testing.T) {
|
|
|
|
called := 0
|
|
|
|
calledRead := make([]int64, 0, 2)
|
|
|
|
|
|
|
|
cb := func(total int64, read int64, current int) error {
|
|
|
|
called += 1
|
|
|
|
calledRead = append(calledRead, read)
|
|
|
|
assert.Equal(t, 5, int(total))
|
|
|
|
return nil
|
|
|
|
}
|
2017-11-22 02:00:50 +00:00
|
|
|
reader := tools.NewByteBodyWithCallback([]byte("BOOYA"), 5, cb)
|
2017-01-06 20:31:45 +00:00
|
|
|
|
|
|
|
readBuf := make([]byte, 3)
|
|
|
|
n, err := reader.Read(readBuf)
|
|
|
|
assert.Nil(t, err)
|
|
|
|
assert.Equal(t, "BOO", string(readBuf[0:n]))
|
|
|
|
|
|
|
|
n, err = reader.Read(readBuf)
|
|
|
|
assert.Nil(t, err)
|
|
|
|
assert.Equal(t, "YA", string(readBuf[0:n]))
|
|
|
|
|
|
|
|
assert.Equal(t, 2, called)
|
|
|
|
assert.Len(t, calledRead, 2)
|
|
|
|
assert.Equal(t, 3, int(calledRead[0]))
|
|
|
|
assert.Equal(t, 5, int(calledRead[1]))
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestReadWithCallback(t *testing.T) {
|
2014-08-06 22:04:34 +00:00
|
|
|
called := 0
|
2014-08-07 17:27:06 +00:00
|
|
|
calledRead := make([]int64, 0, 2)
|
2014-08-06 22:04:34 +00:00
|
|
|
|
2017-11-22 02:00:50 +00:00
|
|
|
reader := &tools.CallbackReader{
|
2014-08-06 22:04:34 +00:00
|
|
|
TotalSize: 5,
|
2014-08-07 17:27:06 +00:00
|
|
|
Reader: bytes.NewBufferString("BOOYA"),
|
2015-04-24 15:56:22 +00:00
|
|
|
C: func(total int64, read int64, current int) error {
|
2014-08-06 22:04:34 +00:00
|
|
|
called += 1
|
2014-08-07 17:27:06 +00:00
|
|
|
calledRead = append(calledRead, read)
|
2014-08-06 22:04:34 +00:00
|
|
|
assert.Equal(t, 5, int(total))
|
|
|
|
return nil
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
2014-08-07 17:27:06 +00:00
|
|
|
readBuf := make([]byte, 3)
|
|
|
|
n, err := reader.Read(readBuf)
|
2016-05-25 16:43:10 +00:00
|
|
|
assert.Nil(t, err)
|
2014-08-07 17:27:06 +00:00
|
|
|
assert.Equal(t, "BOO", string(readBuf[0:n]))
|
|
|
|
|
|
|
|
n, err = reader.Read(readBuf)
|
2016-05-25 16:43:10 +00:00
|
|
|
assert.Nil(t, err)
|
2014-08-07 17:27:06 +00:00
|
|
|
assert.Equal(t, "YA", string(readBuf[0:n]))
|
2014-08-06 22:04:34 +00:00
|
|
|
|
|
|
|
assert.Equal(t, 2, called)
|
2016-05-25 16:43:10 +00:00
|
|
|
assert.Len(t, calledRead, 2)
|
2014-08-07 17:27:06 +00:00
|
|
|
assert.Equal(t, 3, int(calledRead[0]))
|
|
|
|
assert.Equal(t, 5, int(calledRead[1]))
|
2014-08-06 22:04:34 +00:00
|
|
|
}
|