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