From ca0f633cb2d80d9cd8dd1d836cb5f4f19cf734d7 Mon Sep 17 00:00:00 2001 From: richard Date: Wed, 15 Jul 1998 12:53:13 +0000 Subject: [PATCH] Basic tests for invocations reurning the correct things. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@2852 72102866-910b-0410-8b05-ffd578937521 --- Testing/invocation_char.m | 178 +++++++++++++++++++++++++++++++++++++ Testing/invocation_int.m | 178 +++++++++++++++++++++++++++++++++++++ Testing/invocation_long.m | 178 +++++++++++++++++++++++++++++++++++++ Testing/invocation_short.m | 178 +++++++++++++++++++++++++++++++++++++ 4 files changed, 712 insertions(+) create mode 100644 Testing/invocation_char.m create mode 100644 Testing/invocation_int.m create mode 100644 Testing/invocation_long.m create mode 100644 Testing/invocation_short.m diff --git a/Testing/invocation_char.m b/Testing/invocation_char.m new file mode 100644 index 000000000..12e2f0d76 --- /dev/null +++ b/Testing/invocation_char.m @@ -0,0 +1,178 @@ +#include +#include +#include +#include + +#define TYPE char + +struct pair { + TYPE i; + TYPE j; +}; + +@interface Pair: NSObject +- (TYPE)member:(Class)c; +- (TYPE)plus: (struct pair) pair; +- (TYPE)plus_ptr: (struct pair*) pair_ptr; +@end + +@implementation Pair +- (TYPE)member:(Class)c +{ + if ([self class] == c) + return YES; + else + return NO; +} +- (TYPE)plus: (struct pair) pair +{ + return (pair.i + pair.j); +} +- (TYPE)plus_ptr: (struct pair*) pair_ptr +{ + return (pair_ptr->i + pair_ptr->j); +} +@end +/* Invocation.m +- initWithTarget: target selector: (SEL)s, ... +[1] Adding CASE_TYPE(_C_CLASS, Class); +[2] Adding default: block + + NSInvocation.h +[3] Adding NS_INVOCATION +[4, 5] Adding NS_MESSAGE + + NSMethodSignature.m +[6] Modifiying -(NSArgumentInfo)argumentInfoAtIndex:(unsigned)index */ + +void test1(); +void test2(); +void test3(); +void test4(); +void test5(); +void test6(); + +int +main () +{ + test1(); + test2(); + test3(); + test4(); + test5(); + test6(); +} + +void +test1() +{ + Pair * ipair = [Pair new]; + SEL sel = @selector(member:); + Class c = [Pair class]; + Invocation * inv; + TYPE result; + inv = [[MethodInvocation alloc] + initWithTarget: ipair + selector: sel, c]; + [inv invoke]; + [inv getReturnValue: &result]; + fprintf(stderr, "test1 YES == %s\n", result? "YES": "NO"); +} + +void +test2() +{ + Pair * ipair = [Pair new]; + SEL sel = @selector(plus:); + SEL sel_ptr = @selector(plus_ptr:); + struct pair pair0; + struct pair * pair0_ptr; + Invocation * inv; + TYPE result; + + pair0.i = 3; + pair0.j = 4; + + inv = [[MethodInvocation alloc] + initWithTarget: ipair + selector: sel, pair0]; + [inv invoke]; + [inv getReturnValue: &result]; + fprintf(stderr, "test2-1 %d == 7\n", result); + + pair0_ptr = &pair0; + pair0_ptr->i = 2; + pair0_ptr->j = 3; + inv = [[MethodInvocation alloc] + initWithTarget: ipair + selector: sel_ptr, &pair0]; + [inv invoke]; + [inv getReturnValue: &result]; + fprintf(stderr, "test2-2 %d == 5\n", result); +} + +void +test3() +{ + Pair * ipair = [Pair new]; + struct pair pair0; + NSInvocation * inv; + TYPE x; + pair0.i = 1; + pair0.j = 2; + inv = NS_INVOCATION(Pair , + plus:, + pair0); + [inv setTarget: ipair]; + [inv invoke]; + [inv getReturnValue: &x]; + fprintf(stderr, "test3 3 == %d\n", x); +} + +void +test4() +{ + Pair * ipair = [Pair new]; + struct pair pair0; + NSInvocation * inv; + TYPE x; + pair0.i = 3; + pair0.j = 8; + inv = NS_MESSAGE(ipair , + plus_ptr:, + &pair0); // Method with args + [inv invoke]; + [inv getReturnValue: &x]; + fprintf(stderr, "test4 11 == %d\n", x); +} + +void +test5() +{ + Pair * ipair = [Pair new]; + NSInvocation * inv; + int x; + + inv = NS_MESSAGE(ipair, + hash); // Method with NO args + [inv invoke]; + [inv getReturnValue: &x]; + fprintf(stderr, "test5 hash value of an object == %d\n", x); +} + +void +test6() +{ + NSObject * foo = [NSObject new]; + NSArgumentInfo info; + SEL sel = @selector(isKindOfClass:); + NSMethodSignature * ms = [foo methodSignatureForSelector: sel]; + info = [ms argumentInfoAtIndex: 0]; + fprintf(stderr, "test6 (%d, %d, %s)\n", info.offset, info.size, info.type); + info = [ms argumentInfoAtIndex: 1]; + fprintf(stderr, "test6 (%d, %d, %s)\n", info.offset, info.size, info.type); + info = [ms argumentInfoAtIndex: 2]; + fprintf(stderr, "test6 (%d, %d, %s)\n", info.offset, info.size, info.type); +} + +#undef TYPE diff --git a/Testing/invocation_int.m b/Testing/invocation_int.m new file mode 100644 index 000000000..f10fcdb1f --- /dev/null +++ b/Testing/invocation_int.m @@ -0,0 +1,178 @@ +#include +#include +#include +#include + +#define TYPE int + +struct pair { + TYPE i; + TYPE j; +}; + +@interface Pair: NSObject +- (TYPE)member:(Class)c; +- (TYPE)plus: (struct pair) pair; +- (TYPE)plus_ptr: (struct pair*) pair_ptr; +@end + +@implementation Pair +- (TYPE)member:(Class)c +{ + if ([self class] == c) + return YES; + else + return NO; +} +- (TYPE)plus: (struct pair) pair +{ + return (pair.i + pair.j); +} +- (TYPE)plus_ptr: (struct pair*) pair_ptr +{ + return (pair_ptr->i + pair_ptr->j); +} +@end +/* Invocation.m +- initWithTarget: target selector: (SEL)s, ... +[1] Adding CASE_TYPE(_C_CLASS, Class); +[2] Adding default: block + + NSInvocation.h +[3] Adding NS_INVOCATION +[4, 5] Adding NS_MESSAGE + + NSMethodSignature.m +[6] Modifiying -(NSArgumentInfo)argumentInfoAtIndex:(unsigned)index */ + +void test1(); +void test2(); +void test3(); +void test4(); +void test5(); +void test6(); + +int +main () +{ + test1(); + test2(); + test3(); + test4(); + test5(); + test6(); +} + +void +test1() +{ + Pair * ipair = [Pair new]; + SEL sel = @selector(member:); + Class c = [Pair class]; + Invocation * inv; + TYPE result; + inv = [[MethodInvocation alloc] + initWithTarget: ipair + selector: sel, c]; + [inv invoke]; + [inv getReturnValue: &result]; + fprintf(stderr, "test1 YES == %s\n", result? "YES": "NO"); +} + +void +test2() +{ + Pair * ipair = [Pair new]; + SEL sel = @selector(plus:); + SEL sel_ptr = @selector(plus_ptr:); + struct pair pair0; + struct pair * pair0_ptr; + Invocation * inv; + TYPE result; + + pair0.i = 3; + pair0.j = 4; + + inv = [[MethodInvocation alloc] + initWithTarget: ipair + selector: sel, pair0]; + [inv invoke]; + [inv getReturnValue: &result]; + fprintf(stderr, "test2-1 %d == 7\n", result); + + pair0_ptr = &pair0; + pair0_ptr->i = 2; + pair0_ptr->j = 3; + inv = [[MethodInvocation alloc] + initWithTarget: ipair + selector: sel_ptr, &pair0]; + [inv invoke]; + [inv getReturnValue: &result]; + fprintf(stderr, "test2-2 %d == 5\n", result); +} + +void +test3() +{ + Pair * ipair = [Pair new]; + struct pair pair0; + NSInvocation * inv; + TYPE x; + pair0.i = 1; + pair0.j = 2; + inv = NS_INVOCATION(Pair , + plus:, + pair0); + [inv setTarget: ipair]; + [inv invoke]; + [inv getReturnValue: &x]; + fprintf(stderr, "test3 3 == %d\n", x); +} + +void +test4() +{ + Pair * ipair = [Pair new]; + struct pair pair0; + NSInvocation * inv; + TYPE x; + pair0.i = 3; + pair0.j = 8; + inv = NS_MESSAGE(ipair , + plus_ptr:, + &pair0); // Method with args + [inv invoke]; + [inv getReturnValue: &x]; + fprintf(stderr, "test4 11 == %d\n", x); +} + +void +test5() +{ + Pair * ipair = [Pair new]; + NSInvocation * inv; + int x; + + inv = NS_MESSAGE(ipair, + hash); // Method with NO args + [inv invoke]; + [inv getReturnValue: &x]; + fprintf(stderr, "test5 hash value of an object == %d\n", x); +} + +void +test6() +{ + NSObject * foo = [NSObject new]; + NSArgumentInfo info; + SEL sel = @selector(isKindOfClass:); + NSMethodSignature * ms = [foo methodSignatureForSelector: sel]; + info = [ms argumentInfoAtIndex: 0]; + fprintf(stderr, "test6 (%d, %d, %s)\n", info.offset, info.size, info.type); + info = [ms argumentInfoAtIndex: 1]; + fprintf(stderr, "test6 (%d, %d, %s)\n", info.offset, info.size, info.type); + info = [ms argumentInfoAtIndex: 2]; + fprintf(stderr, "test6 (%d, %d, %s)\n", info.offset, info.size, info.type); +} + +#undef TYPE diff --git a/Testing/invocation_long.m b/Testing/invocation_long.m new file mode 100644 index 000000000..2266c1352 --- /dev/null +++ b/Testing/invocation_long.m @@ -0,0 +1,178 @@ +#include +#include +#include +#include + +#define TYPE long + +struct pair { + TYPE i; + TYPE j; +}; + +@interface Pair: NSObject +- (TYPE)member:(Class)c; +- (TYPE)plus: (struct pair) pair; +- (TYPE)plus_ptr: (struct pair*) pair_ptr; +@end + +@implementation Pair +- (TYPE)member:(Class)c +{ + if ([self class] == c) + return YES; + else + return NO; +} +- (TYPE)plus: (struct pair) pair +{ + return (pair.i + pair.j); +} +- (TYPE)plus_ptr: (struct pair*) pair_ptr +{ + return (pair_ptr->i + pair_ptr->j); +} +@end +/* Invocation.m +- initWithTarget: target selector: (SEL)s, ... +[1] Adding CASE_TYPE(_C_CLASS, Class); +[2] Adding default: block + + NSInvocation.h +[3] Adding NS_INVOCATION +[4, 5] Adding NS_MESSAGE + + NSMethodSignature.m +[6] Modifiying -(NSArgumentInfo)argumentInfoAtIndex:(unsigned)index */ + +void test1(); +void test2(); +void test3(); +void test4(); +void test5(); +void test6(); + +int +main () +{ + test1(); + test2(); + test3(); + test4(); + test5(); + test6(); +} + +void +test1() +{ + Pair * ipair = [Pair new]; + SEL sel = @selector(member:); + Class c = [Pair class]; + Invocation * inv; + TYPE result; + inv = [[MethodInvocation alloc] + initWithTarget: ipair + selector: sel, c]; + [inv invoke]; + [inv getReturnValue: &result]; + fprintf(stderr, "test1 YES == %s\n", result? "YES": "NO"); +} + +void +test2() +{ + Pair * ipair = [Pair new]; + SEL sel = @selector(plus:); + SEL sel_ptr = @selector(plus_ptr:); + struct pair pair0; + struct pair * pair0_ptr; + Invocation * inv; + TYPE result; + + pair0.i = 3; + pair0.j = 4; + + inv = [[MethodInvocation alloc] + initWithTarget: ipair + selector: sel, pair0]; + [inv invoke]; + [inv getReturnValue: &result]; + fprintf(stderr, "test2-1 %d == 7\n", result); + + pair0_ptr = &pair0; + pair0_ptr->i = 2; + pair0_ptr->j = 3; + inv = [[MethodInvocation alloc] + initWithTarget: ipair + selector: sel_ptr, &pair0]; + [inv invoke]; + [inv getReturnValue: &result]; + fprintf(stderr, "test2-2 %d == 5\n", result); +} + +void +test3() +{ + Pair * ipair = [Pair new]; + struct pair pair0; + NSInvocation * inv; + TYPE x; + pair0.i = 1; + pair0.j = 2; + inv = NS_INVOCATION(Pair , + plus:, + pair0); + [inv setTarget: ipair]; + [inv invoke]; + [inv getReturnValue: &x]; + fprintf(stderr, "test3 3 == %d\n", x); +} + +void +test4() +{ + Pair * ipair = [Pair new]; + struct pair pair0; + NSInvocation * inv; + TYPE x; + pair0.i = 3; + pair0.j = 8; + inv = NS_MESSAGE(ipair , + plus_ptr:, + &pair0); // Method with args + [inv invoke]; + [inv getReturnValue: &x]; + fprintf(stderr, "test4 11 == %d\n", x); +} + +void +test5() +{ + Pair * ipair = [Pair new]; + NSInvocation * inv; + int x; + + inv = NS_MESSAGE(ipair, + hash); // Method with NO args + [inv invoke]; + [inv getReturnValue: &x]; + fprintf(stderr, "test5 hash value of an object == %d\n", x); +} + +void +test6() +{ + NSObject * foo = [NSObject new]; + NSArgumentInfo info; + SEL sel = @selector(isKindOfClass:); + NSMethodSignature * ms = [foo methodSignatureForSelector: sel]; + info = [ms argumentInfoAtIndex: 0]; + fprintf(stderr, "test6 (%d, %d, %s)\n", info.offset, info.size, info.type); + info = [ms argumentInfoAtIndex: 1]; + fprintf(stderr, "test6 (%d, %d, %s)\n", info.offset, info.size, info.type); + info = [ms argumentInfoAtIndex: 2]; + fprintf(stderr, "test6 (%d, %d, %s)\n", info.offset, info.size, info.type); +} + +#undef TYPE diff --git a/Testing/invocation_short.m b/Testing/invocation_short.m new file mode 100644 index 000000000..0a7216555 --- /dev/null +++ b/Testing/invocation_short.m @@ -0,0 +1,178 @@ +#include +#include +#include +#include + +#define TYPE short + +struct pair { + TYPE i; + TYPE j; +}; + +@interface Pair: NSObject +- (TYPE)member:(Class)c; +- (TYPE)plus: (struct pair) pair; +- (TYPE)plus_ptr: (struct pair*) pair_ptr; +@end + +@implementation Pair +- (TYPE)member:(Class)c +{ + if ([self class] == c) + return YES; + else + return NO; +} +- (TYPE)plus: (struct pair) pair +{ + return (pair.i + pair.j); +} +- (TYPE)plus_ptr: (struct pair*) pair_ptr +{ + return (pair_ptr->i + pair_ptr->j); +} +@end +/* Invocation.m +- initWithTarget: target selector: (SEL)s, ... +[1] Adding CASE_TYPE(_C_CLASS, Class); +[2] Adding default: block + + NSInvocation.h +[3] Adding NS_INVOCATION +[4, 5] Adding NS_MESSAGE + + NSMethodSignature.m +[6] Modifiying -(NSArgumentInfo)argumentInfoAtIndex:(unsigned)index */ + +void test1(); +void test2(); +void test3(); +void test4(); +void test5(); +void test6(); + +int +main () +{ + test1(); + test2(); + test3(); + test4(); + test5(); + test6(); +} + +void +test1() +{ + Pair * ipair = [Pair new]; + SEL sel = @selector(member:); + Class c = [Pair class]; + Invocation * inv; + TYPE result; + inv = [[MethodInvocation alloc] + initWithTarget: ipair + selector: sel, c]; + [inv invoke]; + [inv getReturnValue: &result]; + fprintf(stderr, "test1 YES == %s\n", result? "YES": "NO"); +} + +void +test2() +{ + Pair * ipair = [Pair new]; + SEL sel = @selector(plus:); + SEL sel_ptr = @selector(plus_ptr:); + struct pair pair0; + struct pair * pair0_ptr; + Invocation * inv; + TYPE result; + + pair0.i = 3; + pair0.j = 4; + + inv = [[MethodInvocation alloc] + initWithTarget: ipair + selector: sel, pair0]; + [inv invoke]; + [inv getReturnValue: &result]; + fprintf(stderr, "test2-1 %d == 7\n", result); + + pair0_ptr = &pair0; + pair0_ptr->i = 2; + pair0_ptr->j = 3; + inv = [[MethodInvocation alloc] + initWithTarget: ipair + selector: sel_ptr, &pair0]; + [inv invoke]; + [inv getReturnValue: &result]; + fprintf(stderr, "test2-2 %d == 5\n", result); +} + +void +test3() +{ + Pair * ipair = [Pair new]; + struct pair pair0; + NSInvocation * inv; + TYPE x; + pair0.i = 1; + pair0.j = 2; + inv = NS_INVOCATION(Pair , + plus:, + pair0); + [inv setTarget: ipair]; + [inv invoke]; + [inv getReturnValue: &x]; + fprintf(stderr, "test3 3 == %d\n", x); +} + +void +test4() +{ + Pair * ipair = [Pair new]; + struct pair pair0; + NSInvocation * inv; + TYPE x; + pair0.i = 3; + pair0.j = 8; + inv = NS_MESSAGE(ipair , + plus_ptr:, + &pair0); // Method with args + [inv invoke]; + [inv getReturnValue: &x]; + fprintf(stderr, "test4 11 == %d\n", x); +} + +void +test5() +{ + Pair * ipair = [Pair new]; + NSInvocation * inv; + int x; + + inv = NS_MESSAGE(ipair, + hash); // Method with NO args + [inv invoke]; + [inv getReturnValue: &x]; + fprintf(stderr, "test5 hash value of an object == %d\n", x); +} + +void +test6() +{ + NSObject * foo = [NSObject new]; + NSArgumentInfo info; + SEL sel = @selector(isKindOfClass:); + NSMethodSignature * ms = [foo methodSignatureForSelector: sel]; + info = [ms argumentInfoAtIndex: 0]; + fprintf(stderr, "test6 (%d, %d, %s)\n", info.offset, info.size, info.type); + info = [ms argumentInfoAtIndex: 1]; + fprintf(stderr, "test6 (%d, %d, %s)\n", info.offset, info.size, info.type); + info = [ms argumentInfoAtIndex: 2]; + fprintf(stderr, "test6 (%d, %d, %s)\n", info.offset, info.size, info.type); +} + +#undef TYPE