|
@@ -62,6 +62,9 @@ fn Queue(comptime T: type) type {
|
|
|
|
|
|
const IntQueue = Queue(i32);
|
|
const IntQueue = Queue(i32);
|
|
|
|
|
|
|
|
+const Data = struct { val: usize };
|
|
|
|
+const StructQueue = Queue(*Data);
|
|
|
|
+
|
|
pub fn main() !void {
|
|
pub fn main() !void {
|
|
var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator);
|
|
var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator);
|
|
defer arena.deinit();
|
|
defer arena.deinit();
|
|
@@ -90,7 +93,27 @@ test "filled queue" {
|
|
try q.enqueue(20);
|
|
try q.enqueue(20);
|
|
try q.enqueue(30);
|
|
try q.enqueue(30);
|
|
if (q.dequeue()) |value| {
|
|
if (q.dequeue()) |value| {
|
|
- try std.testing.expect(value == 20);
|
|
|
|
|
|
+ std.testing.expect(value == 20) catch {
|
|
|
|
+ std.debug.print("filled queue: got error: 20=={}", .{value});
|
|
|
|
+ };
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+test "struct* queue" {
|
|
|
|
+ var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator);
|
|
|
|
+ defer arena.deinit();
|
|
|
|
+
|
|
|
|
+ const allocator = arena.allocator();
|
|
|
|
+
|
|
|
|
+ var q = StructQueue.new(allocator);
|
|
|
|
+ for (0..5) |idx| {
|
|
|
|
+ var d = Data{ .val = idx };
|
|
|
|
+ try q.enqueue(&d);
|
|
|
|
+ }
|
|
|
|
+ if (q.dequeue()) |value| {
|
|
|
|
+ std.testing.expect(value.*.val == 0) catch {
|
|
|
|
+ std.debug.print("struct* queue: got error: 0=={}", .{value.*.val});
|
|
|
|
+ };
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|