multi_buffer_test.go 882 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package buf_test
  2. import (
  3. "crypto/rand"
  4. "io"
  5. "testing"
  6. "v2ray.com/core/common"
  7. . "v2ray.com/core/common/buf"
  8. . "v2ray.com/ext/assert"
  9. )
  10. func TestMultiBufferRead(t *testing.T) {
  11. assert := With(t)
  12. b1 := New()
  13. b1.WriteString("ab")
  14. b2 := New()
  15. b2.WriteString("cd")
  16. mb := MultiBuffer{b1, b2}
  17. bs := make([]byte, 32)
  18. _, nBytes, err := SplitBytes(mb, bs)
  19. assert(err, IsNil)
  20. assert(nBytes, Equals, 4)
  21. assert(bs[:nBytes], Equals, []byte("abcd"))
  22. }
  23. func TestMultiBufferAppend(t *testing.T) {
  24. assert := With(t)
  25. var mb MultiBuffer
  26. b := New()
  27. b.WriteString("ab")
  28. mb = append(mb, b)
  29. assert(mb.Len(), Equals, int32(2))
  30. }
  31. func TestMultiBufferSliceBySizeLarge(t *testing.T) {
  32. assert := With(t)
  33. lb := make([]byte, 8*1024)
  34. common.Must2(io.ReadFull(rand.Reader, lb))
  35. mb := MergeBytes(nil, lb)
  36. mb2 := mb.SliceBySize(1024)
  37. assert(mb2.Len(), Equals, int32(1024))
  38. }