buffer_test.go 1.5 KB

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