From e47609d7465a8ef8ce63aac584946666ff9e2513 Mon Sep 17 00:00:00 2001 From: LeoSL Date: Thu, 3 Oct 2019 21:38:04 -0400 Subject: [PATCH 1/2] Add unit tests to Max Product of 3 numbers problem --- .../max-product-of-3-numbers/index.js | 2 ++ .../max-product-of-3-numbers.test.js | 33 +++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 src/_Problems_/max-product-of-3-numbers/max-product-of-3-numbers.test.js diff --git a/src/_Problems_/max-product-of-3-numbers/index.js b/src/_Problems_/max-product-of-3-numbers/index.js index 5c3febc8..f5f1f70c 100644 --- a/src/_Problems_/max-product-of-3-numbers/index.js +++ b/src/_Problems_/max-product-of-3-numbers/index.js @@ -63,3 +63,5 @@ function maxProductof3NumbersII(arr) { return p1> p2 ? p1 : p2; } + +module.exports = { maxProductof3Numbers, maxProductof3NumbersII }; diff --git a/src/_Problems_/max-product-of-3-numbers/max-product-of-3-numbers.test.js b/src/_Problems_/max-product-of-3-numbers/max-product-of-3-numbers.test.js new file mode 100644 index 00000000..4832e0e5 --- /dev/null +++ b/src/_Problems_/max-product-of-3-numbers/max-product-of-3-numbers.test.js @@ -0,0 +1,33 @@ +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); + }); +}); From 5dca0897cda59a2fc1ddeee423e889d5cb424fbf Mon Sep 17 00:00:00 2001 From: LeoSL Date: Fri, 4 Oct 2019 14:48:12 -0400 Subject: [PATCH 2/2] Add test case when the array length is less than 3 --- .../max-product-of-3-numbers.test.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/_Problems_/max-product-of-3-numbers/max-product-of-3-numbers.test.js b/src/_Problems_/max-product-of-3-numbers/max-product-of-3-numbers.test.js index 4832e0e5..fd29122e 100644 --- a/src/_Problems_/max-product-of-3-numbers/max-product-of-3-numbers.test.js +++ b/src/_Problems_/max-product-of-3-numbers/max-product-of-3-numbers.test.js @@ -30,4 +30,10 @@ describe("Maximum Product of three numbers", () => { 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(); + }); });

AltStyle によって変換されたページ (->オリジナル) /