| package slicesx |
|
|
| import ( |
| "errors" |
| "testing" |
|
|
| "github.com/stretchr/testify/assert" |
| ) |
|
|
| func TestForEachUntilWithErr(t *testing.T) { |
| t.Run("Empty slice", func(t *testing.T) { |
| callCount := 0 |
| err := ForEachUntilWithErr([]int{}, func(v int, i int) (breaks bool, err error) { |
| callCount++ |
| return false, nil |
| }) |
| assert.NoError(t, err) |
| assert.Equal(t, 0, callCount) |
| }) |
|
|
| t.Run("Process all elements", func(t *testing.T) { |
| callCount := 0 |
| err := ForEachUntilWithErr([]int{1, 2, 3}, func(v int, i int) (breaks bool, err error) { |
| callCount++ |
| return false, nil |
| }) |
| assert.NoError(t, err) |
| assert.Equal(t, 3, callCount) |
| }) |
|
|
| t.Run("Break after first element", func(t *testing.T) { |
| callCount := 0 |
| err := ForEachUntilWithErr([]int{1, 2, 3}, func(v int, i int) (breaks bool, err error) { |
| callCount++ |
| return true, nil |
| }) |
| assert.NoError(t, err) |
| assert.Equal(t, 1, callCount) |
| }) |
|
|
| t.Run("Return error on second element", func(t *testing.T) { |
| callCount := 0 |
| expectedErr := errors.New("test error") |
| err := ForEachUntilWithErr([]int{1, 2, 3}, func(v int, i int) (breaks bool, err error) { |
| callCount++ |
| if callCount == 2 { |
| return false, expectedErr |
| } |
| return false, nil |
| }) |
| assert.Equal(t, expectedErr, err) |
| assert.Equal(t, 2, callCount) |
| }) |
| } |
|
|
| func TestASDF(t *testing.T) { |
| asd := []int{1, 2, 3} |
|
|
| cuc := func(v *[]int) { |
| *v = append(*v, 4) |
| } |
|
|
| cuc(&asd) |
|
|
| assert.Equal(t, []int{1, 2, 3, 4}, asd) |
| } |
|
|