1 package json_test
2
3 import (
4 "bytes"
5 "fmt"
6 "testing"
7
8 "github.com/goccy/go-json"
9 )
10
11 type coverMarshalJSON struct {
12 A int
13 }
14
15 func (c coverMarshalJSON) MarshalJSON() ([]byte, error) {
16 return []byte(fmt.Sprint(c.A)), nil
17 }
18
19 type coverPtrMarshalJSON struct {
20 B int
21 }
22
23 func (c *coverPtrMarshalJSON) MarshalJSON() ([]byte, error) {
24 if c == nil {
25 return []byte(`"NULL"`), nil
26 }
27 return []byte(fmt.Sprint(c.B)), nil
28 }
29
30 type coverPtrMarshalJSONString struct {
31 dummy int
32 C string
33 }
34
35 func (c *coverPtrMarshalJSONString) MarshalJSON() ([]byte, error) {
36 if c == nil {
37 return []byte(`"NULL"`), nil
38 }
39 return []byte(c.C), nil
40 }
41
42 type coverFuncMarshalJSON func()
43
44 func (f coverFuncMarshalJSON) MarshalJSON() ([]byte, error) {
45 if f == nil {
46 return []byte(`null`), nil
47 }
48 f()
49 return []byte(`"func"`), nil
50 }
51
52 func TestCoverMarshalJSON(t *testing.T) {
53 type structMarshalJSON struct {
54 A coverMarshalJSON `json:"a"`
55 }
56 type structMarshalJSONOmitEmpty struct {
57 A coverMarshalJSON `json:"a,omitempty"`
58 }
59 type structMarshalJSONString struct {
60 A coverMarshalJSON `json:"a,string"`
61 }
62 type structPtrMarshalJSON struct {
63 A coverPtrMarshalJSON `json:"a"`
64 }
65 type structPtrMarshalJSONOmitEmpty struct {
66 A coverPtrMarshalJSON `json:"a,omitempty"`
67 }
68 type structPtrMarshalJSONString struct {
69 A coverPtrMarshalJSON `json:"a,string"`
70 }
71
72 type structMarshalJSONPtr struct {
73 A *coverMarshalJSON `json:"a"`
74 }
75 type structMarshalJSONPtrOmitEmpty struct {
76 A *coverMarshalJSON `json:"a,omitempty"`
77 }
78 type structMarshalJSONPtrString struct {
79 A *coverMarshalJSON `json:"a,string"`
80 }
81 type structPtrMarshalJSONPtr struct {
82 A *coverPtrMarshalJSON `json:"a"`
83 }
84 type structPtrMarshalJSONPtrOmitEmpty struct {
85 A *coverPtrMarshalJSON `json:"a,omitempty"`
86 }
87 type structPtrMarshalJSONPtrString struct {
88 A *coverPtrMarshalJSON `json:"a,string"`
89 }
90
91 tests := []struct {
92 name string
93 data interface{}
94 }{
95 {
96 name: "FuncMarshalJSON",
97 data: coverFuncMarshalJSON(func() {}),
98 },
99 {
100 name: "StructFuncMarshalJSON",
101 data: struct {
102 A coverFuncMarshalJSON
103 }{A: func() {}},
104 },
105 {
106 name: "StructFuncMarshalJSONMultiFields",
107 data: struct {
108 A coverFuncMarshalJSON
109 B coverFuncMarshalJSON
110 }{A: func() {}, B: func() {}},
111 },
112 {
113 name: "PtrStructFuncMarshalJSONMultiFields",
114 data: &struct {
115 A coverFuncMarshalJSON
116 B coverFuncMarshalJSON
117 C coverFuncMarshalJSON
118 }{A: func() {}, B: nil, C: func() {}},
119 },
120 {
121 name: "MarshalJSON",
122 data: coverMarshalJSON{A: 1},
123 },
124 {
125 name: "PtrMarshalJSON",
126 data: &coverMarshalJSON{A: 1},
127 },
128 {
129 name: "PtrMarshalJSON",
130 data: coverPtrMarshalJSON{B: 1},
131 },
132 {
133 name: "PtrPtrMarshalJSON",
134 data: &coverPtrMarshalJSON{B: 1},
135 },
136 {
137 name: "SliceMarshalJSON",
138 data: []coverMarshalJSON{{A: 1}, {A: 2}},
139 },
140 {
141 name: "SliceAddrMarshalJSON",
142 data: []*coverMarshalJSON{{A: 1}, {A: 2}},
143 },
144 {
145 name: "SlicePtrMarshalJSON",
146 data: []coverPtrMarshalJSON{{B: 1}, {B: 2}},
147 },
148 {
149 name: "SliceAddrPtrMarshalJSON",
150 data: []*coverPtrMarshalJSON{{B: 1}, {B: 2}},
151 },
152 {
153 name: "StructSliceMarshalJSON",
154 data: struct {
155 A []coverMarshalJSON
156 }{A: []coverMarshalJSON{{A: 1}, {A: 2}}},
157 },
158 {
159 name: "StructSliceAddrMarshalJSON",
160 data: struct {
161 A []*coverMarshalJSON
162 }{A: []*coverMarshalJSON{{A: 1}, {A: 2}}},
163 },
164 {
165 name: "StructSlicePtrMarshalJSON",
166 data: struct {
167 A []coverPtrMarshalJSON
168 }{A: []coverPtrMarshalJSON{{B: 1}, {B: 2}}},
169 },
170 {
171 name: "StructSliceAddrPtrMarshalJSON",
172 data: struct {
173 A []*coverPtrMarshalJSON
174 }{A: []*coverPtrMarshalJSON{{B: 1}, {B: 2}}},
175 },
176 {
177 name: "PtrStructSliceMarshalJSON",
178 data: &struct {
179 A []coverMarshalJSON
180 }{A: []coverMarshalJSON{{A: 1}, {A: 2}}},
181 },
182 {
183 name: "PtrStructSliceAddrMarshalJSON",
184 data: &struct {
185 A []*coverMarshalJSON
186 }{A: []*coverMarshalJSON{{A: 1}, {A: 2}}},
187 },
188 {
189 name: "PtrStructSlicePtrMarshalJSON",
190 data: &struct {
191 A []coverPtrMarshalJSON
192 }{A: []coverPtrMarshalJSON{{B: 1}, {B: 2}}},
193 },
194 {
195 name: "PtrStructSlicePtrMarshalJSONString",
196 data: &struct {
197 A []coverPtrMarshalJSONString
198 }{A: []coverPtrMarshalJSONString{{C: "1"}, {C: "2"}}},
199 },
200 {
201 name: "PtrStructSliceAddrPtrMarshalJSONString",
202 data: &struct {
203 A []*coverPtrMarshalJSONString
204 }{A: []*coverPtrMarshalJSONString{{C: "1"}, {C: "2"}}},
205 },
206 {
207 name: "PtrStructArrayPtrMarshalJSONString",
208 data: &struct {
209 A [2]coverPtrMarshalJSONString
210 }{A: [2]coverPtrMarshalJSONString{{C: "1"}, {C: "2"}}},
211 },
212 {
213 name: "PtrStructArrayAddrPtrMarshalJSONString",
214 data: &struct {
215 A [2]*coverPtrMarshalJSONString
216 }{A: [2]*coverPtrMarshalJSONString{{C: "1"}, {C: "2"}}},
217 },
218 {
219 name: "PtrStructMapPtrMarshalJSONString",
220 data: &struct {
221 A map[string]coverPtrMarshalJSONString
222 }{A: map[string]coverPtrMarshalJSONString{"a": {C: "1"}, "b": {C: "2"}}},
223 },
224 {
225 name: "PtrStructMapAddrPtrMarshalJSONString",
226 data: &struct {
227 A map[string]*coverPtrMarshalJSONString
228 }{A: map[string]*coverPtrMarshalJSONString{"a": {C: "1"}, "b": {C: "2"}}},
229 },
230
231
232 {
233 name: "HeadMarshalJSONZero",
234 data: struct {
235 A coverMarshalJSON `json:"a"`
236 }{},
237 },
238 {
239 name: "HeadMarshalJSONZeroOmitEmpty",
240 data: struct {
241 A coverMarshalJSON `json:"a,omitempty"`
242 }{},
243 },
244 {
245 name: "HeadMarshalJSONZeroString",
246 data: struct {
247 A coverMarshalJSON `json:"a,string"`
248 }{},
249 },
250 {
251 name: "HeadPtrMarshalJSONZero",
252 data: struct {
253 A coverPtrMarshalJSON `json:"a"`
254 }{},
255 },
256 {
257 name: "HeadPtrMarshalJSONZeroOmitEmpty",
258 data: struct {
259 A coverPtrMarshalJSON `json:"a,omitempty"`
260 }{},
261 },
262 {
263 name: "HeadPtrMarshalJSONZeroString",
264 data: struct {
265 A coverPtrMarshalJSON `json:"a,string"`
266 }{},
267 },
268
269
270 {
271 name: "HeadMarshalJSON",
272 data: struct {
273 A coverMarshalJSON `json:"a"`
274 }{A: coverMarshalJSON{}},
275 },
276 {
277 name: "HeadMarshalJSONOmitEmpty",
278 data: struct {
279 A coverMarshalJSON `json:"a,omitempty"`
280 }{A: coverMarshalJSON{}},
281 },
282 {
283 name: "HeadMarshalJSONString",
284 data: struct {
285 A coverMarshalJSON `json:"a,string"`
286 }{A: coverMarshalJSON{}},
287 },
288 {
289 name: "HeadPtrMarshalJSON",
290 data: struct {
291 A coverPtrMarshalJSON `json:"a"`
292 }{A: coverPtrMarshalJSON{}},
293 },
294 {
295 name: "HeadPtrMarshalJSONOmitEmpty",
296 data: struct {
297 A coverPtrMarshalJSON `json:"a,omitempty"`
298 }{A: coverPtrMarshalJSON{}},
299 },
300 {
301 name: "HeadPtrMarshalJSONString",
302 data: struct {
303 A coverPtrMarshalJSON `json:"a,string"`
304 }{A: coverPtrMarshalJSON{}},
305 },
306
307
308 {
309 name: "HeadMarshalJSONPtr",
310 data: struct {
311 A *coverMarshalJSON `json:"a"`
312 }{A: &coverMarshalJSON{}},
313 },
314 {
315 name: "HeadMarshalJSONPtrOmitEmpty",
316 data: struct {
317 A *coverMarshalJSON `json:"a,omitempty"`
318 }{A: &coverMarshalJSON{}},
319 },
320 {
321 name: "HeadMarshalJSONPtrString",
322 data: struct {
323 A *coverMarshalJSON `json:"a,string"`
324 }{A: &coverMarshalJSON{}},
325 },
326 {
327 name: "HeadPtrMarshalJSONPtr",
328 data: struct {
329 A *coverPtrMarshalJSON `json:"a"`
330 }{A: &coverPtrMarshalJSON{}},
331 },
332 {
333 name: "HeadPtrMarshalJSONPtrOmitEmpty",
334 data: struct {
335 A *coverPtrMarshalJSON `json:"a,omitempty"`
336 }{A: &coverPtrMarshalJSON{}},
337 },
338 {
339 name: "HeadPtrMarshalJSONPtrString",
340 data: struct {
341 A *coverPtrMarshalJSON `json:"a,string"`
342 }{A: &coverPtrMarshalJSON{}},
343 },
344
345
346 {
347 name: "HeadMarshalJSONPtrNil",
348 data: struct {
349 A *coverMarshalJSON `json:"a"`
350 }{A: nil},
351 },
352 {
353 name: "HeadMarshalJSONPtrNilOmitEmpty",
354 data: struct {
355 A *coverMarshalJSON `json:"a,omitempty"`
356 }{A: nil},
357 },
358 {
359 name: "HeadMarshalJSONPtrNilString",
360 data: struct {
361 A *coverMarshalJSON `json:"a,string"`
362 }{A: nil},
363 },
364 {
365 name: "HeadPtrMarshalJSONPtrNil",
366 data: struct {
367 A *coverPtrMarshalJSON `json:"a"`
368 }{A: nil},
369 },
370 {
371 name: "HeadPtrMarshalJSONPtrNilOmitEmpty",
372 data: struct {
373 A *coverPtrMarshalJSON `json:"a,omitempty"`
374 }{A: nil},
375 },
376 {
377 name: "HeadPtrMarshalJSONPtrNilString",
378 data: struct {
379 A *coverPtrMarshalJSON `json:"a,string"`
380 }{A: nil},
381 },
382
383
384 {
385 name: "PtrHeadMarshalJSONZero",
386 data: &struct {
387 A coverMarshalJSON `json:"a"`
388 }{},
389 },
390 {
391 name: "PtrHeadMarshalJSONZeroOmitEmpty",
392 data: &struct {
393 A coverMarshalJSON `json:"a,omitempty"`
394 }{},
395 },
396 {
397 name: "PtrHeadMarshalJSONZeroString",
398 data: &struct {
399 A coverMarshalJSON `json:"a,string"`
400 }{},
401 },
402 {
403 name: "PtrHeadPtrMarshalJSONZero",
404 data: &struct {
405 A coverPtrMarshalJSON `json:"a"`
406 }{},
407 },
408 {
409 name: "PtrHeadPtrMarshalJSONZeroOmitEmpty",
410 data: &struct {
411 A coverPtrMarshalJSON `json:"a,omitempty"`
412 }{},
413 },
414 {
415 name: "PtrHeadPtrMarshalJSONZeroString",
416 data: &struct {
417 A coverPtrMarshalJSON `json:"a,string"`
418 }{},
419 },
420
421
422 {
423 name: "PtrHeadMarshalJSON",
424 data: &struct {
425 A coverMarshalJSON `json:"a"`
426 }{A: coverMarshalJSON{}},
427 },
428 {
429 name: "PtrHeadMarshalJSONOmitEmpty",
430 data: &struct {
431 A coverMarshalJSON `json:"a,omitempty"`
432 }{A: coverMarshalJSON{}},
433 },
434 {
435 name: "PtrHeadMarshalJSONString",
436 data: &struct {
437 A coverMarshalJSON `json:"a,string"`
438 }{A: coverMarshalJSON{}},
439 },
440 {
441 name: "PtrHeadPtrMarshalJSON",
442 data: &struct {
443 A coverPtrMarshalJSON `json:"a"`
444 }{A: coverPtrMarshalJSON{}},
445 },
446 {
447 name: "PtrHeadPtrMarshalJSONOmitEmpty",
448 data: &struct {
449 A coverPtrMarshalJSON `json:"a,omitempty"`
450 }{A: coverPtrMarshalJSON{}},
451 },
452 {
453 name: "PtrHeadPtrMarshalJSONString",
454 data: &struct {
455 A coverPtrMarshalJSON `json:"a,string"`
456 }{A: coverPtrMarshalJSON{}},
457 },
458
459
460 {
461 name: "PtrHeadMarshalJSONPtr",
462 data: &struct {
463 A *coverMarshalJSON `json:"a"`
464 }{A: &coverMarshalJSON{}},
465 },
466 {
467 name: "PtrHeadMarshalJSONPtrOmitEmpty",
468 data: &struct {
469 A *coverMarshalJSON `json:"a,omitempty"`
470 }{A: &coverMarshalJSON{}},
471 },
472 {
473 name: "PtrHeadMarshalJSONPtrString",
474 data: &struct {
475 A *coverMarshalJSON `json:"a,string"`
476 }{A: &coverMarshalJSON{}},
477 },
478 {
479 name: "PtrHeadPtrMarshalJSONPtr",
480 data: &struct {
481 A *coverPtrMarshalJSON `json:"a"`
482 }{A: &coverPtrMarshalJSON{}},
483 },
484 {
485 name: "PtrHeadPtrMarshalJSONPtrOmitEmpty",
486 data: &struct {
487 A *coverPtrMarshalJSON `json:"a,omitempty"`
488 }{A: &coverPtrMarshalJSON{}},
489 },
490 {
491 name: "PtrHeadPtrMarshalJSONPtrString",
492 data: &struct {
493 A *coverPtrMarshalJSON `json:"a,string"`
494 }{A: &coverPtrMarshalJSON{}},
495 },
496
497
498 {
499 name: "PtrHeadMarshalJSONPtrNil",
500 data: &struct {
501 A *coverMarshalJSON `json:"a"`
502 }{A: nil},
503 },
504 {
505 name: "PtrHeadMarshalJSONPtrNilOmitEmpty",
506 data: &struct {
507 A *coverMarshalJSON `json:"a,omitempty"`
508 }{A: nil},
509 },
510 {
511 name: "PtrHeadMarshalJSONPtrNilString",
512 data: &struct {
513 A *coverMarshalJSON `json:"a,string"`
514 }{A: nil},
515 },
516 {
517 name: "PtrHeadPtrMarshalJSONPtrNil",
518 data: &struct {
519 A *coverPtrMarshalJSON `json:"a"`
520 }{A: nil},
521 },
522 {
523 name: "PtrHeadPtrMarshalJSONPtrNilOmitEmpty",
524 data: &struct {
525 A *coverPtrMarshalJSON `json:"a,omitempty"`
526 }{A: nil},
527 },
528 {
529 name: "PtrHeadPtrMarshalJSONPtrNilString",
530 data: &struct {
531 A *coverPtrMarshalJSON `json:"a,string"`
532 }{A: nil},
533 },
534
535
536 {
537 name: "PtrHeadMarshalJSONNil",
538 data: (*struct {
539 A *coverMarshalJSON `json:"a"`
540 })(nil),
541 },
542 {
543 name: "PtrHeadMarshalJSONNilOmitEmpty",
544 data: (*struct {
545 A *coverMarshalJSON `json:"a,omitempty"`
546 })(nil),
547 },
548 {
549 name: "PtrHeadMarshalJSONNilString",
550 data: (*struct {
551 A *coverMarshalJSON `json:"a,string"`
552 })(nil),
553 },
554 {
555 name: "PtrHeadPtrMarshalJSONNil",
556 data: (*struct {
557 A *coverPtrMarshalJSON `json:"a"`
558 })(nil),
559 },
560 {
561 name: "PtrHeadPtrMarshalJSONNilOmitEmpty",
562 data: (*struct {
563 A *coverPtrMarshalJSON `json:"a,omitempty"`
564 })(nil),
565 },
566 {
567 name: "PtrHeadPtrMarshalJSONNilString",
568 data: (*struct {
569 A *coverPtrMarshalJSON `json:"a,string"`
570 })(nil),
571 },
572
573
574 {
575 name: "HeadMarshalJSONZeroMultiFields",
576 data: struct {
577 A coverMarshalJSON `json:"a"`
578 B coverMarshalJSON `json:"b"`
579 C coverMarshalJSON `json:"c"`
580 }{},
581 },
582 {
583 name: "HeadMarshalJSONZeroMultiFieldsOmitEmpty",
584 data: struct {
585 A coverMarshalJSON `json:"a,omitempty"`
586 B coverMarshalJSON `json:"b,omitempty"`
587 C coverMarshalJSON `json:"c,omitempty"`
588 }{},
589 },
590 {
591 name: "HeadMarshalJSONZeroMultiFields",
592 data: struct {
593 A coverMarshalJSON `json:"a,string"`
594 B coverMarshalJSON `json:"b,string"`
595 C coverMarshalJSON `json:"c,string"`
596 }{},
597 },
598 {
599 name: "HeadPtrMarshalJSONZeroMultiFields",
600 data: struct {
601 A coverPtrMarshalJSON `json:"a"`
602 B coverPtrMarshalJSON `json:"b"`
603 C coverPtrMarshalJSON `json:"c"`
604 }{},
605 },
606 {
607 name: "HeadPtrMarshalJSONZeroMultiFieldsOmitEmpty",
608 data: struct {
609 A coverPtrMarshalJSON `json:"a,omitempty"`
610 B coverPtrMarshalJSON `json:"b,omitempty"`
611 C coverPtrMarshalJSON `json:"c,omitempty"`
612 }{},
613 },
614 {
615 name: "HeadPtrMarshalJSONZeroMultiFields",
616 data: struct {
617 A coverPtrMarshalJSON `json:"a,string"`
618 B coverPtrMarshalJSON `json:"b,string"`
619 C coverPtrMarshalJSON `json:"c,string"`
620 }{},
621 },
622
623
624 {
625 name: "HeadMarshalJSONMultiFields",
626 data: struct {
627 A coverMarshalJSON `json:"a"`
628 B coverMarshalJSON `json:"b"`
629 C coverMarshalJSON `json:"c"`
630 }{A: coverMarshalJSON{}, B: coverMarshalJSON{}, C: coverMarshalJSON{}},
631 },
632 {
633 name: "HeadMarshalJSONMultiFieldsOmitEmpty",
634 data: struct {
635 A coverMarshalJSON `json:"a,omitempty"`
636 B coverMarshalJSON `json:"b,omitempty"`
637 C coverMarshalJSON `json:"c,omitempty"`
638 }{A: coverMarshalJSON{}, B: coverMarshalJSON{}, C: coverMarshalJSON{}},
639 },
640 {
641 name: "HeadMarshalJSONMultiFieldsString",
642 data: struct {
643 A coverMarshalJSON `json:"a,string"`
644 B coverMarshalJSON `json:"b,string"`
645 C coverMarshalJSON `json:"c,string"`
646 }{A: coverMarshalJSON{}, B: coverMarshalJSON{}, C: coverMarshalJSON{}},
647 },
648 {
649 name: "HeadPtrMarshalJSONMultiFields",
650 data: struct {
651 A coverPtrMarshalJSON `json:"a"`
652 B coverPtrMarshalJSON `json:"b"`
653 C coverPtrMarshalJSON `json:"c"`
654 }{A: coverPtrMarshalJSON{}, B: coverPtrMarshalJSON{}, C: coverPtrMarshalJSON{}},
655 },
656 {
657 name: "HeadPtrMarshalJSONMultiFieldsOmitEmpty",
658 data: struct {
659 A coverPtrMarshalJSON `json:"a,omitempty"`
660 B coverPtrMarshalJSON `json:"b,omitempty"`
661 C coverPtrMarshalJSON `json:"c,omitempty"`
662 }{A: coverPtrMarshalJSON{}, B: coverPtrMarshalJSON{}, C: coverPtrMarshalJSON{}},
663 },
664 {
665 name: "HeadPtrMarshalJSONMultiFieldsString",
666 data: struct {
667 A coverPtrMarshalJSON `json:"a,string"`
668 B coverPtrMarshalJSON `json:"b,string"`
669 C coverPtrMarshalJSON `json:"c,string"`
670 }{A: coverPtrMarshalJSON{}, B: coverPtrMarshalJSON{}, C: coverPtrMarshalJSON{}},
671 },
672
673
674 {
675 name: "HeadMarshalJSONPtrMultiFields",
676 data: struct {
677 A *coverMarshalJSON `json:"a"`
678 B *coverMarshalJSON `json:"b"`
679 C *coverMarshalJSON `json:"c"`
680 }{A: &coverMarshalJSON{}, B: &coverMarshalJSON{}, C: &coverMarshalJSON{}},
681 },
682 {
683 name: "HeadMarshalJSONPtrMultiFieldsOmitEmpty",
684 data: struct {
685 A *coverMarshalJSON `json:"a,omitempty"`
686 B *coverMarshalJSON `json:"b,omitempty"`
687 C *coverMarshalJSON `json:"c,omitempty"`
688 }{A: &coverMarshalJSON{}, B: &coverMarshalJSON{}, C: &coverMarshalJSON{}},
689 },
690 {
691 name: "HeadMarshalJSONPtrMultiFieldsString",
692 data: struct {
693 A *coverMarshalJSON `json:"a,string"`
694 B *coverMarshalJSON `json:"b,string"`
695 C *coverMarshalJSON `json:"c,string"`
696 }{A: &coverMarshalJSON{}, B: &coverMarshalJSON{}, C: &coverMarshalJSON{}},
697 },
698 {
699 name: "HeadPtrMarshalJSONPtrMultiFields",
700 data: struct {
701 A *coverPtrMarshalJSON `json:"a"`
702 B *coverPtrMarshalJSON `json:"b"`
703 C *coverPtrMarshalJSON `json:"c"`
704 }{A: &coverPtrMarshalJSON{}, B: &coverPtrMarshalJSON{}, C: &coverPtrMarshalJSON{}},
705 },
706 {
707 name: "HeadPtrMarshalJSONPtrMultiFieldsOmitEmpty",
708 data: struct {
709 A *coverPtrMarshalJSON `json:"a,omitempty"`
710 B *coverPtrMarshalJSON `json:"b,omitempty"`
711 C *coverPtrMarshalJSON `json:"c,omitempty"`
712 }{A: &coverPtrMarshalJSON{}, B: &coverPtrMarshalJSON{}, C: &coverPtrMarshalJSON{}},
713 },
714 {
715 name: "HeadPtrMarshalJSONPtrMultiFieldsString",
716 data: struct {
717 A *coverPtrMarshalJSON `json:"a,string"`
718 B *coverPtrMarshalJSON `json:"b,string"`
719 C *coverPtrMarshalJSON `json:"c,string"`
720 }{A: &coverPtrMarshalJSON{}, B: &coverPtrMarshalJSON{}, C: &coverPtrMarshalJSON{}},
721 },
722
723
724 {
725 name: "HeadMarshalJSONPtrNilMultiFields",
726 data: struct {
727 A *coverMarshalJSON `json:"a"`
728 B *coverMarshalJSON `json:"b"`
729 C *coverMarshalJSON `json:"c"`
730 }{A: nil, B: nil, C: nil},
731 },
732 {
733 name: "HeadMarshalJSONPtrNilMultiFieldsOmitEmpty",
734 data: struct {
735 A *coverMarshalJSON `json:"a,omitempty"`
736 B *coverMarshalJSON `json:"b,omitempty"`
737 C *coverMarshalJSON `json:"c,omitempty"`
738 }{A: nil, B: nil, C: nil},
739 },
740 {
741 name: "HeadMarshalJSONPtrNilMultiFieldsString",
742 data: struct {
743 A *coverMarshalJSON `json:"a,string"`
744 B *coverMarshalJSON `json:"b,string"`
745 C *coverMarshalJSON `json:"c,string"`
746 }{A: nil, B: nil, C: nil},
747 },
748 {
749 name: "HeadPtrMarshalJSONPtrNilMultiFields",
750 data: struct {
751 A *coverPtrMarshalJSON `json:"a"`
752 B *coverPtrMarshalJSON `json:"b"`
753 C *coverPtrMarshalJSON `json:"c"`
754 }{A: nil, B: nil, C: nil},
755 },
756 {
757 name: "HeadPtrMarshalJSONPtrNilMultiFieldsOmitEmpty",
758 data: struct {
759 A *coverPtrMarshalJSON `json:"a,omitempty"`
760 B *coverPtrMarshalJSON `json:"b,omitempty"`
761 C *coverPtrMarshalJSON `json:"c,omitempty"`
762 }{A: nil, B: nil, C: nil},
763 },
764 {
765 name: "HeadPtrMarshalJSONPtrNilMultiFieldsString",
766 data: struct {
767 A *coverPtrMarshalJSON `json:"a,string"`
768 B *coverPtrMarshalJSON `json:"b,string"`
769 C *coverPtrMarshalJSON `json:"c,string"`
770 }{A: nil, B: nil, C: nil},
771 },
772
773
774 {
775 name: "PtrHeadMarshalJSONZeroMultiFields",
776 data: &struct {
777 A coverMarshalJSON `json:"a"`
778 B coverMarshalJSON `json:"b"`
779 }{},
780 },
781 {
782 name: "PtrHeadMarshalJSONZeroMultiFieldsOmitEmpty",
783 data: &struct {
784 A coverMarshalJSON `json:"a,omitempty"`
785 B coverMarshalJSON `json:"b,omitempty"`
786 }{},
787 },
788 {
789 name: "PtrHeadMarshalJSONZeroMultiFieldsString",
790 data: &struct {
791 A coverMarshalJSON `json:"a,string"`
792 B coverMarshalJSON `json:"b,string"`
793 }{},
794 },
795 {
796 name: "PtrHeadPtrMarshalJSONZeroMultiFields",
797 data: &struct {
798 A coverPtrMarshalJSON `json:"a"`
799 B coverPtrMarshalJSON `json:"b"`
800 }{},
801 },
802 {
803 name: "PtrHeadPtrMarshalJSONZeroMultiFieldsOmitEmpty",
804 data: &struct {
805 A coverPtrMarshalJSON `json:"a,omitempty"`
806 B coverPtrMarshalJSON `json:"b,omitempty"`
807 }{},
808 },
809 {
810 name: "PtrHeadPtrMarshalJSONZeroMultiFieldsString",
811 data: &struct {
812 A coverPtrMarshalJSON `json:"a,string"`
813 B coverPtrMarshalJSON `json:"b,string"`
814 }{},
815 },
816
817
818 {
819 name: "PtrHeadMarshalJSONMultiFields",
820 data: &struct {
821 A coverMarshalJSON `json:"a"`
822 B coverMarshalJSON `json:"b"`
823 }{A: coverMarshalJSON{}, B: coverMarshalJSON{}},
824 },
825 {
826 name: "PtrHeadMarshalJSONMultiFieldsOmitEmpty",
827 data: &struct {
828 A coverMarshalJSON `json:"a,omitempty"`
829 B coverMarshalJSON `json:"b,omitempty"`
830 }{A: coverMarshalJSON{}, B: coverMarshalJSON{}},
831 },
832 {
833 name: "PtrHeadMarshalJSONMultiFieldsString",
834 data: &struct {
835 A coverMarshalJSON `json:"a,string"`
836 B coverMarshalJSON `json:"b,string"`
837 }{A: coverMarshalJSON{}, B: coverMarshalJSON{}},
838 },
839 {
840 name: "PtrHeadPtrMarshalJSONMultiFields",
841 data: &struct {
842 A coverPtrMarshalJSON `json:"a"`
843 B coverPtrMarshalJSON `json:"b"`
844 }{A: coverPtrMarshalJSON{}, B: coverPtrMarshalJSON{}},
845 },
846 {
847 name: "PtrHeadPtrMarshalJSONMultiFieldsOmitEmpty",
848 data: &struct {
849 A coverPtrMarshalJSON `json:"a,omitempty"`
850 B coverPtrMarshalJSON `json:"b,omitempty"`
851 }{A: coverPtrMarshalJSON{}, B: coverPtrMarshalJSON{}},
852 },
853 {
854 name: "PtrHeadPtrMarshalJSONMultiFieldsString",
855 data: &struct {
856 A coverPtrMarshalJSON `json:"a,string"`
857 B coverPtrMarshalJSON `json:"b,string"`
858 }{A: coverPtrMarshalJSON{}, B: coverPtrMarshalJSON{}},
859 },
860
861
862 {
863 name: "PtrHeadMarshalJSONPtrMultiFields",
864 data: &struct {
865 A *coverMarshalJSON `json:"a"`
866 B *coverMarshalJSON `json:"b"`
867 }{A: &coverMarshalJSON{}, B: &coverMarshalJSON{}},
868 },
869 {
870 name: "PtrHeadMarshalJSONPtrMultiFieldsOmitEmpty",
871 data: &struct {
872 A *coverMarshalJSON `json:"a,omitempty"`
873 B *coverMarshalJSON `json:"b,omitempty"`
874 }{A: &coverMarshalJSON{}, B: &coverMarshalJSON{}},
875 },
876 {
877 name: "PtrHeadMarshalJSONPtrMultiFieldsString",
878 data: &struct {
879 A *coverMarshalJSON `json:"a,string"`
880 B *coverMarshalJSON `json:"b,string"`
881 }{A: &coverMarshalJSON{}, B: &coverMarshalJSON{}},
882 },
883 {
884 name: "PtrHeadPtrMarshalJSONPtrMultiFields",
885 data: &struct {
886 A *coverPtrMarshalJSON `json:"a"`
887 B *coverPtrMarshalJSON `json:"b"`
888 }{A: &coverPtrMarshalJSON{}, B: &coverPtrMarshalJSON{}},
889 },
890 {
891 name: "PtrHeadPtrMarshalJSONPtrMultiFieldsOmitEmpty",
892 data: &struct {
893 A *coverPtrMarshalJSON `json:"a,omitempty"`
894 B *coverPtrMarshalJSON `json:"b,omitempty"`
895 }{A: &coverPtrMarshalJSON{}, B: &coverPtrMarshalJSON{}},
896 },
897 {
898 name: "PtrHeadPtrMarshalJSONPtrMultiFieldsString",
899 data: &struct {
900 A *coverPtrMarshalJSON `json:"a,string"`
901 B *coverPtrMarshalJSON `json:"b,string"`
902 }{A: &coverPtrMarshalJSON{}, B: &coverPtrMarshalJSON{}},
903 },
904
905
906 {
907 name: "PtrHeadMarshalJSONPtrNilMultiFields",
908 data: &struct {
909 A *coverMarshalJSON `json:"a"`
910 B *coverMarshalJSON `json:"b"`
911 }{A: nil, B: nil},
912 },
913 {
914 name: "PtrHeadMarshalJSONPtrNilMultiFieldsOmitEmpty",
915 data: &struct {
916 A *coverMarshalJSON `json:"a,omitempty"`
917 B *coverMarshalJSON `json:"b,omitempty"`
918 }{A: nil, B: nil},
919 },
920 {
921 name: "PtrHeadMarshalJSONPtrNilMultiFieldsString",
922 data: &struct {
923 A *coverMarshalJSON `json:"a,string"`
924 B *coverMarshalJSON `json:"b,string"`
925 }{A: nil, B: nil},
926 },
927 {
928 name: "PtrHeadPtrMarshalJSONPtrNilMultiFields",
929 data: &struct {
930 A *coverPtrMarshalJSON `json:"a"`
931 B *coverPtrMarshalJSON `json:"b"`
932 }{A: nil, B: nil},
933 },
934 {
935 name: "PtrHeadPtrMarshalJSONPtrNilMultiFieldsOmitEmpty",
936 data: &struct {
937 A *coverPtrMarshalJSON `json:"a,omitempty"`
938 B *coverPtrMarshalJSON `json:"b,omitempty"`
939 }{A: nil, B: nil},
940 },
941 {
942 name: "PtrHeadPtrMarshalJSONPtrNilMultiFieldsString",
943 data: &struct {
944 A *coverPtrMarshalJSON `json:"a,string"`
945 B *coverPtrMarshalJSON `json:"b,string"`
946 }{A: nil, B: nil},
947 },
948
949
950 {
951 name: "PtrHeadMarshalJSONNilMultiFields",
952 data: (*struct {
953 A coverMarshalJSON `json:"a"`
954 B coverMarshalJSON `json:"b"`
955 })(nil),
956 },
957 {
958 name: "PtrHeadMarshalJSONNilMultiFieldsOmitEmpty",
959 data: (*struct {
960 A coverMarshalJSON `json:"a,omitempty"`
961 B coverMarshalJSON `json:"b,omitempty"`
962 })(nil),
963 },
964 {
965 name: "PtrHeadMarshalJSONNilMultiFieldsString",
966 data: (*struct {
967 A coverMarshalJSON `json:"a,string"`
968 B coverMarshalJSON `json:"b,string"`
969 })(nil),
970 },
971 {
972 name: "PtrHeadPtrMarshalJSONNilMultiFields",
973 data: (*struct {
974 A coverPtrMarshalJSON `json:"a"`
975 B coverPtrMarshalJSON `json:"b"`
976 })(nil),
977 },
978 {
979 name: "PtrHeadPtrMarshalJSONNilMultiFieldsOmitEmpty",
980 data: (*struct {
981 A coverPtrMarshalJSON `json:"a,omitempty"`
982 B coverPtrMarshalJSON `json:"b,omitempty"`
983 })(nil),
984 },
985 {
986 name: "PtrHeadPtrMarshalJSONNilMultiFieldsString",
987 data: (*struct {
988 A coverPtrMarshalJSON `json:"a,string"`
989 B coverPtrMarshalJSON `json:"b,string"`
990 })(nil),
991 },
992
993
994 {
995 name: "PtrHeadMarshalJSONNilMultiFields",
996 data: (*struct {
997 A *coverMarshalJSON `json:"a"`
998 B *coverMarshalJSON `json:"b"`
999 })(nil),
1000 },
1001 {
1002 name: "PtrHeadMarshalJSONNilMultiFieldsOmitEmpty",
1003 data: (*struct {
1004 A *coverMarshalJSON `json:"a,omitempty"`
1005 B *coverMarshalJSON `json:"b,omitempty"`
1006 })(nil),
1007 },
1008 {
1009 name: "PtrHeadMarshalJSONNilMultiFieldsString",
1010 data: (*struct {
1011 A *coverMarshalJSON `json:"a,string"`
1012 B *coverMarshalJSON `json:"b,string"`
1013 })(nil),
1014 },
1015 {
1016 name: "PtrHeadPtrMarshalJSONNilMultiFields",
1017 data: (*struct {
1018 A *coverPtrMarshalJSON `json:"a"`
1019 B *coverPtrMarshalJSON `json:"b"`
1020 })(nil),
1021 },
1022 {
1023 name: "PtrHeadPtrMarshalJSONNilMultiFieldsOmitEmpty",
1024 data: (*struct {
1025 A *coverPtrMarshalJSON `json:"a,omitempty"`
1026 B *coverPtrMarshalJSON `json:"b,omitempty"`
1027 })(nil),
1028 },
1029 {
1030 name: "PtrHeadPtrMarshalJSONNilMultiFieldsString",
1031 data: (*struct {
1032 A *coverPtrMarshalJSON `json:"a,string"`
1033 B *coverPtrMarshalJSON `json:"b,string"`
1034 })(nil),
1035 },
1036
1037
1038 {
1039 name: "HeadMarshalJSONZeroNotRoot",
1040 data: struct {
1041 A struct {
1042 A coverMarshalJSON `json:"a"`
1043 }
1044 }{},
1045 },
1046 {
1047 name: "HeadMarshalJSONZeroNotRootOmitEmpty",
1048 data: struct {
1049 A struct {
1050 A coverMarshalJSON `json:"a,omitempty"`
1051 }
1052 }{},
1053 },
1054 {
1055 name: "HeadMarshalJSONZeroNotRootString",
1056 data: struct {
1057 A struct {
1058 A coverMarshalJSON `json:"a,string"`
1059 }
1060 }{},
1061 },
1062 {
1063 name: "HeadPtrMarshalJSONZeroNotRoot",
1064 data: struct {
1065 A struct {
1066 A coverPtrMarshalJSON `json:"a"`
1067 }
1068 }{},
1069 },
1070 {
1071 name: "HeadPtrMarshalJSONZeroNotRootOmitEmpty",
1072 data: struct {
1073 A struct {
1074 A coverPtrMarshalJSON `json:"a,omitempty"`
1075 }
1076 }{},
1077 },
1078 {
1079 name: "HeadPtrMarshalJSONZeroNotRootString",
1080 data: struct {
1081 A struct {
1082 A coverPtrMarshalJSON `json:"a,string"`
1083 }
1084 }{},
1085 },
1086
1087
1088 {
1089 name: "HeadMarshalJSONNotRoot",
1090 data: struct {
1091 A struct {
1092 A coverMarshalJSON `json:"a"`
1093 }
1094 }{A: struct {
1095 A coverMarshalJSON `json:"a"`
1096 }{A: coverMarshalJSON{}}},
1097 },
1098 {
1099 name: "HeadMarshalJSONNotRootOmitEmpty",
1100 data: struct {
1101 A struct {
1102 A coverMarshalJSON `json:"a,omitempty"`
1103 }
1104 }{A: struct {
1105 A coverMarshalJSON `json:"a,omitempty"`
1106 }{A: coverMarshalJSON{}}},
1107 },
1108 {
1109 name: "HeadMarshalJSONNotRootString",
1110 data: struct {
1111 A struct {
1112 A coverMarshalJSON `json:"a,string"`
1113 }
1114 }{A: struct {
1115 A coverMarshalJSON `json:"a,string"`
1116 }{A: coverMarshalJSON{}}},
1117 },
1118 {
1119 name: "HeadMarshalJSONNotRoot",
1120 data: struct {
1121 A struct {
1122 A coverPtrMarshalJSON `json:"a"`
1123 }
1124 }{A: struct {
1125 A coverPtrMarshalJSON `json:"a"`
1126 }{A: coverPtrMarshalJSON{}}},
1127 },
1128 {
1129 name: "HeadMarshalJSONNotRootOmitEmpty",
1130 data: struct {
1131 A struct {
1132 A coverPtrMarshalJSON `json:"a,omitempty"`
1133 }
1134 }{A: struct {
1135 A coverPtrMarshalJSON `json:"a,omitempty"`
1136 }{A: coverPtrMarshalJSON{}}},
1137 },
1138 {
1139 name: "HeadMarshalJSONNotRootString",
1140 data: struct {
1141 A struct {
1142 A coverPtrMarshalJSON `json:"a,string"`
1143 }
1144 }{A: struct {
1145 A coverPtrMarshalJSON `json:"a,string"`
1146 }{A: coverPtrMarshalJSON{}}},
1147 },
1148
1149
1150 {
1151 name: "HeadMarshalJSONPtrNotRoot",
1152 data: struct {
1153 A struct {
1154 A *coverMarshalJSON `json:"a"`
1155 }
1156 }{A: struct {
1157 A *coverMarshalJSON `json:"a"`
1158 }{&coverMarshalJSON{}}},
1159 },
1160 {
1161 name: "HeadMarshalJSONPtrNotRootOmitEmpty",
1162 data: struct {
1163 A struct {
1164 A *coverMarshalJSON `json:"a,omitempty"`
1165 }
1166 }{A: struct {
1167 A *coverMarshalJSON `json:"a,omitempty"`
1168 }{&coverMarshalJSON{}}},
1169 },
1170 {
1171 name: "HeadMarshalJSONPtrNotRootString",
1172 data: struct {
1173 A struct {
1174 A *coverMarshalJSON `json:"a,string"`
1175 }
1176 }{A: struct {
1177 A *coverMarshalJSON `json:"a,string"`
1178 }{&coverMarshalJSON{}}},
1179 },
1180 {
1181 name: "HeadPtrMarshalJSONPtrNotRoot",
1182 data: struct {
1183 A struct {
1184 A *coverPtrMarshalJSON `json:"a"`
1185 }
1186 }{A: struct {
1187 A *coverPtrMarshalJSON `json:"a"`
1188 }{&coverPtrMarshalJSON{}}},
1189 },
1190 {
1191 name: "HeadPtrMarshalJSONPtrNotRootOmitEmpty",
1192 data: struct {
1193 A struct {
1194 A *coverPtrMarshalJSON `json:"a,omitempty"`
1195 }
1196 }{A: struct {
1197 A *coverPtrMarshalJSON `json:"a,omitempty"`
1198 }{&coverPtrMarshalJSON{}}},
1199 },
1200 {
1201 name: "HeadPtrMarshalJSONPtrNotRootString",
1202 data: struct {
1203 A struct {
1204 A *coverPtrMarshalJSON `json:"a,string"`
1205 }
1206 }{A: struct {
1207 A *coverPtrMarshalJSON `json:"a,string"`
1208 }{&coverPtrMarshalJSON{}}},
1209 },
1210
1211
1212 {
1213 name: "HeadMarshalJSONPtrNilNotRoot",
1214 data: struct {
1215 A struct {
1216 A *coverMarshalJSON `json:"a"`
1217 }
1218 }{},
1219 },
1220 {
1221 name: "HeadMarshalJSONPtrNilNotRootOmitEmpty",
1222 data: struct {
1223 A struct {
1224 A *coverMarshalJSON `json:"a,omitempty"`
1225 }
1226 }{},
1227 },
1228 {
1229 name: "HeadMarshalJSONPtrNilNotRootString",
1230 data: struct {
1231 A struct {
1232 A *coverMarshalJSON `json:"a,string"`
1233 }
1234 }{},
1235 },
1236 {
1237 name: "HeadPtrMarshalJSONPtrNilNotRoot",
1238 data: struct {
1239 A struct {
1240 A *coverPtrMarshalJSON `json:"a"`
1241 }
1242 }{},
1243 },
1244 {
1245 name: "HeadPtrMarshalJSONPtrNilNotRootOmitEmpty",
1246 data: struct {
1247 A struct {
1248 A *coverPtrMarshalJSON `json:"a,omitempty"`
1249 }
1250 }{},
1251 },
1252 {
1253 name: "HeadPtrMarshalJSONPtrNilNotRootString",
1254 data: struct {
1255 A struct {
1256 A *coverPtrMarshalJSON `json:"a,string"`
1257 }
1258 }{},
1259 },
1260
1261
1262 {
1263 name: "PtrHeadMarshalJSONZeroNotRoot",
1264 data: struct {
1265 A *struct {
1266 A coverMarshalJSON `json:"a"`
1267 }
1268 }{A: new(struct {
1269 A coverMarshalJSON `json:"a"`
1270 })},
1271 },
1272 {
1273 name: "PtrHeadMarshalJSONZeroNotRootOmitEmpty",
1274 data: struct {
1275 A *struct {
1276 A coverMarshalJSON `json:"a,omitempty"`
1277 }
1278 }{A: new(struct {
1279 A coverMarshalJSON `json:"a,omitempty"`
1280 })},
1281 },
1282 {
1283 name: "PtrHeadMarshalJSONZeroNotRootString",
1284 data: struct {
1285 A *struct {
1286 A coverMarshalJSON `json:"a,string"`
1287 }
1288 }{A: new(struct {
1289 A coverMarshalJSON `json:"a,string"`
1290 })},
1291 },
1292 {
1293 name: "PtrHeadPtrMarshalJSONZeroNotRoot",
1294 data: struct {
1295 A *struct {
1296 A coverPtrMarshalJSON `json:"a"`
1297 }
1298 }{A: new(struct {
1299 A coverPtrMarshalJSON `json:"a"`
1300 })},
1301 },
1302 {
1303 name: "PtrHeadPtrMarshalJSONZeroNotRootOmitEmpty",
1304 data: struct {
1305 A *struct {
1306 A coverPtrMarshalJSON `json:"a,omitempty"`
1307 }
1308 }{A: new(struct {
1309 A coverPtrMarshalJSON `json:"a,omitempty"`
1310 })},
1311 },
1312 {
1313 name: "PtrHeadPtrMarshalJSONZeroNotRootString",
1314 data: struct {
1315 A *struct {
1316 A coverPtrMarshalJSON `json:"a,string"`
1317 }
1318 }{A: new(struct {
1319 A coverPtrMarshalJSON `json:"a,string"`
1320 })},
1321 },
1322
1323
1324 {
1325 name: "PtrHeadMarshalJSONNotRoot",
1326 data: struct {
1327 A *struct {
1328 A coverMarshalJSON `json:"a"`
1329 }
1330 }{A: &(struct {
1331 A coverMarshalJSON `json:"a"`
1332 }{A: coverMarshalJSON{}})},
1333 },
1334 {
1335 name: "PtrHeadMarshalJSONNotRootOmitEmpty",
1336 data: struct {
1337 A *struct {
1338 A coverMarshalJSON `json:"a,omitempty"`
1339 }
1340 }{A: &(struct {
1341 A coverMarshalJSON `json:"a,omitempty"`
1342 }{A: coverMarshalJSON{}})},
1343 },
1344 {
1345 name: "PtrHeadMarshalJSONNotRootString",
1346 data: struct {
1347 A *struct {
1348 A coverMarshalJSON `json:"a,string"`
1349 }
1350 }{A: &(struct {
1351 A coverMarshalJSON `json:"a,string"`
1352 }{A: coverMarshalJSON{}})},
1353 },
1354 {
1355 name: "PtrHeadPtrMarshalJSONNotRoot",
1356 data: struct {
1357 A *struct {
1358 A coverPtrMarshalJSON `json:"a"`
1359 }
1360 }{A: &(struct {
1361 A coverPtrMarshalJSON `json:"a"`
1362 }{A: coverPtrMarshalJSON{}})},
1363 },
1364 {
1365 name: "PtrHeadPtrMarshalJSONNotRootOmitEmpty",
1366 data: struct {
1367 A *struct {
1368 A coverPtrMarshalJSON `json:"a,omitempty"`
1369 }
1370 }{A: &(struct {
1371 A coverPtrMarshalJSON `json:"a,omitempty"`
1372 }{A: coverPtrMarshalJSON{}})},
1373 },
1374 {
1375 name: "PtrHeadPtrMarshalJSONNotRootString",
1376 data: struct {
1377 A *struct {
1378 A coverPtrMarshalJSON `json:"a,string"`
1379 }
1380 }{A: &(struct {
1381 A coverPtrMarshalJSON `json:"a,string"`
1382 }{A: coverPtrMarshalJSON{}})},
1383 },
1384
1385
1386 {
1387 name: "PtrHeadMarshalJSONPtrNotRoot",
1388 data: struct {
1389 A *struct {
1390 A *coverMarshalJSON `json:"a"`
1391 }
1392 }{A: &(struct {
1393 A *coverMarshalJSON `json:"a"`
1394 }{A: &coverMarshalJSON{}})},
1395 },
1396 {
1397 name: "PtrHeadMarshalJSONPtrNotRootOmitEmpty",
1398 data: struct {
1399 A *struct {
1400 A *coverMarshalJSON `json:"a,omitempty"`
1401 }
1402 }{A: &(struct {
1403 A *coverMarshalJSON `json:"a,omitempty"`
1404 }{A: &coverMarshalJSON{}})},
1405 },
1406 {
1407 name: "PtrHeadMarshalJSONPtrNotRootString",
1408 data: struct {
1409 A *struct {
1410 A *coverMarshalJSON `json:"a,string"`
1411 }
1412 }{A: &(struct {
1413 A *coverMarshalJSON `json:"a,string"`
1414 }{A: &coverMarshalJSON{}})},
1415 },
1416 {
1417 name: "PtrHeadPtrMarshalJSONPtrNotRoot",
1418 data: struct {
1419 A *struct {
1420 A *coverPtrMarshalJSON `json:"a"`
1421 }
1422 }{A: &(struct {
1423 A *coverPtrMarshalJSON `json:"a"`
1424 }{A: &coverPtrMarshalJSON{}})},
1425 },
1426 {
1427 name: "PtrHeadPtrMarshalJSONPtrNotRootOmitEmpty",
1428 data: struct {
1429 A *struct {
1430 A *coverPtrMarshalJSON `json:"a,omitempty"`
1431 }
1432 }{A: &(struct {
1433 A *coverPtrMarshalJSON `json:"a,omitempty"`
1434 }{A: &coverPtrMarshalJSON{}})},
1435 },
1436 {
1437 name: "PtrHeadPtrMarshalJSONPtrNotRootString",
1438 data: struct {
1439 A *struct {
1440 A *coverPtrMarshalJSON `json:"a,string"`
1441 }
1442 }{A: &(struct {
1443 A *coverPtrMarshalJSON `json:"a,string"`
1444 }{A: &coverPtrMarshalJSON{}})},
1445 },
1446
1447
1448 {
1449 name: "PtrHeadMarshalJSONPtrNilNotRoot",
1450 data: struct {
1451 A *struct {
1452 A *coverMarshalJSON `json:"a"`
1453 }
1454 }{A: &(struct {
1455 A *coverMarshalJSON `json:"a"`
1456 }{A: nil})},
1457 },
1458 {
1459 name: "PtrHeadMarshalJSONPtrNilNotRootOmitEmpty",
1460 data: struct {
1461 A *struct {
1462 A *coverMarshalJSON `json:"a,omitempty"`
1463 }
1464 }{A: &(struct {
1465 A *coverMarshalJSON `json:"a,omitempty"`
1466 }{A: nil})},
1467 },
1468 {
1469 name: "PtrHeadMarshalJSONPtrNilNotRootString",
1470 data: struct {
1471 A *struct {
1472 A *coverMarshalJSON `json:"a,string"`
1473 }
1474 }{A: &(struct {
1475 A *coverMarshalJSON `json:"a,string"`
1476 }{A: nil})},
1477 },
1478 {
1479 name: "PtrHeadPtrMarshalJSONPtrNilNotRoot",
1480 data: struct {
1481 A *struct {
1482 A *coverPtrMarshalJSON `json:"a"`
1483 }
1484 }{A: &(struct {
1485 A *coverPtrMarshalJSON `json:"a"`
1486 }{A: nil})},
1487 },
1488 {
1489 name: "PtrHeadPtrMarshalJSONPtrNilNotRootOmitEmpty",
1490 data: struct {
1491 A *struct {
1492 A *coverPtrMarshalJSON `json:"a,omitempty"`
1493 }
1494 }{A: &(struct {
1495 A *coverPtrMarshalJSON `json:"a,omitempty"`
1496 }{A: nil})},
1497 },
1498 {
1499 name: "PtrHeadPtrMarshalJSONPtrNilNotRootString",
1500 data: struct {
1501 A *struct {
1502 A *coverPtrMarshalJSON `json:"a,string"`
1503 }
1504 }{A: &(struct {
1505 A *coverPtrMarshalJSON `json:"a,string"`
1506 }{A: nil})},
1507 },
1508
1509
1510 {
1511 name: "PtrHeadMarshalJSONNilNotRoot",
1512 data: struct {
1513 A *struct {
1514 A *coverMarshalJSON `json:"a"`
1515 }
1516 }{A: nil},
1517 },
1518 {
1519 name: "PtrHeadMarshalJSONNilNotRootOmitEmpty",
1520 data: struct {
1521 A *struct {
1522 A *coverMarshalJSON `json:"a,omitempty"`
1523 } `json:",omitempty"`
1524 }{A: nil},
1525 },
1526 {
1527 name: "PtrHeadMarshalJSONNilNotRootString",
1528 data: struct {
1529 A *struct {
1530 A *coverMarshalJSON `json:"a,string"`
1531 } `json:",string"`
1532 }{A: nil},
1533 },
1534 {
1535 name: "PtrHeadPtrMarshalJSONNilNotRoot",
1536 data: struct {
1537 A *struct {
1538 A *coverPtrMarshalJSON `json:"a"`
1539 }
1540 }{A: nil},
1541 },
1542 {
1543 name: "PtrHeadPtrMarshalJSONNilNotRootOmitEmpty",
1544 data: struct {
1545 A *struct {
1546 A *coverPtrMarshalJSON `json:"a,omitempty"`
1547 } `json:",omitempty"`
1548 }{A: nil},
1549 },
1550 {
1551 name: "PtrHeadPtrMarshalJSONNilNotRootString",
1552 data: struct {
1553 A *struct {
1554 A *coverPtrMarshalJSON `json:"a,string"`
1555 } `json:",string"`
1556 }{A: nil},
1557 },
1558
1559
1560 {
1561 name: "HeadMarshalJSONZeroMultiFieldsNotRoot",
1562 data: struct {
1563 A struct {
1564 A coverMarshalJSON `json:"a"`
1565 }
1566 B struct {
1567 B coverMarshalJSON `json:"b"`
1568 }
1569 }{},
1570 },
1571 {
1572 name: "HeadMarshalJSONZeroMultiFieldsNotRootOmitEmpty",
1573 data: struct {
1574 A struct {
1575 A coverMarshalJSON `json:"a,omitempty"`
1576 }
1577 B struct {
1578 B coverMarshalJSON `json:"b,omitempty"`
1579 }
1580 }{},
1581 },
1582 {
1583 name: "HeadMarshalJSONZeroMultiFieldsNotRootString",
1584 data: struct {
1585 A struct {
1586 A coverMarshalJSON `json:"a,string"`
1587 }
1588 B struct {
1589 B coverMarshalJSON `json:"b,string"`
1590 }
1591 }{},
1592 },
1593 {
1594 name: "HeadPtrMarshalJSONZeroMultiFieldsNotRoot",
1595 data: struct {
1596 A struct {
1597 A coverPtrMarshalJSON `json:"a"`
1598 }
1599 B struct {
1600 B coverPtrMarshalJSON `json:"b"`
1601 }
1602 }{},
1603 },
1604 {
1605 name: "HeadPtrMarshalJSONZeroMultiFieldsNotRootOmitEmpty",
1606 data: struct {
1607 A struct {
1608 A coverPtrMarshalJSON `json:"a,omitempty"`
1609 }
1610 B struct {
1611 B coverPtrMarshalJSON `json:"b,omitempty"`
1612 }
1613 }{},
1614 },
1615 {
1616 name: "HeadPtrMarshalJSONZeroMultiFieldsNotRootString",
1617 data: struct {
1618 A struct {
1619 A coverPtrMarshalJSON `json:"a,string"`
1620 }
1621 B struct {
1622 B coverPtrMarshalJSON `json:"b,string"`
1623 }
1624 }{},
1625 },
1626
1627
1628 {
1629 name: "HeadMarshalJSONMultiFieldsNotRoot",
1630 data: struct {
1631 A struct {
1632 A coverMarshalJSON `json:"a"`
1633 }
1634 B struct {
1635 B coverMarshalJSON `json:"b"`
1636 }
1637 }{A: struct {
1638 A coverMarshalJSON `json:"a"`
1639 }{A: coverMarshalJSON{}}, B: struct {
1640 B coverMarshalJSON `json:"b"`
1641 }{B: coverMarshalJSON{}}},
1642 },
1643 {
1644 name: "HeadMarshalJSONMultiFieldsNotRootOmitEmpty",
1645 data: struct {
1646 A struct {
1647 A coverMarshalJSON `json:"a,omitempty"`
1648 }
1649 B struct {
1650 B coverMarshalJSON `json:"b,omitempty"`
1651 }
1652 }{A: struct {
1653 A coverMarshalJSON `json:"a,omitempty"`
1654 }{A: coverMarshalJSON{}}, B: struct {
1655 B coverMarshalJSON `json:"b,omitempty"`
1656 }{B: coverMarshalJSON{}}},
1657 },
1658 {
1659 name: "HeadMarshalJSONMultiFieldsNotRootString",
1660 data: struct {
1661 A struct {
1662 A coverMarshalJSON `json:"a,string"`
1663 }
1664 B struct {
1665 B coverMarshalJSON `json:"b,string"`
1666 }
1667 }{A: struct {
1668 A coverMarshalJSON `json:"a,string"`
1669 }{A: coverMarshalJSON{}}, B: struct {
1670 B coverMarshalJSON `json:"b,string"`
1671 }{B: coverMarshalJSON{}}},
1672 },
1673 {
1674 name: "HeadPtrMarshalJSONMultiFieldsNotRoot",
1675 data: struct {
1676 A struct {
1677 A coverPtrMarshalJSON `json:"a"`
1678 }
1679 B struct {
1680 B coverPtrMarshalJSON `json:"b"`
1681 }
1682 }{A: struct {
1683 A coverPtrMarshalJSON `json:"a"`
1684 }{A: coverPtrMarshalJSON{}}, B: struct {
1685 B coverPtrMarshalJSON `json:"b"`
1686 }{B: coverPtrMarshalJSON{}}},
1687 },
1688 {
1689 name: "HeadPtrMarshalJSONMultiFieldsNotRootOmitEmpty",
1690 data: struct {
1691 A struct {
1692 A coverPtrMarshalJSON `json:"a,omitempty"`
1693 }
1694 B struct {
1695 B coverPtrMarshalJSON `json:"b,omitempty"`
1696 }
1697 }{A: struct {
1698 A coverPtrMarshalJSON `json:"a,omitempty"`
1699 }{A: coverPtrMarshalJSON{}}, B: struct {
1700 B coverPtrMarshalJSON `json:"b,omitempty"`
1701 }{B: coverPtrMarshalJSON{}}},
1702 },
1703 {
1704 name: "HeadPtrMarshalJSONMultiFieldsNotRootString",
1705 data: struct {
1706 A struct {
1707 A coverPtrMarshalJSON `json:"a,string"`
1708 }
1709 B struct {
1710 B coverPtrMarshalJSON `json:"b,string"`
1711 }
1712 }{A: struct {
1713 A coverPtrMarshalJSON `json:"a,string"`
1714 }{A: coverPtrMarshalJSON{}}, B: struct {
1715 B coverPtrMarshalJSON `json:"b,string"`
1716 }{B: coverPtrMarshalJSON{}}},
1717 },
1718
1719
1720 {
1721 name: "HeadMarshalJSONPtrMultiFieldsNotRoot",
1722 data: struct {
1723 A struct {
1724 A *coverMarshalJSON `json:"a"`
1725 }
1726 B struct {
1727 B *coverMarshalJSON `json:"b"`
1728 }
1729 }{A: struct {
1730 A *coverMarshalJSON `json:"a"`
1731 }{A: &coverMarshalJSON{}}, B: struct {
1732 B *coverMarshalJSON `json:"b"`
1733 }{B: &coverMarshalJSON{}}},
1734 },
1735 {
1736 name: "HeadMarshalJSONPtrMultiFieldsNotRootOmitEmpty",
1737 data: struct {
1738 A struct {
1739 A *coverMarshalJSON `json:"a,omitempty"`
1740 }
1741 B struct {
1742 B *coverMarshalJSON `json:"b,omitempty"`
1743 }
1744 }{A: struct {
1745 A *coverMarshalJSON `json:"a,omitempty"`
1746 }{A: &coverMarshalJSON{}}, B: struct {
1747 B *coverMarshalJSON `json:"b,omitempty"`
1748 }{B: &coverMarshalJSON{}}},
1749 },
1750 {
1751 name: "HeadMarshalJSONPtrMultiFieldsNotRootString",
1752 data: struct {
1753 A struct {
1754 A *coverMarshalJSON `json:"a,string"`
1755 }
1756 B struct {
1757 B *coverMarshalJSON `json:"b,string"`
1758 }
1759 }{A: struct {
1760 A *coverMarshalJSON `json:"a,string"`
1761 }{A: &coverMarshalJSON{}}, B: struct {
1762 B *coverMarshalJSON `json:"b,string"`
1763 }{B: &coverMarshalJSON{}}},
1764 },
1765 {
1766 name: "HeadPtrMarshalJSONPtrMultiFieldsNotRoot",
1767 data: struct {
1768 A struct {
1769 A *coverPtrMarshalJSON `json:"a"`
1770 }
1771 B struct {
1772 B *coverPtrMarshalJSON `json:"b"`
1773 }
1774 }{A: struct {
1775 A *coverPtrMarshalJSON `json:"a"`
1776 }{A: &coverPtrMarshalJSON{}}, B: struct {
1777 B *coverPtrMarshalJSON `json:"b"`
1778 }{B: &coverPtrMarshalJSON{}}},
1779 },
1780 {
1781 name: "HeadPtrMarshalJSONPtrMultiFieldsNotRootOmitEmpty",
1782 data: struct {
1783 A struct {
1784 A *coverPtrMarshalJSON `json:"a,omitempty"`
1785 }
1786 B struct {
1787 B *coverPtrMarshalJSON `json:"b,omitempty"`
1788 }
1789 }{A: struct {
1790 A *coverPtrMarshalJSON `json:"a,omitempty"`
1791 }{A: &coverPtrMarshalJSON{}}, B: struct {
1792 B *coverPtrMarshalJSON `json:"b,omitempty"`
1793 }{B: &coverPtrMarshalJSON{}}},
1794 },
1795 {
1796 name: "HeadPtrMarshalJSONPtrMultiFieldsNotRootString",
1797 data: struct {
1798 A struct {
1799 A *coverPtrMarshalJSON `json:"a,string"`
1800 }
1801 B struct {
1802 B *coverPtrMarshalJSON `json:"b,string"`
1803 }
1804 }{A: struct {
1805 A *coverPtrMarshalJSON `json:"a,string"`
1806 }{A: &coverPtrMarshalJSON{}}, B: struct {
1807 B *coverPtrMarshalJSON `json:"b,string"`
1808 }{B: &coverPtrMarshalJSON{}}},
1809 },
1810
1811
1812 {
1813 name: "HeadMarshalJSONPtrNilMultiFieldsNotRoot",
1814 data: struct {
1815 A struct {
1816 A *coverMarshalJSON `json:"a"`
1817 }
1818 B struct {
1819 B *coverMarshalJSON `json:"b"`
1820 }
1821 }{A: struct {
1822 A *coverMarshalJSON `json:"a"`
1823 }{A: nil}, B: struct {
1824 B *coverMarshalJSON `json:"b"`
1825 }{B: nil}},
1826 },
1827 {
1828 name: "HeadMarshalJSONPtrNilMultiFieldsNotRootOmitEmpty",
1829 data: struct {
1830 A struct {
1831 A *coverMarshalJSON `json:"a,omitempty"`
1832 }
1833 B struct {
1834 B *coverMarshalJSON `json:"b,omitempty"`
1835 }
1836 }{A: struct {
1837 A *coverMarshalJSON `json:"a,omitempty"`
1838 }{A: nil}, B: struct {
1839 B *coverMarshalJSON `json:"b,omitempty"`
1840 }{B: nil}},
1841 },
1842 {
1843 name: "HeadMarshalJSONPtrNilMultiFieldsNotRootString",
1844 data: struct {
1845 A struct {
1846 A *coverMarshalJSON `json:"a,string"`
1847 }
1848 B struct {
1849 B *coverMarshalJSON `json:"b,string"`
1850 }
1851 }{A: struct {
1852 A *coverMarshalJSON `json:"a,string"`
1853 }{A: nil}, B: struct {
1854 B *coverMarshalJSON `json:"b,string"`
1855 }{B: nil}},
1856 },
1857 {
1858 name: "HeadPtrMarshalJSONPtrNilMultiFieldsNotRoot",
1859 data: struct {
1860 A struct {
1861 A *coverPtrMarshalJSON `json:"a"`
1862 }
1863 B struct {
1864 B *coverPtrMarshalJSON `json:"b"`
1865 }
1866 }{A: struct {
1867 A *coverPtrMarshalJSON `json:"a"`
1868 }{A: nil}, B: struct {
1869 B *coverPtrMarshalJSON `json:"b"`
1870 }{B: nil}},
1871 },
1872 {
1873 name: "HeadPtrMarshalJSONPtrNilMultiFieldsNotRootOmitEmpty",
1874 data: struct {
1875 A struct {
1876 A *coverPtrMarshalJSON `json:"a,omitempty"`
1877 }
1878 B struct {
1879 B *coverPtrMarshalJSON `json:"b,omitempty"`
1880 }
1881 }{A: struct {
1882 A *coverPtrMarshalJSON `json:"a,omitempty"`
1883 }{A: nil}, B: struct {
1884 B *coverPtrMarshalJSON `json:"b,omitempty"`
1885 }{B: nil}},
1886 },
1887 {
1888 name: "HeadPtrMarshalJSONPtrNilMultiFieldsNotRootString",
1889 data: struct {
1890 A struct {
1891 A *coverPtrMarshalJSON `json:"a,string"`
1892 }
1893 B struct {
1894 B *coverPtrMarshalJSON `json:"b,string"`
1895 }
1896 }{A: struct {
1897 A *coverPtrMarshalJSON `json:"a,string"`
1898 }{A: nil}, B: struct {
1899 B *coverPtrMarshalJSON `json:"b,string"`
1900 }{B: nil}},
1901 },
1902
1903
1904 {
1905 name: "PtrHeadMarshalJSONZeroMultiFieldsNotRoot",
1906 data: &struct {
1907 A struct {
1908 A coverMarshalJSON `json:"a"`
1909 }
1910 B struct {
1911 B coverMarshalJSON `json:"b"`
1912 }
1913 }{},
1914 },
1915 {
1916 name: "PtrHeadMarshalJSONZeroMultiFieldsNotRootOmitEmpty",
1917 data: &struct {
1918 A struct {
1919 A coverMarshalJSON `json:"a,omitempty"`
1920 }
1921 B struct {
1922 B coverMarshalJSON `json:"b,omitempty"`
1923 }
1924 }{},
1925 },
1926 {
1927 name: "PtrHeadMarshalJSONZeroMultiFieldsNotRootString",
1928 data: &struct {
1929 A struct {
1930 A coverMarshalJSON `json:"a,string"`
1931 }
1932 B struct {
1933 B coverMarshalJSON `json:"b,string"`
1934 }
1935 }{},
1936 },
1937 {
1938 name: "PtrHeadPtrMarshalJSONZeroMultiFieldsNotRoot",
1939 data: &struct {
1940 A struct {
1941 A coverPtrMarshalJSON `json:"a"`
1942 }
1943 B struct {
1944 B coverPtrMarshalJSON `json:"b"`
1945 }
1946 }{},
1947 },
1948 {
1949 name: "PtrHeadPtrMarshalJSONZeroMultiFieldsNotRootOmitEmpty",
1950 data: &struct {
1951 A struct {
1952 A coverPtrMarshalJSON `json:"a,omitempty"`
1953 }
1954 B struct {
1955 B coverPtrMarshalJSON `json:"b,omitempty"`
1956 }
1957 }{},
1958 },
1959 {
1960 name: "PtrHeadPtrMarshalJSONZeroMultiFieldsNotRootString",
1961 data: &struct {
1962 A struct {
1963 A coverPtrMarshalJSON `json:"a,string"`
1964 }
1965 B struct {
1966 B coverPtrMarshalJSON `json:"b,string"`
1967 }
1968 }{},
1969 },
1970
1971
1972 {
1973 name: "PtrHeadMarshalJSONMultiFieldsNotRoot",
1974 data: &struct {
1975 A struct {
1976 A coverMarshalJSON `json:"a"`
1977 }
1978 B struct {
1979 B coverMarshalJSON `json:"b"`
1980 }
1981 }{A: struct {
1982 A coverMarshalJSON `json:"a"`
1983 }{A: coverMarshalJSON{}}, B: struct {
1984 B coverMarshalJSON `json:"b"`
1985 }{B: coverMarshalJSON{}}},
1986 },
1987 {
1988 name: "PtrHeadMarshalJSONMultiFieldsNotRootOmitEmpty",
1989 data: &struct {
1990 A struct {
1991 A coverMarshalJSON `json:"a,omitempty"`
1992 }
1993 B struct {
1994 B coverMarshalJSON `json:"b,omitempty"`
1995 }
1996 }{A: struct {
1997 A coverMarshalJSON `json:"a,omitempty"`
1998 }{A: coverMarshalJSON{}}, B: struct {
1999 B coverMarshalJSON `json:"b,omitempty"`
2000 }{B: coverMarshalJSON{}}},
2001 },
2002 {
2003 name: "PtrHeadMarshalJSONMultiFieldsNotRootString",
2004 data: &struct {
2005 A struct {
2006 A coverMarshalJSON `json:"a,string"`
2007 }
2008 B struct {
2009 B coverMarshalJSON `json:"b,string"`
2010 }
2011 }{A: struct {
2012 A coverMarshalJSON `json:"a,string"`
2013 }{A: coverMarshalJSON{}}, B: struct {
2014 B coverMarshalJSON `json:"b,string"`
2015 }{B: coverMarshalJSON{}}},
2016 },
2017 {
2018 name: "PtrHeadPtrMarshalJSONMultiFieldsNotRoot",
2019 data: &struct {
2020 A struct {
2021 A coverPtrMarshalJSON `json:"a"`
2022 }
2023 B struct {
2024 B coverPtrMarshalJSON `json:"b"`
2025 }
2026 }{A: struct {
2027 A coverPtrMarshalJSON `json:"a"`
2028 }{A: coverPtrMarshalJSON{}}, B: struct {
2029 B coverPtrMarshalJSON `json:"b"`
2030 }{B: coverPtrMarshalJSON{}}},
2031 },
2032 {
2033 name: "PtrHeadPtrMarshalJSONMultiFieldsNotRootOmitEmpty",
2034 data: &struct {
2035 A struct {
2036 A coverPtrMarshalJSON `json:"a,omitempty"`
2037 }
2038 B struct {
2039 B coverPtrMarshalJSON `json:"b,omitempty"`
2040 }
2041 }{A: struct {
2042 A coverPtrMarshalJSON `json:"a,omitempty"`
2043 }{A: coverPtrMarshalJSON{}}, B: struct {
2044 B coverPtrMarshalJSON `json:"b,omitempty"`
2045 }{B: coverPtrMarshalJSON{}}},
2046 },
2047 {
2048 name: "PtrHeadPtrMarshalJSONMultiFieldsNotRootString",
2049 data: &struct {
2050 A struct {
2051 A coverPtrMarshalJSON `json:"a,string"`
2052 }
2053 B struct {
2054 B coverPtrMarshalJSON `json:"b,string"`
2055 }
2056 }{A: struct {
2057 A coverPtrMarshalJSON `json:"a,string"`
2058 }{A: coverPtrMarshalJSON{}}, B: struct {
2059 B coverPtrMarshalJSON `json:"b,string"`
2060 }{B: coverPtrMarshalJSON{}}},
2061 },
2062
2063
2064 {
2065 name: "PtrHeadMarshalJSONPtrMultiFieldsNotRoot",
2066 data: &struct {
2067 A *struct {
2068 A *coverMarshalJSON `json:"a"`
2069 }
2070 B *struct {
2071 B *coverMarshalJSON `json:"b"`
2072 }
2073 }{A: &(struct {
2074 A *coverMarshalJSON `json:"a"`
2075 }{A: &coverMarshalJSON{}}), B: &(struct {
2076 B *coverMarshalJSON `json:"b"`
2077 }{B: &coverMarshalJSON{}})},
2078 },
2079 {
2080 name: "PtrHeadMarshalJSONPtrMultiFieldsNotRootOmitEmpty",
2081 data: &struct {
2082 A *struct {
2083 A *coverMarshalJSON `json:"a,omitempty"`
2084 }
2085 B *struct {
2086 B *coverMarshalJSON `json:"b,omitempty"`
2087 }
2088 }{A: &(struct {
2089 A *coverMarshalJSON `json:"a,omitempty"`
2090 }{A: &coverMarshalJSON{}}), B: &(struct {
2091 B *coverMarshalJSON `json:"b,omitempty"`
2092 }{B: &coverMarshalJSON{}})},
2093 },
2094 {
2095 name: "PtrHeadMarshalJSONPtrMultiFieldsNotRootString",
2096 data: &struct {
2097 A *struct {
2098 A *coverMarshalJSON `json:"a,string"`
2099 }
2100 B *struct {
2101 B *coverMarshalJSON `json:"b,string"`
2102 }
2103 }{A: &(struct {
2104 A *coverMarshalJSON `json:"a,string"`
2105 }{A: &coverMarshalJSON{}}), B: &(struct {
2106 B *coverMarshalJSON `json:"b,string"`
2107 }{B: &coverMarshalJSON{}})},
2108 },
2109 {
2110 name: "PtrHeadPtrMarshalJSONPtrMultiFieldsNotRoot",
2111 data: &struct {
2112 A *struct {
2113 A *coverPtrMarshalJSON `json:"a"`
2114 }
2115 B *struct {
2116 B *coverPtrMarshalJSON `json:"b"`
2117 }
2118 }{A: &(struct {
2119 A *coverPtrMarshalJSON `json:"a"`
2120 }{A: &coverPtrMarshalJSON{}}), B: &(struct {
2121 B *coverPtrMarshalJSON `json:"b"`
2122 }{B: &coverPtrMarshalJSON{}})},
2123 },
2124 {
2125 name: "PtrHeadPtrMarshalJSONPtrMultiFieldsNotRootOmitEmpty",
2126 data: &struct {
2127 A *struct {
2128 A *coverPtrMarshalJSON `json:"a,omitempty"`
2129 }
2130 B *struct {
2131 B *coverPtrMarshalJSON `json:"b,omitempty"`
2132 }
2133 }{A: &(struct {
2134 A *coverPtrMarshalJSON `json:"a,omitempty"`
2135 }{A: &coverPtrMarshalJSON{}}), B: &(struct {
2136 B *coverPtrMarshalJSON `json:"b,omitempty"`
2137 }{B: &coverPtrMarshalJSON{}})},
2138 },
2139 {
2140 name: "PtrHeadPtrMarshalJSONPtrMultiFieldsNotRootString",
2141 data: &struct {
2142 A *struct {
2143 A *coverPtrMarshalJSON `json:"a,string"`
2144 }
2145 B *struct {
2146 B *coverPtrMarshalJSON `json:"b,string"`
2147 }
2148 }{A: &(struct {
2149 A *coverPtrMarshalJSON `json:"a,string"`
2150 }{A: &coverPtrMarshalJSON{}}), B: &(struct {
2151 B *coverPtrMarshalJSON `json:"b,string"`
2152 }{B: &coverPtrMarshalJSON{}})},
2153 },
2154
2155
2156 {
2157 name: "PtrHeadMarshalJSONPtrNilMultiFieldsNotRoot",
2158 data: &struct {
2159 A *struct {
2160 A *coverMarshalJSON `json:"a"`
2161 }
2162 B *struct {
2163 B *coverMarshalJSON `json:"b"`
2164 }
2165 }{A: nil, B: nil},
2166 },
2167 {
2168 name: "PtrHeadMarshalJSONPtrNilMultiFieldsNotRootOmitEmpty",
2169 data: &struct {
2170 A *struct {
2171 A *coverMarshalJSON `json:"a,omitempty"`
2172 } `json:",omitempty"`
2173 B *struct {
2174 B *coverMarshalJSON `json:"b,omitempty"`
2175 } `json:",omitempty"`
2176 }{A: nil, B: nil},
2177 },
2178 {
2179 name: "PtrHeadMarshalJSONPtrNilMultiFieldsNotRootString",
2180 data: &struct {
2181 A *struct {
2182 A *coverMarshalJSON `json:"a,string"`
2183 } `json:",string"`
2184 B *struct {
2185 B *coverMarshalJSON `json:"b,string"`
2186 } `json:",string"`
2187 }{A: nil, B: nil},
2188 },
2189 {
2190 name: "PtrHeadPtrMarshalJSONPtrNilMultiFieldsNotRoot",
2191 data: &struct {
2192 A *struct {
2193 A *coverPtrMarshalJSON `json:"a"`
2194 }
2195 B *struct {
2196 B *coverPtrMarshalJSON `json:"b"`
2197 }
2198 }{A: nil, B: nil},
2199 },
2200 {
2201 name: "PtrHeadPtrMarshalJSONPtrNilMultiFieldsNotRootOmitEmpty",
2202 data: &struct {
2203 A *struct {
2204 A *coverPtrMarshalJSON `json:"a,omitempty"`
2205 } `json:",omitempty"`
2206 B *struct {
2207 B *coverPtrMarshalJSON `json:"b,omitempty"`
2208 } `json:",omitempty"`
2209 }{A: nil, B: nil},
2210 },
2211 {
2212 name: "PtrHeadPtrMarshalJSONPtrNilMultiFieldsNotRootString",
2213 data: &struct {
2214 A *struct {
2215 A *coverPtrMarshalJSON `json:"a,string"`
2216 } `json:",string"`
2217 B *struct {
2218 B *coverPtrMarshalJSON `json:"b,string"`
2219 } `json:",string"`
2220 }{A: nil, B: nil},
2221 },
2222
2223
2224 {
2225 name: "PtrHeadMarshalJSONNilMultiFieldsNotRoot",
2226 data: (*struct {
2227 A *struct {
2228 A *coverMarshalJSON `json:"a"`
2229 }
2230 B *struct {
2231 B *coverMarshalJSON `json:"b"`
2232 }
2233 })(nil),
2234 },
2235 {
2236 name: "PtrHeadMarshalJSONNilMultiFieldsNotRootOmitEmpty",
2237 data: (*struct {
2238 A *struct {
2239 A *coverMarshalJSON `json:"a,omitempty"`
2240 }
2241 B *struct {
2242 B *coverMarshalJSON `json:"b,omitempty"`
2243 }
2244 })(nil),
2245 },
2246 {
2247 name: "PtrHeadMarshalJSONNilMultiFieldsNotRootString",
2248 data: (*struct {
2249 A *struct {
2250 A *coverMarshalJSON `json:"a,string"`
2251 }
2252 B *struct {
2253 B *coverMarshalJSON `json:"b,string"`
2254 }
2255 })(nil),
2256 },
2257 {
2258 name: "PtrHeadPtrMarshalJSONNilMultiFieldsNotRoot",
2259 data: (*struct {
2260 A *struct {
2261 A *coverPtrMarshalJSON `json:"a"`
2262 }
2263 B *struct {
2264 B *coverPtrMarshalJSON `json:"b"`
2265 }
2266 })(nil),
2267 },
2268 {
2269 name: "PtrHeadPtrMarshalJSONNilMultiFieldsNotRootOmitEmpty",
2270 data: (*struct {
2271 A *struct {
2272 A *coverPtrMarshalJSON `json:"a,omitempty"`
2273 }
2274 B *struct {
2275 B *coverPtrMarshalJSON `json:"b,omitempty"`
2276 }
2277 })(nil),
2278 },
2279 {
2280 name: "PtrHeadPtrMarshalJSONNilMultiFieldsNotRootString",
2281 data: (*struct {
2282 A *struct {
2283 A *coverPtrMarshalJSON `json:"a,string"`
2284 }
2285 B *struct {
2286 B *coverPtrMarshalJSON `json:"b,string"`
2287 }
2288 })(nil),
2289 },
2290
2291
2292 {
2293 name: "PtrHeadMarshalJSONDoubleMultiFieldsNotRoot",
2294 data: &struct {
2295 A *struct {
2296 A coverMarshalJSON `json:"a"`
2297 B coverMarshalJSON `json:"b"`
2298 }
2299 B *struct {
2300 A coverMarshalJSON `json:"a"`
2301 B coverMarshalJSON `json:"b"`
2302 }
2303 }{A: &(struct {
2304 A coverMarshalJSON `json:"a"`
2305 B coverMarshalJSON `json:"b"`
2306 }{A: coverMarshalJSON{}, B: coverMarshalJSON{}}), B: &(struct {
2307 A coverMarshalJSON `json:"a"`
2308 B coverMarshalJSON `json:"b"`
2309 }{A: coverMarshalJSON{}, B: coverMarshalJSON{}})},
2310 },
2311 {
2312 name: "PtrHeadMarshalJSONDoubleMultiFieldsNotRootOmitEmpty",
2313 data: &struct {
2314 A *struct {
2315 A coverMarshalJSON `json:"a,omitempty"`
2316 B coverMarshalJSON `json:"b,omitempty"`
2317 }
2318 B *struct {
2319 A coverMarshalJSON `json:"a,omitempty"`
2320 B coverMarshalJSON `json:"b,omitempty"`
2321 }
2322 }{A: &(struct {
2323 A coverMarshalJSON `json:"a,omitempty"`
2324 B coverMarshalJSON `json:"b,omitempty"`
2325 }{A: coverMarshalJSON{}, B: coverMarshalJSON{}}), B: &(struct {
2326 A coverMarshalJSON `json:"a,omitempty"`
2327 B coverMarshalJSON `json:"b,omitempty"`
2328 }{A: coverMarshalJSON{}, B: coverMarshalJSON{}})},
2329 },
2330 {
2331 name: "PtrHeadMarshalJSONDoubleMultiFieldsNotRootString",
2332 data: &struct {
2333 A *struct {
2334 A coverMarshalJSON `json:"a,string"`
2335 B coverMarshalJSON `json:"b,string"`
2336 }
2337 B *struct {
2338 A coverMarshalJSON `json:"a,string"`
2339 B coverMarshalJSON `json:"b,string"`
2340 }
2341 }{A: &(struct {
2342 A coverMarshalJSON `json:"a,string"`
2343 B coverMarshalJSON `json:"b,string"`
2344 }{A: coverMarshalJSON{}, B: coverMarshalJSON{}}), B: &(struct {
2345 A coverMarshalJSON `json:"a,string"`
2346 B coverMarshalJSON `json:"b,string"`
2347 }{A: coverMarshalJSON{}, B: coverMarshalJSON{}})},
2348 },
2349 {
2350 name: "PtrHeadPtrMarshalJSONDoubleMultiFieldsNotRoot",
2351 data: &struct {
2352 A *struct {
2353 A coverPtrMarshalJSON `json:"a"`
2354 B coverPtrMarshalJSON `json:"b"`
2355 }
2356 B *struct {
2357 A coverPtrMarshalJSON `json:"a"`
2358 B coverPtrMarshalJSON `json:"b"`
2359 }
2360 }{A: &(struct {
2361 A coverPtrMarshalJSON `json:"a"`
2362 B coverPtrMarshalJSON `json:"b"`
2363 }{A: coverPtrMarshalJSON{}, B: coverPtrMarshalJSON{}}), B: &(struct {
2364 A coverPtrMarshalJSON `json:"a"`
2365 B coverPtrMarshalJSON `json:"b"`
2366 }{A: coverPtrMarshalJSON{}, B: coverPtrMarshalJSON{}})},
2367 },
2368 {
2369 name: "PtrHeadPtrMarshalJSONDoubleMultiFieldsNotRootOmitEmpty",
2370 data: &struct {
2371 A *struct {
2372 A coverPtrMarshalJSON `json:"a,omitempty"`
2373 B coverPtrMarshalJSON `json:"b,omitempty"`
2374 }
2375 B *struct {
2376 A coverPtrMarshalJSON `json:"a,omitempty"`
2377 B coverPtrMarshalJSON `json:"b,omitempty"`
2378 }
2379 }{A: &(struct {
2380 A coverPtrMarshalJSON `json:"a,omitempty"`
2381 B coverPtrMarshalJSON `json:"b,omitempty"`
2382 }{A: coverPtrMarshalJSON{}, B: coverPtrMarshalJSON{}}), B: &(struct {
2383 A coverPtrMarshalJSON `json:"a,omitempty"`
2384 B coverPtrMarshalJSON `json:"b,omitempty"`
2385 }{A: coverPtrMarshalJSON{}, B: coverPtrMarshalJSON{}})},
2386 },
2387 {
2388 name: "PtrHeadPtrMarshalJSONDoubleMultiFieldsNotRootString",
2389 data: &struct {
2390 A *struct {
2391 A coverPtrMarshalJSON `json:"a,string"`
2392 B coverPtrMarshalJSON `json:"b,string"`
2393 }
2394 B *struct {
2395 A coverPtrMarshalJSON `json:"a,string"`
2396 B coverPtrMarshalJSON `json:"b,string"`
2397 }
2398 }{A: &(struct {
2399 A coverPtrMarshalJSON `json:"a,string"`
2400 B coverPtrMarshalJSON `json:"b,string"`
2401 }{A: coverPtrMarshalJSON{}, B: coverPtrMarshalJSON{}}), B: &(struct {
2402 A coverPtrMarshalJSON `json:"a,string"`
2403 B coverPtrMarshalJSON `json:"b,string"`
2404 }{A: coverPtrMarshalJSON{}, B: coverPtrMarshalJSON{}})},
2405 },
2406
2407
2408 {
2409 name: "PtrHeadMarshalJSONNilDoubleMultiFieldsNotRoot",
2410 data: &struct {
2411 A *struct {
2412 A coverMarshalJSON `json:"a"`
2413 B coverMarshalJSON `json:"b"`
2414 }
2415 B *struct {
2416 A coverMarshalJSON `json:"a"`
2417 B coverMarshalJSON `json:"b"`
2418 }
2419 }{A: nil, B: nil},
2420 },
2421 {
2422 name: "PtrHeadMarshalJSONNilDoubleMultiFieldsNotRootOmitEmpty",
2423 data: &struct {
2424 A *struct {
2425 A coverMarshalJSON `json:"a,omitempty"`
2426 B coverMarshalJSON `json:"b,omitempty"`
2427 } `json:",omitempty"`
2428 B *struct {
2429 A coverMarshalJSON `json:"a,omitempty"`
2430 B coverMarshalJSON `json:"b,omitempty"`
2431 } `json:",omitempty"`
2432 }{A: nil, B: nil},
2433 },
2434 {
2435 name: "PtrHeadMarshalJSONNilDoubleMultiFieldsNotRootString",
2436 data: &struct {
2437 A *struct {
2438 A coverMarshalJSON `json:"a,string"`
2439 B coverMarshalJSON `json:"b,string"`
2440 }
2441 B *struct {
2442 A coverMarshalJSON `json:"a,string"`
2443 B coverMarshalJSON `json:"b,string"`
2444 }
2445 }{A: nil, B: nil},
2446 },
2447 {
2448 name: "PtrHeadPtrMarshalJSONNilDoubleMultiFieldsNotRoot",
2449 data: &struct {
2450 A *struct {
2451 A coverPtrMarshalJSON `json:"a"`
2452 B coverPtrMarshalJSON `json:"b"`
2453 }
2454 B *struct {
2455 A coverPtrMarshalJSON `json:"a"`
2456 B coverPtrMarshalJSON `json:"b"`
2457 }
2458 }{A: nil, B: nil},
2459 },
2460 {
2461 name: "PtrHeadPtrMarshalJSONNilDoubleMultiFieldsNotRootOmitEmpty",
2462 data: &struct {
2463 A *struct {
2464 A coverPtrMarshalJSON `json:"a,omitempty"`
2465 B coverPtrMarshalJSON `json:"b,omitempty"`
2466 } `json:",omitempty"`
2467 B *struct {
2468 A coverPtrMarshalJSON `json:"a,omitempty"`
2469 B coverPtrMarshalJSON `json:"b,omitempty"`
2470 } `json:",omitempty"`
2471 }{A: nil, B: nil},
2472 },
2473 {
2474 name: "PtrHeadPtrMarshalJSONNilDoubleMultiFieldsNotRootString",
2475 data: &struct {
2476 A *struct {
2477 A coverPtrMarshalJSON `json:"a,string"`
2478 B coverPtrMarshalJSON `json:"b,string"`
2479 }
2480 B *struct {
2481 A coverPtrMarshalJSON `json:"a,string"`
2482 B coverPtrMarshalJSON `json:"b,string"`
2483 }
2484 }{A: nil, B: nil},
2485 },
2486
2487
2488 {
2489 name: "PtrHeadMarshalJSONNilDoubleMultiFieldsNotRoot",
2490 data: (*struct {
2491 A *struct {
2492 A coverMarshalJSON `json:"a"`
2493 B coverMarshalJSON `json:"b"`
2494 }
2495 B *struct {
2496 A coverMarshalJSON `json:"a"`
2497 B coverMarshalJSON `json:"b"`
2498 }
2499 })(nil),
2500 },
2501 {
2502 name: "PtrHeadMarshalJSONNilDoubleMultiFieldsNotRootOmitEmpty",
2503 data: (*struct {
2504 A *struct {
2505 A coverMarshalJSON `json:"a,omitempty"`
2506 B coverMarshalJSON `json:"b,omitempty"`
2507 }
2508 B *struct {
2509 A coverMarshalJSON `json:"a,omitempty"`
2510 B coverMarshalJSON `json:"b,omitempty"`
2511 }
2512 })(nil),
2513 },
2514 {
2515 name: "PtrHeadMarshalJSONNilDoubleMultiFieldsNotRootString",
2516 data: (*struct {
2517 A *struct {
2518 A coverMarshalJSON `json:"a,string"`
2519 B coverMarshalJSON `json:"b,string"`
2520 }
2521 B *struct {
2522 A coverMarshalJSON `json:"a,string"`
2523 B coverMarshalJSON `json:"b,string"`
2524 }
2525 })(nil),
2526 },
2527 {
2528 name: "PtrHeadPtrMarshalJSONNilDoubleMultiFieldsNotRoot",
2529 data: (*struct {
2530 A *struct {
2531 A coverPtrMarshalJSON `json:"a"`
2532 B coverPtrMarshalJSON `json:"b"`
2533 }
2534 B *struct {
2535 A coverPtrMarshalJSON `json:"a"`
2536 B coverPtrMarshalJSON `json:"b"`
2537 }
2538 })(nil),
2539 },
2540 {
2541 name: "PtrHeadPtrMarshalJSONNilDoubleMultiFieldsNotRootOmitEmpty",
2542 data: (*struct {
2543 A *struct {
2544 A coverPtrMarshalJSON `json:"a,omitempty"`
2545 B coverPtrMarshalJSON `json:"b,omitempty"`
2546 }
2547 B *struct {
2548 A coverPtrMarshalJSON `json:"a,omitempty"`
2549 B coverPtrMarshalJSON `json:"b,omitempty"`
2550 }
2551 })(nil),
2552 },
2553 {
2554 name: "PtrHeadPtrMarshalJSONNilDoubleMultiFieldsNotRootString",
2555 data: (*struct {
2556 A *struct {
2557 A coverPtrMarshalJSON `json:"a,string"`
2558 B coverPtrMarshalJSON `json:"b,string"`
2559 }
2560 B *struct {
2561 A coverPtrMarshalJSON `json:"a,string"`
2562 B coverPtrMarshalJSON `json:"b,string"`
2563 }
2564 })(nil),
2565 },
2566
2567
2568 {
2569 name: "PtrHeadMarshalJSONPtrDoubleMultiFieldsNotRoot",
2570 data: &struct {
2571 A *struct {
2572 A *coverMarshalJSON `json:"a"`
2573 B *coverMarshalJSON `json:"b"`
2574 }
2575 B *struct {
2576 A *coverMarshalJSON `json:"a"`
2577 B *coverMarshalJSON `json:"b"`
2578 }
2579 }{A: &(struct {
2580 A *coverMarshalJSON `json:"a"`
2581 B *coverMarshalJSON `json:"b"`
2582 }{A: &coverMarshalJSON{}, B: &coverMarshalJSON{}}), B: &(struct {
2583 A *coverMarshalJSON `json:"a"`
2584 B *coverMarshalJSON `json:"b"`
2585 }{A: nil, B: nil})},
2586 },
2587 {
2588 name: "PtrHeadMarshalJSONPtrDoubleMultiFieldsNotRootOmitEmpty",
2589 data: &struct {
2590 A *struct {
2591 A *coverMarshalJSON `json:"a,omitempty"`
2592 B *coverMarshalJSON `json:"b,omitempty"`
2593 }
2594 B *struct {
2595 A *coverMarshalJSON `json:"a,omitempty"`
2596 B *coverMarshalJSON `json:"b,omitempty"`
2597 }
2598 }{A: &(struct {
2599 A *coverMarshalJSON `json:"a,omitempty"`
2600 B *coverMarshalJSON `json:"b,omitempty"`
2601 }{A: &coverMarshalJSON{}, B: &coverMarshalJSON{}}), B: &(struct {
2602 A *coverMarshalJSON `json:"a,omitempty"`
2603 B *coverMarshalJSON `json:"b,omitempty"`
2604 }{A: nil, B: nil})},
2605 },
2606 {
2607 name: "PtrHeadMarshalJSONPtrDoubleMultiFieldsNotRootString",
2608 data: &struct {
2609 A *struct {
2610 A *coverMarshalJSON `json:"a,string"`
2611 B *coverMarshalJSON `json:"b,string"`
2612 }
2613 B *struct {
2614 A *coverMarshalJSON `json:"a,string"`
2615 B *coverMarshalJSON `json:"b,string"`
2616 }
2617 }{A: &(struct {
2618 A *coverMarshalJSON `json:"a,string"`
2619 B *coverMarshalJSON `json:"b,string"`
2620 }{A: &coverMarshalJSON{}, B: &coverMarshalJSON{}}), B: &(struct {
2621 A *coverMarshalJSON `json:"a,string"`
2622 B *coverMarshalJSON `json:"b,string"`
2623 }{A: nil, B: nil})},
2624 },
2625 {
2626 name: "PtrHeadPtrMarshalJSONPtrDoubleMultiFieldsNotRoot",
2627 data: &struct {
2628 A *struct {
2629 A *coverPtrMarshalJSON `json:"a"`
2630 B *coverPtrMarshalJSON `json:"b"`
2631 }
2632 B *struct {
2633 A *coverPtrMarshalJSON `json:"a"`
2634 B *coverPtrMarshalJSON `json:"b"`
2635 }
2636 }{A: &(struct {
2637 A *coverPtrMarshalJSON `json:"a"`
2638 B *coverPtrMarshalJSON `json:"b"`
2639 }{A: &coverPtrMarshalJSON{}, B: &coverPtrMarshalJSON{}}), B: &(struct {
2640 A *coverPtrMarshalJSON `json:"a"`
2641 B *coverPtrMarshalJSON `json:"b"`
2642 }{A: nil, B: nil})},
2643 },
2644 {
2645 name: "PtrHeadPtrMarshalJSONPtrDoubleMultiFieldsNotRootOmitEmpty",
2646 data: &struct {
2647 A *struct {
2648 A *coverPtrMarshalJSON `json:"a,omitempty"`
2649 B *coverPtrMarshalJSON `json:"b,omitempty"`
2650 }
2651 B *struct {
2652 A *coverPtrMarshalJSON `json:"a,omitempty"`
2653 B *coverPtrMarshalJSON `json:"b,omitempty"`
2654 }
2655 }{A: &(struct {
2656 A *coverPtrMarshalJSON `json:"a,omitempty"`
2657 B *coverPtrMarshalJSON `json:"b,omitempty"`
2658 }{A: &coverPtrMarshalJSON{}, B: &coverPtrMarshalJSON{}}), B: &(struct {
2659 A *coverPtrMarshalJSON `json:"a,omitempty"`
2660 B *coverPtrMarshalJSON `json:"b,omitempty"`
2661 }{A: nil, B: nil})},
2662 },
2663 {
2664 name: "PtrHeadPtrMarshalJSONPtrDoubleMultiFieldsNotRootString",
2665 data: &struct {
2666 A *struct {
2667 A *coverPtrMarshalJSON `json:"a,string"`
2668 B *coverPtrMarshalJSON `json:"b,string"`
2669 }
2670 B *struct {
2671 A *coverPtrMarshalJSON `json:"a,string"`
2672 B *coverPtrMarshalJSON `json:"b,string"`
2673 }
2674 }{A: &(struct {
2675 A *coverPtrMarshalJSON `json:"a,string"`
2676 B *coverPtrMarshalJSON `json:"b,string"`
2677 }{A: &coverPtrMarshalJSON{}, B: &coverPtrMarshalJSON{}}), B: &(struct {
2678 A *coverPtrMarshalJSON `json:"a,string"`
2679 B *coverPtrMarshalJSON `json:"b,string"`
2680 }{A: nil, B: nil})},
2681 },
2682
2683
2684 {
2685 name: "PtrHeadMarshalJSONPtrNilDoubleMultiFieldsNotRoot",
2686 data: &struct {
2687 A *struct {
2688 A *coverMarshalJSON `json:"a"`
2689 B *coverMarshalJSON `json:"b"`
2690 }
2691 B *struct {
2692 A *coverMarshalJSON `json:"a"`
2693 B *coverMarshalJSON `json:"b"`
2694 }
2695 }{A: nil, B: nil},
2696 },
2697 {
2698 name: "PtrHeadMarshalJSONPtrNilDoubleMultiFieldsNotRootOmitEmpty",
2699 data: &struct {
2700 A *struct {
2701 A *coverMarshalJSON `json:"a,omitempty"`
2702 B *coverMarshalJSON `json:"b,omitempty"`
2703 } `json:",omitempty"`
2704 B *struct {
2705 A *coverMarshalJSON `json:"a,omitempty"`
2706 B *coverMarshalJSON `json:"b,omitempty"`
2707 } `json:",omitempty"`
2708 }{A: nil, B: nil},
2709 },
2710 {
2711 name: "PtrHeadMarshalJSONPtrNilDoubleMultiFieldsNotRootString",
2712 data: &struct {
2713 A *struct {
2714 A *coverMarshalJSON `json:"a,string"`
2715 B *coverMarshalJSON `json:"b,string"`
2716 }
2717 B *struct {
2718 A *coverMarshalJSON `json:"a,string"`
2719 B *coverMarshalJSON `json:"b,string"`
2720 }
2721 }{A: nil, B: nil},
2722 },
2723 {
2724 name: "PtrHeadPtrMarshalJSONPtrNilDoubleMultiFieldsNotRoot",
2725 data: &struct {
2726 A *struct {
2727 A *coverPtrMarshalJSON `json:"a"`
2728 B *coverPtrMarshalJSON `json:"b"`
2729 }
2730 B *struct {
2731 A *coverPtrMarshalJSON `json:"a"`
2732 B *coverPtrMarshalJSON `json:"b"`
2733 }
2734 }{A: nil, B: nil},
2735 },
2736 {
2737 name: "PtrHeadPtrMarshalJSONPtrNilDoubleMultiFieldsNotRootOmitEmpty",
2738 data: &struct {
2739 A *struct {
2740 A *coverPtrMarshalJSON `json:"a,omitempty"`
2741 B *coverPtrMarshalJSON `json:"b,omitempty"`
2742 } `json:",omitempty"`
2743 B *struct {
2744 A *coverPtrMarshalJSON `json:"a,omitempty"`
2745 B *coverPtrMarshalJSON `json:"b,omitempty"`
2746 } `json:",omitempty"`
2747 }{A: nil, B: nil},
2748 },
2749 {
2750 name: "PtrHeadPtrMarshalJSONPtrNilDoubleMultiFieldsNotRootString",
2751 data: &struct {
2752 A *struct {
2753 A *coverPtrMarshalJSON `json:"a,string"`
2754 B *coverPtrMarshalJSON `json:"b,string"`
2755 }
2756 B *struct {
2757 A *coverPtrMarshalJSON `json:"a,string"`
2758 B *coverPtrMarshalJSON `json:"b,string"`
2759 }
2760 }{A: nil, B: nil},
2761 },
2762
2763
2764 {
2765 name: "PtrHeadMarshalJSONPtrNilDoubleMultiFieldsNotRoot",
2766 data: (*struct {
2767 A *struct {
2768 A *coverMarshalJSON `json:"a"`
2769 B *coverMarshalJSON `json:"b"`
2770 }
2771 B *struct {
2772 A *coverMarshalJSON `json:"a"`
2773 B *coverMarshalJSON `json:"b"`
2774 }
2775 })(nil),
2776 },
2777 {
2778 name: "PtrHeadMarshalJSONPtrNilDoubleMultiFieldsNotRootOmitEmpty",
2779 data: (*struct {
2780 A *struct {
2781 A *coverMarshalJSON `json:"a,omitempty"`
2782 B *coverMarshalJSON `json:"b,omitempty"`
2783 }
2784 B *struct {
2785 A *coverMarshalJSON `json:"a,omitempty"`
2786 B *coverMarshalJSON `json:"b,omitempty"`
2787 }
2788 })(nil),
2789 },
2790 {
2791 name: "PtrHeadMarshalJSONPtrNilDoubleMultiFieldsNotRootString",
2792 data: (*struct {
2793 A *struct {
2794 A *coverMarshalJSON `json:"a,string"`
2795 B *coverMarshalJSON `json:"b,string"`
2796 }
2797 B *struct {
2798 A *coverMarshalJSON `json:"a,string"`
2799 B *coverMarshalJSON `json:"b,string"`
2800 }
2801 })(nil),
2802 },
2803 {
2804 name: "PtrHeadPtrMarshalJSONPtrNilDoubleMultiFieldsNotRoot",
2805 data: (*struct {
2806 A *struct {
2807 A *coverPtrMarshalJSON `json:"a"`
2808 B *coverPtrMarshalJSON `json:"b"`
2809 }
2810 B *struct {
2811 A *coverPtrMarshalJSON `json:"a"`
2812 B *coverPtrMarshalJSON `json:"b"`
2813 }
2814 })(nil),
2815 },
2816 {
2817 name: "PtrHeadPtrMarshalJSONPtrNilDoubleMultiFieldsNotRootOmitEmpty",
2818 data: (*struct {
2819 A *struct {
2820 A *coverPtrMarshalJSON `json:"a,omitempty"`
2821 B *coverPtrMarshalJSON `json:"b,omitempty"`
2822 }
2823 B *struct {
2824 A *coverPtrMarshalJSON `json:"a,omitempty"`
2825 B *coverPtrMarshalJSON `json:"b,omitempty"`
2826 }
2827 })(nil),
2828 },
2829 {
2830 name: "PtrHeadPtrMarshalJSONPtrNilDoubleMultiFieldsNotRootString",
2831 data: (*struct {
2832 A *struct {
2833 A *coverPtrMarshalJSON `json:"a,string"`
2834 B *coverPtrMarshalJSON `json:"b,string"`
2835 }
2836 B *struct {
2837 A *coverPtrMarshalJSON `json:"a,string"`
2838 B *coverPtrMarshalJSON `json:"b,string"`
2839 }
2840 })(nil),
2841 },
2842
2843
2844 {
2845 name: "AnonymousHeadMarshalJSON",
2846 data: struct {
2847 structMarshalJSON
2848 B coverMarshalJSON `json:"b"`
2849 }{
2850 structMarshalJSON: structMarshalJSON{A: coverMarshalJSON{}},
2851 B: coverMarshalJSON{},
2852 },
2853 },
2854 {
2855 name: "AnonymousHeadMarshalJSONOmitEmpty",
2856 data: struct {
2857 structMarshalJSONOmitEmpty
2858 B coverMarshalJSON `json:"b,omitempty"`
2859 }{
2860 structMarshalJSONOmitEmpty: structMarshalJSONOmitEmpty{A: coverMarshalJSON{}},
2861 B: coverMarshalJSON{},
2862 },
2863 },
2864 {
2865 name: "AnonymousHeadMarshalJSONString",
2866 data: struct {
2867 structMarshalJSONString
2868 B coverMarshalJSON `json:"b,string"`
2869 }{
2870 structMarshalJSONString: structMarshalJSONString{A: coverMarshalJSON{}},
2871 B: coverMarshalJSON{},
2872 },
2873 },
2874 {
2875 name: "AnonymousHeadPtrMarshalJSON",
2876 data: struct {
2877 structPtrMarshalJSON
2878 B coverPtrMarshalJSON `json:"b"`
2879 }{
2880 structPtrMarshalJSON: structPtrMarshalJSON{A: coverPtrMarshalJSON{}},
2881 B: coverPtrMarshalJSON{},
2882 },
2883 },
2884 {
2885 name: "AnonymousHeadPtrMarshalJSONOmitEmpty",
2886 data: struct {
2887 structPtrMarshalJSONOmitEmpty
2888 B coverPtrMarshalJSON `json:"b,omitempty"`
2889 }{
2890 structPtrMarshalJSONOmitEmpty: structPtrMarshalJSONOmitEmpty{A: coverPtrMarshalJSON{}},
2891 B: coverPtrMarshalJSON{},
2892 },
2893 },
2894 {
2895 name: "AnonymousHeadPtrMarshalJSONString",
2896 data: struct {
2897 structPtrMarshalJSONString
2898 B coverPtrMarshalJSON `json:"b,string"`
2899 }{
2900 structPtrMarshalJSONString: structPtrMarshalJSONString{A: coverPtrMarshalJSON{}},
2901 B: coverPtrMarshalJSON{},
2902 },
2903 },
2904
2905
2906 {
2907 name: "PtrAnonymousHeadMarshalJSON",
2908 data: struct {
2909 *structMarshalJSON
2910 B coverMarshalJSON `json:"b"`
2911 }{
2912 structMarshalJSON: &structMarshalJSON{A: coverMarshalJSON{}},
2913 B: coverMarshalJSON{},
2914 },
2915 },
2916 {
2917 name: "PtrAnonymousHeadMarshalJSONOmitEmpty",
2918 data: struct {
2919 *structMarshalJSONOmitEmpty
2920 B coverMarshalJSON `json:"b,omitempty"`
2921 }{
2922 structMarshalJSONOmitEmpty: &structMarshalJSONOmitEmpty{A: coverMarshalJSON{}},
2923 B: coverMarshalJSON{},
2924 },
2925 },
2926 {
2927 name: "PtrAnonymousHeadMarshalJSONString",
2928 data: struct {
2929 *structMarshalJSONString
2930 B coverMarshalJSON `json:"b,string"`
2931 }{
2932 structMarshalJSONString: &structMarshalJSONString{A: coverMarshalJSON{}},
2933 B: coverMarshalJSON{},
2934 },
2935 },
2936 {
2937 name: "PtrAnonymousHeadPtrMarshalJSON",
2938 data: struct {
2939 *structPtrMarshalJSON
2940 B coverPtrMarshalJSON `json:"b"`
2941 }{
2942 structPtrMarshalJSON: &structPtrMarshalJSON{A: coverPtrMarshalJSON{}},
2943 B: coverPtrMarshalJSON{},
2944 },
2945 },
2946 {
2947 name: "PtrAnonymousHeadPtrMarshalJSONOmitEmpty",
2948 data: struct {
2949 *structPtrMarshalJSONOmitEmpty
2950 B coverPtrMarshalJSON `json:"b,omitempty"`
2951 }{
2952 structPtrMarshalJSONOmitEmpty: &structPtrMarshalJSONOmitEmpty{A: coverPtrMarshalJSON{}},
2953 B: coverPtrMarshalJSON{},
2954 },
2955 },
2956 {
2957 name: "PtrAnonymousHeadPtrMarshalJSONString",
2958 data: struct {
2959 *structPtrMarshalJSONString
2960 B coverPtrMarshalJSON `json:"b,string"`
2961 }{
2962 structPtrMarshalJSONString: &structPtrMarshalJSONString{A: coverPtrMarshalJSON{}},
2963 B: coverPtrMarshalJSON{},
2964 },
2965 },
2966
2967
2968 {
2969 name: "PtrAnonymousHeadMarshalJSONNil",
2970 data: struct {
2971 *structMarshalJSON
2972 B coverMarshalJSON `json:"b"`
2973 }{
2974 structMarshalJSON: &structMarshalJSON{A: coverMarshalJSON{}},
2975 B: coverMarshalJSON{},
2976 },
2977 },
2978 {
2979 name: "PtrAnonymousHeadMarshalJSONNilOmitEmpty",
2980 data: struct {
2981 *structMarshalJSONOmitEmpty
2982 B coverMarshalJSON `json:"b,omitempty"`
2983 }{
2984 structMarshalJSONOmitEmpty: &structMarshalJSONOmitEmpty{A: coverMarshalJSON{}},
2985 B: coverMarshalJSON{},
2986 },
2987 },
2988 {
2989 name: "PtrAnonymousHeadMarshalJSONNilString",
2990 data: struct {
2991 *structMarshalJSONString
2992 B coverMarshalJSON `json:"b,string"`
2993 }{
2994 structMarshalJSONString: &structMarshalJSONString{A: coverMarshalJSON{}},
2995 B: coverMarshalJSON{},
2996 },
2997 },
2998 {
2999 name: "PtrAnonymousHeadPtrMarshalJSONNil",
3000 data: struct {
3001 *structPtrMarshalJSON
3002 B coverPtrMarshalJSON `json:"b"`
3003 }{
3004 structPtrMarshalJSON: &structPtrMarshalJSON{A: coverPtrMarshalJSON{}},
3005 B: coverPtrMarshalJSON{},
3006 },
3007 },
3008 {
3009 name: "PtrAnonymousHeadPtrMarshalJSONNilOmitEmpty",
3010 data: struct {
3011 *structPtrMarshalJSONOmitEmpty
3012 B coverPtrMarshalJSON `json:"b,omitempty"`
3013 }{
3014 structPtrMarshalJSONOmitEmpty: &structPtrMarshalJSONOmitEmpty{A: coverPtrMarshalJSON{}},
3015 B: coverPtrMarshalJSON{},
3016 },
3017 },
3018 {
3019 name: "PtrAnonymousHeadPtrMarshalJSONNilString",
3020 data: struct {
3021 *structPtrMarshalJSONString
3022 B coverPtrMarshalJSON `json:"b,string"`
3023 }{
3024 structPtrMarshalJSONString: &structPtrMarshalJSONString{A: coverPtrMarshalJSON{}},
3025 B: coverPtrMarshalJSON{},
3026 },
3027 },
3028
3029
3030 {
3031 name: "NilPtrAnonymousHeadMarshalJSON",
3032 data: struct {
3033 *structMarshalJSON
3034 B coverMarshalJSON `json:"b"`
3035 }{
3036 structMarshalJSON: nil,
3037 B: coverMarshalJSON{},
3038 },
3039 },
3040 {
3041 name: "NilPtrAnonymousHeadMarshalJSONOmitEmpty",
3042 data: struct {
3043 *structMarshalJSONOmitEmpty
3044 B coverMarshalJSON `json:"b,omitempty"`
3045 }{
3046 structMarshalJSONOmitEmpty: nil,
3047 B: coverMarshalJSON{},
3048 },
3049 },
3050 {
3051 name: "NilPtrAnonymousHeadMarshalJSONString",
3052 data: struct {
3053 *structMarshalJSONString
3054 B coverMarshalJSON `json:"b,string"`
3055 }{
3056 structMarshalJSONString: nil,
3057 B: coverMarshalJSON{},
3058 },
3059 },
3060 {
3061 name: "NilPtrAnonymousHeadPtrMarshalJSON",
3062 data: struct {
3063 *structPtrMarshalJSON
3064 B coverPtrMarshalJSON `json:"b"`
3065 }{
3066 structPtrMarshalJSON: nil,
3067 B: coverPtrMarshalJSON{},
3068 },
3069 },
3070 {
3071 name: "NilPtrAnonymousHeadPtrMarshalJSONOmitEmpty",
3072 data: struct {
3073 *structPtrMarshalJSONOmitEmpty
3074 B coverPtrMarshalJSON `json:"b,omitempty"`
3075 }{
3076 structPtrMarshalJSONOmitEmpty: nil,
3077 B: coverPtrMarshalJSON{},
3078 },
3079 },
3080 {
3081 name: "NilPtrAnonymousHeadPtrMarshalJSONString",
3082 data: struct {
3083 *structPtrMarshalJSONString
3084 B coverPtrMarshalJSON `json:"b,string"`
3085 }{
3086 structPtrMarshalJSONString: nil,
3087 B: coverPtrMarshalJSON{},
3088 },
3089 },
3090
3091
3092 {
3093 name: "AnonymousHeadMarshalJSONPtr",
3094 data: struct {
3095 structMarshalJSONPtr
3096 B *coverMarshalJSON `json:"b"`
3097 }{
3098 structMarshalJSONPtr: structMarshalJSONPtr{A: &coverMarshalJSON{}},
3099 B: nil,
3100 },
3101 },
3102 {
3103 name: "AnonymousHeadMarshalJSONPtrOmitEmpty",
3104 data: struct {
3105 structMarshalJSONPtrOmitEmpty
3106 B *coverMarshalJSON `json:"b,omitempty"`
3107 }{
3108 structMarshalJSONPtrOmitEmpty: structMarshalJSONPtrOmitEmpty{A: &coverMarshalJSON{}},
3109 B: nil,
3110 },
3111 },
3112 {
3113 name: "AnonymousHeadMarshalJSONPtrString",
3114 data: struct {
3115 structMarshalJSONPtrString
3116 B *coverMarshalJSON `json:"b,string"`
3117 }{
3118 structMarshalJSONPtrString: structMarshalJSONPtrString{A: &coverMarshalJSON{}},
3119 B: nil,
3120 },
3121 },
3122 {
3123 name: "AnonymousHeadPtrMarshalJSONPtr",
3124 data: struct {
3125 structPtrMarshalJSONPtr
3126 B *coverPtrMarshalJSON `json:"b"`
3127 }{
3128 structPtrMarshalJSONPtr: structPtrMarshalJSONPtr{A: &coverPtrMarshalJSON{}},
3129 B: nil,
3130 },
3131 },
3132 {
3133 name: "AnonymousHeadPtrMarshalJSONPtrOmitEmpty",
3134 data: struct {
3135 structPtrMarshalJSONPtrOmitEmpty
3136 B *coverPtrMarshalJSON `json:"b,omitempty"`
3137 }{
3138 structPtrMarshalJSONPtrOmitEmpty: structPtrMarshalJSONPtrOmitEmpty{A: &coverPtrMarshalJSON{}},
3139 B: nil,
3140 },
3141 },
3142 {
3143 name: "AnonymousHeadPtrMarshalJSONPtrString",
3144 data: struct {
3145 structPtrMarshalJSONPtrString
3146 B *coverPtrMarshalJSON `json:"b,string"`
3147 }{
3148 structPtrMarshalJSONPtrString: structPtrMarshalJSONPtrString{A: &coverPtrMarshalJSON{}},
3149 B: nil,
3150 },
3151 },
3152
3153
3154 {
3155 name: "AnonymousHeadMarshalJSONPtrNil",
3156 data: struct {
3157 structMarshalJSONPtr
3158 B *coverMarshalJSON `json:"b"`
3159 }{
3160 structMarshalJSONPtr: structMarshalJSONPtr{A: nil},
3161 B: &coverMarshalJSON{},
3162 },
3163 },
3164 {
3165 name: "AnonymousHeadMarshalJSONPtrNilOmitEmpty",
3166 data: struct {
3167 structMarshalJSONPtrOmitEmpty
3168 B *coverMarshalJSON `json:"b,omitempty"`
3169 }{
3170 structMarshalJSONPtrOmitEmpty: structMarshalJSONPtrOmitEmpty{A: nil},
3171 B: &coverMarshalJSON{},
3172 },
3173 },
3174 {
3175 name: "AnonymousHeadMarshalJSONPtrNilString",
3176 data: struct {
3177 structMarshalJSONPtrString
3178 B *coverMarshalJSON `json:"b,string"`
3179 }{
3180 structMarshalJSONPtrString: structMarshalJSONPtrString{A: nil},
3181 B: &coverMarshalJSON{},
3182 },
3183 },
3184 {
3185 name: "AnonymousHeadPtrMarshalJSONPtrNil",
3186 data: struct {
3187 structPtrMarshalJSONPtr
3188 B *coverPtrMarshalJSON `json:"b"`
3189 }{
3190 structPtrMarshalJSONPtr: structPtrMarshalJSONPtr{A: nil},
3191 B: &coverPtrMarshalJSON{},
3192 },
3193 },
3194 {
3195 name: "AnonymousHeadPtrMarshalJSONPtrNilOmitEmpty",
3196 data: struct {
3197 structPtrMarshalJSONPtrOmitEmpty
3198 B *coverPtrMarshalJSON `json:"b,omitempty"`
3199 }{
3200 structPtrMarshalJSONPtrOmitEmpty: structPtrMarshalJSONPtrOmitEmpty{A: nil},
3201 B: &coverPtrMarshalJSON{},
3202 },
3203 },
3204 {
3205 name: "AnonymousHeadPtrMarshalJSONPtrNilString",
3206 data: struct {
3207 structPtrMarshalJSONPtrString
3208 B *coverPtrMarshalJSON `json:"b,string"`
3209 }{
3210 structPtrMarshalJSONPtrString: structPtrMarshalJSONPtrString{A: nil},
3211 B: &coverPtrMarshalJSON{},
3212 },
3213 },
3214
3215
3216 {
3217 name: "PtrAnonymousHeadMarshalJSONPtr",
3218 data: struct {
3219 *structMarshalJSONPtr
3220 B *coverMarshalJSON `json:"b"`
3221 }{
3222 structMarshalJSONPtr: &structMarshalJSONPtr{A: &coverMarshalJSON{}},
3223 B: nil,
3224 },
3225 },
3226 {
3227 name: "PtrAnonymousHeadMarshalJSONPtrOmitEmpty",
3228 data: struct {
3229 *structMarshalJSONPtrOmitEmpty
3230 B *coverMarshalJSON `json:"b,omitempty"`
3231 }{
3232 structMarshalJSONPtrOmitEmpty: &structMarshalJSONPtrOmitEmpty{A: &coverMarshalJSON{}},
3233 B: nil,
3234 },
3235 },
3236 {
3237 name: "PtrAnonymousHeadMarshalJSONPtrString",
3238 data: struct {
3239 *structMarshalJSONPtrString
3240 B *coverMarshalJSON `json:"b,string"`
3241 }{
3242 structMarshalJSONPtrString: &structMarshalJSONPtrString{A: &coverMarshalJSON{}},
3243 B: nil,
3244 },
3245 },
3246 {
3247 name: "PtrAnonymousHeadPtrMarshalJSONPtr",
3248 data: struct {
3249 *structPtrMarshalJSONPtr
3250 B *coverPtrMarshalJSON `json:"b"`
3251 }{
3252 structPtrMarshalJSONPtr: &structPtrMarshalJSONPtr{A: &coverPtrMarshalJSON{}},
3253 B: nil,
3254 },
3255 },
3256 {
3257 name: "PtrAnonymousHeadPtrMarshalJSONPtrOmitEmpty",
3258 data: struct {
3259 *structPtrMarshalJSONPtrOmitEmpty
3260 B *coverPtrMarshalJSON `json:"b,omitempty"`
3261 }{
3262 structPtrMarshalJSONPtrOmitEmpty: &structPtrMarshalJSONPtrOmitEmpty{A: &coverPtrMarshalJSON{}},
3263 B: nil,
3264 },
3265 },
3266 {
3267 name: "PtrAnonymousHeadPtrMarshalJSONPtrString",
3268 data: struct {
3269 *structPtrMarshalJSONPtrString
3270 B *coverPtrMarshalJSON `json:"b,string"`
3271 }{
3272 structPtrMarshalJSONPtrString: &structPtrMarshalJSONPtrString{A: &coverPtrMarshalJSON{}},
3273 B: nil,
3274 },
3275 },
3276
3277
3278 {
3279 name: "NilPtrAnonymousHeadMarshalJSONPtr",
3280 data: struct {
3281 *structMarshalJSONPtr
3282 B *coverMarshalJSON `json:"b"`
3283 }{
3284 structMarshalJSONPtr: nil,
3285 B: &coverMarshalJSON{},
3286 },
3287 },
3288 {
3289 name: "NilPtrAnonymousHeadMarshalJSONPtrOmitEmpty",
3290 data: struct {
3291 *structMarshalJSONPtrOmitEmpty
3292 B *coverMarshalJSON `json:"b,omitempty"`
3293 }{
3294 structMarshalJSONPtrOmitEmpty: nil,
3295 B: &coverMarshalJSON{},
3296 },
3297 },
3298 {
3299 name: "NilPtrAnonymousHeadMarshalJSONPtrString",
3300 data: struct {
3301 *structMarshalJSONPtrString
3302 B *coverMarshalJSON `json:"b,string"`
3303 }{
3304 structMarshalJSONPtrString: nil,
3305 B: &coverMarshalJSON{},
3306 },
3307 },
3308 {
3309 name: "NilPtrAnonymousHeadPtrMarshalJSONPtr",
3310 data: struct {
3311 *structPtrMarshalJSONPtr
3312 B *coverPtrMarshalJSON `json:"b"`
3313 }{
3314 structPtrMarshalJSONPtr: nil,
3315 B: &coverPtrMarshalJSON{},
3316 },
3317 },
3318 {
3319 name: "NilPtrAnonymousHeadPtrMarshalJSONPtrOmitEmpty",
3320 data: struct {
3321 *structPtrMarshalJSONPtrOmitEmpty
3322 B *coverPtrMarshalJSON `json:"b,omitempty"`
3323 }{
3324 structPtrMarshalJSONPtrOmitEmpty: nil,
3325 B: &coverPtrMarshalJSON{},
3326 },
3327 },
3328 {
3329 name: "NilPtrAnonymousHeadPtrMarshalJSONPtrString",
3330 data: struct {
3331 *structPtrMarshalJSONPtrString
3332 B *coverPtrMarshalJSON `json:"b,string"`
3333 }{
3334 structPtrMarshalJSONPtrString: nil,
3335 B: &coverPtrMarshalJSON{},
3336 },
3337 },
3338
3339
3340 {
3341 name: "AnonymousHeadMarshalJSONOnly",
3342 data: struct {
3343 structMarshalJSON
3344 }{
3345 structMarshalJSON: structMarshalJSON{A: coverMarshalJSON{}},
3346 },
3347 },
3348 {
3349 name: "AnonymousHeadMarshalJSONOnlyOmitEmpty",
3350 data: struct {
3351 structMarshalJSONOmitEmpty
3352 }{
3353 structMarshalJSONOmitEmpty: structMarshalJSONOmitEmpty{A: coverMarshalJSON{}},
3354 },
3355 },
3356 {
3357 name: "AnonymousHeadMarshalJSONOnlyString",
3358 data: struct {
3359 structMarshalJSONString
3360 }{
3361 structMarshalJSONString: structMarshalJSONString{A: coverMarshalJSON{}},
3362 },
3363 },
3364 {
3365 name: "AnonymousHeadPtrMarshalJSONOnly",
3366 data: struct {
3367 structPtrMarshalJSON
3368 }{
3369 structPtrMarshalJSON: structPtrMarshalJSON{A: coverPtrMarshalJSON{}},
3370 },
3371 },
3372 {
3373 name: "AnonymousHeadPtrMarshalJSONOnlyOmitEmpty",
3374 data: struct {
3375 structPtrMarshalJSONOmitEmpty
3376 }{
3377 structPtrMarshalJSONOmitEmpty: structPtrMarshalJSONOmitEmpty{A: coverPtrMarshalJSON{}},
3378 },
3379 },
3380 {
3381 name: "AnonymousHeadPtrMarshalJSONOnlyString",
3382 data: struct {
3383 structPtrMarshalJSONString
3384 }{
3385 structPtrMarshalJSONString: structPtrMarshalJSONString{A: coverPtrMarshalJSON{}},
3386 },
3387 },
3388
3389
3390 {
3391 name: "PtrAnonymousHeadMarshalJSONOnly",
3392 data: struct {
3393 *structMarshalJSON
3394 }{
3395 structMarshalJSON: &structMarshalJSON{A: coverMarshalJSON{}},
3396 },
3397 },
3398 {
3399 name: "PtrAnonymousHeadMarshalJSONOnlyOmitEmpty",
3400 data: struct {
3401 *structMarshalJSONOmitEmpty
3402 }{
3403 structMarshalJSONOmitEmpty: &structMarshalJSONOmitEmpty{A: coverMarshalJSON{}},
3404 },
3405 },
3406 {
3407 name: "PtrAnonymousHeadMarshalJSONOnlyString",
3408 data: struct {
3409 *structMarshalJSONString
3410 }{
3411 structMarshalJSONString: &structMarshalJSONString{A: coverMarshalJSON{}},
3412 },
3413 },
3414 {
3415 name: "PtrAnonymousHeadPtrMarshalJSONOnly",
3416 data: struct {
3417 *structPtrMarshalJSON
3418 }{
3419 structPtrMarshalJSON: &structPtrMarshalJSON{A: coverPtrMarshalJSON{}},
3420 },
3421 },
3422 {
3423 name: "PtrAnonymousHeadPtrMarshalJSONOnlyOmitEmpty",
3424 data: struct {
3425 *structPtrMarshalJSONOmitEmpty
3426 }{
3427 structPtrMarshalJSONOmitEmpty: &structPtrMarshalJSONOmitEmpty{A: coverPtrMarshalJSON{}},
3428 },
3429 },
3430 {
3431 name: "PtrAnonymousHeadPtrMarshalJSONOnlyString",
3432 data: struct {
3433 *structPtrMarshalJSONString
3434 }{
3435 structPtrMarshalJSONString: &structPtrMarshalJSONString{A: coverPtrMarshalJSON{}},
3436 },
3437 },
3438
3439
3440 {
3441 name: "NilPtrAnonymousHeadMarshalJSONOnly",
3442 data: struct {
3443 *structMarshalJSON
3444 }{
3445 structMarshalJSON: nil,
3446 },
3447 },
3448 {
3449 name: "NilPtrAnonymousHeadMarshalJSONOnlyOmitEmpty",
3450 data: struct {
3451 *structMarshalJSONOmitEmpty
3452 }{
3453 structMarshalJSONOmitEmpty: nil,
3454 },
3455 },
3456 {
3457 name: "NilPtrAnonymousHeadMarshalJSONOnlyString",
3458 data: struct {
3459 *structMarshalJSONString
3460 }{
3461 structMarshalJSONString: nil,
3462 },
3463 },
3464 {
3465 name: "NilPtrAnonymousHeadPtrMarshalJSONOnly",
3466 data: struct {
3467 *structPtrMarshalJSON
3468 }{
3469 structPtrMarshalJSON: nil,
3470 },
3471 },
3472 {
3473 name: "NilPtrAnonymousHeadPtrMarshalJSONOnlyOmitEmpty",
3474 data: struct {
3475 *structPtrMarshalJSONOmitEmpty
3476 }{
3477 structPtrMarshalJSONOmitEmpty: nil,
3478 },
3479 },
3480 {
3481 name: "NilPtrAnonymousHeadPtrMarshalJSONOnlyString",
3482 data: struct {
3483 *structPtrMarshalJSONString
3484 }{
3485 structPtrMarshalJSONString: nil,
3486 },
3487 },
3488
3489
3490 {
3491 name: "AnonymousHeadMarshalJSONPtrOnly",
3492 data: struct {
3493 structMarshalJSONPtr
3494 }{
3495 structMarshalJSONPtr: structMarshalJSONPtr{A: &coverMarshalJSON{}},
3496 },
3497 },
3498 {
3499 name: "AnonymousHeadMarshalJSONPtrOnlyOmitEmpty",
3500 data: struct {
3501 structMarshalJSONPtrOmitEmpty
3502 }{
3503 structMarshalJSONPtrOmitEmpty: structMarshalJSONPtrOmitEmpty{A: &coverMarshalJSON{}},
3504 },
3505 },
3506 {
3507 name: "AnonymousHeadMarshalJSONPtrOnlyString",
3508 data: struct {
3509 structMarshalJSONPtrString
3510 }{
3511 structMarshalJSONPtrString: structMarshalJSONPtrString{A: &coverMarshalJSON{}},
3512 },
3513 },
3514 {
3515 name: "AnonymousHeadPtrMarshalJSONPtrOnly",
3516 data: struct {
3517 structPtrMarshalJSONPtr
3518 }{
3519 structPtrMarshalJSONPtr: structPtrMarshalJSONPtr{A: &coverPtrMarshalJSON{}},
3520 },
3521 },
3522 {
3523 name: "AnonymousHeadPtrMarshalJSONPtrOnlyOmitEmpty",
3524 data: struct {
3525 structPtrMarshalJSONPtrOmitEmpty
3526 }{
3527 structPtrMarshalJSONPtrOmitEmpty: structPtrMarshalJSONPtrOmitEmpty{A: &coverPtrMarshalJSON{}},
3528 },
3529 },
3530 {
3531 name: "AnonymousHeadPtrMarshalJSONPtrOnlyString",
3532 data: struct {
3533 structPtrMarshalJSONPtrString
3534 }{
3535 structPtrMarshalJSONPtrString: structPtrMarshalJSONPtrString{A: &coverPtrMarshalJSON{}},
3536 },
3537 },
3538
3539
3540 {
3541 name: "AnonymousHeadMarshalJSONPtrNilOnly",
3542 data: struct {
3543 structMarshalJSONPtr
3544 }{
3545 structMarshalJSONPtr: structMarshalJSONPtr{A: nil},
3546 },
3547 },
3548 {
3549 name: "AnonymousHeadMarshalJSONPtrNilOnlyOmitEmpty",
3550 data: struct {
3551 structMarshalJSONPtrOmitEmpty
3552 }{
3553 structMarshalJSONPtrOmitEmpty: structMarshalJSONPtrOmitEmpty{A: nil},
3554 },
3555 },
3556 {
3557 name: "AnonymousHeadMarshalJSONPtrNilOnlyString",
3558 data: struct {
3559 structMarshalJSONPtrString
3560 }{
3561 structMarshalJSONPtrString: structMarshalJSONPtrString{A: nil},
3562 },
3563 },
3564 {
3565 name: "AnonymousHeadPtrMarshalJSONPtrNilOnly",
3566 data: struct {
3567 structPtrMarshalJSONPtr
3568 }{
3569 structPtrMarshalJSONPtr: structPtrMarshalJSONPtr{A: nil},
3570 },
3571 },
3572 {
3573 name: "AnonymousHeadPtrMarshalJSONPtrNilOnlyOmitEmpty",
3574 data: struct {
3575 structPtrMarshalJSONPtrOmitEmpty
3576 }{
3577 structPtrMarshalJSONPtrOmitEmpty: structPtrMarshalJSONPtrOmitEmpty{A: nil},
3578 },
3579 },
3580 {
3581 name: "AnonymousHeadPtrMarshalJSONPtrNilOnlyString",
3582 data: struct {
3583 structPtrMarshalJSONPtrString
3584 }{
3585 structPtrMarshalJSONPtrString: structPtrMarshalJSONPtrString{A: nil},
3586 },
3587 },
3588
3589
3590 {
3591 name: "PtrAnonymousHeadMarshalJSONPtrOnly",
3592 data: struct {
3593 *structMarshalJSONPtr
3594 }{
3595 structMarshalJSONPtr: &structMarshalJSONPtr{A: &coverMarshalJSON{}},
3596 },
3597 },
3598 {
3599 name: "PtrAnonymousHeadMarshalJSONPtrOnlyOmitEmpty",
3600 data: struct {
3601 *structMarshalJSONPtrOmitEmpty
3602 }{
3603 structMarshalJSONPtrOmitEmpty: &structMarshalJSONPtrOmitEmpty{A: &coverMarshalJSON{}},
3604 },
3605 },
3606 {
3607 name: "PtrAnonymousHeadMarshalJSONPtrOnlyString",
3608 data: struct {
3609 *structMarshalJSONPtrString
3610 }{
3611 structMarshalJSONPtrString: &structMarshalJSONPtrString{A: &coverMarshalJSON{}},
3612 },
3613 },
3614 {
3615 name: "PtrAnonymousHeadPtrMarshalJSONPtrOnly",
3616 data: struct {
3617 *structPtrMarshalJSONPtr
3618 }{
3619 structPtrMarshalJSONPtr: &structPtrMarshalJSONPtr{A: &coverPtrMarshalJSON{}},
3620 },
3621 },
3622 {
3623 name: "PtrAnonymousHeadPtrMarshalJSONPtrOnlyOmitEmpty",
3624 data: struct {
3625 *structPtrMarshalJSONPtrOmitEmpty
3626 }{
3627 structPtrMarshalJSONPtrOmitEmpty: &structPtrMarshalJSONPtrOmitEmpty{A: &coverPtrMarshalJSON{}},
3628 },
3629 },
3630 {
3631 name: "PtrAnonymousHeadPtrMarshalJSONPtrOnlyString",
3632 data: struct {
3633 *structPtrMarshalJSONPtrString
3634 }{
3635 structPtrMarshalJSONPtrString: &structPtrMarshalJSONPtrString{A: &coverPtrMarshalJSON{}},
3636 },
3637 },
3638
3639
3640 {
3641 name: "NilPtrAnonymousHeadMarshalJSONPtrOnly",
3642 data: struct {
3643 *structMarshalJSONPtr
3644 }{
3645 structMarshalJSONPtr: nil,
3646 },
3647 },
3648 {
3649 name: "NilPtrAnonymousHeadMarshalJSONPtrOnlyOmitEmpty",
3650 data: struct {
3651 *structMarshalJSONPtrOmitEmpty
3652 }{
3653 structMarshalJSONPtrOmitEmpty: nil,
3654 },
3655 },
3656 {
3657 name: "NilPtrAnonymousHeadMarshalJSONPtrOnlyString",
3658 data: struct {
3659 *structMarshalJSONPtrString
3660 }{
3661 structMarshalJSONPtrString: nil,
3662 },
3663 },
3664 {
3665 name: "NilPtrAnonymousHeadPtrMarshalJSONPtrOnly",
3666 data: struct {
3667 *structPtrMarshalJSONPtr
3668 }{
3669 structPtrMarshalJSONPtr: nil,
3670 },
3671 },
3672 {
3673 name: "NilPtrAnonymousHeadPtrMarshalJSONPtrOnlyOmitEmpty",
3674 data: struct {
3675 *structPtrMarshalJSONPtrOmitEmpty
3676 }{
3677 structPtrMarshalJSONPtrOmitEmpty: nil,
3678 },
3679 },
3680 {
3681 name: "NilPtrAnonymousHeadPtrMarshalJSONPtrOnlyString",
3682 data: struct {
3683 *structPtrMarshalJSONPtrString
3684 }{
3685 structPtrMarshalJSONPtrString: nil,
3686 },
3687 },
3688 }
3689 for _, test := range tests {
3690 t.Run(test.name, func(t *testing.T) {
3691 for _, indent := range []bool{true, false} {
3692 for _, htmlEscape := range []bool{true, false} {
3693 t.Run(fmt.Sprintf("%s_indent_%t_escape_%t", test.name, indent, htmlEscape), func(t *testing.T) {
3694 var buf bytes.Buffer
3695 enc := json.NewEncoder(&buf)
3696 enc.SetEscapeHTML(htmlEscape)
3697 if indent {
3698 enc.SetIndent("", " ")
3699 }
3700 if err := enc.Encode(test.data); err != nil {
3701 t.Fatalf("%s(htmlEscape:%v,indent:%v): %+v: %s", test.name, htmlEscape, indent, test.data, err)
3702 }
3703 stdresult := encodeByEncodingJSON(test.data, indent, htmlEscape)
3704 if buf.String() != stdresult {
3705 t.Errorf("%s(htmlEscape:%v,indent:%v): doesn't compatible with encoding/json. expected %q but got %q", test.name, htmlEscape, indent, stdresult, buf.String())
3706 }
3707 })
3708 }
3709 }
3710 })
3711 }
3712 }
3713
View as plain text