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 but reusing it with super */ 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- (int) state 43{ 44 return [super state] + 1; 45} 46@end 47 48#include "class-tests-1.h" 49#define TYPE_OF_OBJECT_WITH_ACCESSOR_METHOD SubClass * 50#include "class-tests-2.h" 51 52int main (void) 53{ 54 SubClass *object; 55 SubSubClass *sub_object; 56 57 test_class_with_superclass ("SubClass", "RootClass"); 58 test_that_class_has_instance_method ("SubClass", @selector (setState:)); 59 test_that_class_has_instance_method ("SubClass", @selector (state)); 60 61 test_class_with_superclass ("SubSubClass", "SubClass"); 62 test_that_class_has_instance_method ("SubSubClass", @selector (setState:)); 63 test_that_class_has_instance_method ("SubSubClass", @selector (state)); 64 65 object = class_createInstance (objc_getClass ("SubClass"), 0); 66 test_accessor_method (object, 0, -1, -1, 1, 1); 67 68 sub_object = class_createInstance (objc_getClass ("SubSubClass"), 0); 69 test_accessor_method (sub_object, 1, -1, 0, 1, 2); 70 71 return 0; 72} 73