• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1//---------------------------------------------------------------------------------------
2//  $Id$
3//  Copyright (c) 2010 by Mulle Kybernetik. See License file for details.
4//---------------------------------------------------------------------------------------
5
6#import <objc/runtime.h>
7#import "OCPartialMockObject.h"
8#import "OCMRealObjectForwarder.h"
9
10
11@implementation OCMRealObjectForwarder
12
13- (void)handleInvocation:(NSInvocation *)anInvocation
14{
15	id invocationTarget = [anInvocation target];
16	SEL invocationSelector = [anInvocation selector];
17	SEL aliasedSelector = NSSelectorFromString([OCMRealMethodAliasPrefix stringByAppendingString:NSStringFromSelector(invocationSelector)]);
18
19	[anInvocation setSelector:aliasedSelector];
20	if([invocationTarget isProxy] && (class_getInstanceMethod([invocationTarget class], @selector(realObject))))
21	{
22		// the method has been invoked on the mock, we need to change the target to the real object
23		[anInvocation setTarget:[(OCPartialMockObject *)invocationTarget realObject]];
24	}
25	[anInvocation invoke];
26}
27
28
29@end
30