• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (c) 2025 Huawei Device 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 */
15import * as UnionTest1 from "test_union";
16import * as UnionTest from "union_ani";
17import {BusinessError} from "@ohos.base";
18
19loadLibrary("ani_union");
20
21function test_printMyUnion_with_undefined() {
22    let res = UnionTest.printMyUnion(undefined);
23    assertEQ(res, "u")
24}
25
26function test_printMyUnion_with_string() {
27    let res = UnionTest.printMyUnion("name");
28    assertEQ(res, "s")
29}
30
31function test_printMyUnion_with_number() {
32    let res = UnionTest.printMyUnion(123.456 as float);
33    assertEQ(res, "f")
34}
35
36function test_printMyUnion_with_pair() {
37    let pair: UnionTest.Pair = {a: "a", b: "b"};
38    let res = UnionTest.printMyUnion(pair);
39    assertEQ(res, "p")
40}
41
42function test_makeMyUnion_string() {
43    const result = UnionTest.makeMyUnion("s");
44    assertEQ(result, "string");
45}
46
47function test_makeMyUnion_number() {
48    const result = UnionTest.makeMyUnion("f");
49    assertEQ(result, 123);
50}
51
52function test_makeMyUnion_pair() {
53    const result = UnionTest.makeMyUnion("p");
54    if (result instanceof UnionTest.Pair) {
55        assertEQ(result.a, "a");
56        assertEQ(result.b, "b");
57    } else {
58        throw new Error("Result type error");
59    }
60}
61
62function test_makeMyUnion_undefined() {
63    const result = UnionTest.makeMyUnion("u");
64    assertEQ(result, undefined);
65}
66
67function test_primitives() {
68    let res: String;
69
70    res = UnionTest1.printUnion("name")
71    console.log(res)
72
73    res = UnionTest1.printUnion(1 as byte)
74    console.log(res)
75
76    res = UnionTest1.printUnion(123 as short)
77    console.log(res)
78
79    res = UnionTest1.printUnion(123456 as int)
80    console.log(res)
81
82    res = UnionTest1.printUnion(1.23 as float)
83    console.log(res)
84
85    res = UnionTest1.printUnion(1.2345 as double)
86    console.log(res)
87
88    res = UnionTest1.printUnion(true)
89    console.log(res)
90    res = UnionTest1.printUnion(false)
91    console.log(res)
92}
93
94// 定义 10 个测试函数
95function test_interface_Union_primitives1() {
96    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
97    instance.funcUnionPrimitive("Hello" as String, true);
98}
99
100function test_interface_Union_primitives2() {
101    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
102    instance.funcUnionPrimitive("World" as String, 42 as byte);
103}
104
105function test_interface_Union_primitives3() {
106    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
107    instance.funcUnionPrimitive(1 as byte, 12 as short);
108}
109
110function test_interface_Union_primitives4() {
111    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
112    instance.funcUnionPrimitive(12 as short, 123 as int);
113}
114
115function test_interface_Union_primitives5() {
116    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
117    instance.funcUnionPrimitive(123 as int, 1.23 as float);
118}
119
120function test_interface_Union_primitives6() {
121    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
122    instance.funcUnionPrimitive(1.23 as float, 1.2345 as double);
123}
124
125function test_interface_Union_primitives7() {
126    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
127    instance.funcUnionPrimitive(true, 42 as byte);
128}
129
130function test_interface_Union_primitives8() {
131    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
132    instance.funcUnionPrimitive(false, 123 as short);
133}
134
135function test_interface_Union_primitives9() {
136    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
137    instance.funcUnionPrimitive("Test" as String, 3.14 as float);
138}
139
140function test_interface_Union_primitives10() {
141    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
142    instance.funcUnionPrimitive(12345 as int, 2.71828 as double);
143}
144
145function test_interface_Union_10param_primitives1() {
146    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
147    instance.funcUnionPrimitive5Param(
148        12345 as int, 2.71828 as double, 12 as short, 1 as byte, "hello");
149}
150
151function test_interface_Union_10param_primitives2() {
152    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
153    instance.funcUnionPrimitive5Param(
154        42 as int, 3.14 as double, 100 as short, 2 as byte, "world");
155}
156
157function test_interface_Union_10param_primitives3() {
158    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
159    instance.funcUnionPrimitive5Param(
160        9876 as int, 1.414 as double, 50 as short, 3 as byte, "test");
161}
162
163function test_interface_Union_10param_primitives4() {
164    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
165    instance.funcUnionPrimitive5Param(
166        123 as int, 0.577 as double, 200 as short, 4 as byte, "example");
167}
168
169function test_interface_Union_10param_primitives5() {
170    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
171    instance.funcUnionPrimitive5Param(
172        4567 as int, 1.618 as double, 150 as short, 5 as byte, "demo");
173}
174function test_interface_Union_10param_primitives6() {
175    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
176    instance.funcUnionPrimitive5Param(
177        1000 as int, 2.5 as double, 10 as short, 6 as byte, "alpha");
178}
179
180function test_interface_Union_10param_primitives7() {
181    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
182    instance.funcUnionPrimitive5Param(
183        2000 as int, 3.0 as double, 20 as short, 7 as byte, "beta");
184}
185
186function test_interface_Union_10param_primitives8() {
187    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
188    instance.funcUnionPrimitive5Param(
189        3000 as int, 1.5 as double, 30 as short, 8 as byte, "gamma");
190}
191
192function test_interface_Union_10param_primitives9() {
193    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
194    instance.funcUnionPrimitive5Param(
195        4000 as int, 0.5 as double, 40 as short, 9 as byte, "delta");
196}
197
198function test_interface_Union_10param_primitives10() {
199    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
200    instance.funcUnionPrimitive5Param(
201        5000 as int, 1.0 as double, 50 as short, 10 as byte, "epsilon");
202}
203
204
205
206function test_interface_Union_enum_map() {
207    const studentScores: Record<String, byte> = {
208        "math": 90 as byte,
209        "english": 85 as byte,
210        "science": 95 as byte,
211    };
212    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
213
214    ////enum
215    let color = UnionTest1.Color.RED;
216    instance.funcColorMapValue1(color)
217
218    instance.funcColorMapValue1(studentScores)
219}
220function test_interface_Union_enum_map1() {
221    const studentScores: Record<String, short> = {
222        "math": 90 as short,
223        "english": 85 as short,
224        "science": 95 as short,
225    };
226    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
227
228    ////enum
229    let color = UnionTest1.Color.RED;
230    instance.funcColorMapValue2(color)
231
232    instance.funcColorMapValue2(studentScores)
233}
234
235function test_interface_Union_enum_map2() {
236    const studentScores: Record<String, int> = {
237        "math": 90 as int,
238        "english": 85 as int,
239        "science": 95 as int
240    };
241    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
242    instance.funcColorMapValue3(studentScores);
243}
244
245
246function test_interface_Union_enum_map3() {
247    const studentScores:
248        Record<String, long> = {"math": 90 as long, "english": 85 as long};
249    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
250    instance.funcColorMapValue4(studentScores);
251}
252
253function test_interface_Union_enum_map4() {
254    let studentScores: Record<String, float> = {
255        "math": 123.45 as float,
256        "english": 57.89 as float
257    };
258    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
259    instance.funcColorMapValue5(studentScores);
260}
261
262function test_interface_Union_enum_map5() {
263    const studentScores: Record<String, double> = {
264        "math": 90.5 as double,
265        "english": 85.3 as double
266    };
267    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
268    instance.funcColorMapValue6(studentScores);
269}
270
271function test_interface_Union_enum_map6() {
272    const studentPassed:
273        Record<String, boolean> = {"math": true, "english": false};
274    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
275    instance.funcColorMapValue7(studentPassed);
276}
277
278function test_interface_Union_enum_map7() {
279    const studentNames:
280        Record<String, String> = {"math": "Algebra", "english": "Literature"};
281    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
282    instance.funcColorMapValue8(studentNames);
283}
284
285function test_interface_Union_enum_map8() {
286    const scores: Record<int, int> = {100: 90 as int, 200: 85 as int};
287    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
288    instance.funcColorMapValue9(scores);
289}
290
291
292function test_interface_Union_enum_map9() {
293    const scores: Record<int, int> = {100: 90 as int, 200: 85 as int};
294    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
295    instance.funcColorMapValue10(scores, scores);
296}
297
298
299function test_interface_Union_array_map() {
300    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
301    let arri8: byte[] = [1, 2, 3, 4];
302    const studentScores: Record<String, byte> = {
303        "math": 90 as byte,
304        "english": 85 as byte,
305        "science": 95 as byte,
306    };
307    console.log(instance.funcUnionArrayMap1(arri8, studentScores))
308}
309function test_interface_Union_array_map1() {
310    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
311    let arri8: byte[] = [1, 2, 3, 4];
312    const studentScores: Record<String, short> = {
313        "math": 90 as short,
314        "english": 85 as short,
315        "science": 95 as short,
316    };
317    console.log(instance.funcUnionArrayMap2(arri8, studentScores))
318}
319function test_interface_Union_array_map2() {
320    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
321    const studentScores: Record<String, int> = {
322        "math": 90 as int,
323        "english": 85 as int,
324        "science": 95 as int
325    };
326    let arri8: byte[] = [1, 2, 3, 4]
327    console.log(instance.funcUnionArrayMap3(arri8, studentScores))
328}
329function test_interface_Union_array_map3() {
330    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
331    const studentScores:
332        Record<String, long> = {"math": 90 as long, "english": 85 as long};
333    let arri8: byte[] = [1, 2, 3, 4]
334    console.log(instance.funcUnionArrayMap4(arri8, studentScores))
335}
336function test_interface_Union_array_map4() {
337    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
338    let studentScores: Record<String, float> = {
339        "math": 123.45 as float,
340        "english": 57.89 as float
341    };
342    let arri8: byte[] = [1, 2, 3, 4]
343    console.log(instance.funcUnionArrayMap5(arri8, studentScores))
344}
345function test_interface_Union_array_map5() {
346    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
347    const studentScores: Record<String, double> = {
348        "math": 90.5 as double,
349        "english": 85.3 as double
350    };
351    let arri8: byte[] = [1, 2, 3, 4]
352    console.log(instance.funcUnionArrayMap6(arri8, studentScores))
353}
354function test_interface_Union_array_map6() {
355    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
356    const studentPassed:
357        Record<String, boolean> = {"math": true, "english": false};
358    let arri8: byte[] = [1, 2, 3, 4]
359    console.log(instance.funcUnionArrayMap7(arri8, studentPassed))
360}
361function test_interface_Union_array_map7() {
362    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
363    const studentNames:
364        Record<String, String> = {"math": "Algebra", "english": "Literature"};
365    let arri8: byte[] = [1, 2, 3, 4]
366    console.log(instance.funcUnionArrayMap8(arri8, studentNames))
367}
368function test_interface_Union_array_map8() {
369    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
370    const studentNames: Record<int, int> = {
371        1: 99,
372        2: 100,
373    };
374    let arri8: byte[] = [1, 2, 3, 4]
375    console.log(instance.funcUnionArrayMap9(arri8, studentNames))
376}
377function test_interface_Union_array_map9() {
378    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
379    const studentScores1: Record<String, byte> = {
380        "math": 90 as byte,
381        "english": 85 as byte,
382        "science": 95 as byte,
383    };
384    const studentScores2: Record<String, short> = {
385        "math": 90 as short,
386        "english": 85 as short,
387        "science": 95 as short,
388    };
389    let arri8: byte[] = [1, 2, 3, 4]
390    console.log(instance.funcUnionArrayMap10(arri8, arri8))
391    console.log(instance.funcUnionArrayMap10(arri8, studentScores2))
392    console.log(instance.funcUnionArrayMap10(studentScores1, arri8))
393    console.log(instance.funcUnionArrayMap10(studentScores1, studentScores2))
394}
395
396
397function test_union_mix() {
398    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
399    let arri8: byte[] = [1, 2, 3, 4];
400    let color = UnionTest1.Color.RED;
401
402    console.log(instance.funcUnionMix(arri8, "hello", color, 1 as byte, true))
403}
404function test_union_mix_10param1() {
405    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
406    let arri8: byte[] = [1, 2, 3, 4];
407    let color = UnionTest1.Color.RED;
408
409    console.log(instance.funcUnionMix10Param(
410        arri8, "hello", color, 1 as byte, true, 5000 as int, 1.0 as double,
411        50 as short, 10 as byte, "epsilon"));
412}
413
414function test_union_mix_10param2() {
415    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
416    let arri8: byte[] = [1, 2, 3, 4];
417    let color = UnionTest1.Color.RED;
418
419    console.log(instance.funcUnionMix10Param(
420        "hello", arri8, 1 as byte, color, true, 1.0 as double, 5000 as int,
421        50 as short, 10 as byte, "epsilon"));
422}
423
424function test_union_mix_10param3() {
425    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
426    let arri8: byte[] = [1, 2, 3, 4];
427    let color = UnionTest1.Color.RED;
428
429    console.log(instance.funcUnionMix10Param(
430        color, true, arri8, 1 as byte, "hello", 50 as short, 5000 as int,
431        1.0 as double, 10 as byte, "epsilon"));
432}
433
434function test_union_mix_10param4() {
435    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
436    let arri8: byte[] = [1, 2, 3, 4];
437    let color = UnionTest1.Color.RED;
438
439    console.log(instance.funcUnionMix10Param(
440        true, 1.0 as double, 5000 as int, 50 as short, 10 as byte, "epsilon",
441        arri8, "hello", color, 1 as byte));
442}
443
444function test_union_mix_10param5() {
445    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
446    let arri8: byte[] = [1, 2, 3, 4];
447    let color = UnionTest1.Color.RED;
448
449    console.log(instance.funcUnionMix10Param(
450        5000 as int, 1.0 as double, 50 as short, 10 as byte, "epsilon", arri8,
451        "hello", color, 1 as byte, true));
452}
453
454// 2个组合primitive
455function test_2_primitive1() {
456    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
457    instance.funcUnionPrimitiveReturn("s");
458    instance.funcUnionPrimitiveReturn("i8");
459}
460
461function test_2_primitive2() {
462    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
463    instance.funcUnionPrimitiveReturn1("i8");
464    instance.funcUnionPrimitiveReturn1("i16");
465}
466
467function test_2_primitive3() {
468    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
469    instance.funcUnionPrimitiveReturn2("i8_1");
470    instance.funcUnionPrimitiveReturn2("i8_2");
471}
472
473function test_2_primitive4() {
474    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
475    instance.funcUnionPrimitiveReturn3("i16");
476    instance.funcUnionPrimitiveReturn3("i32");
477}
478
479function test_2_primitive5() {
480    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
481    instance.funcUnionPrimitiveReturn4("i32");
482    instance.funcUnionPrimitiveReturn4("f32");
483}
484
485function test_2_primitive6() {
486    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
487    instance.funcUnionPrimitiveReturn5("f32");
488    instance.funcUnionPrimitiveReturn5("f64");
489}
490
491function test_2_primitive7() {
492    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
493    instance.funcUnionPrimitiveReturn6("s");
494    instance.funcUnionPrimitiveReturn6("b");
495}
496
497function test_2_primitive8() {
498    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
499    instance.funcUnionPrimitiveReturn7("b");
500    instance.funcUnionPrimitiveReturn7("i8");
501}
502
503function test_2_primitive9() {
504    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
505
506    instance.funcUnionPrimitiveReturn8("b");
507    instance.funcUnionPrimitiveReturn8("b1");
508}
509
510function test_2_primitive10() {
511    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
512    instance.funcUnionPrimitiveReturn9("s");
513    instance.funcUnionPrimitiveReturn9("s1");
514}
515
516// 5组合所有类型return
517
518function test_mix5_return1() {
519    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
520    instance.funcUnionMix5Return("s");
521}
522function test_mix5_return2() {
523    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
524    instance.funcUnionMix5Return("i8");
525}
526function test_mix5_return3() {
527    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
528    instance.funcUnionMix5Return("b");
529}
530function test_mix5_return4() {
531    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
532    instance.funcUnionMix5Return("c");
533}
534function test_mix5_return5() {
535    let instance: UnionTest1.MyInterface = UnionTest1.getInterface();
536    instance.funcUnionMix5Return("arr");
537}
538
539
540function test_union_with_makeAndShowBasicUnion(){
541    // i8
542    let i8Result = UnionTest.makeAndShowBasicUnion(1 as byte);
543    console.log("BasicUnion i8Result: ", i8Result);
544    // i16
545    let i16Result = UnionTest.makeAndShowBasicUnion(123 as short);
546    console.log("BasicUnion i16Result: ", i16Result);
547    // i32
548    let i32Result = UnionTest.makeAndShowBasicUnion(123456 as int);
549    console.log("BasicUnion i32Result: ", i32Result);
550    // i64
551    let i64Result = UnionTest.makeAndShowBasicUnion(123456789 as long);
552    console.log("BasicUnion i64Result: ", i64Result);
553    //float32
554    let float32Result = UnionTest.makeAndShowBasicUnion(1.23 as float);
555    console.log("BasicUnion float32Result: ", float32Result);
556    //float64
557    let float64Result = UnionTest.makeAndShowBasicUnion(1.2345 as double);
558    console.log("BasicUnion float64Result: ", float64Result);
559    //string
560    let stringResult = UnionTest.makeAndShowBasicUnion("this is string data");
561    console.log("BasicUnion stringResult: ", stringResult);
562    //bool true
563    let boolResult = UnionTest.makeAndShowBasicUnion(true);
564    console.log("BasicUnion boolResult: ", boolResult);
565    //bool true
566    let boolResult1 = UnionTest.makeAndShowBasicUnion(false);
567    console.log("BasicUnion boolResult1: ", boolResult1);
568    // null
569    let nullResult = UnionTest.makeAndShowBasicUnion(null);
570    console.log("BasicUnion nullResult: ", nullResult);
571}
572
573function test_union_with_makeAndShowTypedArrayUnion(){
574    //u8
575    let u8Arr: Uint8Array = new Uint8Array([1, 2, 3]);
576    let u8ArrResult = UnionTest.makeAndShowTypedArrayUnion(u8Arr) as Uint8Array;
577    assertEQ(u8ArrResult.toString(), u8Arr.toString());
578    //i8
579    let i8Arr: Int8Array = new Int8Array([-1, -2, -3]);
580    let i8ArrResult = UnionTest.makeAndShowTypedArrayUnion(i8Arr) as Int8Array;
581    assertEQ(i8ArrResult.toString(), i8Arr.toString());
582    //u16
583    let u16Arr: Uint16Array = new Uint16Array([10, 20, 30]);
584    let u16ArrResult = UnionTest.makeAndShowTypedArrayUnion(u16Arr) as Uint16Array;
585    assertEQ(u16ArrResult.toString(), u16Arr.toString());
586    //i16
587    let i16Arr: Int16Array = new Int16Array([-10, -20, -30]);
588    let i16ArrResult = UnionTest.makeAndShowTypedArrayUnion(i16Arr) as Int16Array;
589    assertEQ(i16ArrResult.toString(), i16Arr.toString());
590    //u32
591    let u32Arr: Uint32Array = new Uint32Array([100, 200, 300]);
592    let u32ArrResult = UnionTest.makeAndShowTypedArrayUnion(u32Arr) as Uint32Array;
593    assertEQ(u32ArrResult.toString(), u32Arr.toString());
594    //i32
595    let i32Arr: Int32Array = new Int32Array([-100, -200, -300]);
596    let i32ArrResult = UnionTest.makeAndShowTypedArrayUnion(i32Arr) as Int32Array;
597    assertEQ(i32ArrResult.toString(), i32Arr.toString());
598    //u64
599    let u64Arr: BigUint64Array = new BigUint64Array([1000n, 2000n, 3000n]);
600    let u64ArrResult = UnionTest.makeAndShowTypedArrayUnion(u64Arr) as BigUint64Array;
601    assertEQ(u64ArrResult.toString(), u64Arr.toString());
602    //i64
603    let i64Arr: BigInt64Array = new BigInt64Array([-1000n, -2000n, -3000n]);
604    let i64ArrResult = UnionTest.makeAndShowTypedArrayUnion(i64Arr) as BigInt64Array;
605    assertEQ(i64ArrResult.toString(), i64Arr.toString());
606    //f32
607    let f32Arr: Float32Array = new Float32Array([1.23, -2.14, 3.16]);
608    let f32ArrResult = UnionTest.makeAndShowTypedArrayUnion(f32Arr) as Float32Array;
609    assertEQ(f32ArrResult.toString(), f32Arr.toString());
610    //f64
611    let f64Arr: Float64Array = new Float64Array([1.234567, -2.145789, 3.161862]);
612    let f64ArrResult = UnionTest.makeAndShowTypedArrayUnion(f64Arr) as Float64Array;
613    assertEQ(f64ArrResult.toString(), f64Arr.toString());
614    //null
615    let nullResult = UnionTest.makeAndShowTypedArrayUnion(null);
616    assertEQ(nullResult, null);
617}
618
619function test_union_with_makeAndShowArrayUnion(){
620    //Array<f32> Array<f64>
621    let arrStruct: UnionTest.ArrayStruct = {float32Array: [1.23f, -2.14f, 3.16f], float64Array: [1.234567, -2.145789, 3.161862]};
622    let arrResult: UnionTest.ArrayUnion = UnionTest.makeAndShowArrayUnion(arrStruct);
623    console.log("ArrayUnion arrResult a: ", (arrResult as UnionTest.ArrayStruct)!.float32Array);
624    console.log("ArrayUnion arrResult b: ", (arrResult as UnionTest.ArrayStruct)!.float64Array);
625
626    //null
627    let nullResult = UnionTest.makeAndShowArrayUnion(null);
628    console.log("ArrayUnion nullResult: ", nullResult);
629}
630
631function test_union_with_makeAndShowStructUnion(){
632    //StrStruct
633    let strStruct: UnionTest.StrStruct= {a: "StrStruct a", b: "StrStruct b"};
634    let strResult: UnionTest.StructUnion = UnionTest.makeAndShowStructUnion(strStruct);
635    console.log("StructUnion strResult a: ", (strResult as UnionTest.StrStruct)!.a);
636    console.log("StructUnion strResult b: ", (strResult as UnionTest.StrStruct)!.b);
637
638    //IntStruct
639    let intStruct: UnionTest.IntStruct= {a: 1, b: 2 };
640    let intResult: UnionTest.StructUnion = UnionTest.makeAndShowStructUnion(intStruct);
641    console.log("StructUnion intResult a: ", (intResult as UnionTest.IntStruct)!.a);
642    console.log("StructUnion intResult b: ", (intResult as UnionTest.IntStruct)!.b);
643
644    //null
645    let nullResult = UnionTest.makeAndShowStructUnion(null);
646    console.log("StructUnion nullResult: ", nullResult);
647}
648
649function main() {
650    console.log("##############start#############");
651    const suite = new ArkTestsuite("UnionTest Tests");
652
653    suite.addTest("test printMyUnion with undefined", test_printMyUnion_with_undefined);
654    suite.addTest("test printMyUnion with string", test_printMyUnion_with_string);
655    suite.addTest("test printMyUnion with number", test_printMyUnion_with_number);
656    suite.addTest("test printMyUnion with pair", test_printMyUnion_with_pair);
657    suite.addTest("test makeMyUnion string", test_makeMyUnion_string);
658    suite.addTest("test makeMyUnion number", test_makeMyUnion_number);
659    suite.addTest("test makeMyUnion pair", test_makeMyUnion_pair);
660    suite.addTest("test makeMyUnion undefined", test_makeMyUnion_undefined);
661
662    suite.addTest("test_interface_Union_primitives1", test_interface_Union_primitives1);
663    suite.addTest("test_interface_Union_primitives2", test_interface_Union_primitives2);
664    suite.addTest("test_interface_Union_primitives3", test_interface_Union_primitives3);
665    suite.addTest("test_interface_Union_primitives4", test_interface_Union_primitives4);
666    suite.addTest("test_interface_Union_primitives5", test_interface_Union_primitives5);
667    suite.addTest("test_interface_Union_primitives6", test_interface_Union_primitives6);
668    suite.addTest("test_interface_Union_primitives7", test_interface_Union_primitives7);
669    suite.addTest("test_interface_Union_primitives8", test_interface_Union_primitives8);
670    suite.addTest("test_interface_Union_primitives9", test_interface_Union_primitives9);
671    suite.addTest("test_interface_Union_primitives10", test_interface_Union_primitives10);
672    // primitive_5param
673    suite.addTest("test_interface_Union_10param_primitives1",test_interface_Union_10param_primitives1);
674    suite.addTest("test_interface_Union_10param_primitives2",test_interface_Union_10param_primitives2);
675    suite.addTest("test_interface_Union_10param_primitives3",test_interface_Union_10param_primitives3);
676    suite.addTest("test_interface_Union_10param_primitives4",test_interface_Union_10param_primitives4);
677    suite.addTest("test_interface_Union_10param_primitives5",test_interface_Union_10param_primitives5);
678    suite.addTest("test_interface_Union_10param_primitives6",test_interface_Union_10param_primitives6);
679    suite.addTest("test_interface_Union_10param_primitives7",test_interface_Union_10param_primitives7);
680    suite.addTest("test_interface_Union_10param_primitives8",test_interface_Union_10param_primitives8);
681    suite.addTest("test_interface_Union_10param_primitives9",test_interface_Union_10param_primitives9);
682    suite.addTest("test_interface_Union_10param_primitives10",test_interface_Union_10param_primitives10);
683
684    // mix_5param
685    suite.addTest("test_union_mix", test_union_mix);
686    suite.addTest("test_union_mix_10param1", test_union_mix_10param1);
687    suite.addTest("test_union_mix_10param2", test_union_mix_10param2);
688    suite.addTest("test_union_mix_10param3", test_union_mix_10param3);
689    suite.addTest("test_union_mix_10param4", test_union_mix_10param4);
690    suite.addTest("test_union_mix_10param5", test_union_mix_10param5);
691
692    // 2组合primitive return
693    suite.addTest("test_2_primitive1", test_2_primitive1);
694    suite.addTest("test_2_primitive2", test_2_primitive2);
695    suite.addTest("test_2_primitive3", test_2_primitive3);
696    suite.addTest("test_2_primitive4", test_2_primitive4);
697    suite.addTest("test_2_primitive5", test_2_primitive5);
698    suite.addTest("test_2_primitive6", test_2_primitive6);
699    suite.addTest("test_2_primitive7", test_2_primitive7);
700    suite.addTest("test_2_primitive8", test_2_primitive8);
701    suite.addTest("test_2_primitive9", test_2_primitive9);
702    suite.addTest("test_2_primitive10", test_2_primitive10);
703
704    // 5组合所有类型return
705    suite.addTest("test_mix5_return1", test_mix5_return1);
706    suite.addTest("test_mix5_return2", test_mix5_return2);
707    suite.addTest("test_mix5_return3", test_mix5_return3);
708    suite.addTest("test_mix5_return4", test_mix5_return4);
709    suite.addTest("test_mix5_return5", test_mix5_return5);
710
711    // 10组合所有类型return
712
713    // enum map
714    suite.addTest("test_interface_Union_enum_map", test_interface_Union_enum_map);
715    suite.addTest("test_interface_Union_enum_map1", test_interface_Union_enum_map1);
716    suite.addTest("test_interface_Union_enum_map2", test_interface_Union_enum_map2);
717    suite.addTest("test_interface_Union_enum_map3", test_interface_Union_enum_map3);
718    suite.addTest("test_interface_Union_enum_map4", test_interface_Union_enum_map4);
719    suite.addTest("test_interface_Union_enum_map5", test_interface_Union_enum_map5);
720    suite.addTest("test_interface_Union_enum_map6", test_interface_Union_enum_map6);
721    suite.addTest("test_interface_Union_enum_map7", test_interface_Union_enum_map7);
722    suite.addTest("test_interface_Union_enum_map8", test_interface_Union_enum_map8);
723    suite.addTest("test_interface_Union_enum_map9", test_interface_Union_enum_map9);
724
725    // arr
726    suite.addTest("test_interface_Union_array_map", test_interface_Union_array_map);
727    suite.addTest("test_interface_Union_array_map1", test_interface_Union_array_map1);
728    suite.addTest("test_interface_Union_array_map2", test_interface_Union_array_map2);
729    suite.addTest("test_interface_Union_array_map3", test_interface_Union_array_map3);
730    suite.addTest("test_interface_Union_array_map4", test_interface_Union_array_map4);
731    suite.addTest("test_interface_Union_array_map5", test_interface_Union_array_map5);
732    suite.addTest("test_interface_Union_array_map6", test_interface_Union_array_map6);
733    suite.addTest("test_interface_Union_array_map7", test_interface_Union_array_map7);
734    suite.addTest("test_interface_Union_array_map8", test_interface_Union_array_map8);
735    suite.addTest("test_interface_Union_array_map9", test_interface_Union_array_map9);
736
737    // union basic
738    suite.addTest("test_union_with_makeAndShowBasicUnion", test_union_with_makeAndShowBasicUnion);
739    // union typedarray
740    suite.addTest("test_union_with_makeAndShowTypedArrayUnion", test_union_with_makeAndShowTypedArrayUnion);
741    // union array
742    suite.addTest("test_union_with_makeAndShowArrayUnion", test_union_with_makeAndShowArrayUnion);
743    //union struct
744    suite.addTest("test_union_with_makeAndShowStructUnion", test_union_with_makeAndShowStructUnion);
745
746    exit(suite.run());
747}
748