1package funk 2 3import ( 4 "testing" 5 6 "github.com/stretchr/testify/assert" 7) 8 9func TestForEach(t *testing.T) { 10 is := assert.New(t) 11 12 results := []int{} 13 14 ForEach([]int{1, 2, 3, 4}, func(x int) { 15 if x%2 == 0 { 16 results = append(results, x) 17 } 18 }) 19 20 is.Equal(results, []int{2, 4}) 21 22 mapping := map[int]string{ 23 1: "Florent", 24 2: "Gilles", 25 } 26 27 ForEach(mapping, func(k int, v string) { 28 is.Equal(v, mapping[k]) 29 }) 30} 31 32func TestForEachRight(t *testing.T) { 33 is := assert.New(t) 34 35 results := []int{} 36 37 ForEachRight([]int{1, 2, 3, 4}, func(x int) { 38 results = append(results, x*2) 39 }) 40 41 is.Equal(results, []int{8, 6, 4, 2}) 42 43 mapping := map[int]string{ 44 1: "Florent", 45 2: "Gilles", 46 } 47 48 mapKeys := []int{} 49 50 ForEachRight(mapping, func(k int, v string) { 51 is.Equal(v, mapping[k]) 52 mapKeys = append(mapKeys, k) 53 }) 54 55 is.Equal(len(mapKeys), 2) 56 is.Contains(mapKeys, 1) 57 is.Contains(mapKeys, 2) 58} 59 60func TestHead(t *testing.T) { 61 is := assert.New(t) 62 63 is.Equal(Head([]int{1, 2, 3, 4}), 1) 64} 65 66func TestLast(t *testing.T) { 67 is := assert.New(t) 68 69 is.Equal(Last([]int{1, 2, 3, 4}), 4) 70} 71 72func TestTail(t *testing.T) { 73 is := assert.New(t) 74 75 is.Equal(Tail([]int{}), []int{}) 76 is.Equal(Tail([]int{1}), []int{1}) 77 is.Equal(Tail([]int{1, 2, 3, 4}), []int{2, 3, 4}) 78} 79 80func TestInitial(t *testing.T) { 81 is := assert.New(t) 82 83 is.Equal(Initial([]int{}), []int{}) 84 is.Equal(Initial([]int{1}), []int{1}) 85 is.Equal(Initial([]int{1, 2, 3, 4}), []int{1, 2, 3}) 86} 87