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  }