const { maxProductof3Numbers, maxProductof3NumbersII } = require("."); describe("Maximum Product of three numbers", () => { it("throws an error with no Array is passed", () => { expect(() => { maxProductof3Numbers("xunda"); }).toThrowError(); expect(() => { maxProductof3NumbersII("xunda"); }).toThrowError(); }); it("returns the product of an array with 3 numbers", () => { expect(maxProductof3Numbers([1, 2, 3])).toEqual(6); expect(maxProductof3NumbersII([1, 2, 3])).toEqual(6); }); it("returns the product of an array with positive and negative numbers", () => { expect(maxProductof3Numbers([-10, -10, 2, 3])).toEqual(300); expect(maxProductof3NumbersII([-10, -10, 2, 3])).toEqual(300); }); it("returns the product of an array with negative numbers", () => { expect(maxProductof3Numbers([-10, -1, -2, -10])).toEqual(-20); expect(maxProductof3NumbersII([-10, -1, -2, -10])).toEqual(-20); }); it("returns the proper calculation if the array is large", () => { const largeArray = [100, 100, 100, 12, 3, 45, 4, 3, 7, 8, 1, 3, 7, 8, 1, 4, 3, 7, 8, 1, 3, 7, 8, 1, 12, 3, 45, 4, 3, 7, 8, 1, 3, 7, 8, 1, 4, 3, 7, 8, 1, 3, 7, 8, 1, 4, 3, 7, 8, 1, 3, 7, 8, 1, 12, 3, 45, 4, 3, 7, 8, 1, 3, 7, 8, 1, 4, 3, 7, 8, 1, 3, 7, 8, 45, 4, 3, 7, 8, 1, 3, 7, 8, 3, 45, 4, 3, 7, 8, 1, 3, 7, 8, 1, 4, 3, 7, 8, 1, 3, 7, 8, 1, 12, 3, 45, 4, 3, 7, 8, 1, 3, 7, 8, 1, 4, 3, 7, 8, 1, 3, 7, 8, 1, 4, 3, 7, 8, 1, 3, 7, 8, 1, 12, 3, 45, 4, 3, 7, 8, 1, 3, 7, 8, 1, 4, 3, 7, 8, 1, 3, 7, 8, 45, 4, 3, 7, 8, 1, 3, 7, 8]; expect(maxProductof3Numbers(largeArray)).toEqual(100 * 100 * 100); expect(maxProductof3NumbersII(largeArray)).toEqual(100 * 100 * 100); }); it("returns an error if there are less than 3 numbers", () => { expect(() => { maxProductof3Numbers([-10, -1]); }).toThrowError(); }); });