Add separate test for forwardingTargetForSelector and forwardInvocation

This commit is contained in:
Frederik Carlier 2024-11-17 16:37:49 +01:00
parent e62ec64c17
commit b1d96dd2d2
No known key found for this signature in database
GPG key ID: 11638A1220ED91C7
2 changed files with 55 additions and 25 deletions

View file

@ -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)

View 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;
}