slice_array_test.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package tests
  2. import (
  3. "testing"
  4. "github.com/modern-go/reflect2"
  5. )
  6. func Test_slice_array(t *testing.T) {
  7. t.Run("SetIndex", testOp(func(api reflect2.API) interface{} {
  8. obj := [][1]int{{}, {}}
  9. valType := api.TypeOf(obj).(reflect2.SliceType)
  10. elem1 := [1]int{1}
  11. valType.SetIndex(&obj, 0, &elem1)
  12. elem2 := [1]int{2}
  13. valType.SetIndex(&obj, 1, &elem2)
  14. return obj
  15. }))
  16. t.Run("SetIndex single ptr struct", testOp(func(api reflect2.API) interface{} {
  17. obj := [][1]*int{{}, {}}
  18. valType := api.TypeOf(obj).(reflect2.SliceType)
  19. elem1 := [1]*int{}
  20. valType.SetIndex(&obj, 0, &elem1)
  21. elem2 := [1]*int{}
  22. valType.SetIndex(&obj, 1, &elem2)
  23. return obj
  24. }))
  25. t.Run("SetIndex single chan struct", testOp(func(api reflect2.API) interface{} {
  26. obj := [][1]chan int{{}, {}}
  27. valType := api.TypeOf(obj).(reflect2.SliceType)
  28. elem1 := [1]chan int{}
  29. valType.SetIndex(&obj, 0, &elem1)
  30. elem2 := [1]chan int{}
  31. valType.SetIndex(&obj, 1, &elem2)
  32. return obj
  33. }))
  34. t.Run("SetIndex single func struct", testOp(func(api reflect2.API) interface{} {
  35. obj := [][1]func(){{}, {}}
  36. valType := api.TypeOf(obj).(reflect2.SliceType)
  37. elem1 := [1]func(){}
  38. valType.SetIndex(&obj, 0, &elem1)
  39. elem2 := [1]func(){}
  40. valType.SetIndex(&obj, 1, &elem2)
  41. return obj
  42. }))
  43. }