@@ -12,20 +12,24 @@ import (
1212// go test -v -cover -count=1 -test.cpu=1 -run=^TestWrap$
1313func TestWrap (t * testing.T ) {
1414 testCases := []struct {
15- code int32
16- message string
15+ code int32
16+ message string
17+ args []any
18+ wantCode int32
19+ wantMessage string
1720 }{
18- {code : - 1000 , message : "io timeout" },
19- {code : 1000 , message : "need login" },
21+ {code : - 1000 , message : "io timeout" , args : nil , wantCode : - 1000 , wantMessage : "io timeout" },
22+ {code : 1000 , message : "need login" , args : nil , wantCode : 1000 , wantMessage : "need login" },
23+ {code : 2000 , message : "with args %d %s %+v" , args : []any {1 , "x" , true }, wantCode : 2000 , wantMessage : "with args 1 x true" },
2024 }
2125
2226 for _ , testCase := range testCases {
23- err := Wrap (testCase .code , testCase .message )
24- if err .Code () != testCase .code {
27+ err := Wrap (testCase .code , testCase .message , testCase . args ... )
28+ if err .Code () != testCase .wantCode {
2529 t .Errorf ("err.Code() %d != testCase.code %d" , err .Code (), testCase .code )
2630 }
2731
28- if err .Message () != testCase .message {
32+ if err .Message () != testCase .wantMessage {
2933 t .Errorf ("err.Message() %s != testCase.code %s" , err .Message (), testCase .message )
3034 }
3135
@@ -43,7 +47,7 @@ func TestWrapWith(t *testing.T) {
4347 cause error
4448 }{
4549 {code : - 1000 , message : "eof" , cause : io .EOF },
46- {code : 1000 , message : "need login" },
50+ {code : 1000 , message : "need login" , cause : nil },
4751 }
4852
4953 for _ , testCase := range testCases {
@@ -68,14 +72,26 @@ func TestErrorError(t *testing.T) {
6872 code int32
6973 message string
7074 cause error
75+ args map [string ]any
7176 errorString string
7277 }{
73- {code : - 1000 , message : "eof" , cause : io .EOF , errorString : "-1000: eof (EOF)" },
74- {code : 1000 , message : "need login" , errorString : "1000: need login" },
78+ {code : - 1000 , message : "eof" , cause : io .EOF , args : nil , errorString : "-1000: eof (EOF)" },
79+ {code : - 1000 , message : "eof" , cause : io .EOF , args : map [string ]any {"x" : 666 , "y" : "300ms" , "z" : false }, errorString : "-1000: eof {\" x\" :666,\" y\" :\" 300ms\" ,\" z\" :false} (EOF)" },
80+ {code : 1000 , message : "need login" , args : nil , errorString : "1000: need login" },
81+ {code : 1000 , message : "need login" , args : map [string ]any {"x" : 123 , "y" : "100ms" , "z" : true }, errorString : "1000: need login {\" x\" :123,\" y\" :\" 100ms\" ,\" z\" :true}" },
7582 }
7683
7784 for _ , testCase := range testCases {
7885 err := Wrap (testCase .code , testCase .message ).With (testCase .cause )
86+
87+ for key , value := range testCase .args {
88+ err = err .WithArgs (key , value )
89+ }
90+
91+ if len (err .args ) != len (testCase .args ) {
92+ t .Errorf ("len(err.args) %d != len(testCase.args) %d" , len (err .args ), len (testCase .args ))
93+ }
94+
7995 if err .Error () != testCase .errorString {
8096 t .Errorf ("err.Error() %s != testCase.errorString %s" , err .Error (), testCase .errorString )
8197 }
0 commit comments