sync_slice_test.go 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  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. syncSlice.Range(func(index int, e string) bool {
  11. fmt.Println("Index", strconv.Itoa(index)+":", e)
  12. return false
  13. })
  14. fmt.Println()
  15. syncSlice.DeleteAt(3)
  16. syncSlice.Range(func(index int, e string) bool {
  17. fmt.Println("Index", strconv.Itoa(index)+":", e)
  18. return false
  19. })
  20. fmt.Println()
  21. syncSlice.Lock()
  22. syncSlice.AppendNoLock("ddd")
  23. syncSlice.RangeNoLock(func(index int, e string) bool {
  24. fmt.Println("Index", strconv.Itoa(index)+":", e)
  25. return false
  26. })
  27. fmt.Println()
  28. syncSlice.DeleteAtNoLock(3)
  29. syncSlice.RangeNoLock(func(index int, e string) bool {
  30. fmt.Println("Index", strconv.Itoa(index)+":", e)
  31. return false
  32. })
  33. fmt.Println()
  34. syncSlice.Unlock()
  35. rwSyncSlice := NewSyncSlice([]string{"aaa", "bbb", "ccc"}, true)
  36. rwSyncSlice.Append("ddd")
  37. rwSyncSlice.Range(func(index int, e string) bool {
  38. fmt.Println("Index", strconv.Itoa(index)+":", e)
  39. return false
  40. })
  41. fmt.Println()
  42. rwSyncSlice.DeleteAt(3)
  43. rwSyncSlice.Range(func(index int, e string) bool {
  44. fmt.Println("Index", strconv.Itoa(index)+":", e)
  45. return false
  46. })
  47. fmt.Println()
  48. rwSyncSlice.Lock()
  49. rwSyncSlice.AppendNoLock("ddd")
  50. rwSyncSlice.RangeNoLock(func(index int, e string) bool {
  51. fmt.Println("Index", strconv.Itoa(index)+":", e)
  52. return false
  53. })
  54. fmt.Println()
  55. rwSyncSlice.DeleteAtNoLock(3)
  56. rwSyncSlice.RangeNoLock(func(index int, e string) bool {
  57. fmt.Println("Index", strconv.Itoa(index)+":", e)
  58. return false
  59. })
  60. fmt.Println()
  61. rwSyncSlice.Unlock()
  62. }