buffer_test.go 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. package buf_test
  2. import (
  3. "bytes"
  4. "crypto/rand"
  5. "testing"
  6. "v2ray.com/core/common"
  7. . "v2ray.com/core/common/buf"
  8. "v2ray.com/core/common/compare"
  9. . "v2ray.com/ext/assert"
  10. )
  11. func TestBufferClear(t *testing.T) {
  12. assert := With(t)
  13. buffer := New()
  14. defer buffer.Release()
  15. payload := "Bytes"
  16. buffer.Write([]byte(payload))
  17. assert(buffer.Len(), Equals, int32(len(payload)))
  18. buffer.Clear()
  19. assert(buffer.Len(), Equals, int32(0))
  20. }
  21. func TestBufferIsEmpty(t *testing.T) {
  22. assert := With(t)
  23. buffer := New()
  24. defer buffer.Release()
  25. assert(buffer.IsEmpty(), IsTrue)
  26. }
  27. func TestBufferString(t *testing.T) {
  28. assert := With(t)
  29. buffer := New()
  30. defer buffer.Release()
  31. common.Must2(buffer.WriteString("Test String"))
  32. assert(buffer.String(), Equals, "Test String")
  33. }
  34. func TestBufferSlice(t *testing.T) {
  35. {
  36. b := New()
  37. common.Must2(b.Write([]byte("abcd")))
  38. bytes := b.BytesFrom(-2)
  39. if err := compare.BytesEqualWithDetail(bytes, []byte{'c', 'd'}); err != nil {
  40. t.Error(err)
  41. }
  42. }
  43. {
  44. b := New()
  45. common.Must2(b.Write([]byte("abcd")))
  46. bytes := b.BytesTo(-2)
  47. if err := compare.BytesEqualWithDetail(bytes, []byte{'a', 'b'}); err != nil {
  48. t.Error(err)
  49. }
  50. }
  51. {
  52. b := New()
  53. common.Must2(b.Write([]byte("abcd")))
  54. bytes := b.BytesRange(-3, -1)
  55. if err := compare.BytesEqualWithDetail(bytes, []byte{'b', 'c'}); err != nil {
  56. t.Error(err)
  57. }
  58. }
  59. }
  60. func TestBufferReadFullFrom(t *testing.T) {
  61. payload := make([]byte, 1024)
  62. common.Must2(rand.Read(payload))
  63. reader := bytes.NewReader(payload)
  64. b := New()
  65. n, err := b.ReadFullFrom(reader, 1024)
  66. common.Must(err)
  67. if n != 1024 {
  68. t.Error("expect reading 1024 bytes, but actually ", n)
  69. }
  70. if err := compare.BytesEqualWithDetail(payload, b.Bytes()); err != nil {
  71. t.Error(err)
  72. }
  73. }
  74. func BenchmarkNewBuffer(b *testing.B) {
  75. for i := 0; i < b.N; i++ {
  76. buffer := New()
  77. buffer.Release()
  78. }
  79. }