Spaces:
Sleeping
Sleeping
import { MinHeap } from './minheap'; | |
describe('MinHeap', () => { | |
const compareNumbers = (a: number, b: number): boolean => a > b; | |
test('should initialize an empty heap', () => { | |
const heap = MinHeap(compareNumbers); | |
expect(heap.length()).toBe(0); | |
expect(heap.peek()).toBeUndefined(); | |
}); | |
test('should insert values correctly and maintain the min property', () => { | |
const heap = MinHeap(compareNumbers); | |
heap.push(3); | |
heap.push(1); | |
heap.push(4); | |
heap.push(2); | |
expect(heap.peek()).toBe(1); | |
expect(heap.length()).toBe(4); | |
}); | |
test('should pop values correctly and maintain the min property', () => { | |
const heap = MinHeap(compareNumbers); | |
heap.push(3); | |
heap.push(1); | |
heap.push(4); | |
heap.push(2); | |
expect(heap.pop()).toBe(1); | |
expect(heap.length()).toBe(3); | |
expect(heap.peek()).toBe(2); | |
expect(heap.pop()).toBe(2); | |
expect(heap.length()).toBe(2); | |
expect(heap.peek()).toBe(3); | |
}); | |
test('should handle popping from an empty heap', () => { | |
const heap = MinHeap(compareNumbers); | |
expect(heap.pop()).toBeUndefined(); | |
expect(heap.length()).toBe(0); | |
expect(heap.peek()).toBeUndefined(); | |
}); | |
test('should handle peeking from an empty heap', () => { | |
const heap = MinHeap(compareNumbers); | |
expect(heap.peek()).toBeUndefined(); | |
}); | |
test('should handle custom comparison functions', () => { | |
const compareStringsByLength = (a: string, b: string): boolean => a.length > b.length; | |
const heap = MinHeap(compareStringsByLength); | |
heap.push('apple'); | |
heap.push('banana'); | |
heap.push('cherry'); | |
expect(heap.peek()).toBe('apple'); | |
heap.push('kiwi'); | |
expect(heap.peek()).toBe('kiwi'); | |
}); | |
}); | |