@@ -576,6 +576,72 @@ func TestMap_String(t *testing.T) {
576576 }
577577}
578578
579+ func TestMap_Int (t * testing.T ) {
580+ cases := []struct {
581+ in []string
582+ want []int
583+ f func (string ) int
584+ }{
585+ {
586+ in : []string {"1" , "5" , "2" },
587+ want : []int {1 , 5 , 2 },
588+ f : func (s string ) int {
589+ n , _ := strconv .Atoi (s ) // notlint: errcheck
590+ return n
591+ },
592+ },
593+ }
594+ for _ , tc := range cases {
595+ t .Run ("" , func (t * testing.T ) {
596+ out := Map (tc .in , tc .f )
597+ if ! reflect .DeepEqual (tc .want , out ) {
598+ t .Errorf ("\n out: %#v\n want: %#v\n " , out , tc .want )
599+ }
600+ })
601+ }
602+ }
603+
604+ func TestReduce_Int (t * testing.T ) {
605+ cases := []struct {
606+ in []int
607+ want int64
608+ f func (int64 , int ) int64
609+ }{
610+ {
611+ in : []int {1 , 5 , 2 },
612+ want : 8 ,
613+ f : func (acc int64 , i int ) int64 {
614+ return acc + int64 (i )
615+ },
616+ },
617+ }
618+ for _ , tc := range cases {
619+ t .Run ("" , func (t * testing.T ) {
620+ out := Reduce (tc .in , tc .f , 0 )
621+ if ! reflect .DeepEqual (tc .want , out ) {
622+ t .Errorf ("\n out: %#v\n want: %#v\n " , out , tc .want )
623+ }
624+ })
625+ }
626+ }
627+
628+ func TestReduce_Struct (t * testing.T ) {
629+ type Acc struct {
630+ acc int
631+ }
632+
633+ out := Reduce (
634+ []int {1 , 2 , 3 },
635+ func (out Acc , i int ) Acc {
636+ out .acc += i
637+ return out
638+ },
639+ Acc {})
640+ if out .acc != 6 {
641+ t .Errorf ("\n out: %#v\n want: %#v\n " , out .acc , 6 )
642+ }
643+ }
644+
579645func TestInterfaceSliceTo (t * testing.T ) {
580646 {
581647 src := []interface {}{"1" , "2" , "3" , "4" , "5" }
0 commit comments