Skip to content

Commit

Permalink
NSPointerArray: Fast enumeration tests
Browse files Browse the repository at this point in the history
  • Loading branch information
hmelder committed Dec 12, 2024
1 parent 0179730 commit d50350d
Showing 1 changed file with 57 additions and 0 deletions.
57 changes: 57 additions & 0 deletions Tests/base/NSPointerArray/iterate.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,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

0 comments on commit d50350d

Please sign in to comment.