buffer_test.go 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. package alloc_test
  2. import (
  3. "testing"
  4. . "v2ray.com/core/common/alloc"
  5. "v2ray.com/core/testing/assert"
  6. )
  7. func TestBufferClear(t *testing.T) {
  8. assert := assert.On(t)
  9. buffer := NewBuffer().Clear()
  10. defer buffer.Release()
  11. payload := "Bytes"
  12. buffer.Append([]byte(payload))
  13. assert.Int(buffer.Len()).Equals(len(payload))
  14. buffer.Clear()
  15. assert.Int(buffer.Len()).Equals(0)
  16. }
  17. func TestBufferIsFull(t *testing.T) {
  18. assert := assert.On(t)
  19. buffer := NewBuffer()
  20. defer buffer.Release()
  21. assert.Bool(buffer.IsFull()).IsTrue()
  22. buffer.Clear()
  23. assert.Bool(buffer.IsFull()).IsFalse()
  24. }
  25. func TestBufferPrepend(t *testing.T) {
  26. assert := assert.On(t)
  27. buffer := NewBuffer().Clear()
  28. defer buffer.Release()
  29. buffer.Append([]byte{'a', 'b', 'c'})
  30. buffer.Prepend([]byte{'x', 'y', 'z'})
  31. assert.Int(buffer.Len()).Equals(6)
  32. assert.Bytes(buffer.Value).Equals([]byte("xyzabc"))
  33. buffer.Prepend([]byte{'u', 'v', 'w'})
  34. assert.Bytes(buffer.Value).Equals([]byte("uvwxyzabc"))
  35. }
  36. func TestBufferString(t *testing.T) {
  37. assert := assert.On(t)
  38. buffer := NewBuffer().Clear()
  39. defer buffer.Release()
  40. buffer.AppendString("Test String")
  41. assert.String(buffer.String()).Equals("Test String")
  42. }
  43. func BenchmarkNewBuffer8192(b *testing.B) {
  44. for i := 0; i < b.N; i++ {
  45. buffer := NewBuffer()
  46. buffer.Release()
  47. }
  48. }
  49. func BenchmarkNewLocalBuffer8192(b *testing.B) {
  50. for i := 0; i < b.N; i++ {
  51. buffer := NewLocalBuffer(8192)
  52. buffer.Release()
  53. }
  54. }
  55. func BenchmarkNewBuffer2048(b *testing.B) {
  56. for i := 0; i < b.N; i++ {
  57. buffer := NewSmallBuffer()
  58. buffer.Release()
  59. }
  60. }
  61. func BenchmarkNewLocalBuffer2048(b *testing.B) {
  62. for i := 0; i < b.N; i++ {
  63. buffer := NewLocalBuffer(2048)
  64. buffer.Release()
  65. }
  66. }