Skip to content

Instantly share code, notes, and snippets.

@Phillipus
Last active August 13, 2016 17:08
Show Gist options
  • Star 7 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save Phillipus/6537635 to your computer and use it in GitHub Desktop.
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/
// 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