mirror of
https://github.com/hanzoai/core-js.git
synced 2026-09-24 16:58:15 +00:00
35 lines
1.3 KiB
JavaScript
35 lines
1.3 KiB
JavaScript
import { DESCRIPTORS, STRICT } from '../helpers/constants.js';
|
|
|
|
QUnit.test('Array#flat', assert => {
|
|
const { flat } = Array.prototype;
|
|
const { defineProperty } = Object;
|
|
assert.isFunction(flat);
|
|
assert.name(flat, 'flat');
|
|
assert.arity(flat, 0);
|
|
assert.looksNative(flat);
|
|
assert.nonEnumerable(Array.prototype, 'flat');
|
|
assert.deepEqual([].flat(), []);
|
|
const array = [1, [2, 3], [4, [5, 6]]];
|
|
assert.deepEqual(array.flat(0), array);
|
|
// eslint-disable-next-line unicorn/no-unnecessary-array-flat-depth -- testing
|
|
assert.deepEqual(array.flat(1), [1, 2, 3, 4, [5, 6]]);
|
|
assert.deepEqual(array.flat(), [1, 2, 3, 4, [5, 6]]);
|
|
assert.deepEqual(array.flat(2), [1, 2, 3, 4, 5, 6]);
|
|
assert.deepEqual(array.flat(3), [1, 2, 3, 4, 5, 6]);
|
|
assert.deepEqual(array.flat(-1), array);
|
|
assert.deepEqual(array.flat(Infinity), [1, 2, 3, 4, 5, 6]);
|
|
if (STRICT) {
|
|
assert.throws(() => flat.call(null), TypeError);
|
|
assert.throws(() => flat.call(undefined), TypeError);
|
|
}
|
|
if (DESCRIPTORS) {
|
|
assert.notThrows(() => flat.call(defineProperty({ length: -1 }, 0, {
|
|
enumerable: true,
|
|
get() {
|
|
throw new Error();
|
|
},
|
|
})).length === 0, 'uses ToLength');
|
|
}
|
|
assert.true('flat' in Array.prototype[Symbol.unscopables], 'In Array#@@unscopables');
|
|
});
|