reader_test.go 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  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. assert := With(t)
  50. assert((*ReadVReader)(nil), Implements, (*io.Reader)(nil))
  51. assert((*ReadVReader)(nil), Implements, (*Reader)(nil))
  52. assert((*BufferedReader)(nil), Implements, (*Reader)(nil))
  53. assert((*BufferedReader)(nil), Implements, (*io.Reader)(nil))
  54. assert((*BufferedReader)(nil), Implements, (*io.ByteReader)(nil))
  55. assert((*BufferedReader)(nil), Implements, (*io.WriterTo)(nil))
  56. }