forked from knaxus/problem-solving-javascript
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathloop-in-list.test.js
40 lines (35 loc) · 1.06 KB
/
loop-in-list.test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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);
});
});