multi_buffer_test.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  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.WriteBytes('a', 'b')
  14. b2 := New()
  15. b2.WriteBytes('c', 'd')
  16. mb := NewMultiBufferValue(b1, b2)
  17. bs := make([]byte, 32)
  18. nBytes, err := mb.Read(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.WriteBytes('a', 'b')
  28. mb.Append(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. var mb MultiBuffer
  36. common.Must2(mb.Write(lb))
  37. mb2 := mb.SliceBySize(1024)
  38. assert(mb2.Len(), Equals, int32(1024))
  39. }
  40. func TestInterface(t *testing.T) {
  41. assert := With(t)
  42. assert((*MultiBuffer)(nil), Implements, (*io.WriterTo)(nil))
  43. assert((*MultiBuffer)(nil), Implements, (*io.ReaderFrom)(nil))
  44. }