• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright JS Foundation and other contributors, http://js.foundation
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15var array = ["foo", [], Infinity, 4]
16var new_arr = array.concat();
17
18assert(new_arr.length === array.length)
19for (i = 0; i < array.length; i++) {
20  assert(array[i] === new_arr[i]);
21}
22
23var obj = { concat : Array.prototype.concat };
24var arr1 = ["Apple", 6, "Peach"];
25var arr2 = [obj, "Cherry", "Grape"];
26
27var new_array = obj.concat(arr1);
28assert(new_array.length === 4);
29assert(new_array[0] === obj);
30assert(new_array[1] === "Apple");
31assert(new_array[2] === 6);
32assert(new_array[3] === "Peach");
33
34var new_array = arr1.concat(arr2, obj, 1);
35
36assert(new_array.length === 8);
37assert(new_array[0] === "Apple");
38assert(new_array[1] === 6);
39assert(new_array[2] === "Peach");
40assert(new_array[3] === obj);
41assert(new_array[4] === "Cherry");
42assert(new_array[5] === "Grape");
43assert(new_array[6] === obj);
44assert(new_array[7] === 1);
45
46var arr1 = [1,2];
47var arr2 = [4,5,6,7,8];
48var arr3 = [,,9,10];
49var arr4 = [];
50var expected = [1,2,4,5,6,7,8,,,9,10];
51
52var result = arr1.concat(arr2, arr3, arr4);
53
54assert(result.length === expected.length)
55for (i = 0; i < result.length; i++) {
56  assert(result[i] === expected[i]);
57}
58
59var arr1 = [];
60arr1.length = 2;
61var arr2 = [];
62arr2.length = 3;
63assert(arr1.concat(arr2).length === arr1.length + arr2.length);
64
65// Checking behavior when unable to get element
66var arr = []
67Object.defineProperty(arr, '0', { 'get' : function () {throw new ReferenceError ("foo"); } });
68arr.length = 1;
69
70try {
71  arr.concat();
72  assert(false);
73} catch (e) {
74  assert(e.message === "foo");
75  assert(e instanceof ReferenceError);
76}
77
78/* ES v5.1 15.4.4.4.5.
79   Checking behavior when unable to get element from a given array */
80arr1 = [];
81arr2 = [];
82arr3 = [];
83Object.defineProperty(arr2, '0', { 'get' : function () {throw new ReferenceError ("foo"); } });
84
85try {
86  arr1.concat(arr2, arr3);
87  assert(false);
88} catch (e) {
89  assert(e instanceof ReferenceError);
90}
91