summaryrefslogtreecommitdiffstats
path: root/third_party/ocmock/OCMock/OCMConstraint.m
diff options
context:
space:
mode:
authormark@chromium.org <mark@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-09-23 20:33:14 +0000
committermark@chromium.org <mark@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-09-23 20:33:14 +0000
commit05a6a89d5c81770ed543d3eccf87c6495b42a869 (patch)
tree58f507fcbebd847de40dec5b3d1ab5956f4ea700 /third_party/ocmock/OCMock/OCMConstraint.m
parent48283f82ca649df36f46b3618ad45f86a6fc412d (diff)
downloadchromium_src-05a6a89d5c81770ed543d3eccf87c6495b42a869.zip
chromium_src-05a6a89d5c81770ed543d3eccf87c6495b42a869.tar.gz
chromium_src-05a6a89d5c81770ed543d3eccf87c6495b42a869.tar.bz2
Move OCMock from third_party/ocmock to third_party/ocmock/OCMock
"...may be suffering from what we in the soft sciences call 'Obsessive Compulsive Disorder,' or the 'The O.C. Disorder.'" Here's what we're doing: mkdir OCMock svn add OCMock for i in * ; do if [ "${i}" != "OCMock" ] && [ "${i}" != "README.chromium" ] ; then svn move "${i}" OCMock fi done and make the SVN URL in README.chromium a tiny bit more specific. Review URL: http://codereview.chromium.org/220017 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@26969 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'third_party/ocmock/OCMock/OCMConstraint.m')
-rw-r--r--third_party/ocmock/OCMock/OCMConstraint.m114
1 files changed, 114 insertions, 0 deletions
diff --git a/third_party/ocmock/OCMock/OCMConstraint.m b/third_party/ocmock/OCMock/OCMConstraint.m
new file mode 100644
index 0000000..d04c9ce
--- /dev/null
+++ b/third_party/ocmock/OCMock/OCMConstraint.m
@@ -0,0 +1,114 @@
+//---------------------------------------------------------------------------------------
+// $Id: $
+// Copyright (c) 2007-2008 by Mulle Kybernetik. See License file for details.
+//---------------------------------------------------------------------------------------
+
+#import <OCMock/OCMConstraint.h>
+
+
+@implementation OCMConstraint
+
++ (id)constraint
+{
+ return [[[self alloc] init] autorelease];
+}
+
+- (BOOL)evaluate:(id)value
+{
+ return NO;
+}
+
+
++ (id)constraintWithSelector:(SEL)aSelector onObject:(id)anObject
+{
+ OCMInvocationConstraint *constraint = [OCMInvocationConstraint constraint];
+ NSMethodSignature *signature = [anObject methodSignatureForSelector:aSelector];
+ if(signature == nil)
+ [NSException raise:NSInvalidArgumentException format:@"Unkown selector %@ used in constraint.", NSStringFromSelector(aSelector)];
+ NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature];
+ [invocation setTarget:anObject];
+ [invocation setSelector:aSelector];
+ constraint->invocation = invocation;
+ return constraint;
+}
+
++ (id)constraintWithSelector:(SEL)aSelector onObject:(id)anObject withValue:(id)aValue
+{
+ OCMInvocationConstraint *constraint = [self constraintWithSelector:aSelector onObject:anObject];
+ if([[constraint->invocation methodSignature] numberOfArguments] < 4)
+ [NSException raise:NSInvalidArgumentException format:@"Constraint with value requires selector with two arguments."];
+ [constraint->invocation setArgument:&aValue atIndex:3];
+ return constraint;
+}
+
+@end
+
+
+
+#pragma mark -
+
+@implementation OCMAnyConstraint
+
+- (BOOL)evaluate:(id)value
+{
+ return YES;
+}
+
+@end
+
+
+
+#pragma mark -
+
+@implementation OCMIsNilConstraint
+
+- (BOOL)evaluate:(id)value
+{
+ return value == nil;
+}
+
+@end
+
+
+
+#pragma mark -
+
+@implementation OCMIsNotNilConstraint
+
+- (BOOL)evaluate:(id)value
+{
+ return value != nil;
+}
+
+@end
+
+
+
+#pragma mark -
+
+@implementation OCMIsNotEqualConstraint
+
+- (BOOL)evaluate:(id)value
+{
+ return ![value isEqualTo:testValue];
+}
+
+@end
+
+
+
+#pragma mark -
+
+@implementation OCMInvocationConstraint
+
+- (BOOL)evaluate:(id)value
+{
+ [invocation setArgument:&value atIndex:2]; // should test if constraint takes arg
+ [invocation invoke];
+ BOOL returnValue;
+ [invocation getReturnValue:&returnValue];
+ return returnValue;
+}
+
+@end
+