Refactor Cycledetection.js and added it's test. (#1099)

This commit is contained in:
Kartik Kapgate
2022-09-15 12:22:44 +05:30
committed by GitHub
parent d1152144aa
commit cf0593f430
2 changed files with 39 additions and 16 deletions

View File

@ -0,0 +1,31 @@
import { detectCycle } from '../CycleDetection'
import { Node } from '../SinglyLinkedList'
describe('Detect Cycle', () => {
it('should detect loop and return true', () => {
// Creating list and making a loop
const headNode = new Node(10)
headNode.next = new Node(20)
headNode.next.next = new Node(30)
headNode.next.next.next = new Node(40)
headNode.next.next.next.next = headNode
expect(detectCycle(headNode)).toEqual(true)
})
it('should not detect a loop and return false', () => {
// Case 0: When head is null, there is no loop.
expect(detectCycle(null)).toEqual(false)
const headNode = new Node(10)
// Case 1: List with single node doesn't have any loop
expect(detectCycle(headNode)).toEqual(false)
headNode.next = new Node(20)
headNode.next.next = new Node(30)
headNode.next.next.next = new Node(40)
headNode.next.next.next.next = new Node(50)
// Case 2: List not having any loops
expect(detectCycle(headNode)).toEqual(false)
})
})