|
| 1 | +// Copyright 2018 the V8 project authors. All rights reserved. |
| 2 | +// Use of this source code is governed by a BSD-style license that can be |
| 3 | +// found in the LICENSE file. |
| 4 | + |
| 5 | +// Flags: --harmony-array-flat |
| 6 | + |
| 7 | +assertEquals(Array.prototype.flat.length, 0); |
| 8 | +assertEquals(Array.prototype.flat.name, 'flat'); |
| 9 | + |
| 10 | +const input = [1, [2], [[3]]]; |
| 11 | + |
| 12 | +assertEquals(input.flat(), [1, 2, [3]]); |
| 13 | +assertEquals(input.flat(1), [1, 2, [3]]); |
| 14 | +assertEquals(input.flat(true), [1, 2, [3]]); |
| 15 | +assertEquals(input.flat(undefined), [1, 2, [3]]); |
| 16 | + |
| 17 | +assertEquals(input.flat(-Infinity), [1, [2], [[3]]]); |
| 18 | +assertEquals(input.flat(-1), [1, [2], [[3]]]); |
| 19 | +assertEquals(input.flat(-0), [1, [2], [[3]]]); |
| 20 | +assertEquals(input.flat(0), [1, [2], [[3]]]); |
| 21 | +assertEquals(input.flat(false), [1, [2], [[3]]]); |
| 22 | +assertEquals(input.flat(null), [1, [2], [[3]]]); |
| 23 | +assertEquals(input.flat(''), [1, [2], [[3]]]); |
| 24 | +assertEquals(input.flat('foo'), [1, [2], [[3]]]); |
| 25 | +assertEquals(input.flat(/./), [1, [2], [[3]]]); |
| 26 | +assertEquals(input.flat([]), [1, [2], [[3]]]); |
| 27 | +assertEquals(input.flat({}), [1, [2], [[3]]]); |
| 28 | +assertEquals( |
| 29 | + input.flat(new Proxy({}, {})), [1, [2], [[3]]]); |
| 30 | +assertEquals(input.flat((x) => x), [1, [2], [[3]]]); |
| 31 | +assertEquals( |
| 32 | + input.flat(String), [1, [2], [[3]]]); |
| 33 | + |
| 34 | +assertEquals(input.flat(2), [1, 2, 3]); |
| 35 | +assertEquals(input.flat(Infinity), [1, 2, 3]); |
| 36 | + |
| 37 | +assertThrows(() => { input.flat(Symbol()); }, TypeError); |
| 38 | +assertThrows(() => { input.flat(Object.create(null)); }, TypeError); |
0 commit comments