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  }