github.com/night-codes/go-json@v0.9.15/test/cover/cover_number_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 TestCoverNumber(t *testing.T) { 12 type structNumber struct { 13 A json.Number `json:"a"` 14 } 15 type structNumberOmitEmpty struct { 16 A json.Number `json:"a,omitempty"` 17 } 18 type structNumberString struct { 19 A json.Number `json:"a,string"` 20 } 21 type structNumberStringOmitEmpty struct { 22 A json.Number `json:"a,string,omitempty"` 23 } 24 25 type structNumberPtr struct { 26 A *json.Number `json:"a"` 27 } 28 type structNumberPtrOmitEmpty struct { 29 A *json.Number `json:"a,omitempty"` 30 } 31 type structNumberPtrString struct { 32 A *json.Number `json:"a,string"` 33 } 34 type structNumberPtrStringOmitEmpty struct { 35 A *json.Number `json:"a,string,omitempty"` 36 } 37 38 tests := []struct { 39 name string 40 data interface{} 41 }{ 42 { 43 name: "Number", 44 data: json.Number("10"), 45 }, 46 { 47 name: "NumberPtr", 48 data: numberptr("10"), 49 }, 50 { 51 name: "NumberPtr3", 52 data: numberptr3("10"), 53 }, 54 { 55 name: "NumberPtrNil", 56 data: (*json.Number)(nil), 57 }, 58 { 59 name: "NumberPtr3Nil", 60 data: (***json.Number)(nil), 61 }, 62 63 // HeadNumberZero 64 { 65 name: "HeadNumberZero", 66 data: struct { 67 A json.Number `json:"a"` 68 }{}, 69 }, 70 { 71 name: "HeadNumberZeroOmitEmpty", 72 data: struct { 73 A json.Number `json:"a,omitempty"` 74 }{}, 75 }, 76 { 77 name: "HeadNumberZeroString", 78 data: struct { 79 A json.Number `json:"a,string"` 80 }{}, 81 }, 82 { 83 name: "HeadNumberZeroStringOmitEmpty", 84 data: struct { 85 A json.Number `json:"a,string,omitempty"` 86 }{}, 87 }, 88 89 // HeadNumber 90 { 91 name: "HeadNumber", 92 data: struct { 93 A json.Number `json:"a"` 94 }{A: "1"}, 95 }, 96 { 97 name: "HeadNumberOmitEmpty", 98 data: struct { 99 A json.Number `json:"a,omitempty"` 100 }{A: "1"}, 101 }, 102 { 103 name: "HeadNumberString", 104 data: struct { 105 A json.Number `json:"a,string"` 106 }{A: "1"}, 107 }, 108 { 109 name: "HeadNumberStringOmitEmpty", 110 data: struct { 111 A json.Number `json:"a,string,omitempty"` 112 }{A: "1"}, 113 }, 114 115 // HeadNumberPtr 116 { 117 name: "HeadNumberPtr", 118 data: struct { 119 A *json.Number `json:"a"` 120 }{A: numberptr("1")}, 121 }, 122 { 123 name: "HeadNumberPtrOmitEmpty", 124 data: struct { 125 A *json.Number `json:"a,omitempty"` 126 }{A: numberptr("1")}, 127 }, 128 { 129 name: "HeadNumberPtrString", 130 data: struct { 131 A *json.Number `json:"a,string"` 132 }{A: numberptr("1")}, 133 }, 134 { 135 name: "HeadNumberPtrStringOmitEmpty", 136 data: struct { 137 A *json.Number `json:"a,string,omitempty"` 138 }{A: numberptr("1")}, 139 }, 140 141 // HeadNumberPtrNil 142 { 143 name: "HeadNumberPtrNil", 144 data: struct { 145 A *json.Number `json:"a"` 146 }{A: nil}, 147 }, 148 { 149 name: "HeadNumberPtrNilOmitEmpty", 150 data: struct { 151 A *json.Number `json:"a,omitempty"` 152 }{A: nil}, 153 }, 154 { 155 name: "HeadNumberPtrNilString", 156 data: struct { 157 A *json.Number `json:"a,string"` 158 }{A: nil}, 159 }, 160 { 161 name: "HeadNumberPtrNilStringOmitEmpty", 162 data: struct { 163 A *json.Number `json:"a,string,omitempty"` 164 }{A: nil}, 165 }, 166 167 // PtrHeadNumberZero 168 { 169 name: "PtrHeadNumberZero", 170 data: &struct { 171 A json.Number `json:"a"` 172 }{}, 173 }, 174 { 175 name: "PtrHeadNumberZeroOmitEmpty", 176 data: &struct { 177 A json.Number `json:"a,omitempty"` 178 }{}, 179 }, 180 { 181 name: "PtrHeadNumberZeroString", 182 data: &struct { 183 A json.Number `json:"a,string"` 184 }{}, 185 }, 186 { 187 name: "PtrHeadNumberZeroStringOmitEmpty", 188 data: &struct { 189 A json.Number `json:"a,string,omitempty"` 190 }{}, 191 }, 192 193 // PtrHeadNumber 194 { 195 name: "PtrHeadNumber", 196 data: &struct { 197 A json.Number `json:"a"` 198 }{A: "1"}, 199 }, 200 { 201 name: "PtrHeadNumberOmitEmpty", 202 data: &struct { 203 A json.Number `json:"a,omitempty"` 204 }{A: "1"}, 205 }, 206 { 207 name: "PtrHeadNumberString", 208 data: &struct { 209 A json.Number `json:"a,string"` 210 }{A: "1"}, 211 }, 212 { 213 name: "PtrHeadNumberStringOmitEmpty", 214 data: &struct { 215 A json.Number `json:"a,string,omitempty"` 216 }{A: "1"}, 217 }, 218 219 // PtrHeadNumberPtr 220 { 221 name: "PtrHeadNumberPtr", 222 data: &struct { 223 A *json.Number `json:"a"` 224 }{A: numberptr("1")}, 225 }, 226 { 227 name: "PtrHeadNumberPtrOmitEmpty", 228 data: &struct { 229 A *json.Number `json:"a,omitempty"` 230 }{A: numberptr("1")}, 231 }, 232 { 233 name: "PtrHeadNumberPtrString", 234 data: &struct { 235 A *json.Number `json:"a,string"` 236 }{A: numberptr("1")}, 237 }, 238 { 239 name: "PtrHeadNumberPtrStringOmitEmpty", 240 data: &struct { 241 A *json.Number `json:"a,string,omitempty"` 242 }{A: numberptr("1")}, 243 }, 244 245 // PtrHeadNumberPtrNil 246 { 247 name: "PtrHeadNumberPtrNil", 248 data: &struct { 249 A *json.Number `json:"a"` 250 }{A: nil}, 251 }, 252 { 253 name: "PtrHeadNumberPtrNilOmitEmpty", 254 data: &struct { 255 A *json.Number `json:"a,omitempty"` 256 }{A: nil}, 257 }, 258 { 259 name: "PtrHeadNumberPtrNilString", 260 data: &struct { 261 A *json.Number `json:"a,string"` 262 }{A: nil}, 263 }, 264 { 265 name: "PtrHeadNumberPtrNilStringOmitEmpty", 266 data: &struct { 267 A *json.Number `json:"a,string,omitempty"` 268 }{A: nil}, 269 }, 270 271 // PtrHeadNumberNil 272 { 273 name: "PtrHeadNumberNil", 274 data: (*struct { 275 A *json.Number `json:"a"` 276 })(nil), 277 }, 278 { 279 name: "PtrHeadNumberNilOmitEmpty", 280 data: (*struct { 281 A *json.Number `json:"a,omitempty"` 282 })(nil), 283 }, 284 { 285 name: "PtrHeadNumberNilString", 286 data: (*struct { 287 A *json.Number `json:"a,string"` 288 })(nil), 289 }, 290 { 291 name: "PtrHeadNumberNilStringOmitEmpty", 292 data: (*struct { 293 A *json.Number `json:"a,string,omitempty"` 294 })(nil), 295 }, 296 297 // HeadNumberZeroMultiFields 298 { 299 name: "HeadNumberZeroMultiFields", 300 data: struct { 301 A json.Number `json:"a"` 302 B json.Number `json:"b"` 303 C json.Number `json:"c"` 304 }{}, 305 }, 306 { 307 name: "HeadNumberZeroMultiFieldsOmitEmpty", 308 data: struct { 309 A json.Number `json:"a,omitempty"` 310 B json.Number `json:"b,omitempty"` 311 C json.Number `json:"c,omitempty"` 312 }{}, 313 }, 314 { 315 name: "HeadNumberZeroMultiFieldsString", 316 data: struct { 317 A json.Number `json:"a,string"` 318 B json.Number `json:"b,string"` 319 C json.Number `json:"c,string"` 320 }{}, 321 }, 322 { 323 name: "HeadNumberZeroMultiFieldsStringOmitEmpty", 324 data: struct { 325 A json.Number `json:"a,string,omitempty"` 326 B json.Number `json:"b,string,omitempty"` 327 C json.Number `json:"c,string,omitempty"` 328 }{}, 329 }, 330 331 // HeadNumberMultiFields 332 { 333 name: "HeadNumberMultiFields", 334 data: struct { 335 A json.Number `json:"a"` 336 B json.Number `json:"b"` 337 C json.Number `json:"c"` 338 }{A: "1", B: "2", C: "3"}, 339 }, 340 { 341 name: "HeadNumberMultiFieldsOmitEmpty", 342 data: struct { 343 A json.Number `json:"a,omitempty"` 344 B json.Number `json:"b,omitempty"` 345 C json.Number `json:"c,omitempty"` 346 }{A: "1", B: "2", C: "3"}, 347 }, 348 { 349 name: "HeadNumberMultiFieldsString", 350 data: struct { 351 A json.Number `json:"a,string"` 352 B json.Number `json:"b,string"` 353 C json.Number `json:"c,string"` 354 }{A: "1", B: "2", C: "3"}, 355 }, 356 { 357 name: "HeadNumberMultiFieldsStringOmitEmpty", 358 data: struct { 359 A json.Number `json:"a,string,omitempty"` 360 B json.Number `json:"b,string,omitempty"` 361 C json.Number `json:"c,string,omitempty"` 362 }{A: "1", B: "2", C: "3"}, 363 }, 364 365 // HeadNumberPtrMultiFields 366 { 367 name: "HeadNumberPtrMultiFields", 368 data: struct { 369 A *json.Number `json:"a"` 370 B *json.Number `json:"b"` 371 C *json.Number `json:"c"` 372 }{A: numberptr("1"), B: numberptr("2"), C: numberptr("3")}, 373 }, 374 { 375 name: "HeadNumberPtrMultiFieldsOmitEmpty", 376 data: struct { 377 A *json.Number `json:"a,omitempty"` 378 B *json.Number `json:"b,omitempty"` 379 C *json.Number `json:"c,omitempty"` 380 }{A: numberptr("1"), B: numberptr("2"), C: numberptr("3")}, 381 }, 382 { 383 name: "HeadNumberPtrMultiFieldsString", 384 data: struct { 385 A *json.Number `json:"a,string"` 386 B *json.Number `json:"b,string"` 387 C *json.Number `json:"c,string"` 388 }{A: numberptr("1"), B: numberptr("2"), C: numberptr("3")}, 389 }, 390 { 391 name: "HeadNumberPtrMultiFieldsStringOmitEmpty", 392 data: struct { 393 A *json.Number `json:"a,string,omitempty"` 394 B *json.Number `json:"b,string,omitempty"` 395 C *json.Number `json:"c,string,omitempty"` 396 }{A: numberptr("1"), B: numberptr("2"), C: numberptr("3")}, 397 }, 398 399 // HeadNumberPtrNilMultiFields 400 { 401 name: "HeadNumberPtrNilMultiFields", 402 data: struct { 403 A *json.Number `json:"a"` 404 B *json.Number `json:"b"` 405 C *json.Number `json:"c"` 406 }{A: nil, B: nil, C: nil}, 407 }, 408 { 409 name: "HeadNumberPtrNilMultiFieldsOmitEmpty", 410 data: struct { 411 A *json.Number `json:"a,omitempty"` 412 B *json.Number `json:"b,omitempty"` 413 C *json.Number `json:"c,omitempty"` 414 }{A: nil, B: nil, C: nil}, 415 }, 416 { 417 name: "HeadNumberPtrNilMultiFieldsString", 418 data: struct { 419 A *json.Number `json:"a,string"` 420 B *json.Number `json:"b,string"` 421 C *json.Number `json:"c,string"` 422 }{A: nil, B: nil, C: nil}, 423 }, 424 { 425 name: "HeadNumberPtrNilMultiFieldsStringOmitEmpty", 426 data: struct { 427 A *json.Number `json:"a,string,omitempty"` 428 B *json.Number `json:"b,string,omitempty"` 429 C *json.Number `json:"c,string,omitempty"` 430 }{A: nil, B: nil, C: nil}, 431 }, 432 433 // PtrHeadNumberZeroMultiFields 434 { 435 name: "PtrHeadNumberZeroMultiFields", 436 data: &struct { 437 A json.Number `json:"a"` 438 B json.Number `json:"b"` 439 }{}, 440 }, 441 { 442 name: "PtrHeadNumberZeroMultiFieldsOmitEmpty", 443 data: &struct { 444 A json.Number `json:"a,omitempty"` 445 B json.Number `json:"b,omitempty"` 446 }{}, 447 }, 448 { 449 name: "PtrHeadNumberZeroMultiFieldsString", 450 data: &struct { 451 A json.Number `json:"a,string"` 452 B json.Number `json:"b,string"` 453 }{}, 454 }, 455 { 456 name: "PtrHeadNumberZeroMultiFieldsStringOmitEmpty", 457 data: &struct { 458 A json.Number `json:"a,string,omitempty"` 459 B json.Number `json:"b,string,omitempty"` 460 }{}, 461 }, 462 463 // PtrHeadNumberMultiFields 464 { 465 name: "PtrHeadNumberMultiFields", 466 data: &struct { 467 A json.Number `json:"a"` 468 B json.Number `json:"b"` 469 }{A: "1", B: "2"}, 470 }, 471 { 472 name: "PtrHeadNumberMultiFieldsOmitEmpty", 473 data: &struct { 474 A json.Number `json:"a,omitempty"` 475 B json.Number `json:"b,omitempty"` 476 }{A: "1", B: "2"}, 477 }, 478 { 479 name: "PtrHeadNumberMultiFieldsString", 480 data: &struct { 481 A json.Number `json:"a,string"` 482 B json.Number `json:"b,string"` 483 }{A: "1", B: "2"}, 484 }, 485 { 486 name: "PtrHeadNumberMultiFieldsStringOmitEmpty", 487 data: &struct { 488 A json.Number `json:"a,string,omitempty"` 489 B json.Number `json:"b,string,omitempty"` 490 }{A: "1", B: "2"}, 491 }, 492 493 // PtrHeadNumberPtrMultiFields 494 { 495 name: "PtrHeadNumberPtrMultiFields", 496 data: &struct { 497 A *json.Number `json:"a"` 498 B *json.Number `json:"b"` 499 }{A: numberptr("1"), B: numberptr("2")}, 500 }, 501 { 502 name: "PtrHeadNumberPtrMultiFieldsOmitEmpty", 503 data: &struct { 504 A *json.Number `json:"a,omitempty"` 505 B *json.Number `json:"b,omitempty"` 506 }{A: numberptr("1"), B: numberptr("2")}, 507 }, 508 { 509 name: "PtrHeadNumberPtrMultiFieldsString", 510 data: &struct { 511 A *json.Number `json:"a,string"` 512 B *json.Number `json:"b,string"` 513 }{A: numberptr("1"), B: numberptr("2")}, 514 }, 515 { 516 name: "PtrHeadNumberPtrMultiFieldsStringOmitEmpty", 517 data: &struct { 518 A *json.Number `json:"a,string,omitempty"` 519 B *json.Number `json:"b,string,omitempty"` 520 }{A: numberptr("1"), B: numberptr("2")}, 521 }, 522 523 // PtrHeadNumberPtrNilMultiFields 524 { 525 name: "PtrHeadNumberPtrNilMultiFields", 526 data: &struct { 527 A *json.Number `json:"a"` 528 B *json.Number `json:"b"` 529 }{A: nil, B: nil}, 530 }, 531 { 532 name: "PtrHeadNumberPtrNilMultiFieldsOmitEmpty", 533 data: &struct { 534 A *json.Number `json:"a,omitempty"` 535 B *json.Number `json:"b,omitempty"` 536 }{A: nil, B: nil}, 537 }, 538 { 539 name: "PtrHeadNumberPtrNilMultiFieldsString", 540 data: &struct { 541 A *json.Number `json:"a,string"` 542 B *json.Number `json:"b,string"` 543 }{A: nil, B: nil}, 544 }, 545 { 546 name: "PtrHeadNumberPtrNilMultiFieldsStringOmitEmpty", 547 data: &struct { 548 A *json.Number `json:"a,string,omitempty"` 549 B *json.Number `json:"b,string,omitempty"` 550 }{A: nil, B: nil}, 551 }, 552 553 // PtrHeadNumberNilMultiFields 554 { 555 name: "PtrHeadNumberNilMultiFields", 556 data: (*struct { 557 A *json.Number `json:"a"` 558 B *json.Number `json:"b"` 559 })(nil), 560 }, 561 { 562 name: "PtrHeadNumberNilMultiFieldsOmitEmpty", 563 data: (*struct { 564 A *json.Number `json:"a,omitempty"` 565 B *json.Number `json:"b,omitempty"` 566 })(nil), 567 }, 568 { 569 name: "PtrHeadNumberNilMultiFieldsString", 570 data: (*struct { 571 A *json.Number `json:"a,string"` 572 B *json.Number `json:"b,string"` 573 })(nil), 574 }, 575 { 576 name: "PtrHeadNumberNilMultiFieldsStringOmitEmpty", 577 data: (*struct { 578 A *json.Number `json:"a,string,omitempty"` 579 B *json.Number `json:"b,string,omitempty"` 580 })(nil), 581 }, 582 583 // HeadNumberZeroNotRoot 584 { 585 name: "HeadNumberZeroNotRoot", 586 data: struct { 587 A struct { 588 A json.Number `json:"a"` 589 } 590 }{}, 591 }, 592 { 593 name: "HeadNumberZeroNotRootOmitEmpty", 594 data: struct { 595 A struct { 596 A json.Number `json:"a,omitempty"` 597 } 598 }{}, 599 }, 600 { 601 name: "HeadNumberZeroNotRootString", 602 data: struct { 603 A struct { 604 A json.Number `json:"a,string"` 605 } 606 }{}, 607 }, 608 { 609 name: "HeadNumberZeroNotRootStringOmitEmpty", 610 data: struct { 611 A struct { 612 A json.Number `json:"a,string,omitempty"` 613 } 614 }{}, 615 }, 616 617 // HeadNumberNotRoot 618 { 619 name: "HeadNumberNotRoot", 620 data: struct { 621 A struct { 622 A json.Number `json:"a"` 623 } 624 }{A: struct { 625 A json.Number `json:"a"` 626 }{A: "1"}}, 627 }, 628 { 629 name: "HeadNumberNotRootOmitEmpty", 630 data: struct { 631 A struct { 632 A json.Number `json:"a,omitempty"` 633 } 634 }{A: struct { 635 A json.Number `json:"a,omitempty"` 636 }{A: "1"}}, 637 }, 638 { 639 name: "HeadNumberNotRootString", 640 data: struct { 641 A struct { 642 A json.Number `json:"a,string"` 643 } 644 }{A: struct { 645 A json.Number `json:"a,string"` 646 }{A: "1"}}, 647 }, 648 { 649 name: "HeadNumberNotRootStringOmitEmpty", 650 data: struct { 651 A struct { 652 A json.Number `json:"a,string,omitempty"` 653 } 654 }{A: struct { 655 A json.Number `json:"a,string,omitempty"` 656 }{A: "1"}}, 657 }, 658 659 // HeadNumberPtrNotRoot 660 { 661 name: "HeadNumberPtrNotRoot", 662 data: struct { 663 A struct { 664 A *json.Number `json:"a"` 665 } 666 }{A: struct { 667 A *json.Number `json:"a"` 668 }{numberptr("1")}}, 669 }, 670 { 671 name: "HeadNumberPtrNotRootOmitEmpty", 672 data: struct { 673 A struct { 674 A *json.Number `json:"a,omitempty"` 675 } 676 }{A: struct { 677 A *json.Number `json:"a,omitempty"` 678 }{numberptr("1")}}, 679 }, 680 { 681 name: "HeadNumberPtrNotRootString", 682 data: struct { 683 A struct { 684 A *json.Number `json:"a,string"` 685 } 686 }{A: struct { 687 A *json.Number `json:"a,string"` 688 }{numberptr("1")}}, 689 }, 690 { 691 name: "HeadNumberPtrNotRootStringOmitEmpty", 692 data: struct { 693 A struct { 694 A *json.Number `json:"a,string,omitempty"` 695 } 696 }{A: struct { 697 A *json.Number `json:"a,string,omitempty"` 698 }{numberptr("1")}}, 699 }, 700 701 // HeadNumberPtrNilNotRoot 702 { 703 name: "HeadNumberPtrNilNotRoot", 704 data: struct { 705 A struct { 706 A *json.Number `json:"a"` 707 } 708 }{}, 709 }, 710 { 711 name: "HeadNumberPtrNilNotRootOmitEmpty", 712 data: struct { 713 A struct { 714 A *json.Number `json:"a,omitempty"` 715 } 716 }{}, 717 }, 718 { 719 name: "HeadNumberPtrNilNotRootString", 720 data: struct { 721 A struct { 722 A *json.Number `json:"a,string"` 723 } 724 }{}, 725 }, 726 { 727 name: "HeadNumberPtrNilNotRootStringOmitEmpty", 728 data: struct { 729 A struct { 730 A *json.Number `json:"a,string,omitempty"` 731 } 732 }{}, 733 }, 734 735 // PtrHeadNumberZeroNotRoot 736 { 737 name: "PtrHeadNumberZeroNotRoot", 738 data: struct { 739 A *struct { 740 A json.Number `json:"a"` 741 } 742 }{A: new(struct { 743 A json.Number `json:"a"` 744 })}, 745 }, 746 { 747 name: "PtrHeadNumberZeroNotRootOmitEmpty", 748 data: struct { 749 A *struct { 750 A json.Number `json:"a,omitempty"` 751 } 752 }{A: new(struct { 753 A json.Number `json:"a,omitempty"` 754 })}, 755 }, 756 { 757 name: "PtrHeadNumberZeroNotRootString", 758 data: struct { 759 A *struct { 760 A json.Number `json:"a,string"` 761 } 762 }{A: new(struct { 763 A json.Number `json:"a,string"` 764 })}, 765 }, 766 { 767 name: "PtrHeadNumberZeroNotRootStringOmitEmpty", 768 data: struct { 769 A *struct { 770 A json.Number `json:"a,string,omitempty"` 771 } 772 }{A: new(struct { 773 A json.Number `json:"a,string,omitempty"` 774 })}, 775 }, 776 777 // PtrHeadNumberNotRoot 778 { 779 name: "PtrHeadNumberNotRoot", 780 data: struct { 781 A *struct { 782 A json.Number `json:"a"` 783 } 784 }{A: &(struct { 785 A json.Number `json:"a"` 786 }{A: "1"})}, 787 }, 788 { 789 name: "PtrHeadNumberNotRootOmitEmpty", 790 data: struct { 791 A *struct { 792 A json.Number `json:"a,omitempty"` 793 } 794 }{A: &(struct { 795 A json.Number `json:"a,omitempty"` 796 }{A: "1"})}, 797 }, 798 { 799 name: "PtrHeadNumberNotRootString", 800 data: struct { 801 A *struct { 802 A json.Number `json:"a,string"` 803 } 804 }{A: &(struct { 805 A json.Number `json:"a,string"` 806 }{A: "1"})}, 807 }, 808 { 809 name: "PtrHeadNumberNotRootStringOmitEmpty", 810 data: struct { 811 A *struct { 812 A json.Number `json:"a,string,omitempty"` 813 } 814 }{A: &(struct { 815 A json.Number `json:"a,string,omitempty"` 816 }{A: "1"})}, 817 }, 818 819 // PtrHeadNumberPtrNotRoot 820 { 821 name: "PtrHeadNumberPtrNotRoot", 822 data: struct { 823 A *struct { 824 A *json.Number `json:"a"` 825 } 826 }{A: &(struct { 827 A *json.Number `json:"a"` 828 }{A: numberptr("1")})}, 829 }, 830 { 831 name: "PtrHeadNumberPtrNotRootOmitEmpty", 832 data: struct { 833 A *struct { 834 A *json.Number `json:"a,omitempty"` 835 } 836 }{A: &(struct { 837 A *json.Number `json:"a,omitempty"` 838 }{A: numberptr("1")})}, 839 }, 840 { 841 name: "PtrHeadNumberPtrNotRootString", 842 data: struct { 843 A *struct { 844 A *json.Number `json:"a,string"` 845 } 846 }{A: &(struct { 847 A *json.Number `json:"a,string"` 848 }{A: numberptr("1")})}, 849 }, 850 { 851 name: "PtrHeadNumberPtrNotRootStringOmitEmpty", 852 data: struct { 853 A *struct { 854 A *json.Number `json:"a,string,omitempty"` 855 } 856 }{A: &(struct { 857 A *json.Number `json:"a,string,omitempty"` 858 }{A: numberptr("1")})}, 859 }, 860 861 // PtrHeadNumberPtrNilNotRoot 862 { 863 name: "PtrHeadNumberPtrNilNotRoot", 864 data: struct { 865 A *struct { 866 A *json.Number `json:"a"` 867 } 868 }{A: &(struct { 869 A *json.Number `json:"a"` 870 }{A: nil})}, 871 }, 872 { 873 name: "PtrHeadNumberPtrNilNotRootOmitEmpty", 874 data: struct { 875 A *struct { 876 A *json.Number `json:"a,omitempty"` 877 } 878 }{A: &(struct { 879 A *json.Number `json:"a,omitempty"` 880 }{A: nil})}, 881 }, 882 { 883 name: "PtrHeadNumberPtrNilNotRootString", 884 data: struct { 885 A *struct { 886 A *json.Number `json:"a,string"` 887 } 888 }{A: &(struct { 889 A *json.Number `json:"a,string"` 890 }{A: nil})}, 891 }, 892 { 893 name: "PtrHeadNumberPtrNilNotRootStringOmitEmpty", 894 data: struct { 895 A *struct { 896 A *json.Number `json:"a,string,omitempty"` 897 } 898 }{A: &(struct { 899 A *json.Number `json:"a,string,omitempty"` 900 }{A: nil})}, 901 }, 902 903 // PtrHeadNumberNilNotRoot 904 { 905 name: "PtrHeadNumberNilNotRoot", 906 data: struct { 907 A *struct { 908 A *json.Number `json:"a"` 909 } 910 }{A: nil}, 911 }, 912 { 913 name: "PtrHeadNumberNilNotRootOmitEmpty", 914 data: struct { 915 A *struct { 916 A *json.Number `json:"a,omitempty"` 917 } `json:",omitempty"` 918 }{A: nil}, 919 }, 920 { 921 name: "PtrHeadNumberNilNotRootString", 922 data: struct { 923 A *struct { 924 A *json.Number `json:"a,string"` 925 } `json:",string"` 926 }{A: nil}, 927 }, 928 { 929 name: "PtrHeadNumberNilNotRootStringOmitEmpty", 930 data: struct { 931 A *struct { 932 A *json.Number `json:"a,string,omitempty"` 933 } `json:",string,omitempty"` 934 }{A: nil}, 935 }, 936 937 // HeadNumberZeroMultiFieldsNotRoot 938 { 939 name: "HeadNumberZeroMultiFieldsNotRoot", 940 data: struct { 941 A struct { 942 A json.Number `json:"a"` 943 } 944 B struct { 945 B json.Number `json:"b"` 946 } 947 }{}, 948 }, 949 { 950 name: "HeadNumberZeroMultiFieldsNotRootOmitEmpty", 951 data: struct { 952 A struct { 953 A json.Number `json:"a,omitempty"` 954 } 955 B struct { 956 B json.Number `json:"b,omitempty"` 957 } 958 }{}, 959 }, 960 { 961 name: "HeadNumberZeroMultiFieldsNotRootString", 962 data: struct { 963 A struct { 964 A json.Number `json:"a,string"` 965 } 966 B struct { 967 B json.Number `json:"b,string"` 968 } 969 }{}, 970 }, 971 { 972 name: "HeadNumberZeroMultiFieldsNotRootStringOmitEmpty", 973 data: struct { 974 A struct { 975 A json.Number `json:"a,string,omitempty"` 976 } 977 B struct { 978 B json.Number `json:"b,string,omitempty"` 979 } 980 }{}, 981 }, 982 983 // HeadNumberMultiFieldsNotRoot 984 { 985 name: "HeadNumberMultiFieldsNotRoot", 986 data: struct { 987 A struct { 988 A json.Number `json:"a"` 989 } 990 B struct { 991 B json.Number `json:"b"` 992 } 993 }{A: struct { 994 A json.Number `json:"a"` 995 }{A: "1"}, B: struct { 996 B json.Number `json:"b"` 997 }{B: "2"}}, 998 }, 999 { 1000 name: "HeadNumberMultiFieldsNotRootOmitEmpty", 1001 data: struct { 1002 A struct { 1003 A json.Number `json:"a,omitempty"` 1004 } 1005 B struct { 1006 B json.Number `json:"b,omitempty"` 1007 } 1008 }{A: struct { 1009 A json.Number `json:"a,omitempty"` 1010 }{A: "1"}, B: struct { 1011 B json.Number `json:"b,omitempty"` 1012 }{B: "2"}}, 1013 }, 1014 { 1015 name: "HeadNumberMultiFieldsNotRootString", 1016 data: struct { 1017 A struct { 1018 A json.Number `json:"a,string"` 1019 } 1020 B struct { 1021 B json.Number `json:"b,string"` 1022 } 1023 }{A: struct { 1024 A json.Number `json:"a,string"` 1025 }{A: "1"}, B: struct { 1026 B json.Number `json:"b,string"` 1027 }{B: "2"}}, 1028 }, 1029 { 1030 name: "HeadNumberMultiFieldsNotRootStringOmitEmpty", 1031 data: struct { 1032 A struct { 1033 A json.Number `json:"a,string,omitempty"` 1034 } 1035 B struct { 1036 B json.Number `json:"b,string,omitempty"` 1037 } 1038 }{A: struct { 1039 A json.Number `json:"a,string,omitempty"` 1040 }{A: "1"}, B: struct { 1041 B json.Number `json:"b,string,omitempty"` 1042 }{B: "2"}}, 1043 }, 1044 1045 // HeadNumberPtrMultiFieldsNotRoot 1046 { 1047 name: "HeadNumberPtrMultiFieldsNotRoot", 1048 data: struct { 1049 A struct { 1050 A *json.Number `json:"a"` 1051 } 1052 B struct { 1053 B *json.Number `json:"b"` 1054 } 1055 }{A: struct { 1056 A *json.Number `json:"a"` 1057 }{A: numberptr("1")}, B: struct { 1058 B *json.Number `json:"b"` 1059 }{B: numberptr("2")}}, 1060 }, 1061 { 1062 name: "HeadNumberPtrMultiFieldsNotRootOmitEmpty", 1063 data: struct { 1064 A struct { 1065 A *json.Number `json:"a,omitempty"` 1066 } 1067 B struct { 1068 B *json.Number `json:"b,omitempty"` 1069 } 1070 }{A: struct { 1071 A *json.Number `json:"a,omitempty"` 1072 }{A: numberptr("1")}, B: struct { 1073 B *json.Number `json:"b,omitempty"` 1074 }{B: numberptr("2")}}, 1075 }, 1076 { 1077 name: "HeadNumberPtrMultiFieldsNotRootString", 1078 data: struct { 1079 A struct { 1080 A *json.Number `json:"a,string"` 1081 } 1082 B struct { 1083 B *json.Number `json:"b,string"` 1084 } 1085 }{A: struct { 1086 A *json.Number `json:"a,string"` 1087 }{A: numberptr("1")}, B: struct { 1088 B *json.Number `json:"b,string"` 1089 }{B: numberptr("2")}}, 1090 }, 1091 { 1092 name: "HeadNumberPtrMultiFieldsNotRootStringOmitEmpty", 1093 data: struct { 1094 A struct { 1095 A *json.Number `json:"a,string,omitempty"` 1096 } 1097 B struct { 1098 B *json.Number `json:"b,string,omitempty"` 1099 } 1100 }{A: struct { 1101 A *json.Number `json:"a,string,omitempty"` 1102 }{A: numberptr("1")}, B: struct { 1103 B *json.Number `json:"b,string,omitempty"` 1104 }{B: numberptr("2")}}, 1105 }, 1106 1107 // HeadNumberPtrNilMultiFieldsNotRoot 1108 { 1109 name: "HeadNumberPtrNilMultiFieldsNotRoot", 1110 data: struct { 1111 A struct { 1112 A *json.Number `json:"a"` 1113 } 1114 B struct { 1115 B *json.Number `json:"b"` 1116 } 1117 }{A: struct { 1118 A *json.Number `json:"a"` 1119 }{A: nil}, B: struct { 1120 B *json.Number `json:"b"` 1121 }{B: nil}}, 1122 }, 1123 { 1124 name: "HeadNumberPtrNilMultiFieldsNotRootOmitEmpty", 1125 data: struct { 1126 A struct { 1127 A *json.Number `json:"a,omitempty"` 1128 } 1129 B struct { 1130 B *json.Number `json:"b,omitempty"` 1131 } 1132 }{A: struct { 1133 A *json.Number `json:"a,omitempty"` 1134 }{A: nil}, B: struct { 1135 B *json.Number `json:"b,omitempty"` 1136 }{B: nil}}, 1137 }, 1138 { 1139 name: "HeadNumberPtrNilMultiFieldsNotRootString", 1140 data: struct { 1141 A struct { 1142 A *json.Number `json:"a,string"` 1143 } 1144 B struct { 1145 B *json.Number `json:"b,string"` 1146 } 1147 }{A: struct { 1148 A *json.Number `json:"a,string"` 1149 }{A: nil}, B: struct { 1150 B *json.Number `json:"b,string"` 1151 }{B: nil}}, 1152 }, 1153 { 1154 name: "HeadNumberPtrNilMultiFieldsNotRootStringOmitEmpty", 1155 data: struct { 1156 A struct { 1157 A *json.Number `json:"a,string,omitempty"` 1158 } 1159 B struct { 1160 B *json.Number `json:"b,string,omitempty"` 1161 } 1162 }{A: struct { 1163 A *json.Number `json:"a,string,omitempty"` 1164 }{A: nil}, B: struct { 1165 B *json.Number `json:"b,string,omitempty"` 1166 }{B: nil}}, 1167 }, 1168 1169 // PtrHeadNumberZeroMultiFieldsNotRoot 1170 { 1171 name: "PtrHeadNumberZeroMultiFieldsNotRoot", 1172 data: &struct { 1173 A struct { 1174 A json.Number `json:"a"` 1175 } 1176 B struct { 1177 B json.Number `json:"b"` 1178 } 1179 }{}, 1180 }, 1181 { 1182 name: "PtrHeadNumberZeroMultiFieldsNotRootOmitEmpty", 1183 data: &struct { 1184 A struct { 1185 A json.Number `json:"a,omitempty"` 1186 } 1187 B struct { 1188 B json.Number `json:"b,omitempty"` 1189 } 1190 }{}, 1191 }, 1192 { 1193 name: "PtrHeadNumberZeroMultiFieldsNotRootString", 1194 data: &struct { 1195 A struct { 1196 A json.Number `json:"a,string"` 1197 } 1198 B struct { 1199 B json.Number `json:"b,string"` 1200 } 1201 }{}, 1202 }, 1203 { 1204 name: "PtrHeadNumberZeroMultiFieldsNotRootStringOmitEmpty", 1205 data: &struct { 1206 A struct { 1207 A json.Number `json:"a,string,omitempty"` 1208 } 1209 B struct { 1210 B json.Number `json:"b,string,omitempty"` 1211 } 1212 }{}, 1213 }, 1214 1215 // PtrHeadNumberMultiFieldsNotRoot 1216 { 1217 name: "PtrHeadNumberMultiFieldsNotRoot", 1218 data: &struct { 1219 A struct { 1220 A json.Number `json:"a"` 1221 } 1222 B struct { 1223 B json.Number `json:"b"` 1224 } 1225 }{A: struct { 1226 A json.Number `json:"a"` 1227 }{A: "1"}, B: struct { 1228 B json.Number `json:"b"` 1229 }{B: "2"}}, 1230 }, 1231 { 1232 name: "PtrHeadNumberMultiFieldsNotRootOmitEmpty", 1233 data: &struct { 1234 A struct { 1235 A json.Number `json:"a,omitempty"` 1236 } 1237 B struct { 1238 B json.Number `json:"b,omitempty"` 1239 } 1240 }{A: struct { 1241 A json.Number `json:"a,omitempty"` 1242 }{A: "1"}, B: struct { 1243 B json.Number `json:"b,omitempty"` 1244 }{B: "2"}}, 1245 }, 1246 { 1247 name: "PtrHeadNumberMultiFieldsNotRootString", 1248 data: &struct { 1249 A struct { 1250 A json.Number `json:"a,string"` 1251 } 1252 B struct { 1253 B json.Number `json:"b,string"` 1254 } 1255 }{A: struct { 1256 A json.Number `json:"a,string"` 1257 }{A: "1"}, B: struct { 1258 B json.Number `json:"b,string"` 1259 }{B: "2"}}, 1260 }, 1261 { 1262 name: "PtrHeadNumberMultiFieldsNotRootStringOmitEmpty", 1263 data: &struct { 1264 A struct { 1265 A json.Number `json:"a,string,omitempty"` 1266 } 1267 B struct { 1268 B json.Number `json:"b,string,omitempty"` 1269 } 1270 }{A: struct { 1271 A json.Number `json:"a,string,omitempty"` 1272 }{A: "1"}, B: struct { 1273 B json.Number `json:"b,string,omitempty"` 1274 }{B: "2"}}, 1275 }, 1276 1277 // PtrHeadNumberPtrMultiFieldsNotRoot 1278 { 1279 name: "PtrHeadNumberPtrMultiFieldsNotRoot", 1280 data: &struct { 1281 A *struct { 1282 A *json.Number `json:"a"` 1283 } 1284 B *struct { 1285 B *json.Number `json:"b"` 1286 } 1287 }{A: &(struct { 1288 A *json.Number `json:"a"` 1289 }{A: numberptr("1")}), B: &(struct { 1290 B *json.Number `json:"b"` 1291 }{B: numberptr("2")})}, 1292 }, 1293 { 1294 name: "PtrHeadNumberPtrMultiFieldsNotRootOmitEmpty", 1295 data: &struct { 1296 A *struct { 1297 A *json.Number `json:"a,omitempty"` 1298 } 1299 B *struct { 1300 B *json.Number `json:"b,omitempty"` 1301 } 1302 }{A: &(struct { 1303 A *json.Number `json:"a,omitempty"` 1304 }{A: numberptr("1")}), B: &(struct { 1305 B *json.Number `json:"b,omitempty"` 1306 }{B: numberptr("2")})}, 1307 }, 1308 { 1309 name: "PtrHeadNumberPtrMultiFieldsNotRootString", 1310 data: &struct { 1311 A *struct { 1312 A *json.Number `json:"a,string"` 1313 } 1314 B *struct { 1315 B *json.Number `json:"b,string"` 1316 } 1317 }{A: &(struct { 1318 A *json.Number `json:"a,string"` 1319 }{A: numberptr("1")}), B: &(struct { 1320 B *json.Number `json:"b,string"` 1321 }{B: numberptr("2")})}, 1322 }, 1323 { 1324 name: "PtrHeadNumberPtrMultiFieldsNotRootStringOmitEmpty", 1325 data: &struct { 1326 A *struct { 1327 A *json.Number `json:"a,string,omitempty"` 1328 } 1329 B *struct { 1330 B *json.Number `json:"b,string,omitempty"` 1331 } 1332 }{A: &(struct { 1333 A *json.Number `json:"a,string,omitempty"` 1334 }{A: numberptr("1")}), B: &(struct { 1335 B *json.Number `json:"b,string,omitempty"` 1336 }{B: numberptr("2")})}, 1337 }, 1338 1339 // PtrHeadNumberPtrNilMultiFieldsNotRoot 1340 { 1341 name: "PtrHeadNumberPtrNilMultiFieldsNotRoot", 1342 data: &struct { 1343 A *struct { 1344 A *json.Number `json:"a"` 1345 } 1346 B *struct { 1347 B *json.Number `json:"b"` 1348 } 1349 }{A: nil, B: nil}, 1350 }, 1351 { 1352 name: "PtrHeadNumberPtrNilMultiFieldsNotRootOmitEmpty", 1353 data: &struct { 1354 A *struct { 1355 A *json.Number `json:"a,omitempty"` 1356 } `json:",omitempty"` 1357 B *struct { 1358 B *json.Number `json:"b,omitempty"` 1359 } `json:",omitempty"` 1360 }{A: nil, B: nil}, 1361 }, 1362 { 1363 name: "PtrHeadNumberPtrNilMultiFieldsNotRootString", 1364 data: &struct { 1365 A *struct { 1366 A *json.Number `json:"a,string"` 1367 } `json:",string"` 1368 B *struct { 1369 B *json.Number `json:"b,string"` 1370 } `json:",string"` 1371 }{A: nil, B: nil}, 1372 }, 1373 { 1374 name: "PtrHeadNumberPtrNilMultiFieldsNotRootStringOmitEmpty", 1375 data: &struct { 1376 A *struct { 1377 A *json.Number `json:"a,string,omitempty"` 1378 } `json:",string,omitempty"` 1379 B *struct { 1380 B *json.Number `json:"b,string,omitempty"` 1381 } `json:",string,omitempty"` 1382 }{A: nil, B: nil}, 1383 }, 1384 1385 // PtrHeadNumberNilMultiFieldsNotRoot 1386 { 1387 name: "PtrHeadNumberNilMultiFieldsNotRoot", 1388 data: (*struct { 1389 A *struct { 1390 A *json.Number `json:"a"` 1391 } 1392 B *struct { 1393 B *json.Number `json:"b"` 1394 } 1395 })(nil), 1396 }, 1397 { 1398 name: "PtrHeadNumberNilMultiFieldsNotRootOmitEmpty", 1399 data: (*struct { 1400 A *struct { 1401 A *json.Number `json:"a,omitempty"` 1402 } 1403 B *struct { 1404 B *json.Number `json:"b,omitempty"` 1405 } 1406 })(nil), 1407 }, 1408 { 1409 name: "PtrHeadNumberNilMultiFieldsNotRootString", 1410 data: (*struct { 1411 A *struct { 1412 A *json.Number `json:"a,string"` 1413 } 1414 B *struct { 1415 B *json.Number `json:"b,string"` 1416 } 1417 })(nil), 1418 }, 1419 { 1420 name: "PtrHeadNumberNilMultiFieldsNotRootStringOmitEmpty", 1421 data: (*struct { 1422 A *struct { 1423 A *json.Number `json:"a,string,omitempty"` 1424 } 1425 B *struct { 1426 B *json.Number `json:"b,string,omitempty"` 1427 } 1428 })(nil), 1429 }, 1430 1431 // PtrHeadNumberDoubleMultiFieldsNotRoot 1432 { 1433 name: "PtrHeadNumberDoubleMultiFieldsNotRoot", 1434 data: &struct { 1435 A *struct { 1436 A json.Number `json:"a"` 1437 B json.Number `json:"b"` 1438 } 1439 B *struct { 1440 A json.Number `json:"a"` 1441 B json.Number `json:"b"` 1442 } 1443 }{A: &(struct { 1444 A json.Number `json:"a"` 1445 B json.Number `json:"b"` 1446 }{A: "1", B: "2"}), B: &(struct { 1447 A json.Number `json:"a"` 1448 B json.Number `json:"b"` 1449 }{A: "3", B: "4"})}, 1450 }, 1451 { 1452 name: "PtrHeadNumberDoubleMultiFieldsNotRootOmitEmpty", 1453 data: &struct { 1454 A *struct { 1455 A json.Number `json:"a,omitempty"` 1456 B json.Number `json:"b,omitempty"` 1457 } 1458 B *struct { 1459 A json.Number `json:"a,omitempty"` 1460 B json.Number `json:"b,omitempty"` 1461 } 1462 }{A: &(struct { 1463 A json.Number `json:"a,omitempty"` 1464 B json.Number `json:"b,omitempty"` 1465 }{A: "1", B: "2"}), B: &(struct { 1466 A json.Number `json:"a,omitempty"` 1467 B json.Number `json:"b,omitempty"` 1468 }{A: "3", B: "4"})}, 1469 }, 1470 { 1471 name: "PtrHeadNumberDoubleMultiFieldsNotRootString", 1472 data: &struct { 1473 A *struct { 1474 A json.Number `json:"a,string"` 1475 B json.Number `json:"b,string"` 1476 } 1477 B *struct { 1478 A json.Number `json:"a,string"` 1479 B json.Number `json:"b,string"` 1480 } 1481 }{A: &(struct { 1482 A json.Number `json:"a,string"` 1483 B json.Number `json:"b,string"` 1484 }{A: "1", B: "2"}), B: &(struct { 1485 A json.Number `json:"a,string"` 1486 B json.Number `json:"b,string"` 1487 }{A: "3", B: "4"})}, 1488 }, 1489 { 1490 name: "PtrHeadNumberDoubleMultiFieldsNotRootStringOmitEmpty", 1491 data: &struct { 1492 A *struct { 1493 A json.Number `json:"a,string,omitempty"` 1494 B json.Number `json:"b,string,omitempty"` 1495 } 1496 B *struct { 1497 A json.Number `json:"a,string,omitempty"` 1498 B json.Number `json:"b,string,omitempty"` 1499 } 1500 }{A: &(struct { 1501 A json.Number `json:"a,string,omitempty"` 1502 B json.Number `json:"b,string,omitempty"` 1503 }{A: "1", B: "2"}), B: &(struct { 1504 A json.Number `json:"a,string,omitempty"` 1505 B json.Number `json:"b,string,omitempty"` 1506 }{A: "3", B: "4"})}, 1507 }, 1508 1509 // PtrHeadNumberNilDoubleMultiFieldsNotRoot 1510 { 1511 name: "PtrHeadNumberNilDoubleMultiFieldsNotRoot", 1512 data: &struct { 1513 A *struct { 1514 A json.Number `json:"a"` 1515 B json.Number `json:"b"` 1516 } 1517 B *struct { 1518 A json.Number `json:"a"` 1519 B json.Number `json:"b"` 1520 } 1521 }{A: nil, B: nil}, 1522 }, 1523 { 1524 name: "PtrHeadNumberNilDoubleMultiFieldsNotRootOmitEmpty", 1525 data: &struct { 1526 A *struct { 1527 A json.Number `json:"a,omitempty"` 1528 B json.Number `json:"b,omitempty"` 1529 } `json:",omitempty"` 1530 B *struct { 1531 A json.Number `json:"a,omitempty"` 1532 B json.Number `json:"b,omitempty"` 1533 } `json:",omitempty"` 1534 }{A: nil, B: nil}, 1535 }, 1536 { 1537 name: "PtrHeadNumberNilDoubleMultiFieldsNotRootString", 1538 data: &struct { 1539 A *struct { 1540 A json.Number `json:"a,string"` 1541 B json.Number `json:"b,string"` 1542 } 1543 B *struct { 1544 A json.Number `json:"a,string"` 1545 B json.Number `json:"b,string"` 1546 } 1547 }{A: nil, B: nil}, 1548 }, 1549 { 1550 name: "PtrHeadNumberNilDoubleMultiFieldsNotRootStringOmitEmpty", 1551 data: &struct { 1552 A *struct { 1553 A json.Number `json:"a,string,omitempty"` 1554 B json.Number `json:"b,string,omitempty"` 1555 } 1556 B *struct { 1557 A json.Number `json:"a,string,omitempty"` 1558 B json.Number `json:"b,string,omitempty"` 1559 } 1560 }{A: nil, B: nil}, 1561 }, 1562 1563 // PtrHeadNumberNilDoubleMultiFieldsNotRoot 1564 { 1565 name: "PtrHeadNumberNilDoubleMultiFieldsNotRoot", 1566 data: (*struct { 1567 A *struct { 1568 A json.Number `json:"a"` 1569 B json.Number `json:"b"` 1570 } 1571 B *struct { 1572 A json.Number `json:"a"` 1573 B json.Number `json:"b"` 1574 } 1575 })(nil), 1576 }, 1577 { 1578 name: "PtrHeadNumberNilDoubleMultiFieldsNotRootOmitEmpty", 1579 data: (*struct { 1580 A *struct { 1581 A json.Number `json:"a,omitempty"` 1582 B json.Number `json:"b,omitempty"` 1583 } 1584 B *struct { 1585 A json.Number `json:"a,omitempty"` 1586 B json.Number `json:"b,omitempty"` 1587 } 1588 })(nil), 1589 }, 1590 { 1591 name: "PtrHeadNumberNilDoubleMultiFieldsNotRootString", 1592 data: (*struct { 1593 A *struct { 1594 A json.Number `json:"a,string"` 1595 B json.Number `json:"b,string"` 1596 } 1597 B *struct { 1598 A json.Number `json:"a,string"` 1599 B json.Number `json:"b,string"` 1600 } 1601 })(nil), 1602 }, 1603 { 1604 name: "PtrHeadNumberNilDoubleMultiFieldsNotRootStringOmitEmpty", 1605 data: (*struct { 1606 A *struct { 1607 A json.Number `json:"a,string,omitempty"` 1608 B json.Number `json:"b,string,omitempty"` 1609 } 1610 B *struct { 1611 A json.Number `json:"a,string,omitempty"` 1612 B json.Number `json:"b,string,omitempty"` 1613 } 1614 })(nil), 1615 }, 1616 1617 // PtrHeadNumberPtrDoubleMultiFieldsNotRoot 1618 { 1619 name: "PtrHeadNumberPtrDoubleMultiFieldsNotRoot", 1620 data: &struct { 1621 A *struct { 1622 A *json.Number `json:"a"` 1623 B *json.Number `json:"b"` 1624 } 1625 B *struct { 1626 A *json.Number `json:"a"` 1627 B *json.Number `json:"b"` 1628 } 1629 }{A: &(struct { 1630 A *json.Number `json:"a"` 1631 B *json.Number `json:"b"` 1632 }{A: numberptr("1"), B: numberptr("2")}), B: &(struct { 1633 A *json.Number `json:"a"` 1634 B *json.Number `json:"b"` 1635 }{A: numberptr("3"), B: numberptr("4")})}, 1636 }, 1637 { 1638 name: "PtrHeadNumberPtrDoubleMultiFieldsNotRootOmitEmpty", 1639 data: &struct { 1640 A *struct { 1641 A *json.Number `json:"a,omitempty"` 1642 B *json.Number `json:"b,omitempty"` 1643 } 1644 B *struct { 1645 A *json.Number `json:"a,omitempty"` 1646 B *json.Number `json:"b,omitempty"` 1647 } 1648 }{A: &(struct { 1649 A *json.Number `json:"a,omitempty"` 1650 B *json.Number `json:"b,omitempty"` 1651 }{A: numberptr("1"), B: numberptr("2")}), B: &(struct { 1652 A *json.Number `json:"a,omitempty"` 1653 B *json.Number `json:"b,omitempty"` 1654 }{A: numberptr("3"), B: numberptr("4")})}, 1655 }, 1656 { 1657 name: "PtrHeadNumberPtrDoubleMultiFieldsNotRootString", 1658 data: &struct { 1659 A *struct { 1660 A *json.Number `json:"a,string"` 1661 B *json.Number `json:"b,string"` 1662 } 1663 B *struct { 1664 A *json.Number `json:"a,string"` 1665 B *json.Number `json:"b,string"` 1666 } 1667 }{A: &(struct { 1668 A *json.Number `json:"a,string"` 1669 B *json.Number `json:"b,string"` 1670 }{A: numberptr("1"), B: numberptr("2")}), B: &(struct { 1671 A *json.Number `json:"a,string"` 1672 B *json.Number `json:"b,string"` 1673 }{A: numberptr("3"), B: numberptr("4")})}, 1674 }, 1675 { 1676 name: "PtrHeadNumberPtrDoubleMultiFieldsNotRootStringOmitEmpty", 1677 data: &struct { 1678 A *struct { 1679 A *json.Number `json:"a,string,omitempty"` 1680 B *json.Number `json:"b,string,omitempty"` 1681 } 1682 B *struct { 1683 A *json.Number `json:"a,string,omitempty"` 1684 B *json.Number `json:"b,string,omitempty"` 1685 } 1686 }{A: &(struct { 1687 A *json.Number `json:"a,string,omitempty"` 1688 B *json.Number `json:"b,string,omitempty"` 1689 }{A: numberptr("1"), B: numberptr("2")}), B: &(struct { 1690 A *json.Number `json:"a,string,omitempty"` 1691 B *json.Number `json:"b,string,omitempty"` 1692 }{A: numberptr("3"), B: numberptr("4")})}, 1693 }, 1694 1695 // PtrHeadNumberPtrNilDoubleMultiFieldsNotRoot 1696 { 1697 name: "PtrHeadNumberPtrNilDoubleMultiFieldsNotRoot", 1698 data: &struct { 1699 A *struct { 1700 A *json.Number `json:"a"` 1701 B *json.Number `json:"b"` 1702 } 1703 B *struct { 1704 A *json.Number `json:"a"` 1705 B *json.Number `json:"b"` 1706 } 1707 }{A: nil, B: nil}, 1708 }, 1709 { 1710 name: "PtrHeadNumberPtrNilDoubleMultiFieldsNotRootOmitEmpty", 1711 data: &struct { 1712 A *struct { 1713 A *json.Number `json:"a,omitempty"` 1714 B *json.Number `json:"b,omitempty"` 1715 } `json:",omitempty"` 1716 B *struct { 1717 A *json.Number `json:"a,omitempty"` 1718 B *json.Number `json:"b,omitempty"` 1719 } `json:",omitempty"` 1720 }{A: nil, B: nil}, 1721 }, 1722 { 1723 name: "PtrHeadNumberPtrNilDoubleMultiFieldsNotRootString", 1724 data: &struct { 1725 A *struct { 1726 A *json.Number `json:"a,string"` 1727 B *json.Number `json:"b,string"` 1728 } 1729 B *struct { 1730 A *json.Number `json:"a,string"` 1731 B *json.Number `json:"b,string"` 1732 } 1733 }{A: nil, B: nil}, 1734 }, 1735 { 1736 name: "PtrHeadNumberPtrNilDoubleMultiFieldsNotRootStringOmitEmpty", 1737 data: &struct { 1738 A *struct { 1739 A *json.Number `json:"a,string,omitempty"` 1740 B *json.Number `json:"b,string,omitempty"` 1741 } 1742 B *struct { 1743 A *json.Number `json:"a,string,omitempty"` 1744 B *json.Number `json:"b,string,omitempty"` 1745 } 1746 }{A: nil, B: nil}, 1747 }, 1748 1749 // PtrHeadNumberPtrNilDoubleMultiFieldsNotRoot 1750 { 1751 name: "PtrHeadNumberPtrNilDoubleMultiFieldsNotRoot", 1752 data: (*struct { 1753 A *struct { 1754 A *json.Number `json:"a"` 1755 B *json.Number `json:"b"` 1756 } 1757 B *struct { 1758 A *json.Number `json:"a"` 1759 B *json.Number `json:"b"` 1760 } 1761 })(nil), 1762 }, 1763 { 1764 name: "PtrHeadNumberPtrNilDoubleMultiFieldsNotRootOmitEmpty", 1765 data: (*struct { 1766 A *struct { 1767 A *json.Number `json:"a,omitempty"` 1768 B *json.Number `json:"b,omitempty"` 1769 } 1770 B *struct { 1771 A *json.Number `json:"a,omitempty"` 1772 B *json.Number `json:"b,omitempty"` 1773 } 1774 })(nil), 1775 }, 1776 { 1777 name: "PtrHeadNumberPtrNilDoubleMultiFieldsNotRootString", 1778 data: (*struct { 1779 A *struct { 1780 A *json.Number `json:"a,string"` 1781 B *json.Number `json:"b,string"` 1782 } 1783 B *struct { 1784 A *json.Number `json:"a,string"` 1785 B *json.Number `json:"b,string"` 1786 } 1787 })(nil), 1788 }, 1789 { 1790 name: "PtrHeadNumberPtrNilDoubleMultiFieldsNotRootStringOmitEmpty", 1791 data: (*struct { 1792 A *struct { 1793 A *json.Number `json:"a,string,omitempty"` 1794 B *json.Number `json:"b,string,omitempty"` 1795 } 1796 B *struct { 1797 A *json.Number `json:"a,string,omitempty"` 1798 B *json.Number `json:"b,string,omitempty"` 1799 } 1800 })(nil), 1801 }, 1802 1803 // AnonymousHeadNumber 1804 { 1805 name: "AnonymousHeadNumber", 1806 data: struct { 1807 structNumber 1808 B json.Number `json:"b"` 1809 }{ 1810 structNumber: structNumber{A: "1"}, 1811 B: "2", 1812 }, 1813 }, 1814 { 1815 name: "AnonymousHeadNumberOmitEmpty", 1816 data: struct { 1817 structNumberOmitEmpty 1818 B json.Number `json:"b,omitempty"` 1819 }{ 1820 structNumberOmitEmpty: structNumberOmitEmpty{A: "1"}, 1821 B: "2", 1822 }, 1823 }, 1824 { 1825 name: "AnonymousHeadNumberString", 1826 data: struct { 1827 structNumberString 1828 B json.Number `json:"b,string"` 1829 }{ 1830 structNumberString: structNumberString{A: "1"}, 1831 B: "2", 1832 }, 1833 }, 1834 { 1835 name: "AnonymousHeadNumberStringOmitEmpty", 1836 data: struct { 1837 structNumberStringOmitEmpty 1838 B json.Number `json:"b,string,omitempty"` 1839 }{ 1840 structNumberStringOmitEmpty: structNumberStringOmitEmpty{A: "1"}, 1841 B: "2", 1842 }, 1843 }, 1844 1845 // PtrAnonymousHeadNumber 1846 { 1847 name: "PtrAnonymousHeadNumber", 1848 data: struct { 1849 *structNumber 1850 B json.Number `json:"b"` 1851 }{ 1852 structNumber: &structNumber{A: "1"}, 1853 B: "2", 1854 }, 1855 }, 1856 { 1857 name: "PtrAnonymousHeadNumberOmitEmpty", 1858 data: struct { 1859 *structNumberOmitEmpty 1860 B json.Number `json:"b,omitempty"` 1861 }{ 1862 structNumberOmitEmpty: &structNumberOmitEmpty{A: "1"}, 1863 B: "2", 1864 }, 1865 }, 1866 { 1867 name: "PtrAnonymousHeadNumberString", 1868 data: struct { 1869 *structNumberString 1870 B json.Number `json:"b,string"` 1871 }{ 1872 structNumberString: &structNumberString{A: "1"}, 1873 B: "2", 1874 }, 1875 }, 1876 { 1877 name: "PtrAnonymousHeadNumberStringOmitEmpty", 1878 data: struct { 1879 *structNumberStringOmitEmpty 1880 B json.Number `json:"b,string,omitempty"` 1881 }{ 1882 structNumberStringOmitEmpty: &structNumberStringOmitEmpty{A: "1"}, 1883 B: "2", 1884 }, 1885 }, 1886 1887 // NilPtrAnonymousHeadNumber 1888 { 1889 name: "NilPtrAnonymousHeadNumber", 1890 data: struct { 1891 *structNumber 1892 B json.Number `json:"b"` 1893 }{ 1894 structNumber: nil, 1895 B: "2", 1896 }, 1897 }, 1898 { 1899 name: "NilPtrAnonymousHeadNumberOmitEmpty", 1900 data: struct { 1901 *structNumberOmitEmpty 1902 B json.Number `json:"b,omitempty"` 1903 }{ 1904 structNumberOmitEmpty: nil, 1905 B: "2", 1906 }, 1907 }, 1908 { 1909 name: "NilPtrAnonymousHeadNumberString", 1910 data: struct { 1911 *structNumberString 1912 B json.Number `json:"b,string"` 1913 }{ 1914 structNumberString: nil, 1915 B: "2", 1916 }, 1917 }, 1918 { 1919 name: "NilPtrAnonymousHeadNumberStringOmitEmpty", 1920 data: struct { 1921 *structNumberStringOmitEmpty 1922 B json.Number `json:"b,string,omitempty"` 1923 }{ 1924 structNumberStringOmitEmpty: nil, 1925 B: "2", 1926 }, 1927 }, 1928 1929 // AnonymousHeadNumberPtr 1930 { 1931 name: "AnonymousHeadNumberPtr", 1932 data: struct { 1933 structNumberPtr 1934 B *json.Number `json:"b"` 1935 }{ 1936 structNumberPtr: structNumberPtr{A: numberptr("1")}, 1937 B: numberptr("2"), 1938 }, 1939 }, 1940 { 1941 name: "AnonymousHeadNumberPtrOmitEmpty", 1942 data: struct { 1943 structNumberPtrOmitEmpty 1944 B *json.Number `json:"b,omitempty"` 1945 }{ 1946 structNumberPtrOmitEmpty: structNumberPtrOmitEmpty{A: numberptr("1")}, 1947 B: numberptr("2"), 1948 }, 1949 }, 1950 { 1951 name: "AnonymousHeadNumberPtrString", 1952 data: struct { 1953 structNumberPtrString 1954 B *json.Number `json:"b,string"` 1955 }{ 1956 structNumberPtrString: structNumberPtrString{A: numberptr("1")}, 1957 B: numberptr("2"), 1958 }, 1959 }, 1960 { 1961 name: "AnonymousHeadNumberPtrStringOmitEmpty", 1962 data: struct { 1963 structNumberPtrStringOmitEmpty 1964 B *json.Number `json:"b,string,omitempty"` 1965 }{ 1966 structNumberPtrStringOmitEmpty: structNumberPtrStringOmitEmpty{A: numberptr("1")}, 1967 B: numberptr("2"), 1968 }, 1969 }, 1970 1971 // AnonymousHeadNumberPtrNil 1972 { 1973 name: "AnonymousHeadNumberPtrNil", 1974 data: struct { 1975 structNumberPtr 1976 B *json.Number `json:"b"` 1977 }{ 1978 structNumberPtr: structNumberPtr{A: nil}, 1979 B: numberptr("2"), 1980 }, 1981 }, 1982 { 1983 name: "AnonymousHeadNumberPtrNilOmitEmpty", 1984 data: struct { 1985 structNumberPtrOmitEmpty 1986 B *json.Number `json:"b,omitempty"` 1987 }{ 1988 structNumberPtrOmitEmpty: structNumberPtrOmitEmpty{A: nil}, 1989 B: numberptr("2"), 1990 }, 1991 }, 1992 { 1993 name: "AnonymousHeadNumberPtrNilString", 1994 data: struct { 1995 structNumberPtrString 1996 B *json.Number `json:"b,string"` 1997 }{ 1998 structNumberPtrString: structNumberPtrString{A: nil}, 1999 B: numberptr("2"), 2000 }, 2001 }, 2002 { 2003 name: "AnonymousHeadNumberPtrNilStringOmitEmpty", 2004 data: struct { 2005 structNumberPtrStringOmitEmpty 2006 B *json.Number `json:"b,string,omitempty"` 2007 }{ 2008 structNumberPtrStringOmitEmpty: structNumberPtrStringOmitEmpty{A: nil}, 2009 B: numberptr("2"), 2010 }, 2011 }, 2012 2013 // PtrAnonymousHeadNumberPtr 2014 { 2015 name: "PtrAnonymousHeadNumberPtr", 2016 data: struct { 2017 *structNumberPtr 2018 B *json.Number `json:"b"` 2019 }{ 2020 structNumberPtr: &structNumberPtr{A: numberptr("1")}, 2021 B: numberptr("2"), 2022 }, 2023 }, 2024 { 2025 name: "PtrAnonymousHeadNumberPtrOmitEmpty", 2026 data: struct { 2027 *structNumberPtrOmitEmpty 2028 B *json.Number `json:"b,omitempty"` 2029 }{ 2030 structNumberPtrOmitEmpty: &structNumberPtrOmitEmpty{A: numberptr("1")}, 2031 B: numberptr("2"), 2032 }, 2033 }, 2034 { 2035 name: "PtrAnonymousHeadNumberPtrString", 2036 data: struct { 2037 *structNumberPtrString 2038 B *json.Number `json:"b,string"` 2039 }{ 2040 structNumberPtrString: &structNumberPtrString{A: numberptr("1")}, 2041 B: numberptr("2"), 2042 }, 2043 }, 2044 { 2045 name: "PtrAnonymousHeadNumberPtrStringOmitEmpty", 2046 data: struct { 2047 *structNumberPtrStringOmitEmpty 2048 B *json.Number `json:"b,string,omitempty"` 2049 }{ 2050 structNumberPtrStringOmitEmpty: &structNumberPtrStringOmitEmpty{A: numberptr("1")}, 2051 B: numberptr("2"), 2052 }, 2053 }, 2054 2055 // NilPtrAnonymousHeadNumberPtr 2056 { 2057 name: "NilPtrAnonymousHeadNumberPtr", 2058 data: struct { 2059 *structNumberPtr 2060 B *json.Number `json:"b"` 2061 }{ 2062 structNumberPtr: nil, 2063 B: numberptr("2"), 2064 }, 2065 }, 2066 { 2067 name: "NilPtrAnonymousHeadNumberPtrOmitEmpty", 2068 data: struct { 2069 *structNumberPtrOmitEmpty 2070 B *json.Number `json:"b,omitempty"` 2071 }{ 2072 structNumberPtrOmitEmpty: nil, 2073 B: numberptr("2"), 2074 }, 2075 }, 2076 { 2077 name: "NilPtrAnonymousHeadNumberPtrString", 2078 data: struct { 2079 *structNumberPtrString 2080 B *json.Number `json:"b,string"` 2081 }{ 2082 structNumberPtrString: nil, 2083 B: numberptr("2"), 2084 }, 2085 }, 2086 { 2087 name: "NilPtrAnonymousHeadNumberPtrStringOmitEmpty", 2088 data: struct { 2089 *structNumberPtrStringOmitEmpty 2090 B *json.Number `json:"b,string,omitempty"` 2091 }{ 2092 structNumberPtrStringOmitEmpty: nil, 2093 B: numberptr("2"), 2094 }, 2095 }, 2096 2097 // AnonymousHeadNumberOnly 2098 { 2099 name: "AnonymousHeadNumberOnly", 2100 data: struct { 2101 structNumber 2102 }{ 2103 structNumber: structNumber{A: "1"}, 2104 }, 2105 }, 2106 { 2107 name: "AnonymousHeadNumberOnlyOmitEmpty", 2108 data: struct { 2109 structNumberOmitEmpty 2110 }{ 2111 structNumberOmitEmpty: structNumberOmitEmpty{A: "1"}, 2112 }, 2113 }, 2114 { 2115 name: "AnonymousHeadNumberOnlyString", 2116 data: struct { 2117 structNumberString 2118 }{ 2119 structNumberString: structNumberString{A: "1"}, 2120 }, 2121 }, 2122 { 2123 name: "AnonymousHeadNumberOnlyStringOmitEmpty", 2124 data: struct { 2125 structNumberStringOmitEmpty 2126 }{ 2127 structNumberStringOmitEmpty: structNumberStringOmitEmpty{A: "1"}, 2128 }, 2129 }, 2130 2131 // PtrAnonymousHeadNumberOnly 2132 { 2133 name: "PtrAnonymousHeadNumberOnly", 2134 data: struct { 2135 *structNumber 2136 }{ 2137 structNumber: &structNumber{A: "1"}, 2138 }, 2139 }, 2140 { 2141 name: "PtrAnonymousHeadNumberOnlyOmitEmpty", 2142 data: struct { 2143 *structNumberOmitEmpty 2144 }{ 2145 structNumberOmitEmpty: &structNumberOmitEmpty{A: "1"}, 2146 }, 2147 }, 2148 { 2149 name: "PtrAnonymousHeadNumberOnlyString", 2150 data: struct { 2151 *structNumberString 2152 }{ 2153 structNumberString: &structNumberString{A: "1"}, 2154 }, 2155 }, 2156 { 2157 name: "PtrAnonymousHeadNumberOnlyStringOmitEmpty", 2158 data: struct { 2159 *structNumberStringOmitEmpty 2160 }{ 2161 structNumberStringOmitEmpty: &structNumberStringOmitEmpty{A: "1"}, 2162 }, 2163 }, 2164 2165 // NilPtrAnonymousHeadNumberOnly 2166 { 2167 name: "NilPtrAnonymousHeadNumberOnly", 2168 data: struct { 2169 *structNumber 2170 }{ 2171 structNumber: nil, 2172 }, 2173 }, 2174 { 2175 name: "NilPtrAnonymousHeadNumberOnlyOmitEmpty", 2176 data: struct { 2177 *structNumberOmitEmpty 2178 }{ 2179 structNumberOmitEmpty: nil, 2180 }, 2181 }, 2182 { 2183 name: "NilPtrAnonymousHeadNumberOnlyString", 2184 data: struct { 2185 *structNumberString 2186 }{ 2187 structNumberString: nil, 2188 }, 2189 }, 2190 { 2191 name: "NilPtrAnonymousHeadNumberOnlyStringOmitEmpty", 2192 data: struct { 2193 *structNumberStringOmitEmpty 2194 }{ 2195 structNumberStringOmitEmpty: nil, 2196 }, 2197 }, 2198 2199 // AnonymousHeadNumberPtrOnly 2200 { 2201 name: "AnonymousHeadNumberPtrOnly", 2202 data: struct { 2203 structNumberPtr 2204 }{ 2205 structNumberPtr: structNumberPtr{A: numberptr("1")}, 2206 }, 2207 }, 2208 { 2209 name: "AnonymousHeadNumberPtrOnlyOmitEmpty", 2210 data: struct { 2211 structNumberPtrOmitEmpty 2212 }{ 2213 structNumberPtrOmitEmpty: structNumberPtrOmitEmpty{A: numberptr("1")}, 2214 }, 2215 }, 2216 { 2217 name: "AnonymousHeadNumberPtrOnlyString", 2218 data: struct { 2219 structNumberPtrString 2220 }{ 2221 structNumberPtrString: structNumberPtrString{A: numberptr("1")}, 2222 }, 2223 }, 2224 { 2225 name: "AnonymousHeadNumberPtrOnlyStringOmitEmpty", 2226 data: struct { 2227 structNumberPtrStringOmitEmpty 2228 }{ 2229 structNumberPtrStringOmitEmpty: structNumberPtrStringOmitEmpty{A: numberptr("1")}, 2230 }, 2231 }, 2232 2233 // AnonymousHeadNumberPtrNilOnly 2234 { 2235 name: "AnonymousHeadNumberPtrNilOnly", 2236 data: struct { 2237 structNumberPtr 2238 }{ 2239 structNumberPtr: structNumberPtr{A: nil}, 2240 }, 2241 }, 2242 { 2243 name: "AnonymousHeadNumberPtrNilOnlyOmitEmpty", 2244 data: struct { 2245 structNumberPtrOmitEmpty 2246 }{ 2247 structNumberPtrOmitEmpty: structNumberPtrOmitEmpty{A: nil}, 2248 }, 2249 }, 2250 { 2251 name: "AnonymousHeadNumberPtrNilOnlyString", 2252 data: struct { 2253 structNumberPtrString 2254 }{ 2255 structNumberPtrString: structNumberPtrString{A: nil}, 2256 }, 2257 }, 2258 { 2259 name: "AnonymousHeadNumberPtrNilOnlyStringOmitEmpty", 2260 data: struct { 2261 structNumberPtrStringOmitEmpty 2262 }{ 2263 structNumberPtrStringOmitEmpty: structNumberPtrStringOmitEmpty{A: nil}, 2264 }, 2265 }, 2266 2267 // PtrAnonymousHeadNumberPtrOnly 2268 { 2269 name: "PtrAnonymousHeadNumberPtrOnly", 2270 data: struct { 2271 *structNumberPtr 2272 }{ 2273 structNumberPtr: &structNumberPtr{A: numberptr("1")}, 2274 }, 2275 }, 2276 { 2277 name: "PtrAnonymousHeadNumberPtrOnlyOmitEmpty", 2278 data: struct { 2279 *structNumberPtrOmitEmpty 2280 }{ 2281 structNumberPtrOmitEmpty: &structNumberPtrOmitEmpty{A: numberptr("1")}, 2282 }, 2283 }, 2284 { 2285 name: "PtrAnonymousHeadNumberPtrOnlyString", 2286 data: struct { 2287 *structNumberPtrString 2288 }{ 2289 structNumberPtrString: &structNumberPtrString{A: numberptr("1")}, 2290 }, 2291 }, 2292 { 2293 name: "PtrAnonymousHeadNumberPtrOnlyStringOmitEmpty", 2294 data: struct { 2295 *structNumberPtrStringOmitEmpty 2296 }{ 2297 structNumberPtrStringOmitEmpty: &structNumberPtrStringOmitEmpty{A: numberptr("1")}, 2298 }, 2299 }, 2300 2301 // NilPtrAnonymousHeadNumberPtrOnly 2302 { 2303 name: "NilPtrAnonymousHeadNumberPtrOnly", 2304 data: struct { 2305 *structNumberPtr 2306 }{ 2307 structNumberPtr: nil, 2308 }, 2309 }, 2310 { 2311 name: "NilPtrAnonymousHeadNumberPtrOnlyOmitEmpty", 2312 data: struct { 2313 *structNumberPtrOmitEmpty 2314 }{ 2315 structNumberPtrOmitEmpty: nil, 2316 }, 2317 }, 2318 { 2319 name: "NilPtrAnonymousHeadNumberPtrOnlyString", 2320 data: struct { 2321 *structNumberPtrString 2322 }{ 2323 structNumberPtrString: nil, 2324 }, 2325 }, 2326 { 2327 name: "NilPtrAnonymousHeadNumberPtrOnlyStringOmitEmpty", 2328 data: struct { 2329 *structNumberPtrStringOmitEmpty 2330 }{ 2331 structNumberPtrStringOmitEmpty: nil, 2332 }, 2333 }, 2334 } 2335 for _, test := range tests { 2336 for _, indent := range []bool{true, false} { 2337 for _, htmlEscape := range []bool{true, false} { 2338 t.Run(fmt.Sprintf("%s_indent_%t_escape_%t", test.name, indent, htmlEscape), func(t *testing.T) { 2339 var buf bytes.Buffer 2340 enc := json.NewEncoder(&buf) 2341 enc.SetEscapeHTML(htmlEscape) 2342 if indent { 2343 enc.SetIndent("", " ") 2344 } 2345 if err := enc.Encode(test.data); err != nil { 2346 t.Fatalf("%s(htmlEscape:%v,indent:%v): %+v: %s", test.name, htmlEscape, indent, test.data, err) 2347 } 2348 stdresult := encodeByEncodingJSON(test.data, indent, htmlEscape) 2349 if buf.String() != stdresult { 2350 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()) 2351 } 2352 }) 2353 } 2354 } 2355 } 2356 }