func TestReduce(t *testing.T) { oddOrEven := func(s string) string { i := util.Atoi(s) if i%2 == 0 { return "even" } return "odd" } oddFirst := func(l string, r string) bool { if l == r { return false } if l == "odd" { return true } return false } sumUp := func(acc []string, s string) []string { if len(acc) == 0 { return []string{s} } i := util.Atoi(s) sum := i + util.Atoi(acc[0]) return []string{strconv.Itoa(sum)} } inputs := []string{"0", "1", "2", "3"} outputs := DoReduce(inputs, oddOrEven, oddFirst, sumUp) assert.Len(t, outputs, 2) assert.Equal(t, "4", outputs[0]) assert.Equal(t, "2", outputs[1]) }
func TestMap(t *testing.T) { filterNegative := func(s string) (string, bool) { i := util.Atoi(s) if i < 0 { return "", false } return strconv.Itoa(i), true } input := []string{"-1", "1"} output := DoMap(input, filterNegative) assert.Len(t, output, 1) assert.Equal(t, "1", output[0]) }