@@ -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