buffer_test.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. package buf_test
  2. import (
  3. "crypto/rand"
  4. "testing"
  5. . "v2ray.com/core/common/buf"
  6. "v2ray.com/core/common/serial"
  7. . "v2ray.com/ext/assert"
  8. )
  9. func TestBufferClear(t *testing.T) {
  10. assert := With(t)
  11. buffer := New()
  12. defer buffer.Release()
  13. payload := "Bytes"
  14. buffer.Append([]byte(payload))
  15. assert(buffer.Len(), Equals, len(payload))
  16. buffer.Clear()
  17. assert(buffer.Len(), Equals, 0)
  18. }
  19. func TestBufferIsEmpty(t *testing.T) {
  20. assert := With(t)
  21. buffer := New()
  22. defer buffer.Release()
  23. assert(buffer.IsEmpty(), IsTrue)
  24. }
  25. func TestBufferString(t *testing.T) {
  26. assert := With(t)
  27. buffer := New()
  28. defer buffer.Release()
  29. assert(buffer.AppendSupplier(serial.WriteString("Test String")), IsNil)
  30. assert(buffer.String(), Equals, "Test String")
  31. }
  32. func TestBufferWrite(t *testing.T) {
  33. assert := With(t)
  34. buffer := NewLocal(8)
  35. nBytes, err := buffer.Write([]byte("abcd"))
  36. assert(err, IsNil)
  37. assert(nBytes, Equals, 4)
  38. nBytes, err = buffer.Write([]byte("abcde"))
  39. assert(err, IsNil)
  40. assert(nBytes, Equals, 4)
  41. assert(buffer.String(), Equals, "abcdabcd")
  42. }
  43. func TestSyncPool(t *testing.T) {
  44. assert := With(t)
  45. p := NewPool(32)
  46. b := p.Allocate()
  47. assert(b.Len(), Equals, 0)
  48. assert(b.AppendSupplier(ReadFrom(rand.Reader)), IsNil)
  49. assert(b.Len(), Equals, 32)
  50. b.Release()
  51. }
  52. func BenchmarkNewBuffer(b *testing.B) {
  53. for i := 0; i < b.N; i++ {
  54. buffer := New()
  55. buffer.Release()
  56. }
  57. }
  58. func BenchmarkNewLocalBuffer(b *testing.B) {
  59. for i := 0; i < b.N; i++ {
  60. buffer := NewLocal(Size)
  61. buffer.Release()
  62. }
  63. }