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