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 {BusinessError} from "@ohos.base"; 16import * as StructTest from "struct_test"; 17 18loadLibrary("ani_struct"); 19 20let structD: StructTest.StructD = StructTest.getStructD(); 21let structE: StructTest.StructE = StructTest.getStructE(); 22let structF: StructTest.StructF = StructTest.getStructF(); 23let structG: StructTest.StructG = StructTest.getStructG(); 24let structDB5: StructTest.SDB5Readonly = StructTest.getSDB5Readonly(); 25let structEB: StructTest.SEBReadonly = StructTest.getSEBReadonly(); 26function test_struct_dbase5() { 27 let str: StructTest.DBase5 = { 28 param1: 8, 29 param2: 16, 30 param3: 32, 31 param4: 64, 32 param5: "StructD", 33 }; 34 structD.structD = str; 35 36 let info = structD.structD; 37 38 console.log("StructTest.StructD: " + str.param1); 39 assertEQ(str.param1, info.param1); 40} 41 42function test_struct_ebigint() { 43 let str: StructTest.EBigint = { 44 param1: true, 45 param2: 16.32f, 46 param3: 32.16, 47 param4: 641632, 48 }; 49 structE.structE = str; 50 51 let info = structE.structE; 52 53 console.log("StructTest.StructE: " + str.param1); 54 assertEQ(str.param1, info.param1); 55} 56 57function test_struct_funion() { 58 let str: StructTest.FUnion = { 59 param1: "optionalStr", 60 param2: "unionStr", 61 param3: {"today":"19"} 62 }; 63 structF.structF = str; 64 65 let info = structF.structF; 66 67 console.log("StructTest.StructF: " + str.param1); 68 assertEQ(str.param1, info.param1); 69} 70 71function test_struct_array() { 72 let i8Array = new Int8Array([1, -2, 3, -4, 5]); 73 let numbersU8: byte[] = [1, 2, 3, 4, 5]; 74 let arrayBuffer = new ArrayBuffer(numbersU8.length); 75 for (let i = 0; i < numbersU8.length; i++) { 76 arrayBuffer.set(i, numbersU8[i]); 77 } 78 79 let str: StructTest.GArray = { 80 param1: i8Array, 81 param2: arrayBuffer 82 }; 83 structG.gArray = str; 84 let info = structG.gArray; 85 86 console.log("StructTest.GArray: " + str.param1); 87 console.log("StructTest.GArray: " + info.param1); 88 assertEQ(str.param1[0], info.param1[0]); 89} 90 91function test_struct_addNewCanvas() { 92 let canvas1 = StructTest.addNewCanvas("RedCanvas"); 93 94 console.log("canvas1's name is " + canvas1.name); 95 canvas1.r += 255; 96 canvas1.g += 0; 97 canvas1.b += 0; 98 console.log("canvas1's color is " + canvas1.r + "," + canvas1.g + "," + canvas1.b); 99} 100 101function test_struct_dbase5readonly() { 102 let info = structDB5.dB5Readonly; 103 104 console.log("StructTest.DB5Readonly: " + info.param1); 105 assertEQ(info.param1, 1 as byte); 106} 107 108function test_struct_sebreadonly() { 109 let info = structEB.sEBReadonly; 110 111 console.log("StructTest.SEBReadonly: " + info.param1); 112 assertEQ(info.param1, true); 113} 114 115function test_struct_addNewDraw() { 116 let draw = StructTest.addNewDraw("addNewDraw"); 117 118 console.log("draw's name is " + draw.name); 119 draw.r += 255; 120 draw.g += 255; 121 draw.b += 255; 122 console.log("draw's color is " + draw.r + "," + draw.g + "," + draw.b); 123} 124 125function main() { 126 let a: StructTest.A = { 127 param1: 1, 128 }; 129 let b: StructTest.B = { 130 param1: 2, 131 param2: 3, 132 }; 133 let c: StructTest.C = new StructTest.C(4, 5, 6); 134 135 console.log("############## ani_struct start #############"); 136 const suite = new ArkTestsuite("BundleManager Tests"); 137 138 console.log("a:", a); 139 console.log("b:", b); 140 console.log("c:", c); 141 142 suite.addTest("test_struct_dbase5", test_struct_dbase5); 143 suite.addTest("test_struct_ebigint", test_struct_ebigint); 144 suite.addTest("test_struct_funion", test_struct_funion); 145 suite.addTest("test_struct_array", test_struct_array); 146 suite.addTest("test_struct_addNewCanvas", test_struct_addNewCanvas); 147 suite.addTest("test_struct_dbase5readonly", test_struct_dbase5readonly); 148 suite.addTest("test_struct_sebreadonly", test_struct_sebreadonly); 149 suite.addTest("test_struct_addNewDraw", test_struct_addNewDraw); 150 151 exit(suite.run()); 152}