14514f5e3Sopenharmony_ci/* 24514f5e3Sopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd. 34514f5e3Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 44514f5e3Sopenharmony_ci * you may not use this file except in compliance with the License. 54514f5e3Sopenharmony_ci * You may obtain a copy of the License at 64514f5e3Sopenharmony_ci * 74514f5e3Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 84514f5e3Sopenharmony_ci * 94514f5e3Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 104514f5e3Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 114514f5e3Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 124514f5e3Sopenharmony_ci * See the License for the specific language governing permissions and 134514f5e3Sopenharmony_ci * limitations under the License. 144514f5e3Sopenharmony_ci */ 154514f5e3Sopenharmony_ci 164514f5e3Sopenharmony_ci/* 174514f5e3Sopenharmony_ci * @tc.name:sendablearray 184514f5e3Sopenharmony_ci * @tc.desc:test sendablearray 194514f5e3Sopenharmony_ci * @tc.type: FUNC 204514f5e3Sopenharmony_ci * @tc.require: issueI8QUU0 214514f5e3Sopenharmony_ci */ 224514f5e3Sopenharmony_ci 234514f5e3Sopenharmony_ci// @ts-nocheck 244514f5e3Sopenharmony_cideclare function print(str: any): string; 254514f5e3Sopenharmony_ci 264514f5e3Sopenharmony_ciclass SuperClass { 274514f5e3Sopenharmony_ci public num: number = 0; 284514f5e3Sopenharmony_ci constructor(num: number) { 294514f5e3Sopenharmony_ci "use sendable" 304514f5e3Sopenharmony_ci this.num = num; 314514f5e3Sopenharmony_ci } 324514f5e3Sopenharmony_ci} 334514f5e3Sopenharmony_ci 344514f5e3Sopenharmony_ciclass SubClass extends SuperClass { 354514f5e3Sopenharmony_ci public strProp: string = ""; 364514f5e3Sopenharmony_ci constructor(num: number) { 374514f5e3Sopenharmony_ci "use sendable" 384514f5e3Sopenharmony_ci super(num); 394514f5e3Sopenharmony_ci this.strProp = "" + num; 404514f5e3Sopenharmony_ci } 414514f5e3Sopenharmony_ci} 424514f5e3Sopenharmony_ci 434514f5e3Sopenharmony_ciclass SubSharedClass extends SendableArray { 444514f5e3Sopenharmony_ci constructor() { 454514f5e3Sopenharmony_ci 'use sendable'; 464514f5e3Sopenharmony_ci super(); 474514f5e3Sopenharmony_ci } 484514f5e3Sopenharmony_ci} 494514f5e3Sopenharmony_ci 504514f5e3Sopenharmony_ciclass SuperUnSharedClass { 514514f5e3Sopenharmony_ci public num: number = 0; 524514f5e3Sopenharmony_ci constructor(num: number) { 534514f5e3Sopenharmony_ci this.num = num; 544514f5e3Sopenharmony_ci } 554514f5e3Sopenharmony_ci} 564514f5e3Sopenharmony_ci 574514f5e3Sopenharmony_ciSendableArray.from<string>(['a', 'r', 'k']); 584514f5e3Sopenharmony_ci 594514f5e3Sopenharmony_cifunction at() { 604514f5e3Sopenharmony_ci print("Start Test at") 614514f5e3Sopenharmony_ci const array1 = new SendableArray<number>(5, 12, 8, 130, 44); 624514f5e3Sopenharmony_ci let index = 2; 634514f5e3Sopenharmony_ci print(`An index of ${index} returns ${array1.at(index)}`); // An index of 2 returns 8 644514f5e3Sopenharmony_ci 654514f5e3Sopenharmony_ci index = -2; 664514f5e3Sopenharmony_ci print(`An index of ${index} returns ${array1.at(index)}`); // An index of -2 returns 130 674514f5e3Sopenharmony_ci 684514f5e3Sopenharmony_ci index = 200; 694514f5e3Sopenharmony_ci print(`An index of ${index} returns ${array1.at(index)}`); // An index of 200 returns undefined 704514f5e3Sopenharmony_ci 714514f5e3Sopenharmony_ci print(`An index of null returns ${array1.at(null)}`); // An index of null returns 5 724514f5e3Sopenharmony_ci 734514f5e3Sopenharmony_ci print(`An index of undefined returns ${array1.at(undefined)}`); // An index of undefined returns 5 744514f5e3Sopenharmony_ci 754514f5e3Sopenharmony_ci print(`An index of undefined returns ${array1.at(true)}`); // An index of true returns 12 764514f5e3Sopenharmony_ci 774514f5e3Sopenharmony_ci print(`An index of undefined returns ${array1.at(false)}`); // An index of false returns 5 784514f5e3Sopenharmony_ci 794514f5e3Sopenharmony_ci index = 2871622679; 804514f5e3Sopenharmony_ci print(`An index of 2871622679 returns ${array1.at(index)}`); // An index of 2871622679 returns undefined 814514f5e3Sopenharmony_ci} 824514f5e3Sopenharmony_ci 834514f5e3Sopenharmony_cifunction entries() { 844514f5e3Sopenharmony_ci print("Start Test entries") 854514f5e3Sopenharmony_ci const array1 = new SendableArray<string>('a', 'b', 'c'); 864514f5e3Sopenharmony_ci const iterator = array1.entries(); 874514f5e3Sopenharmony_ci for (const [key, value] of iterator) { 884514f5e3Sopenharmony_ci print("" + key + "," + value); // 0 a, 1 b, 2 c 894514f5e3Sopenharmony_ci } 904514f5e3Sopenharmony_ci} 914514f5e3Sopenharmony_ci 924514f5e3Sopenharmony_cifunction keys() { 934514f5e3Sopenharmony_ci print("Start Test keys") 944514f5e3Sopenharmony_ci const array1 = new SendableArray<string>('a', 'b', 'c'); 954514f5e3Sopenharmony_ci const iterator = array1.keys(); 964514f5e3Sopenharmony_ci for (const key of iterator) { 974514f5e3Sopenharmony_ci print("" + key); // 0, 1, 2 984514f5e3Sopenharmony_ci } 994514f5e3Sopenharmony_ci} 1004514f5e3Sopenharmony_ci 1014514f5e3Sopenharmony_cifunction values() { 1024514f5e3Sopenharmony_ci print("Start Test values") 1034514f5e3Sopenharmony_ci const array1 = new SendableArray<string>('a', 'b', 'c'); 1044514f5e3Sopenharmony_ci const iterator = array1.values(); 1054514f5e3Sopenharmony_ci for (const value of iterator) { 1064514f5e3Sopenharmony_ci print("" + value); // a, b, c 1074514f5e3Sopenharmony_ci } 1084514f5e3Sopenharmony_ci} 1094514f5e3Sopenharmony_ci 1104514f5e3Sopenharmony_cifunction find() { 1114514f5e3Sopenharmony_ci print("Start Test find") 1124514f5e3Sopenharmony_ci const array1 = new SendableArray<number>(5, 12, 8, 130, 44); 1134514f5e3Sopenharmony_ci 1144514f5e3Sopenharmony_ci const found = array1.find((element: number) => element > 10); 1154514f5e3Sopenharmony_ci print("" + found); // 12 1164514f5e3Sopenharmony_ci 1174514f5e3Sopenharmony_ci const array2 = new SendableArray<SuperClass>( 1184514f5e3Sopenharmony_ci new SubClass(5), 1194514f5e3Sopenharmony_ci new SubClass(32), 1204514f5e3Sopenharmony_ci new SubClass(8), 1214514f5e3Sopenharmony_ci new SubClass(130), 1224514f5e3Sopenharmony_ci new SubClass(44), 1234514f5e3Sopenharmony_ci ); 1244514f5e3Sopenharmony_ci const result: SubClass | undefined = array2.find<SubClass>( 1254514f5e3Sopenharmony_ci (value: SuperClass, index: number, obj: SendableArray<SuperClass>) => value instanceof SubClass, 1264514f5e3Sopenharmony_ci ); 1274514f5e3Sopenharmony_ci print((new SubClass(5)).strProp); // 5 1284514f5e3Sopenharmony_ci} 1294514f5e3Sopenharmony_ci 1304514f5e3Sopenharmony_cifunction includes() { 1314514f5e3Sopenharmony_ci print("Start Test includes") 1324514f5e3Sopenharmony_ci const array1 = new SendableArray<number>(1, 2, 3); 1334514f5e3Sopenharmony_ci print("" + array1.includes(2)); // true 1344514f5e3Sopenharmony_ci 1354514f5e3Sopenharmony_ci const pets = new SendableArray<string>('cat', 'dog', 'bat'); 1364514f5e3Sopenharmony_ci print("" + pets.includes('cat')); // true 1374514f5e3Sopenharmony_ci 1384514f5e3Sopenharmony_ci print("" + pets.includes('at')); // false 1394514f5e3Sopenharmony_ci} 1404514f5e3Sopenharmony_ci 1414514f5e3Sopenharmony_cifunction index() { 1424514f5e3Sopenharmony_ci print("Start Test index") 1434514f5e3Sopenharmony_ci const array1 = new SendableArray<number>(5, 12, 8, 130, 44); 1444514f5e3Sopenharmony_ci const isLargeNumber = (element: number) => element > 13; 1454514f5e3Sopenharmony_ci print("" + array1.findIndex(isLargeNumber)); // 3 1464514f5e3Sopenharmony_ci 1474514f5e3Sopenharmony_ci} 1484514f5e3Sopenharmony_ci 1494514f5e3Sopenharmony_cifunction fill() { 1504514f5e3Sopenharmony_ci print("Start Test fill") 1514514f5e3Sopenharmony_ci const array1 = new SendableArray<number>(1, 2, 3, 4); 1524514f5e3Sopenharmony_ci array1.fill(0, 2, 4); 1534514f5e3Sopenharmony_ci print(array1); // [1, 2, 0, 0] 1544514f5e3Sopenharmony_ci 1554514f5e3Sopenharmony_ci array1.fill(5, 1); 1564514f5e3Sopenharmony_ci print(array1); // [1, 5, 5, 5] 1574514f5e3Sopenharmony_ci 1584514f5e3Sopenharmony_ci array1.fill(6); 1594514f5e3Sopenharmony_ci print(array1) // [6, 6, 6, 6] 1604514f5e3Sopenharmony_ci} 1614514f5e3Sopenharmony_ci 1624514f5e3Sopenharmony_ci// remove 1634514f5e3Sopenharmony_cifunction pop() { 1644514f5e3Sopenharmony_ci print("Start Test pop") 1654514f5e3Sopenharmony_ci const sharedArray = new SendableArray<number>(5, 12, 8, 130, 44); 1664514f5e3Sopenharmony_ci print("poped: " + sharedArray.pop()); 1674514f5e3Sopenharmony_ci} 1684514f5e3Sopenharmony_ci 1694514f5e3Sopenharmony_ci// update 1704514f5e3Sopenharmony_cifunction randomUpdate() { 1714514f5e3Sopenharmony_ci print("Start Test randomUpdate") 1724514f5e3Sopenharmony_ci const sharedArray = new SendableArray<number>(5, 12, 8, 130, 44); 1734514f5e3Sopenharmony_ci sharedArray[1] = 30 1744514f5e3Sopenharmony_ci print(sharedArray[1]); 1754514f5e3Sopenharmony_ci try { 1764514f5e3Sopenharmony_ci sharedArray[null] = 30 1774514f5e3Sopenharmony_ci } catch (err) { 1784514f5e3Sopenharmony_ci print("add element by index access failed. err: " + err + ", code: " + err.code); 1794514f5e3Sopenharmony_ci } 1804514f5e3Sopenharmony_ci 1814514f5e3Sopenharmony_ci try { 1824514f5e3Sopenharmony_ci sharedArray[undefined] = 30 1834514f5e3Sopenharmony_ci } catch (err) { 1844514f5e3Sopenharmony_ci print("add element by index access failed. err: " + err + ", code: " + err.code); 1854514f5e3Sopenharmony_ci } 1864514f5e3Sopenharmony_ci 1874514f5e3Sopenharmony_ci try { 1884514f5e3Sopenharmony_ci sharedArray[2871622679] = 30 1894514f5e3Sopenharmony_ci } catch (err) { 1904514f5e3Sopenharmony_ci print("add element by index access failed. err: " + err + ", code: " + err.code); 1914514f5e3Sopenharmony_ci } 1924514f5e3Sopenharmony_ci} 1934514f5e3Sopenharmony_ci 1944514f5e3Sopenharmony_ci// get 1954514f5e3Sopenharmony_cifunction randomGet() { 1964514f5e3Sopenharmony_ci print("Start Test randomGet") 1974514f5e3Sopenharmony_ci const sharedArray = new SendableArray<number>(5, 12, 8, 130, 44); 1984514f5e3Sopenharmony_ci sharedArray.at(0) 1994514f5e3Sopenharmony_ci print(sharedArray); 2004514f5e3Sopenharmony_ci} 2014514f5e3Sopenharmony_ci 2024514f5e3Sopenharmony_ci// add 2034514f5e3Sopenharmony_cifunction randomAdd() { 2044514f5e3Sopenharmony_ci print("Start Test randomAdd") 2054514f5e3Sopenharmony_ci const sharedArray = new SendableArray<number>(5, 12, 8); 2064514f5e3Sopenharmony_ci try { 2074514f5e3Sopenharmony_ci sharedArray[4000] = 7; 2084514f5e3Sopenharmony_ci } catch (err) { 2094514f5e3Sopenharmony_ci print("add element by index access failed. err: " + err + ", code: " + err.code); 2104514f5e3Sopenharmony_ci } 2114514f5e3Sopenharmony_ci} 2124514f5e3Sopenharmony_ci 2134514f5e3Sopenharmony_cifunction create(): void { 2144514f5e3Sopenharmony_ci print("Start Test create") 2154514f5e3Sopenharmony_ci let arkTSTest: SendableArray<number> = new SendableArray<number>(5); 2164514f5e3Sopenharmony_ci let arkTSTest1: SendableArray<number> = new SendableArray<number>(1, 3, 5); 2174514f5e3Sopenharmony_ci} 2184514f5e3Sopenharmony_ci 2194514f5e3Sopenharmony_cifunction from(): void { 2204514f5e3Sopenharmony_ci print("Start Test from") 2214514f5e3Sopenharmony_ci print(SendableArray.from<string>(['A', 'B', 'C'])); 2224514f5e3Sopenharmony_ci try { 2234514f5e3Sopenharmony_ci print(SendableArray.from<string>(['E', , 'M', 'P', 'T', 'Y'])); 2244514f5e3Sopenharmony_ci } catch (err) { 2254514f5e3Sopenharmony_ci print("Create from empty element list failed. err: " + err + ", code: " + err.code); 2264514f5e3Sopenharmony_ci } 2274514f5e3Sopenharmony_ci const source = new SendableArray<undefined>(undefined, undefined, 1); 2284514f5e3Sopenharmony_ci try { 2294514f5e3Sopenharmony_ci print('Create from sendable undefined element list success. arr: ' + SendableArray.from<string>(source)); 2304514f5e3Sopenharmony_ci } catch (err) { 2314514f5e3Sopenharmony_ci print("Create from sendable undefined element list failed. err: " + err + ", code: " + err.code); 2324514f5e3Sopenharmony_ci } 2334514f5e3Sopenharmony_ci // trigger string cache 2344514f5e3Sopenharmony_ci SendableArray.from("hello"); 2354514f5e3Sopenharmony_ci print(SendableArray.from("hello")); 2364514f5e3Sopenharmony_ci} 2374514f5e3Sopenharmony_ci 2384514f5e3Sopenharmony_cifunction fromTemplate(): void { 2394514f5e3Sopenharmony_ci print('Start Test fromTemplate'); 2404514f5e3Sopenharmony_ci let artTSTest1: SendableArray<string> = SendableArray.from<Number, string>([1, 2, 3], (x: number) => '' + x); 2414514f5e3Sopenharmony_ci print('artTSTest1: ' + artTSTest1); 2424514f5e3Sopenharmony_ci let arkTSTest2: SendableArray<string> = SendableArray.from<Number, string>([1, 2, 3], (item: number) => '' + item); // ["1", "Key", "3"] 2434514f5e3Sopenharmony_ci print('arkTSTest2: ' + arkTSTest2); 2444514f5e3Sopenharmony_ci} 2454514f5e3Sopenharmony_ci 2464514f5e3Sopenharmony_cifunction length(): void { 2474514f5e3Sopenharmony_ci print("Start Test length") 2484514f5e3Sopenharmony_ci let array: SendableArray<number> = new SendableArray<number>(1, 3, 5); 2494514f5e3Sopenharmony_ci print("Array length: " + array.length); 2504514f5e3Sopenharmony_ci array.length = 50; 2514514f5e3Sopenharmony_ci print("Array length after changed: " + array.length); 2524514f5e3Sopenharmony_ci} 2534514f5e3Sopenharmony_ci 2544514f5e3Sopenharmony_cifunction push(): void { 2554514f5e3Sopenharmony_ci print("Start Test push") 2564514f5e3Sopenharmony_ci let array: SendableArray<number> = new SendableArray<number>(1, 3, 5); 2574514f5e3Sopenharmony_ci array.push(2, 4, 6); 2584514f5e3Sopenharmony_ci print("Elements pushed: " + array); 2594514f5e3Sopenharmony_ci} 2604514f5e3Sopenharmony_ci 2614514f5e3Sopenharmony_cifunction concat(): void { 2624514f5e3Sopenharmony_ci print("Start Test concat") 2634514f5e3Sopenharmony_ci let array: SendableArray<number> = new SendableArray<number>(1, 3, 5); 2644514f5e3Sopenharmony_ci let arkTSToAppend: SendableArray<number> = new SendableArray<number>(2, 4, 6); 2654514f5e3Sopenharmony_ci let arkTSToAppend1: SendableArray<number> = new SendableArray<number>(100, 101, 102); 2664514f5e3Sopenharmony_ci 2674514f5e3Sopenharmony_ci print(array.concat(arkTSToAppend)); // [1, 3, 5, 2, 4, 6] 2684514f5e3Sopenharmony_ci print(array.concat(arkTSToAppend, arkTSToAppend1)); 2694514f5e3Sopenharmony_ci print(array.concat(200)); 2704514f5e3Sopenharmony_ci print(array.concat(201, 202)); 2714514f5e3Sopenharmony_ci let arr: SendableArray<number> = array.concat(null); 2724514f5e3Sopenharmony_ci print(arr); 2734514f5e3Sopenharmony_ci print(arr[3]); 2744514f5e3Sopenharmony_ci print(arr.length); 2754514f5e3Sopenharmony_ci let arr1: SendableArray<number> = array.concat(undefined); 2764514f5e3Sopenharmony_ci print(arr1); 2774514f5e3Sopenharmony_ci print(arr1[3]); 2784514f5e3Sopenharmony_ci print(arr1.length); 2794514f5e3Sopenharmony_ci} 2804514f5e3Sopenharmony_ci 2814514f5e3Sopenharmony_cifunction join(): void { 2824514f5e3Sopenharmony_ci print("Start Test join") 2834514f5e3Sopenharmony_ci const elements = new SendableArray<string>('Fire', 'Air', 'Water'); 2844514f5e3Sopenharmony_ci print(elements.join()); 2854514f5e3Sopenharmony_ci print(elements.join('')); 2864514f5e3Sopenharmony_ci print(elements.join('-')); 2874514f5e3Sopenharmony_ci print(elements.join(null)); 2884514f5e3Sopenharmony_ci print(elements.join(undefined)); 2894514f5e3Sopenharmony_ci} 2904514f5e3Sopenharmony_ci 2914514f5e3Sopenharmony_cifunction shift() { 2924514f5e3Sopenharmony_ci print("Start Test shift") 2934514f5e3Sopenharmony_ci const array1 = new SendableArray<number>(2, 4, 6); 2944514f5e3Sopenharmony_ci print(array1.shift()); 2954514f5e3Sopenharmony_ci print(array1.length); 2964514f5e3Sopenharmony_ci 2974514f5e3Sopenharmony_ci const emptyArray = new SendableArray<number>(); 2984514f5e3Sopenharmony_ci print(emptyArray.shift()); 2994514f5e3Sopenharmony_ci} 3004514f5e3Sopenharmony_ci 3014514f5e3Sopenharmony_cifunction unshift() { 3024514f5e3Sopenharmony_ci print("Start Test unshift") 3034514f5e3Sopenharmony_ci const array = SendableArray.from<number>([1, 2, 3]); 3044514f5e3Sopenharmony_ci print(array.unshift(4, 5)); 3054514f5e3Sopenharmony_ci print(array.length); 3064514f5e3Sopenharmony_ci} 3074514f5e3Sopenharmony_ci 3084514f5e3Sopenharmony_cifunction slice() { 3094514f5e3Sopenharmony_ci print("Start Test slice") 3104514f5e3Sopenharmony_ci const animals = new SendableArray<string>('ant', 'bison', 'camel', 'duck', 'elephant'); 3114514f5e3Sopenharmony_ci print(animals.slice()); 3124514f5e3Sopenharmony_ci print(animals.slice(2)); 3134514f5e3Sopenharmony_ci print(animals.slice(2, 4)); 3144514f5e3Sopenharmony_ci try { 3154514f5e3Sopenharmony_ci let a1 = animals.slice(1.5, 4); 3164514f5e3Sopenharmony_ci print("slice(1.5, 4) element success"); 3174514f5e3Sopenharmony_ci print(a1); 3184514f5e3Sopenharmony_ci } catch (err) { 3194514f5e3Sopenharmony_ci print("slice element failed. err: " + err + ", code: " + err.code); 3204514f5e3Sopenharmony_ci } 3214514f5e3Sopenharmony_ci 3224514f5e3Sopenharmony_ci try { 3234514f5e3Sopenharmony_ci let a2 = animals.slice(8, 4); 3244514f5e3Sopenharmony_ci print("slice(8, 4) element success"); 3254514f5e3Sopenharmony_ci } catch (err) { 3264514f5e3Sopenharmony_ci print("slice element failed. err: " + err + ", code: " + err.code); 3274514f5e3Sopenharmony_ci } 3284514f5e3Sopenharmony_ci 3294514f5e3Sopenharmony_ci try { 3304514f5e3Sopenharmony_ci let a3 = animals.slice(8, 100); 3314514f5e3Sopenharmony_ci print("slice(8, 100) element success"); 3324514f5e3Sopenharmony_ci } catch (err) { 3334514f5e3Sopenharmony_ci print("slice element failed. err: " + err + ", code: " + err.code); 3344514f5e3Sopenharmony_ci } 3354514f5e3Sopenharmony_ci 3364514f5e3Sopenharmony_ci try { 3374514f5e3Sopenharmony_ci print(animals.slice(null)); 3384514f5e3Sopenharmony_ci } catch (err) { 3394514f5e3Sopenharmony_ci print("slice element failed. err: " + err + ", code: " + err.code); 3404514f5e3Sopenharmony_ci } 3414514f5e3Sopenharmony_ci 3424514f5e3Sopenharmony_ci try { 3434514f5e3Sopenharmony_ci print(animals.slice(undefined)); 3444514f5e3Sopenharmony_ci } catch (err) { 3454514f5e3Sopenharmony_ci print("slice element failed. err: " + err + ", code: " + err.code); 3464514f5e3Sopenharmony_ci } 3474514f5e3Sopenharmony_ci} 3484514f5e3Sopenharmony_ci 3494514f5e3Sopenharmony_cifunction sort() { 3504514f5e3Sopenharmony_ci print("Start Test sort") 3514514f5e3Sopenharmony_ci const months = new SendableArray<string>('March', 'Jan', 'Feb', 'Dec'); 3524514f5e3Sopenharmony_ci print(months.sort()); 3534514f5e3Sopenharmony_ci 3544514f5e3Sopenharmony_ci const array1 = [1, 30, 4, 21, 10000]; 3554514f5e3Sopenharmony_ci print(array1.sort()); 3564514f5e3Sopenharmony_ci 3574514f5e3Sopenharmony_ci array1.sort((a: number, b: number) => a - b); 3584514f5e3Sopenharmony_ci} 3594514f5e3Sopenharmony_ci 3604514f5e3Sopenharmony_cifunction indexOf() { 3614514f5e3Sopenharmony_ci print("Start Test indexOf") 3624514f5e3Sopenharmony_ci const beasts = new SendableArray<string>('ant', 'bison', 'camel', 'duck', 'bison'); 3634514f5e3Sopenharmony_ci print(beasts.indexOf('bison')); // Expected: 1 3644514f5e3Sopenharmony_ci print(beasts.indexOf('bison', 2)) // Expected: 4 3654514f5e3Sopenharmony_ci print(beasts.indexOf('giraffe')) // Expected: -1 3664514f5e3Sopenharmony_ci} 3674514f5e3Sopenharmony_ci 3684514f5e3Sopenharmony_cifunction forEach() { 3694514f5e3Sopenharmony_ci print('Start Test forEach'); 3704514f5e3Sopenharmony_ci const array = new SendableArray<string>('a', 'b', 'c'); 3714514f5e3Sopenharmony_ci array.forEach((element: string) => print(element)); // a <br/> b <br/> c 3724514f5e3Sopenharmony_ci 3734514f5e3Sopenharmony_ci array.forEach((element: string, index: number, array: SendableArray<string>) => 3744514f5e3Sopenharmony_ci print(`a[${index}] = ${element}, ${array[index]}`), 3754514f5e3Sopenharmony_ci ); 3764514f5e3Sopenharmony_ci} 3774514f5e3Sopenharmony_ci 3784514f5e3Sopenharmony_cifunction map() { 3794514f5e3Sopenharmony_ci print("Start Test map") 3804514f5e3Sopenharmony_ci const array = new SendableArray<number>(1, 4, 9, 16); 3814514f5e3Sopenharmony_ci print(array.map<string>((x: number) => x + x)); 3824514f5e3Sopenharmony_ci} 3834514f5e3Sopenharmony_ci 3844514f5e3Sopenharmony_cifunction filter() { 3854514f5e3Sopenharmony_ci print("Start Test filter") 3864514f5e3Sopenharmony_ci const words = new SendableArray<string>('spray', 'elite', 'exuberant', 'destruction', 'present'); 3874514f5e3Sopenharmony_ci print(words.filter((word: string) => word.length > 6)) 3884514f5e3Sopenharmony_ci const array2 = new SendableArray<SuperClass>( 3894514f5e3Sopenharmony_ci new SubClass(5), 3904514f5e3Sopenharmony_ci new SuperClass(12), 3914514f5e3Sopenharmony_ci new SubClass(8), 3924514f5e3Sopenharmony_ci new SuperClass(130), 3934514f5e3Sopenharmony_ci new SubClass(44), 3944514f5e3Sopenharmony_ci ); 3954514f5e3Sopenharmony_ci const result = array2.filter<SubClass>((value: SuperClass, index: number, obj: Array<SuperClass>) => value instanceof SubClass); 3964514f5e3Sopenharmony_ci result.forEach((element: SubClass) => print(element.num)); // 5, 8, 44 3974514f5e3Sopenharmony_ci} 3984514f5e3Sopenharmony_ci 3994514f5e3Sopenharmony_cifunction reduce() { 4004514f5e3Sopenharmony_ci print("Start Test reduce") 4014514f5e3Sopenharmony_ci const array = new SendableArray<number>(1, 2, 3, 4); 4024514f5e3Sopenharmony_ci print(array.reduce((acc: number, currValue: number) => acc + currValue)); // 10 4034514f5e3Sopenharmony_ci 4044514f5e3Sopenharmony_ci print(array.reduce((acc: number, currValue: number) => acc + currValue, 10)); // 20 4054514f5e3Sopenharmony_ci 4064514f5e3Sopenharmony_ci print(array.reduce<string>((acc: number, currValue: number) => "" + acc + " " + currValue, "10")); // 10, 1, 2, 3, 4 4074514f5e3Sopenharmony_ci} 4084514f5e3Sopenharmony_ci 4094514f5e3Sopenharmony_cifunction f0() { 4104514f5e3Sopenharmony_ci const o1 = { 4114514f5e3Sopenharmony_ci }; 4124514f5e3Sopenharmony_ci 4134514f5e3Sopenharmony_ci return o1; 4144514f5e3Sopenharmony_ci} 4154514f5e3Sopenharmony_ci 4164514f5e3Sopenharmony_ciconst v2 = f0(); 4174514f5e3Sopenharmony_ciclass C3 { 4184514f5e3Sopenharmony_ci constructor(a5,a6) { 4194514f5e3Sopenharmony_ci const v9 = new SendableArray(); 4204514f5e3Sopenharmony_ci v9.splice(0,0, v2); 4214514f5e3Sopenharmony_ci } 4224514f5e3Sopenharmony_ci} 4234514f5e3Sopenharmony_ci 4244514f5e3Sopenharmony_cifunction splice() { 4254514f5e3Sopenharmony_ci print("Start Test splice") 4264514f5e3Sopenharmony_ci const array = new SendableArray<string>('Jan', 'March', 'April', 'June'); 4274514f5e3Sopenharmony_ci array.splice(1, 0, 'Feb', 'Oct'); 4284514f5e3Sopenharmony_ci print(array); // "Jan", "Feb", "Oct", "March", "April", "June" 4294514f5e3Sopenharmony_ci const removeArray = array.splice(4, 2, 'May'); 4304514f5e3Sopenharmony_ci print(array); // "Jan", "Feb", "Oct", "March", "May" 4314514f5e3Sopenharmony_ci print(removeArray); // "April", "June" 4324514f5e3Sopenharmony_ci const removeArray1 = array.splice(2, 3); 4334514f5e3Sopenharmony_ci print(array); // "Jan", "Feb" 4344514f5e3Sopenharmony_ci print(removeArray1); // "Oct", "March", "May" 4354514f5e3Sopenharmony_ci 4364514f5e3Sopenharmony_ci const array2 = new SendableArray<SubClass>( 4374514f5e3Sopenharmony_ci new SubClass(5), 4384514f5e3Sopenharmony_ci new SubClass(32), 4394514f5e3Sopenharmony_ci new SubClass(8), 4404514f5e3Sopenharmony_ci new SubClass(130), 4414514f5e3Sopenharmony_ci new SubClass(44), 4424514f5e3Sopenharmony_ci ); 4434514f5e3Sopenharmony_ci 4444514f5e3Sopenharmony_ci try { 4454514f5e3Sopenharmony_ci array2.splice(0, 0, new SuperUnSharedClass(48)); 4464514f5e3Sopenharmony_ci print("Add one element by splice api."); 4474514f5e3Sopenharmony_ci } catch (err) { 4484514f5e3Sopenharmony_ci print("Add one element by splice api failed. err: " + err + ", code: " + err.code); 4494514f5e3Sopenharmony_ci } 4504514f5e3Sopenharmony_ci 4514514f5e3Sopenharmony_ci try { 4524514f5e3Sopenharmony_ci new C3(); 4534514f5e3Sopenharmony_ci print("Add one element by splice api."); 4544514f5e3Sopenharmony_ci } catch (err) { 4554514f5e3Sopenharmony_ci print("Add one element by splice api failed. err: " + err + ", code: " + err.code); 4564514f5e3Sopenharmony_ci } 4574514f5e3Sopenharmony_ci} 4584514f5e3Sopenharmony_ci 4594514f5e3Sopenharmony_cifunction staticCreate() { 4604514f5e3Sopenharmony_ci print("Start Test staticCreate") 4614514f5e3Sopenharmony_ci const array = SendableArray.create<number>(10, 5); 4624514f5e3Sopenharmony_ci print(array); 4634514f5e3Sopenharmony_ci try { 4644514f5e3Sopenharmony_ci const array = SendableArray.create<number>(5); 4654514f5e3Sopenharmony_ci print("Create with without initialValue success."); 4664514f5e3Sopenharmony_ci } catch (err) { 4674514f5e3Sopenharmony_ci print("Create with without initialValue failed. err: " + err + ", code: " + err.code); 4684514f5e3Sopenharmony_ci } 4694514f5e3Sopenharmony_ci try { 4704514f5e3Sopenharmony_ci const array = SendableArray.create<number>(-1, 5); 4714514f5e3Sopenharmony_ci print("Create with negative length success."); 4724514f5e3Sopenharmony_ci } catch (err) { 4734514f5e3Sopenharmony_ci print("Create with negative length failed. err: " + err + ", code: " + err.code); 4744514f5e3Sopenharmony_ci } 4754514f5e3Sopenharmony_ci try { 4764514f5e3Sopenharmony_ci const array = SendableArray.create<number>(13107200, 1); // 13107200: 12.5MB 4774514f5e3Sopenharmony_ci print("Create huge sendableArrayWith initialValue success."); 4784514f5e3Sopenharmony_ci } catch (err) { 4794514f5e3Sopenharmony_ci print("Create huge sendableArrayWith initialValue failed. err: " + err + ", code: " + err.code); 4804514f5e3Sopenharmony_ci } 4814514f5e3Sopenharmony_ci try { 4824514f5e3Sopenharmony_ci const array = SendableArray.create<number>(0x100000000, 5); 4834514f5e3Sopenharmony_ci print("Create with exceed max length success."); 4844514f5e3Sopenharmony_ci } catch (err) { 4854514f5e3Sopenharmony_ci print("Create with exceed max length failed. err: " + err + ", code: " + err.code); 4864514f5e3Sopenharmony_ci } 4874514f5e3Sopenharmony_ci} 4884514f5e3Sopenharmony_ci 4894514f5e3Sopenharmony_cifunction readonlyLength() { 4904514f5e3Sopenharmony_ci print("Start Test readonlyLength") 4914514f5e3Sopenharmony_ci const array = SendableArray.create<number>(10, 5); 4924514f5e3Sopenharmony_ci print(array.length); 4934514f5e3Sopenharmony_ci array.length = 0; 4944514f5e3Sopenharmony_ci print(array.length); 4954514f5e3Sopenharmony_ci} 4964514f5e3Sopenharmony_ci 4974514f5e3Sopenharmony_cifunction shrinkTo() { 4984514f5e3Sopenharmony_ci print("Start Test shrinkTo") 4994514f5e3Sopenharmony_ci const array = new SendableArray<number>(5, 5, 5, 5, 5, 5, 5, 5, 5, 5); 5004514f5e3Sopenharmony_ci print(array.length); 5014514f5e3Sopenharmony_ci array.shrinkTo(array.length); 5024514f5e3Sopenharmony_ci print("Shrink to array.length: " + array); 5034514f5e3Sopenharmony_ci array.shrinkTo(array.length + 1); 5044514f5e3Sopenharmony_ci print("Shrink to array.length + 1: " + array); 5054514f5e3Sopenharmony_ci try { 5064514f5e3Sopenharmony_ci array.shrinkTo(-1); 5074514f5e3Sopenharmony_ci print("Shrink to -1 success"); 5084514f5e3Sopenharmony_ci } catch (err) { 5094514f5e3Sopenharmony_ci print("Shrink to -1 fail. err: " + err + ", code: " + err.code); 5104514f5e3Sopenharmony_ci } 5114514f5e3Sopenharmony_ci try { 5124514f5e3Sopenharmony_ci array.shrinkTo(0x100000000); 5134514f5e3Sopenharmony_ci print("Shrink to invalid 0x100000000 success"); 5144514f5e3Sopenharmony_ci } catch (err) { 5154514f5e3Sopenharmony_ci print("Shrink to invalid 0x100000000 fail. err: " + err + ", code: " + err.code); 5164514f5e3Sopenharmony_ci } 5174514f5e3Sopenharmony_ci array.shrinkTo(1); 5184514f5e3Sopenharmony_ci print(array.length); 5194514f5e3Sopenharmony_ci print(array); 5204514f5e3Sopenharmony_ci 5214514f5e3Sopenharmony_ci} 5224514f5e3Sopenharmony_ci 5234514f5e3Sopenharmony_cifunction extendTo() { 5244514f5e3Sopenharmony_ci print("Start Test growTo") 5254514f5e3Sopenharmony_ci const array = SendableArray.create<number>(5, 5); 5264514f5e3Sopenharmony_ci print(array.length); 5274514f5e3Sopenharmony_ci array.extendTo(array.length, 0); 5284514f5e3Sopenharmony_ci print("ExtendTo to array.length: " + array); 5294514f5e3Sopenharmony_ci array.extendTo(array.length - 1, 0); 5304514f5e3Sopenharmony_ci print("ExtendTo to array.length - 1: " + array); 5314514f5e3Sopenharmony_ci array.extendTo(0, 0); 5324514f5e3Sopenharmony_ci print("ExtendTo to 0: " + array); 5334514f5e3Sopenharmony_ci try { 5344514f5e3Sopenharmony_ci array.extendTo(-1, 0); 5354514f5e3Sopenharmony_ci print("ExtendTo to -1 success."); 5364514f5e3Sopenharmony_ci } catch (err) { 5374514f5e3Sopenharmony_ci print("ExtendTo to -1 fail. err: " + err + ", code: " + err.code); 5384514f5e3Sopenharmony_ci } 5394514f5e3Sopenharmony_ci try { 5404514f5e3Sopenharmony_ci array.extendTo(0x100000000, 0); 5414514f5e3Sopenharmony_ci print("ExtendTo to invalid 0x100000000 success."); 5424514f5e3Sopenharmony_ci } catch (err) { 5434514f5e3Sopenharmony_ci print("ExtendTo to invalid 0x100000000 fail. err: " + err + ", code: " + err.code); 5444514f5e3Sopenharmony_ci } 5454514f5e3Sopenharmony_ci try { 5464514f5e3Sopenharmony_ci array.extendTo(8); 5474514f5e3Sopenharmony_ci print("ExtendTo to 8 without initValue success."); 5484514f5e3Sopenharmony_ci } catch (err) { 5494514f5e3Sopenharmony_ci print("ExtendTo to 8 without initValue fail. err: " + err + ", code: " + err.code); 5504514f5e3Sopenharmony_ci } 5514514f5e3Sopenharmony_ci array.extendTo(8, 11); 5524514f5e3Sopenharmony_ci print(array.length); 5534514f5e3Sopenharmony_ci print(array); 5544514f5e3Sopenharmony_ci} 5554514f5e3Sopenharmony_ci 5564514f5e3Sopenharmony_cifunction indexAccess() { 5574514f5e3Sopenharmony_ci print("Start Test indexAccess") 5584514f5e3Sopenharmony_ci const array = new SendableArray<number>(1, 3, 5, 7); 5594514f5e3Sopenharmony_ci print("element1: " + array[1]); 5604514f5e3Sopenharmony_ci array[1] = 10 5614514f5e3Sopenharmony_ci print("element1 assigned to 10: " + array[1]); 5624514f5e3Sopenharmony_ci try { 5634514f5e3Sopenharmony_ci array[10] 5644514f5e3Sopenharmony_ci print("Index access read out of range success."); 5654514f5e3Sopenharmony_ci } catch (err) { 5664514f5e3Sopenharmony_ci print("Index access read out of range failed. err: " + err + ", code: " + err.code); 5674514f5e3Sopenharmony_ci } 5684514f5e3Sopenharmony_ci try { 5694514f5e3Sopenharmony_ci array[100] = 10 5704514f5e3Sopenharmony_ci print("Index access write out of range success."); 5714514f5e3Sopenharmony_ci } catch (err) { 5724514f5e3Sopenharmony_ci print("Index access write out of range failed. err: " + err + ", code: " + err.code); 5734514f5e3Sopenharmony_ci } 5744514f5e3Sopenharmony_ci try { 5754514f5e3Sopenharmony_ci array.forEach((key: number, _: number, array: SendableArray) => { 5764514f5e3Sopenharmony_ci array[key + array.length]; 5774514f5e3Sopenharmony_ci }); 5784514f5e3Sopenharmony_ci } catch (err) { 5794514f5e3Sopenharmony_ci print("read element while iterate array fail. err: " + err + ", errCode: " + err.code); 5804514f5e3Sopenharmony_ci } 5814514f5e3Sopenharmony_ci try { 5824514f5e3Sopenharmony_ci array.forEach((key: number, _: number, array: SendableArray) => { 5834514f5e3Sopenharmony_ci array[key + array.length] = 100; 5844514f5e3Sopenharmony_ci }); 5854514f5e3Sopenharmony_ci } catch (err) { 5864514f5e3Sopenharmony_ci print("write element while iterate array fail. err: " + err + ", errCode: " + err.code); 5874514f5e3Sopenharmony_ci } 5884514f5e3Sopenharmony_ci} 5894514f5e3Sopenharmony_ci 5904514f5e3Sopenharmony_cifunction indexStringAccess() { 5914514f5e3Sopenharmony_ci print("Start Test indexStringAccess") 5924514f5e3Sopenharmony_ci const array = new SendableArray<number>(1, 3, 5, 7); 5934514f5e3Sopenharmony_ci print("String index element1: " + array["" + 1]); 5944514f5e3Sopenharmony_ci array["" + 1] = 10 5954514f5e3Sopenharmony_ci print("String index element1 assigned to 10: " + array["" + 1]); 5964514f5e3Sopenharmony_ci try { 5974514f5e3Sopenharmony_ci array["" + 10] 5984514f5e3Sopenharmony_ci print("String Index access read out of range success."); 5994514f5e3Sopenharmony_ci } catch (err) { 6004514f5e3Sopenharmony_ci print("String Index access read out of range failed. err: " + err + ", code: " + err.code); 6014514f5e3Sopenharmony_ci } 6024514f5e3Sopenharmony_ci try { 6034514f5e3Sopenharmony_ci array["" + 100] = 10 6044514f5e3Sopenharmony_ci print("String Index access write out of range success."); 6054514f5e3Sopenharmony_ci } catch (err) { 6064514f5e3Sopenharmony_ci print("String Index access write out of range failed. err: " + err + ", code: " + err.code); 6074514f5e3Sopenharmony_ci } 6084514f5e3Sopenharmony_ci try { 6094514f5e3Sopenharmony_ci array.forEach((key: number, _: number, array: SendableArray) => { 6104514f5e3Sopenharmony_ci array['' + key + array.length]; 6114514f5e3Sopenharmony_ci }); 6124514f5e3Sopenharmony_ci } catch (err) { 6134514f5e3Sopenharmony_ci print("String index read element while iterate array fail. err: " + err + ", errCode: " + err.code); 6144514f5e3Sopenharmony_ci } 6154514f5e3Sopenharmony_ci try { 6164514f5e3Sopenharmony_ci array.forEach((key: number, _: number, array: SendableArray) => { 6174514f5e3Sopenharmony_ci array['' + key + array.length] = 100; 6184514f5e3Sopenharmony_ci }); 6194514f5e3Sopenharmony_ci } catch (err) { 6204514f5e3Sopenharmony_ci print("String index write element while iterate array fail. err: " + err + ", errCode: " + err.code); 6214514f5e3Sopenharmony_ci } 6224514f5e3Sopenharmony_ci} 6234514f5e3Sopenharmony_ci 6244514f5e3Sopenharmony_cifunction testForIC(index: number) { 6254514f5e3Sopenharmony_ci const array = new SendableArray<number>(1, 3, 5, 7); 6264514f5e3Sopenharmony_ci try { 6274514f5e3Sopenharmony_ci const element = array[index < 80 ? 1 : 10]; 6284514f5e3Sopenharmony_ci if (index == 1) { 6294514f5e3Sopenharmony_ci print("[IC] Index access read in range success. array: " + element); 6304514f5e3Sopenharmony_ci } 6314514f5e3Sopenharmony_ci } catch (err) { 6324514f5e3Sopenharmony_ci if (index == 99) { 6334514f5e3Sopenharmony_ci print("[IC] Index access read out of range failed. err: " + err + ", code: " + err.code); 6344514f5e3Sopenharmony_ci } 6354514f5e3Sopenharmony_ci } 6364514f5e3Sopenharmony_ci try { 6374514f5e3Sopenharmony_ci array[index < 80 ? 1 : 100] = 10 6384514f5e3Sopenharmony_ci if (index == 1) { 6394514f5e3Sopenharmony_ci print("[IC] Index access write in range success."); 6404514f5e3Sopenharmony_ci } 6414514f5e3Sopenharmony_ci } catch (err) { 6424514f5e3Sopenharmony_ci if (index == 99) { 6434514f5e3Sopenharmony_ci print("[IC] Index access write out of range failed. err: " + err + ", code: " + err.code); 6444514f5e3Sopenharmony_ci } 6454514f5e3Sopenharmony_ci } 6464514f5e3Sopenharmony_ci try { 6474514f5e3Sopenharmony_ci array.length = index < 80 ? 1 : 100; 6484514f5e3Sopenharmony_ci if (index == 1) { 6494514f5e3Sopenharmony_ci print("[IC] assign readonly length no error."); 6504514f5e3Sopenharmony_ci } 6514514f5e3Sopenharmony_ci } catch (err) { 6524514f5e3Sopenharmony_ci if (index == 99) { 6534514f5e3Sopenharmony_ci print("[IC] assign readonly length fail. err: " + err + ", code: " + err.code); 6544514f5e3Sopenharmony_ci } 6554514f5e3Sopenharmony_ci } 6564514f5e3Sopenharmony_ci} 6574514f5e3Sopenharmony_ci 6584514f5e3Sopenharmony_cifunction testStringForIC(index: number) { 6594514f5e3Sopenharmony_ci const array = new SendableArray<number>(1, 3, 5, 7); 6604514f5e3Sopenharmony_ci try { 6614514f5e3Sopenharmony_ci const element = array["" + index < 80 ? 1 : 10]; 6624514f5e3Sopenharmony_ci if (index == 1) { 6634514f5e3Sopenharmony_ci print("[IC] String Index access read in range success. array: " + element); 6644514f5e3Sopenharmony_ci } 6654514f5e3Sopenharmony_ci } catch (err) { 6664514f5e3Sopenharmony_ci if (index == 99) { 6674514f5e3Sopenharmony_ci print("[IC] String Index access read out of range failed. err: " + err + ", code: " + err.code); 6684514f5e3Sopenharmony_ci } 6694514f5e3Sopenharmony_ci } 6704514f5e3Sopenharmony_ci try { 6714514f5e3Sopenharmony_ci array["" + (index < 80 ? 1 : 100)] = 10 6724514f5e3Sopenharmony_ci if (index == 1) { 6734514f5e3Sopenharmony_ci print("[IC] String Index access write in range success."); 6744514f5e3Sopenharmony_ci } 6754514f5e3Sopenharmony_ci } catch (err) { 6764514f5e3Sopenharmony_ci if (index == 99) { 6774514f5e3Sopenharmony_ci print("[IC] String Index access write out of range failed. err: " + err + ", code: " + err.code); 6784514f5e3Sopenharmony_ci } 6794514f5e3Sopenharmony_ci } 6804514f5e3Sopenharmony_ci} 6814514f5e3Sopenharmony_ci 6824514f5e3Sopenharmony_cifunction frozenTest(array: SendableArray) { 6834514f5e3Sopenharmony_ci try { 6844514f5e3Sopenharmony_ci array.notExistProp = 1; 6854514f5e3Sopenharmony_ci } catch (err) { 6864514f5e3Sopenharmony_ci print('Add prop to array failed. err: ' + err); 6874514f5e3Sopenharmony_ci } 6884514f5e3Sopenharmony_ci try { 6894514f5e3Sopenharmony_ci Object.defineProperty(array, 'defineNotExistProp', { value: 321, writable: false }); 6904514f5e3Sopenharmony_ci } catch (err) { 6914514f5e3Sopenharmony_ci print('defineNotExistProp to array failed. err: ' + err); 6924514f5e3Sopenharmony_ci } 6934514f5e3Sopenharmony_ci try { 6944514f5e3Sopenharmony_ci array.at = 1; 6954514f5e3Sopenharmony_ci } catch (err) { 6964514f5e3Sopenharmony_ci print('Update function [at] failed. err: ' + err); 6974514f5e3Sopenharmony_ci } 6984514f5e3Sopenharmony_ci try { 6994514f5e3Sopenharmony_ci Object.defineProperty(array, 'at', { value: 321, writable: false }); 7004514f5e3Sopenharmony_ci } catch (err) { 7014514f5e3Sopenharmony_ci print('Update function [at] by defineProperty failed. err: ' + err); 7024514f5e3Sopenharmony_ci } 7034514f5e3Sopenharmony_ci array.push(111); 7044514f5e3Sopenharmony_ci} 7054514f5e3Sopenharmony_ci 7064514f5e3Sopenharmony_cifunction arrayFrozenTest() { 7074514f5e3Sopenharmony_ci print("Start Test arrayFrozenTest") 7084514f5e3Sopenharmony_ci let arr1 = new SendableArray<string>('ARK'); 7094514f5e3Sopenharmony_ci print("arrayFrozenTest [new] single string. arr: " + arr1); 7104514f5e3Sopenharmony_ci frozenTest(arr1); 7114514f5e3Sopenharmony_ci arr1 = new SendableArray<string>('A', 'R', 'K'); 7124514f5e3Sopenharmony_ci print("arrayFrozenTest [new]. arr: " + arr1); 7134514f5e3Sopenharmony_ci frozenTest(arr1); 7144514f5e3Sopenharmony_ci arr1 = SendableArray.from<string>(['A', 'R', 'K']); 7154514f5e3Sopenharmony_ci print("arrayFrozenTest static [from]. arr: " + arr1); 7164514f5e3Sopenharmony_ci frozenTest(arr1); 7174514f5e3Sopenharmony_ci arr1 = SendableArray.create<string>(3, 'A'); 7184514f5e3Sopenharmony_ci print("arrayFrozenTest static [create]. arr: " + arr1); 7194514f5e3Sopenharmony_ci frozenTest(arr1); 7204514f5e3Sopenharmony_ci} 7214514f5e3Sopenharmony_ci 7224514f5e3Sopenharmony_cifunction sharedArrayFrozenTest() { 7234514f5e3Sopenharmony_ci print("Start Test sharedArrayFrozenTest") 7244514f5e3Sopenharmony_ci let arr1 = new SubSharedClass(); 7254514f5e3Sopenharmony_ci arr1.push("A"); 7264514f5e3Sopenharmony_ci arr1.push("R"); 7274514f5e3Sopenharmony_ci arr1.push("K"); 7284514f5e3Sopenharmony_ci print("sharedArrayFrozenTest [new]. arr: " + arr1); 7294514f5e3Sopenharmony_ci frozenTest(arr1); 7304514f5e3Sopenharmony_ci} 7314514f5e3Sopenharmony_ci 7324514f5e3Sopenharmony_cifunction increaseArray() { 7334514f5e3Sopenharmony_ci print("Start Test extendSharedTest") 7344514f5e3Sopenharmony_ci let sub = new SubSharedClass(); 7354514f5e3Sopenharmony_ci for (let idx: number = 0; idx < 1200; idx++) { 7364514f5e3Sopenharmony_ci sub.push(idx + 10); 7374514f5e3Sopenharmony_ci } 7384514f5e3Sopenharmony_ci print("Push: " + sub); 7394514f5e3Sopenharmony_ci} 7404514f5e3Sopenharmony_ci 7414514f5e3Sopenharmony_cifunction arrayFromSet(){ 7424514f5e3Sopenharmony_ci print('Start Test arrayFromSet'); 7434514f5e3Sopenharmony_ci const set = new Set(['foo', 'bar', 'baz', 'foo']); 7444514f5e3Sopenharmony_ci const sharedSet = new SendableSet(['foo', 'bar', 'baz', 'foo']); 7454514f5e3Sopenharmony_ci print('Create from normal set: ' + SendableArray.from(set)); 7464514f5e3Sopenharmony_ci print('Create from shared set: ' + SendableArray.from(set)); 7474514f5e3Sopenharmony_ci} 7484514f5e3Sopenharmony_ci 7494514f5e3Sopenharmony_cifunction arrayFromNormalMap() { 7504514f5e3Sopenharmony_ci print("Start Test arrayFromNormalMap") 7514514f5e3Sopenharmony_ci const map = new Map([ 7524514f5e3Sopenharmony_ci [1, 2], 7534514f5e3Sopenharmony_ci [2, 4], 7544514f5e3Sopenharmony_ci [4, 8], 7554514f5e3Sopenharmony_ci ]); 7564514f5e3Sopenharmony_ci Array.from(map); 7574514f5e3Sopenharmony_ci // [[1, 2], [2, 4], [4, 8]] 7584514f5e3Sopenharmony_ci 7594514f5e3Sopenharmony_ci const mapper = new Map([ 7604514f5e3Sopenharmony_ci ["1", "a"], 7614514f5e3Sopenharmony_ci ["2", "b"], 7624514f5e3Sopenharmony_ci ]); 7634514f5e3Sopenharmony_ci Array.from(mapper.values()); 7644514f5e3Sopenharmony_ci // ['a', 'b']; 7654514f5e3Sopenharmony_ci 7664514f5e3Sopenharmony_ci Array.from(mapper.keys()); 7674514f5e3Sopenharmony_ci // ['1', '2']; 7684514f5e3Sopenharmony_ci} 7694514f5e3Sopenharmony_ci 7704514f5e3Sopenharmony_cifunction arrayFromSendableMap() { 7714514f5e3Sopenharmony_ci print('Start test arrayFromSendableMap'); 7724514f5e3Sopenharmony_ci const map = new SendableMap([ 7734514f5e3Sopenharmony_ci [1, 2], 7744514f5e3Sopenharmony_ci [2, 4], 7754514f5e3Sopenharmony_ci [4, 8], 7764514f5e3Sopenharmony_ci ]); 7774514f5e3Sopenharmony_ci try { 7784514f5e3Sopenharmony_ci print('create from sharedMap: ' + SendableArray.from(map)); 7794514f5e3Sopenharmony_ci } catch (err) { 7804514f5e3Sopenharmony_ci print('create from sharedMap with non-sendable array failed. err: ' + err + ', code: ' + err.code); 7814514f5e3Sopenharmony_ci } 7824514f5e3Sopenharmony_ci // [[1, 2], [2, 4], [4, 8]] 7834514f5e3Sopenharmony_ci 7844514f5e3Sopenharmony_ci const mapper = new SendableMap([SendableArray.from(['1', 'a']), SendableArray.from(['2', 'b'])]); 7854514f5e3Sopenharmony_ci print('create from sharedMapper.values(): ' + SendableArray.from(mapper.values())); 7864514f5e3Sopenharmony_ci // ['a', 'b']; 7874514f5e3Sopenharmony_ci 7884514f5e3Sopenharmony_ci print('create from sharedMapper.values(): ' + SendableArray.from(mapper.keys())); 7894514f5e3Sopenharmony_ci // ['1', '2']; 7904514f5e3Sopenharmony_ci} 7914514f5e3Sopenharmony_ci 7924514f5e3Sopenharmony_cifunction arrayFromNotArray() { 7934514f5e3Sopenharmony_ci print("Start test arrayFromNotArray") 7944514f5e3Sopenharmony_ci function NotArray(len: number) { 7954514f5e3Sopenharmony_ci print("NotArray called with length", len); 7964514f5e3Sopenharmony_ci } 7974514f5e3Sopenharmony_ci 7984514f5e3Sopenharmony_ci try { 7994514f5e3Sopenharmony_ci print('Create array from notArray: ' + SendableArray.from.call(NotArray, new Set(['foo', 'bar', 'baz']))); 8004514f5e3Sopenharmony_ci } catch (err) { 8014514f5e3Sopenharmony_ci print("Create array from notArray failed. err: " + err + ", code: " + err.code); 8024514f5e3Sopenharmony_ci } 8034514f5e3Sopenharmony_ci} 8044514f5e3Sopenharmony_ci 8054514f5e3Sopenharmony_cifunction derivedSlice() { 8064514f5e3Sopenharmony_ci print("Start Test derivedSlice") 8074514f5e3Sopenharmony_ci let animals = new SubSharedClass(); 8084514f5e3Sopenharmony_ci animals.push('ant'); 8094514f5e3Sopenharmony_ci animals.push('bison'); 8104514f5e3Sopenharmony_ci animals.push('camel'); 8114514f5e3Sopenharmony_ci animals.push('duck'); 8124514f5e3Sopenharmony_ci animals.push('elephant'); 8134514f5e3Sopenharmony_ci print("instanceOf slice result: " + (animals.slice() instanceof SubSharedClass)); 8144514f5e3Sopenharmony_ci} 8154514f5e3Sopenharmony_ci 8164514f5e3Sopenharmony_cifunction derivedSort() { 8174514f5e3Sopenharmony_ci print("Start Test derivedSort") 8184514f5e3Sopenharmony_ci let months = new SubSharedClass(); 8194514f5e3Sopenharmony_ci months.push('March') 8204514f5e3Sopenharmony_ci months.push('Jan') 8214514f5e3Sopenharmony_ci months.push('Feb') 8224514f5e3Sopenharmony_ci months.push('Dec') 8234514f5e3Sopenharmony_ci 8244514f5e3Sopenharmony_ci const sortedMonth = months.sort(); 8254514f5e3Sopenharmony_ci print("instanceOf derived sort result: " + (sortedMonth instanceof SubSharedClass)); 8264514f5e3Sopenharmony_ci} 8274514f5e3Sopenharmony_ci 8284514f5e3Sopenharmony_cifunction derivedForEach() { 8294514f5e3Sopenharmony_ci print('Start Test derivedForEach'); 8304514f5e3Sopenharmony_ci let array = new SubSharedClass(); 8314514f5e3Sopenharmony_ci array.push('March'); 8324514f5e3Sopenharmony_ci array.push('Jan'); 8334514f5e3Sopenharmony_ci array.push('Feb'); 8344514f5e3Sopenharmony_ci array.push('Dec'); 8354514f5e3Sopenharmony_ci array.forEach((element: string, index: number, array: SendableArray<string>) => 8364514f5e3Sopenharmony_ci print(`a[${index}] = ${element}, ${array instanceof SubSharedClass}`), 8374514f5e3Sopenharmony_ci ); 8384514f5e3Sopenharmony_ci} 8394514f5e3Sopenharmony_ci 8404514f5e3Sopenharmony_cifunction derivedMap() { 8414514f5e3Sopenharmony_ci print("Start derivedMap") 8424514f5e3Sopenharmony_ci let array = new SubSharedClass(); 8434514f5e3Sopenharmony_ci array.push(1); 8444514f5e3Sopenharmony_ci array.push(4); 8454514f5e3Sopenharmony_ci array.push(9); 8464514f5e3Sopenharmony_ci array.push(16); 8474514f5e3Sopenharmony_ci print("instanceOf derived map result: " + (array.map<string>((x: number) => x + x + "") instanceof SubSharedClass)); 8484514f5e3Sopenharmony_ci} 8494514f5e3Sopenharmony_ci 8504514f5e3Sopenharmony_cifunction derivedFill() { 8514514f5e3Sopenharmony_ci print("Start Test derivedFill") 8524514f5e3Sopenharmony_ci let array = new SubSharedClass(); 8534514f5e3Sopenharmony_ci array.push(1); 8544514f5e3Sopenharmony_ci array.push(2); 8554514f5e3Sopenharmony_ci array.push(3); 8564514f5e3Sopenharmony_ci array.push(4); 8574514f5e3Sopenharmony_ci const filledArray = array.fill(0, 2, 4); 8584514f5e3Sopenharmony_ci print(array); // [1, 2, 0, 0] 8594514f5e3Sopenharmony_ci print("instanceOf derived fill result: " + (filledArray instanceof SubSharedClass)); 8604514f5e3Sopenharmony_ci} 8614514f5e3Sopenharmony_ci 8624514f5e3Sopenharmony_cifunction readOutOfRange() { 8634514f5e3Sopenharmony_ci print("Start Test array read out of range") 8644514f5e3Sopenharmony_ci const array = new SendableArray<number>(1, 3, 5, 7); 8654514f5e3Sopenharmony_ci print("array[0]: " + array[0]); 8664514f5e3Sopenharmony_ci try { 8674514f5e3Sopenharmony_ci let value = array[9]; 8684514f5e3Sopenharmony_ci print("read out of range success " + value); 8694514f5e3Sopenharmony_ci } catch (err) { 8704514f5e3Sopenharmony_ci print("read out of range failed. err: " + err + ", code: " + err.code); 8714514f5e3Sopenharmony_ci } 8724514f5e3Sopenharmony_ci 8734514f5e3Sopenharmony_ci try { 8744514f5e3Sopenharmony_ci let value = array['0']; 8754514f5e3Sopenharmony_ci print("read out of range success " + value); 8764514f5e3Sopenharmony_ci } catch (err) { 8774514f5e3Sopenharmony_ci print("read out of range failed. err: " + err + ", code: " + err.code); 8784514f5e3Sopenharmony_ci } 8794514f5e3Sopenharmony_ci 8804514f5e3Sopenharmony_ci try { 8814514f5e3Sopenharmony_ci let value = array[0.0]; 8824514f5e3Sopenharmony_ci print("read out of range success " + value); 8834514f5e3Sopenharmony_ci } catch (err) { 8844514f5e3Sopenharmony_ci print("read out of range failed. err: " + err + ", code: " + err.code); 8854514f5e3Sopenharmony_ci } 8864514f5e3Sopenharmony_ci 8874514f5e3Sopenharmony_ci try { 8884514f5e3Sopenharmony_ci let value = array[1.5] 8894514f5e3Sopenharmony_ci print("read out of range success " + value); 8904514f5e3Sopenharmony_ci } catch (err) { 8914514f5e3Sopenharmony_ci print("read out of range failed. err: " + err + ", code: " + err.code); 8924514f5e3Sopenharmony_ci } 8934514f5e3Sopenharmony_ci 8944514f5e3Sopenharmony_ci try { 8954514f5e3Sopenharmony_ci let value = array[undefined] 8964514f5e3Sopenharmony_ci print("read out of range success " + value); 8974514f5e3Sopenharmony_ci } catch (err) { 8984514f5e3Sopenharmony_ci print("read out of range failed. err: " + err + ", code: " + err.code); 8994514f5e3Sopenharmony_ci } 9004514f5e3Sopenharmony_ci 9014514f5e3Sopenharmony_ci try { 9024514f5e3Sopenharmony_ci let value = array[null] 9034514f5e3Sopenharmony_ci print("read out of range success " + value); 9044514f5e3Sopenharmony_ci } catch (err) { 9054514f5e3Sopenharmony_ci print("read out of range failed. err: " + err + ", code: " + err.code); 9064514f5e3Sopenharmony_ci } 9074514f5e3Sopenharmony_ci 9084514f5e3Sopenharmony_ci try { 9094514f5e3Sopenharmony_ci let value = array[Symbol.toStringTag] 9104514f5e3Sopenharmony_ci print("read out of range success " + value); 9114514f5e3Sopenharmony_ci } catch (err) { 9124514f5e3Sopenharmony_ci print("read out of range failed. err: " + err + ", code: " + err.code); 9134514f5e3Sopenharmony_ci } 9144514f5e3Sopenharmony_ci 9154514f5e3Sopenharmony_ci try { 9164514f5e3Sopenharmony_ci let value = array[false] 9174514f5e3Sopenharmony_ci print("read out of range success " + value); 9184514f5e3Sopenharmony_ci } catch (err) { 9194514f5e3Sopenharmony_ci print("read out of range failed. err: " + err + ", code: " + err.code); 9204514f5e3Sopenharmony_ci } 9214514f5e3Sopenharmony_ci 9224514f5e3Sopenharmony_ci try { 9234514f5e3Sopenharmony_ci let value = array[true] 9244514f5e3Sopenharmony_ci print("read out of range success " + value); 9254514f5e3Sopenharmony_ci } catch (err) { 9264514f5e3Sopenharmony_ci print("read out of range failed. err: " + err + ", code: " + err.code); 9274514f5e3Sopenharmony_ci } 9284514f5e3Sopenharmony_ci} 9294514f5e3Sopenharmony_ci 9304514f5e3Sopenharmony_cifunction forOf() { 9314514f5e3Sopenharmony_ci print("Start Test array for of") 9324514f5e3Sopenharmony_ci const array = new SendableArray<number>(1, 3, 5, 7); 9334514f5e3Sopenharmony_ci for(const num of array){ 9344514f5e3Sopenharmony_ci print(num); 9354514f5e3Sopenharmony_ci } 9364514f5e3Sopenharmony_ci} 9374514f5e3Sopenharmony_ci 9384514f5e3Sopenharmony_cifunction sharedArrayConstructorTest(){ 9394514f5e3Sopenharmony_ci let from_arr = [1,2,3]; 9404514f5e3Sopenharmony_ci let s_arr = new SendableArray<number>(...from_arr); // output [1,2,3] 9414514f5e3Sopenharmony_ci print(("SendableArray ...from_arr: " + s_arr)); 9424514f5e3Sopenharmony_ci let s_arr1 = new SendableArray<number>(0, ...from_arr); // output [1,2,3] 9434514f5e3Sopenharmony_ci print(("SendableArray ...from_arr1: " + s_arr1)); 9444514f5e3Sopenharmony_ci try { 9454514f5e3Sopenharmony_ci print("Create from SendableArray with non-sendable array error: " + new SendableArray(from_arr)); 9464514f5e3Sopenharmony_ci } catch (err) { 9474514f5e3Sopenharmony_ci print("Create from SendableArray with non-sendable array error failed. err: " + err + ", code: " + err.code); 9484514f5e3Sopenharmony_ci } 9494514f5e3Sopenharmony_ci} 9504514f5e3Sopenharmony_ci 9514514f5e3Sopenharmony_cifunction fromArrayConstructorTest(): void { 9524514f5e3Sopenharmony_ci print("Start Test fromArrayConstructorTest") 9534514f5e3Sopenharmony_ci const array1 = new SendableArray<string>('a', 'b', 'c'); 9544514f5e3Sopenharmony_ci const iterator = array1.values(); 9554514f5e3Sopenharmony_ci print(SendableArray.from<string>(iterator)); 9564514f5e3Sopenharmony_ci} 9574514f5e3Sopenharmony_ci 9584514f5e3Sopenharmony_cifunction DefinePropertyTest() { 9594514f5e3Sopenharmony_ci print("Start Test DefinePropertyTest") 9604514f5e3Sopenharmony_ci let array = new SendableArray<string>('ARK'); 9614514f5e3Sopenharmony_ci try { 9624514f5e3Sopenharmony_ci Object.defineProperty(array, '0', {writable: true, configurable: true, enumerable: true, value: "321"}); 9634514f5e3Sopenharmony_ci print('defineProperty to array success'); 9644514f5e3Sopenharmony_ci } catch (err) { 9654514f5e3Sopenharmony_ci print('defineProperty to array failed. err: ' + err); 9664514f5e3Sopenharmony_ci } 9674514f5e3Sopenharmony_ci 9684514f5e3Sopenharmony_ci try { 9694514f5e3Sopenharmony_ci Object.defineProperty(array, '1200', {writable: true, configurable: true, enumerable: true, value: "321"}); 9704514f5e3Sopenharmony_ci print('defineProperty to array success'); 9714514f5e3Sopenharmony_ci } catch (err) { 9724514f5e3Sopenharmony_ci print('defineProperty to array failed. err: ' + err); 9734514f5e3Sopenharmony_ci } 9744514f5e3Sopenharmony_ci 9754514f5e3Sopenharmony_ci try { 9764514f5e3Sopenharmony_ci Object.defineProperty(array, 0, {writable: true, configurable: true, enumerable: true, value: "321"}); 9774514f5e3Sopenharmony_ci print('defineProperty to array success'); 9784514f5e3Sopenharmony_ci } catch (err) { 9794514f5e3Sopenharmony_ci print('defineProperty to array failed. err: ' + err); 9804514f5e3Sopenharmony_ci } 9814514f5e3Sopenharmony_ci 9824514f5e3Sopenharmony_ci try { 9834514f5e3Sopenharmony_ci Object.defineProperty(array, 1200, {writable: true, configurable: true, enumerable: true, value: "321"}); 9844514f5e3Sopenharmony_ci print('defineProperty to array success'); 9854514f5e3Sopenharmony_ci } catch (err) { 9864514f5e3Sopenharmony_ci print('defineProperty to array failed. err: ' + err); 9874514f5e3Sopenharmony_ci } 9884514f5e3Sopenharmony_ci 9894514f5e3Sopenharmony_ci try { 9904514f5e3Sopenharmony_ci Object.defineProperty(array, 2871622679, {writable: true, configurable: true, enumerable: true, value: "321"}); 9914514f5e3Sopenharmony_ci print('defineProperty to array success'); 9924514f5e3Sopenharmony_ci } catch (err) { 9934514f5e3Sopenharmony_ci print('defineProperty to array failed. err: ' + err); 9944514f5e3Sopenharmony_ci } 9954514f5e3Sopenharmony_ci try { 9964514f5e3Sopenharmony_ci Object.defineProperty(array, 0.0, {writable: true, configurable: true, enumerable: true, value: "321"}); 9974514f5e3Sopenharmony_ci print('defineProperty to array success ' + array[0.0]); 9984514f5e3Sopenharmony_ci } catch (err) { 9994514f5e3Sopenharmony_ci print("defineProperty to array failed. err: " + err + ", code: " + err.code); 10004514f5e3Sopenharmony_ci } 10014514f5e3Sopenharmony_ci 10024514f5e3Sopenharmony_ci try { 10034514f5e3Sopenharmony_ci Object.defineProperty(array, 1.5, {writable: true, configurable: true, enumerable: true, value: "321"}); 10044514f5e3Sopenharmony_ci print('defineProperty to array success ' + array[1.5]); 10054514f5e3Sopenharmony_ci } catch (err) { 10064514f5e3Sopenharmony_ci print("defineProperty to array failed. err: " + err + ", code: " + err.code); 10074514f5e3Sopenharmony_ci } 10084514f5e3Sopenharmony_ci 10094514f5e3Sopenharmony_ci try { 10104514f5e3Sopenharmony_ci Object.defineProperty(array, undefined, {writable: true, configurable: true, enumerable: true, value: "321"}); 10114514f5e3Sopenharmony_ci print("defineProperty to array success " + array[undefined]); 10124514f5e3Sopenharmony_ci } catch (err) { 10134514f5e3Sopenharmony_ci print("defineProperty to array failed. err: " + err + ", code: " + err.code); 10144514f5e3Sopenharmony_ci } 10154514f5e3Sopenharmony_ci 10164514f5e3Sopenharmony_ci try { 10174514f5e3Sopenharmony_ci Object.defineProperty(array, null, {writable: true, configurable: true, enumerable: true, value: "321"}); 10184514f5e3Sopenharmony_ci print("defineProperty to array success " + array[null]); 10194514f5e3Sopenharmony_ci } catch (err) { 10204514f5e3Sopenharmony_ci print("defineProperty to array failed. err: " + err + ", code: " + err.code); 10214514f5e3Sopenharmony_ci } 10224514f5e3Sopenharmony_ci 10234514f5e3Sopenharmony_ci try { 10244514f5e3Sopenharmony_ci Object.defineProperty(array, Symbol.toStringTag, {writable: true, configurable: true, enumerable: true, value: "321"}); 10254514f5e3Sopenharmony_ci print("defineProperty to array success " + array[Symbol.toStringTag]); 10264514f5e3Sopenharmony_ci } catch (err) { 10274514f5e3Sopenharmony_ci print("defineProperty to array failed. err: " + err + ", code: " + err.code); 10284514f5e3Sopenharmony_ci } 10294514f5e3Sopenharmony_ci 10304514f5e3Sopenharmony_ci try { 10314514f5e3Sopenharmony_ci Object.defineProperty(array, true, {writable: true, configurable: true, enumerable: true, value: "321"}); 10324514f5e3Sopenharmony_ci print("defineProperty to array success " + array[null]); 10334514f5e3Sopenharmony_ci } catch (err) { 10344514f5e3Sopenharmony_ci print("defineProperty to array failed. err: " + err + ", code: " + err.code); 10354514f5e3Sopenharmony_ci } 10364514f5e3Sopenharmony_ci 10374514f5e3Sopenharmony_ci try { 10384514f5e3Sopenharmony_ci Object.defineProperty(array, false, {writable: true, configurable: true, enumerable: true, value: "321"}); 10394514f5e3Sopenharmony_ci print("defineProperty to array success " + array[Symbol.toStringTag]); 10404514f5e3Sopenharmony_ci } catch (err) { 10414514f5e3Sopenharmony_ci print("defineProperty to array failed. err: " + err + ", code: " + err.code); 10424514f5e3Sopenharmony_ci } 10434514f5e3Sopenharmony_ci} 10444514f5e3Sopenharmony_ci 10454514f5e3Sopenharmony_cifunction isEven(num) { 10464514f5e3Sopenharmony_ci return num % 2 === 0; 10474514f5e3Sopenharmony_ci} 10484514f5e3Sopenharmony_ci 10494514f5e3Sopenharmony_cifunction SomeTest(): void { 10504514f5e3Sopenharmony_ci print("Start Test SomeTest") 10514514f5e3Sopenharmony_ci const numbers = new SendableArray<number>(1, 2, 3, 4, 5); 10524514f5e3Sopenharmony_ci 10534514f5e3Sopenharmony_ci const hasEvenNumber = numbers.some(isEven); // 1: Whether there are even numbers in the array 10544514f5e3Sopenharmony_ci print(hasEvenNumber); // should be true 10554514f5e3Sopenharmony_ci 10564514f5e3Sopenharmony_ci const hasNegativeNumber = numbers.some(num => num < 0); // 2: Whether there are negative numbers in the array 10574514f5e3Sopenharmony_ci print(hasNegativeNumber); // should be false 10584514f5e3Sopenharmony_ci} 10594514f5e3Sopenharmony_ci 10604514f5e3Sopenharmony_cifunction EveryTest(): void { 10614514f5e3Sopenharmony_ci print("Start Test EveryTest") 10624514f5e3Sopenharmony_ci const numbers = new SendableArray<number>(1, 2, 3, 4, 5); 10634514f5e3Sopenharmony_ci 10644514f5e3Sopenharmony_ci const allPositive = numbers.every((num) => num > 0); // Check that all elements in the array are greater than 0 10654514f5e3Sopenharmony_ci print(allPositive); // should be true 10664514f5e3Sopenharmony_ci 10674514f5e3Sopenharmony_ci const allEven = numbers.every((num) => num % 2 === 0); // Check if all the elements in the array are even 10684514f5e3Sopenharmony_ci print(allEven); // should be false 10694514f5e3Sopenharmony_ci} 10704514f5e3Sopenharmony_ci 10714514f5e3Sopenharmony_cifunction isArrayTest() { 10724514f5e3Sopenharmony_ci // print true 10734514f5e3Sopenharmony_ci print(SendableArray.isArray(new SendableArray())); 10744514f5e3Sopenharmony_ci print(SendableArray.isArray(new SendableArray('a', 'b', 'c', 'd'))); 10754514f5e3Sopenharmony_ci print(SendableArray.isArray(new SendableArray(3))); 10764514f5e3Sopenharmony_ci print(SendableArray.isArray(SendableArray.prototype)); 10774514f5e3Sopenharmony_ci 10784514f5e3Sopenharmony_ci // print false 10794514f5e3Sopenharmony_ci print(SendableArray.isArray([])); 10804514f5e3Sopenharmony_ci print(SendableArray.isArray([1])); 10814514f5e3Sopenharmony_ci print(SendableArray.isArray()); 10824514f5e3Sopenharmony_ci print(SendableArray.isArray({})); 10834514f5e3Sopenharmony_ci print(SendableArray.isArray(null)); 10844514f5e3Sopenharmony_ci print(SendableArray.isArray(undefined)); 10854514f5e3Sopenharmony_ci print(SendableArray.isArray(17)); 10864514f5e3Sopenharmony_ci print(SendableArray.isArray('SendableArray')); 10874514f5e3Sopenharmony_ci print(SendableArray.isArray(true)); 10884514f5e3Sopenharmony_ci print(SendableArray.isArray(false)); 10894514f5e3Sopenharmony_ci print(SendableArray.isArray(new SendableUint8Array(32))); 10904514f5e3Sopenharmony_ci} 10914514f5e3Sopenharmony_ci 10924514f5e3Sopenharmony_cifunction lastIndexOfTest() { 10934514f5e3Sopenharmony_ci let arr = SendableArray.from([1, 2, 3, 4, 2, 5]); 10944514f5e3Sopenharmony_ci print(arr.lastIndexOf(2)); 10954514f5e3Sopenharmony_ci 10964514f5e3Sopenharmony_ci print(arr.lastIndexOf(1)); 10974514f5e3Sopenharmony_ci print(arr.lastIndexOf(5)); 10984514f5e3Sopenharmony_ci print(arr.lastIndexOf(6)); 10994514f5e3Sopenharmony_ci 11004514f5e3Sopenharmony_ci let emptyArr = SendableArray.from([]); 11014514f5e3Sopenharmony_ci print(emptyArr.lastIndexOf(1)); 11024514f5e3Sopenharmony_ci 11034514f5e3Sopenharmony_ci let arrWithNaN = SendableArray.from([1, 2, NaN, 4, NaN]); 11044514f5e3Sopenharmony_ci print(arrWithNaN.lastIndexOf(NaN)); 11054514f5e3Sopenharmony_ci 11064514f5e3Sopenharmony_ci let arrWithUndefined = SendableArray.from([1, 2, undefined, 4]); 11074514f5e3Sopenharmony_ci print(arrWithUndefined.lastIndexOf(undefined)); 11084514f5e3Sopenharmony_ci} 11094514f5e3Sopenharmony_ci 11104514f5e3Sopenharmony_ciat() 11114514f5e3Sopenharmony_ci 11124514f5e3Sopenharmony_cientries() 11134514f5e3Sopenharmony_ci 11144514f5e3Sopenharmony_cikeys() 11154514f5e3Sopenharmony_ci 11164514f5e3Sopenharmony_civalues() 11174514f5e3Sopenharmony_ci 11184514f5e3Sopenharmony_cifind(); 11194514f5e3Sopenharmony_ci 11204514f5e3Sopenharmony_ciincludes(); 11214514f5e3Sopenharmony_ci 11224514f5e3Sopenharmony_ciindex(); 11234514f5e3Sopenharmony_ci 11244514f5e3Sopenharmony_cifill(); 11254514f5e3Sopenharmony_ci 11264514f5e3Sopenharmony_cipop(); 11274514f5e3Sopenharmony_ci 11284514f5e3Sopenharmony_cirandomUpdate(); 11294514f5e3Sopenharmony_ci 11304514f5e3Sopenharmony_cirandomGet(); 11314514f5e3Sopenharmony_ci 11324514f5e3Sopenharmony_cirandomAdd(); 11334514f5e3Sopenharmony_cicreate(); 11344514f5e3Sopenharmony_cifrom(); 11354514f5e3Sopenharmony_cifromTemplate(); 11364514f5e3Sopenharmony_cilength(); 11374514f5e3Sopenharmony_cipush(); 11384514f5e3Sopenharmony_ciconcat(); 11394514f5e3Sopenharmony_cijoin() 11404514f5e3Sopenharmony_cishift() 11414514f5e3Sopenharmony_ciunshift() 11424514f5e3Sopenharmony_cislice() 11434514f5e3Sopenharmony_cisort() 11444514f5e3Sopenharmony_ciindexOf() 11454514f5e3Sopenharmony_ciforEach() 11464514f5e3Sopenharmony_cimap() 11474514f5e3Sopenharmony_cifilter() 11484514f5e3Sopenharmony_cireduce() 11494514f5e3Sopenharmony_cisplice() 11504514f5e3Sopenharmony_cistaticCreate() 11514514f5e3Sopenharmony_cireadonlyLength() 11524514f5e3Sopenharmony_cishrinkTo() 11534514f5e3Sopenharmony_ciextendTo() 11544514f5e3Sopenharmony_ciindexAccess() 11554514f5e3Sopenharmony_ciindexStringAccess() 11564514f5e3Sopenharmony_ciprint("Start Test testForIC") 11574514f5e3Sopenharmony_cifor (let index: number = 0; index < 100; index++) { 11584514f5e3Sopenharmony_ci testForIC(index) 11594514f5e3Sopenharmony_ci} 11604514f5e3Sopenharmony_ci 11614514f5e3Sopenharmony_ciprint("Start Test testStringForIC") 11624514f5e3Sopenharmony_cifor (let index: number = 0; index < 100; index++) { 11634514f5e3Sopenharmony_ci testStringForIC(index) 11644514f5e3Sopenharmony_ci} 11654514f5e3Sopenharmony_ci 11664514f5e3Sopenharmony_ciarrayFrozenTest() 11674514f5e3Sopenharmony_cisharedArrayFrozenTest() 11684514f5e3Sopenharmony_ciarrayFromSet() 11694514f5e3Sopenharmony_ciarrayFromNormalMap() 11704514f5e3Sopenharmony_ciarrayFromSendableMap(); 11714514f5e3Sopenharmony_ciarrayFromNotArray(); 11724514f5e3Sopenharmony_ci 11734514f5e3Sopenharmony_ciderivedSlice(); 11744514f5e3Sopenharmony_ciderivedSort(); 11754514f5e3Sopenharmony_ciderivedForEach(); 11764514f5e3Sopenharmony_ciderivedMap() 11774514f5e3Sopenharmony_ciderivedFill() 11784514f5e3Sopenharmony_cireadOutOfRange() 11794514f5e3Sopenharmony_ciforOf(); 11804514f5e3Sopenharmony_cisharedArrayConstructorTest() 11814514f5e3Sopenharmony_cifromArrayConstructorTest() 11824514f5e3Sopenharmony_ciDefinePropertyTest() 11834514f5e3Sopenharmony_ci 11844514f5e3Sopenharmony_ciSomeTest() 11854514f5e3Sopenharmony_ciEveryTest() 11864514f5e3Sopenharmony_ciisArrayTest(); 11874514f5e3Sopenharmony_cilastIndexOfTest(); 1188