github.com/searKing/golang/go@v1.2.74/exp/slices/map_test.go (about)

     1  // Copyright 2022 The searKing Author. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package slices_test
     6  
     7  import (
     8  	"fmt"
     9  	"strconv"
    10  	"testing"
    11  
    12  	slices_ "github.com/searKing/golang/go/exp/slices"
    13  	"golang.org/x/exp/slices"
    14  )
    15  
    16  func TestMap(t *testing.T) {
    17  	tests := []struct {
    18  		data []int
    19  		want []string
    20  	}{
    21  		{nil, nil},
    22  		{[]int{}, []string{}},
    23  		{[]int{0}, []string{"0"}},
    24  		{[]int{1, 0}, []string{"1", "0"}},
    25  		{[]int{1, 2}, []string{"1", "2"}},
    26  		{[]int{0, 1, 2}, []string{"0", "1", "2"}},
    27  		{[]int{0, 1, 0, 2}, []string{"0", "1", "0", "2"}},
    28  	}
    29  	for _, tt := range tests {
    30  		t.Run(fmt.Sprintf("%v", tt.data), func(t *testing.T) {
    31  			{
    32  				got := slices_.Map(tt.data)
    33  
    34  				if slices.Compare(got, tt.want) != 0 {
    35  					t.Errorf("slices_.Filter(%v) = %v, want %v", tt.data, got, tt.want)
    36  				}
    37  			}
    38  		})
    39  	}
    40  }
    41  
    42  func TestMapFunc(t *testing.T) {
    43  	tests := []struct {
    44  		data []int
    45  		want []string
    46  	}{
    47  		{nil, nil},
    48  		{[]int{}, []string{}},
    49  		{[]int{0}, []string{"0"}},
    50  		{[]int{1, 0}, []string{"1", "0"}},
    51  		{[]int{1, 2}, []string{"1", "2"}},
    52  		{[]int{0, 1, 2}, []string{"0", "1", "2"}},
    53  		{[]int{0, 1, 0, 2}, []string{"0", "1", "0", "2"}},
    54  	}
    55  	for _, tt := range tests {
    56  		t.Run(fmt.Sprintf("%v", tt.data), func(t *testing.T) {
    57  			{
    58  				got := slices_.MapFunc(tt.data, func(e int) string {
    59  					return strconv.Itoa(e)
    60  				})
    61  
    62  				if slices.Compare(got, tt.want) != 0 {
    63  					t.Errorf("slices_.FilterFunc(%v, func(e int) bool {return e != 0}) = %v, want %v", tt.data, got, tt.want)
    64  				}
    65  			}
    66  		})
    67  	}
    68  }