{ \
body \
} \
return nullptr; \
} \
static void test_##name() { \
MAKE_ENGINE(mm, engine); \
MAKE_CONTEXT(engine, ctx); \
srn_fiber_spawn(ctx, test_##name##_fiber, (arg_expr)); \
srn_sched_run(sched, 1); \
RELEASE_CONTEXT(ctx); \
SHUTDOWN_ENGINE(mm, engine); \
}
50#define TEST_IN_FIBER_WITH(name, arg_expr, body) \
51 static srn_fiber_result_t test_##name##_fiber(srn_context_t *ctx, void *arg) { \
52 { \
53 body \
54 } \
55 return nullptr; \
56 } \
57 static void test_##name() { \
58 MAKE_ENGINE(mm, engine); \
59 MAKE_CONTEXT(engine, ctx); \
60 srn_scheduler_t *sched = engine->scheduler; \
61 srn_fiber_spawn(ctx, test_##name##_fiber, (arg_expr)); \
62 srn_sched_run(sched, 1); \
63 RELEASE_CONTEXT(ctx); \
64 SHUTDOWN_ENGINE(mm, engine); \
65 }