Files
cappuccino/Tests/Foundation/CPRunLoopTest.j
T
Alexander Ljungberg f4b08a9ce2 New: - CPObject performSelector:withObject:afterDelay:.
Also - CPObject cancelPreviousPerformWithTarget: and other related methods.
2013-03-05 18:52:06 +00:00

53 lines
1.7 KiB
Plaintext

@import <Foundation/CPObject.j>
@import <Foundation/CPRunLoop.j>
@import <OJUnit/OJTestCase.j>
@implementation CPRunLoopTest : OJTestCase
{
}
- (void)testDelayedPerform
{
var aPerformer = [Performer new];
[aPerformer performSelector:@selector(performWithObject:) withObject:5 afterDelay:0];
[aPerformer performSelector:@selector(performWithObject:) withObject:1 afterDelay:0 inModes:[CPDefaultRunLoopMode]];
[aPerformer performSelector:@selector(performWithObject:) withObject:10 afterDelay:9999 inModes:[CPDefaultRunLoopMode]];
[[CPRunLoop currentRunLoop] limitDateForMode:CPDefaultRunLoopMode];
[self assertTrue:[aPerformer.callArgs containsObject:5]];
[self assertTrue:[aPerformer.callArgs containsObject:1]];
[CPObject cancelPreviousPerformRequestsWithTarget:aPerformer];
var performer1 = [Performer new],
performer2 = [Performer new];
[performer1 performSelector:@selector(performWithObject:) withObject:5 afterDelay:0 inModes:[CPDefaultRunLoopMode]];
[performer2 performSelector:@selector(performWithObject:) withObject:10 afterDelay:0 inModes:[CPDefaultRunLoopMode]];
[performer1 performSelector:@selector(performWithObject:) withObject:1 afterDelay:0 inModes:[CPDefaultRunLoopMode]];
[CPObject cancelPreviousPerformRequestsWithTarget:performer1];
[[CPRunLoop currentRunLoop] limitDateForMode:CPDefaultRunLoopMode];
[self assert:nil equals:performer1.callArgs];
[self assert:[10] equals:performer2.callArgs];
}
@end
@implementation Performer : CPObject
{
CPArray callArgs;
}
- (void)performWithObject:(id)anObject
{
if (!callArgs)
callArgs = [];
[callArgs addObject:anObject];
}
@end