| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 | package crypto_testimport (	"bytes"	"io"	"testing"	"v2ray.com/core/common"	"v2ray.com/core/common/buf"	. "v2ray.com/core/common/crypto"	. "v2ray.com/ext/assert")func TestChunkStreamIO(t *testing.T) {	assert := With(t)	cache := bytes.NewBuffer(make([]byte, 0, 8192))	writer := NewChunkStreamWriter(PlainChunkSizeParser{}, cache)	reader := NewChunkStreamReader(PlainChunkSizeParser{}, cache)	b := buf.New()	b.WriteBytes('a', 'b', 'c', 'd')	common.Must(writer.WriteMultiBuffer(buf.NewMultiBufferValue(b)))	b = buf.New()	b.WriteBytes('e', 'f', 'g')	common.Must(writer.WriteMultiBuffer(buf.NewMultiBufferValue(b)))	common.Must(writer.WriteMultiBuffer(buf.MultiBuffer{}))	if cache.Len() != 13 {		t.Fatalf("Cache length is %d, want 13", cache.Len())	}	mb, err := reader.ReadMultiBuffer()	common.Must(err)	assert(mb.Len(), Equals, int32(4))	assert(mb[0].Bytes(), Equals, []byte("abcd"))	mb, err = reader.ReadMultiBuffer()	assert(err, IsNil)	assert(mb.Len(), Equals, int32(3))	assert(mb[0].Bytes(), Equals, []byte("efg"))	_, err = reader.ReadMultiBuffer()	assert(err, Equals, io.EOF)}
 |