mirror of https://github.com/v2ray/v2ray-core
more test cases
parent
2621305413
commit
de4072a65a
|
@ -98,27 +98,17 @@ func (r *BufferedReader) ReadAtMost(size int32) (MultiBuffer, error) {
|
||||||
|
|
||||||
func (r *BufferedReader) writeToInternal(writer io.Writer) (int64, error) {
|
func (r *BufferedReader) writeToInternal(writer io.Writer) (int64, error) {
|
||||||
mbWriter := NewWriter(writer)
|
mbWriter := NewWriter(writer)
|
||||||
totalBytes := int64(0)
|
var sc SizeCounter
|
||||||
if r.Buffer != nil {
|
if r.Buffer != nil {
|
||||||
totalBytes += int64(r.Buffer.Len())
|
sc.Size = int64(r.Buffer.Len())
|
||||||
if err := mbWriter.WriteMultiBuffer(r.Buffer); err != nil {
|
if err := mbWriter.WriteMultiBuffer(r.Buffer); err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
r.Buffer = nil
|
r.Buffer = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
for {
|
err := Copy(r.Reader, mbWriter, CountSize(&sc))
|
||||||
mb, err := r.Reader.ReadMultiBuffer()
|
return sc.Size, err
|
||||||
if mb != nil {
|
|
||||||
totalBytes += int64(mb.Len())
|
|
||||||
if werr := mbWriter.WriteMultiBuffer(mb); werr != nil {
|
|
||||||
return totalBytes, err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if err != nil {
|
|
||||||
return totalBytes, err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// WriteTo implements io.WriterTo.
|
// WriteTo implements io.WriterTo.
|
||||||
|
|
|
@ -2,8 +2,10 @@ package buf_test
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"io"
|
"io"
|
||||||
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"v2ray.com/core/common"
|
||||||
. "v2ray.com/core/common/buf"
|
. "v2ray.com/core/common/buf"
|
||||||
"v2ray.com/core/transport/pipe"
|
"v2ray.com/core/transport/pipe"
|
||||||
. "v2ray.com/ext/assert"
|
. "v2ray.com/ext/assert"
|
||||||
|
@ -56,6 +58,25 @@ func TestBytesReaderMultiBuffer(t *testing.T) {
|
||||||
assert(mb[1].String(), Equals, "efg")
|
assert(mb[1].String(), Equals, "efg")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestReadByte(t *testing.T) {
|
||||||
|
sr := strings.NewReader("abcd")
|
||||||
|
reader := &BufferedReader{
|
||||||
|
Reader: NewReader(sr),
|
||||||
|
}
|
||||||
|
b, err := reader.ReadByte()
|
||||||
|
common.Must(err)
|
||||||
|
if b != 'a' {
|
||||||
|
t.Error("unexpected byte: ", b, " want a")
|
||||||
|
}
|
||||||
|
|
||||||
|
var mb MultiBuffer
|
||||||
|
nBytes, err := reader.WriteTo(&mb)
|
||||||
|
common.Must(err)
|
||||||
|
if nBytes != 3 {
|
||||||
|
t.Error("unexpect bytes written: ", nBytes)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestReaderInterface(t *testing.T) {
|
func TestReaderInterface(t *testing.T) {
|
||||||
_ = (io.Reader)(new(ReadVReader))
|
_ = (io.Reader)(new(ReadVReader))
|
||||||
_ = (Reader)(new(ReadVReader))
|
_ = (Reader)(new(ReadVReader))
|
||||||
|
|
Loading…
Reference in New Issue