1 package json_test
2
3 import (
4 "bytes"
5 "fmt"
6 "testing"
7
8 "github.com/goccy/go-json"
9 )
10
11 func TestCoverInt16(t *testing.T) {
12 type structInt16 struct {
13 A int16 `json:"a"`
14 }
15 type structInt16OmitEmpty struct {
16 A int16 `json:"a,omitempty"`
17 }
18 type structInt16String struct {
19 A int16 `json:"a,string"`
20 }
21
22 type structInt16Ptr struct {
23 A *int16 `json:"a"`
24 }
25 type structInt16PtrOmitEmpty struct {
26 A *int16 `json:"a,omitempty"`
27 }
28 type structInt16PtrString struct {
29 A *int16 `json:"a,string"`
30 }
31
32 tests := []struct {
33 name string
34 data interface{}
35 }{
36 {
37 name: "Int16",
38 data: int16(10),
39 },
40 {
41 name: "Int16Ptr",
42 data: int16ptr(10),
43 },
44 {
45 name: "Int16Ptr3",
46 data: int16ptr3(10),
47 },
48 {
49 name: "Int16PtrNil",
50 data: (*int16)(nil),
51 },
52 {
53 name: "Int16Ptr3Nil",
54 data: (***int16)(nil),
55 },
56
57
58 {
59 name: "HeadInt16Zero",
60 data: struct {
61 A int16 `json:"a"`
62 }{},
63 },
64 {
65 name: "HeadInt16ZeroOmitEmpty",
66 data: struct {
67 A int16 `json:"a,omitempty"`
68 }{},
69 },
70 {
71 name: "HeadInt16ZeroString",
72 data: struct {
73 A int16 `json:"a,string"`
74 }{},
75 },
76
77
78 {
79 name: "HeadInt16",
80 data: struct {
81 A int16 `json:"a"`
82 }{A: 1},
83 },
84 {
85 name: "HeadInt16OmitEmpty",
86 data: struct {
87 A int16 `json:"a,omitempty"`
88 }{A: 1},
89 },
90 {
91 name: "HeadInt16String",
92 data: struct {
93 A int16 `json:"a,string"`
94 }{A: 1},
95 },
96
97
98 {
99 name: "HeadInt16Ptr",
100 data: struct {
101 A *int16 `json:"a"`
102 }{A: int16ptr(1)},
103 },
104 {
105 name: "HeadInt16PtrOmitEmpty",
106 data: struct {
107 A *int16 `json:"a,omitempty"`
108 }{A: int16ptr(1)},
109 },
110 {
111 name: "HeadInt16PtrString",
112 data: struct {
113 A *int16 `json:"a,string"`
114 }{A: int16ptr(1)},
115 },
116
117
118 {
119 name: "HeadInt16PtrNil",
120 data: struct {
121 A *int16 `json:"a"`
122 }{A: nil},
123 },
124 {
125 name: "HeadInt16PtrNilOmitEmpty",
126 data: struct {
127 A *int16 `json:"a,omitempty"`
128 }{A: nil},
129 },
130 {
131 name: "HeadInt16PtrNilString",
132 data: struct {
133 A *int16 `json:"a,string"`
134 }{A: nil},
135 },
136
137
138 {
139 name: "PtrHeadInt16Zero",
140 data: &struct {
141 A int16 `json:"a"`
142 }{},
143 },
144 {
145 name: "PtrHeadInt16ZeroOmitEmpty",
146 data: &struct {
147 A int16 `json:"a,omitempty"`
148 }{},
149 },
150 {
151 name: "PtrHeadInt16ZeroString",
152 data: &struct {
153 A int16 `json:"a,string"`
154 }{},
155 },
156
157
158 {
159 name: "PtrHeadInt16",
160 data: &struct {
161 A int16 `json:"a"`
162 }{A: 1},
163 },
164 {
165 name: "PtrHeadInt16OmitEmpty",
166 data: &struct {
167 A int16 `json:"a,omitempty"`
168 }{A: 1},
169 },
170 {
171 name: "PtrHeadInt16String",
172 data: &struct {
173 A int16 `json:"a,string"`
174 }{A: 1},
175 },
176
177
178 {
179 name: "PtrHeadInt16Ptr",
180 data: &struct {
181 A *int16 `json:"a"`
182 }{A: int16ptr(1)},
183 },
184 {
185 name: "PtrHeadInt16PtrOmitEmpty",
186 data: &struct {
187 A *int16 `json:"a,omitempty"`
188 }{A: int16ptr(1)},
189 },
190 {
191 name: "PtrHeadInt16PtrString",
192 data: &struct {
193 A *int16 `json:"a,string"`
194 }{A: int16ptr(1)},
195 },
196
197
198 {
199 name: "PtrHeadInt16PtrNil",
200 data: &struct {
201 A *int16 `json:"a"`
202 }{A: nil},
203 },
204 {
205 name: "PtrHeadInt16PtrNilOmitEmpty",
206 data: &struct {
207 A *int16 `json:"a,omitempty"`
208 }{A: nil},
209 },
210 {
211 name: "PtrHeadInt16PtrNilString",
212 data: &struct {
213 A *int16 `json:"a,string"`
214 }{A: nil},
215 },
216
217
218 {
219 name: "PtrHeadInt16Nil",
220 data: (*struct {
221 A *int16 `json:"a"`
222 })(nil),
223 },
224 {
225 name: "PtrHeadInt16NilOmitEmpty",
226 data: (*struct {
227 A *int16 `json:"a,omitempty"`
228 })(nil),
229 },
230 {
231 name: "PtrHeadInt16NilString",
232 data: (*struct {
233 A *int16 `json:"a,string"`
234 })(nil),
235 },
236
237
238 {
239 name: "HeadInt16ZeroMultiFields",
240 data: struct {
241 A int16 `json:"a"`
242 B int16 `json:"b"`
243 C int16 `json:"c"`
244 }{},
245 },
246 {
247 name: "HeadInt16ZeroMultiFieldsOmitEmpty",
248 data: struct {
249 A int16 `json:"a,omitempty"`
250 B int16 `json:"b,omitempty"`
251 C int16 `json:"c,omitempty"`
252 }{},
253 },
254 {
255 name: "HeadInt16ZeroMultiFields",
256 data: struct {
257 A int16 `json:"a,string"`
258 B int16 `json:"b,string"`
259 C int16 `json:"c,string"`
260 }{},
261 },
262
263
264 {
265 name: "HeadInt16MultiFields",
266 data: struct {
267 A int16 `json:"a"`
268 B int16 `json:"b"`
269 C int16 `json:"c"`
270 }{A: 1, B: -2, C: 3},
271 },
272 {
273 name: "HeadInt16MultiFieldsOmitEmpty",
274 data: struct {
275 A int16 `json:"a,omitempty"`
276 B int16 `json:"b,omitempty"`
277 C int16 `json:"c,omitempty"`
278 }{A: 1, B: -2, C: 3},
279 },
280 {
281 name: "HeadInt16MultiFieldsString",
282 data: struct {
283 A int16 `json:"a,string"`
284 B int16 `json:"b,string"`
285 C int16 `json:"c,string"`
286 }{A: 1, B: -2, C: 3},
287 },
288
289
290 {
291 name: "HeadInt16PtrMultiFields",
292 data: struct {
293 A *int16 `json:"a"`
294 B *int16 `json:"b"`
295 C *int16 `json:"c"`
296 }{A: int16ptr(1), B: int16ptr(-2), C: int16ptr(3)},
297 },
298 {
299 name: "HeadInt16PtrMultiFieldsOmitEmpty",
300 data: struct {
301 A *int16 `json:"a,omitempty"`
302 B *int16 `json:"b,omitempty"`
303 C *int16 `json:"c,omitempty"`
304 }{A: int16ptr(1), B: int16ptr(-2), C: int16ptr(3)},
305 },
306 {
307 name: "HeadInt16PtrMultiFieldsString",
308 data: struct {
309 A *int16 `json:"a,string"`
310 B *int16 `json:"b,string"`
311 C *int16 `json:"c,string"`
312 }{A: int16ptr(1), B: int16ptr(-2), C: int16ptr(3)},
313 },
314
315
316 {
317 name: "HeadInt16PtrNilMultiFields",
318 data: struct {
319 A *int16 `json:"a"`
320 B *int16 `json:"b"`
321 C *int16 `json:"c"`
322 }{A: nil, B: nil, C: nil},
323 },
324 {
325 name: "HeadInt16PtrNilMultiFieldsOmitEmpty",
326 data: struct {
327 A *int16 `json:"a,omitempty"`
328 B *int16 `json:"b,omitempty"`
329 C *int16 `json:"c,omitempty"`
330 }{A: nil, B: nil, C: nil},
331 },
332 {
333 name: "HeadInt16PtrNilMultiFieldsString",
334 data: struct {
335 A *int16 `json:"a,string"`
336 B *int16 `json:"b,string"`
337 C *int16 `json:"c,string"`
338 }{A: nil, B: nil, C: nil},
339 },
340
341
342 {
343 name: "PtrHeadInt16ZeroMultiFields",
344 data: &struct {
345 A int16 `json:"a"`
346 B int16 `json:"b"`
347 }{},
348 },
349 {
350 name: "PtrHeadInt16ZeroMultiFieldsOmitEmpty",
351 data: &struct {
352 A int16 `json:"a,omitempty"`
353 B int16 `json:"b,omitempty"`
354 }{},
355 },
356 {
357 name: "PtrHeadInt16ZeroMultiFieldsString",
358 data: &struct {
359 A int16 `json:"a,string"`
360 B int16 `json:"b,string"`
361 }{},
362 },
363
364
365 {
366 name: "PtrHeadInt16MultiFields",
367 data: &struct {
368 A int16 `json:"a"`
369 B int16 `json:"b"`
370 }{A: 1, B: -2},
371 },
372 {
373 name: "PtrHeadInt16MultiFieldsOmitEmpty",
374 data: &struct {
375 A int16 `json:"a,omitempty"`
376 B int16 `json:"b,omitempty"`
377 }{A: 1, B: -2},
378 },
379 {
380 name: "PtrHeadInt16MultiFieldsString",
381 data: &struct {
382 A int16 `json:"a,string"`
383 B int16 `json:"b,string"`
384 }{A: 1, B: -2},
385 },
386
387
388 {
389 name: "PtrHeadInt16PtrMultiFields",
390 data: &struct {
391 A *int16 `json:"a"`
392 B *int16 `json:"b"`
393 }{A: int16ptr(1), B: int16ptr(-2)},
394 },
395 {
396 name: "PtrHeadInt16PtrMultiFieldsOmitEmpty",
397 data: &struct {
398 A *int16 `json:"a,omitempty"`
399 B *int16 `json:"b,omitempty"`
400 }{A: int16ptr(1), B: int16ptr(-2)},
401 },
402 {
403 name: "PtrHeadInt16PtrMultiFieldsString",
404 data: &struct {
405 A *int16 `json:"a,string"`
406 B *int16 `json:"b,string"`
407 }{A: int16ptr(1), B: int16ptr(-2)},
408 },
409
410
411 {
412 name: "PtrHeadInt16PtrNilMultiFields",
413 data: &struct {
414 A *int16 `json:"a"`
415 B *int16 `json:"b"`
416 }{A: nil, B: nil},
417 },
418 {
419 name: "PtrHeadInt16PtrNilMultiFieldsOmitEmpty",
420 data: &struct {
421 A *int16 `json:"a,omitempty"`
422 B *int16 `json:"b,omitempty"`
423 }{A: nil, B: nil},
424 },
425 {
426 name: "PtrHeadInt16PtrNilMultiFieldsString",
427 data: &struct {
428 A *int16 `json:"a,string"`
429 B *int16 `json:"b,string"`
430 }{A: nil, B: nil},
431 },
432
433
434 {
435 name: "PtrHeadInt16NilMultiFields",
436 data: (*struct {
437 A int16 `json:"a"`
438 B int16 `json:"b"`
439 })(nil),
440 },
441 {
442 name: "PtrHeadInt16NilMultiFieldsOmitEmpty",
443 data: (*struct {
444 A int16 `json:"a,omitempty"`
445 B int16 `json:"b,omitempty"`
446 })(nil),
447 },
448 {
449 name: "PtrHeadInt16NilMultiFieldsString",
450 data: (*struct {
451 A int16 `json:"a,string"`
452 B int16 `json:"b,string"`
453 })(nil),
454 },
455
456
457 {
458 name: "PtrHeadInt16NilMultiFields",
459 data: (*struct {
460 A *int16 `json:"a"`
461 B *int16 `json:"b"`
462 })(nil),
463 },
464 {
465 name: "PtrHeadInt16NilMultiFieldsOmitEmpty",
466 data: (*struct {
467 A *int16 `json:"a,omitempty"`
468 B *int16 `json:"b,omitempty"`
469 })(nil),
470 },
471 {
472 name: "PtrHeadInt16NilMultiFieldsString",
473 data: (*struct {
474 A *int16 `json:"a,string"`
475 B *int16 `json:"b,string"`
476 })(nil),
477 },
478
479
480 {
481 name: "HeadInt16ZeroNotRoot",
482 data: struct {
483 A struct {
484 A int16 `json:"a"`
485 }
486 }{},
487 },
488 {
489 name: "HeadInt16ZeroNotRootOmitEmpty",
490 data: struct {
491 A struct {
492 A int16 `json:"a,omitempty"`
493 }
494 }{},
495 },
496 {
497 name: "HeadInt16ZeroNotRootString",
498 data: struct {
499 A struct {
500 A int16 `json:"a,string"`
501 }
502 }{},
503 },
504
505
506 {
507 name: "HeadInt16NotRoot",
508 data: struct {
509 A struct {
510 A int16 `json:"a"`
511 }
512 }{A: struct {
513 A int16 `json:"a"`
514 }{A: 1}},
515 },
516 {
517 name: "HeadInt16NotRootOmitEmpty",
518 data: struct {
519 A struct {
520 A int16 `json:"a,omitempty"`
521 }
522 }{A: struct {
523 A int16 `json:"a,omitempty"`
524 }{A: 1}},
525 },
526 {
527 name: "HeadInt16NotRootString",
528 data: struct {
529 A struct {
530 A int16 `json:"a,string"`
531 }
532 }{A: struct {
533 A int16 `json:"a,string"`
534 }{A: 1}},
535 },
536
537
538 {
539 name: "HeadInt16PtrNotRoot",
540 data: struct {
541 A struct {
542 A *int16 `json:"a"`
543 }
544 }{A: struct {
545 A *int16 `json:"a"`
546 }{int16ptr(1)}},
547 },
548 {
549 name: "HeadInt16PtrNotRootOmitEmpty",
550 data: struct {
551 A struct {
552 A *int16 `json:"a,omitempty"`
553 }
554 }{A: struct {
555 A *int16 `json:"a,omitempty"`
556 }{int16ptr(1)}},
557 },
558 {
559 name: "HeadInt16PtrNotRootString",
560 data: struct {
561 A struct {
562 A *int16 `json:"a,string"`
563 }
564 }{A: struct {
565 A *int16 `json:"a,string"`
566 }{int16ptr(1)}},
567 },
568
569
570 {
571 name: "HeadInt16PtrNilNotRoot",
572 data: struct {
573 A struct {
574 A *int16 `json:"a"`
575 }
576 }{},
577 },
578 {
579 name: "HeadInt16PtrNilNotRootOmitEmpty",
580 data: struct {
581 A struct {
582 A *int16 `json:"a,omitempty"`
583 }
584 }{},
585 },
586 {
587 name: "HeadInt16PtrNilNotRootString",
588 data: struct {
589 A struct {
590 A *int16 `json:"a,string"`
591 }
592 }{},
593 },
594
595
596 {
597 name: "PtrHeadInt16ZeroNotRoot",
598 data: struct {
599 A *struct {
600 A int16 `json:"a"`
601 }
602 }{A: new(struct {
603 A int16 `json:"a"`
604 })},
605 },
606 {
607 name: "PtrHeadInt16ZeroNotRootOmitEmpty",
608 data: struct {
609 A *struct {
610 A int16 `json:"a,omitempty"`
611 }
612 }{A: new(struct {
613 A int16 `json:"a,omitempty"`
614 })},
615 },
616 {
617 name: "PtrHeadInt16ZeroNotRootString",
618 data: struct {
619 A *struct {
620 A int16 `json:"a,string"`
621 }
622 }{A: new(struct {
623 A int16 `json:"a,string"`
624 })},
625 },
626
627
628 {
629 name: "PtrHeadInt16NotRoot",
630 data: struct {
631 A *struct {
632 A int16 `json:"a"`
633 }
634 }{A: &(struct {
635 A int16 `json:"a"`
636 }{A: 1})},
637 },
638 {
639 name: "PtrHeadInt16NotRootOmitEmpty",
640 data: struct {
641 A *struct {
642 A int16 `json:"a,omitempty"`
643 }
644 }{A: &(struct {
645 A int16 `json:"a,omitempty"`
646 }{A: 1})},
647 },
648 {
649 name: "PtrHeadInt16NotRootString",
650 data: struct {
651 A *struct {
652 A int16 `json:"a,string"`
653 }
654 }{A: &(struct {
655 A int16 `json:"a,string"`
656 }{A: 1})},
657 },
658
659
660 {
661 name: "PtrHeadInt16PtrNotRoot",
662 data: struct {
663 A *struct {
664 A *int16 `json:"a"`
665 }
666 }{A: &(struct {
667 A *int16 `json:"a"`
668 }{A: int16ptr(1)})},
669 },
670 {
671 name: "PtrHeadInt16PtrNotRootOmitEmpty",
672 data: struct {
673 A *struct {
674 A *int16 `json:"a,omitempty"`
675 }
676 }{A: &(struct {
677 A *int16 `json:"a,omitempty"`
678 }{A: int16ptr(1)})},
679 },
680 {
681 name: "PtrHeadInt16PtrNotRootString",
682 data: struct {
683 A *struct {
684 A *int16 `json:"a,string"`
685 }
686 }{A: &(struct {
687 A *int16 `json:"a,string"`
688 }{A: int16ptr(1)})},
689 },
690
691
692 {
693 name: "PtrHeadInt16PtrNilNotRoot",
694 data: struct {
695 A *struct {
696 A *int16 `json:"a"`
697 }
698 }{A: &(struct {
699 A *int16 `json:"a"`
700 }{A: nil})},
701 },
702 {
703 name: "PtrHeadInt16PtrNilNotRootOmitEmpty",
704 data: struct {
705 A *struct {
706 A *int16 `json:"a,omitempty"`
707 }
708 }{A: &(struct {
709 A *int16 `json:"a,omitempty"`
710 }{A: nil})},
711 },
712 {
713 name: "PtrHeadInt16PtrNilNotRootString",
714 data: struct {
715 A *struct {
716 A *int16 `json:"a,string"`
717 }
718 }{A: &(struct {
719 A *int16 `json:"a,string"`
720 }{A: nil})},
721 },
722
723
724 {
725 name: "PtrHeadInt16NilNotRoot",
726 data: struct {
727 A *struct {
728 A *int16 `json:"a"`
729 }
730 }{A: nil},
731 },
732 {
733 name: "PtrHeadInt16NilNotRootOmitEmpty",
734 data: struct {
735 A *struct {
736 A *int16 `json:"a,omitempty"`
737 } `json:",omitempty"`
738 }{A: nil},
739 },
740 {
741 name: "PtrHeadInt16NilNotRootString",
742 data: struct {
743 A *struct {
744 A *int16 `json:"a,string"`
745 } `json:",string"`
746 }{A: nil},
747 },
748
749
750 {
751 name: "HeadInt16ZeroMultiFieldsNotRoot",
752 data: struct {
753 A struct {
754 A int16 `json:"a"`
755 }
756 B struct {
757 B int16 `json:"b"`
758 }
759 }{},
760 },
761 {
762 name: "HeadInt16ZeroMultiFieldsNotRootOmitEmpty",
763 data: struct {
764 A struct {
765 A int16 `json:"a,omitempty"`
766 }
767 B struct {
768 B int16 `json:"b,omitempty"`
769 }
770 }{},
771 },
772 {
773 name: "HeadInt16ZeroMultiFieldsNotRootString",
774 data: struct {
775 A struct {
776 A int16 `json:"a,string"`
777 }
778 B struct {
779 B int16 `json:"b,string"`
780 }
781 }{},
782 },
783
784
785 {
786 name: "HeadInt16MultiFieldsNotRoot",
787 data: struct {
788 A struct {
789 A int16 `json:"a"`
790 }
791 B struct {
792 B int16 `json:"b"`
793 }
794 }{A: struct {
795 A int16 `json:"a"`
796 }{A: 1}, B: struct {
797 B int16 `json:"b"`
798 }{B: -2}},
799 },
800 {
801 name: "HeadInt16MultiFieldsNotRootOmitEmpty",
802 data: struct {
803 A struct {
804 A int16 `json:"a,omitempty"`
805 }
806 B struct {
807 B int16 `json:"b,omitempty"`
808 }
809 }{A: struct {
810 A int16 `json:"a,omitempty"`
811 }{A: 1}, B: struct {
812 B int16 `json:"b,omitempty"`
813 }{B: -2}},
814 },
815 {
816 name: "HeadInt16MultiFieldsNotRootString",
817 data: struct {
818 A struct {
819 A int16 `json:"a,string"`
820 }
821 B struct {
822 B int16 `json:"b,string"`
823 }
824 }{A: struct {
825 A int16 `json:"a,string"`
826 }{A: 1}, B: struct {
827 B int16 `json:"b,string"`
828 }{B: -2}},
829 },
830
831
832 {
833 name: "HeadInt16PtrMultiFieldsNotRoot",
834 data: struct {
835 A struct {
836 A *int16 `json:"a"`
837 }
838 B struct {
839 B *int16 `json:"b"`
840 }
841 }{A: struct {
842 A *int16 `json:"a"`
843 }{A: int16ptr(1)}, B: struct {
844 B *int16 `json:"b"`
845 }{B: int16ptr(-2)}},
846 },
847 {
848 name: "HeadInt16PtrMultiFieldsNotRootOmitEmpty",
849 data: struct {
850 A struct {
851 A *int16 `json:"a,omitempty"`
852 }
853 B struct {
854 B *int16 `json:"b,omitempty"`
855 }
856 }{A: struct {
857 A *int16 `json:"a,omitempty"`
858 }{A: int16ptr(1)}, B: struct {
859 B *int16 `json:"b,omitempty"`
860 }{B: int16ptr(-2)}},
861 },
862 {
863 name: "HeadInt16PtrMultiFieldsNotRootString",
864 data: struct {
865 A struct {
866 A *int16 `json:"a,string"`
867 }
868 B struct {
869 B *int16 `json:"b,string"`
870 }
871 }{A: struct {
872 A *int16 `json:"a,string"`
873 }{A: int16ptr(1)}, B: struct {
874 B *int16 `json:"b,string"`
875 }{B: int16ptr(-2)}},
876 },
877
878
879 {
880 name: "HeadInt16PtrNilMultiFieldsNotRoot",
881 data: struct {
882 A struct {
883 A *int16 `json:"a"`
884 }
885 B struct {
886 B *int16 `json:"b"`
887 }
888 }{A: struct {
889 A *int16 `json:"a"`
890 }{A: nil}, B: struct {
891 B *int16 `json:"b"`
892 }{B: nil}},
893 },
894 {
895 name: "HeadInt16PtrNilMultiFieldsNotRootOmitEmpty",
896 data: struct {
897 A struct {
898 A *int16 `json:"a,omitempty"`
899 }
900 B struct {
901 B *int16 `json:"b,omitempty"`
902 }
903 }{A: struct {
904 A *int16 `json:"a,omitempty"`
905 }{A: nil}, B: struct {
906 B *int16 `json:"b,omitempty"`
907 }{B: nil}},
908 },
909 {
910 name: "HeadInt16PtrNilMultiFieldsNotRootString",
911 data: struct {
912 A struct {
913 A *int16 `json:"a,string"`
914 }
915 B struct {
916 B *int16 `json:"b,string"`
917 }
918 }{A: struct {
919 A *int16 `json:"a,string"`
920 }{A: nil}, B: struct {
921 B *int16 `json:"b,string"`
922 }{B: nil}},
923 },
924
925
926 {
927 name: "PtrHeadInt16ZeroMultiFieldsNotRoot",
928 data: &struct {
929 A struct {
930 A int16 `json:"a"`
931 }
932 B struct {
933 B int16 `json:"b"`
934 }
935 }{},
936 },
937 {
938 name: "PtrHeadInt16ZeroMultiFieldsNotRootOmitEmpty",
939 data: &struct {
940 A struct {
941 A int16 `json:"a,omitempty"`
942 }
943 B struct {
944 B int16 `json:"b,omitempty"`
945 }
946 }{},
947 },
948 {
949 name: "PtrHeadInt16ZeroMultiFieldsNotRootString",
950 data: &struct {
951 A struct {
952 A int16 `json:"a,string"`
953 }
954 B struct {
955 B int16 `json:"b,string"`
956 }
957 }{},
958 },
959
960
961 {
962 name: "PtrHeadInt16MultiFieldsNotRoot",
963 data: &struct {
964 A struct {
965 A int16 `json:"a"`
966 }
967 B struct {
968 B int16 `json:"b"`
969 }
970 }{A: struct {
971 A int16 `json:"a"`
972 }{A: 1}, B: struct {
973 B int16 `json:"b"`
974 }{B: -2}},
975 },
976 {
977 name: "PtrHeadInt16MultiFieldsNotRootOmitEmpty",
978 data: &struct {
979 A struct {
980 A int16 `json:"a,omitempty"`
981 }
982 B struct {
983 B int16 `json:"b,omitempty"`
984 }
985 }{A: struct {
986 A int16 `json:"a,omitempty"`
987 }{A: 1}, B: struct {
988 B int16 `json:"b,omitempty"`
989 }{B: -2}},
990 },
991 {
992 name: "PtrHeadInt16MultiFieldsNotRootString",
993 data: &struct {
994 A struct {
995 A int16 `json:"a,string"`
996 }
997 B struct {
998 B int16 `json:"b,string"`
999 }
1000 }{A: struct {
1001 A int16 `json:"a,string"`
1002 }{A: 1}, B: struct {
1003 B int16 `json:"b,string"`
1004 }{B: -2}},
1005 },
1006
1007
1008 {
1009 name: "PtrHeadInt16PtrMultiFieldsNotRoot",
1010 data: &struct {
1011 A *struct {
1012 A *int16 `json:"a"`
1013 }
1014 B *struct {
1015 B *int16 `json:"b"`
1016 }
1017 }{A: &(struct {
1018 A *int16 `json:"a"`
1019 }{A: int16ptr(1)}), B: &(struct {
1020 B *int16 `json:"b"`
1021 }{B: int16ptr(-2)})},
1022 },
1023 {
1024 name: "PtrHeadInt16PtrMultiFieldsNotRootOmitEmpty",
1025 data: &struct {
1026 A *struct {
1027 A *int16 `json:"a,omitempty"`
1028 }
1029 B *struct {
1030 B *int16 `json:"b,omitempty"`
1031 }
1032 }{A: &(struct {
1033 A *int16 `json:"a,omitempty"`
1034 }{A: int16ptr(1)}), B: &(struct {
1035 B *int16 `json:"b,omitempty"`
1036 }{B: int16ptr(-2)})},
1037 },
1038 {
1039 name: "PtrHeadInt16PtrMultiFieldsNotRootString",
1040 data: &struct {
1041 A *struct {
1042 A *int16 `json:"a,string"`
1043 }
1044 B *struct {
1045 B *int16 `json:"b,string"`
1046 }
1047 }{A: &(struct {
1048 A *int16 `json:"a,string"`
1049 }{A: int16ptr(1)}), B: &(struct {
1050 B *int16 `json:"b,string"`
1051 }{B: int16ptr(-2)})},
1052 },
1053
1054
1055 {
1056 name: "PtrHeadInt16PtrNilMultiFieldsNotRoot",
1057 data: &struct {
1058 A *struct {
1059 A *int16 `json:"a"`
1060 }
1061 B *struct {
1062 B *int16 `json:"b"`
1063 }
1064 }{A: nil, B: nil},
1065 },
1066 {
1067 name: "PtrHeadInt16PtrNilMultiFieldsNotRootOmitEmpty",
1068 data: &struct {
1069 A *struct {
1070 A *int16 `json:"a,omitempty"`
1071 } `json:",omitempty"`
1072 B *struct {
1073 B *int16 `json:"b,omitempty"`
1074 } `json:",omitempty"`
1075 }{A: nil, B: nil},
1076 },
1077 {
1078 name: "PtrHeadInt16PtrNilMultiFieldsNotRootString",
1079 data: &struct {
1080 A *struct {
1081 A *int16 `json:"a,string"`
1082 } `json:",string"`
1083 B *struct {
1084 B *int16 `json:"b,string"`
1085 } `json:",string"`
1086 }{A: nil, B: nil},
1087 },
1088
1089
1090 {
1091 name: "PtrHeadInt16NilMultiFieldsNotRoot",
1092 data: (*struct {
1093 A *struct {
1094 A *int16 `json:"a"`
1095 }
1096 B *struct {
1097 B *int16 `json:"b"`
1098 }
1099 })(nil),
1100 },
1101 {
1102 name: "PtrHeadInt16NilMultiFieldsNotRootOmitEmpty",
1103 data: (*struct {
1104 A *struct {
1105 A *int16 `json:"a,omitempty"`
1106 }
1107 B *struct {
1108 B *int16 `json:"b,omitempty"`
1109 }
1110 })(nil),
1111 },
1112 {
1113 name: "PtrHeadInt16NilMultiFieldsNotRootString",
1114 data: (*struct {
1115 A *struct {
1116 A *int16 `json:"a,string"`
1117 }
1118 B *struct {
1119 B *int16 `json:"b,string"`
1120 }
1121 })(nil),
1122 },
1123
1124
1125 {
1126 name: "PtrHeadInt16DoubleMultiFieldsNotRoot",
1127 data: &struct {
1128 A *struct {
1129 A int16 `json:"a"`
1130 B int16 `json:"b"`
1131 }
1132 B *struct {
1133 A int16 `json:"a"`
1134 B int16 `json:"b"`
1135 }
1136 }{A: &(struct {
1137 A int16 `json:"a"`
1138 B int16 `json:"b"`
1139 }{A: 1, B: -2}), B: &(struct {
1140 A int16 `json:"a"`
1141 B int16 `json:"b"`
1142 }{A: 3, B: 4})},
1143 },
1144 {
1145 name: "PtrHeadInt16DoubleMultiFieldsNotRootOmitEmpty",
1146 data: &struct {
1147 A *struct {
1148 A int16 `json:"a,omitempty"`
1149 B int16 `json:"b,omitempty"`
1150 }
1151 B *struct {
1152 A int16 `json:"a,omitempty"`
1153 B int16 `json:"b,omitempty"`
1154 }
1155 }{A: &(struct {
1156 A int16 `json:"a,omitempty"`
1157 B int16 `json:"b,omitempty"`
1158 }{A: 1, B: -2}), B: &(struct {
1159 A int16 `json:"a,omitempty"`
1160 B int16 `json:"b,omitempty"`
1161 }{A: 3, B: 4})},
1162 },
1163 {
1164 name: "PtrHeadInt16DoubleMultiFieldsNotRootString",
1165 data: &struct {
1166 A *struct {
1167 A int16 `json:"a,string"`
1168 B int16 `json:"b,string"`
1169 }
1170 B *struct {
1171 A int16 `json:"a,string"`
1172 B int16 `json:"b,string"`
1173 }
1174 }{A: &(struct {
1175 A int16 `json:"a,string"`
1176 B int16 `json:"b,string"`
1177 }{A: 1, B: -2}), B: &(struct {
1178 A int16 `json:"a,string"`
1179 B int16 `json:"b,string"`
1180 }{A: 3, B: 4})},
1181 },
1182
1183
1184 {
1185 name: "PtrHeadInt16NilDoubleMultiFieldsNotRoot",
1186 data: &struct {
1187 A *struct {
1188 A int16 `json:"a"`
1189 B int16 `json:"b"`
1190 }
1191 B *struct {
1192 A int16 `json:"a"`
1193 B int16 `json:"b"`
1194 }
1195 }{A: nil, B: nil},
1196 },
1197 {
1198 name: "PtrHeadInt16NilDoubleMultiFieldsNotRootOmitEmpty",
1199 data: &struct {
1200 A *struct {
1201 A int16 `json:"a,omitempty"`
1202 B int16 `json:"b,omitempty"`
1203 } `json:",omitempty"`
1204 B *struct {
1205 A int16 `json:"a,omitempty"`
1206 B int16 `json:"b,omitempty"`
1207 } `json:",omitempty"`
1208 }{A: nil, B: nil},
1209 },
1210 {
1211 name: "PtrHeadInt16NilDoubleMultiFieldsNotRootString",
1212 data: &struct {
1213 A *struct {
1214 A int16 `json:"a,string"`
1215 B int16 `json:"b,string"`
1216 }
1217 B *struct {
1218 A int16 `json:"a,string"`
1219 B int16 `json:"b,string"`
1220 }
1221 }{A: nil, B: nil},
1222 },
1223
1224
1225 {
1226 name: "PtrHeadInt16NilDoubleMultiFieldsNotRoot",
1227 data: (*struct {
1228 A *struct {
1229 A int16 `json:"a"`
1230 B int16 `json:"b"`
1231 }
1232 B *struct {
1233 A int16 `json:"a"`
1234 B int16 `json:"b"`
1235 }
1236 })(nil),
1237 },
1238 {
1239 name: "PtrHeadInt16NilDoubleMultiFieldsNotRootOmitEmpty",
1240 data: (*struct {
1241 A *struct {
1242 A int16 `json:"a,omitempty"`
1243 B int16 `json:"b,omitempty"`
1244 }
1245 B *struct {
1246 A int16 `json:"a,omitempty"`
1247 B int16 `json:"b,omitempty"`
1248 }
1249 })(nil),
1250 },
1251 {
1252 name: "PtrHeadInt16NilDoubleMultiFieldsNotRootString",
1253 data: (*struct {
1254 A *struct {
1255 A int16 `json:"a,string"`
1256 B int16 `json:"b,string"`
1257 }
1258 B *struct {
1259 A int16 `json:"a,string"`
1260 B int16 `json:"b,string"`
1261 }
1262 })(nil),
1263 },
1264
1265
1266 {
1267 name: "PtrHeadInt16PtrDoubleMultiFieldsNotRoot",
1268 data: &struct {
1269 A *struct {
1270 A *int16 `json:"a"`
1271 B *int16 `json:"b"`
1272 }
1273 B *struct {
1274 A *int16 `json:"a"`
1275 B *int16 `json:"b"`
1276 }
1277 }{A: &(struct {
1278 A *int16 `json:"a"`
1279 B *int16 `json:"b"`
1280 }{A: int16ptr(1), B: int16ptr(-2)}), B: &(struct {
1281 A *int16 `json:"a"`
1282 B *int16 `json:"b"`
1283 }{A: int16ptr(3), B: int16ptr(4)})},
1284 },
1285 {
1286 name: "PtrHeadInt16PtrDoubleMultiFieldsNotRootOmitEmpty",
1287 data: &struct {
1288 A *struct {
1289 A *int16 `json:"a,omitempty"`
1290 B *int16 `json:"b,omitempty"`
1291 }
1292 B *struct {
1293 A *int16 `json:"a,omitempty"`
1294 B *int16 `json:"b,omitempty"`
1295 }
1296 }{A: &(struct {
1297 A *int16 `json:"a,omitempty"`
1298 B *int16 `json:"b,omitempty"`
1299 }{A: int16ptr(1), B: int16ptr(-2)}), B: &(struct {
1300 A *int16 `json:"a,omitempty"`
1301 B *int16 `json:"b,omitempty"`
1302 }{A: int16ptr(3), B: int16ptr(4)})},
1303 },
1304 {
1305 name: "PtrHeadInt16PtrDoubleMultiFieldsNotRootString",
1306 data: &struct {
1307 A *struct {
1308 A *int16 `json:"a,string"`
1309 B *int16 `json:"b,string"`
1310 }
1311 B *struct {
1312 A *int16 `json:"a,string"`
1313 B *int16 `json:"b,string"`
1314 }
1315 }{A: &(struct {
1316 A *int16 `json:"a,string"`
1317 B *int16 `json:"b,string"`
1318 }{A: int16ptr(1), B: int16ptr(-2)}), B: &(struct {
1319 A *int16 `json:"a,string"`
1320 B *int16 `json:"b,string"`
1321 }{A: int16ptr(3), B: int16ptr(4)})},
1322 },
1323
1324
1325 {
1326 name: "PtrHeadInt16PtrNilDoubleMultiFieldsNotRoot",
1327 data: &struct {
1328 A *struct {
1329 A *int16 `json:"a"`
1330 B *int16 `json:"b"`
1331 }
1332 B *struct {
1333 A *int16 `json:"a"`
1334 B *int16 `json:"b"`
1335 }
1336 }{A: nil, B: nil},
1337 },
1338 {
1339 name: "PtrHeadInt16PtrNilDoubleMultiFieldsNotRootOmitEmpty",
1340 data: &struct {
1341 A *struct {
1342 A *int16 `json:"a,omitempty"`
1343 B *int16 `json:"b,omitempty"`
1344 } `json:",omitempty"`
1345 B *struct {
1346 A *int16 `json:"a,omitempty"`
1347 B *int16 `json:"b,omitempty"`
1348 } `json:",omitempty"`
1349 }{A: nil, B: nil},
1350 },
1351 {
1352 name: "PtrHeadInt16PtrNilDoubleMultiFieldsNotRootString",
1353 data: &struct {
1354 A *struct {
1355 A *int16 `json:"a,string"`
1356 B *int16 `json:"b,string"`
1357 }
1358 B *struct {
1359 A *int16 `json:"a,string"`
1360 B *int16 `json:"b,string"`
1361 }
1362 }{A: nil, B: nil},
1363 },
1364
1365
1366 {
1367 name: "PtrHeadInt16PtrNilDoubleMultiFieldsNotRoot",
1368 data: (*struct {
1369 A *struct {
1370 A *int16 `json:"a"`
1371 B *int16 `json:"b"`
1372 }
1373 B *struct {
1374 A *int16 `json:"a"`
1375 B *int16 `json:"b"`
1376 }
1377 })(nil),
1378 },
1379 {
1380 name: "PtrHeadInt16PtrNilDoubleMultiFieldsNotRootOmitEmpty",
1381 data: (*struct {
1382 A *struct {
1383 A *int16 `json:"a,omitempty"`
1384 B *int16 `json:"b,omitempty"`
1385 }
1386 B *struct {
1387 A *int16 `json:"a,omitempty"`
1388 B *int16 `json:"b,omitempty"`
1389 }
1390 })(nil),
1391 },
1392 {
1393 name: "PtrHeadInt16PtrNilDoubleMultiFieldsNotRootString",
1394 data: (*struct {
1395 A *struct {
1396 A *int16 `json:"a,string"`
1397 B *int16 `json:"b,string"`
1398 }
1399 B *struct {
1400 A *int16 `json:"a,string"`
1401 B *int16 `json:"b,string"`
1402 }
1403 })(nil),
1404 },
1405
1406
1407 {
1408 name: "AnonymousHeadInt16",
1409 data: struct {
1410 structInt16
1411 B int16 `json:"b"`
1412 }{
1413 structInt16: structInt16{A: 1},
1414 B: -2,
1415 },
1416 },
1417 {
1418 name: "AnonymousHeadInt16OmitEmpty",
1419 data: struct {
1420 structInt16OmitEmpty
1421 B int16 `json:"b,omitempty"`
1422 }{
1423 structInt16OmitEmpty: structInt16OmitEmpty{A: 1},
1424 B: -2,
1425 },
1426 },
1427 {
1428 name: "AnonymousHeadInt16String",
1429 data: struct {
1430 structInt16String
1431 B int16 `json:"b,string"`
1432 }{
1433 structInt16String: structInt16String{A: 1},
1434 B: -2,
1435 },
1436 },
1437
1438
1439 {
1440 name: "PtrAnonymousHeadInt16",
1441 data: struct {
1442 *structInt16
1443 B int16 `json:"b"`
1444 }{
1445 structInt16: &structInt16{A: 1},
1446 B: -2,
1447 },
1448 },
1449 {
1450 name: "PtrAnonymousHeadInt16OmitEmpty",
1451 data: struct {
1452 *structInt16OmitEmpty
1453 B int16 `json:"b,omitempty"`
1454 }{
1455 structInt16OmitEmpty: &structInt16OmitEmpty{A: 1},
1456 B: -2,
1457 },
1458 },
1459 {
1460 name: "PtrAnonymousHeadInt16String",
1461 data: struct {
1462 *structInt16String
1463 B int16 `json:"b,string"`
1464 }{
1465 structInt16String: &structInt16String{A: 1},
1466 B: -2,
1467 },
1468 },
1469
1470
1471 {
1472 name: "NilPtrAnonymousHeadInt16",
1473 data: struct {
1474 *structInt16
1475 B int16 `json:"b"`
1476 }{
1477 structInt16: nil,
1478 B: -2,
1479 },
1480 },
1481 {
1482 name: "NilPtrAnonymousHeadInt16OmitEmpty",
1483 data: struct {
1484 *structInt16OmitEmpty
1485 B int16 `json:"b,omitempty"`
1486 }{
1487 structInt16OmitEmpty: nil,
1488 B: -2,
1489 },
1490 },
1491 {
1492 name: "NilPtrAnonymousHeadInt16String",
1493 data: struct {
1494 *structInt16String
1495 B int16 `json:"b,string"`
1496 }{
1497 structInt16String: nil,
1498 B: -2,
1499 },
1500 },
1501
1502
1503 {
1504 name: "AnonymousHeadInt16Ptr",
1505 data: struct {
1506 structInt16Ptr
1507 B *int16 `json:"b"`
1508 }{
1509 structInt16Ptr: structInt16Ptr{A: int16ptr(1)},
1510 B: int16ptr(-2),
1511 },
1512 },
1513 {
1514 name: "AnonymousHeadInt16PtrOmitEmpty",
1515 data: struct {
1516 structInt16PtrOmitEmpty
1517 B *int16 `json:"b,omitempty"`
1518 }{
1519 structInt16PtrOmitEmpty: structInt16PtrOmitEmpty{A: int16ptr(1)},
1520 B: int16ptr(-2),
1521 },
1522 },
1523 {
1524 name: "AnonymousHeadInt16PtrString",
1525 data: struct {
1526 structInt16PtrString
1527 B *int16 `json:"b,string"`
1528 }{
1529 structInt16PtrString: structInt16PtrString{A: int16ptr(1)},
1530 B: int16ptr(-2),
1531 },
1532 },
1533
1534
1535 {
1536 name: "AnonymousHeadInt16PtrNil",
1537 data: struct {
1538 structInt16Ptr
1539 B *int16 `json:"b"`
1540 }{
1541 structInt16Ptr: structInt16Ptr{A: nil},
1542 B: int16ptr(-2),
1543 },
1544 },
1545 {
1546 name: "AnonymousHeadInt16PtrNilOmitEmpty",
1547 data: struct {
1548 structInt16PtrOmitEmpty
1549 B *int16 `json:"b,omitempty"`
1550 }{
1551 structInt16PtrOmitEmpty: structInt16PtrOmitEmpty{A: nil},
1552 B: int16ptr(-2),
1553 },
1554 },
1555 {
1556 name: "AnonymousHeadInt16PtrNilString",
1557 data: struct {
1558 structInt16PtrString
1559 B *int16 `json:"b,string"`
1560 }{
1561 structInt16PtrString: structInt16PtrString{A: nil},
1562 B: int16ptr(-2),
1563 },
1564 },
1565
1566
1567 {
1568 name: "PtrAnonymousHeadInt16Ptr",
1569 data: struct {
1570 *structInt16Ptr
1571 B *int16 `json:"b"`
1572 }{
1573 structInt16Ptr: &structInt16Ptr{A: int16ptr(1)},
1574 B: int16ptr(-2),
1575 },
1576 },
1577 {
1578 name: "PtrAnonymousHeadInt16PtrOmitEmpty",
1579 data: struct {
1580 *structInt16PtrOmitEmpty
1581 B *int16 `json:"b,omitempty"`
1582 }{
1583 structInt16PtrOmitEmpty: &structInt16PtrOmitEmpty{A: int16ptr(1)},
1584 B: int16ptr(-2),
1585 },
1586 },
1587 {
1588 name: "PtrAnonymousHeadInt16PtrString",
1589 data: struct {
1590 *structInt16PtrString
1591 B *int16 `json:"b,string"`
1592 }{
1593 structInt16PtrString: &structInt16PtrString{A: int16ptr(1)},
1594 B: int16ptr(-2),
1595 },
1596 },
1597
1598
1599 {
1600 name: "NilPtrAnonymousHeadInt16Ptr",
1601 data: struct {
1602 *structInt16Ptr
1603 B *int16 `json:"b"`
1604 }{
1605 structInt16Ptr: nil,
1606 B: int16ptr(-2),
1607 },
1608 },
1609 {
1610 name: "NilPtrAnonymousHeadInt16PtrOmitEmpty",
1611 data: struct {
1612 *structInt16PtrOmitEmpty
1613 B *int16 `json:"b,omitempty"`
1614 }{
1615 structInt16PtrOmitEmpty: nil,
1616 B: int16ptr(-2),
1617 },
1618 },
1619 {
1620 name: "NilPtrAnonymousHeadInt16PtrString",
1621 data: struct {
1622 *structInt16PtrString
1623 B *int16 `json:"b,string"`
1624 }{
1625 structInt16PtrString: nil,
1626 B: int16ptr(-2),
1627 },
1628 },
1629
1630
1631 {
1632 name: "AnonymousHeadInt16Only",
1633 data: struct {
1634 structInt16
1635 }{
1636 structInt16: structInt16{A: 1},
1637 },
1638 },
1639 {
1640 name: "AnonymousHeadInt16OnlyOmitEmpty",
1641 data: struct {
1642 structInt16OmitEmpty
1643 }{
1644 structInt16OmitEmpty: structInt16OmitEmpty{A: 1},
1645 },
1646 },
1647 {
1648 name: "AnonymousHeadInt16OnlyString",
1649 data: struct {
1650 structInt16String
1651 }{
1652 structInt16String: structInt16String{A: 1},
1653 },
1654 },
1655
1656
1657 {
1658 name: "PtrAnonymousHeadInt16Only",
1659 data: struct {
1660 *structInt16
1661 }{
1662 structInt16: &structInt16{A: 1},
1663 },
1664 },
1665 {
1666 name: "PtrAnonymousHeadInt16OnlyOmitEmpty",
1667 data: struct {
1668 *structInt16OmitEmpty
1669 }{
1670 structInt16OmitEmpty: &structInt16OmitEmpty{A: 1},
1671 },
1672 },
1673 {
1674 name: "PtrAnonymousHeadInt16OnlyString",
1675 data: struct {
1676 *structInt16String
1677 }{
1678 structInt16String: &structInt16String{A: 1},
1679 },
1680 },
1681
1682
1683 {
1684 name: "NilPtrAnonymousHeadInt16Only",
1685 data: struct {
1686 *structInt16
1687 }{
1688 structInt16: nil,
1689 },
1690 },
1691 {
1692 name: "NilPtrAnonymousHeadInt16OnlyOmitEmpty",
1693 data: struct {
1694 *structInt16OmitEmpty
1695 }{
1696 structInt16OmitEmpty: nil,
1697 },
1698 },
1699 {
1700 name: "NilPtrAnonymousHeadInt16OnlyString",
1701 data: struct {
1702 *structInt16String
1703 }{
1704 structInt16String: nil,
1705 },
1706 },
1707
1708
1709 {
1710 name: "AnonymousHeadInt16PtrOnly",
1711 data: struct {
1712 structInt16Ptr
1713 }{
1714 structInt16Ptr: structInt16Ptr{A: int16ptr(1)},
1715 },
1716 },
1717 {
1718 name: "AnonymousHeadInt16PtrOnlyOmitEmpty",
1719 data: struct {
1720 structInt16PtrOmitEmpty
1721 }{
1722 structInt16PtrOmitEmpty: structInt16PtrOmitEmpty{A: int16ptr(1)},
1723 },
1724 },
1725 {
1726 name: "AnonymousHeadInt16PtrOnlyString",
1727 data: struct {
1728 structInt16PtrString
1729 }{
1730 structInt16PtrString: structInt16PtrString{A: int16ptr(1)},
1731 },
1732 },
1733
1734
1735 {
1736 name: "AnonymousHeadInt16PtrNilOnly",
1737 data: struct {
1738 structInt16Ptr
1739 }{
1740 structInt16Ptr: structInt16Ptr{A: nil},
1741 },
1742 },
1743 {
1744 name: "AnonymousHeadInt16PtrNilOnlyOmitEmpty",
1745 data: struct {
1746 structInt16PtrOmitEmpty
1747 }{
1748 structInt16PtrOmitEmpty: structInt16PtrOmitEmpty{A: nil},
1749 },
1750 },
1751 {
1752 name: "AnonymousHeadInt16PtrNilOnlyString",
1753 data: struct {
1754 structInt16PtrString
1755 }{
1756 structInt16PtrString: structInt16PtrString{A: nil},
1757 },
1758 },
1759
1760
1761 {
1762 name: "PtrAnonymousHeadInt16PtrOnly",
1763 data: struct {
1764 *structInt16Ptr
1765 }{
1766 structInt16Ptr: &structInt16Ptr{A: int16ptr(1)},
1767 },
1768 },
1769 {
1770 name: "PtrAnonymousHeadInt16PtrOnlyOmitEmpty",
1771 data: struct {
1772 *structInt16PtrOmitEmpty
1773 }{
1774 structInt16PtrOmitEmpty: &structInt16PtrOmitEmpty{A: int16ptr(1)},
1775 },
1776 },
1777 {
1778 name: "PtrAnonymousHeadInt16PtrOnlyString",
1779 data: struct {
1780 *structInt16PtrString
1781 }{
1782 structInt16PtrString: &structInt16PtrString{A: int16ptr(1)},
1783 },
1784 },
1785
1786
1787 {
1788 name: "NilPtrAnonymousHeadInt16PtrOnly",
1789 data: struct {
1790 *structInt16Ptr
1791 }{
1792 structInt16Ptr: nil,
1793 },
1794 },
1795 {
1796 name: "NilPtrAnonymousHeadInt16PtrOnlyOmitEmpty",
1797 data: struct {
1798 *structInt16PtrOmitEmpty
1799 }{
1800 structInt16PtrOmitEmpty: nil,
1801 },
1802 },
1803 {
1804 name: "NilPtrAnonymousHeadInt16PtrOnlyString",
1805 data: struct {
1806 *structInt16PtrString
1807 }{
1808 structInt16PtrString: nil,
1809 },
1810 },
1811 }
1812 for _, test := range tests {
1813 for _, indent := range []bool{true, false} {
1814 for _, htmlEscape := range []bool{true, false} {
1815 t.Run(fmt.Sprintf("%s_indent_%t_escape_%t", test.name, indent, htmlEscape), func(t *testing.T) {
1816 var buf bytes.Buffer
1817 enc := json.NewEncoder(&buf)
1818 enc.SetEscapeHTML(htmlEscape)
1819 if indent {
1820 enc.SetIndent("", " ")
1821 }
1822 if err := enc.Encode(test.data); err != nil {
1823 t.Fatalf("%s(htmlEscape:%T): %+v: %s", test.name, htmlEscape, test.data, err)
1824 }
1825 stdresult := encodeByEncodingJSON(test.data, indent, htmlEscape)
1826 if buf.String() != stdresult {
1827 t.Errorf("%s(htmlEscape:%T): doesn't compatible with encoding/json. expected %q but got %q", test.name, htmlEscape, stdresult, buf.String())
1828 }
1829 })
1830 }
1831 }
1832 }
1833 }
1834
View as plain text