///|
test {
let queue1 : @priority_queue.PriorityQueue[Int] = PriorityQueue([])
let queue2 = @priority_queue.from_array([1, 2, 3])
@json.json_inspect(queue1, content=[])
@json.json_inspect(queue2, content=[3, 2, 1])
}///|
test {
// Create a min-heap by wrapping elements with @cmp.Reverse
let min_heap = @priority_queue.from_array([
@cmp.Reverse(5),
Reverse(2),
Reverse(8),
Reverse(1),
])
// The smallest wrapped value (1) should be at the top
debug_inspect(min_heap.peek(), content="Some(Reverse(1))")
}///|
test {
let pq = @priority_queue.from_array([1, 2, 3, 4, 5])
@test.assert_eq(pq.length(), 5)
}///|
test {
let pq : @priority_queue.PriorityQueue[Int] = PriorityQueue([])
@test.assert_eq(pq.is_empty(), true)
}///|
test {
let pq = @priority_queue.from_array([1, 2, 3, 4, 5])
@test.assert_eq(pq.peek(), Some(5))
}///|
test {
let pq : @priority_queue.PriorityQueue[Int] = PriorityQueue([])
pq.push(1)
pq.push(2)
@test.assert_eq(pq.peek(), Some(2))
}///|
test {
let pq = @priority_queue.from_array([5, 4, 3, 2, 1])
@test.assert_eq(pq.pop(), Some(5))
}///|
test {
let pq = @priority_queue.from_array([5, 4, 3, 2, 1])
@test.assert_eq(pq.length(), 5)
}///|
test {
let pq = @priority_queue.from_array([1, 2, 3, 4, 5])
pq.clear()
@test.assert_eq(pq.is_empty(), true)
}///|
test {
let pq = @priority_queue.from_iter([3, 1, 2].iter())
@test.assert_eq(pq.peek(), Some(3))
}///|
test {
let pq = @priority_queue.from_array([3, 1, 4, 1, 5])
let arr = pq.to_array()
// to_array returns elements sorted by priority (descending)
@debug.assert_eq(arr, [5, 4, 3, 1, 1])
}///|
test {
let pq = @priority_queue.from_array([1, 2, 3])
let pq2 = pq.copy()
@test.assert_eq(pq2.pop(), Some(3))
@test.assert_eq(pq.length(), 3) // original unchanged
}type PriorityQueue[A]impl Default for PriorityQueue[K]impl Show for PriorityQueue[A]impl ToJson for PriorityQueue[A]impl Debug for PriorityQueue[A]#as_free_fn(of, deprecated="Use from_array instead")
#alias(of, deprecated="Use from_array instead")
#as_free_fn(from_array)
#alias(from_array)
fn[A : Compare + Eq] PriorityQueue::PriorityQueue(arr : ArrayView[A]) -> PriorityQueue[A]test {
let queue = @priority_queue.PriorityQueue([1, 2, 3, 4, 5])
@test.assert_eq(queue.length(), 5)
}test {
let queue = @priority_queue.from_array([1, 2, 3, 4])
queue.clear()
@test.assert_eq(queue.length(), 0)
}#alias(clone, deprecated="`clone` is deprecated, use `copy` instead")
fn[A] PriorityQueue::copy(self : PriorityQueue[A]) -> PriorityQueue[A]test {
let queue = @priority_queue.from_array([1, 2, 3, 4])
let queue2 = queue.copy()
inspect(queue2.length(), content="4")
}#as_free_fn(from_iterator, deprecated="Use PriorityQueue::from_iter instead.")
#alias(from_iterator, deprecated="`from_iterator` is deprecated, use `from_iter` instead")
#as_free_fn
fn[K : Compare + Eq] PriorityQueue::from_iter(iter : Iter[K]) -> PriorityQueue[K]test {
let queue : @priority_queue.PriorityQueue[Int] = PriorityQueue([])
@test.assert_eq(queue.is_empty(), true)
}#alias(iterator, deprecated="`iterator` is deprecated, use `iter` instead")
fn[A : Compare + Eq] PriorityQueue::iter(self : PriorityQueue[A]) -> Iter[A]#as_free_fn(deprecated="Use `PriorityQueue([])` instead")
#deprecated("Use `PriorityQueue([])` instead")
fn[A] PriorityQueue::new() -> PriorityQueue[A]test {
let queue = @priority_queue.from_array([1, 2, 3, 4])
let first = queue.peek() // Some(4)
@test.assert_eq(first, Some(4))
}test {
let queue = @priority_queue.from_array([1, 2, 3, 4])
let first = queue.pop() // Some(4)
@debug.debug_inspect(first, content="Some(4)")
inspect(queue.length(), content="3")
}test {
let queue = @priority_queue.PriorityQueue([])
queue.push(1)
@test.assert_eq(queue.length(), 1)
}Install
Installed by default