summaryrefslogtreecommitdiffstats
path: root/third_party
diff options
context:
space:
mode:
authordmaclach@chromium.org <dmaclach@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-24 20:18:10 +0000
committerdmaclach@chromium.org <dmaclach@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-24 20:18:10 +0000
commit6c71a72e2f4dd37ea31eff0c09bb83a6b1539a1f (patch)
treeb6657ba3da5bba070d881dfc3d92bf9f4023a9a2 /third_party
parentaad6357265c991a44a6172dd8fb8639ac2f639cc (diff)
downloadchromium_src-6c71a72e2f4dd37ea31eff0c09bb83a6b1539a1f.zip
chromium_src-6c71a72e2f4dd37ea31eff0c09bb83a6b1539a1f.tar.gz
chromium_src-6c71a72e2f4dd37ea31eff0c09bb83a6b1539a1f.tar.bz2
Added some enhancements to OCMock.
BUG=NONE TEST=BUILD Review URL: http://codereview.chromium.org/7004036 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@86474 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'third_party')
-rw-r--r--third_party/ocmock/README.chromium4
-rw-r--r--third_party/ocmock/ocmock.gyp4
-rw-r--r--third_party/ocmock/ocmock_extensions.h50
-rw-r--r--third_party/ocmock/ocmock_extensions.mm72
4 files changed, 128 insertions, 2 deletions
diff --git a/third_party/ocmock/README.chromium b/third_party/ocmock/README.chromium
index a778fe7..1714bea 100644
--- a/third_party/ocmock/README.chromium
+++ b/third_party/ocmock/README.chromium
@@ -12,5 +12,5 @@ with the concept of mock objects please visit mockobjects.com which has more
details and discussions about this approach to testing software.
Local Modifications:
-No Modifications
-
+gtest_support.h/.mm and ocmock_extensions.h/.mm are not part of the
+ocmock package, and are chromium specific additions.
diff --git a/third_party/ocmock/ocmock.gyp b/third_party/ocmock/ocmock.gyp
index f0a000d..ed1f6cf 100644
--- a/third_party/ocmock/ocmock.gyp
+++ b/third_party/ocmock/ocmock.gyp
@@ -23,6 +23,10 @@
'gtest_support.h',
'gtest_support.mm',
+ # Some extra features to make using OCMock easier.
+ 'ocmock_extensions.h',
+ 'ocmock_extensions.mm',
+
# OCMock sources.
'OCMock/NSInvocation+OCMAdditions.h',
'OCMock/OCMObserverRecorder.m',
diff --git a/third_party/ocmock/ocmock_extensions.h b/third_party/ocmock/ocmock_extensions.h
new file mode 100644
index 0000000..53e0c15
--- /dev/null
+++ b/third_party/ocmock/ocmock_extensions.h
@@ -0,0 +1,50 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef THIRD_PARTY_OCMOCK_OCMOCK_EXTENSIONS_H_
+#define THIRD_PARTY_OCMOCK_OCMOCK_EXTENSIONS_H_
+
+#import <Foundation/Foundation.h>
+
+#import "third_party/ocmock/OCMock/OCMock.h"
+
+// Some enhancements to OCMock to make it easier to write mocks.
+// Pointers to objects still have to be handled with
+// - (id)andReturnValue:OCMOCK_VALUE(blah)
+// to keep the types working correctly.
+@interface OCMockRecorder(CrExtensions)
+- (id)andReturnChar:(char)value;
+- (id)andReturnUnsignedChar:(unsigned char)value;
+- (id)andReturnShort:(short)value;
+- (id)andReturnUnsignedShort:(unsigned short)value;
+- (id)andReturnInt:(int)value;
+- (id)andReturnUnsignedInt:(unsigned int)value;
+- (id)andReturnLong:(long)value;
+- (id)andReturnUnsignedLong:(unsigned long)value;
+- (id)andReturnLongLong:(long long)value;
+- (id)andReturnUnsignedLongLong:(unsigned long long)value;
+- (id)andReturnFloat:(float)value;
+- (id)andReturnDouble:(double)value;
+- (id)andReturnBool:(BOOL)value;
+- (id)andReturnInteger:(NSInteger)value;
+- (id)andReturnUnsignedInteger:(NSUInteger)value;
+- (id)andReturnNSRect:(NSRect)rect;
+- (id)andReturnCGRect:(CGRect)rect;
+- (id)andReturnNSPoint:(NSPoint)point;
+- (id)andReturnCGPoint:(CGPoint)point;
+@end
+
+// A constraint for verifying that something conforms to a protocol.
+@interface cr_OCMConformToProtocolConstraint : OCMConstraint {
+ @private
+ Protocol* protocol_;
+}
+- (id)initWithProtocol:(Protocol*)protocol;
+@end
+
+@interface OCMArg(CrExtensions)
++ (id)conformsToProtocol:(Protocol*)protocol;
+@end
+
+#endif // THIRD_PARTY_OCMOCK_OCMOCK_EXTENSIONS_H_
diff --git a/third_party/ocmock/ocmock_extensions.mm b/third_party/ocmock/ocmock_extensions.mm
new file mode 100644
index 0000000..14c3a80
--- /dev/null
+++ b/third_party/ocmock/ocmock_extensions.mm
@@ -0,0 +1,72 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include <objc/runtime.h>
+
+#include "third_party/ocmock/ocmock_extensions.h"
+
+#define CR_OCMOCK_RETURN_IMPL(type_name, type) \
+ - (id)andReturn##type_name:(type)value { \
+ return [self andReturnValue:OCMOCK_VALUE(value)]; \
+ }
+
+@implementation OCMockRecorder(CrExtensions)
+
+CR_OCMOCK_RETURN_IMPL(Char, char);
+CR_OCMOCK_RETURN_IMPL(UnsignedChar, unsigned char);
+CR_OCMOCK_RETURN_IMPL(Short, short);
+CR_OCMOCK_RETURN_IMPL(UnsignedShort, unsigned short);
+CR_OCMOCK_RETURN_IMPL(Int, int);
+CR_OCMOCK_RETURN_IMPL(UnsignedInt, unsigned int);
+CR_OCMOCK_RETURN_IMPL(Long, long);
+CR_OCMOCK_RETURN_IMPL(UnsignedLong, unsigned long);
+CR_OCMOCK_RETURN_IMPL(LongLong, long long);
+CR_OCMOCK_RETURN_IMPL(UnsignedLongLong, unsigned long long);
+CR_OCMOCK_RETURN_IMPL(Float, float);
+CR_OCMOCK_RETURN_IMPL(Double, double);
+CR_OCMOCK_RETURN_IMPL(Bool, BOOL);
+CR_OCMOCK_RETURN_IMPL(Integer, NSInteger);
+CR_OCMOCK_RETURN_IMPL(UnsignedInteger, NSUInteger);
+
+- (id)andReturnNSRect:(NSRect)rect {
+ return [self andReturnValue:[NSValue valueWithRect:rect]];
+}
+
+- (id)andReturnCGRect:(CGRect)rect {
+ return [self andReturnNSRect:NSRectFromCGRect(rect)];
+}
+
+- (id)andReturnNSPoint:(NSPoint)point {
+ return [self andReturnValue:[NSValue valueWithPoint:point]];
+}
+
+- (id)andReturnCGPoint:(CGPoint)point {
+ return [self andReturnNSPoint:NSPointFromCGPoint(point)];
+}
+
+@end
+
+@implementation cr_OCMConformToProtocolConstraint
+
+- (id)initWithProtocol:(Protocol*)protocol {
+ if (self == [super init]) {
+ protocol_ = protocol;
+ }
+ return self;
+}
+
+- (BOOL)evaluate:(id)value {
+ return protocol_conformsToProtocol(protocol_, value);
+}
+
+@end
+
+@implementation OCMArg(CrExtensions)
+
++ (id)conformsToProtocol:(Protocol*)protocol {
+ return [[[cr_OCMConformToProtocolConstraint alloc] initWithProtocol:protocol]
+ autorelease];
+}
+
+@end