Files
lo/mutable/slice_test.go
Nathan Baulch 7170719ec0 lint: unit test improvements (#674)
* lint: pin golangci-lint version

* lint: use is.Empty where possible

* lint: use is.ElementsMatch for unsorted slices

* lint: remove redundant is.Len assertions

* lint: use is.Zero to assert zero structs

* fix: misc assertion issues

* lint: more consistent test case pattern

* fix: reversed expect/actual assert values

* lint: use is.ErrorIs and is.EqualError for errors

* Update golangci-lint version in workflow

---------

Co-authored-by: Samuel Berthe <dev@samuel-berthe.fr>
2025-09-24 21:02:52 +02:00

125 lines
2.2 KiB
Go

package mutable
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestFilter(t *testing.T) {
t.Parallel()
is := assert.New(t)
input1 := []int{1, 2, 3, 4}
r1 := Filter(input1, func(x int) bool {
return x%2 == 0
})
is.Equal([]int{2, 4, 3, 4}, input1)
is.Equal([]int{2, 4}, r1)
input2 := []string{"", "foo", "", "bar", ""}
r2 := Filter(input2, func(x string) bool {
return len(x) > 0
})
is.Equal([]string{"foo", "bar", "", "bar", ""}, input2)
is.Equal([]string{"foo", "bar"}, r2)
}
func TestFilterI(t *testing.T) {
t.Parallel()
is := assert.New(t)
r1 := FilterI([]int{1, 2, 3, 4}, func(x int, i int) bool {
is.Equal(i, x-1)
return x%2 == 0
})
is.Equal([]int{2, 4}, r1)
}
func TestMap(t *testing.T) {
t.Parallel()
is := assert.New(t)
list := []int{1, 2, 3, 4}
Map(list, func(x int) int {
return x * 2
})
is.Equal([]int{2, 4, 6, 8}, list)
list = []int{1, 2, 3, 4}
Map(list, func(x int) int {
return x * 4
})
is.Equal([]int{4, 8, 12, 16}, list)
}
func TestMapI(t *testing.T) {
t.Parallel()
is := assert.New(t)
list := []int{1, 2, 3, 4}
MapI(list, func(x int, index int) int {
is.Equal(index, x-1)
return x * 2
})
is.Equal([]int{2, 4, 6, 8}, list)
list = []int{1, 2, 3, 4}
MapI(list, func(x int, index int) int {
is.Equal(index, x-1)
return x * 4
})
is.Equal([]int{4, 8, 12, 16}, list)
}
func TestShuffle(t *testing.T) {
t.Parallel()
is := assert.New(t)
list := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
Shuffle(list)
is.NotEqual([]int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, list)
list = []int{}
Shuffle(list)
is.Empty(list)
}
func TestReverse(t *testing.T) {
t.Parallel()
is := assert.New(t)
list := []int{0, 1, 2, 3, 4, 5}
Reverse(list)
is.Equal([]int{5, 4, 3, 2, 1, 0}, list)
list = []int{0, 1, 2, 3, 4, 5, 6}
Reverse(list)
is.Equal([]int{6, 5, 4, 3, 2, 1, 0}, list)
list = []int{}
Reverse(list)
is.Empty(list)
type myStrings []string
allStrings := myStrings{"", "foo", "bar"}
Reverse(allStrings)
is.IsType(myStrings{"", "foo", "bar"}, allStrings, "type preserved")
}
func TestFill(t *testing.T) {
t.Parallel()
is := assert.New(t)
list1 := []string{"a", "0"}
Fill(list1, "b")
is.Equal([]string{"b", "b"}, list1)
list2 := []string{}
Fill(list2, "b")
is.Empty(list2)
}