#include <objc/objc.h>
#include <objc/objc-api.h>
#include <objc/Object.h>
#include <stdlib.h>
static void test_is_class (Class class)
{
if (object_is_class (class) == NO)
{
printf ("test_is_class failed\n");
abort ();
}
if (class_is_class (class) == NO)
{
printf ("test_is_class failed\n");
abort ();
}
}
static void test_superclass (Class class, Class superclass)
{
if (class_get_super_class (class) != superclass)
{
printf ("test_superclass failed\n");
abort ();
}
}
static void test_class_name (Class class, const char *classname)
{
if (strcmp (class_get_class_name (class), classname))
{
printf ("test_class_name failed\n");
abort ();
}
}
static void test_allocate (Class class)
{
id object = class_create_instance (class);
if (object == nil)
{
printf ("test_allocate failed\n");
abort ();
}
}
static void test_instances (Class class)
{
id object = class_create_instance (class);
if (object_is_class (object) == YES)
{
printf ("test_instances failed\n");
abort ();
}
}
static void test_deallocate (Class class)
{
id object = class_create_instance (class);
object_dispose (object);
}
static void test_object_class (Class class)
{
id object = class_create_instance (class);
if (object_get_class (object) != class)
{
printf ("test_object_class failed\n");
abort ();
}
}
static void test_object_super_class (Class class)
{
id object = class_create_instance (class);
if (object_get_super_class (object) != class_get_super_class (class))
{
printf ("test_object_super_class failed\n");
abort ();
}
}
void test_class_with_superclass (const char *class_name,
const char *superclass_name)
{
Class class;
Class superclass;
[Object class];
class = objc_lookup_class (class_name);
test_is_class (class);
superclass = objc_lookup_class (superclass_name);
if (superclass != Nil)
{
test_is_class (superclass);
}
test_superclass (class, superclass);
test_class_name (class, class_name);
test_allocate (class);
test_instances (class);
test_deallocate (class);
test_object_class (class);
test_object_super_class (class);
}