From 30ac0ff87b594d7bca3a5cc2789ca415840ea0b1 Mon Sep 17 00:00:00 2001 From: "gtm.daemon" Date: Wed, 14 Apr 2010 17:08:30 +0000 Subject: [Author: dmaclach] Add utility code to make it faster, easier and more robust to spin runloops during tests. R=thomasvl DELTA=186 (140 added, 19 deleted, 27 changed) --- AppKit/GTMCarbonEventTest.m | 31 +++++++++++++++----------- AppKit/GTMNSAnimatablePropertyContainerTest.h | 4 +++- AppKit/GTMNSAnimatablePropertyContainerTest.m | 32 +++++++++++++-------------- 3 files changed, 37 insertions(+), 30 deletions(-) (limited to 'AppKit') diff --git a/AppKit/GTMCarbonEventTest.m b/AppKit/GTMCarbonEventTest.m index ff7fca5..81acbd0 100644 --- a/AppKit/GTMCarbonEventTest.m +++ b/AppKit/GTMCarbonEventTest.m @@ -41,7 +41,7 @@ @interface GTMCarbonEventDispatcherHandlerTest : GTMTestCase { @private - BOOL hotKeyHit_; + GTMUnitTestingBooleanRunLoopContext *hotKeyHit_; } @end @@ -258,6 +258,15 @@ extern EventTargetRef GetApplicationEventTarget(void); @implementation GTMCarbonEventDispatcherHandlerTest +- (void)setUp { + hotKeyHit_ = [[GTMUnitTestingBooleanRunLoopContext alloc] init]; +} + +- (void)tearDown { + [hotKeyHit_ release]; + hotKeyHit_ = nil; +} + - (void)testEventHandler { GTMCarbonEventDispatcherHandler *dispatcher = [GTMCarbonEventDispatcherHandler sharedEventDispatcherHandler]; @@ -265,11 +274,11 @@ extern EventTargetRef GetApplicationEventTarget(void); } - (void)hitHotKey:(id)sender { - hotKeyHit_ = YES; - [NSApp stop:self]; + [hotKeyHit_ setShouldStop:YES]; } - (void)hitExceptionalHotKey:(id)sender { + [hotKeyHit_ setShouldStop:YES]; [NSException raise:@"foo" format:@"bar"]; } @@ -299,16 +308,12 @@ extern EventTargetRef GetApplicationEventTarget(void); whenPressed:YES]; STAssertNotNULL(hotKey, @"Unable to create hotkey"); - hotKeyHit_ = NO; - // Post the hotkey combo to the event queue. If everything is working // correctly hitHotKey: should get called, and hotKeyHit_ will be set for // us. We run the event loop for a set amount of time waiting for this to // happen. [GTMUnitTestingUtilities postTypeCharacterEvent:'g' modifiers:keyMods]; - NSDate* future = [NSDate dateWithTimeIntervalSinceNow:1.0f]; - [GTMUnitTestingUtilities runUntilDate:future]; - STAssertTrue(hotKeyHit_, @"Hot key never got fired."); + STAssertTrue([NSApp gtm_runUpToSixtySecondsWithContext:hotKeyHit_], nil); [dispatcher unregisterHotKey:hotKey]; } } @@ -330,13 +335,13 @@ extern EventTargetRef GetApplicationEventTarget(void); whenPressed:YES]; STAssertTrue(hotKey != nil, @"Unable to create hotkey"); - // Post the hotkey combo to the event queue. If everything is working correctly - // hitHotKey: should get called, and hotKeyHit_ will be set for us. - // We run the event loop for a set amount of time waiting for this to happen. + // Post the hotkey combo to the event queue. If everything is working + // correctly hitHotKey: should get called, and hotKeyHit_ will be set for + // us. We run the event loop for a set amount of time waiting for this to + // happen. [GTMUnitTestingUtilities postTypeCharacterEvent:'g' modifiers:keyMods]; - NSDate* future = [NSDate dateWithTimeIntervalSinceNow:1.0f]; [GTMUnitTestDevLog expectString:@"Exception fired in hotkey: foo (bar)"]; - [GTMUnitTestingUtilities runUntilDate:future]; + STAssertTrue([NSApp gtm_runUpToSixtySecondsWithContext:hotKeyHit_], nil); [dispatcher unregisterHotKey:hotKey]; } } diff --git a/AppKit/GTMNSAnimatablePropertyContainerTest.h b/AppKit/GTMNSAnimatablePropertyContainerTest.h index ebfd323..f873601 100644 --- a/AppKit/GTMNSAnimatablePropertyContainerTest.h +++ b/AppKit/GTMNSAnimatablePropertyContainerTest.h @@ -21,6 +21,8 @@ #if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5 +@class GTMUnitTestingBooleanRunLoopContext; + @interface GTMNSAnimatablePropertyContainerWindow : NSWindow @end @@ -44,7 +46,7 @@ @interface GTMNSAnimatablePropertyContainerTest : GTMTestCase { @private GTMNSAnimatablePropertyContainerWindowController *windowController_; - BOOL timerCalled_; + GTMUnitTestingBooleanRunLoopContext *timerCalled_; } @end diff --git a/AppKit/GTMNSAnimatablePropertyContainerTest.m b/AppKit/GTMNSAnimatablePropertyContainerTest.m index 0ce89d2..9a1d497 100644 --- a/AppKit/GTMNSAnimatablePropertyContainerTest.m +++ b/AppKit/GTMNSAnimatablePropertyContainerTest.m @@ -19,6 +19,7 @@ #import "GTMNSAnimatablePropertyContainerTest.h" #import "GTMNSAnimatablePropertyContainer.h" #import "GTMTypeCasting.h" +#import "GTMUnitTestingUtilities.h" #if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5 @@ -80,23 +81,26 @@ STAssertNotNil(windowController_, nil); NSWindow *window = [windowController_ window]; STAssertNotNil(window, nil); + timerCalled_ = [[GTMUnitTestingBooleanRunLoopContext alloc] init]; } - (void)tearDown { [windowController_ close]; windowController_ = nil; + [timerCalled_ release]; + timerCalled_ = nil; } - (void)windowAlphaValueStopper:(NSTimer *)timer { NSWindow *window = GTM_DYNAMIC_CAST(NSWindow, [timer userInfo]); - timerCalled_ = YES; + [timerCalled_ setShouldStop:YES]; [[window gtm_animatorStopper] setAlphaValue:0.25]; STAssertEquals([window alphaValue], (CGFloat)0.25, nil); } - (void)windowFrameStopper:(NSTimer *)timer { NSWindow *window = GTM_DYNAMIC_CAST(NSWindow, [timer userInfo]); - timerCalled_ = YES; + [timerCalled_ setShouldStop:YES]; [[window gtm_animatorStopper] setFrame:NSMakeRect(300, 300, 150, 150) display:YES]; STAssertEquals([window frame], NSMakeRect(300, 300, 150, 150), nil); @@ -104,14 +108,14 @@ - (void)nonLayerFrameStopper:(NSTimer *)timer { NSView *view = GTM_DYNAMIC_CAST(NSView, [timer userInfo]); - timerCalled_ = YES; + [timerCalled_ setShouldStop:YES]; [[view gtm_animatorStopper] setFrame:NSMakeRect(200, 200, 200, 200)]; STAssertEquals([view frame], NSMakeRect(200, 200, 200, 200), nil); } - (void)layerFrameStopper:(NSTimer *)timer { NSView *view = GTM_DYNAMIC_CAST(NSView, [timer userInfo]); - timerCalled_ = YES; + [timerCalled_ setShouldStop:YES]; [[view gtm_animatorStopper] setFrame:NSMakeRect(200, 200, 200, 200)]; STAssertEquals([view frame], NSMakeRect(200, 200, 200, 200), nil); } @@ -122,7 +126,7 @@ // Test Alpha NSWindow *window = [windowController_ window]; [window setAlphaValue:1.0]; - timerCalled_ = NO; + [timerCalled_ setShouldStop:NO]; [NSAnimationContext beginGrouping]; NSAnimationContext *currentContext = [NSAnimationContext currentContext]; [currentContext setDuration:2]; @@ -133,13 +137,12 @@ selector:@selector(windowAlphaValueStopper:) userInfo:window repeats:NO]; - [runLoop runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.2]]; - STAssertTrue(timerCalled_, nil); + STAssertTrue([runLoop gtm_runUpToSixtySecondsWithContext:timerCalled_], nil); STAssertEquals([window alphaValue], (CGFloat)0.25, nil); // Test Frame [window setFrame:NSMakeRect(100, 100, 100, 100) display:YES]; - timerCalled_ = NO; + [timerCalled_ setShouldStop:NO]; [NSAnimationContext beginGrouping]; currentContext = [NSAnimationContext currentContext]; [currentContext setDuration:2]; @@ -150,8 +153,7 @@ selector:@selector(windowFrameStopper:) userInfo:window repeats:NO]; - [runLoop runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.2]]; - STAssertTrue(timerCalled_, nil); + STAssertTrue([runLoop gtm_runUpToSixtySecondsWithContext:timerCalled_], nil); STAssertEquals([window frame], NSMakeRect(300, 300, 150, 150), nil); // Test non-animation value @@ -171,7 +173,7 @@ // Test frame [nonLayerBox setFrame:NSMakeRect(50, 50, 50, 50)]; - timerCalled_ = NO; + [timerCalled_ setShouldStop:NO]; [NSAnimationContext beginGrouping]; NSAnimationContext *currentContext = [NSAnimationContext currentContext]; [currentContext setDuration:2]; @@ -182,8 +184,7 @@ selector:@selector(nonLayerFrameStopper:) userInfo:nonLayerBox repeats:NO]; - [runLoop runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.2]]; - STAssertTrue(timerCalled_, nil); + STAssertTrue([runLoop gtm_runUpToSixtySecondsWithContext:timerCalled_], nil); STAssertEquals([nonLayerBox frame], NSMakeRect(200, 200, 200, 200), nil); // Test non-animation value @@ -204,7 +205,7 @@ // Test frame [layerBox setFrame:NSMakeRect(50, 50, 50, 50)]; - timerCalled_ = NO; + [timerCalled_ setShouldStop:NO]; [NSAnimationContext beginGrouping]; NSAnimationContext *currentContext = [NSAnimationContext currentContext]; [currentContext setDuration:2]; @@ -215,8 +216,7 @@ selector:@selector(layerFrameStopper:) userInfo:layerBox repeats:NO]; - [runLoop runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.2]]; - STAssertTrue(timerCalled_, nil); + STAssertTrue([runLoop gtm_runUpToSixtySecondsWithContext:timerCalled_], nil); STAssertEquals([layerBox frame], NSMakeRect(200, 200, 200, 200), nil); // Test non-animation value -- cgit v1.2.3