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_ci/*
174514f5e3Sopenharmony_ci * @tc.name:arraySlice
184514f5e3Sopenharmony_ci * @tc.desc:test array.slice
194514f5e3Sopenharmony_ci * @tc.type: FUNC
204514f5e3Sopenharmony_ci * @tc.require:
214514f5e3Sopenharmony_ci */
224514f5e3Sopenharmony_ci
234514f5e3Sopenharmony_ciconst animals = ['ant', 'bison', 'camel', 'duck', 'elephant'];
244514f5e3Sopenharmony_ci
254514f5e3Sopenharmony_ciprint(animals.slice(2));
264514f5e3Sopenharmony_ci// Expected output: Array ["camel", "duck", "elephant"]
274514f5e3Sopenharmony_ci
284514f5e3Sopenharmony_ciprint(animals.slice(2, 4));
294514f5e3Sopenharmony_ci// Expected output: Array ["camel", "duck"]
304514f5e3Sopenharmony_ci
314514f5e3Sopenharmony_ciprint(animals.slice(1, 5));
324514f5e3Sopenharmony_ci// Expected output: Array ["bison", "camel", "duck", "elephant"]
334514f5e3Sopenharmony_ci
344514f5e3Sopenharmony_ciprint(animals.slice(-2));
354514f5e3Sopenharmony_ci// Expected output: Array ["duck", "elephant"]
364514f5e3Sopenharmony_ci
374514f5e3Sopenharmony_ciprint(animals.slice(2, -1));
384514f5e3Sopenharmony_ci// Expected output: Array ["camel", "duck"]
394514f5e3Sopenharmony_ci
404514f5e3Sopenharmony_ciprint(animals.slice());
414514f5e3Sopenharmony_ci// Expected output: Array ["ant", "bison", "camel", "duck", "elephant"]
424514f5e3Sopenharmony_ci
434514f5e3Sopenharmony_ciprint([1, 2, , 4, 5].slice(1, 4)); // [2, empty, 4]
444514f5e3Sopenharmony_ciconst arrayLike = {
454514f5e3Sopenharmony_ci	  length: 3,
464514f5e3Sopenharmony_ci	  0: 2,
474514f5e3Sopenharmony_ci	  1: 3,
484514f5e3Sopenharmony_ci	  2: 4,
494514f5e3Sopenharmony_ci};
504514f5e3Sopenharmony_ciprint(Array.prototype.slice.call(arrayLike, 1, 3));
514514f5e3Sopenharmony_ci
524514f5e3Sopenharmony_ciconst slice = Function.prototype.call.bind(Array.prototype.slice);
534514f5e3Sopenharmony_cifunction list() {
544514f5e3Sopenharmony_ci	  return slice(arguments);
554514f5e3Sopenharmony_ci}
564514f5e3Sopenharmony_ci
574514f5e3Sopenharmony_ciconst list1 = list(1, 2, 3); // [1, 2, 3]
584514f5e3Sopenharmony_ciprint(list1);
594514f5e3Sopenharmony_ci
604514f5e3Sopenharmony_civar srcArr = [0, 1, true, null, new Object(), "five"];
614514f5e3Sopenharmony_cisrcArr[9999999] = -6.6;
624514f5e3Sopenharmony_civar resArr = srcArr.slice(1, 3);
634514f5e3Sopenharmony_ciprint(resArr);
644514f5e3Sopenharmony_ci
654514f5e3Sopenharmony_civar A = function(_length) {
664514f5e3Sopenharmony_ci	this.length = 0;
674514f5e3Sopenharmony_ci	Object.preventExtensions(this);
684514f5e3Sopenharmony_ci};
694514f5e3Sopenharmony_civar arr = [1];
704514f5e3Sopenharmony_ciarr.constructor = {};
714514f5e3Sopenharmony_ciarr.constructor[Symbol.species] = A;
724514f5e3Sopenharmony_ciarr.slice(2);
734514f5e3Sopenharmony_ciprint(arr);
74