background-removal-js
Version:
background-removal-js
32 lines (26 loc) • 1.02 kB
JavaScript
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)
})
})