buffer_test.go 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. package buf_test
  2. import (
  3. "testing"
  4. . "v2ray.com/core/common/buf"
  5. "v2ray.com/core/common/serial"
  6. "v2ray.com/core/testing/assert"
  7. )
  8. func TestBufferClear(t *testing.T) {
  9. assert := assert.On(t)
  10. buffer := NewBuffer()
  11. defer buffer.Release()
  12. payload := "Bytes"
  13. buffer.Append([]byte(payload))
  14. assert.Int(buffer.Len()).Equals(len(payload))
  15. buffer.Clear()
  16. assert.Int(buffer.Len()).Equals(0)
  17. }
  18. func TestBufferIsEmpty(t *testing.T) {
  19. assert := assert.On(t)
  20. buffer := NewBuffer()
  21. defer buffer.Release()
  22. assert.Bool(buffer.IsEmpty()).IsTrue()
  23. }
  24. func TestBufferString(t *testing.T) {
  25. assert := assert.On(t)
  26. buffer := NewBuffer()
  27. defer buffer.Release()
  28. buffer.AppendFunc(serial.WriteString("Test String"))
  29. assert.String(buffer.String()).Equals("Test String")
  30. }
  31. func TestBufferWrite(t *testing.T) {
  32. assert := assert.On(t)
  33. buffer := NewLocalBuffer(8)
  34. nBytes, err := buffer.Write([]byte("abcd"))
  35. assert.Error(err).IsNil()
  36. assert.Int(nBytes).Equals(4)
  37. nBytes, err = buffer.Write([]byte("abcde"))
  38. assert.Error(err).IsNil()
  39. assert.Int(nBytes).Equals(4)
  40. assert.String(buffer.String()).Equals("abcdabcd")
  41. }
  42. func BenchmarkNewBuffer8192(b *testing.B) {
  43. for i := 0; i < b.N; i++ {
  44. buffer := NewBuffer()
  45. buffer.Release()
  46. }
  47. }
  48. func BenchmarkNewLocalBuffer8192(b *testing.B) {
  49. for i := 0; i < b.N; i++ {
  50. buffer := NewLocalBuffer(8192)
  51. buffer.Release()
  52. }
  53. }
  54. func BenchmarkNewBuffer2048(b *testing.B) {
  55. for i := 0; i < b.N; i++ {
  56. buffer := NewSmallBuffer()
  57. buffer.Release()
  58. }
  59. }
  60. func BenchmarkNewLocalBuffer2048(b *testing.B) {
  61. for i := 0; i < b.N; i++ {
  62. buffer := NewLocalBuffer(2048)
  63. buffer.Release()
  64. }
  65. }
  66. func BenchmarkBufferValue(b *testing.B) {
  67. x := Buffer{}
  68. doSomething := func(a Buffer) {
  69. _ = a.Len()
  70. }
  71. b.ResetTimer()
  72. for i := 0; i < b.N; i++ {
  73. doSomething(x)
  74. }
  75. }
  76. func BenchmarkBufferPointer(b *testing.B) {
  77. x := NewSmallBuffer()
  78. doSomething := func(a *Buffer) {
  79. _ = a.Len()
  80. }
  81. b.ResetTimer()
  82. for i := 0; i < b.N; i++ {
  83. doSomething(x)
  84. }
  85. }