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:sharedcollectionsexception 184514f5e3Sopenharmony_ci * @tc.desc:test sharedcollectionsexception 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 NormalClass { 274514f5e3Sopenharmony_ci public num: number = 0; 284514f5e3Sopenharmony_ci constructor(num: number) { 294514f5e3Sopenharmony_ci this.num = num; 304514f5e3Sopenharmony_ci } 314514f5e3Sopenharmony_ci} 324514f5e3Sopenharmony_ci 334514f5e3Sopenharmony_cifunction bindErrorTest() { 344514f5e3Sopenharmony_ci print("Start bindErrorTest"); 354514f5e3Sopenharmony_ci const array1 = new SendableArray<number>(5, 12, 8, 130, 44); 364514f5e3Sopenharmony_ci const normal = new NormalClass(10); 374514f5e3Sopenharmony_ci const unbouondAt = array1.at; 384514f5e3Sopenharmony_ci const boundAt = unbouondAt.bind(normal); 394514f5e3Sopenharmony_ci try { 404514f5e3Sopenharmony_ci boundAt(2); 414514f5e3Sopenharmony_ci print("call boundAt success."); 424514f5e3Sopenharmony_ci } catch (err) { 434514f5e3Sopenharmony_ci print("call boundAt fail. err: " + err + ", errCode: " + err.code); 444514f5e3Sopenharmony_ci } 454514f5e3Sopenharmony_ci 464514f5e3Sopenharmony_ci const unboundConcat = array1.concat; 474514f5e3Sopenharmony_ci const boundConcat = unboundConcat.bind(normal); 484514f5e3Sopenharmony_ci try { 494514f5e3Sopenharmony_ci boundConcat(); 504514f5e3Sopenharmony_ci print("Call boundConcat succeed."); 514514f5e3Sopenharmony_ci } catch (err) { 524514f5e3Sopenharmony_ci print("Call boundConcat fail. err: " + err + ", errCode: " + err.code); 534514f5e3Sopenharmony_ci } 544514f5e3Sopenharmony_ci 554514f5e3Sopenharmony_ci const unboundEntries = array1.entries; 564514f5e3Sopenharmony_ci const boundEntries = unboundEntries.bind(normal); 574514f5e3Sopenharmony_ci try { 584514f5e3Sopenharmony_ci boundEntries(); 594514f5e3Sopenharmony_ci print("Call boundEntries succeed."); 604514f5e3Sopenharmony_ci } catch (err) { 614514f5e3Sopenharmony_ci print("Call boundEntries failed. err: " + err + ", errCode: " + err.code); 624514f5e3Sopenharmony_ci } 634514f5e3Sopenharmony_ci 644514f5e3Sopenharmony_ci const unboundFill = array1.fill; 654514f5e3Sopenharmony_ci const boundFill = unboundFill.bind(normal); 664514f5e3Sopenharmony_ci try { 674514f5e3Sopenharmony_ci boundFill(); 684514f5e3Sopenharmony_ci print("Call boundFill succeed."); 694514f5e3Sopenharmony_ci } catch (err) { 704514f5e3Sopenharmony_ci print("Call boundFill failed. err: " + err + ", errCode: " + err.code); 714514f5e3Sopenharmony_ci } 724514f5e3Sopenharmony_ci 734514f5e3Sopenharmony_ci const unboundFilter = array1.filter; 744514f5e3Sopenharmony_ci const boundFilter = unboundFilter.bind(normal); 754514f5e3Sopenharmony_ci try { 764514f5e3Sopenharmony_ci boundFilter(); 774514f5e3Sopenharmony_ci print("Call boundFilter succeed."); 784514f5e3Sopenharmony_ci } catch (err) { 794514f5e3Sopenharmony_ci print("Call boundFilter failed. err: " + err + ", errCode: " + err.code); 804514f5e3Sopenharmony_ci } 814514f5e3Sopenharmony_ci 824514f5e3Sopenharmony_ci const unboundFind = array1.find; 834514f5e3Sopenharmony_ci const boundFind = unboundFind.bind(normal); 844514f5e3Sopenharmony_ci try { 854514f5e3Sopenharmony_ci boundFind(); 864514f5e3Sopenharmony_ci print("Call boundFind succeed."); 874514f5e3Sopenharmony_ci } catch (err) { 884514f5e3Sopenharmony_ci print("Call boundFind failed. err: " + err + ", errCode: " + err.code); 894514f5e3Sopenharmony_ci } 904514f5e3Sopenharmony_ci 914514f5e3Sopenharmony_ci const unboundFindIndex = array1.findIndex; 924514f5e3Sopenharmony_ci const boundFindIndex = unboundFindIndex.bind(normal); 934514f5e3Sopenharmony_ci try { 944514f5e3Sopenharmony_ci boundFindIndex(); 954514f5e3Sopenharmony_ci print("Call boundFindIndex succeed."); 964514f5e3Sopenharmony_ci } catch (err) { 974514f5e3Sopenharmony_ci print("Call boundFindIndex failed. err: " + err + ", errCode: " + err.code); 984514f5e3Sopenharmony_ci } 994514f5e3Sopenharmony_ci 1004514f5e3Sopenharmony_ci const unboundForEach = array1.forEach; 1014514f5e3Sopenharmony_ci const boundForEach = unboundForEach.bind(normal); 1024514f5e3Sopenharmony_ci try { 1034514f5e3Sopenharmony_ci boundForEach(); 1044514f5e3Sopenharmony_ci print("Call boundForEach succeed."); 1054514f5e3Sopenharmony_ci } catch (err) { 1064514f5e3Sopenharmony_ci print("Call boundForEach failed. err: " + err + ", errCode: " + err.code); 1074514f5e3Sopenharmony_ci } 1084514f5e3Sopenharmony_ci 1094514f5e3Sopenharmony_ci const unboundIndexOf = array1.indexOf; 1104514f5e3Sopenharmony_ci const boundIndexOf = unboundIndexOf.bind(normal); 1114514f5e3Sopenharmony_ci try { 1124514f5e3Sopenharmony_ci boundIndexOf(); 1134514f5e3Sopenharmony_ci print("Call boundIndexOf succeed."); 1144514f5e3Sopenharmony_ci } catch (err) { 1154514f5e3Sopenharmony_ci print("Call boundIndexOf failed. err: " + err + ", errCode: " + err.code); 1164514f5e3Sopenharmony_ci } 1174514f5e3Sopenharmony_ci 1184514f5e3Sopenharmony_ci const unboundJoin = array1.join; 1194514f5e3Sopenharmony_ci const boundJoin = unboundJoin.bind(normal); 1204514f5e3Sopenharmony_ci try { 1214514f5e3Sopenharmony_ci boundJoin(); 1224514f5e3Sopenharmony_ci print("Call boundJoin succeed."); 1234514f5e3Sopenharmony_ci } catch (err) { 1244514f5e3Sopenharmony_ci print("Call boundJoin failed. err: " + err + ", errCode: " + err.code); 1254514f5e3Sopenharmony_ci } 1264514f5e3Sopenharmony_ci 1274514f5e3Sopenharmony_ci const unboundKeys = array1.keys; 1284514f5e3Sopenharmony_ci const boundKeys = unboundKeys.bind(normal); 1294514f5e3Sopenharmony_ci try { 1304514f5e3Sopenharmony_ci boundKeys(); 1314514f5e3Sopenharmony_ci print("Call boundKeys succeed."); 1324514f5e3Sopenharmony_ci } catch (err) { 1334514f5e3Sopenharmony_ci print("Call boundKeys failed. err: " + err + ", errCode: " + err.code); 1344514f5e3Sopenharmony_ci } 1354514f5e3Sopenharmony_ci 1364514f5e3Sopenharmony_ci const unboundMap = array1.map; 1374514f5e3Sopenharmony_ci const boundMap = unboundMap.bind(normal); 1384514f5e3Sopenharmony_ci try { 1394514f5e3Sopenharmony_ci boundMap(); 1404514f5e3Sopenharmony_ci print("Call boundMap succeed."); 1414514f5e3Sopenharmony_ci } catch (err) { 1424514f5e3Sopenharmony_ci print("Call boundMap failed. err: " + err + ", errCode: " + err.code); 1434514f5e3Sopenharmony_ci } 1444514f5e3Sopenharmony_ci 1454514f5e3Sopenharmony_ci const unboundPop = array1.pop; 1464514f5e3Sopenharmony_ci const boundPop = unboundPop.bind(normal); 1474514f5e3Sopenharmony_ci try { 1484514f5e3Sopenharmony_ci boundPop(); 1494514f5e3Sopenharmony_ci print("Call boundPop succeed."); 1504514f5e3Sopenharmony_ci } catch (err) { 1514514f5e3Sopenharmony_ci print("Call boundPop failed. err: " + err + ", errCode: " + err.code); 1524514f5e3Sopenharmony_ci } 1534514f5e3Sopenharmony_ci 1544514f5e3Sopenharmony_ci const unboundPush = array1.push; 1554514f5e3Sopenharmony_ci const boundPush = unboundPush.bind(normal); 1564514f5e3Sopenharmony_ci try { 1574514f5e3Sopenharmony_ci boundPush(); 1584514f5e3Sopenharmony_ci print("Call boundPush succeed."); 1594514f5e3Sopenharmony_ci } catch (err) { 1604514f5e3Sopenharmony_ci print("Call boundPush failed. err: " + err + ", errCode: " + err.code); 1614514f5e3Sopenharmony_ci } 1624514f5e3Sopenharmony_ci 1634514f5e3Sopenharmony_ci const unboundReduce = array1.reduce; 1644514f5e3Sopenharmony_ci const boundReduce = unboundReduce.bind(normal); 1654514f5e3Sopenharmony_ci try { 1664514f5e3Sopenharmony_ci boundReduce(); 1674514f5e3Sopenharmony_ci print("Call boundReduce succeed."); 1684514f5e3Sopenharmony_ci } catch (err) { 1694514f5e3Sopenharmony_ci print("Call boundReduce failed. err: " + err + ", errCode: " + err.code); 1704514f5e3Sopenharmony_ci } 1714514f5e3Sopenharmony_ci 1724514f5e3Sopenharmony_ci const unboundShift = array1.shift; 1734514f5e3Sopenharmony_ci const boundShift = unboundShift.bind(normal); 1744514f5e3Sopenharmony_ci try { 1754514f5e3Sopenharmony_ci boundShift(); 1764514f5e3Sopenharmony_ci print("Call boundShift succeed."); 1774514f5e3Sopenharmony_ci } catch (err) { 1784514f5e3Sopenharmony_ci print("Call boundShift failed. err: " + err + ", errCode: " + err.code); 1794514f5e3Sopenharmony_ci } 1804514f5e3Sopenharmony_ci 1814514f5e3Sopenharmony_ci const unboundSlice = array1.slice; 1824514f5e3Sopenharmony_ci const boundSlice = unboundSlice.bind(normal); 1834514f5e3Sopenharmony_ci try { 1844514f5e3Sopenharmony_ci boundSlice(); 1854514f5e3Sopenharmony_ci print("Call boundSlice succeed."); 1864514f5e3Sopenharmony_ci } catch (err) { 1874514f5e3Sopenharmony_ci print("Call boundSlice failed. err: " + err + ", errCode: " + err.code); 1884514f5e3Sopenharmony_ci } 1894514f5e3Sopenharmony_ci 1904514f5e3Sopenharmony_ci const unboundSort = array1.sort; 1914514f5e3Sopenharmony_ci const boundSort = unboundSort.bind(normal); 1924514f5e3Sopenharmony_ci try { 1934514f5e3Sopenharmony_ci boundSort(); 1944514f5e3Sopenharmony_ci print("Call boundSort succeed."); 1954514f5e3Sopenharmony_ci } catch (err) { 1964514f5e3Sopenharmony_ci print("Call boundSort failed. err: " + err + ", errCode: " + err.code); 1974514f5e3Sopenharmony_ci } 1984514f5e3Sopenharmony_ci 1994514f5e3Sopenharmony_ci const unboundToString = array1.toString; 2004514f5e3Sopenharmony_ci const boundToString = unboundToString.bind(normal); 2014514f5e3Sopenharmony_ci try { 2024514f5e3Sopenharmony_ci boundToString(); 2034514f5e3Sopenharmony_ci print("Call boundToString succeed."); 2044514f5e3Sopenharmony_ci } catch (err) { 2054514f5e3Sopenharmony_ci print("Call boundToString failed. err: " + err + ", errCode: " + err.code); 2064514f5e3Sopenharmony_ci } 2074514f5e3Sopenharmony_ci 2084514f5e3Sopenharmony_ci const unboundUnshift = array1.unshift; 2094514f5e3Sopenharmony_ci const boundUnshift = unboundUnshift.bind(normal); 2104514f5e3Sopenharmony_ci try { 2114514f5e3Sopenharmony_ci boundUnshift(); 2124514f5e3Sopenharmony_ci print("Call boundUnshift succeed."); 2134514f5e3Sopenharmony_ci } catch (err) { 2144514f5e3Sopenharmony_ci print("Call boundUnshift failed. err: " + err + ", errCode: " + err.code); 2154514f5e3Sopenharmony_ci } 2164514f5e3Sopenharmony_ci 2174514f5e3Sopenharmony_ci const unboundValues = array1.values; 2184514f5e3Sopenharmony_ci const boundValues = unboundValues.bind(normal); 2194514f5e3Sopenharmony_ci try { 2204514f5e3Sopenharmony_ci boundValues(); 2214514f5e3Sopenharmony_ci print("Call boundValues succeed."); 2224514f5e3Sopenharmony_ci } catch (err) { 2234514f5e3Sopenharmony_ci print("Call boundValues failed. err: " + err + ", errCode: " + err.code); 2244514f5e3Sopenharmony_ci } 2254514f5e3Sopenharmony_ci 2264514f5e3Sopenharmony_ci const unboundIncludes = array1.includes; 2274514f5e3Sopenharmony_ci const boundIncludes = unboundIncludes.bind(normal); 2284514f5e3Sopenharmony_ci try { 2294514f5e3Sopenharmony_ci boundIncludes(); 2304514f5e3Sopenharmony_ci print("Call boundIncludes succeed."); 2314514f5e3Sopenharmony_ci } catch (err) { 2324514f5e3Sopenharmony_ci print("Call boundIncludes failed. err: " + err + ", errCode: " + err.code); 2334514f5e3Sopenharmony_ci } 2344514f5e3Sopenharmony_ci 2354514f5e3Sopenharmony_ci const unboundShrinkTo = array1.shrinkTo; 2364514f5e3Sopenharmony_ci const boundShrinkTo = unboundShrinkTo.bind(normal); 2374514f5e3Sopenharmony_ci try { 2384514f5e3Sopenharmony_ci boundShrinkTo(); 2394514f5e3Sopenharmony_ci print("Call boundShrinkTo succeed."); 2404514f5e3Sopenharmony_ci } catch (err) { 2414514f5e3Sopenharmony_ci print("Call boundShrinkTo failed. err: " + err + ", errCode: " + err.code); 2424514f5e3Sopenharmony_ci } 2434514f5e3Sopenharmony_ci 2444514f5e3Sopenharmony_ci const unboundExtendTo = array1.extendTo; 2454514f5e3Sopenharmony_ci const boundExtendTo = unboundExtendTo.bind(normal); 2464514f5e3Sopenharmony_ci try { 2474514f5e3Sopenharmony_ci boundExtendTo(); 2484514f5e3Sopenharmony_ci print("Call boundExtendTo succeed."); 2494514f5e3Sopenharmony_ci } catch (err) { 2504514f5e3Sopenharmony_ci print("Call boundExtendTo failed. err: " + err + ", errCode: " + err.code); 2514514f5e3Sopenharmony_ci } 2524514f5e3Sopenharmony_ci} 2534514f5e3Sopenharmony_ci 2544514f5e3Sopenharmony_ci// SendableMap ut 2554514f5e3Sopenharmony_cifunction bindErrorTestMap() { 2564514f5e3Sopenharmony_ci print("Start map bindErrorTest"); 2574514f5e3Sopenharmony_ci const map0 = new SendableMap<string>([['key', 'value']]); 2584514f5e3Sopenharmony_ci const normal = new NormalClass(10); 2594514f5e3Sopenharmony_ci 2604514f5e3Sopenharmony_ci const unboundClear = map0.clear; 2614514f5e3Sopenharmony_ci const boundClear = unboundClear.bind(normal); 2624514f5e3Sopenharmony_ci try { 2634514f5e3Sopenharmony_ci boundClear(); 2644514f5e3Sopenharmony_ci print("Call boundClear succeed."); 2654514f5e3Sopenharmony_ci } catch (err) { 2664514f5e3Sopenharmony_ci print("Call boundClear failed. err: " + err + ", errCode: " + err.code); 2674514f5e3Sopenharmony_ci } 2684514f5e3Sopenharmony_ci 2694514f5e3Sopenharmony_ci const unboundDelete = map0.delete; 2704514f5e3Sopenharmony_ci const boundDelete = unboundDelete.bind(normal); 2714514f5e3Sopenharmony_ci try { 2724514f5e3Sopenharmony_ci boundDelete(); 2734514f5e3Sopenharmony_ci print("Call boundDelete succeed."); 2744514f5e3Sopenharmony_ci } catch (err) { 2754514f5e3Sopenharmony_ci print("Call boundDelete failed. err: " + err + ", errCode: " + err.code); 2764514f5e3Sopenharmony_ci } 2774514f5e3Sopenharmony_ci 2784514f5e3Sopenharmony_ci const unboundEntries = map0.entries; 2794514f5e3Sopenharmony_ci const boundEntries = unboundEntries.bind(normal); 2804514f5e3Sopenharmony_ci try { 2814514f5e3Sopenharmony_ci boundEntries(); 2824514f5e3Sopenharmony_ci print("Call boundEntries succeed."); 2834514f5e3Sopenharmony_ci } catch (err) { 2844514f5e3Sopenharmony_ci print("Call boundEntries failed. err: " + err + ", errCode: " + err.code); 2854514f5e3Sopenharmony_ci } 2864514f5e3Sopenharmony_ci 2874514f5e3Sopenharmony_ci const unboundForEach = map0.forEach; 2884514f5e3Sopenharmony_ci const boundForEach = unboundForEach.bind(normal); 2894514f5e3Sopenharmony_ci try { 2904514f5e3Sopenharmony_ci boundForEach(); 2914514f5e3Sopenharmony_ci print("Call boundForEach succeed."); 2924514f5e3Sopenharmony_ci } catch (err) { 2934514f5e3Sopenharmony_ci print("Call boundForEach failed. err: " + err + ", errCode: " + err.code); 2944514f5e3Sopenharmony_ci } 2954514f5e3Sopenharmony_ci 2964514f5e3Sopenharmony_ci const unboundGet = map0.get; 2974514f5e3Sopenharmony_ci const boundGet = unboundGet.bind(normal); 2984514f5e3Sopenharmony_ci try { 2994514f5e3Sopenharmony_ci boundGet(); 3004514f5e3Sopenharmony_ci print("Call boundGet succeed."); 3014514f5e3Sopenharmony_ci } catch (err) { 3024514f5e3Sopenharmony_ci print("Call boundGet failed. err: " + err + ", errCode: " + err.code); 3034514f5e3Sopenharmony_ci } 3044514f5e3Sopenharmony_ci 3054514f5e3Sopenharmony_ci const unboundHas = map0.has; 3064514f5e3Sopenharmony_ci const boundHas = unboundHas.bind(normal); 3074514f5e3Sopenharmony_ci try { 3084514f5e3Sopenharmony_ci boundHas(); 3094514f5e3Sopenharmony_ci print("Call boundHas succeed."); 3104514f5e3Sopenharmony_ci } catch (err) { 3114514f5e3Sopenharmony_ci print("Call boundHas failed. err: " + err + ", errCode: " + err.code); 3124514f5e3Sopenharmony_ci } 3134514f5e3Sopenharmony_ci 3144514f5e3Sopenharmony_ci const unboundKeys = map0.keys; 3154514f5e3Sopenharmony_ci const boundKeys = unboundKeys.bind(normal); 3164514f5e3Sopenharmony_ci try { 3174514f5e3Sopenharmony_ci boundKeys(); 3184514f5e3Sopenharmony_ci print("Call boundKeys succeed."); 3194514f5e3Sopenharmony_ci } catch (err) { 3204514f5e3Sopenharmony_ci print("Call boundKeys failed. err: " + err + ", errCode: " + err.code); 3214514f5e3Sopenharmony_ci } 3224514f5e3Sopenharmony_ci 3234514f5e3Sopenharmony_ci const unboundSet = map0.set; 3244514f5e3Sopenharmony_ci const boundSet = unboundSet.bind(normal); 3254514f5e3Sopenharmony_ci try { 3264514f5e3Sopenharmony_ci boundSet(); 3274514f5e3Sopenharmony_ci print("Call boundSet succeed."); 3284514f5e3Sopenharmony_ci } catch (err) { 3294514f5e3Sopenharmony_ci print("Call boundSet failed. err: " + err + ", errCode: " + err.code); 3304514f5e3Sopenharmony_ci } 3314514f5e3Sopenharmony_ci 3324514f5e3Sopenharmony_ci const unboundValues = map0.values; 3334514f5e3Sopenharmony_ci const boundValues = unboundValues.bind(normal); 3344514f5e3Sopenharmony_ci try { 3354514f5e3Sopenharmony_ci boundValues(); 3364514f5e3Sopenharmony_ci print("Call boundValues succeed."); 3374514f5e3Sopenharmony_ci } catch (err) { 3384514f5e3Sopenharmony_ci print("Call boundValues failed. err: " + err + ", errCode: " + err.code); 3394514f5e3Sopenharmony_ci } 3404514f5e3Sopenharmony_ci} 3414514f5e3Sopenharmony_ci 3424514f5e3Sopenharmony_ci// SendableSet ut 3434514f5e3Sopenharmony_cifunction bindErrorTestSet() { 3444514f5e3Sopenharmony_ci print("Start set bindErrorTest"); 3454514f5e3Sopenharmony_ci const set0 = new SendableSet<number>([0, 1, 2]); 3464514f5e3Sopenharmony_ci const normal = new NormalClass(10); 3474514f5e3Sopenharmony_ci 3484514f5e3Sopenharmony_ci const unboundAdd = set0.add; 3494514f5e3Sopenharmony_ci const boundAdd = unboundAdd.bind(normal); 3504514f5e3Sopenharmony_ci try { 3514514f5e3Sopenharmony_ci boundAdd(); 3524514f5e3Sopenharmony_ci print("Call boundAdd succeed."); 3534514f5e3Sopenharmony_ci } catch (err) { 3544514f5e3Sopenharmony_ci print("Call boundAdd failed. err: " + err + ", errCode: " + err.code); 3554514f5e3Sopenharmony_ci } 3564514f5e3Sopenharmony_ci 3574514f5e3Sopenharmony_ci const unboundClear = set0.clear; 3584514f5e3Sopenharmony_ci const boundClear = unboundClear.bind(normal); 3594514f5e3Sopenharmony_ci try { 3604514f5e3Sopenharmony_ci boundClear(); 3614514f5e3Sopenharmony_ci print("Call boundClear succeed."); 3624514f5e3Sopenharmony_ci } catch (err) { 3634514f5e3Sopenharmony_ci print("Call boundClear failed. err: " + err + ", errCode: " + err.code); 3644514f5e3Sopenharmony_ci } 3654514f5e3Sopenharmony_ci 3664514f5e3Sopenharmony_ci const unboundDelete = set0.delete; 3674514f5e3Sopenharmony_ci const boundDelete = unboundDelete.bind(normal); 3684514f5e3Sopenharmony_ci try { 3694514f5e3Sopenharmony_ci boundDelete(); 3704514f5e3Sopenharmony_ci print("Call boundDelete succeed."); 3714514f5e3Sopenharmony_ci } catch (err) { 3724514f5e3Sopenharmony_ci print("Call boundDelete failed. err: " + err + ", errCode: " + err.code); 3734514f5e3Sopenharmony_ci } 3744514f5e3Sopenharmony_ci 3754514f5e3Sopenharmony_ci const unboundEntries = set0.entries; 3764514f5e3Sopenharmony_ci const boundEntries = unboundEntries.bind(normal); 3774514f5e3Sopenharmony_ci try { 3784514f5e3Sopenharmony_ci boundEntries(); 3794514f5e3Sopenharmony_ci print("Call boundEntries succeed."); 3804514f5e3Sopenharmony_ci } catch (err) { 3814514f5e3Sopenharmony_ci print("Call boundEntries failed. err: " + err + ", errCode: " + err.code); 3824514f5e3Sopenharmony_ci } 3834514f5e3Sopenharmony_ci 3844514f5e3Sopenharmony_ci const unboundForEach = set0.forEach; 3854514f5e3Sopenharmony_ci const boundForEach = unboundForEach.bind(normal); 3864514f5e3Sopenharmony_ci try { 3874514f5e3Sopenharmony_ci boundForEach(); 3884514f5e3Sopenharmony_ci print("Call boundForEach succeed."); 3894514f5e3Sopenharmony_ci } catch (err) { 3904514f5e3Sopenharmony_ci print("Call boundForEach failed. err: " + err + ", errCode: " + err.code); 3914514f5e3Sopenharmony_ci } 3924514f5e3Sopenharmony_ci 3934514f5e3Sopenharmony_ci const unboundHas = set0.has; 3944514f5e3Sopenharmony_ci const boundHas = unboundHas.bind(normal); 3954514f5e3Sopenharmony_ci try { 3964514f5e3Sopenharmony_ci boundHas(); 3974514f5e3Sopenharmony_ci print("Call boundHas succeed."); 3984514f5e3Sopenharmony_ci } catch (err) { 3994514f5e3Sopenharmony_ci print("Call boundHas failed. err: " + err + ", errCode: " + err.code); 4004514f5e3Sopenharmony_ci } 4014514f5e3Sopenharmony_ci 4024514f5e3Sopenharmony_ci const unboundValues = set0.values; 4034514f5e3Sopenharmony_ci const boundValues = unboundValues.bind(normal); 4044514f5e3Sopenharmony_ci try { 4054514f5e3Sopenharmony_ci boundValues(); 4064514f5e3Sopenharmony_ci print("Call boundValues succeed."); 4074514f5e3Sopenharmony_ci } catch (err) { 4084514f5e3Sopenharmony_ci print("Call boundValues failed. err: " + err + ", errCode: " + err.code); 4094514f5e3Sopenharmony_ci } 4104514f5e3Sopenharmony_ci} 4114514f5e3Sopenharmony_ci 4124514f5e3Sopenharmony_ci// for SendableArray 4134514f5e3Sopenharmony_cifunction createErrorTest(): void { 4144514f5e3Sopenharmony_ci print("Start createErrorTest"); 4154514f5e3Sopenharmony_ci try { 4164514f5e3Sopenharmony_ci const arr = new SendableArray<string>(-1); 4174514f5e3Sopenharmony_ci print("Init with small first element: -1 success."); 4184514f5e3Sopenharmony_ci } catch (err) { 4194514f5e3Sopenharmony_ci print("Init with small first element: -1, err: " + err + ", errCode: " + err.code); 4204514f5e3Sopenharmony_ci } 4214514f5e3Sopenharmony_ci 4224514f5e3Sopenharmony_ci try { 4234514f5e3Sopenharmony_ci const arr = new SendableArray<string>(0xffff); 4244514f5e3Sopenharmony_ci print("Init with big first element: 0xffff success."); 4254514f5e3Sopenharmony_ci } catch (err) { 4264514f5e3Sopenharmony_ci print("Init with big first element: 0xffff, err: " + err + ", errCode: " + err.code); 4274514f5e3Sopenharmony_ci } 4284514f5e3Sopenharmony_ci 4294514f5e3Sopenharmony_ci try { 4304514f5e3Sopenharmony_ci const arr = new SendableArray<string>(0xffffffffff); 4314514f5e3Sopenharmony_ci print("Init exceed max length success."); 4324514f5e3Sopenharmony_ci } catch (err) { 4334514f5e3Sopenharmony_ci print("Init exceed max length: err: " + err + ", errCode: " + err.code); 4344514f5e3Sopenharmony_ci } 4354514f5e3Sopenharmony_ci 4364514f5e3Sopenharmony_ci try { 4374514f5e3Sopenharmony_ci const arr = new SendableArray<NormalClass>(new NormalClass(1), new NormalClass(2)); 4384514f5e3Sopenharmony_ci print("Create with non-sendable element success."); 4394514f5e3Sopenharmony_ci } catch (err) { 4404514f5e3Sopenharmony_ci print("Create with non-sendable element fail. err: " + err + ", errCode: " + err.code); 4414514f5e3Sopenharmony_ci } 4424514f5e3Sopenharmony_ci} 4434514f5e3Sopenharmony_ci 4444514f5e3Sopenharmony_cifunction fromErrorTest(): void { 4454514f5e3Sopenharmony_ci print("Start fromErrorTest"); 4464514f5e3Sopenharmony_ci try { 4474514f5e3Sopenharmony_ci SendableArray.from<NormalClass>(Array.from([new NormalClass(1), new NormalClass(2)])); 4484514f5e3Sopenharmony_ci print("Create from non-sendable iterator success."); 4494514f5e3Sopenharmony_ci } catch (err) { 4504514f5e3Sopenharmony_ci print("Create from non-sendable iterator fail. err: " + err + ", errCode: " + err.code); 4514514f5e3Sopenharmony_ci } 4524514f5e3Sopenharmony_ci 4534514f5e3Sopenharmony_ci try { 4544514f5e3Sopenharmony_ci SendableArray.from<NormalClass>([new NormalClass(1), new NormalClass(2)]); 4554514f5e3Sopenharmony_ci print("Create from non-sendable element success."); 4564514f5e3Sopenharmony_ci } catch (err) { 4574514f5e3Sopenharmony_ci print("Create from non-sendable element fail. err: " + err + ", errCode: " + err.code); 4584514f5e3Sopenharmony_ci } 4594514f5e3Sopenharmony_ci try { 4604514f5e3Sopenharmony_ci SendableArray.from<number, NormalClass>([1, 2, 3], (x: number) => new NormalClass(x)); 4614514f5e3Sopenharmony_ci print("Create from mapper: non-sendable element success."); 4624514f5e3Sopenharmony_ci } catch (err) { 4634514f5e3Sopenharmony_ci print("Create from mapper: non-sendable element fail. err: " + err + ", errCode: " + err.code); 4644514f5e3Sopenharmony_ci } 4654514f5e3Sopenharmony_ci} 4664514f5e3Sopenharmony_ci 4674514f5e3Sopenharmony_cifunction staticCreateErrorTest(): void { 4684514f5e3Sopenharmony_ci print("Start staticCreateErrorTest"); 4694514f5e3Sopenharmony_ci try { 4704514f5e3Sopenharmony_ci SendableArray.create<NormalClass>(4, new NormalClass(1), new NormalClass(2)); 4714514f5e3Sopenharmony_ci print("Static create with non-sendable initialValue success."); 4724514f5e3Sopenharmony_ci } catch (err) { 4734514f5e3Sopenharmony_ci print("Static create from non-sendable initialValue fail. err: " + err + ", errCode: " + err.code); 4744514f5e3Sopenharmony_ci } 4754514f5e3Sopenharmony_ci} 4764514f5e3Sopenharmony_ci 4774514f5e3Sopenharmony_cifunction atErrorTest() { 4784514f5e3Sopenharmony_ci print("Start atErrorTest"); 4794514f5e3Sopenharmony_ci const array1 = new SendableArray<number>(5, 12, 8, 130, 44); 4804514f5e3Sopenharmony_ci try { 4814514f5e3Sopenharmony_ci print("at invalid index success: " + array1.at("hi")); 4824514f5e3Sopenharmony_ci } catch (err) { 4834514f5e3Sopenharmony_ci print("at invalid index: err: " + err + ", errCode: " + err.code); 4844514f5e3Sopenharmony_ci } 4854514f5e3Sopenharmony_ci} 4864514f5e3Sopenharmony_ci 4874514f5e3Sopenharmony_cifunction concatErrorTest(): void { 4884514f5e3Sopenharmony_ci print("Start concatErrorTest"); 4894514f5e3Sopenharmony_ci let array: SendableArray<number> = new SendableArray<number>(1, 3, 5); 4904514f5e3Sopenharmony_ci let normalArray = new Array<NormalClass>(new NormalClass(2), new NormalClass(4), new NormalClass(6)); 4914514f5e3Sopenharmony_ci 4924514f5e3Sopenharmony_ci try { 4934514f5e3Sopenharmony_ci array.concat(normalArray); 4944514f5e3Sopenharmony_ci print("concat with non-sendable array success."); 4954514f5e3Sopenharmony_ci } catch (err) { 4964514f5e3Sopenharmony_ci print("concat with non-sendable array fail.err: " + err + ", errCode: " + err.code); 4974514f5e3Sopenharmony_ci } 4984514f5e3Sopenharmony_ci 4994514f5e3Sopenharmony_ci try { 5004514f5e3Sopenharmony_ci array.concat(new NormalClass(2)); 5014514f5e3Sopenharmony_ci print("concat with non-sendable element success."); 5024514f5e3Sopenharmony_ci } catch (err) { 5034514f5e3Sopenharmony_ci print("concat with non-sendable element fail. err: " + err + ", errCode: " + err.code); 5044514f5e3Sopenharmony_ci } 5054514f5e3Sopenharmony_ci} 5064514f5e3Sopenharmony_ci 5074514f5e3Sopenharmony_cifunction directCallConstructor() { 5084514f5e3Sopenharmony_ci print("Start directCallConstructor"); 5094514f5e3Sopenharmony_ci 5104514f5e3Sopenharmony_ci try { 5114514f5e3Sopenharmony_ci SendableArray<number>(); 5124514f5e3Sopenharmony_ci print('direct call SendableArray ctor with empty success.'); 5134514f5e3Sopenharmony_ci } catch (err) { 5144514f5e3Sopenharmony_ci print('direct call SendableArray ctor with empty fail. err: ' + err + ', errCode: ' + err.code); 5154514f5e3Sopenharmony_ci } 5164514f5e3Sopenharmony_ci 5174514f5e3Sopenharmony_ci try { 5184514f5e3Sopenharmony_ci SendableArray<number>(5); 5194514f5e3Sopenharmony_ci print('direct call SendableArray ctor with length.'); 5204514f5e3Sopenharmony_ci } catch (err) { 5214514f5e3Sopenharmony_ci print('direct call SendableArray ctor with length fail. err: ' + err + ', errCode: ' + err.code); 5224514f5e3Sopenharmony_ci } 5234514f5e3Sopenharmony_ci 5244514f5e3Sopenharmony_ci try { 5254514f5e3Sopenharmony_ci SendableArray<number>(5, 10); 5264514f5e3Sopenharmony_ci print('direct call SendableArray ctor with elements.'); 5274514f5e3Sopenharmony_ci } catch (err) { 5284514f5e3Sopenharmony_ci print('direct call SendableArray ctor with elements fail. err: ' + err + ', errCode: ' + err.code); 5294514f5e3Sopenharmony_ci } 5304514f5e3Sopenharmony_ci} 5314514f5e3Sopenharmony_ci 5324514f5e3Sopenharmony_cifunction directCallConstructorMap() { 5334514f5e3Sopenharmony_ci print("Start map directCallConstructor"); 5344514f5e3Sopenharmony_ci 5354514f5e3Sopenharmony_ci try { 5364514f5e3Sopenharmony_ci SendableMap<number, number>(); 5374514f5e3Sopenharmony_ci print('direct call SendableMap ctor with empty success.'); 5384514f5e3Sopenharmony_ci } catch (err) { 5394514f5e3Sopenharmony_ci print('direct call SendableMap ctor with empty fail. err: ' + err + ', errCode: ' + err.code); 5404514f5e3Sopenharmony_ci } 5414514f5e3Sopenharmony_ci 5424514f5e3Sopenharmony_ci try { 5434514f5e3Sopenharmony_ci SendableMap<number, number>(5); 5444514f5e3Sopenharmony_ci print('direct call SendableMap ctor with length.'); 5454514f5e3Sopenharmony_ci } catch (err) { 5464514f5e3Sopenharmony_ci print('direct call SendableMap ctor with length fail. err: ' + err + ', errCode: ' + err.code); 5474514f5e3Sopenharmony_ci } 5484514f5e3Sopenharmony_ci 5494514f5e3Sopenharmony_ci try { 5504514f5e3Sopenharmony_ci SendableMap<number, number>([[5, 10]]); 5514514f5e3Sopenharmony_ci print('direct call SendableMap ctor with elements.'); 5524514f5e3Sopenharmony_ci } catch (err) { 5534514f5e3Sopenharmony_ci print('direct call SendableMap ctor with elements fail. err: ' + err + ', errCode: ' + err.code); 5544514f5e3Sopenharmony_ci } 5554514f5e3Sopenharmony_ci} 5564514f5e3Sopenharmony_ci 5574514f5e3Sopenharmony_cifunction directCallConstructorSet() { 5584514f5e3Sopenharmony_ci print("Start set directCallConstructor"); 5594514f5e3Sopenharmony_ci 5604514f5e3Sopenharmony_ci try { 5614514f5e3Sopenharmony_ci SendableSet<number>(); 5624514f5e3Sopenharmony_ci print('direct call SendableSet ctor with empty success.'); 5634514f5e3Sopenharmony_ci } catch (err) { 5644514f5e3Sopenharmony_ci print('direct call SendableSet ctor with empty fail. err: ' + err + ', errCode: ' + err.code); 5654514f5e3Sopenharmony_ci } 5664514f5e3Sopenharmony_ci 5674514f5e3Sopenharmony_ci try { 5684514f5e3Sopenharmony_ci SendableSet<number>(5); 5694514f5e3Sopenharmony_ci print('direct call SendableSet ctor with length.'); 5704514f5e3Sopenharmony_ci } catch (err) { 5714514f5e3Sopenharmony_ci print('direct call SendableSet ctor with length fail. err: ' + err + ', errCode: ' + err.code); 5724514f5e3Sopenharmony_ci } 5734514f5e3Sopenharmony_ci 5744514f5e3Sopenharmony_ci try { 5754514f5e3Sopenharmony_ci SendableSet<number>(5, 10); 5764514f5e3Sopenharmony_ci print('direct call SendableSet ctor with elements.'); 5774514f5e3Sopenharmony_ci } catch (err) { 5784514f5e3Sopenharmony_ci print('direct call SendableSet ctor with elements fail. err: ' + err + ', errCode: ' + err.code); 5794514f5e3Sopenharmony_ci } 5804514f5e3Sopenharmony_ci} 5814514f5e3Sopenharmony_ci 5824514f5e3Sopenharmony_cifunction fillErrorTest() { 5834514f5e3Sopenharmony_ci print("Start Test fillErrorTest") 5844514f5e3Sopenharmony_ci const array1 = new SendableArray<number>(1, 2, 3, 4); 5854514f5e3Sopenharmony_ci try { 5864514f5e3Sopenharmony_ci array1.fill(new NormalClass(2), 2, 4); 5874514f5e3Sopenharmony_ci print("fill array with non-sendable object and position success."); 5884514f5e3Sopenharmony_ci } catch (err) { 5894514f5e3Sopenharmony_ci print("fill array with non-sendable object and position fail. err: " + err + ", errCode: " + err.code); 5904514f5e3Sopenharmony_ci } 5914514f5e3Sopenharmony_ci 5924514f5e3Sopenharmony_ci try { 5934514f5e3Sopenharmony_ci array1.fill(new NormalClass(3), 1); 5944514f5e3Sopenharmony_ci print("fill array with non-sendable object and start position success."); 5954514f5e3Sopenharmony_ci } catch (err) { 5964514f5e3Sopenharmony_ci print("fill array with non-sendable object and start position fail. err: " + err + ", errCode: " + err.code); 5974514f5e3Sopenharmony_ci } 5984514f5e3Sopenharmony_ci try { 5994514f5e3Sopenharmony_ci array1.fill(new NormalClass(4)); 6004514f5e3Sopenharmony_ci print("fill array with non-sendable object success."); 6014514f5e3Sopenharmony_ci } catch (err) { 6024514f5e3Sopenharmony_ci print("fill array with non-sendable object fail. err: " + err + ", errCode: " + err.code); 6034514f5e3Sopenharmony_ci } 6044514f5e3Sopenharmony_ci} 6054514f5e3Sopenharmony_ci 6064514f5e3Sopenharmony_cifunction mapErrorTest() { 6074514f5e3Sopenharmony_ci print("Start mapErrorTest") 6084514f5e3Sopenharmony_ci const array = new SendableArray<number>(1, 4, 9, 16); 6094514f5e3Sopenharmony_ci try { 6104514f5e3Sopenharmony_ci array.map<NormalClass>((x: number) => new NormalClass(x)); 6114514f5e3Sopenharmony_ci print("map array with non-sendable success."); 6124514f5e3Sopenharmony_ci } catch (err) { 6134514f5e3Sopenharmony_ci print("map array with non-sendable fail. err: " + err + ", errCode: " + err.code); 6144514f5e3Sopenharmony_ci } 6154514f5e3Sopenharmony_ci} 6164514f5e3Sopenharmony_ci 6174514f5e3Sopenharmony_cifunction pushErrorTest() { 6184514f5e3Sopenharmony_ci print("Start pushErrorTest") 6194514f5e3Sopenharmony_ci let array: SendableArray<number> = new SendableArray<number>(1, 3, 5); 6204514f5e3Sopenharmony_ci try { 6214514f5e3Sopenharmony_ci array.push(new NormalClass(5)); 6224514f5e3Sopenharmony_ci print("push array with non-sendable element success."); 6234514f5e3Sopenharmony_ci } catch (err) { 6244514f5e3Sopenharmony_ci print("push array with non-sendable element fail. err: " + err + ", errCode: " + err.code); 6254514f5e3Sopenharmony_ci } 6264514f5e3Sopenharmony_ci} 6274514f5e3Sopenharmony_ci 6284514f5e3Sopenharmony_cifunction unshiftErrorTest() { 6294514f5e3Sopenharmony_ci print("Start Test unshiftErrorTest") 6304514f5e3Sopenharmony_ci const array = new SendableArray<number>(1, 2, 3); 6314514f5e3Sopenharmony_ci try { 6324514f5e3Sopenharmony_ci array.unshift(new NormalClass(4), new NormalClass(5)); 6334514f5e3Sopenharmony_ci print("unshift array with non-sendable element success."); 6344514f5e3Sopenharmony_ci } catch (err) { 6354514f5e3Sopenharmony_ci print("unshift array with non-sendable element fail. err: " + err + ", errCode: " + err.code); 6364514f5e3Sopenharmony_ci } 6374514f5e3Sopenharmony_ci} 6384514f5e3Sopenharmony_ci 6394514f5e3Sopenharmony_cifunction extendToErrorTest() { 6404514f5e3Sopenharmony_ci print("Start Test extendToErrorTest") 6414514f5e3Sopenharmony_ci const array = new SendableArray<number>(1, 2, 3); 6424514f5e3Sopenharmony_ci try { 6434514f5e3Sopenharmony_ci array.extendTo(5, new NormalClass(4)); 6444514f5e3Sopenharmony_ci print("extendTo array with non-sendable element success."); 6454514f5e3Sopenharmony_ci } catch (err) { 6464514f5e3Sopenharmony_ci print("extendTo array with non-sendable element fail. err: " + err + ", errCode: " + err.code); 6474514f5e3Sopenharmony_ci } 6484514f5e3Sopenharmony_ci} 6494514f5e3Sopenharmony_ci 6504514f5e3Sopenharmony_cifunction concurrencyErrorTest() { 6514514f5e3Sopenharmony_ci const array1 = new SendableArray<number>(1, 2, 3); 6524514f5e3Sopenharmony_ci try { 6534514f5e3Sopenharmony_ci array1.forEach((key: number, _: number, array: SendableArray) => { 6544514f5e3Sopenharmony_ci array.push(5); 6554514f5e3Sopenharmony_ci }); 6564514f5e3Sopenharmony_ci } catch (err) { 6574514f5e3Sopenharmony_ci print("add element while iterate array fail. err: " + err + ", errCode: " + err.code); 6584514f5e3Sopenharmony_ci } 6594514f5e3Sopenharmony_ci try { 6604514f5e3Sopenharmony_ci array1.forEach((key: number, _: number, array: SendableArray) => { 6614514f5e3Sopenharmony_ci if (key % 2 == 0) { 6624514f5e3Sopenharmony_ci array.pop(); 6634514f5e3Sopenharmony_ci } 6644514f5e3Sopenharmony_ci }); 6654514f5e3Sopenharmony_ci } catch (err) { 6664514f5e3Sopenharmony_ci print("pop element while iterate array fail. err: " + err + ", errCode: " + err.code); 6674514f5e3Sopenharmony_ci } 6684514f5e3Sopenharmony_ci try { 6694514f5e3Sopenharmony_ci array1.forEach((key: number, _: number, array: SendableArray) => { 6704514f5e3Sopenharmony_ci array.shrinkTo(0); 6714514f5e3Sopenharmony_ci }); 6724514f5e3Sopenharmony_ci } catch (err) { 6734514f5e3Sopenharmony_ci print("shrink while iterate array fail. err: " + err + ", errCode: " + err.code); 6744514f5e3Sopenharmony_ci } 6754514f5e3Sopenharmony_ci try { 6764514f5e3Sopenharmony_ci array1.forEach((key: number, _: number, array: SendableArray) => { 6774514f5e3Sopenharmony_ci array.extendTo(array1.length + 1, 100); 6784514f5e3Sopenharmony_ci }); 6794514f5e3Sopenharmony_ci } catch (err) { 6804514f5e3Sopenharmony_ci print("extend while iterate array fail. err: " + err + ", errCode: " + err.code); 6814514f5e3Sopenharmony_ci } 6824514f5e3Sopenharmony_ci} 6834514f5e3Sopenharmony_ci 6844514f5e3Sopenharmony_ci// common bindTest 6854514f5e3Sopenharmony_cibindErrorTest(); 6864514f5e3Sopenharmony_ciprint('Start Test SendableMap'); 6874514f5e3Sopenharmony_cibindErrorTestMap(); 6884514f5e3Sopenharmony_ci 6894514f5e3Sopenharmony_ciprint('Start Test SendableSet'); 6904514f5e3Sopenharmony_cibindErrorTestSet(); 6914514f5e3Sopenharmony_ci 6924514f5e3Sopenharmony_ciprint('Start Test SendableArray'); 6934514f5e3Sopenharmony_cicreateErrorTest(); 6944514f5e3Sopenharmony_cifromErrorTest(); 6954514f5e3Sopenharmony_ciatErrorTest(); 6964514f5e3Sopenharmony_ciconcatErrorTest(); 6974514f5e3Sopenharmony_cifillErrorTest() 6984514f5e3Sopenharmony_cimapErrorTest() 6994514f5e3Sopenharmony_cipushErrorTest() 7004514f5e3Sopenharmony_ciunshiftErrorTest() 7014514f5e3Sopenharmony_cistaticCreateErrorTest(); 7024514f5e3Sopenharmony_ciextendToErrorTest(); 7034514f5e3Sopenharmony_cidirectCallConstructor(); 7044514f5e3Sopenharmony_cidirectCallConstructorMap(); 7054514f5e3Sopenharmony_cidirectCallConstructorSet(); 7064514f5e3Sopenharmony_ciconcurrencyErrorTest(); 707