1 #import <objc/runtime.h>
2 #import <objc/objc-auto.h>
8 @interface Super { @public id isa; } @end
10 +(void) initialize { }
11 +(Class) class { return self; }
14 @interface Sub : Super { int array[128]; } @end
15 @implementation Sub @end
21 s = class_createInstance([Super class], 0);
23 testassert(s->isa == [Super class]);
24 testassert(malloc_size(s) >= class_getInstanceSize([Super class]));
25 if (objc_collecting_enabled()) testassert(auto_zone_is_valid_pointer(auto_zone(), s));
29 s = class_createInstance([Sub class], 0);
31 testassert(s->isa == [Sub class]);
32 testassert(malloc_size(s) >= class_getInstanceSize([Sub class]));
33 if (objc_collecting_enabled()) testassert(auto_zone_is_valid_pointer(auto_zone(), s));
37 s = class_createInstance([Super class], 100);
39 testassert(s->isa == [Super class]);
40 testassert(malloc_size(s) >= class_getInstanceSize([Super class]) + 100);
41 if (objc_collecting_enabled()) testassert(auto_zone_is_valid_pointer(auto_zone(), s));
45 s = class_createInstance([Sub class], 100);
47 testassert(s->isa == [Sub class]);
48 testassert(malloc_size(s) >= class_getInstanceSize([Sub class]) + 100);
49 if (objc_collecting_enabled()) testassert(auto_zone_is_valid_pointer(auto_zone(), s));
53 s = class_createInstance(Nil, 0);