Skip to content

Commit ba67ba4

Browse files
committed
参数解析逻辑中结构体到map的单元测试,补充指针情况的用例。
1 parent 13b4904 commit ba67ba4

1 file changed

Lines changed: 60 additions & 0 deletions

File tree

abstract_db_client_test.go

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@ func Test_preHandleArgs(t *testing.T) {
1111
A string
1212
}
1313

14+
type TypeAptr struct {
15+
Ap *string
16+
}
17+
1418
type TypeB struct {
1519
B string
1620
}
@@ -30,6 +34,11 @@ func Test_preHandleArgs(t *testing.T) {
3034
Time time.Time
3135
}
3236

37+
type TypePtrTimeA struct {
38+
TypeA
39+
TimePtr *time.Time
40+
}
41+
3342
testTime := time.Date(2021, 7, 3, 0, 0, 0, 0, time.UTC)
3443

3544
t.Run("empty_args", func(t *testing.T) {
@@ -87,6 +96,27 @@ func Test_preHandleArgs(t *testing.T) {
8796
}
8897
})
8998

99+
t.Run("single_ptr_struct", func(t *testing.T) {
100+
pStr := "a"
101+
got, err := preHandleArgs(TypeAptr{Ap: &pStr})
102+
if err != nil {
103+
t.Errorf("mergeArgs() error = %v, wantErr false", err)
104+
return
105+
}
106+
if !reflect.DeepEqual(got, []any{map[string]any{"Ap": pStr}}) {
107+
t.Errorf("mergeArgs() = %v, want %v", got, []any{map[string]any{"A": "a"}})
108+
}
109+
110+
got, err = preHandleArgs(TypeAptr{Ap: nil})
111+
if err != nil {
112+
t.Errorf("mergeArgs() error = %v, wantErr false", err)
113+
return
114+
}
115+
if !reflect.DeepEqual(got, []any{map[string]any{"Ap": nil}}) {
116+
t.Errorf("mergeArgs() = %v, want %v", got, []any{map[string]any{"A": "a"}})
117+
}
118+
})
119+
90120
t.Run("single_struct_pointer", func(t *testing.T) {
91121
got, err := preHandleArgs(&TypeA{A: "a"})
92122
if err != nil {
@@ -158,6 +188,36 @@ func Test_preHandleArgs(t *testing.T) {
158188
}
159189
})
160190

191+
t.Run("time_ptr_convert", func(t *testing.T) {
192+
testTime := time.Now()
193+
paramTimeA := TypePtrTimeA{
194+
TypeA: TypeA{A: "abc_a"},
195+
TimePtr: &testTime,
196+
}
197+
got, err := preHandleArgs(paramTimeA)
198+
if err != nil {
199+
t.Errorf("mergeArgs() error = %v, wantErr false", err)
200+
return
201+
}
202+
if !reflect.DeepEqual(got, []any{map[string]any{"A": "abc_a", "TimePtr": testTime}}) {
203+
t.Errorf("mergeArgs() = %v, want %v", got, []any{map[string]any{"A": "abc_a", "TimePtr": testTime}})
204+
}
205+
206+
paramTimeA = TypePtrTimeA{
207+
TypeA: TypeA{A: "abc_a"},
208+
TimePtr: nil,
209+
}
210+
211+
got, err = preHandleArgs(paramTimeA)
212+
if err != nil {
213+
t.Errorf("mergeArgs() error = %v, wantErr false", err)
214+
return
215+
}
216+
if !reflect.DeepEqual(got, []any{map[string]any{"A": "abc_a", "TimePtr": nil}}) {
217+
t.Errorf("mergeArgs() = %v, want %v", got, []any{map[string]any{"A": "abc_a", "TimePtr": testTime}})
218+
}
219+
})
220+
161221
t.Run("mixed_types", func(t *testing.T) {
162222
args := []any{
163223
TypeAB{TypeA: TypeA{A: "ab_a"}, TypeB: TypeB{B: "ab_b"}},

0 commit comments

Comments
 (0)