reader_test.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package buf_test
  2. import (
  3. "io"
  4. "testing"
  5. . "v2ray.com/core/common/buf"
  6. "v2ray.com/core/transport/pipe"
  7. . "v2ray.com/ext/assert"
  8. )
  9. func TestBytesReaderWriteTo(t *testing.T) {
  10. assert := With(t)
  11. pReader, pWriter := pipe.New(pipe.WithSizeLimit(1024))
  12. reader := &BufferedReader{Reader: pReader}
  13. b1 := New()
  14. b1.WriteBytes('a', 'b', 'c')
  15. b2 := New()
  16. b2.WriteBytes('e', 'f', 'g')
  17. assert(pWriter.WriteMultiBuffer(NewMultiBufferValue(b1, b2)), IsNil)
  18. pWriter.Close()
  19. pReader2, pWriter2 := pipe.New(pipe.WithSizeLimit(1024))
  20. writer := NewBufferedWriter(pWriter2)
  21. writer.SetBuffered(false)
  22. nBytes, err := io.Copy(writer, reader)
  23. assert(err, IsNil)
  24. assert(nBytes, Equals, int64(6))
  25. mb, err := pReader2.ReadMultiBuffer()
  26. assert(err, IsNil)
  27. assert(len(mb), Equals, 2)
  28. assert(mb[0].String(), Equals, "abc")
  29. assert(mb[1].String(), Equals, "efg")
  30. }
  31. func TestBytesReaderMultiBuffer(t *testing.T) {
  32. assert := With(t)
  33. pReader, pWriter := pipe.New(pipe.WithSizeLimit(1024))
  34. reader := &BufferedReader{Reader: pReader}
  35. b1 := New()
  36. b1.WriteBytes('a', 'b', 'c')
  37. b2 := New()
  38. b2.WriteBytes('e', 'f', 'g')
  39. assert(pWriter.WriteMultiBuffer(NewMultiBufferValue(b1, b2)), IsNil)
  40. pWriter.Close()
  41. mbReader := NewReader(reader)
  42. mb, err := mbReader.ReadMultiBuffer()
  43. assert(err, IsNil)
  44. assert(len(mb), Equals, 2)
  45. assert(mb[0].String(), Equals, "abc")
  46. assert(mb[1].String(), Equals, "efg")
  47. }
  48. func TestReaderInterface(t *testing.T) {
  49. _ = (io.Reader)(new(ReadVReader))
  50. _ = (Reader)(new(ReadVReader))
  51. _ = (Reader)(new(BufferedReader))
  52. _ = (io.Reader)(new(BufferedReader))
  53. _ = (io.ByteReader)(new(BufferedReader))
  54. _ = (io.WriterTo)(new(BufferedReader))
  55. }