From bcf4ea23f7367d1c05e460493cd184d8469c00d4 Mon Sep 17 00:00:00 2001 From: Trent Kocurek Date: Thu, 4 Apr 2013 01:26:51 -0500 Subject: [PATCH 1/9] added and methods to NSArray additions --- ConciseKitSpecs/Spec/NSArrayConciseKitSpec.m | 36 ++++++++++++++++++++ src/NSArray+ConciseKit.h | 2 ++ src/NSArray+ConciseKit.m | 8 +++++ 3 files changed, 46 insertions(+) diff --git a/ConciseKitSpecs/Spec/NSArrayConciseKitSpec.m b/ConciseKitSpecs/Spec/NSArrayConciseKitSpec.m index 7b03b17..e9402a3 100644 --- a/ConciseKitSpecs/Spec/NSArrayConciseKitSpec.m +++ b/ConciseKitSpecs/Spec/NSArrayConciseKitSpec.m @@ -26,6 +26,42 @@ assertThat([array $last], equalTo(@"baz")); }); }); + + describe(@"-$all", ^{ + it(@"returns YES if all values of the array match the specification", ^{ + BOOL allValues = [$arr(@"ant", @"bear", @"cat") $all:^BOOL(NSString *obj) { + return [obj length] >= 3; + }]; + + assertThatBool(allValues, equalToBool(YES)); + }); + + it(@"returns NO if 1 or more values do not match the specification", ^{ + BOOL allValues = [$arr(@"ant", @"bear", @"cat") $all:^BOOL(NSString *obj) { + return [obj length] >= 4; + }]; + + assertThatBool(allValues, equalToBool(NO)); + }); + }); + + describe(@"-$any", ^{ + it(@"should return YES if one or more values match the specification", ^{ + BOOL anyValues = [$arr(@"ant", @"bear", @"cat") $any:^BOOL(NSString *obj) { + return [obj length] >= 4; + }]; + + assertThatBool(anyValues, equalToBool(YES)); + }); + + it(@"should return NO none of the values match the specification", ^{ + BOOL anyValues = [$arr(@"ant", @"bear", @"cat") $any:^BOOL(NSString *obj) { + return [obj length] >= 5; + }]; + + assertThatBool(anyValues, equalToBool(NO)); + }); + }); describe(@"-$at:", ^{ it(@"returns the object at the given index", ^{ diff --git a/src/NSArray+ConciseKit.h b/src/NSArray+ConciseKit.h index 5672317..c0d0039 100644 --- a/src/NSArray+ConciseKit.h +++ b/src/NSArray+ConciseKit.h @@ -4,6 +4,8 @@ - (id)$first; - (id)$last; +- (BOOL)$all:(BOOL (^)(id obj))block; +- (BOOL)$any:(BOOL (^)(id obj))block; - (id)$at:(NSUInteger)index; - (NSArray *)$each:(void (^)(id obj))block; - (NSArray *)$eachWithIndex:(void (^)(id obj, NSUInteger idx))block; diff --git a/src/NSArray+ConciseKit.m b/src/NSArray+ConciseKit.m index 0cfc67d..56aac43 100644 --- a/src/NSArray+ConciseKit.m +++ b/src/NSArray+ConciseKit.m @@ -10,6 +10,14 @@ @implementation NSArray (ConciseKit) return [self lastObject]; } +- (BOOL)$all:(BOOL (^)(id))block { + return [self count] == [[self $select:block] count]; +} + +- (BOOL)$any:(BOOL (^)(id))block { + return [[self $select:block] count] > 0; +} + - (id)$at:(NSUInteger)index { return [self objectAtIndex:index]; } From 09426dee3204888584211f5c17aaea57b31ca9a5 Mon Sep 17 00:00:00 2001 From: Trent Kocurek Date: Fri, 12 Apr 2013 09:42:51 -0500 Subject: [PATCH 2/9] added method --- .../Frameworks/Cedar.framework/Cedar | Bin 22 -> 124604 bytes .../Frameworks/Cedar.framework/Headers | 1 - .../Frameworks/Cedar.framework/Resources | 1 - .../Cedar.framework/Versions/Current | 1 - .../Cedar.framework/Versions/current/Cedar | Bin 0 -> 124604 bytes .../Versions/current/Headers/CDRExampleBase.h | 40 +++ .../current/Headers/CDRExampleParent.h | 12 + .../current/Headers/CDRExampleReporter.h | 9 + .../Versions/current/Headers/CDRFunctions.h | 7 + .../Headers/CDRSharedExampleGroupPool.h | 32 +++ .../Versions/current/Headers/CDRSpec.h | 54 ++++ .../Versions/current/Headers/Cedar.h | 7 + .../Versions/current/Headers/SpecHelper.h | 16 ++ .../Versions/current/Resources/Info.plist | 22 ++ .../Cedar.framework/headers/CDRExampleBase.h | 40 +++ .../headers/CDRExampleParent.h | 12 + .../headers/CDRExampleReporter.h | 9 + .../Cedar.framework/headers/CDRFunctions.h | 7 + .../headers/CDRSharedExampleGroupPool.h | 32 +++ .../Cedar.framework/headers/CDRSpec.h | 54 ++++ .../Cedar.framework/headers/Cedar.h | 7 + .../Cedar.framework/headers/SpecHelper.h | 16 ++ .../Cedar.framework/resources/Info.plist | 22 ++ .../Frameworks/OCHamcrest.framework/Headers | 1 - .../OCHamcrest.framework/Headers/HCAllOf.h | 52 ++++ .../OCHamcrest.framework/Headers/HCAnyOf.h | 52 ++++ .../Headers/HCBaseDescription.h | 30 +++ .../Headers/HCBaseMatcher.h | 21 ++ .../Headers/HCBoxNumber.h | 87 ++++++ .../Headers/HCDescribedAs.h | 56 ++++ .../Headers/HCDescription.h | 46 ++++ .../Headers/HCHasDescription.h | 48 ++++ .../Headers/HCInvocationMatcher.h | 37 +++ .../OCHamcrest.framework/Headers/HCIs.h | 66 +++++ .../Headers/HCIsAnything.h | 61 +++++ .../Headers/HCIsCloseTo.h | 48 ++++ .../Headers/HCIsCollectionContaining.h | 51 ++++ .../Headers/HCIsCollectionOnlyContaining.h | 60 +++++ .../Headers/HCIsDictionaryContaining.h | 43 +++ .../Headers/HCIsDictionaryContainingKey.h | 41 +++ .../Headers/HCIsDictionaryContainingValue.h | 41 +++ .../OCHamcrest.framework/Headers/HCIsEqual.h | 47 ++++ .../Headers/HCIsEqualIgnoringCase.h | 44 ++++ .../Headers/HCIsEqualIgnoringWhiteSpace.h | 45 ++++ .../Headers/HCIsEqualToNumber.h | 185 +++++++++++++ .../OCHamcrest.framework/Headers/HCIsIn.h | 41 +++ .../Headers/HCIsInstanceOf.h | 47 ++++ .../OCHamcrest.framework/Headers/HCIsNil.h | 55 ++++ .../OCHamcrest.framework/Headers/HCIsNot.h | 56 ++++ .../OCHamcrest.framework/Headers/HCIsSame.h | 47 ++++ .../OCHamcrest.framework/Headers/HCMatcher.h | 52 ++++ .../Headers/HCMatcherAssert.h | 36 +++ .../Headers/HCNumberAssert.h | 248 ++++++++++++++++++ .../Headers/HCOrderingComparison.h | 80 ++++++ .../Headers/HCRequireNonNilString.h | 28 ++ .../Headers/HCSelfDescribing.h | 29 ++ .../Headers/HCStringContains.h | 42 +++ .../Headers/HCStringDescription.h | 40 +++ .../Headers/HCStringEndsWith.h | 42 +++ .../Headers/HCStringStartsWith.h | 42 +++ .../Headers/HCSubstringMatcher.h | 19 ++ .../Headers/HCWrapInMatcher.h | 24 ++ .../OCHamcrest.framework/Headers/OCHamcrest.h | 45 ++++ .../OCHamcrest.framework/OCHamcrest | Bin 27 -> 323376 bytes .../Frameworks/OCHamcrest.framework/Resources | 1 - .../OCHamcrest.framework/Resources/Info.plist | 22 ++ .../Resources/InfoPlist.strings | Bin 0 -> 220 bytes .../OCHamcrest.framework/Versions/Current | 1 - .../Versions/Current/Headers/HCAllOf.h | 52 ++++ .../Versions/Current/Headers/HCAnyOf.h | 52 ++++ .../Current/Headers/HCBaseDescription.h | 30 +++ .../Versions/Current/Headers/HCBaseMatcher.h | 21 ++ .../Versions/Current/Headers/HCBoxNumber.h | 87 ++++++ .../Versions/Current/Headers/HCDescribedAs.h | 56 ++++ .../Versions/Current/Headers/HCDescription.h | 46 ++++ .../Current/Headers/HCHasDescription.h | 48 ++++ .../Current/Headers/HCInvocationMatcher.h | 37 +++ .../Versions/Current/Headers/HCIs.h | 66 +++++ .../Versions/Current/Headers/HCIsAnything.h | 61 +++++ .../Versions/Current/Headers/HCIsCloseTo.h | 48 ++++ .../Headers/HCIsCollectionContaining.h | 51 ++++ .../Headers/HCIsCollectionOnlyContaining.h | 60 +++++ .../Headers/HCIsDictionaryContaining.h | 43 +++ .../Headers/HCIsDictionaryContainingKey.h | 41 +++ .../Headers/HCIsDictionaryContainingValue.h | 41 +++ .../Versions/Current/Headers/HCIsEqual.h | 47 ++++ .../Current/Headers/HCIsEqualIgnoringCase.h | 44 ++++ .../Headers/HCIsEqualIgnoringWhiteSpace.h | 45 ++++ .../Current/Headers/HCIsEqualToNumber.h | 185 +++++++++++++ .../Versions/Current/Headers/HCIsIn.h | 41 +++ .../Versions/Current/Headers/HCIsInstanceOf.h | 47 ++++ .../Versions/Current/Headers/HCIsNil.h | 55 ++++ .../Versions/Current/Headers/HCIsNot.h | 56 ++++ .../Versions/Current/Headers/HCIsSame.h | 47 ++++ .../Versions/Current/Headers/HCMatcher.h | 52 ++++ .../Current/Headers/HCMatcherAssert.h | 36 +++ .../Versions/Current/Headers/HCNumberAssert.h | 248 ++++++++++++++++++ .../Current/Headers/HCOrderingComparison.h | 80 ++++++ .../Current/Headers/HCRequireNonNilString.h | 28 ++ .../Current/Headers/HCSelfDescribing.h | 29 ++ .../Current/Headers/HCStringContains.h | 42 +++ .../Current/Headers/HCStringDescription.h | 40 +++ .../Current/Headers/HCStringEndsWith.h | 42 +++ .../Current/Headers/HCStringStartsWith.h | 42 +++ .../Current/Headers/HCSubstringMatcher.h | 19 ++ .../Current/Headers/HCWrapInMatcher.h | 24 ++ .../Versions/Current/Headers/OCHamcrest.h | 45 ++++ .../Versions/Current/OCHamcrest | Bin 0 -> 323376 bytes .../Versions/Current/Resources/Info.plist | 22 ++ .../Current/Resources/InfoPlist.strings | Bin 0 -> 220 bytes .../Frameworks/OCMock.framework/Headers | 1 - .../NSNotificationCenter+OCMAdditions.h | 15 ++ .../OCMock.framework/Headers/OCMArg.h | 33 +++ .../OCMock.framework/Headers/OCMConstraint.h | 64 +++++ .../OCMock.framework/Headers/OCMock.h | 10 + .../OCMock.framework/Headers/OCMockObject.h | 43 +++ .../OCMock.framework/Headers/OCMockRecorder.h | 32 +++ .../Frameworks/OCMock.framework/OCMock | Bin 23 -> 190560 bytes .../Frameworks/OCMock.framework/Resources | 1 - .../OCMock.framework/Resources/Info.plist | 26 ++ .../OCMock.framework/Resources/License.txt | 15 ++ .../OCMock.framework/Versions/Current | 1 - .../NSNotificationCenter+OCMAdditions.h | 15 ++ .../Versions/Current/Headers/OCMArg.h | 33 +++ .../Versions/Current/Headers/OCMConstraint.h | 64 +++++ .../Versions/Current/Headers/OCMock.h | 10 + .../Versions/Current/Headers/OCMockObject.h | 43 +++ .../Versions/Current/Headers/OCMockRecorder.h | 32 +++ .../OCMock.framework/Versions/Current/OCMock | Bin 0 -> 190560 bytes .../Versions/Current/Resources/Info.plist | 26 ++ .../Versions/Current/Resources/License.txt | 15 ++ ConciseKitSpecs/Spec/NSArrayConciseKitSpec.m | 7 + src/NSArray+ConciseKit.h | 1 + src/NSArray+ConciseKit.m | 6 + 134 files changed, 5200 insertions(+), 9 deletions(-) mode change 120000 => 100755 ConciseKitSpecs/Frameworks/Cedar.framework/Cedar delete mode 120000 ConciseKitSpecs/Frameworks/Cedar.framework/Headers delete mode 120000 ConciseKitSpecs/Frameworks/Cedar.framework/Resources delete mode 120000 ConciseKitSpecs/Frameworks/Cedar.framework/Versions/Current create mode 100755 ConciseKitSpecs/Frameworks/Cedar.framework/Versions/current/Cedar create mode 100644 ConciseKitSpecs/Frameworks/Cedar.framework/Versions/current/Headers/CDRExampleBase.h create mode 100644 ConciseKitSpecs/Frameworks/Cedar.framework/Versions/current/Headers/CDRExampleParent.h create mode 100644 ConciseKitSpecs/Frameworks/Cedar.framework/Versions/current/Headers/CDRExampleReporter.h create mode 100644 ConciseKitSpecs/Frameworks/Cedar.framework/Versions/current/Headers/CDRFunctions.h create mode 100644 ConciseKitSpecs/Frameworks/Cedar.framework/Versions/current/Headers/CDRSharedExampleGroupPool.h create mode 100644 ConciseKitSpecs/Frameworks/Cedar.framework/Versions/current/Headers/CDRSpec.h create mode 100644 ConciseKitSpecs/Frameworks/Cedar.framework/Versions/current/Headers/Cedar.h create mode 100644 ConciseKitSpecs/Frameworks/Cedar.framework/Versions/current/Headers/SpecHelper.h create mode 100644 ConciseKitSpecs/Frameworks/Cedar.framework/Versions/current/Resources/Info.plist create mode 100644 ConciseKitSpecs/Frameworks/Cedar.framework/headers/CDRExampleBase.h create mode 100644 ConciseKitSpecs/Frameworks/Cedar.framework/headers/CDRExampleParent.h create mode 100644 ConciseKitSpecs/Frameworks/Cedar.framework/headers/CDRExampleReporter.h create mode 100644 ConciseKitSpecs/Frameworks/Cedar.framework/headers/CDRFunctions.h create mode 100644 ConciseKitSpecs/Frameworks/Cedar.framework/headers/CDRSharedExampleGroupPool.h create mode 100644 ConciseKitSpecs/Frameworks/Cedar.framework/headers/CDRSpec.h create mode 100644 ConciseKitSpecs/Frameworks/Cedar.framework/headers/Cedar.h create mode 100644 ConciseKitSpecs/Frameworks/Cedar.framework/headers/SpecHelper.h create mode 100644 ConciseKitSpecs/Frameworks/Cedar.framework/resources/Info.plist delete mode 120000 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCAllOf.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCAnyOf.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCBaseDescription.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCBaseMatcher.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCBoxNumber.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCDescribedAs.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCDescription.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCHasDescription.h create mode 100755 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCInvocationMatcher.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIs.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsAnything.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsCloseTo.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsCollectionContaining.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsCollectionOnlyContaining.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsDictionaryContaining.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsDictionaryContainingKey.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsDictionaryContainingValue.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsEqual.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsEqualIgnoringCase.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsEqualIgnoringWhiteSpace.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsEqualToNumber.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsIn.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsInstanceOf.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsNil.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsNot.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsSame.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCMatcher.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCMatcherAssert.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCNumberAssert.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCOrderingComparison.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCRequireNonNilString.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCSelfDescribing.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCStringContains.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCStringDescription.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCStringEndsWith.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCStringStartsWith.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCSubstringMatcher.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCWrapInMatcher.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/OCHamcrest.h mode change 120000 => 100755 ConciseKitSpecs/Frameworks/OCHamcrest.framework/OCHamcrest delete mode 120000 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Resources create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Resources/Info.plist create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Resources/InfoPlist.strings delete mode 120000 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCAllOf.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCAnyOf.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCBaseDescription.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCBaseMatcher.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCBoxNumber.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCDescribedAs.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCDescription.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCHasDescription.h create mode 100755 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCInvocationMatcher.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIs.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsAnything.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsCloseTo.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsCollectionContaining.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsCollectionOnlyContaining.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsDictionaryContaining.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsDictionaryContainingKey.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsDictionaryContainingValue.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsEqual.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsEqualIgnoringCase.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsEqualIgnoringWhiteSpace.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsEqualToNumber.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsIn.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsInstanceOf.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsNil.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsNot.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsSame.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCMatcher.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCMatcherAssert.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCNumberAssert.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCOrderingComparison.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCRequireNonNilString.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCSelfDescribing.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCStringContains.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCStringDescription.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCStringEndsWith.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCStringStartsWith.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCSubstringMatcher.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCWrapInMatcher.h create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/OCHamcrest.h create mode 100755 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/OCHamcrest create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Resources/Info.plist create mode 100644 ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Resources/InfoPlist.strings delete mode 120000 ConciseKitSpecs/Frameworks/OCMock.framework/Headers create mode 100644 ConciseKitSpecs/Frameworks/OCMock.framework/Headers/NSNotificationCenter+OCMAdditions.h create mode 100644 ConciseKitSpecs/Frameworks/OCMock.framework/Headers/OCMArg.h create mode 100644 ConciseKitSpecs/Frameworks/OCMock.framework/Headers/OCMConstraint.h create mode 100644 ConciseKitSpecs/Frameworks/OCMock.framework/Headers/OCMock.h create mode 100644 ConciseKitSpecs/Frameworks/OCMock.framework/Headers/OCMockObject.h create mode 100644 ConciseKitSpecs/Frameworks/OCMock.framework/Headers/OCMockRecorder.h mode change 120000 => 100755 ConciseKitSpecs/Frameworks/OCMock.framework/OCMock delete mode 120000 ConciseKitSpecs/Frameworks/OCMock.framework/Resources create mode 100644 ConciseKitSpecs/Frameworks/OCMock.framework/Resources/Info.plist create mode 100644 ConciseKitSpecs/Frameworks/OCMock.framework/Resources/License.txt delete mode 120000 ConciseKitSpecs/Frameworks/OCMock.framework/Versions/Current create mode 100644 ConciseKitSpecs/Frameworks/OCMock.framework/Versions/Current/Headers/NSNotificationCenter+OCMAdditions.h create mode 100644 ConciseKitSpecs/Frameworks/OCMock.framework/Versions/Current/Headers/OCMArg.h create mode 100644 ConciseKitSpecs/Frameworks/OCMock.framework/Versions/Current/Headers/OCMConstraint.h create mode 100644 ConciseKitSpecs/Frameworks/OCMock.framework/Versions/Current/Headers/OCMock.h create mode 100644 ConciseKitSpecs/Frameworks/OCMock.framework/Versions/Current/Headers/OCMockObject.h create mode 100644 ConciseKitSpecs/Frameworks/OCMock.framework/Versions/Current/Headers/OCMockRecorder.h create mode 100755 ConciseKitSpecs/Frameworks/OCMock.framework/Versions/Current/OCMock create mode 100644 ConciseKitSpecs/Frameworks/OCMock.framework/Versions/Current/Resources/Info.plist create mode 100644 ConciseKitSpecs/Frameworks/OCMock.framework/Versions/Current/Resources/License.txt diff --git a/ConciseKitSpecs/Frameworks/Cedar.framework/Cedar b/ConciseKitSpecs/Frameworks/Cedar.framework/Cedar deleted file mode 120000 index 83cbd31..0000000 --- a/ConciseKitSpecs/Frameworks/Cedar.framework/Cedar +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/Cedar \ No newline at end of file diff --git a/ConciseKitSpecs/Frameworks/Cedar.framework/Cedar b/ConciseKitSpecs/Frameworks/Cedar.framework/Cedar new file mode 100755 index 0000000000000000000000000000000000000000..927c9bb1c6fca06e56a9382412d0015a037fc131 GIT binary patch literal 124604 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 O3Gtl9I#{M4@Z@^su literal 0 HcmV?d00001 diff --git a/ConciseKitSpecs/Frameworks/Cedar.framework/Headers b/ConciseKitSpecs/Frameworks/Cedar.framework/Headers deleted file mode 120000 index a177d2a..0000000 --- a/ConciseKitSpecs/Frameworks/Cedar.framework/Headers +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/Headers \ No newline at end of file diff --git a/ConciseKitSpecs/Frameworks/Cedar.framework/Resources b/ConciseKitSpecs/Frameworks/Cedar.framework/Resources deleted file mode 120000 index 953ee36..0000000 --- a/ConciseKitSpecs/Frameworks/Cedar.framework/Resources +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/Resources \ No newline at end of file diff --git a/ConciseKitSpecs/Frameworks/Cedar.framework/Versions/Current b/ConciseKitSpecs/Frameworks/Cedar.framework/Versions/Current deleted file mode 120000 index 8c7e5a6..0000000 --- a/ConciseKitSpecs/Frameworks/Cedar.framework/Versions/Current +++ /dev/null @@ -1 +0,0 @@ -A \ No newline at end of file diff --git a/ConciseKitSpecs/Frameworks/Cedar.framework/Versions/current/Cedar b/ConciseKitSpecs/Frameworks/Cedar.framework/Versions/current/Cedar new file mode 100755 index 0000000000000000000000000000000000000000..927c9bb1c6fca06e56a9382412d0015a037fc131 GIT binary patch literal 124604 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 O3Gtl9I#{M4@Z@^su literal 0 HcmV?d00001 diff --git a/ConciseKitSpecs/Frameworks/Cedar.framework/Versions/current/Headers/CDRExampleBase.h b/ConciseKitSpecs/Frameworks/Cedar.framework/Versions/current/Headers/CDRExampleBase.h new file mode 100644 index 0000000..4aa9969 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/Cedar.framework/Versions/current/Headers/CDRExampleBase.h @@ -0,0 +1,40 @@ +#import +#import "CDRExampleParent.h" + +@protocol CDRExampleReporter; + +typedef void (^CDRSpecBlock)(void); + +enum CDRExampleState { + CDRExampleStateIncomplete = 0x00, + CDRExampleStatePassed = 0x01, + CDRExampleStatePending = 0x03, + CDRExampleStateFailed = 0x07, + CDRExampleStateError = 0x0F +}; +typedef enum CDRExampleState CDRExampleState; + +@interface CDRSpecFailure : NSException ++ (id)specFailureWithReason:(NSString *)reason; +@end + +@interface CDRExampleBase : NSObject { + NSString *text_; + id parent_; +} + +@property (nonatomic, readonly) NSString *text; +@property (nonatomic, assign) id parent; + +- (id)initWithText:(NSString *)text; + +- (void)run; +- (BOOL)hasChildren; +- (NSString *)message; +- (NSString *)fullText; +@end + +@interface CDRExampleBase (RunReporting) +- (CDRExampleState)state; +- (float)progress; +@end diff --git a/ConciseKitSpecs/Frameworks/Cedar.framework/Versions/current/Headers/CDRExampleParent.h b/ConciseKitSpecs/Frameworks/Cedar.framework/Versions/current/Headers/CDRExampleParent.h new file mode 100644 index 0000000..11ae533 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/Cedar.framework/Versions/current/Headers/CDRExampleParent.h @@ -0,0 +1,12 @@ +#import + +@protocol CDRExampleParent + +- (void)setUp; +- (void)tearDown; + +@optional +- (BOOL)hasFullText; +- (NSString *)fullText; + +@end diff --git a/ConciseKitSpecs/Frameworks/Cedar.framework/Versions/current/Headers/CDRExampleReporter.h b/ConciseKitSpecs/Frameworks/Cedar.framework/Versions/current/Headers/CDRExampleReporter.h new file mode 100644 index 0000000..952cd55 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/Cedar.framework/Versions/current/Headers/CDRExampleReporter.h @@ -0,0 +1,9 @@ +#import + +@protocol CDRExampleReporter + +- (void)runWillStartWithGroups:(NSArray *)groups; +- (void)runDidComplete; +- (int)result; + +@end diff --git a/ConciseKitSpecs/Frameworks/Cedar.framework/Versions/current/Headers/CDRFunctions.h b/ConciseKitSpecs/Frameworks/Cedar.framework/Versions/current/Headers/CDRFunctions.h new file mode 100644 index 0000000..8a036a2 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/Cedar.framework/Versions/current/Headers/CDRFunctions.h @@ -0,0 +1,7 @@ +#import + +@protocol CDRExampleReporter; + +int runSpecsWithCustomExampleReporter(NSArray *specClasses, id runner); +int runAllSpecs(); +int runAllSpecsWithCustomExampleReporter(id runner); diff --git a/ConciseKitSpecs/Frameworks/Cedar.framework/Versions/current/Headers/CDRSharedExampleGroupPool.h b/ConciseKitSpecs/Frameworks/Cedar.framework/Versions/current/Headers/CDRSharedExampleGroupPool.h new file mode 100644 index 0000000..d650cfc --- /dev/null +++ b/ConciseKitSpecs/Frameworks/Cedar.framework/Versions/current/Headers/CDRSharedExampleGroupPool.h @@ -0,0 +1,32 @@ +#import + +@protocol CDRSharedExampleGroupPool +@end + +typedef void (^CDRSharedExampleGroupBlock)(NSDictionary *); + +#ifdef __cplusplus +extern "C" { +#endif +void sharedExamplesFor(NSString *, CDRSharedExampleGroupBlock); +void itShouldBehaveLike(NSString *); +#ifdef __cplusplus +} +#endif + +@interface CDRSharedExampleGroupPool : NSObject +@end + +@interface CDRSharedExampleGroupPool (SharedExampleGroupDeclaration) +- (void)declareSharedExampleGroups; +@end + +#define SHARED_EXAMPLE_GROUPS_BEGIN(name) \ +@interface SharedExampleGroupPoolFor##name : CDRSharedExampleGroupPool \ +@end \ +@implementation SharedExampleGroupPoolFor##name \ +- (void)declareSharedExampleGroups { + +#define SHARED_EXAMPLE_GROUPS_END \ +} \ +@end diff --git a/ConciseKitSpecs/Frameworks/Cedar.framework/Versions/current/Headers/CDRSpec.h b/ConciseKitSpecs/Frameworks/Cedar.framework/Versions/current/Headers/CDRSpec.h new file mode 100644 index 0000000..b2f2d5a --- /dev/null +++ b/ConciseKitSpecs/Frameworks/Cedar.framework/Versions/current/Headers/CDRSpec.h @@ -0,0 +1,54 @@ +#import +#import "CDRExampleBase.h" + +@protocol CDRExampleReporter; +@class CDRExampleGroup, SpecHelper; + +@protocol CDRSpec +@end + +extern CDRSpecBlock PENDING; + +#ifdef __cplusplus +extern "C" { +#endif +void describe(NSString *, CDRSpecBlock); +void beforeEach(CDRSpecBlock); +void afterEach(CDRSpecBlock); +void it(NSString *, CDRSpecBlock); +void fail(NSString *); +#ifdef __cplusplus +} +#endif + +@interface CDRSpec : NSObject { + CDRExampleGroup *rootGroup_; + CDRExampleGroup *currentGroup_; +} + +@property (nonatomic, retain) CDRExampleGroup *currentGroup, *rootGroup; +- (void)defineBehaviors; +@end + +@interface CDRSpec (SpecDeclaration) +- (void)declareBehaviors; +@end + +#define SPEC_BEGIN(name) \ +@interface name : CDRSpec \ +@end \ +@implementation name \ +- (void)declareBehaviors { + +#define SPEC_END \ +} \ +@end + +#define DESCRIBE(name) \ +@interface name##Spec : CDRSpec \ +@end \ +@implementation name##Spec \ +- (void)declareBehaviors + +#define DESCRIBE_END \ +@end diff --git a/ConciseKitSpecs/Frameworks/Cedar.framework/Versions/current/Headers/Cedar.h b/ConciseKitSpecs/Frameworks/Cedar.framework/Versions/current/Headers/Cedar.h new file mode 100644 index 0000000..fd96c33 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/Cedar.framework/Versions/current/Headers/Cedar.h @@ -0,0 +1,7 @@ +#if TARGET_OS_IPHONE +#import "CDRFunctions.h" +#import "CedarApplicationDelegate.h" +#import "CDRExampleReporterViewController.h" +#else +#import "CDRFunctions.h" +#endif diff --git a/ConciseKitSpecs/Frameworks/Cedar.framework/Versions/current/Headers/SpecHelper.h b/ConciseKitSpecs/Frameworks/Cedar.framework/Versions/current/Headers/SpecHelper.h new file mode 100644 index 0000000..b645c94 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/Cedar.framework/Versions/current/Headers/SpecHelper.h @@ -0,0 +1,16 @@ +#import "CDRSpec.h" +#import "CDRSharedExampleGroupPool.h" +#import "CDRExampleParent.h" + +@interface SpecHelper : NSObject { + NSMutableDictionary *sharedExampleGroups_, *sharedExampleContext_; +} + +@property (nonatomic, retain, readonly) NSMutableDictionary *sharedExampleContext; + ++ (SpecHelper *)specHelper; + +- (void)beforeEach; +- (void)afterEach; + +@end diff --git a/ConciseKitSpecs/Frameworks/Cedar.framework/Versions/current/Resources/Info.plist b/ConciseKitSpecs/Frameworks/Cedar.framework/Versions/current/Resources/Info.plist new file mode 100644 index 0000000..69da723 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/Cedar.framework/Versions/current/Resources/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + Cedar + CFBundleIdentifier + com.yourcompany.Cedar + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git a/ConciseKitSpecs/Frameworks/Cedar.framework/headers/CDRExampleBase.h b/ConciseKitSpecs/Frameworks/Cedar.framework/headers/CDRExampleBase.h new file mode 100644 index 0000000..4aa9969 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/Cedar.framework/headers/CDRExampleBase.h @@ -0,0 +1,40 @@ +#import +#import "CDRExampleParent.h" + +@protocol CDRExampleReporter; + +typedef void (^CDRSpecBlock)(void); + +enum CDRExampleState { + CDRExampleStateIncomplete = 0x00, + CDRExampleStatePassed = 0x01, + CDRExampleStatePending = 0x03, + CDRExampleStateFailed = 0x07, + CDRExampleStateError = 0x0F +}; +typedef enum CDRExampleState CDRExampleState; + +@interface CDRSpecFailure : NSException ++ (id)specFailureWithReason:(NSString *)reason; +@end + +@interface CDRExampleBase : NSObject { + NSString *text_; + id parent_; +} + +@property (nonatomic, readonly) NSString *text; +@property (nonatomic, assign) id parent; + +- (id)initWithText:(NSString *)text; + +- (void)run; +- (BOOL)hasChildren; +- (NSString *)message; +- (NSString *)fullText; +@end + +@interface CDRExampleBase (RunReporting) +- (CDRExampleState)state; +- (float)progress; +@end diff --git a/ConciseKitSpecs/Frameworks/Cedar.framework/headers/CDRExampleParent.h b/ConciseKitSpecs/Frameworks/Cedar.framework/headers/CDRExampleParent.h new file mode 100644 index 0000000..11ae533 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/Cedar.framework/headers/CDRExampleParent.h @@ -0,0 +1,12 @@ +#import + +@protocol CDRExampleParent + +- (void)setUp; +- (void)tearDown; + +@optional +- (BOOL)hasFullText; +- (NSString *)fullText; + +@end diff --git a/ConciseKitSpecs/Frameworks/Cedar.framework/headers/CDRExampleReporter.h b/ConciseKitSpecs/Frameworks/Cedar.framework/headers/CDRExampleReporter.h new file mode 100644 index 0000000..952cd55 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/Cedar.framework/headers/CDRExampleReporter.h @@ -0,0 +1,9 @@ +#import + +@protocol CDRExampleReporter + +- (void)runWillStartWithGroups:(NSArray *)groups; +- (void)runDidComplete; +- (int)result; + +@end diff --git a/ConciseKitSpecs/Frameworks/Cedar.framework/headers/CDRFunctions.h b/ConciseKitSpecs/Frameworks/Cedar.framework/headers/CDRFunctions.h new file mode 100644 index 0000000..8a036a2 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/Cedar.framework/headers/CDRFunctions.h @@ -0,0 +1,7 @@ +#import + +@protocol CDRExampleReporter; + +int runSpecsWithCustomExampleReporter(NSArray *specClasses, id runner); +int runAllSpecs(); +int runAllSpecsWithCustomExampleReporter(id runner); diff --git a/ConciseKitSpecs/Frameworks/Cedar.framework/headers/CDRSharedExampleGroupPool.h b/ConciseKitSpecs/Frameworks/Cedar.framework/headers/CDRSharedExampleGroupPool.h new file mode 100644 index 0000000..d650cfc --- /dev/null +++ b/ConciseKitSpecs/Frameworks/Cedar.framework/headers/CDRSharedExampleGroupPool.h @@ -0,0 +1,32 @@ +#import + +@protocol CDRSharedExampleGroupPool +@end + +typedef void (^CDRSharedExampleGroupBlock)(NSDictionary *); + +#ifdef __cplusplus +extern "C" { +#endif +void sharedExamplesFor(NSString *, CDRSharedExampleGroupBlock); +void itShouldBehaveLike(NSString *); +#ifdef __cplusplus +} +#endif + +@interface CDRSharedExampleGroupPool : NSObject +@end + +@interface CDRSharedExampleGroupPool (SharedExampleGroupDeclaration) +- (void)declareSharedExampleGroups; +@end + +#define SHARED_EXAMPLE_GROUPS_BEGIN(name) \ +@interface SharedExampleGroupPoolFor##name : CDRSharedExampleGroupPool \ +@end \ +@implementation SharedExampleGroupPoolFor##name \ +- (void)declareSharedExampleGroups { + +#define SHARED_EXAMPLE_GROUPS_END \ +} \ +@end diff --git a/ConciseKitSpecs/Frameworks/Cedar.framework/headers/CDRSpec.h b/ConciseKitSpecs/Frameworks/Cedar.framework/headers/CDRSpec.h new file mode 100644 index 0000000..b2f2d5a --- /dev/null +++ b/ConciseKitSpecs/Frameworks/Cedar.framework/headers/CDRSpec.h @@ -0,0 +1,54 @@ +#import +#import "CDRExampleBase.h" + +@protocol CDRExampleReporter; +@class CDRExampleGroup, SpecHelper; + +@protocol CDRSpec +@end + +extern CDRSpecBlock PENDING; + +#ifdef __cplusplus +extern "C" { +#endif +void describe(NSString *, CDRSpecBlock); +void beforeEach(CDRSpecBlock); +void afterEach(CDRSpecBlock); +void it(NSString *, CDRSpecBlock); +void fail(NSString *); +#ifdef __cplusplus +} +#endif + +@interface CDRSpec : NSObject { + CDRExampleGroup *rootGroup_; + CDRExampleGroup *currentGroup_; +} + +@property (nonatomic, retain) CDRExampleGroup *currentGroup, *rootGroup; +- (void)defineBehaviors; +@end + +@interface CDRSpec (SpecDeclaration) +- (void)declareBehaviors; +@end + +#define SPEC_BEGIN(name) \ +@interface name : CDRSpec \ +@end \ +@implementation name \ +- (void)declareBehaviors { + +#define SPEC_END \ +} \ +@end + +#define DESCRIBE(name) \ +@interface name##Spec : CDRSpec \ +@end \ +@implementation name##Spec \ +- (void)declareBehaviors + +#define DESCRIBE_END \ +@end diff --git a/ConciseKitSpecs/Frameworks/Cedar.framework/headers/Cedar.h b/ConciseKitSpecs/Frameworks/Cedar.framework/headers/Cedar.h new file mode 100644 index 0000000..fd96c33 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/Cedar.framework/headers/Cedar.h @@ -0,0 +1,7 @@ +#if TARGET_OS_IPHONE +#import "CDRFunctions.h" +#import "CedarApplicationDelegate.h" +#import "CDRExampleReporterViewController.h" +#else +#import "CDRFunctions.h" +#endif diff --git a/ConciseKitSpecs/Frameworks/Cedar.framework/headers/SpecHelper.h b/ConciseKitSpecs/Frameworks/Cedar.framework/headers/SpecHelper.h new file mode 100644 index 0000000..b645c94 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/Cedar.framework/headers/SpecHelper.h @@ -0,0 +1,16 @@ +#import "CDRSpec.h" +#import "CDRSharedExampleGroupPool.h" +#import "CDRExampleParent.h" + +@interface SpecHelper : NSObject { + NSMutableDictionary *sharedExampleGroups_, *sharedExampleContext_; +} + +@property (nonatomic, retain, readonly) NSMutableDictionary *sharedExampleContext; + ++ (SpecHelper *)specHelper; + +- (void)beforeEach; +- (void)afterEach; + +@end diff --git a/ConciseKitSpecs/Frameworks/Cedar.framework/resources/Info.plist b/ConciseKitSpecs/Frameworks/Cedar.framework/resources/Info.plist new file mode 100644 index 0000000..69da723 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/Cedar.framework/resources/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + Cedar + CFBundleIdentifier + com.yourcompany.Cedar + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers deleted file mode 120000 index a177d2a..0000000 --- a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/Headers \ No newline at end of file diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCAllOf.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCAllOf.h new file mode 100644 index 0000000..2542e5b --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCAllOf.h @@ -0,0 +1,52 @@ +// +// OCHamcrest - HCAllOf.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCBaseMatcher.h" + + +/** + Calculates the logical conjunction of multiple matchers. + + Evaluation is shortcut, so subsequent matchers are not called if an earlier matcher returns + @c NO. +*/ +@interface HCAllOf : HCBaseMatcher +{ + NSArray* matchers; +} + ++ (HCAllOf*) allOf:(NSArray*)theMatchers; +- (id) initWithMatchers:(NSArray*)theMatchers; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + Evaluates to @c YES only if @b all of the passed in matchers evaluate to @c YES. + + @param matcher Comma-separated list of matchers ending with @c nil. +*/ +id HC_allOf(id matcher, ...); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_allOf, available if HC_SHORTHAND is defined. +*/ +#define allOf HC_allOf + +#endif diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCAnyOf.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCAnyOf.h new file mode 100644 index 0000000..38b84d3 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCAnyOf.h @@ -0,0 +1,52 @@ +// +// OCHamcrest - HCAnyOf.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCBaseMatcher.h" + + +/** + Calculates the logical disjunction of multiple matchers. + + Evaluation is shortcut, so the subsequent matchers are not called if an earlier matcher returns + @c YES. +*/ +@interface HCAnyOf : HCBaseMatcher +{ + NSArray* matchers; +} + ++ (HCAnyOf*) anyOf:(NSArray*)theMatchers; +- (id) initWithMatchers:(NSArray*)theMatchers; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + Evaluates to @c YES if @b any of the passed in matchers evaluate to @c YES. + + @param matcher Comma-separated list of matchers ending with @c nil. +*/ +id HC_anyOf(id matcher, ...); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_anyOf, available if HC_SHORTHAND is defined. +*/ +#define anyOf HC_anyOf + +#endif diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCBaseDescription.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCBaseDescription.h new file mode 100644 index 0000000..18210a2 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCBaseDescription.h @@ -0,0 +1,30 @@ +// +// OCHamcrest - HCBaseDescription.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import +#import "HCDescription.h" + + +/** + Base class for all HCDescription implementations. +*/ +@interface HCBaseDescription : NSObject +@end + + +/** + Methods that must be provided by subclasses of HCBaseDescription. +*/ +@interface HCBaseDescription (SubclassMustImplement) + +/** + Append the string @a str to the description. +*/ +- (void) append:(NSString*)str; + +@end diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCBaseMatcher.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCBaseMatcher.h new file mode 100644 index 0000000..2478736 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCBaseMatcher.h @@ -0,0 +1,21 @@ +// +// OCHamcrest - HCBaseMatcher.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import +#import "HCMatcher.h" + + +/** + Base class for all Matcher implementations. + + Most implementations can just implement matches: and let matches:describingMismatchTo: call + it. But if it makes more sense to generate the mismatch description during the matching, + override matches:describingMismatchTo: and have matches: call it with a nil description. +*/ +@interface HCBaseMatcher : NSObject +@end diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCBoxNumber.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCBoxNumber.h new file mode 100644 index 0000000..692e668 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCBoxNumber.h @@ -0,0 +1,87 @@ +// +// OCHamcrest - HCBoxNumber.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + +#ifdef __cplusplus + +namespace hamcrest { + +/** + Boxes scalar value in NSNumber, specialized per type. +*/ +template +inline +NSNumber* boxNumber(T value) + { return nil; } + +template <> +inline +NSNumber* boxNumber(BOOL value) + { return [NSNumber numberWithBool:value]; } + +template <> +inline +NSNumber* boxNumber(char value) + { return [NSNumber numberWithChar:value]; } + +template <> +inline +NSNumber* boxNumber(double value) + { return [NSNumber numberWithDouble:value]; } + +template <> +inline +NSNumber* boxNumber(float value) + { return [NSNumber numberWithFloat:value]; } + +template <> +inline +NSNumber* boxNumber(int value) + { return [NSNumber numberWithInt:value]; } + +template <> +inline +NSNumber* boxNumber(long value) + { return [NSNumber numberWithLong:value]; } + +template <> +inline +NSNumber* boxNumber(long long value) + { return [NSNumber numberWithLongLong:value]; } + +template <> +inline +NSNumber* boxNumber(short value) + { return [NSNumber numberWithShort:value]; } + +template <> +inline +NSNumber* boxNumber(unsigned char value) + { return [NSNumber numberWithUnsignedChar:value]; } + +template <> +inline +NSNumber* boxNumber(unsigned int value) + { return [NSNumber numberWithUnsignedInt:value]; } + +template <> +inline +NSNumber* boxNumber(unsigned long value) + { return [NSNumber numberWithUnsignedLong:value]; } + +template <> +inline +NSNumber* boxNumber(unsigned long long value) + { return [NSNumber numberWithUnsignedLongLong:value]; } + +template <> +inline +NSNumber* boxNumber(unsigned short value) + { return [NSNumber numberWithUnsignedShort:value]; } + +} // namespace hamcrest + +#endif // __cplusplus diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCDescribedAs.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCDescribedAs.h new file mode 100644 index 0000000..ce01d2a --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCDescribedAs.h @@ -0,0 +1,56 @@ +// +// OCHamcrest - HCDescribedAs.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCBaseMatcher.h" + + +/** + Provides a custom description to another matcher. +*/ +@interface HCDescribedAs : HCBaseMatcher +{ + NSString* descriptionTemplate; + id matcher; + NSArray* values; +} + ++ (HCDescribedAs*) describedAs:(NSString*)description + forMatcher:(id)aMatcher + overValues:(NSArray*)templateValues; +- (id) initWithDescription:(NSString*)description + forMatcher:(id)aMatcher + overValues:(NSArray*)templateValues; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + Wraps an existing matcher and overrides the description when it fails. + + Optional values following the matcher are substituted for \%0, \%1, etc. + The last argument must be nil. +*/ +id HC_describedAs(NSString* description, id matcher, ...); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_describedAs, available if HC_SHORTHAND is defined. +*/ +#define describedAs HC_describedAs + +#endif diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCDescription.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCDescription.h new file mode 100644 index 0000000..b9e56a5 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCDescription.h @@ -0,0 +1,46 @@ +// +// OCHamcrest - HCDescription.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Mac +#import + +@protocol HCSelfDescribing; + + +/** + A description of an HCMatcher. + + An HCMatcher will describe itself to a description which can later be used for reporting. +*/ +@protocol HCDescription + +/** + Appends some plain text to the description. + + @return self +*/ +- (id) appendText:(NSString*)text; + +/** + Appends description of HCSelfDescribing value to self. + + @return self +*/ +- (id) appendDescriptionOf:(id)value; + +/** + Appends an arbitary value to the description. +*/ +- (id) appendValue:(id)value; + +/** + Appends a list of objects to the description. +*/ +- (id) appendList:(NSArray*)values + start:(NSString*)start separator:(NSString*)separator end:(NSString*)end; + +@end diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCHasDescription.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCHasDescription.h new file mode 100644 index 0000000..4811846 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCHasDescription.h @@ -0,0 +1,48 @@ +// +// OCHamcrest - HCHasDescription.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCInvocationMatcher.h" + + +/** + Does the object's description satisfy a given matcher? +*/ +@interface HCHasDescription : HCInvocationMatcher +{ +} + ++ (HCHasDescription*) hasDescription:(id)descriptionMatcher; +- (id) initWithDescription:(id)descriptionMatcher; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + Evaluates whether [item description] satisfies a given matcher. + + Example: hasDescription(equalTo(result)) +*/ +id HC_hasDescription(id item); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_hasDescription, available if HC_SHORTHAND is defined. +*/ +#define hasDescription HC_hasDescription + +#endif diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCInvocationMatcher.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCInvocationMatcher.h new file mode 100755 index 0000000..424e7a0 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCInvocationMatcher.h @@ -0,0 +1,37 @@ +// +// OCHamcrest - HCInvocationMatcher.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCBaseMatcher.h" + + +/** + Supporting class for matching a feature of an object. + + Tests whether the result of passing a given invocation to the value satisfies a given matcher. +*/ +@interface HCInvocationMatcher : HCBaseMatcher +{ + NSInvocation* invocation; + id subMatcher; +} + +/** + Helper method for creating an invocation. + + A class is specified only so we can determine the method signature. +*/ ++ (NSInvocation*) createInvocationForSelector:(SEL)selector onClass:(Class)aClass; + +- (id) initWithInvocation:(NSInvocation*)anInvocation matching:(id)aMatcher; + +/** + Returns string representation of the invocation's selector. +*/ +- (NSString*) stringFromSelector; + +@end diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIs.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIs.h new file mode 100644 index 0000000..be849bc --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIs.h @@ -0,0 +1,66 @@ +// +// OCHamcrest - HCIs.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCBaseMatcher.h" + + +/** + Decorates another HCMatcher, retaining the behavior but allowing tests to be slightly more + expressive. + + For example: +@code +assertThat(cheese, equalTo(smelly)) +@endcode + vs. +@code +assertThat(cheese, is(equalTo(smelly))) +@endcode +*/ +@interface HCIs : HCBaseMatcher +{ + id matcher; +} + ++ (HCIs*) is:(id)aMatcher; +- (id) initWithMatcher:(id)aMatcher; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + Decorates an item, providing shortcuts to the frequently used is(equalTo(x)). + + For example: +@code +assertThat(cheese, is(equalTo(smelly))) +@endcode + vs. +@code +assertThat(cheese, is(smelly)) +@endcode +*/ +id HC_is(id item); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_is, available if HC_SHORTHAND is defined. +*/ +#define is HC_is + +#endif diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsAnything.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsAnything.h new file mode 100644 index 0000000..ddbca36 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsAnything.h @@ -0,0 +1,61 @@ +// +// OCHamcrest - HCIsAnything.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCBaseMatcher.h" + + +/** + A matcher that always returns @c YES. +*/ +@interface HCIsAnything : HCBaseMatcher +{ + NSString* description; +} + ++ (HCIsAnything*) isAnything; ++ (HCIsAnything*) isAnythingWithDescription:(NSString*)aDescription; +- (id) init; +- (id) initWithDescription:(NSString*)aDescription; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + This matcher always evaluates to @c YES. +*/ +id HC_anything(); + +/** + This matcher always evaluates to YES. + + @param aDescription A meaningful string used when describing itself. +*/ +id HC_anythingWithDescription(NSString* aDescription); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_anything, available if HC_SHORTHAND is defined. +*/ +#define anything HC_anything + +/** + Shorthand for HC_anythingWithDescription, available if HC_SHORTHAND is defined. +*/ +#define anythingWithDescription HC_anythingWithDescription + +#endif diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsCloseTo.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsCloseTo.h new file mode 100644 index 0000000..f2fae03 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsCloseTo.h @@ -0,0 +1,48 @@ +// +// OCHamcrest - HCIsCloseTo.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCBaseMatcher.h" + + +/** + Is the value a number equal to a value within some range of acceptable error? +*/ +@interface HCIsCloseTo : HCBaseMatcher +{ + double value; + double error; +} + ++ (HCIsCloseTo*) isCloseTo:(double)aValue within:(double)anError; +- (id) initWithValue:(double)aValue error:(double)anError; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + Is the value a number equal to a value within some range of acceptable error? +*/ +id HC_closeTo(double aValue, double anError); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_closeTo, available if HC_SHORTHAND is defined. +*/ +#define closeTo HC_closeTo + +#endif diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsCollectionContaining.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsCollectionContaining.h new file mode 100644 index 0000000..d5c8320 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsCollectionContaining.h @@ -0,0 +1,51 @@ +// +// OCHamcrest - HCIsCollectionContaining.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCBaseMatcher.h" + + +@interface HCIsCollectionContaining : HCBaseMatcher +{ + id elementMatcher; +} + ++ (HCIsCollectionContaining*) isCollectionContaining:(id)anElementMatcher; +- (id) initWithMatcher:(id)anElementMatcher; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +id HC_hasItem(id item); + +/** + @param item comma-separated list of items ending with nil. +*/ +id HC_hasItems(id item, ...); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_hasItem, available if HC_SHORTHAND is defined. +*/ +#define hasItem HC_hasItem + +/** + Shorthand for HC_hasItems, available if HC_SHORTHAND is defined. +*/ +#define hasItems HC_hasItems + +#endif diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsCollectionOnlyContaining.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsCollectionOnlyContaining.h new file mode 100644 index 0000000..73aad52 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsCollectionOnlyContaining.h @@ -0,0 +1,60 @@ +// +// OCHamcrest - HCIsCollectionOnlyContaining.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCBaseMatcher.h" + + +/** + Matches collections that only contain elements satisfying a given matcher. + + This matcher will never match an empty collection. +*/ +@interface HCIsCollectionOnlyContaining : HCBaseMatcher +{ + id matcher; +} + ++ (HCIsCollectionOnlyContaining*) isCollectionOnlyContaining:(id)aMatcher; +- (id) initWithMatcher:(id)aMatcher; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + Matches collections that only contain elements satisfying any of a list of items. + + For example, + [NSArray arrayWithObjects:@"a", "b", @"c", nil] + would satisfy + onlyContains(lessThan(@"d"), nil). + + If an item is not a matcher, it is equivalent to equalTo(item), so the array in the example + above would also satisfy + onlyContains(@"a", @"b", @"c", nil). + + @param item comma-separated list of items ending with nil. +*/ +id HC_onlyContains(id item, ...); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_onlyContains, available if HC_SHORTHAND is defined. +*/ +#define onlyContains HC_onlyContains + +#endif diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsDictionaryContaining.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsDictionaryContaining.h new file mode 100644 index 0000000..448553b --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsDictionaryContaining.h @@ -0,0 +1,43 @@ +// +// OCHamcrest - HCIsDictionaryContaining.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCBaseMatcher.h" + + +@interface HCIsDictionaryContaining : HCBaseMatcher +{ + id keyMatcher; + id valueMatcher; +} + ++ (HCIsDictionaryContaining*) isDictionaryContainingKey:(id)theKeyMatcher + value:(id)theValueMatcher; +- (id) initWithKeyMatcher:(id)theKeyMatcher valueMatcher:(id)theValueMatcher; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +id HC_hasEntry(id key, id value); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_hasEntry, available if HC_SHORTHAND is defined. +*/ +#define hasEntry HC_hasEntry + +#endif diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsDictionaryContainingKey.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsDictionaryContainingKey.h new file mode 100644 index 0000000..3b75c30 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsDictionaryContainingKey.h @@ -0,0 +1,41 @@ +// +// OCHamcrest - HCIsDictionaryContainingKey.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCBaseMatcher.h" + + +@interface HCIsDictionaryContainingKey : HCBaseMatcher +{ + id keyMatcher; +} + ++ (HCIsDictionaryContainingKey*) isDictionaryContainingKey:(id)theKeyMatcher; +- (id) initWithKeyMatcher:(id)theKeyMatcher; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +id HC_hasKey(id item); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_hasKey, available if HC_SHORTHAND is defined. +*/ +#define hasKey HC_hasKey + +#endif diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsDictionaryContainingValue.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsDictionaryContainingValue.h new file mode 100644 index 0000000..f2332ac --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsDictionaryContainingValue.h @@ -0,0 +1,41 @@ +// +// OCHamcrest - HCIsDictionaryContainingValue.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCBaseMatcher.h" + + +@interface HCIsDictionaryContainingValue : HCBaseMatcher +{ + id valueMatcher; +} + ++ (HCIsDictionaryContainingValue*) isDictionaryContainingValue:(id)theValueMatcher; +- (id) initWithValueMatcher:(id)theValueMatcher; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +id HC_hasValue(id item); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_hasValue, available if HC_SHORTHAND is defined. +*/ +#define hasValue HC_hasValue + +#endif diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsEqual.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsEqual.h new file mode 100644 index 0000000..64801c9 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsEqual.h @@ -0,0 +1,47 @@ +// +// OCHamcrest - HCIsEqual.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCBaseMatcher.h" + + +/** + Is the object equal to another object, as tested by the isEqual: method? +*/ +@interface HCIsEqual : HCBaseMatcher +{ + id object; +} + ++ (HCIsEqual*) isEqualTo:(id)equalArg; +- (id) initEqualTo:(id)equalArg; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + Is the object equal to another object, as tested by the isEqual: method? +*/ +id HC_equalTo(id equalArg); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_equalTo, available if HC_SHORTHAND is defined. +*/ +#define equalTo HC_equalTo + +#endif diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsEqualIgnoringCase.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsEqualIgnoringCase.h new file mode 100644 index 0000000..8986382 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsEqualIgnoringCase.h @@ -0,0 +1,44 @@ +// +// OCHamcrest - HCIsEqualIgnoringCase.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCBaseMatcher.h" + + +/** + Tests if a string is equal to another string, regardless of the case. +*/ +@interface HCIsEqualIgnoringCase : HCBaseMatcher +{ + NSString* string; +} + ++ (HCIsEqualIgnoringCase*) isEqualIgnoringCase:(NSString*)aString; +- (id) initWithString:(NSString*)aString; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +id HC_equalToIgnoringCase(NSString* aString); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_endsWith, available if HC_SHORTHAND is defined. +*/ +#define equalToIgnoringCase HC_equalToIgnoringCase + +#endif diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsEqualIgnoringWhiteSpace.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsEqualIgnoringWhiteSpace.h new file mode 100644 index 0000000..636f257 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsEqualIgnoringWhiteSpace.h @@ -0,0 +1,45 @@ +// +// OCHamcrest - HCIsEqualIgnoringWhiteSpace.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCBaseMatcher.h" + + +/** + Tests if a string is equal to another string, ignoring any changes in whitespace. +*/ +@interface HCIsEqualIgnoringWhiteSpace : HCBaseMatcher +{ + NSString* originalString; + NSString* strippedString; +} + ++ (HCIsEqualIgnoringWhiteSpace*) isEqualIgnoringWhiteSpace:(NSString*)aString; +- (id) initWithString:(NSString*)aString; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +id HC_equalToIgnoringWhiteSpace(NSString* aString); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_endsWith, available if HC_SHORTHAND is defined. +*/ +#define equalToIgnoringWhiteSpace HC_equalToIgnoringWhiteSpace + +#endif diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsEqualToNumber.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsEqualToNumber.h new file mode 100644 index 0000000..70e6407 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsEqualToNumber.h @@ -0,0 +1,185 @@ +// +// OCHamcrest - HCIsEqualToNumber.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCBaseMatcher.h" + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + Is the value, when converted to an NSNumber, equal to another object? +*/ +id HC_equalToBool(BOOL value); + +/** + Is the value, when converted to an NSNumber, equal to another object? +*/ +id HC_equalToChar(char value); + +/** + Is the value, when converted to an NSNumber, equal to another object? +*/ +id HC_equalToDouble(double value); + +/** + Is the value, when converted to an NSNumber, equal to another object? +*/ +id HC_equalToFloat(float value); + +/** + Is the value, when converted to an NSNumber, equal to another object? +*/ +id HC_equalToInt(int value); + +/** + Is the value, when converted to an NSNumber, equal to another object? +*/ +id HC_equalToLong(long value); + +/** + Is the value, when converted to an NSNumber, equal to another object? +*/ +id HC_equalToLongLong(long long value); + +/** + Is the value, when converted to an NSNumber, equal to another object? +*/ +id HC_equalToShort(short value); + +/** + Is the value, when converted to an NSNumber, equal to another object? +*/ +id HC_equalToUnsignedChar(unsigned char value); + +/** + Is the value, when converted to an NSNumber, equal to another object? +*/ +id HC_equalToUnsignedInt(unsigned int value); + +/** + Is the value, when converted to an NSNumber, equal to another object? +*/ +id HC_equalToUnsignedLong(unsigned long value); + +/** + Is the value, when converted to an NSNumber, equal to another object? +*/ +id HC_equalToUnsignedLongLong(unsigned long long value); + +/** + Is the value, when converted to an NSNumber, equal to another object? +*/ +id HC_equalToUnsignedShort(unsigned short value); + + +#if defined(OBJC_API_VERSION) && OBJC_API_VERSION >= 2 + +/** + Is the value, when converted to an NSNumber, equal to another object? +*/ +id HC_equalToInteger(NSInteger value); + +/** + Is the value, when converted to an NSNumber, equal to another object? +*/ +id HC_equalToUnsignedInteger(NSUInteger value); + +#endif // Objective-C 2.0 + + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_equalToBool, available if HC_SHORTHAND is defined. +*/ +#define equalToBool HC_equalToBool + +/** + Shorthand for HC_equalToChar, available if HC_SHORTHAND is defined. +*/ +#define equalToChar HC_equalToChar + +/** + Shorthand for HC_equalToDouble, available if HC_SHORTHAND is defined. +*/ +#define equalToDouble HC_equalToDouble + +/** + Shorthand for HC_equalToFloat, available if HC_SHORTHAND is defined. +*/ +#define equalToFloat HC_equalToFloat + +/** + Shorthand for HC_equalToInt, available if HC_SHORTHAND is defined. +*/ +#define equalToInt HC_equalToInt + +/** + Shorthand for HC_equalToLong, available if HC_SHORTHAND is defined. +*/ +#define equalToLong HC_equalToLong + +/** + Shorthand for HC_equalToLongLong, available if HC_SHORTHAND is defined. +*/ +#define equalToLongLong HC_equalToLongLong + +/** + Shorthand for HC_equalToShort, available if HC_SHORTHAND is defined. +*/ +#define equalToShort HC_equalToShort + +/** + Shorthand for HC_equalToUnsignedChar, available if HC_SHORTHAND is defined. +*/ +#define equalToUnsignedChar HC_equalToUnsignedChar + +/** + Shorthand for HC_equalToUnsignedInt, available if HC_SHORTHAND is defined. +*/ +#define equalToUnsignedInt HC_equalToUnsignedInt + +/** + Shorthand for HC_equalToUnsignedLong, available if HC_SHORTHAND is defined. +*/ +#define equalToUnsignedLong HC_equalToUnsignedLong + +/** + Shorthand for HC_equalToUnsignedLongLong, available if HC_SHORTHAND is defined. +*/ +#define equalToUnsignedLongLong HC_equalToUnsignedLongLong + +/** + Shorthand for HC_equalToUnsignedShort, available if HC_SHORTHAND is defined. +*/ +#define equalToUnsignedShort HC_equalToUnsignedShort + + +#if defined(OBJC_API_VERSION) && OBJC_API_VERSION >= 2 + +/** + Shorthand for HC_equalToInteger, available if HC_SHORTHAND is defined. +*/ +#define equalToInteger HC_equalToInteger + +/** + Shorthand for HC_equalToUnsignedInteger, available if HC_SHORTHAND is defined. +*/ +#define equalToUnsignedInteger HC_equalToUnsignedInteger + +#endif // Objective-C 2.0 + + +#endif // HC_SHORTHAND diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsIn.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsIn.h new file mode 100644 index 0000000..361dfa0 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsIn.h @@ -0,0 +1,41 @@ +// +// OCHamcrest - HCIsIn.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCBaseMatcher.h" + + +@interface HCIsIn : HCBaseMatcher +{ + id collection; +} + ++ (HCIsIn*) isInCollection:(id)aCollection; +- (id) initWithCollection:(id)aCollection; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +id HC_isIn(id collection); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_isIn, available if HC_SHORTHAND is defined. +*/ +#define isIn HC_isIn + +#endif diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsInstanceOf.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsInstanceOf.h new file mode 100644 index 0000000..89cc04e --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsInstanceOf.h @@ -0,0 +1,47 @@ +// +// OCHamcrest - HCIsInstanceOf.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCBaseMatcher.h" + + +/** + Tests whether the value is an instance of a class (including subclasses). +*/ +@interface HCIsInstanceOf : HCBaseMatcher +{ + Class theClass; +} + ++ (HCIsInstanceOf*) isInstanceOf:(Class)type; +- (id) initWithType:(Class)type; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + Is the value an instance of a particular type? +*/ +id HC_instanceOf(Class type); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_instanceOf, available if HC_SHORTHAND is defined. +*/ +#define instanceOf HC_instanceOf + +#endif diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsNil.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsNil.h new file mode 100644 index 0000000..e270411 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsNil.h @@ -0,0 +1,55 @@ +// +// OCHamcrest - HCIsNil.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCBaseMatcher.h" + + +/** + Is the value @c nil? +*/ +@interface HCIsNil : HCBaseMatcher +{ +} + ++ (HCIsNil*) isNil; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + Matches if the value is @c nil. +*/ +id HC_nilValue(); + +/** + Matches if the value is not @c nil. +*/ +id HC_notNilValue(); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_nilValue, available if HC_SHORTHAND is defined. +*/ +#define nilValue HC_nilValue + +/** + Shorthand for HC_notNilValue, available if HC_SHORTHAND is defined. +*/ +#define notNilValue HC_notNilValue + +#endif diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsNot.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsNot.h new file mode 100644 index 0000000..2ff5c7b --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsNot.h @@ -0,0 +1,56 @@ +// +// OCHamcrest - HCIsNot.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCBaseMatcher.h" + + +/** + Calculates the logical negation of a matcher. +*/ +@interface HCIsNot : HCBaseMatcher +{ + id matcher; +} + ++ (HCIsNot*) isNot:(id)aMatcher; +- (id) initNot:(id)aMatcher; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + Inverts the rule, providing a shortcut to the frequently used isNot(equalTo(x)). + + For example: +@code +assertThat(cheese, isNot(equalTo(smelly))) +@endcode + vs. +@code +assertThat(cheese, isNot(smelly)) +@endcode +*/ +id HC_isNot(id item); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_isNot, available if HC_SHORTHAND is defined. +*/ +#define isNot HC_isNot + +#endif diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsSame.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsSame.h new file mode 100644 index 0000000..dbbf29c --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCIsSame.h @@ -0,0 +1,47 @@ +// +// OCHamcrest - HCIsSame.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCBaseMatcher.h" + + +/** + Is the value the same object as another value? +*/ +@interface HCIsSame : HCBaseMatcher +{ + id object; +} + ++ (HCIsSame*) isSameAs:(id)anObject; +- (id) initSameAs:(id)anObject; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + Evaluates to @c YES only when the argument is this same object. +*/ +id HC_sameInstance(id anObject); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_sameInstance, available if HC_SHORTHAND is defined. +*/ +#define sameInstance HC_sameInstance + +#endif diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCMatcher.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCMatcher.h new file mode 100644 index 0000000..77dfd44 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCMatcher.h @@ -0,0 +1,52 @@ +// +// OCHamcrest - HCMatcher.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCSelfDescribing.h" + + +/** + A matcher over acceptable values. + + A matcher is able to describe itself to give feedback when it fails. + + HCMatcher implementations should @b not directly implement this protocol. + Instead, @b extend the HCBaseMatcher class, which will ensure that the HCMatcher API can grow + to support new features and remain compatible with all HCMatcher implementations. +*/ +@protocol HCMatcher + +/** + Evaluates the matcher for argument @a item. + + @param item The object against which the matcher is evaluated. + @return @c YES if @a item matches, otherwise @c NO. +*/ +- (BOOL) matches:(id)item; + +/** + Evaluates the matcher for argument @a item. + + @param item The object against which the matcher is evaluated. + @param mismatchDescription The description to be built or appended to if @item does not match. + @return @c YES if @a item matches, otherwise @c NO. +*/ +- (BOOL) matches:(id)item describingMismatchTo:(id)mismatchDescription; + +/** + Generates a description of why the matcher has not accepted the item. + + The description will be part of a larger description of why a matching failed, so it should be + concise. + This method assumes that @c matches:item is false, but will not check this. + + @param item The item that the HCMatcher has rejected. + @param mismatchDescription The description to be built or appended to. +*/ +- (void) describeMismatchOf:(id)item to:(id)mismatchDescription; + +@end diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCMatcherAssert.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCMatcherAssert.h new file mode 100644 index 0000000..41305a9 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCMatcherAssert.h @@ -0,0 +1,36 @@ +// +// OCHamcrest - HCMatcherAssert.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + +@protocol HCMatcher; + + +#ifdef __cplusplus +extern "C" { +#endif + +void HC_assertThatWithLocation(id testCase, id actual, id matcher, + const char* fileName, int lineNumber); + +#ifdef __cplusplus +} +#endif + +/** + OCUnit integration asserting that actual value satisfies matcher. +*/ +#define HC_assertThat(actual, matcher) \ + HC_assertThatWithLocation(self, actual, matcher, __FILE__, __LINE__) + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_assertThat, available if HC_SHORTHAND is defined. +*/ +#define assertThat HC_assertThat + +#endif diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCNumberAssert.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCNumberAssert.h new file mode 100644 index 0000000..0c03643 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCNumberAssert.h @@ -0,0 +1,248 @@ +// +// OCHamcrest - HCNumberAssert.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + +#import + +@protocol HCMatcher; + + +#ifdef __cplusplus +extern "C" { +#endif + +void HC_assertThatBoolWithLocation(id testCase, BOOL actual, + id matcher, const char* fileName, int lineNumber); + +void HC_assertThatCharWithLocation(id testCase, char actual, + id matcher, const char* fileName, int lineNumber); + +void HC_assertThatDoubleWithLocation(id testCase, double actual, + id matcher, const char* fileName, int lineNumber); + +void HC_assertThatFloatWithLocation(id testCase, float actual, + id matcher, const char* fileName, int lineNumber); + +void HC_assertThatIntWithLocation(id testCase, int actual, + id matcher, const char* fileName, int lineNumber); + +void HC_assertThatLongWithLocation(id testCase, long actual, + id matcher, const char* fileName, int lineNumber); + +void HC_assertThatLongLongWithLocation(id testCase, long long actual, + id matcher, const char* fileName, int lineNumber); + +void HC_assertThatShortWithLocation(id testCase, short actual, + id matcher, const char* fileName, int lineNumber); + +void HC_assertThatUnsignedCharWithLocation(id testCase, unsigned char actual, + id matcher, const char* fileName, int lineNumber); + +void HC_assertThatUnsignedIntWithLocation(id testCase, unsigned int actual, + id matcher, const char* fileName, int lineNumber); + +void HC_assertThatUnsignedLongWithLocation(id testCase, unsigned long actual, + id matcher, const char* fileName, int lineNumber); + +void HC_assertThatUnsignedLongLongWithLocation(id testCase, unsigned long long actual, + id matcher, const char* fileName, int lineNumber); + +void HC_assertThatUnsignedShortWithLocation(id testCase, unsigned short actual, + id matcher, const char* fileName, int lineNumber); + +#if defined(OBJC_API_VERSION) && OBJC_API_VERSION >= 2 + +void HC_assertThatIntegerWithLocation(id testCase, NSInteger actual, + id matcher, const char* fileName, int lineNumber); + +void HC_assertThatUnsignedIntegerWithLocation(id testCase, NSUInteger actual, + id matcher, const char* fileName, int lineNumber); + +#endif // Objective-C 2.0 + +#ifdef __cplusplus +} +#endif + +/** + OCUnit integration asserting that actual value, when converted to an NSNumber satisfies matcher. +*/ +#define HC_assertThatBool(actual, matcher) \ + HC_assertThatBoolWithLocation(self, actual, matcher, __FILE__, __LINE__) + +/** + OCUnit integration asserting that actual value, when converted to an NSNumber satisfies matcher. +*/ +#define HC_assertThatChar(actual, matcher) \ + HC_assertThatCharWithLocation(self, actual, matcher, __FILE__, __LINE__) + +/** + OCUnit integration asserting that actual value, when converted to an NSNumber satisfies matcher. +*/ +#define HC_assertThatDouble(actual, matcher) \ + HC_assertThatDoubleWithLocation(self, actual, matcher, __FILE__, __LINE__) + +/** + OCUnit integration asserting that actual value, when converted to an NSNumber satisfies matcher. +*/ +#define HC_assertThatFloat(actual, matcher) \ + HC_assertThatFloatWithLocation(self, actual, matcher, __FILE__, __LINE__) + +/** + OCUnit integration asserting that actual value, when converted to an NSNumber satisfies matcher. +*/ +#define HC_assertThatInt(actual, matcher) \ + HC_assertThatIntWithLocation(self, actual, matcher, __FILE__, __LINE__) + +/** + OCUnit integration asserting that actual value, when converted to an NSNumber satisfies matcher. +*/ +#define HC_assertThatLong(actual, matcher) \ + HC_assertThatLongWithLocation(self, actual, matcher, __FILE__, __LINE__) + +/** + OCUnit integration asserting that actual value, when converted to an NSNumber satisfies matcher. +*/ +#define HC_assertThatLongLong(actual, matcher) \ + HC_assertThatLongLongWithLocation(self, actual, matcher, __FILE__, __LINE__) + +/** + OCUnit integration asserting that actual value, when converted to an NSNumber satisfies matcher. +*/ +#define HC_assertThatShort(actual, matcher) \ + HC_assertThatShortWithLocation(self, actual, matcher, __FILE__, __LINE__) + +/** + OCUnit integration asserting that actual value, when converted to an NSNumber satisfies matcher. +*/ +#define HC_assertThatUnsignedChar(actual, matcher) \ + HC_assertThatUnsignedCharWithLocation(self, actual, matcher, __FILE__, __LINE__) + +/** + OCUnit integration asserting that actual value, when converted to an NSNumber satisfies matcher. +*/ +#define HC_assertThatUnsignedInt(actual, matcher) \ + HC_assertThatUnsignedIntWithLocation(self, actual, matcher, __FILE__, __LINE__) + +/** + OCUnit integration asserting that actual value, when converted to an NSNumber satisfies matcher. +*/ +#define HC_assertThatUnsignedLong(actual, matcher) \ + HC_assertThatUnsignedLongWithLocation(self, actual, matcher, __FILE__, __LINE__) + +/** + OCUnit integration asserting that actual value, when converted to an NSNumber satisfies matcher. +*/ +#define HC_assertThatUnsignedLongLong(actual, matcher) \ + HC_assertThatUnsignedLongLongWithLocation(self, actual, matcher, __FILE__, __LINE__) + +/** + OCUnit integration asserting that actual value, when converted to an NSNumber satisfies matcher. +*/ +#define HC_assertThatUnsignedShort(actual, matcher) \ + HC_assertThatUnsignedShortWithLocation(self, actual, matcher, __FILE__, __LINE__) + + +#if defined(OBJC_API_VERSION) && OBJC_API_VERSION >= 2 + +/** + OCUnit integration asserting that actual value, when converted to an NSNumber satisfies matcher. +*/ +#define HC_assertThatInteger(actual, matcher) \ + HC_assertThatIntegerWithLocation(self, actual, matcher, __FILE__, __LINE__) + +/** + OCUnit integration asserting that actual value, when converted to an NSNumber satisfies matcher. +*/ +#define HC_assertThatUnsignedInteger(actual, matcher) \ + HC_assertThatUnsignedIntegerWithLocation(self, actual, matcher, __FILE__, __LINE__) + +#endif // Objective-C 2.0 + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_assertThatBool, available if HC_SHORTHAND is defined. +*/ +#define assertThatBool HC_assertThatBool + +/** + Shorthand for HC_assertThatChar, available if HC_SHORTHAND is defined. +*/ +#define assertThatChar HC_assertThatChar + +/** + Shorthand for HC_assertThatDouble, available if HC_SHORTHAND is defined. +*/ +#define assertThatDouble HC_assertThatDouble + +/** + Shorthand for HC_assertThatFloat, available if HC_SHORTHAND is defined. +*/ +#define assertThatFloat HC_assertThatFloat + +/** + Shorthand for HC_assertThatInt, available if HC_SHORTHAND is defined. +*/ +#define assertThatInt HC_assertThatInt + +/** + Shorthand for HC_assertThatLong, available if HC_SHORTHAND is defined. +*/ +#define assertThatLong HC_assertThatLong + +/** + Shorthand for HC_assertThatLongLong, available if HC_SHORTHAND is defined. +*/ +#define assertThatLongLong HC_assertThatLongLong + +/** + Shorthand for HC_assertThatShort, available if HC_SHORTHAND is defined. +*/ +#define assertThatShort HC_assertThatShort + +/** + Shorthand for HC_assertThatUnsignedChar, available if HC_SHORTHAND is defined. +*/ +#define assertThatUnsignedChar HC_assertThatUnsignedChar + +/** + Shorthand for HC_assertThatUnsignedInt, available if HC_SHORTHAND is defined. +*/ +#define assertThatUnsignedInt HC_assertThatUnsignedInt + +/** + Shorthand for HC_assertThatUnsignedLong, available if HC_SHORTHAND is defined. +*/ +#define assertThatUnsignedLong HC_assertThatUnsignedLong + +/** + Shorthand for HC_assertThatUnsignedLongLong, available if HC_SHORTHAND is defined. +*/ +#define assertThatUnsignedLongLong HC_assertThatUnsignedLongLong + +/** + Shorthand for HC_assertThatInt, available if HC_SHORTHAND is defined. +*/ +#define assertThatUnsignedShort HC_assertThatUnsignedShort + + +#if defined(OBJC_API_VERSION) && OBJC_API_VERSION >= 2 + +/** + Shorthand for HC_assertThatInt, available if HC_SHORTHAND is defined. +*/ +#define assertThatInteger HC_assertThatInteger + +/** + Shorthand for HC_assertThatInt, available if HC_SHORTHAND is defined. +*/ +#define assertThatUnsignedInteger HC_assertThatUnsignedInteger + +#endif // Objective-C 2.0 + +#endif // HC_SHORTHAND diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCOrderingComparison.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCOrderingComparison.h new file mode 100644 index 0000000..8371e0c --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCOrderingComparison.h @@ -0,0 +1,80 @@ +// +// OCHamcrest - HCOrderingComparison.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCBaseMatcher.h" + + +@interface HCOrderingComparison : HCBaseMatcher +{ + id value; + NSComparisonResult minCompare; + NSComparisonResult maxCompare; +} + ++ (HCOrderingComparison*) compare:(id)aValue + minCompare:(NSComparisonResult)min + maxCompare:(NSComparisonResult)max; +- (id) initComparing:(id)aValue + minCompare:(NSComparisonResult)min + maxCompare:(NSComparisonResult)max; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + Is value > expected? +*/ +id HC_greaterThan(id aValue); + +/** + Is value >= expected? +*/ +id HC_greaterThanOrEqualTo(id aValue); + +/** + Is value < expected? +*/ +id HC_lessThan(id aValue); + +/** + Is value <= expected? +*/ +id HC_lessThanOrEqualTo(id aValue); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_greaterThan, available if HC_SHORTHAND is defined. +*/ +#define greaterThan HC_greaterThan + +/** + Shorthand for HC_greaterThan, available if HC_SHORTHAND is defined. +*/ +#define greaterThanOrEqualTo HC_greaterThanOrEqualTo + +/** + Shorthand for HC_greaterThan, available if HC_SHORTHAND is defined. +*/ +#define lessThan HC_lessThan + +/** + Shorthand for HC_lessThanOrEqualTo, available if HC_SHORTHAND is defined. +*/ +#define lessThanOrEqualTo HC_lessThanOrEqualTo + +#endif diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCRequireNonNilString.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCRequireNonNilString.h new file mode 100644 index 0000000..a1da0e8 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCRequireNonNilString.h @@ -0,0 +1,28 @@ +// +// OCHamcrest - HCRequireNonNilString.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Mac +#import + + +namespace hamcrest { + +/** + Throws an NSException if @a string is nil. +*/ +inline +void requireNonNilString(NSString* string) +{ + if (string == nil) + { + @throw [NSException exceptionWithName: @"NotAString" + reason: @"Must be non-nil string" + userInfo: nil]; + } +} + +} // namespace hamcrest diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCSelfDescribing.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCSelfDescribing.h new file mode 100644 index 0000000..52a6fbd --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCSelfDescribing.h @@ -0,0 +1,29 @@ +// +// OCHamcrest - HCSelfDescribing.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import + +@protocol HCDescription; + + +/** + The ability of an object to describe itself. +*/ +@protocol HCSelfDescribing + +/** + Generates a description of the object. + + The description may be part of a description of a larger object of which this is just a + component, so it should be worded appropriately. + + @param description The description to be built or appended to. +*/ +- (void) describeTo:(id)description; + +@end diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCStringContains.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCStringContains.h new file mode 100644 index 0000000..1eb9b45 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCStringContains.h @@ -0,0 +1,42 @@ +// +// OCHamcrest - HCStringContains.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCSubstringMatcher.h" + + +/** + Tests if the argument is a string that contains a substring. +*/ +@interface HCStringContains : HCSubstringMatcher +{ +} + ++ (HCStringContains*) stringContains:(NSString*)aSubstring; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +id HC_containsString(NSString* aSubstring); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_containsString, available if HC_SHORTHAND is defined. +*/ +#define containsString HC_containsString + +#endif diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCStringDescription.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCStringDescription.h new file mode 100644 index 0000000..b62f8d8 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCStringDescription.h @@ -0,0 +1,40 @@ +// +// OCHamcrest - HCStringDescription.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCBaseDescription.h" + +@protocol HCSelfDescribing; + + +/** + An HCDescription that is stored as a string. +*/ +@interface HCStringDescription : HCBaseDescription +{ + NSMutableString* accumulator; +} + +/** + Returns the description of an HCSelfDescribing object as a string. + + @param selfDescribing The object to be described. + @return The description of the object. +*/ ++ (NSString*) stringFrom:(id)selfDescribing; + +/** + Returns an empty description. +*/ ++ (HCStringDescription*) stringDescription; + +/** + Returns an initialized HCStringDescription object that is empty. +*/ +- (id) init; + +@end diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCStringEndsWith.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCStringEndsWith.h new file mode 100644 index 0000000..c56275a --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCStringEndsWith.h @@ -0,0 +1,42 @@ +// +// OCHamcrest - HCStringEndsWith.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCSubstringMatcher.h" + + +/** + Tests if the argument is a string that ends with a substring. +*/ +@interface HCStringEndsWith : HCSubstringMatcher +{ +} + ++ (HCStringEndsWith*) stringEndsWith:(NSString*)aSubstring; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +id HC_endsWith(NSString* aSubstring); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_endsWith, available if HC_SHORTHAND is defined. +*/ +#define endsWith HC_endsWith + +#endif diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCStringStartsWith.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCStringStartsWith.h new file mode 100644 index 0000000..3818437 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCStringStartsWith.h @@ -0,0 +1,42 @@ +// +// OCHamcrest - HCStringStartsWith.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCSubstringMatcher.h" + + +/** + Tests if the argument is a string that starts with a substring. +*/ +@interface HCStringStartsWith : HCSubstringMatcher +{ +} + ++ (HCStringStartsWith*) stringStartsWith:(NSString*)aSubstring; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +id HC_startsWith(NSString* aSubstring); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_startsWith, available if HC_SHORTHAND is defined. +*/ +#define startsWith HC_startsWith + +#endif diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCSubstringMatcher.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCSubstringMatcher.h new file mode 100644 index 0000000..36ff578 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCSubstringMatcher.h @@ -0,0 +1,19 @@ +// +// OCHamcrest - HCSubstringMatcher.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCBaseMatcher.h" + + +@interface HCSubstringMatcher : HCBaseMatcher +{ + NSString* substring; +} + +- (id) initWithSubstring:(NSString*)aSubstring; + +@end diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCWrapInMatcher.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCWrapInMatcher.h new file mode 100644 index 0000000..80f7ad2 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/HCWrapInMatcher.h @@ -0,0 +1,24 @@ +// +// OCHamcrest - HCWrapInMatcher.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + +@protocol HCMatcher; + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + Returns @a item wrapped (if necessary) in an HCIsEqual matcher. + + @a item is returned as-is if it is already an HCMatcher. +*/ +id HC_wrapInMatcher(id item); + +#ifdef __cplusplus +} +#endif diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/OCHamcrest.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/OCHamcrest.h new file mode 100644 index 0000000..3f3e79f --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Headers/OCHamcrest.h @@ -0,0 +1,45 @@ +// +// OCHamcrest - OCHamcrest.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Unit test integration +#import "HCMatcherAssert.h" +#import "HCNumberAssert.h" + + // Core +#import "HCAllOf.h" +#import "HCAnyOf.h" +#import "HCDescribedAs.h" +#import "HCIs.h" +#import "HCIsAnything.h" +#import "HCIsEqual.h" +#import "HCIsInstanceOf.h" +#import "HCIsNil.h" +#import "HCIsNot.h" +#import "HCIsSame.h" + + // Library: Collection +#import "HCIsCollectionContaining.h" +#import "HCIsCollectionOnlyContaining.h" +#import "HCIsDictionaryContaining.h" +#import "HCIsDictionaryContainingKey.h" +#import "HCIsDictionaryContainingValue.h" +#import "HCIsIn.h" + + // Library: Number +#import "HCIsCloseTo.h" +#import "HCIsEqualToNumber.h" +#import "HCOrderingComparison.h" + + // Library: Object +#import "HCHasDescription.h" + + // Library: Text +#import "HCIsEqualIgnoringCase.h" +#import "HCIsEqualIgnoringWhiteSpace.h" +#import "HCStringContains.h" +#import "HCStringEndsWith.h" +#import "HCStringStartsWith.h" diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/OCHamcrest b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/OCHamcrest deleted file mode 120000 index 7d4d801..0000000 --- a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/OCHamcrest +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/OCHamcrest \ No newline at end of file diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/OCHamcrest b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/OCHamcrest new file mode 100755 index 0000000000000000000000000000000000000000..15f05189361a83744451f136c6df26aa714b0217 GIT binary patch literal 323376 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 z + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + OCHamcrest + CFBundleIdentifier + org.hamcrest + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + OCHamcrest + CFBundlePackageType + FMWK + CFBundleSignature + hamc + CFBundleVersion + 1.0 + + diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Resources/InfoPlist.strings b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Resources/InfoPlist.strings new file mode 100644 index 0000000000000000000000000000000000000000..a6d420eb7069c11d093339688cc8217063e018e0 GIT binary patch literal 220 zcmZvW%?`m(5Ju11Q#6)cv|=Y>WkVtsJi$d06E89j_U>v!Yp0@ABQ^J3TIJ>mb?=`pT!@rZalQAP>V)p1GaVtpQ%gDUk`J>9bkTLcC59iw_VE_OC literal 0 HcmV?d00001 diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current deleted file mode 120000 index 8c7e5a6..0000000 --- a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current +++ /dev/null @@ -1 +0,0 @@ -A \ No newline at end of file diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCAllOf.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCAllOf.h new file mode 100644 index 0000000..2542e5b --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCAllOf.h @@ -0,0 +1,52 @@ +// +// OCHamcrest - HCAllOf.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCBaseMatcher.h" + + +/** + Calculates the logical conjunction of multiple matchers. + + Evaluation is shortcut, so subsequent matchers are not called if an earlier matcher returns + @c NO. +*/ +@interface HCAllOf : HCBaseMatcher +{ + NSArray* matchers; +} + ++ (HCAllOf*) allOf:(NSArray*)theMatchers; +- (id) initWithMatchers:(NSArray*)theMatchers; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + Evaluates to @c YES only if @b all of the passed in matchers evaluate to @c YES. + + @param matcher Comma-separated list of matchers ending with @c nil. +*/ +id HC_allOf(id matcher, ...); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_allOf, available if HC_SHORTHAND is defined. +*/ +#define allOf HC_allOf + +#endif diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCAnyOf.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCAnyOf.h new file mode 100644 index 0000000..38b84d3 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCAnyOf.h @@ -0,0 +1,52 @@ +// +// OCHamcrest - HCAnyOf.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCBaseMatcher.h" + + +/** + Calculates the logical disjunction of multiple matchers. + + Evaluation is shortcut, so the subsequent matchers are not called if an earlier matcher returns + @c YES. +*/ +@interface HCAnyOf : HCBaseMatcher +{ + NSArray* matchers; +} + ++ (HCAnyOf*) anyOf:(NSArray*)theMatchers; +- (id) initWithMatchers:(NSArray*)theMatchers; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + Evaluates to @c YES if @b any of the passed in matchers evaluate to @c YES. + + @param matcher Comma-separated list of matchers ending with @c nil. +*/ +id HC_anyOf(id matcher, ...); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_anyOf, available if HC_SHORTHAND is defined. +*/ +#define anyOf HC_anyOf + +#endif diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCBaseDescription.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCBaseDescription.h new file mode 100644 index 0000000..18210a2 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCBaseDescription.h @@ -0,0 +1,30 @@ +// +// OCHamcrest - HCBaseDescription.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import +#import "HCDescription.h" + + +/** + Base class for all HCDescription implementations. +*/ +@interface HCBaseDescription : NSObject +@end + + +/** + Methods that must be provided by subclasses of HCBaseDescription. +*/ +@interface HCBaseDescription (SubclassMustImplement) + +/** + Append the string @a str to the description. +*/ +- (void) append:(NSString*)str; + +@end diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCBaseMatcher.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCBaseMatcher.h new file mode 100644 index 0000000..2478736 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCBaseMatcher.h @@ -0,0 +1,21 @@ +// +// OCHamcrest - HCBaseMatcher.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import +#import "HCMatcher.h" + + +/** + Base class for all Matcher implementations. + + Most implementations can just implement matches: and let matches:describingMismatchTo: call + it. But if it makes more sense to generate the mismatch description during the matching, + override matches:describingMismatchTo: and have matches: call it with a nil description. +*/ +@interface HCBaseMatcher : NSObject +@end diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCBoxNumber.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCBoxNumber.h new file mode 100644 index 0000000..692e668 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCBoxNumber.h @@ -0,0 +1,87 @@ +// +// OCHamcrest - HCBoxNumber.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + +#ifdef __cplusplus + +namespace hamcrest { + +/** + Boxes scalar value in NSNumber, specialized per type. +*/ +template +inline +NSNumber* boxNumber(T value) + { return nil; } + +template <> +inline +NSNumber* boxNumber(BOOL value) + { return [NSNumber numberWithBool:value]; } + +template <> +inline +NSNumber* boxNumber(char value) + { return [NSNumber numberWithChar:value]; } + +template <> +inline +NSNumber* boxNumber(double value) + { return [NSNumber numberWithDouble:value]; } + +template <> +inline +NSNumber* boxNumber(float value) + { return [NSNumber numberWithFloat:value]; } + +template <> +inline +NSNumber* boxNumber(int value) + { return [NSNumber numberWithInt:value]; } + +template <> +inline +NSNumber* boxNumber(long value) + { return [NSNumber numberWithLong:value]; } + +template <> +inline +NSNumber* boxNumber(long long value) + { return [NSNumber numberWithLongLong:value]; } + +template <> +inline +NSNumber* boxNumber(short value) + { return [NSNumber numberWithShort:value]; } + +template <> +inline +NSNumber* boxNumber(unsigned char value) + { return [NSNumber numberWithUnsignedChar:value]; } + +template <> +inline +NSNumber* boxNumber(unsigned int value) + { return [NSNumber numberWithUnsignedInt:value]; } + +template <> +inline +NSNumber* boxNumber(unsigned long value) + { return [NSNumber numberWithUnsignedLong:value]; } + +template <> +inline +NSNumber* boxNumber(unsigned long long value) + { return [NSNumber numberWithUnsignedLongLong:value]; } + +template <> +inline +NSNumber* boxNumber(unsigned short value) + { return [NSNumber numberWithUnsignedShort:value]; } + +} // namespace hamcrest + +#endif // __cplusplus diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCDescribedAs.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCDescribedAs.h new file mode 100644 index 0000000..ce01d2a --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCDescribedAs.h @@ -0,0 +1,56 @@ +// +// OCHamcrest - HCDescribedAs.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCBaseMatcher.h" + + +/** + Provides a custom description to another matcher. +*/ +@interface HCDescribedAs : HCBaseMatcher +{ + NSString* descriptionTemplate; + id matcher; + NSArray* values; +} + ++ (HCDescribedAs*) describedAs:(NSString*)description + forMatcher:(id)aMatcher + overValues:(NSArray*)templateValues; +- (id) initWithDescription:(NSString*)description + forMatcher:(id)aMatcher + overValues:(NSArray*)templateValues; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + Wraps an existing matcher and overrides the description when it fails. + + Optional values following the matcher are substituted for \%0, \%1, etc. + The last argument must be nil. +*/ +id HC_describedAs(NSString* description, id matcher, ...); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_describedAs, available if HC_SHORTHAND is defined. +*/ +#define describedAs HC_describedAs + +#endif diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCDescription.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCDescription.h new file mode 100644 index 0000000..b9e56a5 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCDescription.h @@ -0,0 +1,46 @@ +// +// OCHamcrest - HCDescription.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Mac +#import + +@protocol HCSelfDescribing; + + +/** + A description of an HCMatcher. + + An HCMatcher will describe itself to a description which can later be used for reporting. +*/ +@protocol HCDescription + +/** + Appends some plain text to the description. + + @return self +*/ +- (id) appendText:(NSString*)text; + +/** + Appends description of HCSelfDescribing value to self. + + @return self +*/ +- (id) appendDescriptionOf:(id)value; + +/** + Appends an arbitary value to the description. +*/ +- (id) appendValue:(id)value; + +/** + Appends a list of objects to the description. +*/ +- (id) appendList:(NSArray*)values + start:(NSString*)start separator:(NSString*)separator end:(NSString*)end; + +@end diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCHasDescription.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCHasDescription.h new file mode 100644 index 0000000..4811846 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCHasDescription.h @@ -0,0 +1,48 @@ +// +// OCHamcrest - HCHasDescription.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCInvocationMatcher.h" + + +/** + Does the object's description satisfy a given matcher? +*/ +@interface HCHasDescription : HCInvocationMatcher +{ +} + ++ (HCHasDescription*) hasDescription:(id)descriptionMatcher; +- (id) initWithDescription:(id)descriptionMatcher; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + Evaluates whether [item description] satisfies a given matcher. + + Example: hasDescription(equalTo(result)) +*/ +id HC_hasDescription(id item); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_hasDescription, available if HC_SHORTHAND is defined. +*/ +#define hasDescription HC_hasDescription + +#endif diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCInvocationMatcher.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCInvocationMatcher.h new file mode 100755 index 0000000..424e7a0 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCInvocationMatcher.h @@ -0,0 +1,37 @@ +// +// OCHamcrest - HCInvocationMatcher.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCBaseMatcher.h" + + +/** + Supporting class for matching a feature of an object. + + Tests whether the result of passing a given invocation to the value satisfies a given matcher. +*/ +@interface HCInvocationMatcher : HCBaseMatcher +{ + NSInvocation* invocation; + id subMatcher; +} + +/** + Helper method for creating an invocation. + + A class is specified only so we can determine the method signature. +*/ ++ (NSInvocation*) createInvocationForSelector:(SEL)selector onClass:(Class)aClass; + +- (id) initWithInvocation:(NSInvocation*)anInvocation matching:(id)aMatcher; + +/** + Returns string representation of the invocation's selector. +*/ +- (NSString*) stringFromSelector; + +@end diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIs.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIs.h new file mode 100644 index 0000000..be849bc --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIs.h @@ -0,0 +1,66 @@ +// +// OCHamcrest - HCIs.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCBaseMatcher.h" + + +/** + Decorates another HCMatcher, retaining the behavior but allowing tests to be slightly more + expressive. + + For example: +@code +assertThat(cheese, equalTo(smelly)) +@endcode + vs. +@code +assertThat(cheese, is(equalTo(smelly))) +@endcode +*/ +@interface HCIs : HCBaseMatcher +{ + id matcher; +} + ++ (HCIs*) is:(id)aMatcher; +- (id) initWithMatcher:(id)aMatcher; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + Decorates an item, providing shortcuts to the frequently used is(equalTo(x)). + + For example: +@code +assertThat(cheese, is(equalTo(smelly))) +@endcode + vs. +@code +assertThat(cheese, is(smelly)) +@endcode +*/ +id HC_is(id item); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_is, available if HC_SHORTHAND is defined. +*/ +#define is HC_is + +#endif diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsAnything.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsAnything.h new file mode 100644 index 0000000..ddbca36 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsAnything.h @@ -0,0 +1,61 @@ +// +// OCHamcrest - HCIsAnything.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCBaseMatcher.h" + + +/** + A matcher that always returns @c YES. +*/ +@interface HCIsAnything : HCBaseMatcher +{ + NSString* description; +} + ++ (HCIsAnything*) isAnything; ++ (HCIsAnything*) isAnythingWithDescription:(NSString*)aDescription; +- (id) init; +- (id) initWithDescription:(NSString*)aDescription; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + This matcher always evaluates to @c YES. +*/ +id HC_anything(); + +/** + This matcher always evaluates to YES. + + @param aDescription A meaningful string used when describing itself. +*/ +id HC_anythingWithDescription(NSString* aDescription); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_anything, available if HC_SHORTHAND is defined. +*/ +#define anything HC_anything + +/** + Shorthand for HC_anythingWithDescription, available if HC_SHORTHAND is defined. +*/ +#define anythingWithDescription HC_anythingWithDescription + +#endif diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsCloseTo.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsCloseTo.h new file mode 100644 index 0000000..f2fae03 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsCloseTo.h @@ -0,0 +1,48 @@ +// +// OCHamcrest - HCIsCloseTo.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCBaseMatcher.h" + + +/** + Is the value a number equal to a value within some range of acceptable error? +*/ +@interface HCIsCloseTo : HCBaseMatcher +{ + double value; + double error; +} + ++ (HCIsCloseTo*) isCloseTo:(double)aValue within:(double)anError; +- (id) initWithValue:(double)aValue error:(double)anError; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + Is the value a number equal to a value within some range of acceptable error? +*/ +id HC_closeTo(double aValue, double anError); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_closeTo, available if HC_SHORTHAND is defined. +*/ +#define closeTo HC_closeTo + +#endif diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsCollectionContaining.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsCollectionContaining.h new file mode 100644 index 0000000..d5c8320 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsCollectionContaining.h @@ -0,0 +1,51 @@ +// +// OCHamcrest - HCIsCollectionContaining.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCBaseMatcher.h" + + +@interface HCIsCollectionContaining : HCBaseMatcher +{ + id elementMatcher; +} + ++ (HCIsCollectionContaining*) isCollectionContaining:(id)anElementMatcher; +- (id) initWithMatcher:(id)anElementMatcher; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +id HC_hasItem(id item); + +/** + @param item comma-separated list of items ending with nil. +*/ +id HC_hasItems(id item, ...); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_hasItem, available if HC_SHORTHAND is defined. +*/ +#define hasItem HC_hasItem + +/** + Shorthand for HC_hasItems, available if HC_SHORTHAND is defined. +*/ +#define hasItems HC_hasItems + +#endif diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsCollectionOnlyContaining.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsCollectionOnlyContaining.h new file mode 100644 index 0000000..73aad52 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsCollectionOnlyContaining.h @@ -0,0 +1,60 @@ +// +// OCHamcrest - HCIsCollectionOnlyContaining.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCBaseMatcher.h" + + +/** + Matches collections that only contain elements satisfying a given matcher. + + This matcher will never match an empty collection. +*/ +@interface HCIsCollectionOnlyContaining : HCBaseMatcher +{ + id matcher; +} + ++ (HCIsCollectionOnlyContaining*) isCollectionOnlyContaining:(id)aMatcher; +- (id) initWithMatcher:(id)aMatcher; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + Matches collections that only contain elements satisfying any of a list of items. + + For example, + [NSArray arrayWithObjects:@"a", "b", @"c", nil] + would satisfy + onlyContains(lessThan(@"d"), nil). + + If an item is not a matcher, it is equivalent to equalTo(item), so the array in the example + above would also satisfy + onlyContains(@"a", @"b", @"c", nil). + + @param item comma-separated list of items ending with nil. +*/ +id HC_onlyContains(id item, ...); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_onlyContains, available if HC_SHORTHAND is defined. +*/ +#define onlyContains HC_onlyContains + +#endif diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsDictionaryContaining.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsDictionaryContaining.h new file mode 100644 index 0000000..448553b --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsDictionaryContaining.h @@ -0,0 +1,43 @@ +// +// OCHamcrest - HCIsDictionaryContaining.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCBaseMatcher.h" + + +@interface HCIsDictionaryContaining : HCBaseMatcher +{ + id keyMatcher; + id valueMatcher; +} + ++ (HCIsDictionaryContaining*) isDictionaryContainingKey:(id)theKeyMatcher + value:(id)theValueMatcher; +- (id) initWithKeyMatcher:(id)theKeyMatcher valueMatcher:(id)theValueMatcher; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +id HC_hasEntry(id key, id value); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_hasEntry, available if HC_SHORTHAND is defined. +*/ +#define hasEntry HC_hasEntry + +#endif diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsDictionaryContainingKey.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsDictionaryContainingKey.h new file mode 100644 index 0000000..3b75c30 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsDictionaryContainingKey.h @@ -0,0 +1,41 @@ +// +// OCHamcrest - HCIsDictionaryContainingKey.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCBaseMatcher.h" + + +@interface HCIsDictionaryContainingKey : HCBaseMatcher +{ + id keyMatcher; +} + ++ (HCIsDictionaryContainingKey*) isDictionaryContainingKey:(id)theKeyMatcher; +- (id) initWithKeyMatcher:(id)theKeyMatcher; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +id HC_hasKey(id item); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_hasKey, available if HC_SHORTHAND is defined. +*/ +#define hasKey HC_hasKey + +#endif diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsDictionaryContainingValue.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsDictionaryContainingValue.h new file mode 100644 index 0000000..f2332ac --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsDictionaryContainingValue.h @@ -0,0 +1,41 @@ +// +// OCHamcrest - HCIsDictionaryContainingValue.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCBaseMatcher.h" + + +@interface HCIsDictionaryContainingValue : HCBaseMatcher +{ + id valueMatcher; +} + ++ (HCIsDictionaryContainingValue*) isDictionaryContainingValue:(id)theValueMatcher; +- (id) initWithValueMatcher:(id)theValueMatcher; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +id HC_hasValue(id item); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_hasValue, available if HC_SHORTHAND is defined. +*/ +#define hasValue HC_hasValue + +#endif diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsEqual.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsEqual.h new file mode 100644 index 0000000..64801c9 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsEqual.h @@ -0,0 +1,47 @@ +// +// OCHamcrest - HCIsEqual.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCBaseMatcher.h" + + +/** + Is the object equal to another object, as tested by the isEqual: method? +*/ +@interface HCIsEqual : HCBaseMatcher +{ + id object; +} + ++ (HCIsEqual*) isEqualTo:(id)equalArg; +- (id) initEqualTo:(id)equalArg; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + Is the object equal to another object, as tested by the isEqual: method? +*/ +id HC_equalTo(id equalArg); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_equalTo, available if HC_SHORTHAND is defined. +*/ +#define equalTo HC_equalTo + +#endif diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsEqualIgnoringCase.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsEqualIgnoringCase.h new file mode 100644 index 0000000..8986382 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsEqualIgnoringCase.h @@ -0,0 +1,44 @@ +// +// OCHamcrest - HCIsEqualIgnoringCase.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCBaseMatcher.h" + + +/** + Tests if a string is equal to another string, regardless of the case. +*/ +@interface HCIsEqualIgnoringCase : HCBaseMatcher +{ + NSString* string; +} + ++ (HCIsEqualIgnoringCase*) isEqualIgnoringCase:(NSString*)aString; +- (id) initWithString:(NSString*)aString; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +id HC_equalToIgnoringCase(NSString* aString); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_endsWith, available if HC_SHORTHAND is defined. +*/ +#define equalToIgnoringCase HC_equalToIgnoringCase + +#endif diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsEqualIgnoringWhiteSpace.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsEqualIgnoringWhiteSpace.h new file mode 100644 index 0000000..636f257 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsEqualIgnoringWhiteSpace.h @@ -0,0 +1,45 @@ +// +// OCHamcrest - HCIsEqualIgnoringWhiteSpace.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCBaseMatcher.h" + + +/** + Tests if a string is equal to another string, ignoring any changes in whitespace. +*/ +@interface HCIsEqualIgnoringWhiteSpace : HCBaseMatcher +{ + NSString* originalString; + NSString* strippedString; +} + ++ (HCIsEqualIgnoringWhiteSpace*) isEqualIgnoringWhiteSpace:(NSString*)aString; +- (id) initWithString:(NSString*)aString; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +id HC_equalToIgnoringWhiteSpace(NSString* aString); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_endsWith, available if HC_SHORTHAND is defined. +*/ +#define equalToIgnoringWhiteSpace HC_equalToIgnoringWhiteSpace + +#endif diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsEqualToNumber.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsEqualToNumber.h new file mode 100644 index 0000000..70e6407 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsEqualToNumber.h @@ -0,0 +1,185 @@ +// +// OCHamcrest - HCIsEqualToNumber.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCBaseMatcher.h" + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + Is the value, when converted to an NSNumber, equal to another object? +*/ +id HC_equalToBool(BOOL value); + +/** + Is the value, when converted to an NSNumber, equal to another object? +*/ +id HC_equalToChar(char value); + +/** + Is the value, when converted to an NSNumber, equal to another object? +*/ +id HC_equalToDouble(double value); + +/** + Is the value, when converted to an NSNumber, equal to another object? +*/ +id HC_equalToFloat(float value); + +/** + Is the value, when converted to an NSNumber, equal to another object? +*/ +id HC_equalToInt(int value); + +/** + Is the value, when converted to an NSNumber, equal to another object? +*/ +id HC_equalToLong(long value); + +/** + Is the value, when converted to an NSNumber, equal to another object? +*/ +id HC_equalToLongLong(long long value); + +/** + Is the value, when converted to an NSNumber, equal to another object? +*/ +id HC_equalToShort(short value); + +/** + Is the value, when converted to an NSNumber, equal to another object? +*/ +id HC_equalToUnsignedChar(unsigned char value); + +/** + Is the value, when converted to an NSNumber, equal to another object? +*/ +id HC_equalToUnsignedInt(unsigned int value); + +/** + Is the value, when converted to an NSNumber, equal to another object? +*/ +id HC_equalToUnsignedLong(unsigned long value); + +/** + Is the value, when converted to an NSNumber, equal to another object? +*/ +id HC_equalToUnsignedLongLong(unsigned long long value); + +/** + Is the value, when converted to an NSNumber, equal to another object? +*/ +id HC_equalToUnsignedShort(unsigned short value); + + +#if defined(OBJC_API_VERSION) && OBJC_API_VERSION >= 2 + +/** + Is the value, when converted to an NSNumber, equal to another object? +*/ +id HC_equalToInteger(NSInteger value); + +/** + Is the value, when converted to an NSNumber, equal to another object? +*/ +id HC_equalToUnsignedInteger(NSUInteger value); + +#endif // Objective-C 2.0 + + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_equalToBool, available if HC_SHORTHAND is defined. +*/ +#define equalToBool HC_equalToBool + +/** + Shorthand for HC_equalToChar, available if HC_SHORTHAND is defined. +*/ +#define equalToChar HC_equalToChar + +/** + Shorthand for HC_equalToDouble, available if HC_SHORTHAND is defined. +*/ +#define equalToDouble HC_equalToDouble + +/** + Shorthand for HC_equalToFloat, available if HC_SHORTHAND is defined. +*/ +#define equalToFloat HC_equalToFloat + +/** + Shorthand for HC_equalToInt, available if HC_SHORTHAND is defined. +*/ +#define equalToInt HC_equalToInt + +/** + Shorthand for HC_equalToLong, available if HC_SHORTHAND is defined. +*/ +#define equalToLong HC_equalToLong + +/** + Shorthand for HC_equalToLongLong, available if HC_SHORTHAND is defined. +*/ +#define equalToLongLong HC_equalToLongLong + +/** + Shorthand for HC_equalToShort, available if HC_SHORTHAND is defined. +*/ +#define equalToShort HC_equalToShort + +/** + Shorthand for HC_equalToUnsignedChar, available if HC_SHORTHAND is defined. +*/ +#define equalToUnsignedChar HC_equalToUnsignedChar + +/** + Shorthand for HC_equalToUnsignedInt, available if HC_SHORTHAND is defined. +*/ +#define equalToUnsignedInt HC_equalToUnsignedInt + +/** + Shorthand for HC_equalToUnsignedLong, available if HC_SHORTHAND is defined. +*/ +#define equalToUnsignedLong HC_equalToUnsignedLong + +/** + Shorthand for HC_equalToUnsignedLongLong, available if HC_SHORTHAND is defined. +*/ +#define equalToUnsignedLongLong HC_equalToUnsignedLongLong + +/** + Shorthand for HC_equalToUnsignedShort, available if HC_SHORTHAND is defined. +*/ +#define equalToUnsignedShort HC_equalToUnsignedShort + + +#if defined(OBJC_API_VERSION) && OBJC_API_VERSION >= 2 + +/** + Shorthand for HC_equalToInteger, available if HC_SHORTHAND is defined. +*/ +#define equalToInteger HC_equalToInteger + +/** + Shorthand for HC_equalToUnsignedInteger, available if HC_SHORTHAND is defined. +*/ +#define equalToUnsignedInteger HC_equalToUnsignedInteger + +#endif // Objective-C 2.0 + + +#endif // HC_SHORTHAND diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsIn.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsIn.h new file mode 100644 index 0000000..361dfa0 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsIn.h @@ -0,0 +1,41 @@ +// +// OCHamcrest - HCIsIn.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCBaseMatcher.h" + + +@interface HCIsIn : HCBaseMatcher +{ + id collection; +} + ++ (HCIsIn*) isInCollection:(id)aCollection; +- (id) initWithCollection:(id)aCollection; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +id HC_isIn(id collection); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_isIn, available if HC_SHORTHAND is defined. +*/ +#define isIn HC_isIn + +#endif diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsInstanceOf.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsInstanceOf.h new file mode 100644 index 0000000..89cc04e --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsInstanceOf.h @@ -0,0 +1,47 @@ +// +// OCHamcrest - HCIsInstanceOf.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCBaseMatcher.h" + + +/** + Tests whether the value is an instance of a class (including subclasses). +*/ +@interface HCIsInstanceOf : HCBaseMatcher +{ + Class theClass; +} + ++ (HCIsInstanceOf*) isInstanceOf:(Class)type; +- (id) initWithType:(Class)type; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + Is the value an instance of a particular type? +*/ +id HC_instanceOf(Class type); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_instanceOf, available if HC_SHORTHAND is defined. +*/ +#define instanceOf HC_instanceOf + +#endif diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsNil.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsNil.h new file mode 100644 index 0000000..e270411 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsNil.h @@ -0,0 +1,55 @@ +// +// OCHamcrest - HCIsNil.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCBaseMatcher.h" + + +/** + Is the value @c nil? +*/ +@interface HCIsNil : HCBaseMatcher +{ +} + ++ (HCIsNil*) isNil; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + Matches if the value is @c nil. +*/ +id HC_nilValue(); + +/** + Matches if the value is not @c nil. +*/ +id HC_notNilValue(); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_nilValue, available if HC_SHORTHAND is defined. +*/ +#define nilValue HC_nilValue + +/** + Shorthand for HC_notNilValue, available if HC_SHORTHAND is defined. +*/ +#define notNilValue HC_notNilValue + +#endif diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsNot.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsNot.h new file mode 100644 index 0000000..2ff5c7b --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsNot.h @@ -0,0 +1,56 @@ +// +// OCHamcrest - HCIsNot.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCBaseMatcher.h" + + +/** + Calculates the logical negation of a matcher. +*/ +@interface HCIsNot : HCBaseMatcher +{ + id matcher; +} + ++ (HCIsNot*) isNot:(id)aMatcher; +- (id) initNot:(id)aMatcher; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + Inverts the rule, providing a shortcut to the frequently used isNot(equalTo(x)). + + For example: +@code +assertThat(cheese, isNot(equalTo(smelly))) +@endcode + vs. +@code +assertThat(cheese, isNot(smelly)) +@endcode +*/ +id HC_isNot(id item); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_isNot, available if HC_SHORTHAND is defined. +*/ +#define isNot HC_isNot + +#endif diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsSame.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsSame.h new file mode 100644 index 0000000..dbbf29c --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCIsSame.h @@ -0,0 +1,47 @@ +// +// OCHamcrest - HCIsSame.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCBaseMatcher.h" + + +/** + Is the value the same object as another value? +*/ +@interface HCIsSame : HCBaseMatcher +{ + id object; +} + ++ (HCIsSame*) isSameAs:(id)anObject; +- (id) initSameAs:(id)anObject; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + Evaluates to @c YES only when the argument is this same object. +*/ +id HC_sameInstance(id anObject); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_sameInstance, available if HC_SHORTHAND is defined. +*/ +#define sameInstance HC_sameInstance + +#endif diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCMatcher.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCMatcher.h new file mode 100644 index 0000000..77dfd44 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCMatcher.h @@ -0,0 +1,52 @@ +// +// OCHamcrest - HCMatcher.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCSelfDescribing.h" + + +/** + A matcher over acceptable values. + + A matcher is able to describe itself to give feedback when it fails. + + HCMatcher implementations should @b not directly implement this protocol. + Instead, @b extend the HCBaseMatcher class, which will ensure that the HCMatcher API can grow + to support new features and remain compatible with all HCMatcher implementations. +*/ +@protocol HCMatcher + +/** + Evaluates the matcher for argument @a item. + + @param item The object against which the matcher is evaluated. + @return @c YES if @a item matches, otherwise @c NO. +*/ +- (BOOL) matches:(id)item; + +/** + Evaluates the matcher for argument @a item. + + @param item The object against which the matcher is evaluated. + @param mismatchDescription The description to be built or appended to if @item does not match. + @return @c YES if @a item matches, otherwise @c NO. +*/ +- (BOOL) matches:(id)item describingMismatchTo:(id)mismatchDescription; + +/** + Generates a description of why the matcher has not accepted the item. + + The description will be part of a larger description of why a matching failed, so it should be + concise. + This method assumes that @c matches:item is false, but will not check this. + + @param item The item that the HCMatcher has rejected. + @param mismatchDescription The description to be built or appended to. +*/ +- (void) describeMismatchOf:(id)item to:(id)mismatchDescription; + +@end diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCMatcherAssert.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCMatcherAssert.h new file mode 100644 index 0000000..41305a9 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCMatcherAssert.h @@ -0,0 +1,36 @@ +// +// OCHamcrest - HCMatcherAssert.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + +@protocol HCMatcher; + + +#ifdef __cplusplus +extern "C" { +#endif + +void HC_assertThatWithLocation(id testCase, id actual, id matcher, + const char* fileName, int lineNumber); + +#ifdef __cplusplus +} +#endif + +/** + OCUnit integration asserting that actual value satisfies matcher. +*/ +#define HC_assertThat(actual, matcher) \ + HC_assertThatWithLocation(self, actual, matcher, __FILE__, __LINE__) + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_assertThat, available if HC_SHORTHAND is defined. +*/ +#define assertThat HC_assertThat + +#endif diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCNumberAssert.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCNumberAssert.h new file mode 100644 index 0000000..0c03643 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCNumberAssert.h @@ -0,0 +1,248 @@ +// +// OCHamcrest - HCNumberAssert.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + +#import + +@protocol HCMatcher; + + +#ifdef __cplusplus +extern "C" { +#endif + +void HC_assertThatBoolWithLocation(id testCase, BOOL actual, + id matcher, const char* fileName, int lineNumber); + +void HC_assertThatCharWithLocation(id testCase, char actual, + id matcher, const char* fileName, int lineNumber); + +void HC_assertThatDoubleWithLocation(id testCase, double actual, + id matcher, const char* fileName, int lineNumber); + +void HC_assertThatFloatWithLocation(id testCase, float actual, + id matcher, const char* fileName, int lineNumber); + +void HC_assertThatIntWithLocation(id testCase, int actual, + id matcher, const char* fileName, int lineNumber); + +void HC_assertThatLongWithLocation(id testCase, long actual, + id matcher, const char* fileName, int lineNumber); + +void HC_assertThatLongLongWithLocation(id testCase, long long actual, + id matcher, const char* fileName, int lineNumber); + +void HC_assertThatShortWithLocation(id testCase, short actual, + id matcher, const char* fileName, int lineNumber); + +void HC_assertThatUnsignedCharWithLocation(id testCase, unsigned char actual, + id matcher, const char* fileName, int lineNumber); + +void HC_assertThatUnsignedIntWithLocation(id testCase, unsigned int actual, + id matcher, const char* fileName, int lineNumber); + +void HC_assertThatUnsignedLongWithLocation(id testCase, unsigned long actual, + id matcher, const char* fileName, int lineNumber); + +void HC_assertThatUnsignedLongLongWithLocation(id testCase, unsigned long long actual, + id matcher, const char* fileName, int lineNumber); + +void HC_assertThatUnsignedShortWithLocation(id testCase, unsigned short actual, + id matcher, const char* fileName, int lineNumber); + +#if defined(OBJC_API_VERSION) && OBJC_API_VERSION >= 2 + +void HC_assertThatIntegerWithLocation(id testCase, NSInteger actual, + id matcher, const char* fileName, int lineNumber); + +void HC_assertThatUnsignedIntegerWithLocation(id testCase, NSUInteger actual, + id matcher, const char* fileName, int lineNumber); + +#endif // Objective-C 2.0 + +#ifdef __cplusplus +} +#endif + +/** + OCUnit integration asserting that actual value, when converted to an NSNumber satisfies matcher. +*/ +#define HC_assertThatBool(actual, matcher) \ + HC_assertThatBoolWithLocation(self, actual, matcher, __FILE__, __LINE__) + +/** + OCUnit integration asserting that actual value, when converted to an NSNumber satisfies matcher. +*/ +#define HC_assertThatChar(actual, matcher) \ + HC_assertThatCharWithLocation(self, actual, matcher, __FILE__, __LINE__) + +/** + OCUnit integration asserting that actual value, when converted to an NSNumber satisfies matcher. +*/ +#define HC_assertThatDouble(actual, matcher) \ + HC_assertThatDoubleWithLocation(self, actual, matcher, __FILE__, __LINE__) + +/** + OCUnit integration asserting that actual value, when converted to an NSNumber satisfies matcher. +*/ +#define HC_assertThatFloat(actual, matcher) \ + HC_assertThatFloatWithLocation(self, actual, matcher, __FILE__, __LINE__) + +/** + OCUnit integration asserting that actual value, when converted to an NSNumber satisfies matcher. +*/ +#define HC_assertThatInt(actual, matcher) \ + HC_assertThatIntWithLocation(self, actual, matcher, __FILE__, __LINE__) + +/** + OCUnit integration asserting that actual value, when converted to an NSNumber satisfies matcher. +*/ +#define HC_assertThatLong(actual, matcher) \ + HC_assertThatLongWithLocation(self, actual, matcher, __FILE__, __LINE__) + +/** + OCUnit integration asserting that actual value, when converted to an NSNumber satisfies matcher. +*/ +#define HC_assertThatLongLong(actual, matcher) \ + HC_assertThatLongLongWithLocation(self, actual, matcher, __FILE__, __LINE__) + +/** + OCUnit integration asserting that actual value, when converted to an NSNumber satisfies matcher. +*/ +#define HC_assertThatShort(actual, matcher) \ + HC_assertThatShortWithLocation(self, actual, matcher, __FILE__, __LINE__) + +/** + OCUnit integration asserting that actual value, when converted to an NSNumber satisfies matcher. +*/ +#define HC_assertThatUnsignedChar(actual, matcher) \ + HC_assertThatUnsignedCharWithLocation(self, actual, matcher, __FILE__, __LINE__) + +/** + OCUnit integration asserting that actual value, when converted to an NSNumber satisfies matcher. +*/ +#define HC_assertThatUnsignedInt(actual, matcher) \ + HC_assertThatUnsignedIntWithLocation(self, actual, matcher, __FILE__, __LINE__) + +/** + OCUnit integration asserting that actual value, when converted to an NSNumber satisfies matcher. +*/ +#define HC_assertThatUnsignedLong(actual, matcher) \ + HC_assertThatUnsignedLongWithLocation(self, actual, matcher, __FILE__, __LINE__) + +/** + OCUnit integration asserting that actual value, when converted to an NSNumber satisfies matcher. +*/ +#define HC_assertThatUnsignedLongLong(actual, matcher) \ + HC_assertThatUnsignedLongLongWithLocation(self, actual, matcher, __FILE__, __LINE__) + +/** + OCUnit integration asserting that actual value, when converted to an NSNumber satisfies matcher. +*/ +#define HC_assertThatUnsignedShort(actual, matcher) \ + HC_assertThatUnsignedShortWithLocation(self, actual, matcher, __FILE__, __LINE__) + + +#if defined(OBJC_API_VERSION) && OBJC_API_VERSION >= 2 + +/** + OCUnit integration asserting that actual value, when converted to an NSNumber satisfies matcher. +*/ +#define HC_assertThatInteger(actual, matcher) \ + HC_assertThatIntegerWithLocation(self, actual, matcher, __FILE__, __LINE__) + +/** + OCUnit integration asserting that actual value, when converted to an NSNumber satisfies matcher. +*/ +#define HC_assertThatUnsignedInteger(actual, matcher) \ + HC_assertThatUnsignedIntegerWithLocation(self, actual, matcher, __FILE__, __LINE__) + +#endif // Objective-C 2.0 + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_assertThatBool, available if HC_SHORTHAND is defined. +*/ +#define assertThatBool HC_assertThatBool + +/** + Shorthand for HC_assertThatChar, available if HC_SHORTHAND is defined. +*/ +#define assertThatChar HC_assertThatChar + +/** + Shorthand for HC_assertThatDouble, available if HC_SHORTHAND is defined. +*/ +#define assertThatDouble HC_assertThatDouble + +/** + Shorthand for HC_assertThatFloat, available if HC_SHORTHAND is defined. +*/ +#define assertThatFloat HC_assertThatFloat + +/** + Shorthand for HC_assertThatInt, available if HC_SHORTHAND is defined. +*/ +#define assertThatInt HC_assertThatInt + +/** + Shorthand for HC_assertThatLong, available if HC_SHORTHAND is defined. +*/ +#define assertThatLong HC_assertThatLong + +/** + Shorthand for HC_assertThatLongLong, available if HC_SHORTHAND is defined. +*/ +#define assertThatLongLong HC_assertThatLongLong + +/** + Shorthand for HC_assertThatShort, available if HC_SHORTHAND is defined. +*/ +#define assertThatShort HC_assertThatShort + +/** + Shorthand for HC_assertThatUnsignedChar, available if HC_SHORTHAND is defined. +*/ +#define assertThatUnsignedChar HC_assertThatUnsignedChar + +/** + Shorthand for HC_assertThatUnsignedInt, available if HC_SHORTHAND is defined. +*/ +#define assertThatUnsignedInt HC_assertThatUnsignedInt + +/** + Shorthand for HC_assertThatUnsignedLong, available if HC_SHORTHAND is defined. +*/ +#define assertThatUnsignedLong HC_assertThatUnsignedLong + +/** + Shorthand for HC_assertThatUnsignedLongLong, available if HC_SHORTHAND is defined. +*/ +#define assertThatUnsignedLongLong HC_assertThatUnsignedLongLong + +/** + Shorthand for HC_assertThatInt, available if HC_SHORTHAND is defined. +*/ +#define assertThatUnsignedShort HC_assertThatUnsignedShort + + +#if defined(OBJC_API_VERSION) && OBJC_API_VERSION >= 2 + +/** + Shorthand for HC_assertThatInt, available if HC_SHORTHAND is defined. +*/ +#define assertThatInteger HC_assertThatInteger + +/** + Shorthand for HC_assertThatInt, available if HC_SHORTHAND is defined. +*/ +#define assertThatUnsignedInteger HC_assertThatUnsignedInteger + +#endif // Objective-C 2.0 + +#endif // HC_SHORTHAND diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCOrderingComparison.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCOrderingComparison.h new file mode 100644 index 0000000..8371e0c --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCOrderingComparison.h @@ -0,0 +1,80 @@ +// +// OCHamcrest - HCOrderingComparison.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCBaseMatcher.h" + + +@interface HCOrderingComparison : HCBaseMatcher +{ + id value; + NSComparisonResult minCompare; + NSComparisonResult maxCompare; +} + ++ (HCOrderingComparison*) compare:(id)aValue + minCompare:(NSComparisonResult)min + maxCompare:(NSComparisonResult)max; +- (id) initComparing:(id)aValue + minCompare:(NSComparisonResult)min + maxCompare:(NSComparisonResult)max; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + Is value > expected? +*/ +id HC_greaterThan(id aValue); + +/** + Is value >= expected? +*/ +id HC_greaterThanOrEqualTo(id aValue); + +/** + Is value < expected? +*/ +id HC_lessThan(id aValue); + +/** + Is value <= expected? +*/ +id HC_lessThanOrEqualTo(id aValue); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_greaterThan, available if HC_SHORTHAND is defined. +*/ +#define greaterThan HC_greaterThan + +/** + Shorthand for HC_greaterThan, available if HC_SHORTHAND is defined. +*/ +#define greaterThanOrEqualTo HC_greaterThanOrEqualTo + +/** + Shorthand for HC_greaterThan, available if HC_SHORTHAND is defined. +*/ +#define lessThan HC_lessThan + +/** + Shorthand for HC_lessThanOrEqualTo, available if HC_SHORTHAND is defined. +*/ +#define lessThanOrEqualTo HC_lessThanOrEqualTo + +#endif diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCRequireNonNilString.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCRequireNonNilString.h new file mode 100644 index 0000000..a1da0e8 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCRequireNonNilString.h @@ -0,0 +1,28 @@ +// +// OCHamcrest - HCRequireNonNilString.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Mac +#import + + +namespace hamcrest { + +/** + Throws an NSException if @a string is nil. +*/ +inline +void requireNonNilString(NSString* string) +{ + if (string == nil) + { + @throw [NSException exceptionWithName: @"NotAString" + reason: @"Must be non-nil string" + userInfo: nil]; + } +} + +} // namespace hamcrest diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCSelfDescribing.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCSelfDescribing.h new file mode 100644 index 0000000..52a6fbd --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCSelfDescribing.h @@ -0,0 +1,29 @@ +// +// OCHamcrest - HCSelfDescribing.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import + +@protocol HCDescription; + + +/** + The ability of an object to describe itself. +*/ +@protocol HCSelfDescribing + +/** + Generates a description of the object. + + The description may be part of a description of a larger object of which this is just a + component, so it should be worded appropriately. + + @param description The description to be built or appended to. +*/ +- (void) describeTo:(id)description; + +@end diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCStringContains.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCStringContains.h new file mode 100644 index 0000000..1eb9b45 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCStringContains.h @@ -0,0 +1,42 @@ +// +// OCHamcrest - HCStringContains.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCSubstringMatcher.h" + + +/** + Tests if the argument is a string that contains a substring. +*/ +@interface HCStringContains : HCSubstringMatcher +{ +} + ++ (HCStringContains*) stringContains:(NSString*)aSubstring; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +id HC_containsString(NSString* aSubstring); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_containsString, available if HC_SHORTHAND is defined. +*/ +#define containsString HC_containsString + +#endif diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCStringDescription.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCStringDescription.h new file mode 100644 index 0000000..b62f8d8 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCStringDescription.h @@ -0,0 +1,40 @@ +// +// OCHamcrest - HCStringDescription.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCBaseDescription.h" + +@protocol HCSelfDescribing; + + +/** + An HCDescription that is stored as a string. +*/ +@interface HCStringDescription : HCBaseDescription +{ + NSMutableString* accumulator; +} + +/** + Returns the description of an HCSelfDescribing object as a string. + + @param selfDescribing The object to be described. + @return The description of the object. +*/ ++ (NSString*) stringFrom:(id)selfDescribing; + +/** + Returns an empty description. +*/ ++ (HCStringDescription*) stringDescription; + +/** + Returns an initialized HCStringDescription object that is empty. +*/ +- (id) init; + +@end diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCStringEndsWith.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCStringEndsWith.h new file mode 100644 index 0000000..c56275a --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCStringEndsWith.h @@ -0,0 +1,42 @@ +// +// OCHamcrest - HCStringEndsWith.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCSubstringMatcher.h" + + +/** + Tests if the argument is a string that ends with a substring. +*/ +@interface HCStringEndsWith : HCSubstringMatcher +{ +} + ++ (HCStringEndsWith*) stringEndsWith:(NSString*)aSubstring; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +id HC_endsWith(NSString* aSubstring); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_endsWith, available if HC_SHORTHAND is defined. +*/ +#define endsWith HC_endsWith + +#endif diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCStringStartsWith.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCStringStartsWith.h new file mode 100644 index 0000000..3818437 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCStringStartsWith.h @@ -0,0 +1,42 @@ +// +// OCHamcrest - HCStringStartsWith.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCSubstringMatcher.h" + + +/** + Tests if the argument is a string that starts with a substring. +*/ +@interface HCStringStartsWith : HCSubstringMatcher +{ +} + ++ (HCStringStartsWith*) stringStartsWith:(NSString*)aSubstring; + +@end + + +#ifdef __cplusplus +extern "C" { +#endif + +id HC_startsWith(NSString* aSubstring); + +#ifdef __cplusplus +} +#endif + + +#ifdef HC_SHORTHAND + +/** + Shorthand for HC_startsWith, available if HC_SHORTHAND is defined. +*/ +#define startsWith HC_startsWith + +#endif diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCSubstringMatcher.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCSubstringMatcher.h new file mode 100644 index 0000000..36ff578 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCSubstringMatcher.h @@ -0,0 +1,19 @@ +// +// OCHamcrest - HCSubstringMatcher.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Inherited +#import "HCBaseMatcher.h" + + +@interface HCSubstringMatcher : HCBaseMatcher +{ + NSString* substring; +} + +- (id) initWithSubstring:(NSString*)aSubstring; + +@end diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCWrapInMatcher.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCWrapInMatcher.h new file mode 100644 index 0000000..80f7ad2 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/HCWrapInMatcher.h @@ -0,0 +1,24 @@ +// +// OCHamcrest - HCWrapInMatcher.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + +@protocol HCMatcher; + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + Returns @a item wrapped (if necessary) in an HCIsEqual matcher. + + @a item is returned as-is if it is already an HCMatcher. +*/ +id HC_wrapInMatcher(id item); + +#ifdef __cplusplus +} +#endif diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/OCHamcrest.h b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/OCHamcrest.h new file mode 100644 index 0000000..3f3e79f --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Headers/OCHamcrest.h @@ -0,0 +1,45 @@ +// +// OCHamcrest - OCHamcrest.h +// Copyright 2009 www.hamcrest.org. See LICENSE.txt +// +// Created by: Jon Reid +// + + // Unit test integration +#import "HCMatcherAssert.h" +#import "HCNumberAssert.h" + + // Core +#import "HCAllOf.h" +#import "HCAnyOf.h" +#import "HCDescribedAs.h" +#import "HCIs.h" +#import "HCIsAnything.h" +#import "HCIsEqual.h" +#import "HCIsInstanceOf.h" +#import "HCIsNil.h" +#import "HCIsNot.h" +#import "HCIsSame.h" + + // Library: Collection +#import "HCIsCollectionContaining.h" +#import "HCIsCollectionOnlyContaining.h" +#import "HCIsDictionaryContaining.h" +#import "HCIsDictionaryContainingKey.h" +#import "HCIsDictionaryContainingValue.h" +#import "HCIsIn.h" + + // Library: Number +#import "HCIsCloseTo.h" +#import "HCIsEqualToNumber.h" +#import "HCOrderingComparison.h" + + // Library: Object +#import "HCHasDescription.h" + + // Library: Text +#import "HCIsEqualIgnoringCase.h" +#import "HCIsEqualIgnoringWhiteSpace.h" +#import "HCStringContains.h" +#import "HCStringEndsWith.h" +#import "HCStringStartsWith.h" diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/OCHamcrest b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/OCHamcrest new file mode 100755 index 0000000000000000000000000000000000000000..15f05189361a83744451f136c6df26aa714b0217 GIT binary patch literal 323376 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 z + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + OCHamcrest + CFBundleIdentifier + org.hamcrest + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + OCHamcrest + CFBundlePackageType + FMWK + CFBundleSignature + hamc + CFBundleVersion + 1.0 + + diff --git a/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Resources/InfoPlist.strings b/ConciseKitSpecs/Frameworks/OCHamcrest.framework/Versions/Current/Resources/InfoPlist.strings new file mode 100644 index 0000000000000000000000000000000000000000..a6d420eb7069c11d093339688cc8217063e018e0 GIT binary patch literal 220 zcmZvW%?`m(5Ju11Q#6)cv|=Y>WkVtsJi$d06E89j_U>v!Yp0@ABQ^J3TIJ>mb?=`pT!@rZalQAP>V)p1GaVtpQ%gDUk`J>9bkTLcC59iw_VE_OC literal 0 HcmV?d00001 diff --git a/ConciseKitSpecs/Frameworks/OCMock.framework/Headers b/ConciseKitSpecs/Frameworks/OCMock.framework/Headers deleted file mode 120000 index a177d2a..0000000 --- a/ConciseKitSpecs/Frameworks/OCMock.framework/Headers +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/Headers \ No newline at end of file diff --git a/ConciseKitSpecs/Frameworks/OCMock.framework/Headers/NSNotificationCenter+OCMAdditions.h b/ConciseKitSpecs/Frameworks/OCMock.framework/Headers/NSNotificationCenter+OCMAdditions.h new file mode 100644 index 0000000..7d5d6d1 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCMock.framework/Headers/NSNotificationCenter+OCMAdditions.h @@ -0,0 +1,15 @@ +//--------------------------------------------------------------------------------------- +// $Id: NSNotificationCenter+OCMAdditions.h 57 2010-07-19 06:14:27Z erik $ +// Copyright (c) 2009 by Mulle Kybernetik. See License file for details. +//--------------------------------------------------------------------------------------- + +#import + +@class OCMockObserver; + + +@interface NSNotificationCenter(OCMAdditions) + +- (void)addMockObserver:(OCMockObserver *)notificationObserver name:(NSString *)notificationName object:(id)notificationSender; + +@end diff --git a/ConciseKitSpecs/Frameworks/OCMock.framework/Headers/OCMArg.h b/ConciseKitSpecs/Frameworks/OCMock.framework/Headers/OCMArg.h new file mode 100644 index 0000000..94ede8f --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCMock.framework/Headers/OCMArg.h @@ -0,0 +1,33 @@ +//--------------------------------------------------------------------------------------- +// $Id: OCMArg.h 65 2010-07-28 01:49:42Z erik $ +// Copyright (c) 2009-2010 by Mulle Kybernetik. See License file for details. +//--------------------------------------------------------------------------------------- + +#import + +@interface OCMArg : NSObject + +// constraining arguments + ++ (id)any; ++ (void *)anyPointer; ++ (id)isNil; ++ (id)isNotNil; ++ (id)isNotEqual:(id)value; ++ (id)checkWithSelector:(SEL)selector onObject:(id)anObject; +#if NS_BLOCKS_AVAILABLE ++ (id)checkWithBlock:(BOOL (^)(id))block; +#endif + +// manipulating arguments + ++ (id *)setTo:(id)value; + +// internal use only + ++ (id)resolveSpecialValues:(NSValue *)value; + +@end + +#define OCMOCK_ANY [OCMArg any] +#define OCMOCK_VALUE(variable) [NSValue value:&variable withObjCType:@encode(__typeof__(variable))] diff --git a/ConciseKitSpecs/Frameworks/OCMock.framework/Headers/OCMConstraint.h b/ConciseKitSpecs/Frameworks/OCMock.framework/Headers/OCMConstraint.h new file mode 100644 index 0000000..72b23e8 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCMock.framework/Headers/OCMConstraint.h @@ -0,0 +1,64 @@ +//--------------------------------------------------------------------------------------- +// $Id: OCMConstraint.h 57 2010-07-19 06:14:27Z erik $ +// Copyright (c) 2007-2010 by Mulle Kybernetik. See License file for details. +//--------------------------------------------------------------------------------------- + +#import + + +@interface OCMConstraint : NSObject + ++ (id)constraint; +- (BOOL)evaluate:(id)value; + +// if you are looking for any, isNil, etc, they have moved to OCMArg + +// try to use [OCMArg checkWith...] instead of the constraintWith... methods below + ++ (id)constraintWithSelector:(SEL)aSelector onObject:(id)anObject; ++ (id)constraintWithSelector:(SEL)aSelector onObject:(id)anObject withValue:(id)aValue; + + +@end + +@interface OCMAnyConstraint : OCMConstraint +@end + +@interface OCMIsNilConstraint : OCMConstraint +@end + +@interface OCMIsNotNilConstraint : OCMConstraint +@end + +@interface OCMIsNotEqualConstraint : OCMConstraint +{ + @public + id testValue; +} + +@end + +@interface OCMInvocationConstraint : OCMConstraint +{ + @public + NSInvocation *invocation; +} + +@end + +#if NS_BLOCKS_AVAILABLE + +@interface OCMBlockConstraint : OCMConstraint +{ + BOOL (^block)(id); +} + +- (id)initWithConstraintBlock:(BOOL (^)(id))block; + +@end + +#endif + + +#define CONSTRAINT(aSelector) [OCMConstraint constraintWithSelector:aSelector onObject:self] +#define CONSTRAINTV(aSelector, aValue) [OCMConstraint constraintWithSelector:aSelector onObject:self withValue:(aValue)] diff --git a/ConciseKitSpecs/Frameworks/OCMock.framework/Headers/OCMock.h b/ConciseKitSpecs/Frameworks/OCMock.framework/Headers/OCMock.h new file mode 100644 index 0000000..1b2d1a4 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCMock.framework/Headers/OCMock.h @@ -0,0 +1,10 @@ +//--------------------------------------------------------------------------------------- +// $Id$ +// Copyright (c) 2004-2008 by Mulle Kybernetik. See License file for details. +//--------------------------------------------------------------------------------------- + +#import "OCMockObject.h" +#import "OCMockRecorder.h" +#import "OCMConstraint.h" +#import "OCMArg.h" +#import "NSNotificationCenter+OCMAdditions.h" diff --git a/ConciseKitSpecs/Frameworks/OCMock.framework/Headers/OCMockObject.h b/ConciseKitSpecs/Frameworks/OCMock.framework/Headers/OCMockObject.h new file mode 100644 index 0000000..24477c7 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCMock.framework/Headers/OCMockObject.h @@ -0,0 +1,43 @@ +//--------------------------------------------------------------------------------------- +// $Id: OCMockObject.h 69 2010-08-20 16:05:58Z erik $ +// Copyright (c) 2004-2008 by Mulle Kybernetik. See License file for details. +//--------------------------------------------------------------------------------------- + +#import + +@interface OCMockObject : NSProxy +{ + BOOL isNice; + BOOL expectationOrderMatters; + NSMutableArray *recorders; + NSMutableArray *expectations; + NSMutableArray *rejections; + NSMutableArray *exceptions; +} + ++ (id)mockForClass:(Class)aClass; ++ (id)mockForProtocol:(Protocol *)aProtocol; ++ (id)partialMockForObject:(NSObject *)anObject; + ++ (id)niceMockForClass:(Class)aClass; ++ (id)niceMockForProtocol:(Protocol *)aProtocol; + ++ (id)observerMock; + +- (id)init; + +- (void)setExpectationOrderMatters:(BOOL)flag; + +- (id)stub; +- (id)expect; +- (id)reject; + +- (void)verify; + +// internal use only + +- (id)getNewRecorder; +- (BOOL)handleInvocation:(NSInvocation *)anInvocation; +- (void)handleUnRecordedInvocation:(NSInvocation *)anInvocation; + +@end diff --git a/ConciseKitSpecs/Frameworks/OCMock.framework/Headers/OCMockRecorder.h b/ConciseKitSpecs/Frameworks/OCMock.framework/Headers/OCMockRecorder.h new file mode 100644 index 0000000..af68b17 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCMock.framework/Headers/OCMockRecorder.h @@ -0,0 +1,32 @@ +//--------------------------------------------------------------------------------------- +// $Id: OCMockRecorder.h 68 2010-08-20 13:20:52Z erik $ +// Copyright (c) 2004-2010 by Mulle Kybernetik. See License file for details. +//--------------------------------------------------------------------------------------- + +#import + +@interface OCMockRecorder : NSProxy +{ + id signatureResolver; + NSInvocation *recordedInvocation; + NSMutableArray *invocationHandlers; +} + +- (id)initWithSignatureResolver:(id)anObject; + +- (BOOL)matchesInvocation:(NSInvocation *)anInvocation; +- (void)releaseInvocation; + +- (id)andReturn:(id)anObject; +- (id)andReturnValue:(NSValue *)aValue; +- (id)andThrow:(NSException *)anException; +- (id)andPost:(NSNotification *)aNotification; +- (id)andCall:(SEL)selector onObject:(id)anObject; +#if NS_BLOCKS_AVAILABLE +- (id)andDo:(void (^)(NSInvocation *))block; +#endif +- (id)andForwardToRealObject; + +- (NSArray *)invocationHandlers; + +@end diff --git a/ConciseKitSpecs/Frameworks/OCMock.framework/OCMock b/ConciseKitSpecs/Frameworks/OCMock.framework/OCMock deleted file mode 120000 index c388ea8..0000000 --- a/ConciseKitSpecs/Frameworks/OCMock.framework/OCMock +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/OCMock \ No newline at end of file diff --git a/ConciseKitSpecs/Frameworks/OCMock.framework/OCMock b/ConciseKitSpecs/Frameworks/OCMock.framework/OCMock new file mode 100755 index 0000000000000000000000000000000000000000..2d6301def3d46dd155912ac7e37a874fddd25f65 GIT binary patch literal 190560 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 + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + OCMock + CFBundleIdentifier + com.mulle-kybernetik.OCMock + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + OCMock + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.29 + CFBundleSignature + ???? + CFBundleVersion + 1 + NSHumanReadableCopyright + Copyright © 2004-2009 Mulle Kybernetik. + + diff --git a/ConciseKitSpecs/Frameworks/OCMock.framework/Resources/License.txt b/ConciseKitSpecs/Frameworks/OCMock.framework/Resources/License.txt new file mode 100644 index 0000000..60a14bf --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCMock.framework/Resources/License.txt @@ -0,0 +1,15 @@ + + Copyright (c) 2004-2010 by Mulle Kybernetik. All rights reserved. + + Permission to use, copy, modify and distribute this software and its documentation + is hereby granted, provided that both the copyright notice and this permission + notice appear in all copies of the software, derivative works or modified versions, + and any portions thereof, and that both notices appear in supporting documentation, + and that credit is given to Mulle Kybernetik in all documents and publicity + pertaining to direct or indirect use of this code or its derivatives. + + THIS IS EXPERIMENTAL SOFTWARE AND IT IS KNOWN TO HAVE BUGS, SOME OF WHICH MAY HAVE + SERIOUS CONSEQUENCES. THE COPYRIGHT HOLDER ALLOWS FREE USE OF THIS SOFTWARE IN ITS + "AS IS" CONDITION. THE COPYRIGHT HOLDER DISCLAIMS ANY LIABILITY OF ANY KIND FOR ANY + DAMAGES WHATSOEVER RESULTING DIRECTLY OR INDIRECTLY FROM THE USE OF THIS SOFTWARE + OR OF ANY DERIVATIVE WORK. \ No newline at end of file diff --git a/ConciseKitSpecs/Frameworks/OCMock.framework/Versions/Current b/ConciseKitSpecs/Frameworks/OCMock.framework/Versions/Current deleted file mode 120000 index 8c7e5a6..0000000 --- a/ConciseKitSpecs/Frameworks/OCMock.framework/Versions/Current +++ /dev/null @@ -1 +0,0 @@ -A \ No newline at end of file diff --git a/ConciseKitSpecs/Frameworks/OCMock.framework/Versions/Current/Headers/NSNotificationCenter+OCMAdditions.h b/ConciseKitSpecs/Frameworks/OCMock.framework/Versions/Current/Headers/NSNotificationCenter+OCMAdditions.h new file mode 100644 index 0000000..7d5d6d1 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCMock.framework/Versions/Current/Headers/NSNotificationCenter+OCMAdditions.h @@ -0,0 +1,15 @@ +//--------------------------------------------------------------------------------------- +// $Id: NSNotificationCenter+OCMAdditions.h 57 2010-07-19 06:14:27Z erik $ +// Copyright (c) 2009 by Mulle Kybernetik. See License file for details. +//--------------------------------------------------------------------------------------- + +#import + +@class OCMockObserver; + + +@interface NSNotificationCenter(OCMAdditions) + +- (void)addMockObserver:(OCMockObserver *)notificationObserver name:(NSString *)notificationName object:(id)notificationSender; + +@end diff --git a/ConciseKitSpecs/Frameworks/OCMock.framework/Versions/Current/Headers/OCMArg.h b/ConciseKitSpecs/Frameworks/OCMock.framework/Versions/Current/Headers/OCMArg.h new file mode 100644 index 0000000..94ede8f --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCMock.framework/Versions/Current/Headers/OCMArg.h @@ -0,0 +1,33 @@ +//--------------------------------------------------------------------------------------- +// $Id: OCMArg.h 65 2010-07-28 01:49:42Z erik $ +// Copyright (c) 2009-2010 by Mulle Kybernetik. See License file for details. +//--------------------------------------------------------------------------------------- + +#import + +@interface OCMArg : NSObject + +// constraining arguments + ++ (id)any; ++ (void *)anyPointer; ++ (id)isNil; ++ (id)isNotNil; ++ (id)isNotEqual:(id)value; ++ (id)checkWithSelector:(SEL)selector onObject:(id)anObject; +#if NS_BLOCKS_AVAILABLE ++ (id)checkWithBlock:(BOOL (^)(id))block; +#endif + +// manipulating arguments + ++ (id *)setTo:(id)value; + +// internal use only + ++ (id)resolveSpecialValues:(NSValue *)value; + +@end + +#define OCMOCK_ANY [OCMArg any] +#define OCMOCK_VALUE(variable) [NSValue value:&variable withObjCType:@encode(__typeof__(variable))] diff --git a/ConciseKitSpecs/Frameworks/OCMock.framework/Versions/Current/Headers/OCMConstraint.h b/ConciseKitSpecs/Frameworks/OCMock.framework/Versions/Current/Headers/OCMConstraint.h new file mode 100644 index 0000000..72b23e8 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCMock.framework/Versions/Current/Headers/OCMConstraint.h @@ -0,0 +1,64 @@ +//--------------------------------------------------------------------------------------- +// $Id: OCMConstraint.h 57 2010-07-19 06:14:27Z erik $ +// Copyright (c) 2007-2010 by Mulle Kybernetik. See License file for details. +//--------------------------------------------------------------------------------------- + +#import + + +@interface OCMConstraint : NSObject + ++ (id)constraint; +- (BOOL)evaluate:(id)value; + +// if you are looking for any, isNil, etc, they have moved to OCMArg + +// try to use [OCMArg checkWith...] instead of the constraintWith... methods below + ++ (id)constraintWithSelector:(SEL)aSelector onObject:(id)anObject; ++ (id)constraintWithSelector:(SEL)aSelector onObject:(id)anObject withValue:(id)aValue; + + +@end + +@interface OCMAnyConstraint : OCMConstraint +@end + +@interface OCMIsNilConstraint : OCMConstraint +@end + +@interface OCMIsNotNilConstraint : OCMConstraint +@end + +@interface OCMIsNotEqualConstraint : OCMConstraint +{ + @public + id testValue; +} + +@end + +@interface OCMInvocationConstraint : OCMConstraint +{ + @public + NSInvocation *invocation; +} + +@end + +#if NS_BLOCKS_AVAILABLE + +@interface OCMBlockConstraint : OCMConstraint +{ + BOOL (^block)(id); +} + +- (id)initWithConstraintBlock:(BOOL (^)(id))block; + +@end + +#endif + + +#define CONSTRAINT(aSelector) [OCMConstraint constraintWithSelector:aSelector onObject:self] +#define CONSTRAINTV(aSelector, aValue) [OCMConstraint constraintWithSelector:aSelector onObject:self withValue:(aValue)] diff --git a/ConciseKitSpecs/Frameworks/OCMock.framework/Versions/Current/Headers/OCMock.h b/ConciseKitSpecs/Frameworks/OCMock.framework/Versions/Current/Headers/OCMock.h new file mode 100644 index 0000000..1b2d1a4 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCMock.framework/Versions/Current/Headers/OCMock.h @@ -0,0 +1,10 @@ +//--------------------------------------------------------------------------------------- +// $Id$ +// Copyright (c) 2004-2008 by Mulle Kybernetik. See License file for details. +//--------------------------------------------------------------------------------------- + +#import "OCMockObject.h" +#import "OCMockRecorder.h" +#import "OCMConstraint.h" +#import "OCMArg.h" +#import "NSNotificationCenter+OCMAdditions.h" diff --git a/ConciseKitSpecs/Frameworks/OCMock.framework/Versions/Current/Headers/OCMockObject.h b/ConciseKitSpecs/Frameworks/OCMock.framework/Versions/Current/Headers/OCMockObject.h new file mode 100644 index 0000000..24477c7 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCMock.framework/Versions/Current/Headers/OCMockObject.h @@ -0,0 +1,43 @@ +//--------------------------------------------------------------------------------------- +// $Id: OCMockObject.h 69 2010-08-20 16:05:58Z erik $ +// Copyright (c) 2004-2008 by Mulle Kybernetik. See License file for details. +//--------------------------------------------------------------------------------------- + +#import + +@interface OCMockObject : NSProxy +{ + BOOL isNice; + BOOL expectationOrderMatters; + NSMutableArray *recorders; + NSMutableArray *expectations; + NSMutableArray *rejections; + NSMutableArray *exceptions; +} + ++ (id)mockForClass:(Class)aClass; ++ (id)mockForProtocol:(Protocol *)aProtocol; ++ (id)partialMockForObject:(NSObject *)anObject; + ++ (id)niceMockForClass:(Class)aClass; ++ (id)niceMockForProtocol:(Protocol *)aProtocol; + ++ (id)observerMock; + +- (id)init; + +- (void)setExpectationOrderMatters:(BOOL)flag; + +- (id)stub; +- (id)expect; +- (id)reject; + +- (void)verify; + +// internal use only + +- (id)getNewRecorder; +- (BOOL)handleInvocation:(NSInvocation *)anInvocation; +- (void)handleUnRecordedInvocation:(NSInvocation *)anInvocation; + +@end diff --git a/ConciseKitSpecs/Frameworks/OCMock.framework/Versions/Current/Headers/OCMockRecorder.h b/ConciseKitSpecs/Frameworks/OCMock.framework/Versions/Current/Headers/OCMockRecorder.h new file mode 100644 index 0000000..af68b17 --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCMock.framework/Versions/Current/Headers/OCMockRecorder.h @@ -0,0 +1,32 @@ +//--------------------------------------------------------------------------------------- +// $Id: OCMockRecorder.h 68 2010-08-20 13:20:52Z erik $ +// Copyright (c) 2004-2010 by Mulle Kybernetik. See License file for details. +//--------------------------------------------------------------------------------------- + +#import + +@interface OCMockRecorder : NSProxy +{ + id signatureResolver; + NSInvocation *recordedInvocation; + NSMutableArray *invocationHandlers; +} + +- (id)initWithSignatureResolver:(id)anObject; + +- (BOOL)matchesInvocation:(NSInvocation *)anInvocation; +- (void)releaseInvocation; + +- (id)andReturn:(id)anObject; +- (id)andReturnValue:(NSValue *)aValue; +- (id)andThrow:(NSException *)anException; +- (id)andPost:(NSNotification *)aNotification; +- (id)andCall:(SEL)selector onObject:(id)anObject; +#if NS_BLOCKS_AVAILABLE +- (id)andDo:(void (^)(NSInvocation *))block; +#endif +- (id)andForwardToRealObject; + +- (NSArray *)invocationHandlers; + +@end diff --git a/ConciseKitSpecs/Frameworks/OCMock.framework/Versions/Current/OCMock b/ConciseKitSpecs/Frameworks/OCMock.framework/Versions/Current/OCMock new file mode 100755 index 0000000000000000000000000000000000000000..2d6301def3d46dd155912ac7e37a874fddd25f65 GIT binary patch literal 190560 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 + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + OCMock + CFBundleIdentifier + com.mulle-kybernetik.OCMock + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + OCMock + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.29 + CFBundleSignature + ???? + CFBundleVersion + 1 + NSHumanReadableCopyright + Copyright © 2004-2009 Mulle Kybernetik. + + diff --git a/ConciseKitSpecs/Frameworks/OCMock.framework/Versions/Current/Resources/License.txt b/ConciseKitSpecs/Frameworks/OCMock.framework/Versions/Current/Resources/License.txt new file mode 100644 index 0000000..60a14bf --- /dev/null +++ b/ConciseKitSpecs/Frameworks/OCMock.framework/Versions/Current/Resources/License.txt @@ -0,0 +1,15 @@ + + Copyright (c) 2004-2010 by Mulle Kybernetik. All rights reserved. + + Permission to use, copy, modify and distribute this software and its documentation + is hereby granted, provided that both the copyright notice and this permission + notice appear in all copies of the software, derivative works or modified versions, + and any portions thereof, and that both notices appear in supporting documentation, + and that credit is given to Mulle Kybernetik in all documents and publicity + pertaining to direct or indirect use of this code or its derivatives. + + THIS IS EXPERIMENTAL SOFTWARE AND IT IS KNOWN TO HAVE BUGS, SOME OF WHICH MAY HAVE + SERIOUS CONSEQUENCES. THE COPYRIGHT HOLDER ALLOWS FREE USE OF THIS SOFTWARE IN ITS + "AS IS" CONDITION. THE COPYRIGHT HOLDER DISCLAIMS ANY LIABILITY OF ANY KIND FOR ANY + DAMAGES WHATSOEVER RESULTING DIRECTLY OR INDIRECTLY FROM THE USE OF THIS SOFTWARE + OR OF ANY DERIVATIVE WORK. \ No newline at end of file diff --git a/ConciseKitSpecs/Spec/NSArrayConciseKitSpec.m b/ConciseKitSpecs/Spec/NSArrayConciseKitSpec.m index e9402a3..c77549c 100644 --- a/ConciseKitSpecs/Spec/NSArrayConciseKitSpec.m +++ b/ConciseKitSpecs/Spec/NSArrayConciseKitSpec.m @@ -68,6 +68,13 @@ assertThat([array $at:1], equalTo(@"bar")); }); }); + + describe(@"-$compact", ^{ + it(@"returns array with nulls removed", ^{ + NSArray *strippedArray = [[NSArray arrayWithObjects:@1, @2, [NSNull null], @3, nil] $compact]; + assertThat(strippedArray, equalTo(@[@1, @2, @3])); + }); + }); describe(@"-$each:", ^{ it(@"runs block for each item, passing the item as an argument", ^{ diff --git a/src/NSArray+ConciseKit.h b/src/NSArray+ConciseKit.h index c0d0039..518a5b6 100644 --- a/src/NSArray+ConciseKit.h +++ b/src/NSArray+ConciseKit.h @@ -7,6 +7,7 @@ - (BOOL)$all:(BOOL (^)(id obj))block; - (BOOL)$any:(BOOL (^)(id obj))block; - (id)$at:(NSUInteger)index; +- (NSArray *)$compact; - (NSArray *)$each:(void (^)(id obj))block; - (NSArray *)$eachWithIndex:(void (^)(id obj, NSUInteger idx))block; - (NSArray *)$eachWithStop:(void (^)(id obj, BOOL *stop))block; diff --git a/src/NSArray+ConciseKit.m b/src/NSArray+ConciseKit.m index 56aac43..0c88bd9 100644 --- a/src/NSArray+ConciseKit.m +++ b/src/NSArray+ConciseKit.m @@ -22,6 +22,12 @@ @implementation NSArray (ConciseKit) return [self objectAtIndex:index]; } +- (NSArray *)$compact { + NSMutableArray *backingArray = [NSMutableArray arrayWithArray:self]; + [backingArray removeObjectIdenticalTo:[NSNull null]]; + return [NSArray arrayWithArray:backingArray]; +} + - (NSArray *)$each:(void (^)(id obj))block { [self enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { block(obj); From a4e777d53a12b0cb37a38a4692b856f000bf8aa6 Mon Sep 17 00:00:00 2001 From: Trent Kocurek Date: Fri, 12 Apr 2013 09:47:23 -0500 Subject: [PATCH 3/9] added --- ConciseKitSpecs/Spec/NSArrayConciseKitSpec.m | 10 ++++++++++ src/NSArray+ConciseKit.h | 1 + src/NSArray+ConciseKit.m | 7 +++++++ 3 files changed, 18 insertions(+) diff --git a/ConciseKitSpecs/Spec/NSArrayConciseKitSpec.m b/ConciseKitSpecs/Spec/NSArrayConciseKitSpec.m index c77549c..bb00340 100644 --- a/ConciseKitSpecs/Spec/NSArrayConciseKitSpec.m +++ b/ConciseKitSpecs/Spec/NSArrayConciseKitSpec.m @@ -75,6 +75,16 @@ assertThat(strippedArray, equalTo(@[@1, @2, @3])); }); }); + + describe(@"-$concat", ^{ + it(@"should concatenate self with argument array", ^{ + NSArray *arrayOne = @[@1, @2]; + NSArray *arrayTwo = @[@3, @4]; + NSArray *concatenatedArray = [arrayOne $concat:arrayTwo]; + + assertThat(concatenatedArray, equalTo(@[@1, @2, @3, @4])); + }); + }); describe(@"-$each:", ^{ it(@"runs block for each item, passing the item as an argument", ^{ diff --git a/src/NSArray+ConciseKit.h b/src/NSArray+ConciseKit.h index 518a5b6..cd30de5 100644 --- a/src/NSArray+ConciseKit.h +++ b/src/NSArray+ConciseKit.h @@ -8,6 +8,7 @@ - (BOOL)$any:(BOOL (^)(id obj))block; - (id)$at:(NSUInteger)index; - (NSArray *)$compact; +- (NSArray *)$concat:(NSArray *)otherArray; - (NSArray *)$each:(void (^)(id obj))block; - (NSArray *)$eachWithIndex:(void (^)(id obj, NSUInteger idx))block; - (NSArray *)$eachWithStop:(void (^)(id obj, BOOL *stop))block; diff --git a/src/NSArray+ConciseKit.m b/src/NSArray+ConciseKit.m index 0c88bd9..85e2d34 100644 --- a/src/NSArray+ConciseKit.m +++ b/src/NSArray+ConciseKit.m @@ -28,6 +28,13 @@ @implementation NSArray (ConciseKit) return [NSArray arrayWithArray:backingArray]; } +- (NSArray *)$concat:(NSArray *)otherArray { + NSMutableArray *mutableArray = [NSMutableArray arrayWithArray:self]; + [mutableArray addObjectsFromArray:otherArray]; + return [NSArray arrayWithArray:mutableArray]; +} + + - (NSArray *)$each:(void (^)(id obj))block { [self enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { block(obj); From b73f6addcda3c018054902230e118b5a688f42d6 Mon Sep 17 00:00:00 2001 From: Trent Kocurek Date: Fri, 12 Apr 2013 09:53:11 -0500 Subject: [PATCH 4/9] added --- ConciseKitSpecs/Spec/NSArrayConciseKitSpec.m | 15 ++++++++++----- src/NSArray+ConciseKit.h | 1 + src/NSArray+ConciseKit.m | 11 +++++++++++ 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/ConciseKitSpecs/Spec/NSArrayConciseKitSpec.m b/ConciseKitSpecs/Spec/NSArrayConciseKitSpec.m index bb00340..8de1a73 100644 --- a/ConciseKitSpecs/Spec/NSArrayConciseKitSpec.m +++ b/ConciseKitSpecs/Spec/NSArrayConciseKitSpec.m @@ -78,11 +78,9 @@ describe(@"-$concat", ^{ it(@"should concatenate self with argument array", ^{ - NSArray *arrayOne = @[@1, @2]; - NSArray *arrayTwo = @[@3, @4]; - NSArray *concatenatedArray = [arrayOne $concat:arrayTwo]; - - assertThat(concatenatedArray, equalTo(@[@1, @2, @3, @4])); + NSArray *concatenatedArray = [array $concat:@[@3, @4]]; + + assertThat(concatenatedArray, equalTo(@[@"foo", @"bar", @"baz", @3, @4])); }); }); @@ -223,6 +221,13 @@ assertThat(newArray, equalTo([NSArray arrayWithObject:@"lol"])); }); }); + + describe(@"-$drop", ^{ + it(@"should return a MutableArray with n objects removed from beginning of array", ^{ + NSMutableArray *droppedArray = [marray $drop:2]; + assertThat(droppedArray, equalTo(@[@"baz"])); + }); + }); describe(@"-$push:", ^{ it(@"adds an object", ^{ diff --git a/src/NSArray+ConciseKit.h b/src/NSArray+ConciseKit.h index cd30de5..dbd3f76 100644 --- a/src/NSArray+ConciseKit.h +++ b/src/NSArray+ConciseKit.h @@ -26,6 +26,7 @@ @interface NSMutableArray (ConciseKit) +- (NSMutableArray *)$drop:(int)n; - (NSMutableArray *)$push:(id)anObject; - (id)$pop; - (NSMutableArray *)$unshift:(id)anObject; diff --git a/src/NSArray+ConciseKit.m b/src/NSArray+ConciseKit.m index 85e2d34..1f1c5c1 100644 --- a/src/NSArray+ConciseKit.m +++ b/src/NSArray+ConciseKit.m @@ -141,6 +141,17 @@ @implementation NSMutableArray (ConciseKit) #define IF_ARC(with, without) without #endif +- (NSMutableArray *)$drop:(int)n { + if (n < 1) + return self; + + NSRange dropRange = NSMakeRange(0, n); + NSMutableArray *mutableArray = [NSMutableArray arrayWithArray:self]; + [mutableArray removeObjectsInRange:dropRange]; + + return mutableArray; +} + - (NSMutableArray *)$push:(id)anObject { [self addObject:anObject]; return self; From 9bb8f4c8bb43e6bf0facd44dae6daae67e038f7f Mon Sep 17 00:00:00 2001 From: Trent Kocurek Date: Fri, 12 Apr 2013 10:08:36 -0500 Subject: [PATCH 5/9] added method --- ConciseKitSpecs/Spec/NSArrayConciseKitSpec.m | 12 ++++++++++++ src/NSArray+ConciseKit.h | 1 + src/NSArray+ConciseKit.m | 4 ++++ 3 files changed, 17 insertions(+) diff --git a/ConciseKitSpecs/Spec/NSArrayConciseKitSpec.m b/ConciseKitSpecs/Spec/NSArrayConciseKitSpec.m index 8de1a73..5112c96 100644 --- a/ConciseKitSpecs/Spec/NSArrayConciseKitSpec.m +++ b/ConciseKitSpecs/Spec/NSArrayConciseKitSpec.m @@ -129,6 +129,18 @@ assertThatInteger(i, equalToInteger(4)); }); }); + + describe(@"-$empty", ^{ + it(@"should return YES if there are no objects in the array", ^{ + NSArray *emptyArray = [NSArray array]; + assertThatBool([emptyArray $empty], equalToBool(YES)); + }); + + it(@"should return NO if there are an objects in array", ^{ + NSArray *nonEmptyArray = @[@1]; + assertThatBool([nonEmptyArray $empty], equalToBool(NO)); + }); + }); describe(@"-$map:", ^{ it(@"runs block for each item, passing the item as an argument, and creates a new array containing the return values of the block", ^{ diff --git a/src/NSArray+ConciseKit.h b/src/NSArray+ConciseKit.h index dbd3f76..b0bc1a8 100644 --- a/src/NSArray+ConciseKit.h +++ b/src/NSArray+ConciseKit.h @@ -13,6 +13,7 @@ - (NSArray *)$eachWithIndex:(void (^)(id obj, NSUInteger idx))block; - (NSArray *)$eachWithStop:(void (^)(id obj, BOOL *stop))block; - (NSArray *)$eachWithIndexAndStop:(void (^)(id obj, NSUInteger idx, BOOL *stop))block; +- (BOOL)$empty; - (NSArray *)$map:(id (^)(id obj))block; - (NSArray *)$mapWithIndex:(id (^)(id obj, NSUInteger idx))block; - (id)$reduce:(id (^)(id memo, id obj))block; diff --git a/src/NSArray+ConciseKit.m b/src/NSArray+ConciseKit.m index 1f1c5c1..50dddd7 100644 --- a/src/NSArray+ConciseKit.m +++ b/src/NSArray+ConciseKit.m @@ -63,6 +63,10 @@ @implementation NSArray (ConciseKit) return self; } +- (BOOL)$empty { + return [self count] == 0; +} + - (NSArray *)$map:(id (^)(id obj))block { __block NSMutableArray *array = [NSMutableArray arrayWithCapacity:[self count]]; [self enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { From 7353d072113264805db3cc9a3ff263414f346c4f Mon Sep 17 00:00:00 2001 From: Trent Kocurek Date: Fri, 12 Apr 2013 14:15:43 -0500 Subject: [PATCH 6/9] added :n method --- ConciseKitSpecs/Spec/NSArrayConciseKitSpec.m | 6 ++++++ src/NSArray+ConciseKit.h | 1 + src/NSArray+ConciseKit.m | 5 +++++ 3 files changed, 12 insertions(+) diff --git a/ConciseKitSpecs/Spec/NSArrayConciseKitSpec.m b/ConciseKitSpecs/Spec/NSArrayConciseKitSpec.m index 5112c96..ff0fc39 100644 --- a/ConciseKitSpecs/Spec/NSArrayConciseKitSpec.m +++ b/ConciseKitSpecs/Spec/NSArrayConciseKitSpec.m @@ -20,6 +20,12 @@ assertThat([array $first], equalTo(@"foo")); }); }); + + describe(@"-$first n", ^{ + it(@"should return first n objects from array", ^{ + assertThat([array $first:2], equalTo(@[@"foo", @"bar"])); + }); + }); describe(@"-$last", ^{ it(@"returns the first object", ^{ diff --git a/src/NSArray+ConciseKit.h b/src/NSArray+ConciseKit.h index b0bc1a8..3d2bfca 100644 --- a/src/NSArray+ConciseKit.h +++ b/src/NSArray+ConciseKit.h @@ -3,6 +3,7 @@ @interface NSArray (ConciseKit) - (id)$first; +- (NSArray *)$first:(int)n; - (id)$last; - (BOOL)$all:(BOOL (^)(id obj))block; - (BOOL)$any:(BOOL (^)(id obj))block; diff --git a/src/NSArray+ConciseKit.m b/src/NSArray+ConciseKit.m index 50dddd7..2fc68d3 100644 --- a/src/NSArray+ConciseKit.m +++ b/src/NSArray+ConciseKit.m @@ -6,6 +6,11 @@ @implementation NSArray (ConciseKit) return [self objectAtIndex:0]; } +- (NSArray *)$first:(int)n { + NSRange range = NSMakeRange(0, (NSUInteger)n); + return [self subarrayWithRange:range]; +} + - (id)$last { return [self lastObject]; } From 031402ed13e9999e73e0c2a363dd7b33a5298b52 Mon Sep 17 00:00:00 2001 From: Trent Kocurek Date: Fri, 12 Apr 2013 14:27:43 -0500 Subject: [PATCH 7/9] added method --- ConciseKitSpecs/Spec/NSArrayConciseKitSpec.m | 12 ++++++++++++ src/NSArray+ConciseKit.h | 1 + src/NSArray+ConciseKit.m | 8 ++++++++ 3 files changed, 21 insertions(+) diff --git a/ConciseKitSpecs/Spec/NSArrayConciseKitSpec.m b/ConciseKitSpecs/Spec/NSArrayConciseKitSpec.m index ff0fc39..12e1d3e 100644 --- a/ConciseKitSpecs/Spec/NSArrayConciseKitSpec.m +++ b/ConciseKitSpecs/Spec/NSArrayConciseKitSpec.m @@ -147,6 +147,18 @@ assertThatBool([nonEmptyArray $empty], equalToBool(NO)); }); }); + + describe(@"-$include", ^{ + it(@"should return YES if any obj in array passes the specification", ^{ + BOOL included = [array $include:@"bar"]; + assertThatBool(included, equalToBool(YES)); + }); + + it(@"should return NO if no obj in array passes the specification", ^{ + BOOL included = [array $include:@"trent"]; + assertThatBool(included, equalToBool(NO)); + }); + }); describe(@"-$map:", ^{ it(@"runs block for each item, passing the item as an argument, and creates a new array containing the return values of the block", ^{ diff --git a/src/NSArray+ConciseKit.h b/src/NSArray+ConciseKit.h index 3d2bfca..d1f0214 100644 --- a/src/NSArray+ConciseKit.h +++ b/src/NSArray+ConciseKit.h @@ -15,6 +15,7 @@ - (NSArray *)$eachWithStop:(void (^)(id obj, BOOL *stop))block; - (NSArray *)$eachWithIndexAndStop:(void (^)(id obj, NSUInteger idx, BOOL *stop))block; - (BOOL)$empty; +- (BOOL)$include:(id)obj; - (NSArray *)$map:(id (^)(id obj))block; - (NSArray *)$mapWithIndex:(id (^)(id obj, NSUInteger idx))block; - (id)$reduce:(id (^)(id memo, id obj))block; diff --git a/src/NSArray+ConciseKit.m b/src/NSArray+ConciseKit.m index 2fc68d3..05082d1 100644 --- a/src/NSArray+ConciseKit.m +++ b/src/NSArray+ConciseKit.m @@ -72,6 +72,14 @@ @implementation NSArray (ConciseKit) return [self count] == 0; } +- (BOOL)$include:(id)someObj { + NSIndexSet *indexes = [self indexesOfObjectsPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) { + return obj == someObj; + }]; + + return [indexes count] > 0; +} + - (NSArray *)$map:(id (^)(id obj))block { __block NSMutableArray *array = [NSMutableArray arrayWithCapacity:[self count]]; [self enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { From 86697d77130e77ca85bd6bff67a3b584071f1b8c Mon Sep 17 00:00:00 2001 From: Trent Kocurek Date: Fri, 12 Apr 2013 17:11:14 -0500 Subject: [PATCH 8/9] add method --- ConciseKitSpecs/Spec/NSArrayConciseKitSpec.m | 7 +++++++ src/NSArray+ConciseKit.h | 3 ++- src/NSArray+ConciseKit.m | 12 +++++++++--- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/ConciseKitSpecs/Spec/NSArrayConciseKitSpec.m b/ConciseKitSpecs/Spec/NSArrayConciseKitSpec.m index 12e1d3e..2b11a74 100644 --- a/ConciseKitSpecs/Spec/NSArrayConciseKitSpec.m +++ b/ConciseKitSpecs/Spec/NSArrayConciseKitSpec.m @@ -280,6 +280,13 @@ assertThat([marray $pop], equalTo(@"baz")); }); }); + + describe(@"-$replace", ^{ + it(@"should replace self with new array", ^{ + [marray $replace:@[@1, @2, @3]]; + assertThat(marray, equalTo(@[@1, @2, @3])); + }); + }); describe(@"-$unshift:", ^{ it(@"adds first object", ^{ diff --git a/src/NSArray+ConciseKit.h b/src/NSArray+ConciseKit.h index d1f0214..312e1fd 100644 --- a/src/NSArray+ConciseKit.h +++ b/src/NSArray+ConciseKit.h @@ -32,7 +32,8 @@ - (NSMutableArray *)$drop:(int)n; - (NSMutableArray *)$push:(id)anObject; - (id)$pop; -- (NSMutableArray *)$unshift:(id)anObject; +- (NSArray *)$replace:(NSArray *)otherArray; - (id)$shift; +- (NSMutableArray *)$unshift:(id)anObject; @end \ No newline at end of file diff --git a/src/NSArray+ConciseKit.m b/src/NSArray+ConciseKit.m index 05082d1..954a7bc 100644 --- a/src/NSArray+ConciseKit.m +++ b/src/NSArray+ConciseKit.m @@ -180,9 +180,10 @@ @implementation NSMutableArray (ConciseKit) return lastObject; } -- (NSMutableArray *)$unshift:(id)anObject { - [self insertObject:anObject atIndex:0]; - return self; +- (NSArray *)$replace:(NSArray *)otherArray { + [self removeAllObjects]; + [self addObjectsFromArray:otherArray]; + return self; } - (id)$shift; { @@ -192,4 +193,9 @@ @implementation NSMutableArray (ConciseKit) return firstObject; } +- (NSMutableArray *)$unshift:(id)anObject { + [self insertObject:anObject atIndex:0]; + return self; +} + @end \ No newline at end of file From 3997ad2b1d40b179313322430818a3ae04cb738a Mon Sep 17 00:00:00 2001 From: Trent Kocurek Date: Tue, 23 Apr 2013 14:15:01 -0500 Subject: [PATCH 9/9] add method --- ConciseKitSpecs/Spec/NSArrayConciseKitSpec.m | 7 +++++++ src/NSArray+ConciseKit.h | 1 + src/NSArray+ConciseKit.m | 4 ++++ 3 files changed, 12 insertions(+) diff --git a/ConciseKitSpecs/Spec/NSArrayConciseKitSpec.m b/ConciseKitSpecs/Spec/NSArrayConciseKitSpec.m index 2b11a74..aa3e38e 100644 --- a/ConciseKitSpecs/Spec/NSArrayConciseKitSpec.m +++ b/ConciseKitSpecs/Spec/NSArrayConciseKitSpec.m @@ -195,6 +195,13 @@ assertThat(result, equalTo($integer(60))); }); }); + + describe(@"-$reverse", ^{ + it(@"should return a new array with contents of self in reverse order", ^{ + NSArray *reversedArray = [array $reverse]; + assertThat(reversedArray, equalTo(@[@"baz", @"bar", @"foo"])); + }); + }); describe(@"-$select:", ^{ it(@"creates a subarray from elements where the block returns YES", ^{ diff --git a/src/NSArray+ConciseKit.h b/src/NSArray+ConciseKit.h index 312e1fd..c635eaf 100644 --- a/src/NSArray+ConciseKit.h +++ b/src/NSArray+ConciseKit.h @@ -20,6 +20,7 @@ - (NSArray *)$mapWithIndex:(id (^)(id obj, NSUInteger idx))block; - (id)$reduce:(id (^)(id memo, id obj))block; - (id)$reduceStartingAt:(id)starting with:(id (^)(id memo, id obj))block; +- (NSArray *)$reverse; - (NSArray *)$select:(BOOL(^)(id obj))block; - (id)$detect:(BOOL(^)(id obj))block; - (NSString *)$join; diff --git a/src/NSArray+ConciseKit.m b/src/NSArray+ConciseKit.m index 954a7bc..ff4b86d 100644 --- a/src/NSArray+ConciseKit.m +++ b/src/NSArray+ConciseKit.m @@ -116,6 +116,10 @@ @implementation NSArray (ConciseKit) return ret; } +- (NSArray *)$reverse { + return [[self reverseObjectEnumerator] allObjects]; +} + - (NSArray *)$select:(BOOL(^)(id obj))block { __block NSMutableArray *array = [NSMutableArray arrayWithCapacity:[self count]]; [self enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {