From c47c084d256f8a0af25b06fa91cc704f14913b3b Mon Sep 17 00:00:00 2001 From: Luciano Medeiros Marcelino Date: Thu, 3 Oct 2019 21:06:10 -0400 Subject: [PATCH 1/2] Adjust output type to array in the documentation --- src/_Problems_/next-greater-element/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/_Problems_/next-greater-element/index.js b/src/_Problems_/next-greater-element/index.js index af7bc61b..af9dee5e 100644 --- a/src/_Problems_/next-greater-element/index.js +++ b/src/_Problems_/next-greater-element/index.js @@ -4,7 +4,7 @@ To keep it simple, the next greater element for the last or maximum value in the array is -1. Input: [4, 6, 3, 2, 8, 1] - Output: {6, 8, 8, 8, -1, -1} + Output: [6, 8, 8, 8, -1, -1] */ const Stack = require('../../_DataStructures_/Stack'); From 19f296383c072303d1f3a297953dcda031b36961 Mon Sep 17 00:00:00 2001 From: Luciano Medeiros Marcelino Date: Thu, 3 Oct 2019 21:06:30 -0400 Subject: [PATCH 2/2] Add tests fot next-greater-element --- src/_Problems_/next-greater-element/index.js | 3 +- .../next-greater-element.test.js | 38 +++++++++++++++++++ 2 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 src/_Problems_/next-greater-element/next-greater-element.test.js diff --git a/src/_Problems_/next-greater-element/index.js b/src/_Problems_/next-greater-element/index.js index af9dee5e..7d98dc7d 100644 --- a/src/_Problems_/next-greater-element/index.js +++ b/src/_Problems_/next-greater-element/index.js @@ -42,5 +42,4 @@ function nextGreaterElement(arr) { return nextGreater; } -// eslint-disable-next-line no-console -console.log(nextGreaterElement([4, 6, 3, 2, 8, 1])); +module.exports = { nextGreaterElement }; diff --git a/src/_Problems_/next-greater-element/next-greater-element.test.js b/src/_Problems_/next-greater-element/next-greater-element.test.js new file mode 100644 index 00000000..e729f0db --- /dev/null +++ b/src/_Problems_/next-greater-element/next-greater-element.test.js @@ -0,0 +1,38 @@ +const { nextGreaterElement } = require('.'); + +describe('Next greater element', () => { + it('returns next greater elements collection', () => { + const input = [4, 6, 3, 2, 8, 1] + const greaterElements = [6, 8, 8, 8, -1, -1] + + expect(nextGreaterElement(input)).toEqual(greaterElements); + }); + + it('returns and empty collection for an empty array', () => { + expect(nextGreaterElement([])).toEqual([]); + }); + + it('returns an array with -1 if the input has only one element', () => { + expect(nextGreaterElement([0])).toEqual([-1]); + }); + + it('returns a collection of -1 if there is no greater element', () => { + const input = [90, 40, 15, 7, -1, -10] + const greaterElements = [-1, -1, -1, -1, -1, -1] + + expect(nextGreaterElement(input)).toEqual(greaterElements); + }); + + it('uses -1 if the numbers are the same', () => { + const input = [90, 90] + const greaterElements = [-1, -1] + + expect(nextGreaterElement(input)).toEqual(greaterElements); + }); + + it('throws an error if the input is not an array', () => { + expect(() => { + nextGreaterElement('xunda') + }).toThrowError('Invalid Argument'); + }); +});