• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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})