Files
JavaScript/Data-Structures/Linked-List/test/SinglyLinkedList.test.js
Keramot UL Islam 29a3ab73bc merge: Iterator and log methods added for linked lists (#891)
* iterator, log methods added in SL

* iterator, log methods added in DL

* test file added for DoublyLL

* format issue fix
2022-02-18 20:13:45 +05:30

192 lines
4.1 KiB
JavaScript

import { LinkedList } from '../SinglyLinkedList'
describe('SinglyLinkedList', () => {
it('Check addLast', () => {
const list = new LinkedList()
expect(list.get()).toEqual([])
list.addLast(1)
expect(list.get()).toEqual([1])
list.addLast(2)
expect(list.get()).toEqual([1, 2])
})
it('Check addFirst', () => {
const list = new LinkedList()
expect(list.get()).toEqual([])
list.addFirst(1)
expect(list.get()).toEqual([1])
list.addFirst(2)
expect(list.get()).toEqual([2, 1])
})
it('Check addAt', () => {
const list = new LinkedList()
expect(list.get()).toEqual([])
list.addAt(0, 10)
expect(list.get()).toEqual([10])
list.addAt(1, 20)
expect(list.get()).toEqual([10, 20])
list.addAt(1, 30)
expect(list.get()).toEqual([10, 30, 20])
list.addAt(3, 40)
expect(list.get()).toEqual([10, 30, 20, 40])
})
it('Check removeLast', () => {
const list = new LinkedList()
list.addLast(1)
list.addLast(2)
expect(list.get()).toEqual([1, 2])
list.removeLast()
expect(list.get()).toEqual([1])
list.removeLast()
expect(list.get()).toEqual([])
})
it('Check removeFirst', () => {
const list = new LinkedList()
list.addLast(1)
list.addLast(2)
expect(list.get()).toEqual([1, 2])
list.removeFirst()
expect(list.get()).toEqual([2])
list.removeFirst()
expect(list.get()).toEqual([])
})
it('Check removeAt', () => {
const list = new LinkedList()
list.addLast(10)
list.addLast(20)
list.addLast(30)
list.addLast(40)
list.addLast(50)
expect(list.get()).toEqual([10, 20, 30, 40, 50])
list.removeAt(0)
expect(list.get()).toEqual([20, 30, 40, 50])
list.removeAt(3)
expect(list.get()).toEqual([20, 30, 40])
list.removeAt(1)
expect(list.get()).toEqual([20, 40])
})
it('Check remove', () => {
const list = new LinkedList()
list.addLast(10)
list.addLast(20)
list.addLast(30)
expect(list.get()).toEqual([10, 20, 30])
list.remove(20)
expect(list.get()).toEqual([10, 30])
list.remove(30)
expect(list.get()).toEqual([10])
})
it('Check indexOf', () => {
const list = new LinkedList()
list.addLast(10)
list.addLast(20)
list.addLast(30)
list.addLast(40)
list.addLast(50)
expect(list.indexOf(10)).toBe(0)
expect(list.indexOf(30)).toBe(2)
expect(list.indexOf(50)).toBe(4)
expect(list.indexOf(70)).toBe(-1)
})
it('Check elementAt', () => {
const list = new LinkedList()
list.addLast(10)
list.addLast(20)
list.addLast(30)
list.addLast(40)
list.addLast(50)
expect(list.elementAt(0)).toBe(10)
expect(list.elementAt(1)).toBe(20)
expect(list.elementAt(3)).toBe(40)
expect(list.elementAt(4)).toBe(50)
})
it('Check isEmpty', () => {
const list = new LinkedList()
expect(list.isEmpty()).toBe(true)
list.addLast(10)
list.addLast(20)
list.addLast(30)
list.addLast(40)
list.addLast(50)
expect(list.isEmpty()).toBe(false)
})
it('Check head', () => {
const list = new LinkedList()
expect(list.head()).toBe(null)
list.addLast(10)
expect(list.head()).toBe(10)
list.addLast(20)
expect(list.head()).toBe(10)
list.addFirst(30)
expect(list.head()).toBe(30)
})
it('Check size', () => {
const list = new LinkedList()
expect(list.size()).toBe(0)
list.addLast(10)
expect(list.size()).toBe(1)
list.addLast(20)
expect(list.size()).toBe(2)
list.removeFirst()
expect(list.size()).toBe(1)
})
it('Check Iterator', () => {
const list = new LinkedList()
let iterate = list.iterator()
expect(iterate).toBe(-1)
const arr = [10, 20, 5]
list.addLast(arr[0])
list.addLast(arr[1])
list.addLast(arr[2])
iterate = list.iterator()
for (let i = 0; i < arr.length; i++) {
expect(iterate.next().value).toBe(arr[i])
}
expect(iterate.next().value).toBe(undefined)
iterate = list.iterator()
let count = 0
for (const item of iterate) {
expect(item).toBe(arr[count])
count++
}
})
})