authorgravatar for 117967760+mochalins@users.noreply.github.commochalins <117967760+mochalins@users.noreply.github.com> 2024-07-09 11:25:19+09:00
committergravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2024-07-09 21:15:29-04:00
logc8e00953623bd3f4a12c8654a83a1b6cac2b2b2f
tree162f9e336f76be637613f450c4ab0caadf99c2ec
parent6446596ba106f7ec528eab3ac64e8f3dba5dfd4f

test: Add `spawn` behavior test


2 files changed, 22 insertions(+), 0 deletions(-)

lib/std/Thread.zig+1
...@@ -1465,6 +1465,7 @@ test {...@@ -1465,6 +1465,7 @@ test {
1465 _ = Semaphore;1465 _ = Semaphore;
1466 _ = Condition;1466 _ = Condition;
1467 _ = RwLock;1467 _ = RwLock;
1468 _ = Pool;
1468}1469}
14691470
1470fn testIncrementNotify(value: *usize, event: *ResetEvent) void {1471fn testIncrementNotify(value: *usize, event: *ResetEvent) void {
lib/std/Thread/Pool.zig+21
...@@ -254,6 +254,27 @@ pub fn spawn(pool: *Pool, comptime func: anytype, args: anytype) !void {...@@ -254,6 +254,27 @@ pub fn spawn(pool: *Pool, comptime func: anytype, args: anytype) !void {
254 pool.cond.signal();254 pool.cond.signal();
255}255}
256256
257test spawn {
258 const TestFn = struct {
259 fn checkRun(completed: *bool) void {
260 completed.* = true;
261 }
262 };
263
264 var completed: bool = false;
265
266 {
267 var pool: Pool = undefined;
268 try pool.init(.{
269 .allocator = std.testing.allocator,
270 });
271 defer pool.deinit();
272 try pool.spawn(TestFn.checkRun, .{&completed});
273 }
274
275 try std.testing.expectEqual(true, completed);
276}
277
257fn worker(pool: *Pool) void {278fn worker(pool: *Pool) void {
258 pool.mutex.lock();279 pool.mutex.lock();
259 defer pool.mutex.unlock();280 defer pool.mutex.unlock();