github.com/seeker-insurance/kit@v0.0.13/imath/functional_test.go (about) 1 package imath 2 3 import ( 4 "testing" 5 6 "github.com/seeker-insurance/kit/imath/operator" 7 "github.com/stretchr/testify/assert" 8 ) 9 10 func TestAccumulate(t *testing.T) { 11 a := []int{1, 2, 3, 4} 12 want := []int{1, (1 + 2), (1 + 2 + 3), (1 + 2 + 3 + 4)} 13 assert.Equal(t, want, Accumulate(operator.Add, a)) 14 assert.Empty(t, Accumulate(operator.Mul, []int(nil))) 15 } 16 17 func TestFilter(t *testing.T) { 18 isEven := func(n int) bool { return n%2 == 0 } 19 want := []int{0, 2, 4} 20 assert.Equal(t, want, Filter(isEven, Range(0, 5, 1))) 21 } 22 23 func TestReduce(t *testing.T) { 24 a := Range(1, 10, 1) 25 got := Reduce(operator.Add, 0, a...) 26 want := Sum(Range(0, 10, 1)...) 27 assert.Equal(t, want, got) 28 } 29 30 func TestMap(t *testing.T) { 31 double := func(n int) int { return 2 * n } 32 want := []int{2, 4, 6, 8} 33 assert.Equal(t, want, Map(double, []int{1, 2, 3, 4})) 34 }