mirror of
https://github.com/gnustep/libs-base.git
synced 2025-04-23 09:04:13 +00:00
Add separate test for forwardingTargetForSelector and forwardInvocation
This commit is contained in:
parent
e62ec64c17
commit
b1d96dd2d2
2 changed files with 55 additions and 25 deletions
|
@ -9,9 +9,6 @@
|
|||
|
||||
- (id) initWithItem: (NSString*)item;
|
||||
- (NSString*) originalItem;
|
||||
- (id) target;
|
||||
- (SEL)action;
|
||||
- (void) action: (id)sender;
|
||||
@end
|
||||
|
||||
@implementation GSFakeNSString
|
||||
|
@ -30,23 +27,6 @@
|
|||
return _originalItem;
|
||||
}
|
||||
|
||||
- (id)target
|
||||
{
|
||||
return self;
|
||||
}
|
||||
|
||||
- (SEL)action
|
||||
{
|
||||
return @selector(action:);
|
||||
}
|
||||
|
||||
- (id)forwardingTargetForSelector:(SEL)selector
|
||||
{
|
||||
if ([_originalItem respondsToSelector:selector])
|
||||
return _originalItem;
|
||||
return nil;
|
||||
}
|
||||
|
||||
- (void)forwardInvocation:(NSInvocation *)invocation
|
||||
{
|
||||
SEL selector = [invocation selector];
|
||||
|
@ -67,11 +47,6 @@
|
|||
}
|
||||
return(signature);
|
||||
}
|
||||
|
||||
- (void)doesNotRecognizeSelector:(SEL)selector
|
||||
{
|
||||
NSLog(@"%s:selector not recognized: %@", __PRETTY_FUNCTION__, NSStringFromSelector(selector));
|
||||
}
|
||||
@end
|
||||
|
||||
int main(int argc,char **argv)
|
55
Tests/base/GSFFIInvocation/forwardingTargetForSelector.m
Normal file
55
Tests/base/GSFFIInvocation/forwardingTargetForSelector.m
Normal file
|
@ -0,0 +1,55 @@
|
|||
#import <Foundation/Foundation.h>
|
||||
#import "Testing.h"
|
||||
#import "ObjectTesting.h"
|
||||
|
||||
@interface GSFakeNSString : NSObject
|
||||
{
|
||||
NSString* _originalItem;
|
||||
}
|
||||
|
||||
- (id) initWithItem: (NSString*)item;
|
||||
- (NSString*) originalItem;
|
||||
@end
|
||||
|
||||
@implementation GSFakeNSString
|
||||
- (id) initWithItem: (NSString*)item
|
||||
{
|
||||
self = [super init];
|
||||
if (self)
|
||||
{
|
||||
_originalItem = item;
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (NSString*) originalItem
|
||||
{
|
||||
return _originalItem;
|
||||
}
|
||||
|
||||
- (id)forwardingTargetForSelector:(SEL)selector
|
||||
{
|
||||
if ([_originalItem respondsToSelector:selector])
|
||||
return _originalItem;
|
||||
return nil;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
int main(int argc,char **argv)
|
||||
{
|
||||
START_SET("GSFFIInvocation")
|
||||
|
||||
NSString *string = @"Hello, World!";
|
||||
|
||||
GSFakeNSString *fakeString = [[GSFakeNSString alloc] initWithItem:string];
|
||||
|
||||
NSString *upperCaseString = [string uppercaseString];
|
||||
NSString *fakeUpperCaseString = [fakeString uppercaseString];
|
||||
|
||||
NSLog(@"Upper case string: %@, fake upper case string: %@", upperCaseString, fakeUpperCaseString);
|
||||
PASS_EQUAL(upperCaseString, fakeUpperCaseString, "uppercaseString selector is forwarded from the fake string to the actual NSString object");
|
||||
|
||||
END_SET("GSFFIInvocation")
|
||||
return 0;
|
||||
}
|
Loading…
Reference in a new issue