Last active
August 13, 2016 17:08
-
-
Save Phillipus/6537635 to your computer and use it in GitHub Desktop.
Macros for blocking on asynchronous methods in iOS Unit Tests. See http://dadabeatnik.wordpress.com/2013/09/12/xcode-and-asynchronous-unit-testing/
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Macro - Set the flag for block completion | |
#define StartBlock() __block BOOL waitingForBlock = YES | |
// Macro - Set the flag to stop the loop | |
#define EndBlock() waitingForBlock = NO | |
// Macro - Wait and loop until flag is set | |
#define WaitUntilBlockCompletes() WaitWhile(waitingForBlock) | |
// Macro - Wait for condition to be NO/false in blocks and asynchronous calls | |
// Each test should have its own instance of a BOOL condition because of non-thread safe operations | |
#define WaitWhile(condition) \ | |
do { \ | |
while(condition) { \ | |
[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; \ | |
} \ | |
} while(0) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment