buffer_test.go 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  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.String(buffer.String()).Equals("xyzabc")
  33. buffer.Prepend([]byte{'u', 'v', 'w'})
  34. assert.String(buffer.String()).Equals("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 TestBufferWrite(t *testing.T) {
  44. assert := assert.On(t)
  45. buffer := NewLocalBuffer(24).Clear() // 16 + 8
  46. nBytes, err := buffer.Write([]byte("abcd"))
  47. assert.Error(err).IsNil()
  48. assert.Int(nBytes).Equals(4)
  49. nBytes, err = buffer.Write([]byte("abcde"))
  50. assert.Error(err).IsNil()
  51. assert.Int(nBytes).Equals(4)
  52. assert.String(buffer.String()).Equals("abcdabcd")
  53. }
  54. func BenchmarkNewBuffer8192(b *testing.B) {
  55. for i := 0; i < b.N; i++ {
  56. buffer := NewBuffer()
  57. buffer.Release()
  58. }
  59. }
  60. func BenchmarkNewLocalBuffer8192(b *testing.B) {
  61. for i := 0; i < b.N; i++ {
  62. buffer := NewLocalBuffer(8192)
  63. buffer.Release()
  64. }
  65. }
  66. func BenchmarkNewBuffer2048(b *testing.B) {
  67. for i := 0; i < b.N; i++ {
  68. buffer := NewSmallBuffer()
  69. buffer.Release()
  70. }
  71. }
  72. func BenchmarkNewLocalBuffer2048(b *testing.B) {
  73. for i := 0; i < b.N; i++ {
  74. buffer := NewLocalBuffer(2048)
  75. buffer.Release()
  76. }
  77. }