Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(199)

Unified Diff: third_party/ocmock/OCMock/OCMRealObjectForwarder.m

Issue 2410583002: Test update OCMock (Closed)
Patch Set: Patch in exactly 3.1.5 Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/ocmock/OCMock/OCMRealObjectForwarder.h ('k') | third_party/ocmock/OCMock/OCMRecorder.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/ocmock/OCMock/OCMRealObjectForwarder.m
diff --git a/third_party/ocmock/OCMock/OCMRealObjectForwarder.m b/third_party/ocmock/OCMock/OCMRealObjectForwarder.m
index 7c0a7db14e57fa18156246840e9146d6c351aa86..2864c5147cd05058aeb74eb50a4e10dd886762ae 100644
--- a/third_party/ocmock/OCMock/OCMRealObjectForwarder.m
+++ b/third_party/ocmock/OCMock/OCMRealObjectForwarder.m
@@ -1,28 +1,47 @@
-//---------------------------------------------------------------------------------------
-// $Id$
-// Copyright (c) 2010 by Mulle Kybernetik. See License file for details.
-//---------------------------------------------------------------------------------------
+/*
+ * Copyright (c) 2010-2015 Erik Doernenburg and contributors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may
+ * not use these files except in compliance with the License. You may obtain
+ * a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ */
#import <objc/runtime.h>
#import "OCPartialMockObject.h"
#import "OCMRealObjectForwarder.h"
-
+#import "OCMFunctions.h"
@implementation OCMRealObjectForwarder
- (void)handleInvocation:(NSInvocation *)anInvocation
{
id invocationTarget = [anInvocation target];
- SEL invocationSelector = [anInvocation selector];
- SEL aliasedSelector = NSSelectorFromString([OCMRealMethodAliasPrefix stringByAppendingString:NSStringFromSelector(invocationSelector)]);
-
- [anInvocation setSelector:aliasedSelector];
- if([invocationTarget isProxy] && (class_getInstanceMethod([invocationTarget class], @selector(realObject))))
- {
- // the method has been invoked on the mock, we need to change the target to the real object
- [anInvocation setTarget:[(OCPartialMockObject *)invocationTarget realObject]];
- }
- [anInvocation invoke];
+
+ [anInvocation
+ setSelector:OCMAliasForOriginalSelector([anInvocation selector])];
+ if ([invocationTarget isProxy]) {
+ if (class_getInstanceMethod([invocationTarget mockObjectClass],
+ @selector(realObject))) {
+ // the method has been invoked on the mock, we need to change the
+ // target to the real object
+ [anInvocation
+ setTarget:[(OCPartialMockObject*)invocationTarget realObject]];
+ } else {
+ [NSException raise:NSInternalInconsistencyException
+ format:@"Method andForwardToRealObject can only be "
+ @"used with partial mocks and class methods."];
+ }
+ }
+
+ [anInvocation invoke];
}
« no previous file with comments | « third_party/ocmock/OCMock/OCMRealObjectForwarder.h ('k') | third_party/ocmock/OCMock/OCMRecorder.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698