#import "ObjectTesting.h" #import #import int main() { [NSAutoreleasePool new]; 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]; NSUInteger count = 0; while ([enumerator nextObject] != nil) { count++; } PASS(count == 0, "Value removed from weak-key map"); PASS(0 == [map count], "Weak-value map reports correct count"); PASS(0 == [map2 count], "Weak-key map reports correct count"); return 0; }