mirror of
https://github.com/XTLS/Xray-core.git
synced 2025-04-30 17:38:41 +00:00
v1.0.0
This commit is contained in:
parent
47d23e9972
commit
c7f7c08ead
711 changed files with 82154 additions and 2 deletions
98
common/buf/writer_test.go
Normal file
98
common/buf/writer_test.go
Normal file
|
@ -0,0 +1,98 @@
|
|||
package buf_test
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"bytes"
|
||||
"crypto/rand"
|
||||
"io"
|
||||
"testing"
|
||||
|
||||
"github.com/google/go-cmp/cmp"
|
||||
|
||||
"github.com/xtls/xray-core/v1/common"
|
||||
. "github.com/xtls/xray-core/v1/common/buf"
|
||||
"github.com/xtls/xray-core/v1/transport/pipe"
|
||||
)
|
||||
|
||||
func TestWriter(t *testing.T) {
|
||||
lb := New()
|
||||
common.Must2(lb.ReadFrom(rand.Reader))
|
||||
|
||||
expectedBytes := append([]byte(nil), lb.Bytes()...)
|
||||
|
||||
writeBuffer := bytes.NewBuffer(make([]byte, 0, 1024*1024))
|
||||
|
||||
writer := NewBufferedWriter(NewWriter(writeBuffer))
|
||||
writer.SetBuffered(false)
|
||||
common.Must(writer.WriteMultiBuffer(MultiBuffer{lb}))
|
||||
common.Must(writer.Flush())
|
||||
|
||||
if r := cmp.Diff(expectedBytes, writeBuffer.Bytes()); r != "" {
|
||||
t.Error(r)
|
||||
}
|
||||
}
|
||||
|
||||
func TestBytesWriterReadFrom(t *testing.T) {
|
||||
const size = 50000
|
||||
pReader, pWriter := pipe.New(pipe.WithSizeLimit(size))
|
||||
reader := bufio.NewReader(io.LimitReader(rand.Reader, size))
|
||||
writer := NewBufferedWriter(pWriter)
|
||||
writer.SetBuffered(false)
|
||||
nBytes, err := reader.WriteTo(writer)
|
||||
if nBytes != size {
|
||||
t.Fatal("unexpected size of bytes written: ", nBytes)
|
||||
}
|
||||
if err != nil {
|
||||
t.Fatal("expect success, but actually error: ", err.Error())
|
||||
}
|
||||
|
||||
mb, err := pReader.ReadMultiBuffer()
|
||||
common.Must(err)
|
||||
if mb.Len() != size {
|
||||
t.Fatal("unexpected size read: ", mb.Len())
|
||||
}
|
||||
}
|
||||
|
||||
func TestDiscardBytes(t *testing.T) {
|
||||
b := New()
|
||||
common.Must2(b.ReadFullFrom(rand.Reader, Size))
|
||||
|
||||
nBytes, err := io.Copy(DiscardBytes, b)
|
||||
common.Must(err)
|
||||
if nBytes != Size {
|
||||
t.Error("copy size: ", nBytes)
|
||||
}
|
||||
}
|
||||
|
||||
func TestDiscardBytesMultiBuffer(t *testing.T) {
|
||||
const size = 10240*1024 + 1
|
||||
buffer := bytes.NewBuffer(make([]byte, 0, size))
|
||||
common.Must2(buffer.ReadFrom(io.LimitReader(rand.Reader, size)))
|
||||
|
||||
r := NewReader(buffer)
|
||||
nBytes, err := io.Copy(DiscardBytes, &BufferedReader{Reader: r})
|
||||
common.Must(err)
|
||||
if nBytes != size {
|
||||
t.Error("copy size: ", nBytes)
|
||||
}
|
||||
}
|
||||
|
||||
func TestWriterInterface(t *testing.T) {
|
||||
{
|
||||
var writer interface{} = (*BufferToBytesWriter)(nil)
|
||||
switch writer.(type) {
|
||||
case Writer, io.Writer, io.ReaderFrom:
|
||||
default:
|
||||
t.Error("BufferToBytesWriter is not Writer, io.Writer or io.ReaderFrom")
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
var writer interface{} = (*BufferedWriter)(nil)
|
||||
switch writer.(type) {
|
||||
case Writer, io.Writer, io.ReaderFrom, io.ByteWriter:
|
||||
default:
|
||||
t.Error("BufferedWriter is not Writer, io.Writer, io.ReaderFrom or io.ByteWriter")
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue