writer_test.go 943 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package buf_test
  2. import (
  3. "bufio"
  4. "bytes"
  5. "crypto/rand"
  6. "testing"
  7. "context"
  8. "io"
  9. . "v2ray.com/core/common/buf"
  10. "v2ray.com/core/transport/ray"
  11. . "v2ray.com/ext/assert"
  12. )
  13. func TestWriter(t *testing.T) {
  14. assert := With(t)
  15. lb := New()
  16. assert(lb.AppendSupplier(ReadFrom(rand.Reader)), IsNil)
  17. expectedBytes := append([]byte(nil), lb.Bytes()...)
  18. writeBuffer := bytes.NewBuffer(make([]byte, 0, 1024*1024))
  19. writer := NewWriter(NewBufferedWriter(writeBuffer))
  20. err := writer.Write(NewMultiBufferValue(lb))
  21. assert(err, IsNil)
  22. assert(expectedBytes, Equals, writeBuffer.Bytes())
  23. }
  24. func TestBytesWriterReadFrom(t *testing.T) {
  25. assert := With(t)
  26. cache := ray.NewStream(context.Background())
  27. reader := bufio.NewReader(io.LimitReader(rand.Reader, 8192))
  28. _, err := reader.WriteTo(ToBytesWriter(cache))
  29. assert(err, IsNil)
  30. mb, err := cache.Read()
  31. assert(err, IsNil)
  32. assert(mb.Len(), Equals, 8192)
  33. assert(len(mb), Equals, 4)
  34. }