X-Git-Url: https://git.saurik.com/apple/objc4.git/blobdiff_plain/7c0e6487d7b67b6bf6c632300ee4b74e8950b051..7af964d1562d70f51a8e9aca24215ac3d83d0624:/test/classname.m diff --git a/test/classname.m b/test/classname.m new file mode 100644 index 0000000..7fc9804 --- /dev/null +++ b/test/classname.m @@ -0,0 +1,41 @@ +#include "test.h" +#include +#include + +@interface Super { @public id isa; } @end +@implementation Super ++(void)initialize { } ++class { return self; } +@end + +@interface Fake { @public id isa; } @end +@implementation Fake ++(void)initialize { } ++class { return self; } +@end + +int main() +{ + id buf[10]; + Super *obj = (Super *)buf; + buf[0] = [Fake class]; + + testassert(obj->isa == [Fake class]); + testassert(object_setClass(obj, [Super class]) == [Fake class]); + testassert(obj->isa == [Super class]); + testassert(object_setClass(nil, [Super class]) == nil); + + testassert(object_getClass(obj) == buf[0]); + testassert(object_getClass([Super class]) == [Super class]->isa); + testassert(object_getClass(nil) == Nil); + + testassert(0 == strcmp(object_getClassName(obj), "Super")); + testassert(0 == strcmp(object_getClassName([Super class]), "Super")); + testassert(0 == strcmp(object_getClassName(nil), "nil")); + + testassert(0 == strcmp(class_getName([Super class]), "Super")); + testassert(0 == strcmp(class_getName([Super class]->isa), "Super")); + testassert(0 == strcmp(class_getName(nil), "nil")); + + succeed(__FILE__); +}