reader_test.go 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. package buf_test
  2. import (
  3. "io"
  4. "strings"
  5. "testing"
  6. "v2ray.com/core/common"
  7. . "v2ray.com/core/common/buf"
  8. "v2ray.com/core/transport/pipe"
  9. )
  10. func TestBytesReaderWriteTo(t *testing.T) {
  11. pReader, pWriter := pipe.New(pipe.WithSizeLimit(1024))
  12. reader := &BufferedReader{Reader: pReader}
  13. b1 := New()
  14. b1.WriteString("abc")
  15. b2 := New()
  16. b2.WriteString("efg")
  17. common.Must(pWriter.WriteMultiBuffer(MultiBuffer{b1, b2}))
  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. common.Must(err)
  24. if nBytes != 6 {
  25. t.Error("copy: ", nBytes)
  26. }
  27. mb, err := pReader2.ReadMultiBuffer()
  28. common.Must(err)
  29. if s := mb.String(); s != "abcefg" {
  30. t.Error("content: ", s)
  31. }
  32. }
  33. func TestBytesReaderMultiBuffer(t *testing.T) {
  34. pReader, pWriter := pipe.New(pipe.WithSizeLimit(1024))
  35. reader := &BufferedReader{Reader: pReader}
  36. b1 := New()
  37. b1.WriteString("abc")
  38. b2 := New()
  39. b2.WriteString("efg")
  40. common.Must(pWriter.WriteMultiBuffer(MultiBuffer{b1, b2}))
  41. pWriter.Close()
  42. mbReader := NewReader(reader)
  43. mb, err := mbReader.ReadMultiBuffer()
  44. common.Must(err)
  45. if s := mb.String(); s != "abcefg" {
  46. t.Error("content: ", s)
  47. }
  48. }
  49. func TestReadByte(t *testing.T) {
  50. sr := strings.NewReader("abcd")
  51. reader := &BufferedReader{
  52. Reader: NewReader(sr),
  53. }
  54. b, err := reader.ReadByte()
  55. common.Must(err)
  56. if b != 'a' {
  57. t.Error("unexpected byte: ", b, " want a")
  58. }
  59. nBytes, err := reader.WriteTo(DiscardBytes)
  60. common.Must(err)
  61. if nBytes != 3 {
  62. t.Error("unexpect bytes written: ", nBytes)
  63. }
  64. }
  65. func TestReaderInterface(t *testing.T) {
  66. _ = (io.Reader)(new(ReadVReader))
  67. _ = (Reader)(new(ReadVReader))
  68. _ = (Reader)(new(BufferedReader))
  69. _ = (io.Reader)(new(BufferedReader))
  70. _ = (io.ByteReader)(new(BufferedReader))
  71. _ = (io.WriterTo)(new(BufferedReader))
  72. }