multi_buffer_test.go 893 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package buf_test
  2. import (
  3. "crypto/rand"
  4. "testing"
  5. "v2ray.com/core/common"
  6. . "v2ray.com/core/common/buf"
  7. . "v2ray.com/ext/assert"
  8. )
  9. func TestMultiBufferRead(t *testing.T) {
  10. assert := With(t)
  11. b1 := New()
  12. b1.AppendBytes('a', 'b')
  13. b2 := New()
  14. b2.AppendBytes('c', 'd')
  15. mb := NewMultiBufferValue(b1, b2)
  16. bs := make([]byte, 32)
  17. nBytes, err := mb.Read(bs)
  18. assert(err, IsNil)
  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.AppendBytes('a', 'b')
  27. mb.Append(b)
  28. assert(mb.Len(), Equals, int32(2))
  29. }
  30. func TestMultiBufferSliceBySizeLarge(t *testing.T) {
  31. assert := With(t)
  32. lb := NewSize(8 * 1024)
  33. common.Must(lb.Reset(ReadFrom(rand.Reader)))
  34. var mb MultiBuffer
  35. mb.Append(lb)
  36. mb2 := mb.SliceBySize(4 * 1024)
  37. assert(mb2.Len(), Equals, int32(4*1024))
  38. }