From cfb0f3309d86d01bd4aa4cd026cf5f4f21db495a Mon Sep 17 00:00:00 2001 From: Breno Silva Date: Tue, 16 Feb 2021 17:32:51 -0300 Subject: [PATCH] LibJS: Implement tests for Array.prototype.flat --- .../builtins/Array/Array.prototype.flat.js | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 Userland/Libraries/LibJS/Tests/builtins/Array/Array.prototype.flat.js diff --git a/Userland/Libraries/LibJS/Tests/builtins/Array/Array.prototype.flat.js b/Userland/Libraries/LibJS/Tests/builtins/Array/Array.prototype.flat.js new file mode 100644 index 00000000000..faa4e2d0b45 --- /dev/null +++ b/Userland/Libraries/LibJS/Tests/builtins/Array/Array.prototype.flat.js @@ -0,0 +1,43 @@ +test("length is 0", () => { + expect(Array.prototype.flat).toHaveLength(0); +}); + +describe("normal behavior", () => { + test("basic functionality", () => { + var array1 = [1, 2, [3, 4]]; + var array2 = [1, 2, [3, 4, [5, 6]]]; + var array3 = [1, 2, [3, 4, [5, 6]]]; + expect(array1.flat()).toEqual([1, 2, 3, 4]); + expect(array2.flat()).toEqual([1, 2, 3, 4, [5, 6]]); + expect(array3.flat(2)).toEqual([1, 2, 3, 4, 5, 6]); + }); + + test("calls depth as infinity", () => { + var array1 = [1, 2, [3, 4, [5, 6, [7, 8]]]]; + expect(array1.flat(Infinity)).toEqual([1, 2, 3, 4, 5, 6, 7, 8]); + expect(array1.flat(-Infinity)).toEqual([1, 2, [3, 4, [5, 6, [7, 8]]]]); + }); + + test("calls depth as undefined", () => { + var array1 = [1, 2, [3, 4, [5, 6, [7, 8]]]]; + expect(array1.flat(undefined)).toEqual([1, 2, 3, 4, [5, 6, [7, 8]]]); + }); + + test("calls depth as null", () => { + var array1 = [1, 2, [3, 4, [5, 6, [7, 8]]]]; + expect(array1.flat(null)).toEqual([1, 2, [3, 4, [5, 6, [7, 8]]]]); + expect(array1.flat(NaN)).toEqual([1, 2, [3, 4, [5, 6, [7, 8]]]]); + }); + + test("calls depth as non integer", () => { + var array1 = [1, 2, [3, 4, [5, 6, [7, 8]]]]; + expect(array1.flat("depth")).toEqual([1, 2, [3, 4, [5, 6, [7, 8]]]]); + expect(array1.flat("2")).toEqual([1, 2, 3, 4, 5, 6, [7, 8]]); + expect(array1.flat(2.1)).toEqual([1, 2, 3, 4, 5, 6, [7, 8]]); + expect(array1.flat(0.7)).toEqual([1, 2, [3, 4, [5, 6, [7, 8]]]]); + expect(array1.flat([2])).toEqual([1, 2, 3, 4, 5, 6, [7, 8]]); + expect(array1.flat([2, 1])).toEqual([1, 2, [3, 4, [5, 6, [7, 8]]]]); + expect(array1.flat({})).toEqual([1, 2, [3, 4, [5, 6, [7, 8]]]]); + expect(array1.flat({ depth: 2 })).toEqual([1, 2, [3, 4, [5, 6, [7, 8]]]]); + }); +});