Index: third_party/ocmock/OCMock/OCObserverMockObject.m |
diff --git a/third_party/ocmock/OCMock/OCObserverMockObject.m b/third_party/ocmock/OCMock/OCObserverMockObject.m |
old mode 100644 |
new mode 100755 |
index 74be80da05640a5ba5770cefec7ae8ffae9417b4..85495ef52ecf639d9ac74c73c4e6714d1126d266 |
--- a/third_party/ocmock/OCMock/OCObserverMockObject.m |
+++ b/third_party/ocmock/OCMock/OCObserverMockObject.m |
@@ -1,10 +1,23 @@ |
-//--------------------------------------------------------------------------------------- |
-// $Id$ |
-// Copyright (c) 2009 by Mulle Kybernetik. See License file for details. |
-//--------------------------------------------------------------------------------------- |
+/* |
+ * Copyright (c) 2009-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 "OCObserverMockObject.h" |
#import "OCMObserverRecorder.h" |
+#import "OCMLocation.h" |
+#import "OCMFunctionsPrivate.h" |
@implementation OCObserverMockObject |
@@ -13,13 +26,25 @@ |
- (id)init |
{ |
- self = [super init]; |
- recorders = [[NSMutableArray alloc] init]; |
+ if ((self = [super init])) |
+ { |
+ recorders = [[NSMutableArray alloc] init]; |
+ centers = [[NSMutableArray alloc] init]; |
+ } |
+ |
return self; |
} |
+- (id)retain |
+{ |
+ return [super retain]; |
+} |
+ |
- (void)dealloc |
{ |
+ for(NSNotificationCenter *c in centers) |
+ [c removeObserver:self]; |
+ [centers release]; |
[recorders release]; |
[super dealloc]; |
} |
@@ -34,6 +59,11 @@ |
expectationOrderMatters = flag; |
} |
+- (void)autoRemoveFromCenter:(NSNotificationCenter *)aCenter |
+{ |
+ [centers addObject:aCenter]; |
+} |
+ |
#pragma mark Public API |
@@ -46,19 +76,33 @@ |
- (void)verify |
{ |
- if([recorders count] == 1) |
- { |
- [NSException raise:NSInternalInconsistencyException format:@"%@: expected notification was not observed: %@", |
- [self description], [[recorders lastObject] description]]; |
- } |
- if([recorders count] > 0) |
- { |
- [NSException raise:NSInternalInconsistencyException format:@"%@ : %ld expected notifications were not observed.", |
- [self description], (unsigned long)[recorders count]]; |
- } |
+ [self verifyAtLocation:nil]; |
+} |
+ |
+- (void)verifyAtLocation:(OCMLocation *)location |
+{ |
+ if([recorders count] == 1) |
+ { |
+ NSString *description = [NSString stringWithFormat:@"%@: expected notification was not observed: %@", |
+ [self description], [[recorders lastObject] description]]; |
+ OCMReportFailure(location, description); |
+ } |
+ else if([recorders count] > 0) |
+ { |
+ NSString *description = [NSString stringWithFormat:@"%@ : %@ expected notifications were not observed.", |
+ [self description], @([recorders count])]; |
+ OCMReportFailure(location, description); |
+ } |
} |
+#pragma mark Receiving recording requests via macro |
+ |
+- (void)notificationWithName:(NSString *)name object:(id)sender |
+{ |
+ [[self expect] notificationWithName:name object:sender]; |
+} |
+ |
#pragma mark Receiving notifications |