* Copyright (c) 2023 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
{
const array1 = ['a', 'b', 'c'];
const array2 = ['d', 'e', 'f'];
const array3 = array1.concat(array2);
assert_equal(array3, ['a', 'b', 'c', 'd', 'e', 'f'])
}
{
const letters = ["a", "b", "c"];
const numbers = [1, 2, 3];
const alphaNumeric = letters.concat(numbers);
assert_equal(alphaNumeric, ['a', 'b', 'c', 1, 2, 3])
}
{
const num1 = [1, 2, 3];
const num2 = [4, 5, 6];
const num3 = [7, 8, 9];
const numbers1 = num1.concat(num2, num3);
assert_equal(numbers1, [1, 2, 3, 4, 5, 6, 7, 8, 9])
}
{
const letters1 = ["a", "b", "c"];
const alphaNumeric1 = letters1.concat(1, [2, 3]);
assert_equal(alphaNumeric1, ["a", "b", "c", 1, 2, 3])
}
{
const num1 = [1, 2, 3];
const num11 = [[1]];
const num22 = [2, [3]];
const numbers2 = num1.concat(num22);
assert_equal(numbers2, [1, 2, 3, 2, [3]]);
num11[0].push(4);
assert_equal(numbers2, [1, 2, 3, 2, [3]]);
}
{
assert_equal([1, , 3].concat([4, 5]), [1,, 3, 4, 5]);
assert_equal([1, 2].concat([3, , 5]), [1, 2, 3,, 5]);
}
{
const emptyArr = [];
assert_equal(emptyArr.concat([]).length, 0)
}
* @tc.name:Array concat1
* @tc.desc:test long Array Concat long Array and change proto
* @tc.type: FUNC
*/
{
let arr1 = new Array(2000);
arr1[0] = 1;
arr1[1] = 1;
let arr2 = new Array(2000);
arr2.__proto__ = arr1;
arr2[1] = 3;
arr2[2] = 2;
arr2[3] = "ab";
arr2[4] = 1;
let arr3 = new Array(2000);
let arr4 = arr3.concat(arr2);
assert_equal(arr4[2000], 1);
assert_equal(arr4[2001], 3);
assert_equal(arr4[2002], 2);
assert_equal(arr4[2003], 'ab');
assert_equal(arr4[2004], 1);
}
* @tc.name:Array concat2
* @tc.desc:test long Array Concat short Array and change proto
* @tc.type: FUNC
*/
{
let arr1 = new Array(10);
arr1[0] = 1;
arr1[1] = 1;
let arr2 = new Array(10);
arr2.__proto__ = arr1;
arr2[1] = 3;
arr2[2] = 2;
arr2[3] = "ab";
arr2[4] = 1;
let arr3 = new Array(2000);
let arr4 = arr3.concat(arr2);
assert_equal(arr4[2000], 1);
assert_equal(arr4[2001], 3);
assert_equal(arr4[2002], 2);
assert_equal(arr4[2003], 'ab');
assert_equal(arr4[2004], 1);
}
* @tc.name:Array concat3
* @tc.desc:test short Array Concat long Array and change proto
* @tc.type: FUNC
*/
{
let arr1 = new Array(2000);
arr1[0] = 1;
arr1[1] = 1;
let arr2 = new Array(2000);
arr2.__proto__ = arr1;
arr2[1] = 3;
arr2[2] = 2;
arr2[3] = "ab";
arr2[4] = 1;
let arr3 = new Array(10);
let arr4 = arr3.concat(arr2);
assert_equal(arr4[10], 1);
assert_equal(arr4[11], 3);
assert_equal(arr4[12], 2);
assert_equal(arr4[13], 'ab');
assert_equal(arr4[14], 1);
}
* @tc.name:Array concat4
* @tc.desc:test long Array Concat long Array
* @tc.type: FUNC
*/
{
let arr2 = new Array(2000);
arr2[1] = 3;
arr2[2] = 2;
arr2[3] = "ab";
arr2[4] = 1;
let arr3 = new Array(2000);
let arr4 = arr3.concat(arr2);
assert_equal(arr4[2000], undefined);
assert_equal(arr4[2001], 3);
assert_equal(arr4[2002], 2);
assert_equal(arr4[2003], 'ab');
assert_equal(arr4[2004], 1);
}
* @tc.name:Array concat5
* @tc.desc:test long Array Concat short Array
* @tc.type: FUNC
*/
{
let arr2 = new Array(10);
arr2[1] = 3;
arr2[2] = 2;
arr2[3] = "ab";
arr2[4] = 1;
let arr3 = new Array(2000);
let arr4 = arr3.concat(arr2);
assert_equal(arr4[2000], undefined);
assert_equal(arr4[2001], 3);
assert_equal(arr4[2002], 2);
assert_equal(arr4[2003], 'ab');
assert_equal(arr4[2004], 1);
}
* @tc.name:Array concat6
* @tc.desc:test short Array Concat long Array
* @tc.type: FUNC
*/
{
let arr2 = new Array(2000);
arr2[1] = 3;
arr2[2] = 2;
arr2[3] = "ab";
arr2[4] = 1;
let arr3 = new Array(10);
let arr4 = arr3.concat(arr2);
assert_equal(arr4[10], undefined);
assert_equal(arr4[11], 3);
assert_equal(arr4[12], 2);
assert_equal(arr4[13], 'ab');
assert_equal(arr4[14], 1);
}
* @tc.name:Array concat7
* @tc.desc:test long Array Concat long Array change origin prototype
* @tc.type: FUNC
*/
{
let arr2 = new Array(2000);
arr2.__proto__[0] = "??";
arr2[1] = 3;
arr2[2] = 2;
arr2[3] = "ab";
arr2[4] = 1;
let arr3 = new Array(2000);
let arr4 = arr3.concat(arr2);
assert_equal(arr4[0], '??');
assert_equal(arr4[2000], '??');
assert_equal(arr4[2001], 3);
assert_equal(arr4[2002], 2);
assert_equal(arr4[2003], 'ab');
assert_equal(arr4[2004], 1);
}
{
const v1 = [1, 2, "j", 9999, , 23];
const v2 = ["sss", 2, "j", , , ,"test"];
assert_equal(v1.concat(v2), [1, 2, "j", 9999, , 23, "sss", 2, "j", , , ,"test"]);
}
{
let v3 = new Array();
v3.push('foo');
var v4 = ['bar'];
var v5 = v3.concat(v4);
assert_equal(v5, ['foo', 'bar']);
}
{
var v1 = new Array(17);
for (var i = 0; i < 200; i++) {
v1[i] = new Uint32Array(262129);
[].concat();
Object.setPrototypeOf(Array.prototype, new Int8Array());
Array.prototype.length = 1025;
}
}
test_end();