// // HOMNSSetRejectSingleWhereTests.m // HigherOrderMessaging // // Created by Ofri Wolfus on 15/10/06. // Copyright 2006 Ofri Wolfus. All rights reserved. // #import "HOMNSSetRejectSingleWhereTests.h" @implementation HOMNSSetRejectSingleWhereTests - (id)init { if ((self = [super init])) { int i; msg1 = [MSG(hasPrefix:@"b") retain]; msg2 = [MSG(hasPrefix:@"9999") retain]; for (i = 0; i < 9999; i++) [(NSMutableSet *)largeSetResult addObject:[NSString stringWithFormat:@"%d", i]]; } return self; } - (void)dealloc { [msg1 release]; msg1 = nil; [msg2 release]; msg2 = nil; [super dealloc]; } #pragma mark - #pragma mark Small Set Tests - (id)testSmallSet { return [smallSet rejectSingleWhere:MSG(hasPrefix:@"b"), nil]; } - (id)testSmallSet_CachedMessage { return [smallSet rejectSingleWhere:msg1, nil]; } - (id)testSmallSet_NSEnumerator { NSMutableArray *r = [smallSet mutableCopy]; NSEnumerator *e = [smallSet objectEnumerator]; NSString *str; while ((str = [e nextObject])) { if ([str hasPrefix:@"b"]) { [r removeObject:str]; break; } } return [r autorelease]; } #pragma mark - #pragma mark Large Set Tests - (id)testLargeSet { return [largeSet rejectSingleWhere:MSG(hasPrefix:@"9999"), nil]; } - (id)testLargeSet_CachedMessage { return [largeSet rejectSingleWhere:msg2, nil]; } - (id)testLargeSet_NSEnumerator { NSMutableArray *r = [largeSet mutableCopy]; NSEnumerator *e = [r objectEnumerator]; NSString *str; while ((str = [e nextObject])) { if ([str hasPrefix:@"9999"]) { [r removeObject:str]; break; } } return [r autorelease]; } #pragma mark - #pragma mark Tests Verification - (BOOL)verifyResult:(NSSet *)set ofTest:(SEL)sel { NSString *name = NSStringFromSelector(sel); if ([name hasPrefix:@"testSmallSet"]) { DPTestAssert([set count] == 2U, @"The result doesn't contain 2 objects. Result = %@", set); DPTestAssert([set containsObject:@"a"], @"The result doesn't contain 'a'. Result = %@", set); DPTestAssert([set containsObject:@"abc"], @"The result doesn't contain 'abc'. Result = %@", set); } return [super verifyResult:set ofTest:sel]; } @end