MCPcopy Create free account
hub / github.com/alibaba/async_simple / TEST_F

Function TEST_F

async_simple/coro/test/LatchTest.cpp:34–75  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

32};
33
34TEST_F(LatchTest, testWorkDone) {
35 struct job {
36 const std::string name;
37 std::string product{"not worked"};
38
39 } jobs[] = {{"annika"}, {"buru"}, {"chuck"}};
40
41 Latch work_done{std::size(jobs)};
42 Latch start_up{1};
43
44 auto work = [&](job& my_job) -> Lazy<> {
45 co_await start_up.wait();
46 EXPECT_EQ(my_job.product, my_job.name + " worked");
47
48 my_job.product = my_job.name + " done";
49 co_await work_done.count_down();
50 };
51
52 std::cout << "Work starting... ";
53 for (auto& job : jobs) {
54 auto lazy = work(job).via(&_executor);
55 lazy.detach();
56 }
57
58 auto wait_lazy = [&]() -> Lazy<> {
59 std::cout << "done\n";
60 for (auto& job : jobs) {
61 job.product = job.name + " worked";
62 }
63 co_await start_up.count_down();
64
65 co_await work_done.wait();
66
67 std::cout << "Workers finished... ";
68 for (auto const& job : jobs) {
69 EXPECT_EQ(job.product, job.name + " done");
70 }
71 std::cout << "done\n";
72 };
73
74 syncAwait(wait_lazy().via(&_executor));
75}
76
77} // namespace async_simple::coro

Callers

nothing calls this directly

Calls 7

sizeFunction · 0.85
workClass · 0.85
syncAwaitFunction · 0.85
count_downMethod · 0.80
viaMethod · 0.80
waitMethod · 0.45
detachMethod · 0.45

Tested by

no test coverage detected