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 }