1/* 2* Copyright (c) 2024 Shenzhen Kaihong Digital Industry Development Co., Ltd. 3* Licensed under the Apache License, Version 2.0 (the "License"); 4* you may not use this file except in compliance with the License. 5* You may obtain a copy of the License at 6* 7* http://www.apache.org/licenses/LICENSE-2.0 8* 9* Unless required by applicable law or agreed to in writing, software 10* distributed under the License is distributed on an "AS IS" BASIS, 11* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12* See the License for the specific language governing permissions and 13* limitations under the License. 14*/ 15 16import * as assert from 'assert'; 17 18// You can import and use all API from the 'vscode' module 19// as well as import your extension to test it 20import * as vscode from 'vscode'; 21import * as genDts from '../../../gen/gendts' 22import { ClassObj, EnumObj, FuncObj, GenInfo, ParseObj, StructObj, UnionObj } from '../../../gen/datatype'; 23import * as fs from 'fs'; 24 25suite('Gendts_unions_Suite', () => { 26 //1, 测试一般情况 27 test('getDtsUnions_test_1', () => { 28 //1. alias为空 29 let unions: UnionObj[] = [ 30 { 31 name: 'UnionObj', 32 alias: '', 33 members: [ 34 { 35 type: 'int', 36 name: 'v1', 37 arraySize: -1, 38 arraySizeList: [] 39 }, 40 { 41 type: 'double', 42 name: 'v2', 43 arraySize: -1, 44 arraySizeList: [] 45 } 46 ], 47 }, 48 ]; 49 let rootInfo: GenInfo = { 50 parseObj: { 51 enums: [], 52 unions: unions, 53 structs: [], 54 classes: [], 55 funcs: [] 56 }, 57 rawFilePath: 'e:\\test.h', 58 fileName: 'test', 59 }; 60 let resStr = genDts.getDtsUnions(rootInfo); 61 assert.strictEqual(resStr, 'export type UnionObj = number | number ;\n\n'); 62 63 //2. alias不为空但和name相同 64 unions = [ 65 { 66 name: 'UnionObj', 67 alias: 'UnionObj', 68 members: [ 69 { 70 type: 'int', 71 name: 'v1', 72 arraySize: -1, 73 arraySizeList: [] 74 }, 75 { 76 type: 'double', 77 name: 'v2', 78 arraySize: -1, 79 arraySizeList: [] 80 } 81 ], 82 }, 83 ]; 84 rootInfo = { 85 parseObj: { 86 enums: [], 87 unions: unions, 88 structs: [], 89 classes: [], 90 funcs: [] 91 }, 92 rawFilePath: 'e:\\test.h', 93 fileName: 'test', 94 }; 95 resStr = genDts.getDtsUnions(rootInfo); 96 assert.strictEqual(resStr, 'export type UnionObj = number | number ;\n\n'); 97 98 //3. alias不为空且和name不同 99 unions = [ 100 { 101 name: 'UnionObj', 102 alias: 'UnionObject', 103 members: [ 104 { 105 type: 'int', 106 name: 'v1', 107 arraySize: -1, 108 arraySizeList: [] 109 }, 110 { 111 type: 'double', 112 name: 'v2', 113 arraySize: -1, 114 arraySizeList: [] 115 } 116 ], 117 }, 118 ]; 119 rootInfo = { 120 parseObj: { 121 enums: [], 122 unions: unions, 123 structs: [], 124 classes: [], 125 funcs: [] 126 }, 127 rawFilePath: 'e:\\test.h', 128 fileName: 'test', 129 }; 130 resStr = genDts.getDtsUnions(rootInfo); 131 assert.strictEqual(resStr, 'export type UnionObj = number | number ;\n\nexport type UnionObject = UnionObj;\n\n'); 132 }); 133 134 //2, 测试边界情况 135 test('getDtsUnions_test_2', () => { 136 //1.members仅有一个元素 137 let unions: UnionObj[] = [ 138 { 139 name: 'OperationType', 140 alias: '', 141 members: [ 142 { 143 type: 'int', 144 name: 'len', 145 arraySize: -1, 146 arraySizeList: [] 147 } 148 ] 149 } 150 ] 151 let rootInfo: GenInfo = { 152 parseObj: { 153 enums: [], 154 unions: unions, 155 structs: [], 156 classes: [], 157 funcs: [] 158 }, 159 rawFilePath: 'e:\\test.h', 160 fileName: 'test', 161 }; 162 let resStr = genDts.getDtsUnions(rootInfo); 163 assert.strictEqual(resStr, 'export type OperationType = number ;\n\n'); 164 //2.members有多个元素 165 unions = [ 166 { 167 name: 'OperationType', 168 alias: '', 169 members: [ 170 { 171 type: 'char', 172 name: 'ch', 173 arraySize: -1, 174 arraySizeList: [] 175 }, 176 { 177 type: 'wchar_t', 178 name: 'wch', 179 arraySize: -1, 180 arraySizeList: [] 181 }, 182 { 183 type: 'char8_t', 184 name: 'ch8', 185 arraySize: -1, 186 arraySizeList: [] 187 }, 188 { 189 type: 'char16_t', 190 name: 'ch16', 191 arraySize: -1, 192 arraySizeList: [] 193 }, 194 { 195 type: 'char32_t', 196 name: 'ch32', 197 arraySize: -1, 198 arraySizeList: [] 199 }, 200 { 201 type: 'std::string', 202 name: 'str', 203 arraySize: -1, 204 arraySizeList: [] 205 }, 206 { 207 type: 'std::wstring', 208 name: 'wstr', 209 arraySize: -1, 210 arraySizeList: [] 211 }, 212 { 213 type: 'std::u16string', 214 name: 'su16sname', 215 arraySize: -1, 216 arraySizeList: [] 217 }, 218 { 219 type: 'std::u32string', 220 name: 'su32sname', 221 arraySize: -1, 222 arraySizeList: [] 223 }, 224 { 225 type: 'std::basic_string', 226 name: 'sbsname', 227 arraySize: -1, 228 arraySizeList: [] 229 }, 230 { 231 type: 'int', 232 name: 'len', 233 arraySize: -1, 234 arraySizeList: [] 235 }, 236 { 237 type: 'size_t', 238 name: 'size', 239 arraySize: -1, 240 arraySizeList: [] 241 }, 242 { 243 type: 'uint8_t', 244 name: 'u8int', 245 arraySize: -1, 246 arraySizeList: [] 247 }, 248 { 249 type: 'uint16_t', 250 name: 'u16int', 251 arraySize: -1, 252 arraySizeList: [] 253 }, 254 { 255 type: 'uint32_t', 256 name: 'u32int', 257 arraySize: -1, 258 arraySizeList: [] 259 }, 260 { 261 type: 'uint64_t', 262 name: 'u64int', 263 arraySize: -1, 264 arraySizeList: [] 265 }, 266 { 267 type: 'int8_t', 268 name: 'int8', 269 arraySize: -1, 270 arraySizeList: [] 271 }, 272 { 273 type: 'int16_t', 274 name: 'int16', 275 arraySize: -1, 276 arraySizeList: [] 277 }, 278 { 279 type: 'int32_t', 280 name: 'int32', 281 arraySize: -1, 282 arraySizeList: [] 283 }, 284 { 285 type: 'int64_t', 286 name: 'int64', 287 arraySize: -1, 288 arraySizeList: [] 289 }, 290 { 291 type: 'short', 292 name: 'slen', 293 arraySize: -1, 294 arraySizeList: [] 295 }, 296 { 297 type: 'unsigned', 298 name: 'unum', 299 arraySize: -1, 300 arraySizeList: [] 301 }, 302 { 303 type: 'long', 304 name: 'llen', 305 arraySize: -1, 306 arraySizeList: [] 307 }, 308 { 309 type: 'long long', 310 name: 'llint', 311 arraySize: -1, 312 arraySizeList: [] 313 }, 314 { 315 type: 'float', 316 name: 'width', 317 arraySize: -1, 318 arraySizeList: [] 319 }, 320 { 321 type: 'double', 322 name: 'dlen', 323 arraySize: -1, 324 arraySizeList: [] 325 }, 326 { 327 type: 'long double', 328 name: 'ldlen', 329 arraySize: -1, 330 arraySizeList: [] 331 }, 332 { 333 type: 'char', 334 name: 'name', 335 arraySize: 20, 336 arraySizeList: [20, 10] 337 }, 338 { 339 type: 'char', 340 name: 'ch3', 341 arraySize: 10, 342 arraySizeList: [10, 20, 30] 343 }, 344 { 345 type: 'int', 346 name: 'len3', 347 arraySize: 10, 348 arraySizeList: [10, 20, 30] 349 }, 350 { 351 type: 'short', 352 name: 'slen3', 353 arraySize: 10, 354 arraySizeList: [10, 20, 30] 355 }, 356 { 357 type: 'long', 358 name: 'llen3', 359 arraySize: 10, 360 arraySizeList: [10, 20, 30] 361 }, 362 { 363 type: 'long long', 364 name: 'llint3', 365 arraySize: 10, 366 arraySizeList: [10, 20, 30] 367 }, 368 { 369 type: 'float', 370 name: 'width3', 371 arraySize: 10, 372 arraySizeList: [10, 20, 30] 373 }, 374 { 375 type: 'double', 376 name: 'dlens', 377 arraySize: 10, 378 arraySizeList: [10, 20, 30] 379 }, 380 { 381 type: 'long double', 382 name: 'ldlen3', 383 arraySize: 10, 384 arraySizeList: [10, 20, 30] 385 }, 386 { 387 type: 'signed char', 388 name: 'sch', 389 arraySize: -1, 390 arraySizeList: [] 391 }, 392 { 393 type: 'signed int', 394 name: 'silen', 395 arraySize: -1, 396 arraySizeList: [] 397 }, 398 { 399 type: 'signed short', 400 name: 'slen', 401 arraySize: -1, 402 arraySizeList: [] 403 }, 404 { 405 type: 'signed long', 406 name: 'sllen', 407 arraySize: -1, 408 arraySizeList: [] 409 }, 410 { 411 type: 'signed long long', 412 name: 'sllint', 413 arraySize: -1, 414 arraySizeList: [] 415 }, 416 { 417 type: 'signed float', 418 name: 'swidth', 419 arraySize: -1, 420 arraySizeList: [] 421 }, 422 { 423 type: 'signed double', 424 name: 'sdlen', 425 arraySize: -1, 426 arraySizeList: [] 427 }, 428 { 429 type: 'unsigned char', 430 name: 'uch', 431 arraySize: -1, 432 arraySizeList: [] 433 }, 434 { 435 type: 'unsigned int', 436 name: 'ulen', 437 arraySize: -1, 438 arraySizeList: [] 439 }, 440 { 441 type: 'unsigned short', 442 name: 'uslen', 443 arraySize: -1, 444 arraySizeList: [] 445 }, 446 { 447 type: 'unsigned long', 448 name: 'ullen', 449 arraySize: -1, 450 arraySizeList: [] 451 }, 452 { 453 type: 'unsigned long long', 454 name: 'ullint', 455 arraySize: -1, 456 arraySizeList: [] 457 }, 458 { 459 type: 'unsigned float', 460 name: 'uwidth', 461 arraySize: -1, 462 arraySizeList: [] 463 }, 464 { 465 type: 'unsigned double', 466 name: 'udlen', 467 arraySize: -1, 468 arraySizeList: [] 469 }, 470 { 471 type: 'unsigned long double', 472 name: 'uld', 473 arraySize: -1, 474 arraySizeList: [] 475 }, 476 { 477 type: 'bool', 478 name: 'bflag', 479 arraySize: -1, 480 arraySizeList: [] 481 }, 482 { 483 type: 'std::map<char, float>', 484 name: 'Map', 485 arraySize: -1, 486 arraySizeList: [] 487 }, 488 { 489 type: 'std::vector<int>', 490 name: 'svlist', 491 arraySize: -1, 492 arraySizeList: [] 493 }, 494 { 495 type: 'std::deque<int>', 496 name: 'sdlist', 497 arraySize: -1, 498 arraySizeList: [] 499 }, 500 { 501 type: 'std::list<int>', 502 name: 'slst', 503 arraySize: -1, 504 arraySizeList: [] 505 }, 506 { 507 type: 'std::forward_list<int>', 508 name: 'sflist', 509 arraySize: -1, 510 arraySizeList: [] 511 }, 512 { 513 type: 'std::array<int>', 514 name: 'salist', 515 arraySize: -1, 516 arraySizeList: [] 517 }, 518 { 519 type: 'std::stack<int>', 520 name: 'sqstack', 521 arraySize: -1, 522 arraySizeList: [] 523 }, 524 { 525 type: 'std::queue<int>', 526 name: 'sqlist', 527 arraySize: -1, 528 arraySizeList: [] 529 }, 530 { 531 type: 'std::priority_queue<int>', 532 name: 'spqlist', 533 arraySize: -1, 534 arraySizeList: [] 535 }, 536 { 537 type: 'std::pair<double, int>', 538 name: 'sppair', 539 arraySize: -1, 540 arraySizeList: [] 541 }, 542 { 543 type: 'std::map<doiuble, int>', 544 name: 'smap', 545 arraySize: -1, 546 arraySizeList: [] 547 }, 548 { 549 type: 'std::multimap<double, int>', 550 name: 'smmap', 551 arraySize: -1, 552 arraySizeList: [] 553 }, 554 { 555 type: 'std::set<double, int>', 556 name: 'sset', 557 arraySize: -1, 558 arraySizeList: [] 559 }, 560 { 561 type: 'std::multiset<double, int>', 562 name: 'smset', 563 arraySize: -1, 564 arraySizeList: [] 565 }, 566 { 567 type: 'std::unordered_map<double, int>', 568 name: 'sumap', 569 arraySize: -1, 570 arraySizeList: [] 571 }, 572 { 573 type: 'std::unordered_multimap<double, int>', 574 name: 'summap', 575 arraySize: -1, 576 arraySizeList: [] 577 }, 578 { 579 type: 'std::unordered_set<double, int>', 580 name: 'suset', 581 arraySize: -1, 582 arraySizeList: [] 583 }, 584 { 585 type: 'std::unordered_multiset<double, int>', 586 name: 'sumset', 587 arraySize: -1, 588 arraySizeList: [] 589 }, 590 { 591 type: 'std::vector<int>::iterator', 592 name: 'svlistIter', 593 arraySize: -1, 594 arraySizeList: [] 595 }, 596 { 597 type: 'std::deque<int>::iterator', 598 name: 'sdlistIter', 599 arraySize: -1, 600 arraySizeList: [] 601 }, 602 { 603 type: 'std::list<int>::iterator', 604 name: 'slistIter', 605 arraySize: -1, 606 arraySizeList: [] 607 }, 608 { 609 type: 'std::forward_list<int>::iterator', 610 name: 'sflistIter', 611 arraySize: -1, 612 arraySizeList: [] 613 }, 614 { 615 type: 'std::array<int>::iterator', 616 name: 'salistIter', 617 arraySize: -1, 618 arraySizeList: [] 619 }, 620 { 621 type: 'std::stack<int>::iterator', 622 name: 'sqstackIter', 623 arraySize: -1, 624 arraySizeList: [] 625 }, 626 { 627 type: 'std::queue<int>::iterator', 628 name: 'sqqueIter', 629 arraySize: -1, 630 arraySizeList: [] 631 }, 632 { 633 type: 'std::priority_queue<int>::iterator', 634 name: 'spqlistIter', 635 arraySize: -1, 636 arraySizeList: [] 637 }, 638 { 639 type: 'std::pair<double, int>::iterator', 640 name: 'sppairIter', 641 arraySize: -1, 642 arraySizeList: [] 643 }, 644 { 645 type: 'std::map<double, int>::iterator', 646 name: 'smapIter', 647 arraySize: -1, 648 arraySizeList: [] 649 }, 650 { 651 type: 'std::multimap<double, int>::iterator', 652 name: 'smmapIter', 653 arraySize: -1, 654 arraySizeList: [] 655 }, 656 { 657 type: 'std::set<double, int>::iterator', 658 name: 'ssetIter', 659 arraySize: -1, 660 arraySizeList: [] 661 }, 662 { 663 type: 'std::multiset<double, int>::iterator', 664 name: 'smsetIter', 665 arraySize: -1, 666 arraySizeList: [] 667 }, 668 { 669 type: 'std::unordered_map<double, int>::iterator', 670 name: 'sumapIter', 671 arraySize: -1, 672 arraySizeList: [] 673 }, 674 { 675 type: 'std::unordered_multimap<double, int>::iterator', 676 name: 'summapIter', 677 arraySize: -1, 678 arraySizeList: [] 679 }, 680 { 681 type: 'std::unordered_set<double, int>::iterator', 682 name: 'susetIter', 683 arraySize: -1, 684 arraySizeList: [] 685 }, 686 { 687 type: 'std::unordered_multiset<double, int>::iterator', 688 name: 'sumsetIter', 689 arraySize: -1, 690 arraySizeList: [] 691 }, 692 { 693 type: 'std::function<int(int, int)>', 694 name: 'func', 695 arraySize: -1, 696 arraySizeList: [] 697 }, 698 { 699 type: 'std::tuple<int, float, double>', 700 name: 'myTuple', 701 arraySize: -1, 702 arraySizeList: [] 703 }, 704 { 705 type: 'std::complex<double>', 706 name: 'myComplex', 707 arraySize: -1, 708 arraySizeList: [] 709 }, 710 { 711 type: 'std::valarray<int>', 712 name: 'myValarray', 713 arraySize: -1, 714 arraySizeList: [] 715 }, 716 { 717 type: 'std::time_t', 718 name: 'myTimet', 719 arraySize: -1, 720 arraySizeList: [] 721 }, 722 { 723 type: 'std::clock_t', 724 name: 'myClock', 725 arraySize: -1, 726 arraySizeList: [] 727 }, 728 { 729 type: 'std::tm', 730 name: 'myTm', 731 arraySize: -1, 732 arraySizeList: [] 733 } 734 ] 735 } 736 ] 737 rootInfo = { 738 parseObj: { 739 enums: [], 740 unions: unions, 741 structs: [], 742 classes: [], 743 funcs: [] 744 }, 745 rawFilePath: 'e:\\test.h', 746 fileName: 'test', 747 }; 748 resStr = genDts.getDtsUnions(rootInfo); 749 assert.strictEqual(resStr, 'export type OperationType = string | string | string | string | string | string | ' + 750 'string | string | string | string | number | number | number | number | number | number | number | number | ' + 751 'number | number | number | number | number | number | number | number | number | string | string | number | ' + 752 'number | number | number | number | number | number | string | number | number | number | number | number | ' + 753 'number | string | number | number | number | number | number | number | number | boolean | ' + 754 'Map<string, number> | Array<number> | Array<number> | Array<number> | Array<number> | Array<number> | ' + 755 'Array<number> | Array<number> | Array<number> | [number, number] | Map<any, number> | Map<number, number> | ' + 756 'Set<number> | Set<number> | Map<number, number> | Map<number, number> | Set<number> | Set<number> | ' + 757 'IterableIterator<Array<number>> | IterableIterator<Array<number>> | IterableIterator<Array<number>> | ' + 758 'IterableIterator<Array<number>> | IterableIterator<Array<number>> | IterableIterator<Array<number>> | ' + 759 'IterableIterator<Array<number>> | IterableIterator<Array<number>> | IterableIterator<[number, number]> | ' + 760 'IterableIterator<Map<number, number>> | IterableIterator<Map<number, number>> | ' + 761 'IterableIterator<Set<number>> | IterableIterator<Set<number>> | IterableIterator<Map<number, number>> | ' + 762 'IterableIterator<Map<number, number>> | IterableIterator<Set<number>> | IterableIterator<Set<number>> | ' + 763 '(param0: number, param1: number)=>number | [number, number, number] | {real: number, imag: number} | ' + 764 'Array<number> | Date | Date | Date ;\n\n'); 765 //3.unions有两个成员 766 unions = [ 767 { 768 name: 'OType', 769 alias: '', 770 members: [ 771 { 772 type: 'int', 773 name: 'len', 774 arraySize: -1, 775 arraySizeList: [] 776 } 777 ] 778 }, 779 { 780 name: 'TOTSize1', 781 alias: '', 782 members:[ 783 { 784 type: 'int', 785 name: 'len', 786 arraySize: -1, 787 arraySizeList: [] 788 } 789 ] 790 } 791 ] 792 rootInfo = { 793 parseObj: { 794 enums: [], 795 unions: unions, 796 structs: [], 797 classes: [], 798 funcs: [] 799 }, 800 rawFilePath: 'e:\\test.h', 801 fileName: 'test', 802 }; 803 resStr = genDts.getDtsUnions(rootInfo); 804 assert.strictEqual(resStr, 'export type OType = number ;\n\nexport type TOTSize1 = number ;\n\n'); 805 //4.unions有多个成员 806 unions = [ 807 { 808 name: 'TEST_1', 809 alias: '', 810 members: [ 811 { 812 type: 'int', 813 name: 'len', 814 arraySize: -1, 815 arraySizeList: [] 816 }, 817 ] 818 }, 819 { 820 name: 'TEST_2', 821 alias: '', 822 members:[ 823 { 824 type: 'char', 825 name: 'ch', 826 arraySize: 10, 827 arraySizeList: [10] 828 } 829 ] 830 }, 831 { 832 name: 'TEST_3', 833 alias: '', 834 members:[ 835 { 836 type: 'short', 837 name: 'slen', 838 arraySize: -1, 839 arraySizeList: [] 840 } 841 ] 842 }, 843 { 844 name: 'TEST_4', 845 alias: '', 846 members:[ 847 { 848 type: 'long', 849 name: 'llen', 850 arraySize: -1, 851 arraySizeList: [] 852 } 853 ] 854 }, 855 { 856 name: 'TEST_5', 857 alias: '', 858 members:[ 859 { 860 type: 'long long', 861 name: 'llint', 862 arraySize: -1, 863 arraySizeList: [] 864 } 865 ] 866 }, 867 { 868 name: 'TEST_6', 869 alias: '', 870 members:[ 871 { 872 type: 'float', 873 name: 'width', 874 arraySize: -1, 875 arraySizeList: [] 876 } 877 ] 878 }, 879 { 880 name: 'TEST_7', 881 alias: '', 882 members:[ 883 { 884 type: 'double', 885 name: 'dlen', 886 arraySize: -1, 887 arraySizeList: [] 888 } 889 ] 890 }, 891 { 892 name: 'TEST_8', 893 alias: '', 894 members:[ 895 { 896 type: 'long double', 897 name: 'ldlen', 898 arraySize: -1, 899 arraySizeList: [] 900 } 901 ] 902 }, 903 { 904 name: 'TEST_9', 905 alias: '', 906 members:[ 907 { 908 type: 'wchar_t', 909 name: 'wch', 910 arraySize: -1, 911 arraySizeList: [] 912 } 913 ] 914 }, 915 { 916 name: 'TEST_10', 917 alias: '', 918 members:[ 919 { 920 type: 'char', 921 name: 'name', 922 arraySize: 20, 923 arraySizeList: [20, 10] 924 } 925 ] 926 }, 927 { 928 name: 'TEST_11', 929 alias: '', 930 members:[ 931 { 932 type: 'char', 933 name: 'ch3', 934 arraySize: 10, 935 arraySizeList: [10, 20, 30] 936 } 937 ] 938 }, 939 { 940 name: 'TEST_12', 941 alias: '', 942 members:[ 943 { 944 type: 'int', 945 name: 'len3', 946 arraySize: 10, 947 arraySizeList: [10, 20, 30] 948 } 949 ] 950 }, 951 { 952 name: 'TEST_13', 953 alias: '', 954 members:[ 955 { 956 type: 'short', 957 name: 'slen3', 958 arraySize: 10, 959 arraySizeList: [10, 20, 30] 960 } 961 ] 962 }, 963 { 964 name: 'TEST_14', 965 alias: '', 966 members:[ 967 { 968 type: 'long', 969 name: 'llen3', 970 arraySize: 10, 971 arraySizeList: [10, 20, 30] 972 } 973 ] 974 }, 975 { 976 name: 'TEST_15', 977 alias: '', 978 members:[ 979 { 980 type: 'long long', 981 name: 'llint3', 982 arraySize: 10, 983 arraySizeList: [10, 20, 30] 984 } 985 ] 986 }, 987 { 988 name: 'TEST_16', 989 alias: '', 990 members:[ 991 { 992 type: 'float', 993 name: 'width3', 994 arraySize: 10, 995 arraySizeList: [10, 20, 30] 996 } 997 ] 998 }, 999 { 1000 name: 'TEST_17', 1001 alias: '', 1002 members:[ 1003 { 1004 type: 'double', 1005 name: 'dlen3', 1006 arraySize: 10, 1007 arraySizeList: [10, 20, 30] 1008 } 1009 ] 1010 }, 1011 { 1012 name: 'TEST_18', 1013 alias: '', 1014 members:[ 1015 { 1016 type: 'long double', 1017 name: 'ldlen3', 1018 arraySize: 10, 1019 arraySizeList: [10, 20, 30] 1020 } 1021 ] 1022 }, 1023 { 1024 name: 'TEST_19', 1025 alias: '', 1026 members:[ 1027 { 1028 type: 'wchar_t', 1029 name: 'wch3', 1030 arraySize: 10, 1031 arraySizeList: [10, 20, 30] 1032 } 1033 ] 1034 }, 1035 { 1036 name: 'TEST_20', 1037 alias: '', 1038 members:[ 1039 { 1040 type: 'signed char', 1041 name: 'sch', 1042 arraySize: -1, 1043 arraySizeList: [] 1044 } 1045 ] 1046 }, 1047 { 1048 name: 'TEST_21', 1049 alias: '', 1050 members:[ 1051 { 1052 type: 'signed int', 1053 name: 'silen', 1054 arraySize: -1, 1055 arraySizeList: [] 1056 } 1057 ] 1058 }, 1059 { 1060 name: 'TEST_22', 1061 alias: '', 1062 members:[ 1063 { 1064 type: 'signed short', 1065 name: 'slen', 1066 arraySize: -1, 1067 arraySizeList: [] 1068 } 1069 ] 1070 }, 1071 { 1072 name: 'TEST_23', 1073 alias: '', 1074 members:[ 1075 { 1076 type: 'signed long', 1077 name: 'sllen', 1078 arraySize: -1, 1079 arraySizeList: [] 1080 } 1081 ] 1082 }, 1083 { 1084 name: 'TEST_24', 1085 alias: '', 1086 members:[ 1087 { 1088 type: 'signed long long', 1089 name: 'sllint', 1090 arraySize: -1, 1091 arraySizeList: [] 1092 } 1093 ] 1094 }, 1095 { 1096 name: 'TEST_25', 1097 alias: '', 1098 members:[ 1099 { 1100 type: 'signed float', 1101 name: 'swidth', 1102 arraySize: -1, 1103 arraySizeList: [] 1104 } 1105 ] 1106 }, 1107 { 1108 name: 'TEST_26', 1109 alias: '', 1110 members:[ 1111 { 1112 type: 'signed double', 1113 name: 'sdlen', 1114 arraySize: -1, 1115 arraySizeList: [] 1116 } 1117 ] 1118 }, 1119 { 1120 name: 'TEST_27', 1121 alias: '', 1122 members:[ 1123 { 1124 type: 'char*', 1125 name: 'c', 1126 arraySize: -1, 1127 arraySizeList: [] 1128 } 1129 ] 1130 }, 1131 { 1132 name: 'TEST_28', 1133 alias: '', 1134 members:[ 1135 { 1136 type: 'unsigned char', 1137 name: 'uch', 1138 arraySize: -1, 1139 arraySizeList: [] 1140 } 1141 ] 1142 }, 1143 { 1144 name: 'TEST_29', 1145 alias: '', 1146 members:[ 1147 { 1148 type: 'unsigned int', 1149 name: 'ulen', 1150 arraySize: -1, 1151 arraySizeList: [] 1152 } 1153 ] 1154 }, 1155 { 1156 name: 'TEST_30', 1157 alias: '', 1158 members:[ 1159 { 1160 type: 'unsigned short', 1161 name: 'uslen', 1162 arraySize: -1, 1163 arraySizeList: [] 1164 } 1165 ] 1166 }, 1167 { 1168 name: 'TEST_31', 1169 alias: '', 1170 members:[ 1171 { 1172 type: 'unsigned long', 1173 name: 'ullen', 1174 arraySize: -1, 1175 arraySizeList: [] 1176 } 1177 ] 1178 }, 1179 { 1180 name: 'TEST_32', 1181 alias: '', 1182 members:[ 1183 { 1184 type: 'unsigned long long', 1185 name: 'ullint', 1186 arraySize: -1, 1187 arraySizeList: [] 1188 } 1189 ] 1190 }, 1191 { 1192 name: 'TEST_33', 1193 alias: '', 1194 members:[ 1195 { 1196 type: 'unsigned float', 1197 name: 'uwidth', 1198 arraySize: -1, 1199 arraySizeList: [] 1200 } 1201 ] 1202 }, 1203 { 1204 name: 'TEST_34', 1205 alias: '', 1206 members:[ 1207 { 1208 type: 'unsigned double', 1209 name: 'udlen', 1210 arraySize: -1, 1211 arraySizeList: [] 1212 } 1213 ] 1214 }, 1215 { 1216 name: 'TEST_35', 1217 alias: '', 1218 members:[ 1219 { 1220 type: 'unsigned long double', 1221 name: 'uld', 1222 arraySize: -1, 1223 arraySizeList: [] 1224 } 1225 ] 1226 }, 1227 { 1228 name: 'TEST_36', 1229 alias: '', 1230 members:[ 1231 { 1232 type: 'int*', 1233 name: 'i', 1234 arraySize: -1, 1235 arraySizeList: [] 1236 } 1237 ] 1238 }, 1239 { 1240 name: 'TEST_37', 1241 alias: '', 1242 members:[ 1243 { 1244 type: 'bool', 1245 name: 'bflag', 1246 arraySize: -1, 1247 arraySizeList: [] 1248 } 1249 ] 1250 }, 1251 { 1252 name: 'TEST_38', 1253 alias: '', 1254 members:[ 1255 { 1256 type: 'long int', 1257 name: 'silong', 1258 arraySize: -1, 1259 arraySizeList: [] 1260 } 1261 ] 1262 }, 1263 { 1264 name: 'TEST_39', 1265 alias: '', 1266 members:[ 1267 { 1268 type: 'long long int', 1269 name: 'llinum', 1270 arraySize: -1, 1271 arraySizeList: [] 1272 } 1273 ] 1274 }, 1275 { 1276 name: 'TEST_40', 1277 alias: '', 1278 members:[ 1279 { 1280 type: 'char8_t', 1281 name: 'c8name', 1282 arraySize: -1, 1283 arraySizeList: [] 1284 } 1285 ] 1286 }, 1287 { 1288 name: 'TEST_41', 1289 alias: '', 1290 members:[ 1291 { 1292 type: 'char16_t', 1293 name: 'c16name', 1294 arraySize: -1, 1295 arraySizeList: [] 1296 } 1297 ] 1298 }, 1299 { 1300 name: 'TEST_42', 1301 alias: '', 1302 members:[ 1303 { 1304 type: 'char32_t', 1305 name: 'c32name', 1306 arraySize: -1, 1307 arraySizeList: [] 1308 } 1309 ] 1310 }, 1311 { 1312 name: 'TEST_43', 1313 alias: '', 1314 members:[ 1315 { 1316 type: 'char64_t', 1317 name: 'c64name', 1318 arraySize: -1, 1319 arraySizeList: [] 1320 } 1321 ] 1322 }, 1323 { 1324 name: 'TEST_44', 1325 alias: '', 1326 members:[ 1327 { 1328 type: 'std::string', 1329 name: 'str', 1330 arraySize: -1, 1331 arraySizeList: [] 1332 } 1333 ] 1334 }, 1335 { 1336 name: 'TEST_45', 1337 alias: '', 1338 members:[ 1339 { 1340 type: 'std::wstring', 1341 name: 'swsname', 1342 arraySize: -1, 1343 arraySizeList: [] 1344 } 1345 ] 1346 }, 1347 { 1348 name: 'TEST_46', 1349 alias: '', 1350 members:[ 1351 { 1352 type: 'std::u16string', 1353 name: 'su16sname', 1354 arraySize: -1, 1355 arraySizeList: [] 1356 } 1357 ] 1358 }, 1359 { 1360 name: 'TEST_47', 1361 alias: '', 1362 members:[ 1363 { 1364 type: 'std::u32string', 1365 name: 'su32sname', 1366 arraySize: -1, 1367 arraySizeList: [] 1368 } 1369 ] 1370 }, 1371 { 1372 name: 'TEST_48', 1373 alias: '', 1374 members:[ 1375 { 1376 type: 'std::basic_string', 1377 name: 'sbsname', 1378 arraySize: -1, 1379 arraySizeList: [] 1380 } 1381 ] 1382 }, 1383 { 1384 name: 'TEST_49', 1385 alias: '', 1386 members:[ 1387 { 1388 type: 'std::vector<int>', 1389 name: 'svlist', 1390 arraySize: -1, 1391 arraySizeList: [] 1392 } 1393 ] 1394 }, 1395 { 1396 name: 'TEST_50', 1397 alias: '', 1398 members:[ 1399 { 1400 type: 'std::deque<int>', 1401 name: 'sdlist', 1402 arraySize: -1, 1403 arraySizeList: [] 1404 } 1405 ] 1406 }, 1407 { 1408 name: 'TEST_51', 1409 alias: '', 1410 members:[ 1411 { 1412 type: 'std::list<int>', 1413 name: 'slist', 1414 arraySize: -1, 1415 arraySizeList: [] 1416 } 1417 ] 1418 }, 1419 { 1420 name: 'TEST_52', 1421 alias: '', 1422 members:[ 1423 { 1424 type: 'std::forward_list<int>', 1425 name: 'sflist', 1426 arraySize: -1, 1427 arraySizeList: [] 1428 } 1429 ] 1430 }, 1431 { 1432 name: 'TEST_53', 1433 alias: '', 1434 members:[ 1435 { 1436 type: 'std::array<int>', 1437 name: 'salist', 1438 arraySize: -1, 1439 arraySizeList: [] 1440 } 1441 ] 1442 }, 1443 { 1444 name: 'TEST_54', 1445 alias: '', 1446 members:[ 1447 { 1448 type: 'std::stack<int>', 1449 name: 'sqstack', 1450 arraySize: -1, 1451 arraySizeList: [] 1452 } 1453 ] 1454 }, 1455 { 1456 name: 'TEST_55', 1457 alias: '', 1458 members:[ 1459 { 1460 type: 'std::queue<int>', 1461 name: 'sqlist', 1462 arraySize: -1, 1463 arraySizeList: [] 1464 } 1465 ] 1466 }, 1467 { 1468 name: 'TEST_56', 1469 alias: '', 1470 members:[ 1471 { 1472 type: 'std::priority_queue<int>', 1473 name: 'spqlist', 1474 arraySize: -1, 1475 arraySizeList: [] 1476 } 1477 ] 1478 }, 1479 { 1480 name: 'TEST_57', 1481 alias: '', 1482 members:[ 1483 { 1484 type: 'std::pair<double, int>', 1485 name: 'sppair', 1486 arraySize: -1, 1487 arraySizeList: [] 1488 } 1489 ] 1490 }, 1491 { 1492 name: 'TEST_58', 1493 alias: '', 1494 members:[ 1495 { 1496 type: 'std::map<double, int>', 1497 name: 'smap', 1498 arraySize: -1, 1499 arraySizeList: [] 1500 } 1501 ] 1502 }, 1503 { 1504 name: 'TEST_59', 1505 alias: '', 1506 members:[ 1507 { 1508 type: 'std::multimap<double, int>', 1509 name: 'smmap', 1510 arraySize: -1, 1511 arraySizeList: [] 1512 } 1513 ] 1514 }, 1515 { 1516 name: 'TEST_60', 1517 alias: '', 1518 members:[ 1519 { 1520 type: 'std::set<double, int>', 1521 name: 'sset', 1522 arraySize: -1, 1523 arraySizeList: [] 1524 } 1525 ] 1526 }, 1527 { 1528 name: 'TEST_61', 1529 alias: '', 1530 members:[ 1531 { 1532 type: 'std::multiset<double, int>', 1533 name: 'smset', 1534 arraySize: -1, 1535 arraySizeList: [] 1536 } 1537 ] 1538 }, 1539 { 1540 name: 'TEST_62', 1541 alias: '', 1542 members:[ 1543 { 1544 type: 'std::unordered_map<double, int>', 1545 name: 'sumap', 1546 arraySize: -1, 1547 arraySizeList: [] 1548 } 1549 ] 1550 }, 1551 { 1552 name: 'TEST_63', 1553 alias: '', 1554 members:[ 1555 { 1556 type: 'std::unordered_multimap<double, int>', 1557 name: 'summap', 1558 arraySize: -1, 1559 arraySizeList: [] 1560 } 1561 ] 1562 }, 1563 { 1564 name: 'TEST_64', 1565 alias: '', 1566 members:[ 1567 { 1568 type: 'std::unordered_set<double, int>', 1569 name: 'suset', 1570 arraySize: -1, 1571 arraySizeList: [] 1572 } 1573 ] 1574 }, 1575 { 1576 name: 'TEST_65', 1577 alias: '', 1578 members:[ 1579 { 1580 type: 'std::unordered_multiset<double, int>', 1581 name: 'sumset', 1582 arraySize: -1, 1583 arraySizeList: [] 1584 } 1585 ] 1586 }, 1587 { 1588 name: 'TEST_66', 1589 alias: '', 1590 members:[ 1591 { 1592 type: 'std::vector<int>::iterator', 1593 name: 'svlistIter', 1594 arraySize: -1, 1595 arraySizeList: [] 1596 } 1597 ] 1598 }, 1599 { 1600 name: 'TEST_67', 1601 alias: '', 1602 members:[ 1603 { 1604 type: 'std::deque<int>::iterator', 1605 name: 'sdlistIter', 1606 arraySize: -1, 1607 arraySizeList: [] 1608 } 1609 ] 1610 }, 1611 { 1612 name: 'TEST_68', 1613 alias: '', 1614 members:[ 1615 { 1616 type: 'std::list<int>::iterator', 1617 name: 'slistIter', 1618 arraySize: -1, 1619 arraySizeList: [] 1620 } 1621 ] 1622 }, 1623 { 1624 name: 'TEST_69', 1625 alias: '', 1626 members:[ 1627 { 1628 type: 'std::forward_list<int>::iterator', 1629 name: 'sflistIter', 1630 arraySize: -1, 1631 arraySizeList: [] 1632 } 1633 ] 1634 }, 1635 { 1636 name: 'TEST_70', 1637 alias: '', 1638 members:[ 1639 { 1640 type: 'std::array<int>::iterator', 1641 name: 'salistIter', 1642 arraySize: -1, 1643 arraySizeList: [] 1644 } 1645 ] 1646 }, 1647 { 1648 name: 'TEST_71', 1649 alias: '', 1650 members:[ 1651 { 1652 type: 'std::stack<int>::iterator', 1653 name: 'sqstackIter', 1654 arraySize: -1, 1655 arraySizeList: [] 1656 } 1657 ] 1658 }, 1659 { 1660 name: 'TEST_72', 1661 alias: '', 1662 members:[ 1663 { 1664 type: 'std::queue<int>::iterator', 1665 name: 'sqqueIter', 1666 arraySize: -1, 1667 arraySizeList: [] 1668 } 1669 ] 1670 }, 1671 { 1672 name: 'TEST_73', 1673 alias: '', 1674 members:[ 1675 { 1676 type: 'std::priority_queue<int>::iterator', 1677 name: 'spqlistIter', 1678 arraySize: -1, 1679 arraySizeList: [] 1680 } 1681 ] 1682 }, 1683 { 1684 name: 'TEST_74', 1685 alias: '', 1686 members:[ 1687 { 1688 type: 'std::pair<double, int>::iterator', 1689 name: 'sppairIter', 1690 arraySize: -1, 1691 arraySizeList: [] 1692 } 1693 ] 1694 }, 1695 { 1696 name: 'TEST_75', 1697 alias: '', 1698 members:[ 1699 { 1700 type: 'std::map<double, int>::iterator', 1701 name: 'smapIter', 1702 arraySize: -1, 1703 arraySizeList: [] 1704 } 1705 ] 1706 }, 1707 { 1708 name: 'TEST_76', 1709 alias: '', 1710 members:[ 1711 { 1712 type: 'std::multimap<double, int>::iterator', 1713 name: 'smmapIter', 1714 arraySize: -1, 1715 arraySizeList: [] 1716 } 1717 ] 1718 }, 1719 { 1720 name: 'TEST_77', 1721 alias: '', 1722 members:[ 1723 { 1724 type: 'std::set<double, int>::iterator', 1725 name: 'ssetIter', 1726 arraySize: -1, 1727 arraySizeList: [] 1728 } 1729 ] 1730 }, 1731 { 1732 name: 'TEST_78', 1733 alias: '', 1734 members:[ 1735 { 1736 type: 'std::multiset<double, int>::iterator', 1737 name: 'smsetIter', 1738 arraySize: -1, 1739 arraySizeList: [] 1740 } 1741 ] 1742 }, 1743 { 1744 name: 'TEST_79', 1745 alias: '', 1746 members:[ 1747 { 1748 type: 'std::unordered_map<double, int>::iterator', 1749 name: 'sumapIter', 1750 arraySize: -1, 1751 arraySizeList: [] 1752 } 1753 ] 1754 }, 1755 { 1756 name: 'TEST_80', 1757 alias: '', 1758 members:[ 1759 { 1760 type: 'std::unordered_multimap<double, int>::iterator', 1761 name: 'summapIter', 1762 arraySize: -1, 1763 arraySizeList: [] 1764 } 1765 ] 1766 }, 1767 { 1768 name: 'TEST_81', 1769 alias: '', 1770 members:[ 1771 { 1772 type: 'std::unordered_set<double, int>::iterator', 1773 name: 'susetIter', 1774 arraySize: -1, 1775 arraySizeList: [] 1776 } 1777 ] 1778 }, 1779 { 1780 name: 'TEST_82', 1781 alias: '', 1782 members:[ 1783 { 1784 type: 'std::unordered_multiset<double, int>::iterator', 1785 name: 'sumsetIter', 1786 arraySize: -1, 1787 arraySizeList: [] 1788 } 1789 ] 1790 }, 1791 { 1792 name: 'TEST_83', 1793 alias: '', 1794 members:[ 1795 { 1796 type: 'std::function<int(int, int)>', 1797 name: 'func', 1798 arraySize: -1, 1799 arraySizeList: [] 1800 } 1801 ] 1802 }, 1803 { 1804 name: 'TEST_84', 1805 alias: '', 1806 members:[ 1807 { 1808 type: 'std::tuple<int, float, double>', 1809 name: 'myTuple', 1810 arraySize: -1, 1811 arraySizeList: [] 1812 } 1813 ] 1814 }, 1815 { 1816 name: 'TEST_85', 1817 alias: '', 1818 members:[ 1819 { 1820 type: 'std::complex<double>', 1821 name: 'myComplex', 1822 arraySize: -1, 1823 arraySizeList: [] 1824 } 1825 ] 1826 }, 1827 { 1828 name: 'TEST_86', 1829 alias: '', 1830 members:[ 1831 { 1832 type: 'std::valarray<int>', 1833 name: 'myValarray', 1834 arraySize: -1, 1835 arraySizeList: [] 1836 } 1837 ] 1838 }, 1839 { 1840 name: 'TEST_87', 1841 alias: '', 1842 members:[ 1843 { 1844 type: 'std::time_t', 1845 name: 'myTimet', 1846 arraySize: -1, 1847 arraySizeList: [] 1848 } 1849 ] 1850 }, 1851 { 1852 name: 'TEST_88', 1853 alias: '', 1854 members:[ 1855 { 1856 type: 'std::clock_t', 1857 name: 'myClock', 1858 arraySize: -1, 1859 arraySizeList: [] 1860 } 1861 ] 1862 }, 1863 { 1864 name: 'TEST_89', 1865 alias: '', 1866 members:[ 1867 { 1868 type: 'std::tm', 1869 name: 'myTm', 1870 arraySize: -1, 1871 arraySizeList: [] 1872 } 1873 ] 1874 } 1875 ] 1876 rootInfo = { 1877 parseObj: { 1878 enums: [], 1879 unions: unions, 1880 structs: [], 1881 classes: [], 1882 funcs: [] 1883 }, 1884 rawFilePath: 'e:\\test.h', 1885 fileName: 'test', 1886 }; 1887 resStr = genDts.getDtsUnions(rootInfo); 1888 assert.strictEqual(resStr, 'export type TEST_1 = number ;\n\nexport type TEST_2 = string ;\n\n' + 1889 'export type TEST_3 = number ;\n\nexport type TEST_4 = number ;\n\nexport type TEST_5 = number ;\n\n' + 1890 'export type TEST_6 = number ;\n\nexport type TEST_7 = number ;\n\nexport type TEST_8 = number ;\n\n' + 1891 'export type TEST_9 = string ;\n\nexport type TEST_10 = string ;\n\nexport type TEST_11 = string ;\n\n' + 1892 'export type TEST_12 = number ;\n\nexport type TEST_13 = number ;\n\nexport type TEST_14 = number ;\n\n' + 1893 'export type TEST_15 = number ;\n\nexport type TEST_16 = number ;\n\nexport type TEST_17 = number ;\n\n' + 1894 'export type TEST_18 = number ;\n\nexport type TEST_19 = string ;\n\nexport type TEST_20 = string ;\n\n' + 1895 'export type TEST_21 = number ;\n\nexport type TEST_22 = number ;\n\nexport type TEST_23 = number ;\n\n' + 1896 'export type TEST_24 = number ;\n\nexport type TEST_25 = number ;\n\nexport type TEST_26 = number ;\n\n' + 1897 'export type TEST_27 = string ;\n\nexport type TEST_28 = string ;\n\nexport type TEST_29 = number ;\n\n' + 1898 'export type TEST_30 = number ;\n\nexport type TEST_31 = number ;\n\nexport type TEST_32 = number ;\n\n' + 1899 'export type TEST_33 = number ;\n\nexport type TEST_34 = number ;\n\nexport type TEST_35 = number ;\n\n' + 1900 'export type TEST_36 = number ;\n\nexport type TEST_37 = boolean ;\n\nexport type TEST_38 = number ;\n\n' + 1901 'export type TEST_39 = number ;\n\nexport type TEST_40 = string ;\n\nexport type TEST_41 = string ;\n\n' + 1902 'export type TEST_42 = string ;\n\nexport type TEST_43 = string ;\n\nexport type TEST_44 = string ;\n\n' + 1903 'export type TEST_45 = string ;\n\nexport type TEST_46 = string ;\n\nexport type TEST_47 = string ;\n\n' + 1904 'export type TEST_48 = string ;\n\nexport type TEST_49 = Array<number> ;\n\n' + 1905 'export type TEST_50 = Array<number> ;\n\nexport type TEST_51 = Array<number> ;\n\n' + 1906 'export type TEST_52 = Array<number> ;\n\nexport type TEST_53 = Array<number> ;\n\n' + 1907 'export type TEST_54 = Array<number> ;\n\nexport type TEST_55 = Array<number> ;\n\n' + 1908 'export type TEST_56 = Array<number> ;\n\nexport type TEST_57 = [number, number] ;\n\n' + 1909 'export type TEST_58 = Map<number, number> ;\n\nexport type TEST_59 = Map<number, number> ;\n\n' + 1910 'export type TEST_60 = Set<number> ;\n\nexport type TEST_61 = Set<number> ;\n\n' + 1911 'export type TEST_62 = Map<number, number> ;\n\nexport type TEST_63 = Map<number, number> ;\n\n' + 1912 'export type TEST_64 = Set<number> ;\n\nexport type TEST_65 = Set<number> ;\n\n' + 1913 'export type TEST_66 = IterableIterator<Array<number>> ;\n\n' + 1914 'export type TEST_67 = IterableIterator<Array<number>> ;\n\n' + 1915 'export type TEST_68 = IterableIterator<Array<number>> ;\n\n' + 1916 'export type TEST_69 = IterableIterator<Array<number>> ;\n\n' + 1917 'export type TEST_70 = IterableIterator<Array<number>> ;\n\n' + 1918 'export type TEST_71 = IterableIterator<Array<number>> ;\n\n' + 1919 'export type TEST_72 = IterableIterator<Array<number>> ;\n\n' + 1920 'export type TEST_73 = IterableIterator<Array<number>> ;\n\n' + 1921 'export type TEST_74 = IterableIterator<[number, number]> ;\n\n' + 1922 'export type TEST_75 = IterableIterator<Map<number, number>> ;\n\n' + 1923 'export type TEST_76 = IterableIterator<Map<number, number>> ;\n\n' + 1924 'export type TEST_77 = IterableIterator<Set<number>> ;\n\n' + 1925 'export type TEST_78 = IterableIterator<Set<number>> ;\n\n' + 1926 'export type TEST_79 = IterableIterator<Map<number, number>> ;\n\n' + 1927 'export type TEST_80 = IterableIterator<Map<number, number>> ;\n\n' + 1928 'export type TEST_81 = IterableIterator<Set<number>> ;\n\n' + 1929 'export type TEST_82 = IterableIterator<Set<number>> ;\n\n' + 1930 'export type TEST_83 = (param0: number, param1: number)=>number ;\n\n' + 1931 'export type TEST_84 = [number, number, number] ;\n\nexport type TEST_85 = {real: number, imag: number} ;\n\n' + 1932 'export type TEST_86 = Array<number> ;\n\nexport type TEST_87 = Date ;\n\nexport type TEST_88 = Date ;\n\n' + 1933 'export type TEST_89 = Date ;\n\n'); 1934 }); 1935 1936 //3, 测试异常情况export type OperationType = number ;\n\n 1937 test('getDtsUnions_test_3', () => { 1938 //1.unions是空 1939 let rootInfo: GenInfo = { 1940 parseObj: { 1941 enums: [], 1942 unions: [], 1943 structs: [], 1944 classes: [], 1945 funcs: [] 1946 }, 1947 rawFilePath: 'e:\\test.h', 1948 fileName: 'test', 1949 }; 1950 let resStr = genDts.getDtsUnions(rootInfo); 1951 assert.strictEqual(resStr, ''); 1952 //2.unions.name为空 1953 let unions: UnionObj[] = [ 1954 { 1955 name: '', 1956 alias: '', 1957 members: [ 1958 { 1959 type: 'std::vector<int>', 1960 name: 'len', 1961 arraySize: -1, 1962 arraySizeList: [] 1963 } 1964 ] 1965 } 1966 ] 1967 rootInfo = { 1968 parseObj: { 1969 enums: [], 1970 unions: unions, 1971 structs: [], 1972 classes: [], 1973 funcs: [] 1974 }, 1975 rawFilePath: 'e:\\test.h', 1976 fileName: 'test', 1977 }; 1978 resStr = genDts.getDtsUnions(rootInfo); 1979 assert.strictEqual(resStr, 'export type = Array<number> ;\n\n'); 1980 //3.unions.members为空 1981 unions = [ 1982 { 1983 name: 'UnionObj', 1984 alias: '', 1985 members: [] 1986 } 1987 ] 1988 rootInfo = { 1989 parseObj: { 1990 enums: [], 1991 unions: unions, 1992 structs: [], 1993 classes: [], 1994 funcs: [] 1995 }, 1996 rawFilePath: 'e:\\test.h', 1997 fileName: 'test', 1998 }; 1999 resStr = genDts.getDtsUnions(rootInfo); 2000 assert.strictEqual(resStr, 'export type UnionObj = ;\n\n'); 2001 //4.没有unions.name属性 2002 unions = [ 2003 { 2004 alias: '', 2005 members: [ 2006 { 2007 type: 'char32_t', 2008 name: 'ch32', 2009 arraySize: -1, 2010 arraySizeList: [] 2011 } 2012 ] 2013 } 2014 ] 2015 rootInfo = { 2016 parseObj: { 2017 enums: [], 2018 unions: unions, 2019 structs: [], 2020 classes: [], 2021 funcs: [] 2022 }, 2023 rawFilePath: 'e:\\test.h', 2024 fileName: 'test', 2025 }; 2026 resStr = genDts.getDtsUnions(rootInfo); 2027 assert.strictEqual(resStr, 'export type undefined = string ;\n\n'); 2028 //5.没有unions.alias属性 2029 unions = [ 2030 { 2031 name: 'UnionObj', 2032 alias: '', 2033 members: [ 2034 { 2035 type: 'int', 2036 name: 'len', 2037 arraySize: -1, 2038 arraySizeList: [] 2039 } 2040 ] 2041 } 2042 ] 2043 rootInfo = { 2044 parseObj: { 2045 enums: [], 2046 unions: unions, 2047 structs: [], 2048 classes: [], 2049 funcs: [] 2050 }, 2051 rawFilePath: 'e:\\test.h', 2052 fileName: 'test', 2053 }; 2054 resStr = genDts.getDtsUnions(rootInfo); 2055 assert.strictEqual(resStr, 'export type UnionObj = number ;\n\n'); 2056 //6.unions.name为空,unions.alias不为空 2057 unions = [ 2058 { 2059 name: '', 2060 alias: 'UnionObj', 2061 members: [ 2062 { 2063 type: 'int', 2064 name: 'len', 2065 arraySize: -1, 2066 arraySizeList: [] 2067 } 2068 ] 2069 } 2070 ] 2071 rootInfo = { 2072 parseObj: { 2073 enums: [], 2074 unions: unions, 2075 structs: [], 2076 classes: [], 2077 funcs: [] 2078 }, 2079 rawFilePath: 'e:\\test.h', 2080 fileName: 'test', 2081 }; 2082 resStr = genDts.getDtsUnions(rootInfo); 2083 assert.strictEqual(resStr, 'export type = number ;\n\n'); 2084 //7.type为中文 2085 unions = [ 2086 { 2087 name: '', 2088 alias: 'UnionObj', 2089 members: [ 2090 { 2091 type: '绿色', 2092 name: '汉字', 2093 arraySize: -1, 2094 arraySizeList: [] 2095 } 2096 ] 2097 } 2098 ] 2099 rootInfo = { 2100 parseObj: { 2101 enums: [], 2102 unions: unions, 2103 structs: [], 2104 classes: [], 2105 funcs: [] 2106 }, 2107 rawFilePath: 'e:\\test.h', 2108 fileName: 'test', 2109 }; 2110 resStr = genDts.getDtsUnions(rootInfo); 2111 assert.strictEqual(resStr, 'export type = any ;\n\n'); 2112 //8.type为乱码 2113 unions = [ 2114 { 2115 name: '', 2116 alias: 'UnionObj', 2117 members: [ 2118 { 2119 type: 'uiob@#^6cja', 2120 name: 'len', 2121 arraySize: -1, 2122 arraySizeList: [] 2123 } 2124 ] 2125 } 2126 ] 2127 rootInfo = { 2128 parseObj: { 2129 enums: [], 2130 unions: unions, 2131 structs: [], 2132 classes: [], 2133 funcs: [] 2134 }, 2135 rawFilePath: 'e:\\test.h', 2136 fileName: 'test', 2137 }; 2138 resStr = genDts.getDtsUnions(rootInfo); 2139 assert.strictEqual(resStr, 'export type = any ;\n\n'); 2140 //8.type为日文 2141 unions = [ 2142 { 2143 name: '', 2144 alias: 'UnionObj', 2145 members: [ 2146 { 2147 type: 'あさ', 2148 name: 'len', 2149 arraySize: -1, 2150 arraySizeList: [] 2151 } 2152 ] 2153 } 2154 ] 2155 rootInfo = { 2156 parseObj: { 2157 enums: [], 2158 unions: unions, 2159 structs: [], 2160 classes: [], 2161 funcs: [] 2162 }, 2163 rawFilePath: 'e:\\test.h', 2164 fileName: 'test', 2165 }; 2166 resStr = genDts.getDtsUnions(rootInfo); 2167 assert.strictEqual(resStr, 'export type = any ;\n\n'); 2168 //9.没有ParamObj.name属性 2169 unions = [ 2170 { 2171 name: 'UnionObj', 2172 alias: '', 2173 members: [ 2174 { 2175 type: 'int', 2176 arraySize: -1, 2177 arraySizeList: [] 2178 } 2179 ], 2180 }, 2181 ]; 2182 rootInfo = { 2183 parseObj: { 2184 enums: [], 2185 unions: unions, 2186 structs: [], 2187 classes: [], 2188 funcs: [] 2189 }, 2190 rawFilePath: 'e:\\test.h', 2191 fileName: 'test', 2192 }; 2193 resStr = genDts.getDtsUnions(rootInfo); 2194 assert.strictEqual(resStr, 'export type UnionObj = number ;\n\n'); 2195 //10.没有ParamObj.arraaySize属性 2196 unions = [ 2197 { 2198 name: 'UnionObj', 2199 alias: '', 2200 members: [ 2201 { 2202 type: 'int', 2203 name: 'UnionObj', 2204 arraySizeList: [] 2205 } 2206 ], 2207 }, 2208 ]; 2209 rootInfo = { 2210 parseObj: { 2211 enums: [], 2212 unions: unions, 2213 structs: [], 2214 classes: [], 2215 funcs: [] 2216 }, 2217 rawFilePath: 'e:\\test.h', 2218 fileName: 'test', 2219 }; 2220 resStr = genDts.getDtsUnions(rootInfo); 2221 assert.strictEqual(resStr, 'export type UnionObj = number ;\n\n'); 2222 //12.没有ParamObj.arraySizeList属性 2223 unions = [ 2224 { 2225 name: 'UnionObj', 2226 alias: '', 2227 members: [ 2228 { 2229 type: 'int', 2230 name: 'v1', 2231 arraySize: -1 2232 } 2233 ], 2234 }, 2235 ]; 2236 rootInfo = { 2237 parseObj: { 2238 enums: [], 2239 unions: unions, 2240 structs: [], 2241 classes: [], 2242 funcs: [] 2243 }, 2244 rawFilePath: 'e:\\test.h', 2245 fileName: 'test', 2246 }; 2247 resStr = genDts.getDtsUnions(rootInfo); 2248 assert.strictEqual(resStr, 'export type UnionObj = number ;\n\n'); 2249 //10.type字符为特殊字符 2250 unions = [ 2251 { 2252 name: 'UnionObj', 2253 alias: '', 2254 members: [ 2255 { 2256 type: '1', 2257 name: 'v1', 2258 arraySize: -1, 2259 arraySizeList: [] 2260 } 2261 ] 2262 } 2263 ] 2264 rootInfo = { 2265 parseObj: { 2266 enums: [], 2267 unions: unions, 2268 structs: [], 2269 classes: [], 2270 funcs: [] 2271 }, 2272 rawFilePath: 'e:\\test.h', 2273 fileName: 'test', 2274 }; 2275 resStr = genDts.getDtsUnions(rootInfo); 2276 assert.strictEqual(resStr, 'export type UnionObj = any ;\n\n'); 2277 }); 2278 2279 //4, 测试错误情况 2280 test('getDtsUnions_test_4', () => { 2281 //1.传入参数null 2282 let res = true; 2283 try { 2284 genDts.getDtsUnions(null); 2285 } catch (error) { 2286 res = false; 2287 } 2288 assert.strictEqual(res, false); 2289 //2.传入参数undefined 2290 let res2 = true; 2291 try { 2292 genDts.getDtsUnions(undefined); 2293 } catch (error) { 2294 res2 = false; 2295 } 2296 assert.strictEqual(res2, false); 2297 // 3.没有parseObj.unions属性 2298 let rootInfo: GenInfo = { 2299 parseObj: { 2300 enums: [], 2301 structs: [], 2302 classes: [], 2303 funcs: [], 2304 }, 2305 rawFilePath: 'e:\\test.h', 2306 fileName: 'test', 2307 } 2308 let res3 = true; 2309 try { 2310 genDts.getDtsUnions(rootInfo); 2311 } catch (error) { 2312 res3 = false; 2313 } 2314 assert.strictEqual(res3, false); 2315 // 4. 没有unions.members属性 2316 rootInfo = { 2317 parseObj: { 2318 enums: [], 2319 structs: [], 2320 unions: [{ 2321 name: 'UnionObj', 2322 alias: '', 2323 }], 2324 classes: [], 2325 funcs: [] 2326 }, 2327 rawFilePath: 'e:\\test.h', 2328 fileName: 'test', 2329 } 2330 let res4 = true; 2331 try { 2332 genDts.getDtsUnions(rootInfo); 2333 } catch (error) { 2334 res4 = false; 2335 } 2336 assert.strictEqual(res4, false); 2337 //5. type不符合要求 2338 let unions: UnionObj[] = [ 2339 { 2340 name: '', 2341 alias: 'UnionObj', 2342 members: [ 2343 { 2344 type: 1, 2345 name: 'len', 2346 arraySize: -1, 2347 arraySizeList: [] 2348 } 2349 ] 2350 } 2351 ] 2352 rootInfo = { 2353 parseObj: { 2354 enums: [], 2355 unions: unions, 2356 structs: [], 2357 classes: [], 2358 funcs: [] 2359 }, 2360 rawFilePath: 'e:\\test.h', 2361 fileName: 'test', 2362 }; 2363 let res5 = true; 2364 try { 2365 genDts.getDtsUnions(rootInfo); 2366 } catch (e) { 2367 res5 = false; 2368 } 2369 assert.strictEqual(res5, false); 2370 //6.没有ParamObj.type属性 2371 unions = [ 2372 { 2373 name: 'UnionObj', 2374 alias: '', 2375 members: [ 2376 { 2377 name: 'v1', 2378 arraySize: -1, 2379 arraySizeList: [] 2380 } 2381 ], 2382 }, 2383 ]; 2384 rootInfo = { 2385 parseObj: { 2386 enums: [], 2387 unions: unions, 2388 structs: [], 2389 classes: [], 2390 funcs: [] 2391 }, 2392 rawFilePath: 'e:\\test.h', 2393 fileName: 'test', 2394 }; 2395 let res6 = true; 2396 try { 2397 genDts.getDtsUnions(rootInfo); 2398 } catch (e) { 2399 res6 = false; 2400 } 2401 assert.strictEqual(res6, false); 2402 }); 2403})