1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
|
#import "ObjectTesting.h"
#import <Foundation/NSPointerArray.h>
#import <Foundation/NSAutoreleasePool.h>
#if defined(__clang__)
int main()
{
ENTER_POOL
NSPointerArray *obj = AUTORELEASE([NSPointerArray new]);
NSString *str = @"test";
NSString *str2 = @"string";
// Fast iteration over empty pointer array
for (id ptr in obj) {
PASS(0, "No element returned by fast iteration");
}
[obj addPointer: str];
[obj addPointer: str2];
[obj addPointer: nil];
[obj addPointer: nil];
int count = 0;
for (id ptr in obj) {
count += 1;
switch (count) {
case 1:
PASS(ptr == str, "first obj returned is pointer to 'test'");
break;
case 2:
PASS(ptr == str2, "second obj returned is pointer to 'string'");
break;
case 3:
case 4:
PASS(ptr == nil, "third and fourth pointers are nil");
break;
default:
PASS(0, "unexpected count of pointers");
}
}
PASS(count == 4, "got 4 pointers in fast iteration");
LEAVE_POOL
return 0;
}
#else
int main()
{
return 0;
}
#endif
|