github.com/ipfans/trojan-go@v0.11.0/common/io_test.go (about)

     1  package common
     2  
     3  import (
     4  	"bytes"
     5  	"crypto/rand"
     6  	"testing"
     7  
     8  	"github.com/v2fly/v2ray-core/v4/common"
     9  )
    10  
    11  func TestBufferedReader(t *testing.T) {
    12  	payload := [1024]byte{}
    13  	rand.Reader.Read(payload[:])
    14  	rawReader := bytes.NewBuffer(payload[:])
    15  	r := RewindReader{
    16  		rawReader: rawReader,
    17  	}
    18  	r.SetBufferSize(2048)
    19  	buf1 := make([]byte, 512)
    20  	buf2 := make([]byte, 512)
    21  	common.Must2(r.Read(buf1))
    22  	r.Rewind()
    23  	common.Must2(r.Read(buf2))
    24  	if !bytes.Equal(buf1, buf2) {
    25  		t.Fail()
    26  	}
    27  	buf3 := make([]byte, 512)
    28  	common.Must2(r.Read(buf3))
    29  	if !bytes.Equal(buf3, payload[512:]) {
    30  		t.Fail()
    31  	}
    32  	r.Rewind()
    33  	buf4 := make([]byte, 1024)
    34  	common.Must2(r.Read(buf4))
    35  	if !bytes.Equal(payload[:], buf4) {
    36  		t.Fail()
    37  	}
    38  }