11
11
#include < filesystem>
12
12
#include < chrono>
13
13
14
+ #include " TestGlobal.h"
15
+
14
16
using namespace std ::literals;
15
17
using namespace std ::chrono;
16
18
@@ -336,41 +338,41 @@ static auto checkDispatchToDifferentQueue() -> DispatchTask<> {
336
338
return 1 ;
337
339
});
338
340
CHECK (i == 1 );
339
- CHECK (!NSThread . isMainThread );
341
+ CHECK (!isMainQueue () );
340
342
341
343
i = co_await co_dispatch (conq, []() {
342
344
[NSThread sleepForTimeInterval: 0.2 ];
343
345
return 2 ;
344
346
}).resumeOnMainQueue ();
345
347
CHECK (i == 2 );
346
- CHECK (NSThread . isMainThread );
348
+ CHECK (isMainQueue () );
347
349
348
350
co_await resumeOn (conq);
349
- CHECK (!NSThread . isMainThread );
351
+ CHECK (!isMainQueue () );
350
352
351
353
co_await resumeOnMainQueue ();
352
- CHECK (NSThread . isMainThread );
354
+ CHECK (isMainQueue () );
353
355
354
356
co_await resumeOn (conq);
355
- CHECK (!NSThread . isMainThread );
357
+ CHECK (!isMainQueue () );
356
358
357
359
co_await resumeOnMainQueue (dispatch_time (DISPATCH_TIME_NOW, nanoseconds (200ms).count ()));
358
- CHECK (NSThread . isMainThread );
360
+ CHECK (isMainQueue () );
359
361
360
362
co_await resumeOn (conq, dispatch_time (DISPATCH_TIME_NOW, nanoseconds (200ms).count ()));
361
- CHECK (!NSThread . isMainThread );
363
+ CHECK (!isMainQueue () );
362
364
363
365
i = co_await delay (0.2 , co_dispatch (dispatch_get_main_queue (), []() {
364
366
return 3 ;
365
367
}));
366
368
CHECK (i == 3 );
367
- CHECK (!NSThread . isMainThread );
369
+ CHECK (!isMainQueue () );
368
370
369
371
i = co_await delay (0.2 , co_dispatch (conq, []() {
370
372
return 4 ;
371
373
}).resumeOn (dispatch_get_main_queue ()));
372
374
CHECK (i == 4 );
373
- CHECK (NSThread . isMainThread );
375
+ CHECK (isMainQueue () );
374
376
}
375
377
376
378
static auto checkMakeAwaitable () -> DispatchTask<> {
@@ -497,7 +499,7 @@ static auto checkTasks() -> DispatchTask<> {
497
499
}
498
500
499
501
co_await resumeOnMainQueue ();
500
- CHECK (NSThread . isMainThread );
502
+ CHECK (isMainQueue () );
501
503
502
504
503
505
auto coro = []() -> DispatchTask<int > {
@@ -508,13 +510,13 @@ static auto checkTasks() -> DispatchTask<> {
508
510
};
509
511
510
512
co_await coro ().resumeOnMainQueue ();
511
- CHECK (NSThread . isMainThread );
513
+ CHECK (isMainQueue () );
512
514
513
515
co_await coro ().resumeOnMainQueue (dispatch_time (DISPATCH_TIME_NOW, nanoseconds (200ms).count ()));
514
- CHECK (NSThread . isMainThread );
516
+ CHECK (isMainQueue () );
515
517
516
518
co_await delay (0.2 , coro ().resumeOnMainQueue (dispatch_time (DISPATCH_TIME_NOW, nanoseconds (1ms).count ())));
517
- CHECK (NSThread . isMainThread );
519
+ CHECK (isMainQueue () );
518
520
}
519
521
520
522
static auto checkGenerator () -> DispatchTask<> {
@@ -531,7 +533,7 @@ static auto checkGenerator() -> DispatchTask<> {
531
533
532
534
std::vector<int > res;
533
535
for (auto it = co_await generate ().resumingOnMainQueue ().beginOn (conq); it; co_await it.next ()) {
534
- CHECK (NSThread . isMainThread );
536
+ CHECK (isMainQueue () );
535
537
res.push_back (*it);
536
538
}
537
539
CHECK (res == std::vector{1 , 2 , 3 });
@@ -543,7 +545,7 @@ static auto checkGenerator() -> DispatchTask<> {
543
545
};
544
546
std::vector<int > res;
545
547
for (auto it = co_await generate ().begin (); it; co_await it.next ()) {
546
- CHECK (NSThread . isMainThread );
548
+ CHECK (isMainQueue () );
547
549
res.push_back (*it);
548
550
}
549
551
CHECK (res.empty ());
@@ -699,13 +701,18 @@ static auto checkIO() -> DispatchTask<> {
699
701
}
700
702
701
703
TEST_CASE (" CoDispatchTests" ) {
702
- []() -> DispatchTask<> {
703
- co_await checkReturnPropagation ();
704
- co_await checkDispatchToDifferentQueue ();
705
- co_await checkMakeAwaitable ();
706
- co_await checkTasks ();
707
- co_await checkGenerator ();
708
- co_await checkIO ();
709
- }();
704
+ startAsync ();
705
+ dispatch_async (dispatch_get_main_queue (), ^ {
706
+ []() -> DispatchTask<> {
707
+ co_await checkReturnPropagation ();
708
+ co_await checkDispatchToDifferentQueue ();
709
+ co_await checkMakeAwaitable ();
710
+ co_await checkTasks ();
711
+ co_await checkGenerator ();
712
+ co_await checkIO ();
713
+ endAsync ();
714
+ }();
715
+ });
716
+ waitForNoAsync ();
710
717
}
711
718
0 commit comments