Skip to content

Commit 85e8caf

Browse files
author
yangyile
committed
添加返回(map,error)的断言检查
1 parent 0809f54 commit 85e8caf

File tree

4 files changed

+236
-3
lines changed

4 files changed

+236
-3
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ go 1.22.8
55
require (
66
github.com/stretchr/testify v1.10.0
77
github.com/yyle88/done v1.0.23
8-
github.com/yyle88/must v0.0.17
8+
github.com/yyle88/must v0.0.19
99
)
1010

1111
require (

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOf
1414
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
1515
github.com/yyle88/done v1.0.23 h1:OJ+h4Nbu8lYsZdMoT0ttSIjrXzRc7uX8/fcYaqqIV7c=
1616
github.com/yyle88/done v1.0.23/go.mod h1:DaeF2NaYbUnvJKaNOAEQwT7PhVJbd8TNcT85ajIp1eU=
17-
github.com/yyle88/must v0.0.17 h1:NX+nx6g0gzxv+SedEDoizD1+a6toMShlkH3cadeoPZ8=
18-
github.com/yyle88/must v0.0.17/go.mod h1:eh05Aksb3JGi2tzb6OBgoY37icxT0OHmBQEM1dvMaVQ=
17+
github.com/yyle88/must v0.0.19 h1:mKJBZ3HsyhiCv95AhgPRRj1fl0OB4B9o5jbbFZR2ZrQ=
18+
github.com/yyle88/must v0.0.19/go.mod h1:eh05Aksb3JGi2tzb6OBgoY37icxT0OHmBQEM1dvMaVQ=
1919
github.com/yyle88/mutexmap v1.0.10 h1:PIsx9KTdK6h1yH5NzBrPl21RrZ/XsE4IbgulMlhJzZE=
2020
github.com/yyle88/mutexmap v1.0.10/go.mod h1:QUYDuARLPlGj414kHewQ5tt8jkDxQXoai8H3C4Gg+yc=
2121
github.com/yyle88/zaplog v0.0.20 h1:ByVj51j2C9p5tWw8wbIdmdrMK5IS6VECh/U746t321E=

mape.go

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
package rese
2+
3+
import (
4+
"github.com/yyle88/done"
5+
"github.com/yyle88/must/mustmap"
6+
)
7+
8+
func M0(err error) {
9+
done.Done(err)
10+
}
11+
12+
func M1[K1 comparable, V1 any](m1 map[K1]V1, err error) map[K1]V1 {
13+
done.Done(err)
14+
mustmap.Have(m1)
15+
return m1
16+
}
17+
18+
func M2[K1, K2 comparable, V1, V2 any](m1 map[K1]V1, m2 map[K2]V2, err error) (map[K1]V1, map[K2]V2) {
19+
done.Done(err)
20+
mustmap.Have(m1)
21+
mustmap.Have(m2)
22+
return m1, m2
23+
}
24+
25+
func M3[K1, K2, K3 comparable, V1, V2, V3 any](m1 map[K1]V1, m2 map[K2]V2, m3 map[K3]V3, err error) (map[K1]V1, map[K2]V2, map[K3]V3) {
26+
done.Done(err)
27+
mustmap.Have(m1)
28+
mustmap.Have(m2)
29+
mustmap.Have(m3)
30+
return m1, m2, m3
31+
}
32+
33+
func M4[K1, K2, K3, K4 comparable, V1, V2, V3, V4 any](m1 map[K1]V1, m2 map[K2]V2, m3 map[K3]V3, m4 map[K4]V4, err error) (map[K1]V1, map[K2]V2, map[K3]V3, map[K4]V4) {
34+
done.Done(err)
35+
mustmap.Have(m1)
36+
mustmap.Have(m2)
37+
mustmap.Have(m3)
38+
mustmap.Have(m4)
39+
return m1, m2, m3, m4
40+
}
41+
42+
func M5[K1, K2, K3, K4, K5 comparable, V1, V2, V3, V4, V5 any](m1 map[K1]V1, m2 map[K2]V2, m3 map[K3]V3, m4 map[K4]V4, m5 map[K5]V5, err error) (map[K1]V1, map[K2]V2, map[K3]V3, map[K4]V4, map[K5]V5) {
43+
done.Done(err)
44+
mustmap.Have(m1)
45+
mustmap.Have(m2)
46+
mustmap.Have(m3)
47+
mustmap.Have(m4)
48+
mustmap.Have(m5)
49+
return m1, m2, m3, m4, m5
50+
}
51+
52+
func M6[K1, K2, K3, K4, K5, K6 comparable, V1, V2, V3, V4, V5, V6 any](m1 map[K1]V1, m2 map[K2]V2, m3 map[K3]V3, m4 map[K4]V4, m5 map[K5]V5, m6 map[K6]V6, err error) (map[K1]V1, map[K2]V2, map[K3]V3, map[K4]V4, map[K5]V5, map[K6]V6) {
53+
done.Done(err)
54+
mustmap.Have(m1)
55+
mustmap.Have(m2)
56+
mustmap.Have(m3)
57+
mustmap.Have(m4)
58+
mustmap.Have(m5)
59+
mustmap.Have(m6)
60+
return m1, m2, m3, m4, m5, m6
61+
}
62+
63+
func M7[K1, K2, K3, K4, K5, K6, K7 comparable, V1, V2, V3, V4, V5, V6, V7 any](m1 map[K1]V1, m2 map[K2]V2, m3 map[K3]V3, m4 map[K4]V4, m5 map[K5]V5, m6 map[K6]V6, m7 map[K7]V7, err error) (map[K1]V1, map[K2]V2, map[K3]V3, map[K4]V4, map[K5]V5, map[K6]V6, map[K7]V7) {
64+
done.Done(err)
65+
mustmap.Have(m1)
66+
mustmap.Have(m2)
67+
mustmap.Have(m3)
68+
mustmap.Have(m4)
69+
mustmap.Have(m5)
70+
mustmap.Have(m6)
71+
mustmap.Have(m7)
72+
return m1, m2, m3, m4, m5, m6, m7
73+
}
74+
75+
func M8[K1, K2, K3, K4, K5, K6, K7, K8 comparable, V1, V2, V3, V4, V5, V6, V7, V8 any](m1 map[K1]V1, m2 map[K2]V2, m3 map[K3]V3, m4 map[K4]V4, m5 map[K5]V5, m6 map[K6]V6, m7 map[K7]V7, m8 map[K8]V8, err error) (map[K1]V1, map[K2]V2, map[K3]V3, map[K4]V4, map[K5]V5, map[K6]V6, map[K7]V7, map[K8]V8) {
76+
done.Done(err)
77+
mustmap.Have(m1)
78+
mustmap.Have(m2)
79+
mustmap.Have(m3)
80+
mustmap.Have(m4)
81+
mustmap.Have(m5)
82+
mustmap.Have(m6)
83+
mustmap.Have(m7)
84+
mustmap.Have(m8)
85+
return m1, m2, m3, m4, m5, m6, m7, m8
86+
}
87+
88+
func M9[K1, K2, K3, K4, K5, K6, K7, K8, K9 comparable, V1, V2, V3, V4, V5, V6, V7, V8, V9 any](m1 map[K1]V1, m2 map[K2]V2, m3 map[K3]V3, m4 map[K4]V4, m5 map[K5]V5, m6 map[K6]V6, m7 map[K7]V7, m8 map[K8]V8, m9 map[K9]V9, err error) (map[K1]V1, map[K2]V2, map[K3]V3, map[K4]V4, map[K5]V5, map[K6]V6, map[K7]V7, map[K8]V8, map[K9]V9) {
89+
done.Done(err)
90+
mustmap.Have(m1)
91+
mustmap.Have(m2)
92+
mustmap.Have(m3)
93+
mustmap.Have(m4)
94+
mustmap.Have(m5)
95+
mustmap.Have(m6)
96+
mustmap.Have(m7)
97+
mustmap.Have(m8)
98+
mustmap.Have(m9)
99+
return m1, m2, m3, m4, m5, m6, m7, m8, m9
100+
}

mape_test.go

Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
package rese_test
2+
3+
import (
4+
"testing"
5+
6+
"github.com/stretchr/testify/require"
7+
"github.com/yyle88/rese"
8+
)
9+
10+
func TestM0(t *testing.T) {
11+
run := func() error {
12+
return nil
13+
}
14+
15+
rese.M0(run())
16+
}
17+
18+
func TestM1(t *testing.T) {
19+
run := func() (map[int]string, error) {
20+
return map[int]string{0: "a"}, nil
21+
}
22+
23+
m1 := rese.M1(run())
24+
require.Equal(t, map[int]string{0: "a"}, m1)
25+
}
26+
27+
func TestM2(t *testing.T) {
28+
run := func() (map[int]string, map[string]int, error) {
29+
return map[int]string{3: "a"}, map[string]int{"x": 1}, nil
30+
}
31+
32+
m1, m2 := rese.M2(run())
33+
require.Equal(t, map[int]string{3: "a"}, m1)
34+
require.Equal(t, map[string]int{"x": 1}, m2)
35+
}
36+
37+
func TestM3(t *testing.T) {
38+
run := func() (map[int8]bool, map[float32]string, map[string]byte, error) {
39+
return map[int8]bool{1: true}, map[float32]string{1.5: "float"}, map[string]byte{"key": 'A'}, nil
40+
}
41+
42+
m1, m2, m3 := rese.M3(run())
43+
require.Equal(t, map[int8]bool{1: true}, m1)
44+
require.Equal(t, map[float32]string{1.5: "float"}, m2)
45+
require.Equal(t, map[string]byte{"key": 'A'}, m3)
46+
}
47+
48+
func TestM4(t *testing.T) {
49+
run := func() (map[int64]float64, map[bool]int, map[rune]string, map[uint8]bool, error) {
50+
return map[int64]float64{100: 3.14}, map[bool]int{true: 1}, map[rune]string{'x': "rune"}, map[uint8]bool{255: false}, nil
51+
}
52+
53+
m1, m2, m3, m4 := rese.M4(run())
54+
require.Equal(t, map[int64]float64{100: 3.14}, m1)
55+
require.Equal(t, map[bool]int{true: 1}, m2)
56+
require.Equal(t, map[rune]string{'x': "rune"}, m3)
57+
require.Equal(t, map[uint8]bool{255: false}, m4)
58+
}
59+
60+
func TestM5(t *testing.T) {
61+
run := func() (map[float64]int32, map[int16]complex64, map[string]uint, map[bool]byte, map[uint16]float32, error) {
62+
return map[float64]int32{2.718: 42}, map[int16]complex64{10: 1 + 2i}, map[string]uint{"num": 100}, map[bool]byte{false: '0'}, map[uint16]float32{1: 0.5}, nil
63+
}
64+
65+
m1, m2, m3, m4, m5 := rese.M5(run())
66+
require.Equal(t, map[float64]int32{2.718: 42}, m1)
67+
require.Equal(t, map[int16]complex64{10: 1 + 2i}, m2)
68+
require.Equal(t, map[string]uint{"num": 100}, m3)
69+
require.Equal(t, map[bool]byte{false: '0'}, m4)
70+
require.Equal(t, map[uint16]float32{1: 0.5}, m5)
71+
}
72+
73+
func TestM6(t *testing.T) {
74+
run := func() (map[uint32]string, map[int]float64, map[complex128]bool, map[string]int8, map[float32]uint64, map[bool]rune, error) {
75+
return map[uint32]string{1000: "test"}, map[int]float64{5: 2.5}, map[complex128]bool{1 + 1i: true}, map[string]int8{"x": -1}, map[float32]uint64{0.1: 999}, map[bool]rune{true: 'Z'}, nil
76+
}
77+
78+
m1, m2, m3, m4, m5, m6 := rese.M6(run())
79+
require.Equal(t, map[uint32]string{1000: "test"}, m1)
80+
require.Equal(t, map[int]float64{5: 2.5}, m2)
81+
require.Equal(t, map[complex128]bool{1 + 1i: true}, m3)
82+
require.Equal(t, map[string]int8{"x": -1}, m4)
83+
require.Equal(t, map[float32]uint64{0.1: 999}, m5)
84+
require.Equal(t, map[bool]rune{true: 'Z'}, m6)
85+
}
86+
87+
func TestM7(t *testing.T) {
88+
run := func() (map[int32]uint32, map[uint64]float64, map[string]complex128, map[bool]int16, map[rune]byte, map[float64]string, map[int8]bool, error) {
89+
return map[int32]uint32{-1: 10}, map[uint64]float64{100: 1.23}, map[string]complex128{"c": 3 + 4i}, map[bool]int16{true: 8}, map[rune]byte{'a': 65}, map[float64]string{0.0: "zero"}, map[int8]bool{127: false}, nil
90+
}
91+
92+
m1, m2, m3, m4, m5, m6, m7 := rese.M7(run())
93+
require.Equal(t, map[int32]uint32{-1: 10}, m1)
94+
require.Equal(t, map[uint64]float64{100: 1.23}, m2)
95+
require.Equal(t, map[string]complex128{"c": 3 + 4i}, m3)
96+
require.Equal(t, map[bool]int16{true: 8}, m4)
97+
require.Equal(t, map[rune]byte{'a': 65}, m5)
98+
require.Equal(t, map[float64]string{0.0: "zero"}, m6)
99+
require.Equal(t, map[int8]bool{127: false}, m7)
100+
}
101+
102+
func TestM8(t *testing.T) {
103+
run := func() (map[uint16]int64, map[float32]uint8, map[string]float64, map[bool]complex64, map[int]rune, map[complex128]string, map[uint32]bool, map[int16]int, error) {
104+
return map[uint16]int64{1: 1000}, map[float32]uint8{2.2: 255}, map[string]float64{"pi": 3.14}, map[bool]complex64{false: 2 + 3i}, map[int]rune{0: 'x'}, map[complex128]string{5 + 6i: "complex"}, map[uint32]bool{10: true}, map[int16]int{-5: 42}, nil
105+
}
106+
107+
m1, m2, m3, m4, m5, m6, m7, m8 := rese.M8(run())
108+
require.Equal(t, map[uint16]int64{1: 1000}, m1)
109+
require.Equal(t, map[float32]uint8{2.2: 255}, m2)
110+
require.Equal(t, map[string]float64{"pi": 3.14}, m3)
111+
require.Equal(t, map[bool]complex64{false: 2 + 3i}, m4)
112+
require.Equal(t, map[int]rune{0: 'x'}, m5)
113+
require.Equal(t, map[complex128]string{5 + 6i: "complex"}, m6)
114+
require.Equal(t, map[uint32]bool{10: true}, m7)
115+
require.Equal(t, map[int16]int{-5: 42}, m8)
116+
}
117+
118+
func TestM9(t *testing.T) {
119+
run := func() (map[int8]uint16, map[float64]int32, map[string]bool, map[uint]float32, map[complex64]string, map[bool]int64, map[rune]uint8, map[int16]complex128, map[uint64]string, error) {
120+
return map[int8]uint16{1: 100}, map[float64]int32{1.1: 50}, map[string]bool{"yes": true}, map[uint]float32{5: 0.5}, map[complex64]string{1 + 1i: "c64"}, map[bool]int64{true: 999}, map[rune]uint8{'r': 82}, map[int16]complex128{10: 2 + 3i}, map[uint64]string{1000: "end"}, nil
121+
}
122+
123+
m1, m2, m3, m4, m5, m6, m7, m8, m9 := rese.M9(run())
124+
require.Equal(t, map[int8]uint16{1: 100}, m1)
125+
require.Equal(t, map[float64]int32{1.1: 50}, m2)
126+
require.Equal(t, map[string]bool{"yes": true}, m3)
127+
require.Equal(t, map[uint]float32{5: 0.5}, m4)
128+
require.Equal(t, map[complex64]string{1 + 1i: "c64"}, m5)
129+
require.Equal(t, map[bool]int64{true: 999}, m6)
130+
require.Equal(t, map[rune]uint8{'r': 82}, m7)
131+
require.Equal(t, map[int16]complex128{10: 2 + 3i}, m8)
132+
require.Equal(t, map[uint64]string{1000: "end"}, m9)
133+
}

0 commit comments

Comments
 (0)