-
Notifications
You must be signed in to change notification settings - Fork 0
/
error_test.go
123 lines (118 loc) · 2.9 KB
/
error_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
package httphelper
import (
"reflect"
"testing"
"github.com/solsw/generichelper"
)
func Test_objMsg_NoType(t *testing.T) {
type args struct {
herr *Error[generichelper.NoType]
bb []byte
options ErrorOptions
}
tests := []struct {
name string
args args
want *Error[generichelper.NoType]
wantErr bool
}{
{name: "withObject",
args: args{
herr: &Error[generichelper.NoType]{},
bb: []byte("qwerty"),
options: ErrorOptions{withObject: true},
},
want: &Error[generichelper.NoType]{},
},
{name: "withMessage",
args: args{
herr: &Error[generichelper.NoType]{},
bb: []byte("qwerty"),
options: ErrorOptions{withMessage: true},
},
want: &Error[generichelper.NoType]{Message: "qwerty"},
},
{name: "withObjectwithMessage",
args: args{
herr: &Error[generichelper.NoType]{},
bb: []byte("qwerty"),
options: ErrorOptions{withObject: true, withMessage: true},
},
want: &Error[generichelper.NoType]{Message: "qwerty"},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got, err := objMsg(tt.args.herr, tt.args.bb, tt.args.options)
if (err != nil) != tt.wantErr {
t.Errorf("objMsg() error = %v, wantErr %v", err, tt.wantErr)
return
}
if !reflect.DeepEqual(got, tt.want) {
t.Errorf("objMsg() = %v, want %v", got, tt.want)
}
})
}
}
type E struct {
I int
S string
}
func Test_objMsg_E(t *testing.T) {
type args struct {
herr *Error[E]
bb []byte
options ErrorOptions
}
tests := []struct {
name string
args args
want *Error[E]
wantErr bool
}{
// {name: "object",
// args: args{
// herr: &Error[E]{},
// bb: []byte(`{"I":1,"S":"one"}`),
// options: ErrorOptions{withObject: true, withMessage: true},
// },
// want: &Error[E]{Object: E{I: 1, S: "one"}},
// },
// {name: "not JSON",
// args: args{
// herr: &Error[E]{},
// bb: []byte("qwerty"),
// options: ErrorOptions{withObject: true, withMessage: true},
// },
// want: &Error[E]{Message: "qwerty"},
// },
// {name: "cannot unmarshal string",
// args: args{
// herr: &Error[E]{},
// bb: []byte(`"qwerty"`),
// options: ErrorOptions{withObject: true, withMessage: true},
// },
// want: &Error[E]{Message: `"qwerty"`},
// },
{name: "cannot unmarshal",
args: args{
herr: &Error[E]{},
bb: []byte(`{"X":1,"Y":"one"}`),
options: ErrorOptions{withObject: true, withMessage: true},
},
want: &Error[E]{Message: `{"X":1,"Y":"one"}`},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got, err := objMsg(tt.args.herr, tt.args.bb, tt.args.options)
if (err != nil) != tt.wantErr {
t.Errorf("objMsg() error = %v, wantErr %v", err, tt.wantErr)
return
}
if !reflect.DeepEqual(got, tt.want) {
t.Errorf("objMsg() = %v, want %v", got, tt.want)
}
})
}
}