MCPcopy Create free account
hub / github.com/boostorg/asio / alloc_test

Function alloc_test

test/experimental/coro/allocator.cpp:67–104  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

65}
66
67void alloc_test()
68{
69 std::vector<std::pair<void*, std::size_t>> allocs, deallocs;
70 boost::asio::io_context ctx;
71 bool ran = false;
72
73 {
74 auto pp = alloc_test_impl(ctx, 42, std::allocator_arg, {allocs, deallocs}, 42.);
75
76 BOOST_ASIO_CHECK(allocs.size() == 1u);
77 BOOST_ASIO_CHECK(deallocs.empty());
78
79 pp.async_resume([&](auto e){ran = true; BOOST_ASIO_CHECK(!e);});
80 ctx.run();
81 BOOST_ASIO_CHECK(deallocs.size() == 0u);
82 }
83 ctx.restart();
84 ctx.run();
85 BOOST_ASIO_CHECK(deallocs.size() == 1u);
86 BOOST_ASIO_CHECK(allocs == deallocs);
87
88 BOOST_ASIO_CHECK(ran);
89
90 ran = false;
91
92 auto p = boost::asio::experimental::detail::post_coroutine(
93 ctx,
94 boost::asio::bind_allocator(tracked_allocator{allocs, deallocs}, [&]{ran = true;})).handle;
95 BOOST_ASIO_CHECK(allocs.size() == 2u);
96 BOOST_ASIO_CHECK(deallocs.size() == 1u);
97 p.resume();
98 BOOST_ASIO_CHECK(allocs.size() == 3u);
99 BOOST_ASIO_CHECK(deallocs.size() == 2u);
100 ctx.restart();
101 ctx.run();
102
103 BOOST_ASIO_CHECK(allocs == deallocs);
104}
105
106} // namespace coro
107

Callers

nothing calls this directly

Calls 8

alloc_test_implFunction · 0.85
post_coroutineFunction · 0.85
restartMethod · 0.80
sizeMethod · 0.45
emptyMethod · 0.45
async_resumeMethod · 0.45
runMethod · 0.45
resumeMethod · 0.45

Tested by

no test coverage detected