MCPcopy Create free account
hub / github.com/HelenOS/helenos / test_packaged_task

Method test_packaged_task

uspace/lib/cpp/src/__bits/test/future.cpp:280–314  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

278 }
279
280 void future_test::test_packaged_task()
281 {
282 std::packaged_task<int(int)> pt1{};
283 test("default constructed packaged_task not valid", !pt1.valid());
284
285 pt1 = std::packaged_task<int(int)>{
286 [](int x){
287 return x + 1;
288 }
289 };
290 test("packaged_task default constructed and move assigned valid", pt1.valid());
291
292 auto f1 = pt1.get_future();
293 test("future from valid packaged_task valid", f1.valid());
294
295 pt1(10);
296 test_eq("result stored in future correct", f1.get(), 11);
297
298 std::packaged_task<int()> pt2{
299 [](){
300 return 42;
301 }
302 };
303 auto f2 = pt2.get_future();
304 pt2();
305 test_eq("no argument packaged_task return value correct", f2.get(), 42);
306
307 pt2.reset();
308 test_eq("reset causes refcount decrement", f2.__state()->refs(), 1);
309
310 auto f3 = pt2.get_future();
311 pt2();
312 test_eq("invocation after reset returns correct value", f3.get(), 42);
313 test("reset recreates state", (f2.__state() != f3.__state()));
314 }
315
316 void future_test::test_shared_future()
317 {

Callers

nothing calls this directly

Calls 6

refsMethod · 0.80
validMethod · 0.45
get_futureMethod · 0.45
getMethod · 0.45
resetMethod · 0.45
__stateMethod · 0.45

Tested by

no test coverage detected