1 package funk
2
3 import (
4 "testing"
5
6 "github.com/stretchr/testify/assert"
7 )
8
9 func 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
32 func 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
60 func TestHead(t *testing.T) {
61 is := assert.New(t)
62
63 is.Equal(Head([]int{1, 2, 3, 4}), 1)
64 }
65
66 func TestLast(t *testing.T) {
67 is := assert.New(t)
68
69 is.Equal(Last([]int{1, 2, 3, 4}), 4)
70 }
71
72 func 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
80 func 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
View as plain text