2
#import <Foundation/NSAutoreleasePool.h>
3
#import <Foundation/NSString.h>
4
#import <Foundation/NSArray.h>
5
@interface MyEvilClass : NSObject
11
/* not sure which of these is correct */
17
-(void)setInfo:(unsigned long)info;
20
@implementation MyEvilClass
21
-(void)setInfo:(unsigned long)theInfo
29
NSAutoreleasePool *arp = [NSAutoreleasePool new];
31
PASS([NSObject isClass] &&
34
"-isClass returns YES on a Class");
36
PASS((![[[NSObject new] autorelease] isClass] &&
37
![[NSString stringWithCString:"foo"] isClass] &&
38
![[[NSArray new] autorelease] isClass]),
39
"-isClass returns NO on an instance");
41
evilObject = [MyEvilClass new];
42
[evilObject setInfo:1];
43
PASS(![evilObject isClass],
44
"-isClass returns NO on an instance (special test for broken libobjc)");
46
PASS(([[[NSObject new] autorelease] isKindOfClass:[NSObject class]] &&
47
[[[NSString new] autorelease] isKindOfClass:[NSString class]] &&
48
![[[NSObject new] autorelease] isKindOfClass:[NSString class]] &&
49
[[[NSString new] autorelease] isKindOfClass:[NSObject class]] &&
50
![[[NSString new] autorelease] isKindOfClass:[NSArray class]] &&
51
[[[NSMutableString new] autorelease] isKindOfClass:[NSString class]]),
52
"-isKindOfClass: works");
54
/* should return YES if receiver and argument are both NSObject */
55
PASS([NSObject isKindOfClass:[NSObject class]] &&
56
![NSString isKindOfClass:[NSString class]] &&
57
![NSObject isKindOfClass:[NSString class]] &&
58
[NSString isKindOfClass:[NSObject class]],
59
"+isKindOfClass: works");
61
[arp release]; arp = nil;