Tweak the weak tests so that they should still work, even if -base was compiled

with something that doesn't do a very good job of optimising autorelease
operations away.



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@33644 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
David Chisnall 2011-07-26 20:12:32 +00:00
parent 622f81ffc2
commit 00259f1a7c
3 changed files with 10 additions and 4 deletions

View file

@ -5,13 +5,15 @@
int main()
{
[NSAutoreleasePool new];
NSHashTable *ht = [NSHashTable hashTableWithWeakObjects];
id pool = [NSAutoreleasePool new];
NSHashTable *ht = [[NSHashTable hashTableWithWeakObjects] retain];
id obj = [NSObject new];
[ht addObject: obj];
PASS([ht containsObject: obj], "Added object to weak hash table");
PASS(1 == [ht count], "Weak hash table contains one object");
PASS([ht containsObject: obj], "Added object to weak hash table");
[obj release];
[pool drain];
PASS(0 == [ht count], "Weak hash table contains no objects");
PASS(0 == [[ht allObjects] count], "Weak hash table contains no objects");
return 0;

View file

@ -5,14 +5,16 @@
int main()
{
[NSAutoreleasePool new];
NSMapTable *map = [NSMapTable mapTableWithStrongToWeakObjects];
NSMapTable *map2 = [NSMapTable mapTableWithWeakToStrongObjects];
id pool = [NSAutoreleasePool new];
NSMapTable *map = [[NSMapTable mapTableWithStrongToWeakObjects] retain];
NSMapTable *map2 = [[NSMapTable mapTableWithWeakToStrongObjects] retain];
id obj = [NSObject new];
[map setObject: obj forKey: @"1"];
[map2 setObject: @"1" forKey: obj];
PASS(obj == [map objectForKey: @"1"], "Value stored in weak-value map");
PASS(nil != [map2 objectForKey: obj], "Value stored in weak-key map");
[pool drain];
[obj release];
PASS(nil == [map objectForKey: @"1"], "Value removed from weak-value map");
NSEnumerator *enumerator = [map2 keyEnumerator];

View file

@ -4,11 +4,13 @@
int main(void)
{
[NSAutoreleasePool new];
NSPointerArray *pa = [NSPointerArray pointerArrayWithWeakObjects];
id pool = [NSAutoreleasePool new];
NSPointerArray *pa = [[NSPointerArray pointerArrayWithWeakObjects] retain];
id obj = [NSObject new];
[pa addPointer: obj];
PASS([pa count] == 1, "Added object to weak array");
[obj release];
[pool drain];
[pa compact];
PASS([pa count] == 0, "Removed object to weak array");
return 0;