add test for release of associated objects

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@37541 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
rfm 2014-01-06 11:32:39 +00:00
parent 955bf169c2
commit 9fbd816b5a

View file

@ -0,0 +1,58 @@
#import "Testing.h"
#import <Foundation/NSAutoreleasePool.h>
#import <Foundation/NSObject.h>
#import <Foundation/NSString.h>
/* Only do associated objects test if they are supported by the runtime.
*/
#if defined(OBJC_ASSOCIATION_RETAIN)
static BOOL AssociatedObjectDeallocCalled = NO;
static const char* objc_setAssociatedObjectKey = "objc_setAssociatedObjectKey";
@interface associatedObjectTestAssociatedObject : NSObject
@end
@implementation associatedObjectTestAssociatedObject
- (void) dealloc
{
AssociatedObjectDeallocCalled = YES;
[super dealloc];
}
@end
@interface associatedObjectTestAllocatedObject : NSObject
@end
@implementation associatedObjectTestAllocatedObject
@end
int main()
{
NSAutoreleasePool *arp = [NSAutoreleasePool new];
associatedObjectTestAllocatedObject* object =
[associatedObjectTestAllocatedObject new];
associatedObjectTestAssociatedObject *info =
[[associatedObjectTestAssociatedObject new] autorelease];
// silence -Wunused-variable
[info description];
objc_setAssociatedObject(object, &objc_setAssociatedObjectKey, info,
OBJC_ASSOCIATION_RETAIN);
[object release];
PASS(AssociatedObjectDeallocCalled == YES,
"'objc_setAssociatedObject' was released");
return 0;
}
#else
int main()
{
return 0; // Nothing to test
}
#endif