diff --git a/test/built-ins/Array/prototype/flatMap/array-like-objects.js b/test/built-ins/Array/prototype/flatMap/array-like-objects.js index dcb9f5c9ca837987f8f4a32f507862317d756237..71da0aa6d8f4dbeebf0971649c712cdad645dca5 100644 --- a/test/built-ins/Array/prototype/flatMap/array-like-objects.js +++ b/test/built-ins/Array/prototype/flatMap/array-like-objects.js @@ -7,27 +7,28 @@ description: > includes: [compareArray.js] ---*/ -function takesTwoParams(a, b) { - return Array.prototype.flatMap.call(arguments, function(ele) { return ele * 2}); +function getArgumentsObject() { + return arguments; } -var actual = takesTwoParams(1,[2]); -var expected = [2, 4]; +function double(e) { + return [e * 2]; +} -assert(compareArray(actual, expected), 'arguments array like object'); +var a = getArgumentsObject(1, 2); +var actual = [].flatMap.call(a, double); +assert.compareArray(actual, [2, 4], 'arguments objects'); var a = { - "length": 1, - "0": 1 + length: 1, + 0: 1, }; - -actual = Array.prototype.flatMap.call(a, function(ele) { return ele * 2}); -assert.sameValue(JSON.stringify(actual), JSON.stringify(['2']), 'array like objects'); +var actual = [].flatMap.call(a, double); +assert.compareArray(actual, [2], 'array-like objects'); var a = { - "length": undefined, - "0": 1 + length: void 0, + 0: 1, }; - -actual = Array.prototype.flatMap.call(a, function(ele) { return ele * 2}); -assert.sameValue(JSON.stringify(actual), JSON.stringify([]), 'array like objects'); +var actual = [].flatMap.call(a, double); +assert.compareArray(actual, [], 'array-like objects; undefined length'); diff --git a/test/built-ins/Array/prototype/flatMap/bound-function-argument.js b/test/built-ins/Array/prototype/flatMap/bound-function-argument.js index b85b9aaa3d3ed076a91709f6a620284b7c78d7c2..ef6762656ceb8e3921c8db4a4977df61fd063655 100644 --- a/test/built-ins/Array/prototype/flatMap/bound-function-argument.js +++ b/test/built-ins/Array/prototype/flatMap/bound-function-argument.js @@ -3,11 +3,9 @@ /*--- esid: sec-array.prototype.flatMap description: > - Behavior when array is depth more than 1 + Behavior when given a bound function includes: [compareArray.js] ---*/ -var a = [void 0,[void 0]]; -var flattenMap = [].flatMap.bind(a, function() {}); - -assert.compareArray(a.flatMap(flattenMap), [undefined, undefined, undefined, undefined]); +var a = [0, 0]; +assert.compareArray(a.flatMap(function(){ return this; }.bind([1, 2])), [1, 2, 1, 2]); diff --git a/test/built-ins/Array/prototype/flatMap/depth-always-one.js b/test/built-ins/Array/prototype/flatMap/depth-always-one.js index 624392c2dc2c6d5aedf42ebab6a9cbf23ab823f0..f22fe97065e93732fc8be241eeb4b96578f41138 100644 --- a/test/built-ins/Array/prototype/flatMap/depth-always-one.js +++ b/test/built-ins/Array/prototype/flatMap/depth-always-one.js @@ -7,18 +7,10 @@ description: > includes: [compareArray.js] ---*/ -assert(compareArray([1, [2]].flatMap(function(ele) { - return ele * 2; -}), [2, 4]), 'array depth is 1'); +assert.compareArray([1, 2].flatMap(function(e) { + return [e, e * 2]; +}), [1, 2, 2, 4], 'array depth is 1'); -assert(compareArray([1, [2], [[3]]].flatMap(function(ele) { - return ele * 2; -}), [2, 4, 6]), 'array depth is more than 1'); - -var actual = [1, [2], [3, [3]]].flatMap(function(ele) { - return ele * 2; -}); - -assert.sameValue(actual[0], 2); -assert.sameValue(actual[1], 4); -assert(isNaN(actual[2])); +assert.compareArray([1, 2, 3].flatMap(function(ele) { + return [[ele * 2]]; +}), [[2], [4], [6]], 'array depth is more than 1'); diff --git a/test/built-ins/Array/prototype/flatMap/non-object-ctor-throws.js b/test/built-ins/Array/prototype/flatMap/non-object-ctor-throws.js index 962bd16fb4cf16b204cab0b6496f2250344a8972..ccbb0a6288dc5acba172747624c34debebd5c9c4 100644 --- a/test/built-ins/Array/prototype/flatMap/non-object-ctor-throws.js +++ b/test/built-ins/Array/prototype/flatMap/non-object-ctor-throws.js @@ -8,25 +8,24 @@ description: > ---*/ var a = []; - a.constructor = null; assert.throws(TypeError, function() { a.flatMap(); }, 'null value'); -a = []; +var a = []; a.constructor = 1; assert.throws(TypeError, function() { a.flatMap(); }, 'number value'); -a = []; +var a = []; a.constructor = 'string'; assert.throws(TypeError, function() { a.flatMap(); }, 'string value'); -a = []; +var a = []; a.constructor = true; assert.throws(TypeError, function() { a.flatMap(); diff --git a/test/built-ins/Array/prototype/flatMap/thisArg-argument.js b/test/built-ins/Array/prototype/flatMap/thisArg-argument.js index 097ec0c872ff08806a1066ebf0a87887c58ce7ad..a2217e6fb8dd8f5c144341e80c0026a7e53eb52f 100644 --- a/test/built-ins/Array/prototype/flatMap/thisArg-argument.js +++ b/test/built-ins/Array/prototype/flatMap/thisArg-argument.js @@ -10,11 +10,11 @@ includes: [compareArray.js] "use strict"; -var a; +var a = {}; -assert(compareArray([1].flatMap(function() { return this}, "TestString"), ["TestString"])); -assert(compareArray([1].flatMap(function() { return this}, 1), [1])); -assert(compareArray([1].flatMap(function() { return this}, null), [null])); -assert(compareArray([1].flatMap(function() { return this}, true), [true])); -assert(compareArray([1].flatMap(function() { return this}, a = {}), [a])); -assert(compareArray([1].flatMap(function() { return this}, void 0), [undefined])); +assert(compareArray([1].flatMap(function() { return [this]; }, "TestString"), ["TestString"])); +assert(compareArray([1].flatMap(function() { return [this]; }, 1), [1])); +assert(compareArray([1].flatMap(function() { return [this]; }, null), [null])); +assert(compareArray([1].flatMap(function() { return [this]; }, true), [true])); +assert(compareArray([1].flatMap(function() { return [this]; }, a), [a])); +assert(compareArray([1].flatMap(function() { return [this]; }, void 0), [undefined])); diff --git a/test/built-ins/Array/prototype/flatten/array-like-objects.js b/test/built-ins/Array/prototype/flatten/array-like-objects.js index d4a210444b21a9273c837c4166f60b61fa8cf0a5..bda75f3785c17528cb2dfe56079c416d0c02eeb3 100644 --- a/test/built-ins/Array/prototype/flatten/array-like-objects.js +++ b/test/built-ins/Array/prototype/flatten/array-like-objects.js @@ -7,25 +7,24 @@ description: > includes: [compareArray.js] ---*/ -function takesTwoParams(a, b) { - return Array.prototype.flatten.call(arguments); +function getArgumentsObject() { + return arguments; } -var actual = takesTwoParams(1,[2]); -var expected = [1, 2]; - -assert(compareArray(actual, expected), 'arguments array like object'); +var a = getArgumentsObject([1], [2]); +var actual = [].flatten.call(a); +assert.compareArray(actual, [1, 2], 'arguments objects'); var a = { - "length": 1, - "0": 'a' + length: 1, + 0: [1], }; +var actual = [].flatten.call(a); +assert.compareArray(actual, [1], 'array-like objects'); -actual = Array.prototype.flatten.call(a); -assert.sameValue(JSON.stringify(actual), JSON.stringify(['a']), 'array like objects'); - -a = { - "length": undefined, - "0": 'a' +var a = { + length: undefined, + 0: [1], }; -assert.sameValue(JSON.stringify(actual), JSON.stringify([]), 'array like objects undefined length'); +var actual = [].flatten.call(a); +assert.compareArray(actual, [], 'array-like objects; undefined length'); diff --git a/test/built-ins/Array/prototype/flatten/bound-function-call.js b/test/built-ins/Array/prototype/flatten/bound-function-call.js index e456ba0318a146cf293a1189ef0b7c46528407d0..16e830cd7eb3456d4c68182ff26a5322376abf40 100644 --- a/test/built-ins/Array/prototype/flatten/bound-function-call.js +++ b/test/built-ins/Array/prototype/flatten/bound-function-call.js @@ -7,7 +7,7 @@ description: > includes: [compareArray.js] ---*/ -var a = [1,[1]]; -var flattenIt = [].flatten.bind(a); +var a = [[0],[1]]; +var actual = [].flatten.bind(a)(); -assert(compareArray(flattenIt(), [1, 1]), 'bound functions'); +assert.compareArray(actual, [0, 1], 'bound flatten'); diff --git a/test/built-ins/Array/prototype/flatten/empty-array-elements.js b/test/built-ins/Array/prototype/flatten/empty-array-elements.js index ebcf785869a5a07f7afe3d73f63efafbe60337d6..9fa2b782bc6ab8402c05d1d0d5f1957f5d37db43 100644 --- a/test/built-ins/Array/prototype/flatten/empty-array-elements.js +++ b/test/built-ins/Array/prototype/flatten/empty-array-elements.js @@ -7,9 +7,8 @@ description: > includes: [compareArray.js] ---*/ -var a; -assert(compareArray([].flatten([[]]), [])); -assert(compareArray(Array.prototype.flatten.call([[], []]), [])); -assert(compareArray(Array.prototype.flatten.call([[], [1]]), [1])); -assert(compareArray(Array.prototype.flatten.call([[], [1, a = []]]), [1, a])); -assert.sameValue(JSON.stringify(Array.prototype.flatten.call([{}, []])), JSON.stringify([{}])); +var a = {}; +assert.compareArray([].flatten(), []); +assert.compareArray([[], []].flatten(), []); +assert.compareArray([[], [1]].flatten(), [1]); +assert.compareArray([[], [1, a]].flatten(), [1, a]); diff --git a/test/built-ins/Array/prototype/flatten/empty-object-elements.js b/test/built-ins/Array/prototype/flatten/empty-object-elements.js index 6bc6086c814744bc332f19a111bdfed467d9c3fe..a3fb3c809f6d17dc89ff633b429f2dd5a8f9ee4e 100644 --- a/test/built-ins/Array/prototype/flatten/empty-object-elements.js +++ b/test/built-ins/Array/prototype/flatten/empty-object-elements.js @@ -6,7 +6,9 @@ description: > arrays with empty object elements ---*/ -assert.sameValue(JSON.stringify(Array.prototype.flatten.call([{}])), JSON.stringify([{}])); -assert.sameValue(JSON.stringify(Array.prototype.flatten.call([{}, [{}]])), JSON.stringify([{}, {}])); -assert.sameValue(JSON.stringify(Array.prototype.flatten.call([[{null: {}}], [{}]])), JSON.stringify([{null: {}}, {}])); -assert.sameValue(JSON.stringify(Array.prototype.flatten.call([[{null: null}], [{}]])), JSON.stringify([{null: null}, {}])); +var a = {}, b = {}; + +assert.compareArrays([a].flatten(), [a]); +assert.compareArrays([a, [b]].flatten(), [a, b]); +assert.compareArrays([[a], b].flatten(), [a, b]); +assert.compareArrays([[a], [b]].flatten(), [a, b]); diff --git a/test/built-ins/Array/prototype/flatten/non-numeric-depth-should-not-throw.js b/test/built-ins/Array/prototype/flatten/non-numeric-depth-should-not-throw.js index 52f0892464553aca5a623860cd2363e43de4ccf8..b43925ee124ac663a977dc20592dc5091d83385f 100644 --- a/test/built-ins/Array/prototype/flatten/non-numeric-depth-should-not-throw.js +++ b/test/built-ins/Array/prototype/flatten/non-numeric-depth-should-not-throw.js @@ -16,27 +16,27 @@ var actual = a.flatten(depthNum); assert(compareArray(actual, expected), 'non integral string depthNum'); // object type depthNum is converted to 0 -depthNum = {}; +var depthNum = {}; var actual = a.flatten(depthNum); assert(compareArray(actual, expected), 'object type depthNum'); // negative infinity depthNum is converted to 0 -depthNum = Number.NEGATIVE_INFINITY; +var depthNum = Number.NEGATIVE_INFINITY; var actual = a.flatten(depthNum); assert(compareArray(actual, expected), 'negative infinity depthNum'); // positive zero depthNum is converted to 0 -depthNum = +0; +var depthNum = +0; var actual = a.flatten(depthNum); assert(compareArray(actual, expected), 'positive zero depthNum'); // negative zero depthNum is converted to 0 -depthNum = -0; +var depthNum = -0; var actual = a.flatten(depthNum); assert(compareArray(actual, expected), 'negative zero depthNum'); // integral string depthNum is converted to an integer -depthNum = '1'; +var depthNum = '1'; var actual = a.flatten(depthNum); -expected = [1, 2] +var expected = [1, 2] assert(compareArray(actual, expected), 'integral string depthNum'); diff --git a/test/built-ins/Array/prototype/flatten/non-object-ctor-throws.js b/test/built-ins/Array/prototype/flatten/non-object-ctor-throws.js index 853ee8cd78171b260a538a78b8f8e830de7b8ade..633f50750cf352b6294cfe6edc5978bdb2d2a0f7 100644 --- a/test/built-ins/Array/prototype/flatten/non-object-ctor-throws.js +++ b/test/built-ins/Array/prototype/flatten/non-object-ctor-throws.js @@ -8,25 +8,24 @@ description: > ---*/ var a = []; - a.constructor = null; assert.throws(TypeError, function() { a.flatten(); }, 'null value'); -a = []; +var a = []; a.constructor = 1; assert.throws(TypeError, function() { a.flatten(); }, 'number value'); -a = []; +var a = []; a.constructor = 'string'; assert.throws(TypeError, function() { a.flatten(); }, 'string value'); -a = []; +var a = []; a.constructor = true; assert.throws(TypeError, function() { a.flatten(); diff --git a/test/built-ins/Array/prototype/flatten/null-undefined-elements.js b/test/built-ins/Array/prototype/flatten/null-undefined-elements.js index 247be9a8a6e41cb5d99322c5cb35adb0e69badfa..3ac425002c2bf5b90aab14db5fce1bf77bb680a9 100644 --- a/test/built-ins/Array/prototype/flatten/null-undefined-elements.js +++ b/test/built-ins/Array/prototype/flatten/null-undefined-elements.js @@ -6,10 +6,10 @@ description: > arrays with null, and undefined includes: [compareArray.js] ---*/ -var a; +var a = [void 0]; -assert(compareArray(Array.prototype.flatten.call([1, null, void 0]), [1, null, undefined])); -assert(compareArray(Array.prototype.flatten.call([1,[null, void 0]]), [1, null, undefined])); -assert(compareArray(Array.prototype.flatten.call([[null, void 0], [null, void 0]]), [null, undefined, null, undefined])); -assert(compareArray(Array.prototype.flatten.call([1,[null, a = [void 0]]], 1), [1, null, a])); -assert(compareArray(Array.prototype.flatten.call([1,[null, [void 0]]], 2), [1, null, undefined])); +assert(compareArray([1, null, void 0].flatten(), [1, null, undefined])); +assert(compareArray([1,[null, void 0]].flatten(), [1, null, undefined])); +assert(compareArray([[null, void 0], [null, void 0]].flatten(), [null, undefined, null, undefined])); +assert(compareArray([1,[null, a]].flatten(1), [1, null, a])); +assert(compareArray([1,[null, a]].flatten(2), [1, null, undefined])); diff --git a/test/built-ins/Array/prototype/flatten/symbol-object-create-null-depth-throws.js b/test/built-ins/Array/prototype/flatten/symbol-object-create-null-depth-throws.js index b12046925dc7f2e319919c93afeb0a05ed53044a..38cfd65625bba70cd2ea0e74526056d97ec076c7 100644 --- a/test/built-ins/Array/prototype/flatten/symbol-object-create-null-depth-throws.js +++ b/test/built-ins/Array/prototype/flatten/symbol-object-create-null-depth-throws.js @@ -6,16 +6,11 @@ description: > if the argument is a Symbol or Object null, it throws exception ---*/ -var a = []; -var depthNum = Symbol(); - assert.throws(TypeError, function() { - a.flatten(depthNum); + [].flatten(Symbol()); }, 'symbol value'); -depthNum = Object.create(null); - assert.throws(TypeError, function() { - a.flatten(depthNum); + [].flatten(Object.create(null)); }, 'object create null');