github.com/bingoohuang/gg@v0.0.0-20240325092523-45da7dee9335/pkg/mapp/map_test.go (about)

     1  package mapp
     2  
     3  import (
     4  	"fmt"
     5  	"sort"
     6  	"testing"
     7  
     8  	"github.com/stretchr/testify/assert"
     9  )
    10  
    11  func TestMapKeys(t *testing.T) {
    12  	m := map[string]string{"k1": "v1", "k2": "v2"}
    13  	keys := Keys(m)
    14  	sort.Strings(keys)
    15  	assert.Equal(t, []string{"k1", "k2"}, keys)
    16  }
    17  
    18  func TestMapKeysSorted(t *testing.T) {
    19  	m := map[int]int{1: 11, 2: 22, 3: 33}
    20  	keys := KeysSortedX(m).([]int)
    21  	assert.Equal(t, []int{1, 2, 3}, keys)
    22  }
    23  
    24  func TestMapGetOr(t *testing.T) {
    25  	a := assert.New(t)
    26  
    27  	m := map[int]int{1: 11}
    28  
    29  	a.Equal(11, GetOr(m, 1, 100))
    30  	a.Equal(22, GetOr(m, 2, 22))
    31  
    32  	m2 := map[string]string{"1": "11"}
    33  
    34  	a.Equal("11", GetOr(m2, "1", "100"))
    35  	a.Equal("22", GetOr(m2, "2", "22"))
    36  }
    37  
    38  func TestWalkMapInt(t *testing.T) {
    39  	a := assert.New(t)
    40  
    41  	m := map[int]int{1: 11, 2: 22, 3: 33}
    42  	ks := ""
    43  	vs := ""
    44  
    45  	WalkMap(m, func(k, v int) {
    46  		ks += fmt.Sprintf("%d", k)
    47  		vs += fmt.Sprintf("%d", v)
    48  	})
    49  	a.Equal("123", ks)
    50  	a.Equal("112233", vs)
    51  }
    52  
    53  func TestWalkMapString(t *testing.T) {
    54  	a := assert.New(t)
    55  
    56  	m := map[string]int{"1": 11, "2": 22, "3": 33}
    57  	ks := ""
    58  	vs := ""
    59  
    60  	WalkMap(m, func(k string, v int) {
    61  		ks += k
    62  		vs += fmt.Sprintf("%v", v)
    63  	})
    64  	a.Equal("123", ks)
    65  	a.Equal("112233", vs)
    66  }
    67  
    68  func TestWalkMapFloat64(t *testing.T) {
    69  	a := assert.New(t)
    70  
    71  	m := map[float64]int{1.1: 11, 2.2: 22, 3.3: 33}
    72  	ks := ""
    73  	vs := ""
    74  
    75  	WalkMap(m, func(k float64, v int) {
    76  		ks += fmt.Sprintf("%.1f", k)
    77  		vs += fmt.Sprintf("%v", v)
    78  	})
    79  	a.Equal("1.12.23.3", ks)
    80  	a.Equal("112233", vs)
    81  }
    82  
    83  func TestWalkMapOther(t *testing.T) {
    84  	a := assert.New(t)
    85  
    86  	m := map[float32]int{1.1: 11, 2.2: 22, 3.3: 33}
    87  	ks := ""
    88  	vs := ""
    89  
    90  	WalkMap(m, func(k float32, v int) {
    91  		ks += fmt.Sprintf("%.1f", k)
    92  		vs += fmt.Sprintf("%v", v)
    93  	})
    94  	a.Equal("1.12.23.3", ks)
    95  	a.Equal("112233", vs)
    96  }