14514f5e3Sopenharmony_ci/* 24514f5e3Sopenharmony_ci * Copyright (c) 2023 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_cideclare function print(a:any):string; 174514f5e3Sopenharmony_ci 184514f5e3Sopenharmony_civar LOOP_TIME = 100; 194514f5e3Sopenharmony_ci 204514f5e3Sopenharmony_ciclass C { 214514f5e3Sopenharmony_ci x:number; 224514f5e3Sopenharmony_ci constructor() { 234514f5e3Sopenharmony_ci this.x = 123; 244514f5e3Sopenharmony_ci } 254514f5e3Sopenharmony_ci} 264514f5e3Sopenharmony_ci 274514f5e3Sopenharmony_cilet c1 = new C(); 284514f5e3Sopenharmony_ciprint(c1.x); 294514f5e3Sopenharmony_ci 304514f5e3Sopenharmony_cilet c2 = new C(); 314514f5e3Sopenharmony_ciprint(c2.x); 324514f5e3Sopenharmony_ci 334514f5e3Sopenharmony_ci 344514f5e3Sopenharmony_cifunction foo(p) { 354514f5e3Sopenharmony_ci return p[1] 364514f5e3Sopenharmony_ci} 374514f5e3Sopenharmony_ci 384514f5e3Sopenharmony_ci{ 394514f5e3Sopenharmony_ci let a = [1, 2] 404514f5e3Sopenharmony_ci let b = [1, 2.1, 3] 414514f5e3Sopenharmony_ci for (let i = 0; i < 10000; i++) { 424514f5e3Sopenharmony_ci var a1 = foo(a) 434514f5e3Sopenharmony_ci var a2 = foo(b); 444514f5e3Sopenharmony_ci } 454514f5e3Sopenharmony_ci print(a1) 464514f5e3Sopenharmony_ci print(a2) 474514f5e3Sopenharmony_ci} 484514f5e3Sopenharmony_ci 494514f5e3Sopenharmony_ci// test stownbyindex ic: (too many loop will fail at debug unittest timeout) 504514f5e3Sopenharmony_ciclass Attrs { 514514f5e3Sopenharmony_ci constructor(a : number, b : number, c : number) { 524514f5e3Sopenharmony_ci this.x = a; 534514f5e3Sopenharmony_ci this.y = b; 544514f5e3Sopenharmony_ci this.z = c; 554514f5e3Sopenharmony_ci } 564514f5e3Sopenharmony_ci x : number; 574514f5e3Sopenharmony_ci y : number; 584514f5e3Sopenharmony_ci z : number; 594514f5e3Sopenharmony_ci} 604514f5e3Sopenharmony_ci 614514f5e3Sopenharmony_cifor (let i = 0; i < LOOP_TIME; i++){ 624514f5e3Sopenharmony_ci for (let j = 0; j < 5; ++j) { 634514f5e3Sopenharmony_ci var _attrs : Attrs[] = [ 644514f5e3Sopenharmony_ci new Attrs(1, 1, 1), 654514f5e3Sopenharmony_ci new Attrs(2, 2, 2), 664514f5e3Sopenharmony_ci new Attrs(3, 3, 3), 674514f5e3Sopenharmony_ci new Attrs(4, 4, 4), 684514f5e3Sopenharmony_ci new Attrs(5, 5, 5), 694514f5e3Sopenharmony_ci ]; 704514f5e3Sopenharmony_ci if (i == LOOP_TIME - 1) { 714514f5e3Sopenharmony_ci print(_attrs[j].x); 724514f5e3Sopenharmony_ci } 734514f5e3Sopenharmony_ci } 744514f5e3Sopenharmony_ci} 754514f5e3Sopenharmony_ci 764514f5e3Sopenharmony_ciconst tests = [ 774514f5e3Sopenharmony_ci [99.99, "ark"], 784514f5e3Sopenharmony_ci [-88.48, "brk"], 794514f5e3Sopenharmony_ci [-1024, "crk"], 804514f5e3Sopenharmony_ci [6666, "drk"], 814514f5e3Sopenharmony_ci]; 824514f5e3Sopenharmony_ci 834514f5e3Sopenharmony_cifor (let i = 0; i < LOOP_TIME; i++){ 844514f5e3Sopenharmony_ci for (const [number, strData] of tests) { 854514f5e3Sopenharmony_ci if (i == LOOP_TIME - 1) { 864514f5e3Sopenharmony_ci print(number); 874514f5e3Sopenharmony_ci print(strData); 884514f5e3Sopenharmony_ci } 894514f5e3Sopenharmony_ci } 904514f5e3Sopenharmony_ci} 914514f5e3Sopenharmony_ci 924514f5e3Sopenharmony_ciconst exceptions = { 934514f5e3Sopenharmony_ci "minute" : { 944514f5e3Sopenharmony_ci "-1" : "1 minute ago", 954514f5e3Sopenharmony_ci '0' : 'this minute', 964514f5e3Sopenharmony_ci "1" : "in 1 minute", 974514f5e3Sopenharmony_ci }, 984514f5e3Sopenharmony_ci "second" : { 994514f5e3Sopenharmony_ci "-1" : "1 second ago", 1004514f5e3Sopenharmony_ci "0" : "now", 1014514f5e3Sopenharmony_ci "1" : "in 1 second", 1024514f5e3Sopenharmony_ci }, 1034514f5e3Sopenharmony_ci}; 1044514f5e3Sopenharmony_ci 1054514f5e3Sopenharmony_ciconst units = [ 1064514f5e3Sopenharmony_ci "second", 1074514f5e3Sopenharmony_ci "minute", 1084514f5e3Sopenharmony_ci]; 1094514f5e3Sopenharmony_ci 1104514f5e3Sopenharmony_cifor (let i = 0; i < LOOP_TIME; i++){ 1114514f5e3Sopenharmony_ci for (const unit of units) { 1124514f5e3Sopenharmony_ci const expected = unit in exceptions ? 1134514f5e3Sopenharmony_ci [exceptions[unit]["1"], exceptions[unit]["0"], exceptions[unit]["0"], exceptions[unit]["-1"]] : 1144514f5e3Sopenharmony_ci [`in 1 ${unit}`, `in 0 ${unit}s`, `0 ${unit}s ago`, `1 ${unit} ago`]; 1154514f5e3Sopenharmony_ci if (i == LOOP_TIME - 1) { 1164514f5e3Sopenharmony_ci print(expected); 1174514f5e3Sopenharmony_ci } 1184514f5e3Sopenharmony_ci } 1194514f5e3Sopenharmony_ci} 1204514f5e3Sopenharmony_ci 1214514f5e3Sopenharmony_cifor (let i = 0; i < LOOP_TIME; i++){ 1224514f5e3Sopenharmony_ci Object.defineProperty(Array.prototype, '0', { 1234514f5e3Sopenharmony_ci value: 42, 1244514f5e3Sopenharmony_ci }); 1254514f5e3Sopenharmony_ci let arr = [, 2, 3]; 1264514f5e3Sopenharmony_ci arr.pop(); 1274514f5e3Sopenharmony_ci if (i == LOOP_TIME - 1) { 1284514f5e3Sopenharmony_ci print(arr[1]); 1294514f5e3Sopenharmony_ci } 1304514f5e3Sopenharmony_ci} 1314514f5e3Sopenharmony_ci 1324514f5e3Sopenharmony_ci 1334514f5e3Sopenharmony_cifor (let i = 0; i < LOOP_TIME; i++){ 1344514f5e3Sopenharmony_ci var a : any[] = [ ["ok"], [1, 2, 3] ]; 1354514f5e3Sopenharmony_ci var b = { 1364514f5e3Sopenharmony_ci 1 : ["yes", "no"], 1374514f5e3Sopenharmony_ci "100" : [4, 5], 1384514f5e3Sopenharmony_ci } 1394514f5e3Sopenharmony_ci if (i == LOOP_TIME - 1) { 1404514f5e3Sopenharmony_ci print(a[0][0]); 1414514f5e3Sopenharmony_ci print(a[1][0]); 1424514f5e3Sopenharmony_ci print(a[1][1]); 1434514f5e3Sopenharmony_ci print(a[1][2]); 1444514f5e3Sopenharmony_ci 1454514f5e3Sopenharmony_ci print(b[1][0]); 1464514f5e3Sopenharmony_ci print(b[1][1]); 1474514f5e3Sopenharmony_ci print(b["100"][0]); 1484514f5e3Sopenharmony_ci print(b["100"][1]); 1494514f5e3Sopenharmony_ci } 1504514f5e3Sopenharmony_ci} 1514514f5e3Sopenharmony_ci 1524514f5e3Sopenharmony_ci 153