New tests
From-SVN: r44040
This commit is contained in:
parent
42d28de5b2
commit
0a7a4face2
42
gcc/testsuite/objc/execute/object_is_class.m
Normal file
42
gcc/testsuite/objc/execute/object_is_class.m
Normal file
@ -0,0 +1,42 @@
|
||||
/* Contributed by Nicola Pero - Tue Jul 3 10:55:21 BST 2001 */
|
||||
#include <objc/objc.h>
|
||||
#include <objc/objc-api.h>
|
||||
#include <objc/Object.h>
|
||||
|
||||
/* This test demonstrate a failure in object_is_class which was fixed */
|
||||
|
||||
/* Create a class whose instance variables mirror the struct used for
|
||||
Class structures in the runtime ... yes we're feeling evil today */
|
||||
@interface EvilClass : Object
|
||||
{
|
||||
Class super_class;
|
||||
const char* name;
|
||||
long version;
|
||||
unsigned long info;
|
||||
}
|
||||
@end
|
||||
|
||||
@implementation EvilClass
|
||||
- (id) init
|
||||
{
|
||||
self = [super init];
|
||||
/* The following one is used in the runtime to mark classes */
|
||||
info = 0x1L;
|
||||
return self;
|
||||
}
|
||||
@end
|
||||
|
||||
int main (void)
|
||||
{
|
||||
/* Create an object of our EvilClass */
|
||||
EvilClass *evilObject = [EvilClass new];
|
||||
|
||||
/* Now check that the object is not a class object */
|
||||
if (object_is_class (evilObject))
|
||||
{
|
||||
printf ("object_is_class failed\n");
|
||||
abort ();
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
41
gcc/testsuite/objc/execute/object_is_meta_class.m
Normal file
41
gcc/testsuite/objc/execute/object_is_meta_class.m
Normal file
@ -0,0 +1,41 @@
|
||||
/* Contributed by Nicola Pero - Tue Jul 3 10:55:21 BST 2001 */
|
||||
#include <objc/objc.h>
|
||||
#include <objc/objc-api.h>
|
||||
#include <objc/Object.h>
|
||||
|
||||
/* This test demonstrate a failure in object_is_meta_class which was fixed */
|
||||
|
||||
@interface EvilClass : Object
|
||||
{
|
||||
Class super_class;
|
||||
const char* name;
|
||||
long version;
|
||||
unsigned long info;
|
||||
}
|
||||
@end
|
||||
|
||||
@implementation EvilClass
|
||||
- (id) init
|
||||
{
|
||||
self = [super init];
|
||||
/* The following one is used in the runtime to mark meta classes */
|
||||
info = 0x2L;
|
||||
return self;
|
||||
}
|
||||
@end
|
||||
|
||||
int main (void)
|
||||
{
|
||||
/* Create an object of our EvilClass */
|
||||
EvilClass *evilObject = [EvilClass new];
|
||||
|
||||
/* Now check that the object is not a meta class object */
|
||||
if (object_is_meta_class (evilObject))
|
||||
{
|
||||
printf ("object_is_meta_class failed\n");
|
||||
abort ();
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user