buffer_test.go 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. package alloc_test
  2. import (
  3. "testing"
  4. . "v2ray.com/core/common/alloc"
  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 TestBufferPrepend(t *testing.T) {
  25. assert := assert.On(t)
  26. buffer := NewBuffer()
  27. defer buffer.Release()
  28. buffer.Append([]byte{'a', 'b', 'c'})
  29. buffer.Prepend([]byte{'x', 'y', 'z'})
  30. assert.Int(buffer.Len()).Equals(6)
  31. assert.String(buffer.String()).Equals("xyzabc")
  32. buffer.Prepend([]byte{'u', 'v', 'w'})
  33. assert.String(buffer.String()).Equals("uvwxyzabc")
  34. }
  35. func TestBufferString(t *testing.T) {
  36. assert := assert.On(t)
  37. buffer := NewBuffer()
  38. defer buffer.Release()
  39. buffer.AppendFunc(serial.WriteString("Test String"))
  40. assert.String(buffer.String()).Equals("Test String")
  41. }
  42. func TestBufferWrite(t *testing.T) {
  43. assert := assert.On(t)
  44. buffer := NewLocalBuffer(24) // 16 + 8
  45. nBytes, err := buffer.Write([]byte("abcd"))
  46. assert.Error(err).IsNil()
  47. assert.Int(nBytes).Equals(4)
  48. nBytes, err = buffer.Write([]byte("abcde"))
  49. assert.Error(err).IsNil()
  50. assert.Int(nBytes).Equals(4)
  51. assert.String(buffer.String()).Equals("abcdabcd")
  52. }
  53. func BenchmarkNewBuffer8192(b *testing.B) {
  54. for i := 0; i < b.N; i++ {
  55. buffer := NewBuffer()
  56. buffer.Release()
  57. }
  58. }
  59. func BenchmarkNewLocalBuffer8192(b *testing.B) {
  60. for i := 0; i < b.N; i++ {
  61. buffer := NewLocalBuffer(8192)
  62. buffer.Release()
  63. }
  64. }
  65. func BenchmarkNewBuffer2048(b *testing.B) {
  66. for i := 0; i < b.N; i++ {
  67. buffer := NewSmallBuffer()
  68. buffer.Release()
  69. }
  70. }
  71. func BenchmarkNewLocalBuffer2048(b *testing.B) {
  72. for i := 0; i < b.N; i++ {
  73. buffer := NewLocalBuffer(2048)
  74. buffer.Release()
  75. }
  76. }