1/* Contributed by Nicola Pero - Tue Mar 6 23:05:53 CET 2001 */ 2 3#include <objc/objc.h> 4 5/* Tests creating a root class and a subclass with an ivar and 6 accessor methods and a subclass overriding the superclass' 7 implementation - in a category */ 8 9@interface RootClass 10{ 11 Class isa; 12} 13@end 14 15@implementation RootClass 16+ initialize { return self; } 17@end 18 19@interface SubClass : RootClass 20{ 21 int state; 22} 23- (void) setState: (int)number; 24- (int) state; 25@end 26 27@implementation SubClass 28- (void) setState: (int)number 29{ 30 state = number; 31} 32- (int) state 33{ 34 return state; 35} 36@end 37 38@interface SubSubClass : SubClass 39@end 40 41@implementation SubSubClass 42@end 43 44@implementation SubSubClass (Additions) 45- (int) state 46{ 47 return state + 1; 48} 49@end 50 51#include "class-tests-1.h" 52#define TYPE_OF_OBJECT_WITH_ACCESSOR_METHOD SubClass * 53#include "class-tests-2.h" 54 55int main (void) 56{ 57 SubClass *object; 58 SubSubClass *sub_object; 59 60 test_class_with_superclass ("SubClass", "RootClass"); 61 test_that_class_has_instance_method ("SubClass", @selector (setState:)); 62 test_that_class_has_instance_method ("SubClass", @selector (state)); 63 64 test_class_with_superclass ("SubSubClass", "SubClass"); 65 test_that_class_has_instance_method ("SubSubClass", @selector (setState:)); 66 test_that_class_has_instance_method ("SubSubClass", @selector (state)); 67 68 object = class_createInstance (objc_getClass ("SubClass"), 0); 69 test_accessor_method (object, 0, -1, -1, 1, 1); 70 71 sub_object = class_createInstance (objc_getClass ("SubSubClass"), 0); 72 test_accessor_method (sub_object, 1, -1, 0, 1, 2); 73 74 return 0; 75} 76