14514f5e3Sopenharmony_ci/*
24514f5e3Sopenharmony_ci * Copyright (c) 2022 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(str:any):string;
174514f5e3Sopenharmony_civar a : any[] = [ ["ok"], [1, 2, 3] ];
184514f5e3Sopenharmony_ciprint(a[0][0]);
194514f5e3Sopenharmony_ciprint(a[1][0]);
204514f5e3Sopenharmony_ciprint(a[1][1]);
214514f5e3Sopenharmony_ciprint(a[1][2]);
224514f5e3Sopenharmony_ci
234514f5e3Sopenharmony_civar b = {
244514f5e3Sopenharmony_ci    1 : ["yes", "no"],
254514f5e3Sopenharmony_ci    "100" : [4, 5],
264514f5e3Sopenharmony_ci}
274514f5e3Sopenharmony_ciprint(b[1][0]);
284514f5e3Sopenharmony_ciprint(b[1][1]);
294514f5e3Sopenharmony_ciprint(b["100"][0]);
304514f5e3Sopenharmony_ciprint(b["100"][1]);
314514f5e3Sopenharmony_ci
324514f5e3Sopenharmony_ciclass Attrs {
334514f5e3Sopenharmony_ci	constructor(a : number, b : number, c : number) {
344514f5e3Sopenharmony_ci		this.x = a;
354514f5e3Sopenharmony_ci		this.y = b;
364514f5e3Sopenharmony_ci		this.z = c;
374514f5e3Sopenharmony_ci	}
384514f5e3Sopenharmony_ci	x : number;
394514f5e3Sopenharmony_ci	y : number;
404514f5e3Sopenharmony_ci	z : number;
414514f5e3Sopenharmony_ci}
424514f5e3Sopenharmony_cifunction test() : void {
434514f5e3Sopenharmony_ci	for (let j = 0; j < 5; ++j) {
444514f5e3Sopenharmony_ci		var _attrs : Attrs[] = [
454514f5e3Sopenharmony_ci			new Attrs(1, 1, 1),
464514f5e3Sopenharmony_ci			new Attrs(2, 2, 2),
474514f5e3Sopenharmony_ci			new Attrs(3, 3, 3),
484514f5e3Sopenharmony_ci			new Attrs(4, 4, 4),
494514f5e3Sopenharmony_ci			new Attrs(5, 5, 5),
504514f5e3Sopenharmony_ci		];
514514f5e3Sopenharmony_ci        print(_attrs[j].x);
524514f5e3Sopenharmony_ci	}
534514f5e3Sopenharmony_ci}
544514f5e3Sopenharmony_citest();
554514f5e3Sopenharmony_ci
564514f5e3Sopenharmony_ciconst tests = [
574514f5e3Sopenharmony_ci	[
584514f5e3Sopenharmony_ci	  	99.99,
594514f5e3Sopenharmony_ci	  	"ark"
604514f5e3Sopenharmony_ci	],
614514f5e3Sopenharmony_ci	[
624514f5e3Sopenharmony_ci	  	-88.48,
634514f5e3Sopenharmony_ci	  	"brk"
644514f5e3Sopenharmony_ci	],
654514f5e3Sopenharmony_ci	[
664514f5e3Sopenharmony_ci		-1024,
674514f5e3Sopenharmony_ci		"crk"
684514f5e3Sopenharmony_ci  	],
694514f5e3Sopenharmony_ci	[
704514f5e3Sopenharmony_ci		6666,
714514f5e3Sopenharmony_ci		"drk"
724514f5e3Sopenharmony_ci  	],
734514f5e3Sopenharmony_ci];
744514f5e3Sopenharmony_ci  
754514f5e3Sopenharmony_cifor (const [number, strData] of tests) {
764514f5e3Sopenharmony_ci  	print(number);
774514f5e3Sopenharmony_ci  	print(strData);
784514f5e3Sopenharmony_ci}
794514f5e3Sopenharmony_ci
804514f5e3Sopenharmony_ciconst units = [
814514f5e3Sopenharmony_ci	"second",
824514f5e3Sopenharmony_ci	"minute",
834514f5e3Sopenharmony_ci];
844514f5e3Sopenharmony_ci  
854514f5e3Sopenharmony_ciconst exceptions = {
864514f5e3Sopenharmony_ci	"minute": {
874514f5e3Sopenharmony_ci	  	"-1": "1 minute ago",
884514f5e3Sopenharmony_ci	  	'0': 'this minute',
894514f5e3Sopenharmony_ci	  	"1": "in 1 minute",
904514f5e3Sopenharmony_ci	},
914514f5e3Sopenharmony_ci	"second": {
924514f5e3Sopenharmony_ci	  	"-1": "1 second ago",
934514f5e3Sopenharmony_ci	  	"0": "now",
944514f5e3Sopenharmony_ci	  	"1": "in 1 second",
954514f5e3Sopenharmony_ci	},
964514f5e3Sopenharmony_ci};
974514f5e3Sopenharmony_ci
984514f5e3Sopenharmony_ci{
994514f5e3Sopenharmony_ci	const v1 = new SendableInt8Array(SendableInt8Array, SendableInt8Array, SendableInt8Array);
1004514f5e3Sopenharmony_ci	let a = v1[Symbol.toStringTag];
1014514f5e3Sopenharmony_ci	let c = [a];
1024514f5e3Sopenharmony_ci}
1034514f5e3Sopenharmony_ci  
1044514f5e3Sopenharmony_cifor (const unit of units) {
1054514f5e3Sopenharmony_ci	const expected = unit in exceptions
1064514f5e3Sopenharmony_ci		? [exceptions[unit]["1"], exceptions[unit]["0"], exceptions[unit]["0"], exceptions[unit]["-1"]]
1074514f5e3Sopenharmony_ci	  	: [`in 1 ${unit}`, `in 0 ${unit}s`, `0 ${unit}s ago`, `1 ${unit} ago`];
1084514f5e3Sopenharmony_ci  
1094514f5e3Sopenharmony_ci	print(expected);
1104514f5e3Sopenharmony_ci}
1114514f5e3Sopenharmony_ci
1124514f5e3Sopenharmony_ciObject.defineProperty(Array.prototype, '0', {
1134514f5e3Sopenharmony_ci	value: 42,
1144514f5e3Sopenharmony_ci});
1154514f5e3Sopenharmony_cilet arr = [, 2, 3];
1164514f5e3Sopenharmony_ciarr.pop();
1174514f5e3Sopenharmony_ciprint(arr[1]);
1184514f5e3Sopenharmony_ci
1194514f5e3Sopenharmony_ci// TestTypedArrayFindLast
1204514f5e3Sopenharmony_ci{
1214514f5e3Sopenharmony_ci	const LOOP_TIME = 20;
1224514f5e3Sopenharmony_ci
1234514f5e3Sopenharmony_ci	function func(element, Last, array) {
1244514f5e3Sopenharmony_ci		return element <= 0;
1254514f5e3Sopenharmony_ci	}
1264514f5e3Sopenharmony_ci
1274514f5e3Sopenharmony_ci	function TestTypedArrayFindLast(e) {
1284514f5e3Sopenharmony_ci		let arr = new e([-5, 10, 20, 30, -40, 50.5, -60.6]);
1294514f5e3Sopenharmony_ci		let result = arr.findLast(func);
1304514f5e3Sopenharmony_ci	}
1314514f5e3Sopenharmony_ci
1324514f5e3Sopenharmony_ci	for (let i = 0; i < LOOP_TIME; i++) {
1334514f5e3Sopenharmony_ci		TestTypedArrayFindLast(Int8Array);
1344514f5e3Sopenharmony_ci	}
1354514f5e3Sopenharmony_ci
1364514f5e3Sopenharmony_ci	for (let i = 0; i < LOOP_TIME; i++) {
1374514f5e3Sopenharmony_ci		TestTypedArrayFindLast(Uint8Array);
1384514f5e3Sopenharmony_ci	}
1394514f5e3Sopenharmony_ci
1404514f5e3Sopenharmony_ci	for (let i = 0; i < LOOP_TIME; i++) {
1414514f5e3Sopenharmony_ci		TestTypedArrayFindLast(Uint8ClampedArray);
1424514f5e3Sopenharmony_ci	}
1434514f5e3Sopenharmony_ci
1444514f5e3Sopenharmony_ci	for (let i = 0; i < LOOP_TIME; i++) {
1454514f5e3Sopenharmony_ci		TestTypedArrayFindLast(Int16Array);
1464514f5e3Sopenharmony_ci	}
1474514f5e3Sopenharmony_ci
1484514f5e3Sopenharmony_ci	for (let i = 0; i < LOOP_TIME; i++) {
1494514f5e3Sopenharmony_ci		TestTypedArrayFindLast(Uint16Array);
1504514f5e3Sopenharmony_ci	}
1514514f5e3Sopenharmony_ci
1524514f5e3Sopenharmony_ci	for (let i = 0; i < LOOP_TIME; i++) {
1534514f5e3Sopenharmony_ci		TestTypedArrayFindLast(Int32Array);
1544514f5e3Sopenharmony_ci	}
1554514f5e3Sopenharmony_ci
1564514f5e3Sopenharmony_ci	for (let i = 0; i < LOOP_TIME; i++) {
1574514f5e3Sopenharmony_ci		TestTypedArrayFindLast(Uint32Array);
1584514f5e3Sopenharmony_ci	}
1594514f5e3Sopenharmony_ci
1604514f5e3Sopenharmony_ci	for (let i = 0; i < LOOP_TIME; i++) {
1614514f5e3Sopenharmony_ci		TestTypedArrayFindLast(Float32Array);
1624514f5e3Sopenharmony_ci	}
1634514f5e3Sopenharmony_ci
1644514f5e3Sopenharmony_ci	for (let i = 0; i < LOOP_TIME; i++) {
1654514f5e3Sopenharmony_ci		TestTypedArrayFindLast(Float64Array);
1664514f5e3Sopenharmony_ci	}
1674514f5e3Sopenharmony_ci}
168