From 275917385af53147dac31990a02a196dcd428661 Mon Sep 17 00:00:00 2001 From: DaniloBarros Date: Mon, 7 Oct 2019 23:29:35 -0400 Subject: [PATCH] Add unit test to loop-in-list - Rename loop-in-list function name from `detech` to `detect` --- .../LinkedList/loop-in-list/index.js | 6 ++- .../loop-in-list/loop-in-list.test.js | 40 +++++++++++++++++++ 2 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 src/_DataStructures_/LinkedList/loop-in-list/loop-in-list.test.js diff --git a/src/_DataStructures_/LinkedList/loop-in-list/index.js b/src/_DataStructures_/LinkedList/loop-in-list/index.js index 26749191..849604b2 100644 --- a/src/_DataStructures_/LinkedList/loop-in-list/index.js +++ b/src/_DataStructures_/LinkedList/loop-in-list/index.js @@ -1,6 +1,6 @@ // Floyd’s Cycle-Finding Algorithm -function detechLoop(linkedList) { +function detectLoop(linkedList) { let slow = linkedList.getFirst(); let fast = linkedList.getFirst(); @@ -14,3 +14,7 @@ function detechLoop(linkedList) { } return false; } + +module.exports = { + detectLoop, +}; diff --git a/src/_DataStructures_/LinkedList/loop-in-list/loop-in-list.test.js b/src/_DataStructures_/LinkedList/loop-in-list/loop-in-list.test.js new file mode 100644 index 00000000..7f7afeca --- /dev/null +++ b/src/_DataStructures_/LinkedList/loop-in-list/loop-in-list.test.js @@ -0,0 +1,40 @@ +const { LinkedList } = require('../index'); +const { detectLoop } = require('.'); + +describe('Loop a LinkedList', () => { + let loopList = null; + let last = null; + beforeEach(() => { + loopList = new LinkedList(); + loopList.addAtBeginning('1'); + loopList.addAtEnd('2'); + loopList.addAtEnd('3'); + loopList.addAtEnd('4'); + loopList.addAtEnd('5'); + // Create loop in list + last = loopList.getLast(); + last.next = loopList.getFirst(); + }); + + it('Should break for empty list', () => { + loopList.delete(); + expect(() => detectLoop(loopList)).toThrow(TypeError); + }); + + it('Should return `true` when looping list', () => { + expect(detectLoop(loopList)).toEqual(true); + }); + + it('Should return `false` for non loop list', () => { + last.next = null; // remove loop in list + expect(detectLoop(loopList)).toEqual(false); + }); + + it('Should return `false` for non loop list', () => { + const list = new LinkedList(); + list.addAtBeginning('1'); + list.addAtEnd('1'); + list.addAtEnd('1'); + expect(detectLoop(list)).toEqual(false); + }); +});