mirror of
https://github.com/TheAlgorithms/JavaScript.git
synced 2025-07-06 17:50:39 +08:00
56 lines
1.6 KiB
JavaScript
56 lines
1.6 KiB
JavaScript
import { MinPriorityQueue } from '../MinPriorityQueue'
|
|
|
|
describe('MinPriorityQueue', () => {
|
|
const values = [5, 2, 4, 1, 7, 6, 3, 8]
|
|
const capacity = values.length
|
|
let queue
|
|
|
|
beforeEach(() => {
|
|
queue = new MinPriorityQueue(capacity)
|
|
values.forEach(v => queue.insert(v))
|
|
})
|
|
|
|
it('Check heap ordering', () => {
|
|
const mockFn = jest.fn()
|
|
queue.print(mockFn)
|
|
|
|
expect(mockFn.mock.calls.length).toBe(1) // Expect one call
|
|
expect(mockFn.mock.calls[0].length).toBe(1) // Expect one argument
|
|
|
|
const heap = mockFn.mock.calls[0][0]
|
|
expect(heap.length).toBe(capacity)
|
|
expect(heap).toStrictEqual([1, 2, 3, 5, 7, 6, 4, 8])
|
|
})
|
|
|
|
it('heapSort() expected to reverse the heap ordering', () => {
|
|
queue.heapReverse()
|
|
const mockFn = jest.fn()
|
|
queue.print(mockFn)
|
|
|
|
expect(mockFn.mock.calls.length).toBe(1)
|
|
expect(mockFn.mock.calls[0].length).toBe(1)
|
|
|
|
const heap = mockFn.mock.calls[0][0]
|
|
expect(heap.length).toBe(capacity)
|
|
expect(heap).toStrictEqual([8, 7, 6, 5, 4, 3, 2, 1])
|
|
})
|
|
|
|
describe('delete() function work properly', () => {
|
|
it('return undefined if heap is empty', () => {
|
|
const minqueue = new MinPriorityQueue(capacity)
|
|
const min = minqueue.delete()
|
|
expect(min).toBe(undefined)
|
|
})
|
|
it('return min value and remove it', () => {
|
|
const sortedValues = values.sort()
|
|
let initialSize = queue.size
|
|
sortedValues.forEach((minValue, index) => {
|
|
const min = queue.delete()
|
|
expect(min).toBe(minValue)
|
|
expect(queue.size).toBe(--initialSize)
|
|
})
|
|
expect(queue.size).toBe(0)
|
|
})
|
|
})
|
|
})
|