Upstream version 11.40.277.0
[platform/framework/web/crosswalk.git] / src / third_party / ocmock / OCMock / OCMRealObjectForwarder.m
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