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:async
184514f5e3Sopenharmony_ci * @tc.desc:test async function
194514f5e3Sopenharmony_ci * @tc.type: FUNC
204514f5e3Sopenharmony_ci * @tc.require: issueI5NO8G issueI8FBM3
214514f5e3Sopenharmony_ci */
224514f5e3Sopenharmony_civar array = [,];
234514f5e3Sopenharmony_cifunction map() {
244514f5e3Sopenharmony_ci    return array.map(x => x + 1);
254514f5e3Sopenharmony_ci}
264514f5e3Sopenharmony_ciarray.__proto__.push(5);
274514f5e3Sopenharmony_civar narr = map();
284514f5e3Sopenharmony_ciprint(JSON.stringify(Object.getOwnPropertyDescriptor(narr, 0)));
294514f5e3Sopenharmony_ciprint(narr[0], 6);
304514f5e3Sopenharmony_ci
314514f5e3Sopenharmony_cilet arr=new Array(10);
324514f5e3Sopenharmony_cimap=arr.map(()=>{});
334514f5e3Sopenharmony_ciprint(map.at(9));
344514f5e3Sopenharmony_ci
354514f5e3Sopenharmony_ci// Species constructor is used to create []
364514f5e3Sopenharmony_ci// So not should use ElementAccessor::Set (elements.length == 0)
374514f5e3Sopenharmony_civar instance = [];
384514f5e3Sopenharmony_civar Ctor = function() {
394514f5e3Sopenharmony_ci  return instance;
404514f5e3Sopenharmony_ci};
414514f5e3Sopenharmony_civar a = [1, 2, 3, 4, 5];
424514f5e3Sopenharmony_cia.constructor = {};
434514f5e3Sopenharmony_cia.constructor[Symbol.species] = Ctor;
444514f5e3Sopenharmony_civar result = a.map(function() {});
454514f5e3Sopenharmony_ciprint(result == instance);
464514f5e3Sopenharmony_ci{
474514f5e3Sopenharmony_ci  const v1 = new BigInt64Array();
484514f5e3Sopenharmony_ci  const v2 = [65537,-1,4096,-9007199254740990,-268435456,6,-29705,128,-6];
494514f5e3Sopenharmony_ci  function f3() {
504514f5e3Sopenharmony_ci      v2["pop"]();
514514f5e3Sopenharmony_ci      return f3;
524514f5e3Sopenharmony_ci  }
534514f5e3Sopenharmony_ci  let a = v2.map(f3());
544514f5e3Sopenharmony_ci  print(a.length)
554514f5e3Sopenharmony_ci}
564514f5e3Sopenharmony_ci
574514f5e3Sopenharmony_ci{
584514f5e3Sopenharmony_ci  const v0 = [0,1,2,3,4,5,6,7,8,9,10];
594514f5e3Sopenharmony_ci  const mapEd = v0.map(() =>{
604514f5e3Sopenharmony_ci    Object.defineProperty(Array.prototype, '8',{value: 42, writable :false });
614514f5e3Sopenharmony_ci    return 8;
624514f5e3Sopenharmony_ci  })
634514f5e3Sopenharmony_ci  print(v0)
644514f5e3Sopenharmony_ci}
654514f5e3Sopenharmony_ci
66