github.com/night-codes/go-json@v0.9.15/test/cover/cover_int16_test.go (about) 1 package json_test 2 3 import ( 4 "bytes" 5 "fmt" 6 "testing" 7 8 "github.com/night-codes/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 // HeadInt16Zero 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 // HeadInt16 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 // HeadInt16Ptr 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 // HeadInt16PtrNil 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 // PtrHeadInt16Zero 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 // PtrHeadInt16 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 // PtrHeadInt16Ptr 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 // PtrHeadInt16PtrNil 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 // PtrHeadInt16Nil 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 // HeadInt16ZeroMultiFields 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 // HeadInt16MultiFields 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 // HeadInt16PtrMultiFields 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 // HeadInt16PtrNilMultiFields 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 // PtrHeadInt16ZeroMultiFields 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 // PtrHeadInt16MultiFields 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 // PtrHeadInt16PtrMultiFields 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 // PtrHeadInt16PtrNilMultiFields 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 // PtrHeadInt16NilMultiFields 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 // PtrHeadInt16NilMultiFields 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 // HeadInt16ZeroNotRoot 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 // HeadInt16NotRoot 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 // HeadInt16PtrNotRoot 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 // HeadInt16PtrNilNotRoot 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 // PtrHeadInt16ZeroNotRoot 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 // PtrHeadInt16NotRoot 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 // PtrHeadInt16PtrNotRoot 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 // PtrHeadInt16PtrNilNotRoot 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 // PtrHeadInt16NilNotRoot 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 // HeadInt16ZeroMultiFieldsNotRoot 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 // HeadInt16MultiFieldsNotRoot 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 // HeadInt16PtrMultiFieldsNotRoot 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 // HeadInt16PtrNilMultiFieldsNotRoot 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 // PtrHeadInt16ZeroMultiFieldsNotRoot 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 // PtrHeadInt16MultiFieldsNotRoot 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 // PtrHeadInt16PtrMultiFieldsNotRoot 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 // PtrHeadInt16PtrNilMultiFieldsNotRoot 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 // PtrHeadInt16NilMultiFieldsNotRoot 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 // PtrHeadInt16DoubleMultiFieldsNotRoot 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 // PtrHeadInt16NilDoubleMultiFieldsNotRoot 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 // PtrHeadInt16NilDoubleMultiFieldsNotRoot 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 // PtrHeadInt16PtrDoubleMultiFieldsNotRoot 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 // PtrHeadInt16PtrNilDoubleMultiFieldsNotRoot 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 // PtrHeadInt16PtrNilDoubleMultiFieldsNotRoot 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 // AnonymousHeadInt16 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 // PtrAnonymousHeadInt16 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 // NilPtrAnonymousHeadInt16 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 // AnonymousHeadInt16Ptr 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 // AnonymousHeadInt16PtrNil 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 // PtrAnonymousHeadInt16Ptr 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 // NilPtrAnonymousHeadInt16Ptr 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 // AnonymousHeadInt16Only 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 // PtrAnonymousHeadInt16Only 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 // NilPtrAnonymousHeadInt16Only 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 // AnonymousHeadInt16PtrOnly 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 // AnonymousHeadInt16PtrNilOnly 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 // PtrAnonymousHeadInt16PtrOnly 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 // NilPtrAnonymousHeadInt16PtrOnly 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 }