sync_slice_test.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. package syncutils
  2. import (
  3. "fmt"
  4. "strconv"
  5. "testing"
  6. )
  7. func TestSyncSlice(t *testing.T) {
  8. syncSlice := NewSyncSlice([]string{"aaa", "bbb", "ccc"}, false)
  9. syncSlice.Append("ddd")
  10. fmt.Println("Len:", syncSlice.Len())
  11. fmt.Println("Cap:", syncSlice.Cap())
  12. fmt.Println()
  13. syncSlice.Range(func(index int, e string) bool {
  14. fmt.Println("Index", strconv.Itoa(index)+":", e)
  15. return false
  16. })
  17. fmt.Println()
  18. deleted := syncSlice.DeleteAt(3)
  19. fmt.Println("Deleted:", deleted)
  20. fmt.Println()
  21. syncSlice.Range(func(index int, e string) bool {
  22. fmt.Println("Index", strconv.Itoa(index)+":", e)
  23. return false
  24. })
  25. fmt.Println()
  26. syncSlice.Lock()
  27. syncSlice.AppendNoLock("ddd")
  28. fmt.Println("Len:", syncSlice.LenNoLock())
  29. fmt.Println("Cap:", syncSlice.CapNoLock())
  30. fmt.Println()
  31. syncSlice.RangeNoLock(func(index int, e string) bool {
  32. fmt.Println("Index", strconv.Itoa(index)+":", e)
  33. return false
  34. })
  35. fmt.Println()
  36. deleted = syncSlice.DeleteAtNoLock(3)
  37. fmt.Println("Deleted:", deleted)
  38. fmt.Println()
  39. syncSlice.RangeNoLock(func(index int, e string) bool {
  40. fmt.Println("Index", strconv.Itoa(index)+":", e)
  41. return false
  42. })
  43. fmt.Println()
  44. syncSlice.Unlock()
  45. rwSyncSlice := NewSyncSlice([]string{"aaa", "bbb", "ccc"}, true)
  46. rwSyncSlice.Append("ddd")
  47. fmt.Println("Len:", rwSyncSlice.Len())
  48. fmt.Println("Cap:", rwSyncSlice.Cap())
  49. fmt.Println()
  50. rwSyncSlice.Range(func(index int, e string) bool {
  51. fmt.Println("Index", strconv.Itoa(index)+":", e)
  52. return false
  53. })
  54. fmt.Println()
  55. deleted = rwSyncSlice.DeleteAt(3)
  56. fmt.Println("Deleted:", deleted)
  57. fmt.Println()
  58. rwSyncSlice.Range(func(index int, e string) bool {
  59. fmt.Println("Index", strconv.Itoa(index)+":", e)
  60. return false
  61. })
  62. fmt.Println()
  63. rwSyncSlice.Lock()
  64. rwSyncSlice.AppendNoLock("ddd")
  65. rwSyncSlice.Unlock()
  66. rwSyncSlice.RLock()
  67. fmt.Println("Len:", rwSyncSlice.LenNoLock())
  68. fmt.Println("Cap:", rwSyncSlice.CapNoLock())
  69. fmt.Println()
  70. rwSyncSlice.RangeNoLock(func(index int, e string) bool {
  71. fmt.Println("Index", strconv.Itoa(index)+":", e)
  72. return false
  73. })
  74. rwSyncSlice.RUnlock()
  75. fmt.Println()
  76. rwSyncSlice.Lock()
  77. deleted = rwSyncSlice.DeleteAtNoLock(3)
  78. rwSyncSlice.Unlock()
  79. fmt.Println("Deleted:", deleted)
  80. fmt.Println()
  81. rwSyncSlice.RLock()
  82. rwSyncSlice.RangeNoLock(func(index int, e string) bool {
  83. fmt.Println("Index", strconv.Itoa(index)+":", e)
  84. return false
  85. })
  86. rwSyncSlice.RUnlock()
  87. fmt.Println()
  88. }