| ... | ... | @@ -100,7 +100,7 @@ pub fn PriorityQueue(comptime T: type, comptime Context: type, comptime compareF |
| 100 | 100 | const item = self.items[index]; |
| 101 | 101 | self.items[index] = last; |
| 102 | 102 | self.len -= 1; |
| 103 | | siftDown(self, 0); |
| 103 | siftDown(self, index); |
| 104 | 104 | return item; |
| 105 | 105 | } |
| 106 | 106 | |
| ... | ... | @@ -460,22 +460,25 @@ test "std.PriorityQueue: remove at index" { |
| 460 | 460 | var queue = PQlt.init(testing.allocator, {}); |
| 461 | 461 | defer queue.deinit(); |
| 462 | 462 | |
| 463 | | try queue.add(3); |
| 464 | | try queue.add(2); |
| 465 | | try queue.add(1); |
| 463 | const items = [_]u32{ 2, 1, 8, 9, 3, 4, 5 }; |
| 464 | for (items) |e| { |
| 465 | _ = try queue.add(e); |
| 466 | } |
| 466 | 467 | |
| 467 | 468 | var it = queue.iterator(); |
| 468 | | var elem = it.next(); |
| 469 | 469 | var idx: usize = 0; |
| 470 | | const two_idx = while (elem != null) : (elem = it.next()) { |
| 471 | | if (elem.? == 2) |
| 470 | const two_idx = while (it.next()) |elem| { |
| 471 | if (elem == 2) |
| 472 | 472 | break idx; |
| 473 | 473 | idx += 1; |
| 474 | 474 | } else unreachable; |
| 475 | | |
| 475 | var sorted_items = [_]u32{ 1, 3, 4, 5, 8, 9 }; |
| 476 | 476 | try expectEqual(queue.removeIndex(two_idx), 2); |
| 477 | | try expectEqual(queue.remove(), 1); |
| 478 | | try expectEqual(queue.remove(), 3); |
| 477 | |
| 478 | var i: usize = 0; |
| 479 | while (queue.removeOrNull()) |n| : (i += 1) { |
| 480 | try expectEqual(n, sorted_items[i]); |
| 481 | } |
| 479 | 482 | try expectEqual(queue.removeOrNull(), null); |
| 480 | 483 | } |
| 481 | 484 | |