multi_buffer_test.go 860 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  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 := SplitBytes(mb, bs)
  19. assert(nBytes, Equals, 4)
  20. assert(bs[:nBytes], Equals, []byte("abcd"))
  21. }
  22. func TestMultiBufferAppend(t *testing.T) {
  23. assert := With(t)
  24. var mb MultiBuffer
  25. b := New()
  26. b.WriteString("ab")
  27. mb = append(mb, b)
  28. assert(mb.Len(), Equals, int32(2))
  29. }
  30. func TestMultiBufferSliceBySizeLarge(t *testing.T) {
  31. assert := With(t)
  32. lb := make([]byte, 8*1024)
  33. common.Must2(io.ReadFull(rand.Reader, lb))
  34. mb := MergeBytes(nil, lb)
  35. mb, mb2 := SplitSize(mb, 1024)
  36. assert(mb2.Len(), Equals, int32(1024))
  37. }