static void FireFakeApplicationNotification()

in TwitterNetworkLayerTests/TNLRequestOperationTest.m [55:86]


static void FireFakeApplicationNotification(NSString *notificationName, NSTimeInterval delay)
{
    UIApplicationState newState = sFakeApplication.applicationState;
    BOOL updateStateAfterNotification = NO;
    if ([notificationName isEqualToString:UIApplicationWillResignActiveNotification]) {
        updateStateAfterNotification = YES;
        newState = UIApplicationStateInactive;
    } else if ([notificationName isEqualToString:UIApplicationWillEnterForegroundNotification]) {
        updateStateAfterNotification = YES;
        newState = UIApplicationStateInactive;
    } else if ([notificationName isEqualToString:UIApplicationDidBecomeActiveNotification]) {
        newState = UIApplicationStateActive;
    } else if ([notificationName isEqualToString:UIApplicationDidEnterBackgroundNotification]) {
        newState = UIApplicationStateBackground;
    }

    UIApplication *application = (id)sFakeApplication;
    dispatch_block_t block = ^{
        if (!updateStateAfterNotification) {
            sFakeApplication.applicationState = newState;
        }
        [[NSNotificationCenter defaultCenter] postNotificationName:notificationName object:application];
        if (updateStateAfterNotification) {
            sFakeApplication.applicationState = newState;
        }
    };
    if (delay > 0) {
        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delay * NSEC_PER_SEC)), dispatch_get_main_queue(), block);
    } else {
        block();
    }
}