second_curtain 0.2.2 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +8 -8
- data/.gitignore +20 -0
- data/.travis.yml +7 -0
- data/CHANGELOG +20 -0
- data/Demo/Demo/ASHAppDelegate.h +15 -0
- data/Demo/Demo/ASHAppDelegate.m +18 -0
- data/Demo/Demo/ASHViewController.h +13 -0
- data/Demo/Demo/ASHViewController.m +30 -0
- data/Demo/Demo/Base.lproj/Main.storyboard +30 -0
- data/Demo/Demo/Demo-Info.plist +40 -0
- data/Demo/Demo/Demo-Prefix.pch +16 -0
- data/Demo/Demo/Images.xcassets/AppIcon.appiconset/Contents.json +23 -0
- data/Demo/Demo/Images.xcassets/LaunchImage.launchimage/Contents.json +23 -0
- data/Demo/Demo/en.lproj/InfoPlist.strings +2 -0
- data/Demo/Demo/main.m +18 -0
- data/Demo/Demo.xcodeproj/project.pbxproj +517 -0
- data/Demo/Demo.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- data/Demo/Demo.xcodeproj/project.xcworkspace/xcshareddata/Demo.xccheckout +41 -0
- data/Demo/Demo.xcodeproj/project.xcworkspace/xcuserdata/ash.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- data/Demo/Demo.xcodeproj/xcshareddata/xcschemes/Demo.xcscheme +96 -0
- data/Demo/Demo.xcodeproj/xcuserdata/ash.xcuserdatad/xcschemes/xcschememanagement.plist +27 -0
- data/Demo/Demo.xcodeproj/xcuserdata/orta.xcuserdatad/xcschemes/xcschememanagement.plist +27 -0
- data/Demo/Demo.xcworkspace/contents.xcworkspacedata +1 -0
- data/Demo/Demo.xcworkspace/xcshareddata/Demo.xccheckout +41 -0
- data/Demo/Demo.xcworkspace/xcuserdata/ash.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- data/Demo/Demo.xcworkspace/xcuserdata/orta.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- data/Demo/DemoTests/DemoTests-Info.plist +22 -0
- data/Demo/DemoTests/DemoTests.m +52 -0
- data/Demo/DemoTests/ReferenceImages/ASHViewControllerSpec/a_view_controller_with_a_loaded_view_should_have_a_valid_snapshot@2x.png +0 -0
- data/Demo/DemoTests/ReferenceImages/ASHViewControllerSpec/views_should_be_green@2x.png +0 -0
- data/Demo/DemoTests/ReferenceImages/ASHViewControllerSpec/views_should_be_red@2x.png +0 -0
- data/Demo/DemoTests/en.lproj/InfoPlist.strings +2 -0
- data/Demo/Makefile +15 -0
- data/Demo/Podfile +16 -0
- data/Demo/Podfile.lock +21 -0
- data/Demo/Pods/BuildHeaders/Expecta/EXPBackwardCompatibility.h +42 -0
- data/Demo/Pods/BuildHeaders/Expecta/EXPBlockDefinedMatcher.h +25 -0
- data/Demo/Pods/BuildHeaders/Expecta/EXPDefines.h +17 -0
- data/Demo/Pods/BuildHeaders/Expecta/EXPDoubleTuple.h +13 -0
- data/Demo/Pods/BuildHeaders/Expecta/EXPExpect.h +45 -0
- data/Demo/Pods/BuildHeaders/Expecta/EXPFloatTuple.h +13 -0
- data/Demo/Pods/BuildHeaders/Expecta/EXPMatcher.h +20 -0
- data/Demo/Pods/BuildHeaders/Expecta/EXPMatcherHelpers.h +4 -0
- data/Demo/Pods/BuildHeaders/Expecta/EXPMatchers+beCloseTo.h +7 -0
- data/Demo/Pods/BuildHeaders/Expecta/EXPMatchers+beFalsy.h +3 -0
- data/Demo/Pods/BuildHeaders/Expecta/EXPMatchers+beGreaterThan.h +6 -0
- data/Demo/Pods/BuildHeaders/Expecta/EXPMatchers+beGreaterThanOrEqualTo.h +6 -0
- data/Demo/Pods/BuildHeaders/Expecta/EXPMatchers+beIdenticalTo.h +10 -0
- data/Demo/Pods/BuildHeaders/Expecta/EXPMatchers+beInTheRangeOf.h +6 -0
- data/Demo/Pods/BuildHeaders/Expecta/EXPMatchers+beInstanceOf.h +7 -0
- data/Demo/Pods/BuildHeaders/Expecta/EXPMatchers+beKindOf.h +5 -0
- data/Demo/Pods/BuildHeaders/Expecta/EXPMatchers+beLessThan.h +6 -0
- data/Demo/Pods/BuildHeaders/Expecta/EXPMatchers+beLessThanOrEqualTo.h +6 -0
- data/Demo/Pods/BuildHeaders/Expecta/EXPMatchers+beNil.h +5 -0
- data/Demo/Pods/BuildHeaders/Expecta/EXPMatchers+beSubclassOf.h +5 -0
- data/Demo/Pods/BuildHeaders/Expecta/EXPMatchers+beSupersetOf.h +4 -0
- data/Demo/Pods/BuildHeaders/Expecta/EXPMatchers+beTruthy.h +3 -0
- data/Demo/Pods/BuildHeaders/Expecta/EXPMatchers+beginWith.h +5 -0
- data/Demo/Pods/BuildHeaders/Expecta/EXPMatchers+conformTo.h +3 -0
- data/Demo/Pods/BuildHeaders/Expecta/EXPMatchers+contain.h +5 -0
- data/Demo/Pods/BuildHeaders/Expecta/EXPMatchers+endWith.h +3 -0
- data/Demo/Pods/BuildHeaders/Expecta/EXPMatchers+equal.h +5 -0
- data/Demo/Pods/BuildHeaders/Expecta/EXPMatchers+haveCountOf.h +10 -0
- data/Demo/Pods/BuildHeaders/Expecta/EXPMatchers+notify.h +4 -0
- data/Demo/Pods/BuildHeaders/Expecta/EXPMatchers+raise.h +4 -0
- data/Demo/Pods/BuildHeaders/Expecta/EXPMatchers+raiseWithReason.h +3 -0
- data/Demo/Pods/BuildHeaders/Expecta/EXPMatchers+respondTo.h +3 -0
- data/Demo/Pods/BuildHeaders/Expecta/EXPMatchers.h +24 -0
- data/Demo/Pods/BuildHeaders/Expecta/EXPUnsupportedObject.h +11 -0
- data/Demo/Pods/BuildHeaders/Expecta/Expecta.h +27 -0
- data/Demo/Pods/BuildHeaders/Expecta/ExpectaSupport.h +64 -0
- data/Demo/Pods/BuildHeaders/Expecta/NSObject+Expecta.h +14 -0
- data/Demo/Pods/BuildHeaders/Expecta/NSValue+Expecta.h +8 -0
- data/Demo/Pods/BuildHeaders/Expecta+Snapshots/EXPMatchers+FBSnapshotTest.h +21 -0
- data/Demo/Pods/BuildHeaders/FBSnapshotTestCase/FBSnapshotTestCase.h +87 -0
- data/Demo/Pods/BuildHeaders/FBSnapshotTestCase/FBSnapshotTestController.h +147 -0
- data/Demo/Pods/BuildHeaders/FBSnapshotTestCase/UIImage+Compare.h +37 -0
- data/Demo/Pods/BuildHeaders/FBSnapshotTestCase/UIImage+Diff.h +37 -0
- data/Demo/Pods/BuildHeaders/Specta/SPTExample.h +14 -0
- data/Demo/Pods/BuildHeaders/Specta/SPTExampleGroup.h +40 -0
- data/Demo/Pods/BuildHeaders/Specta/SPTNestedReporter.h +5 -0
- data/Demo/Pods/BuildHeaders/Specta/SPTReporter.h +33 -0
- data/Demo/Pods/BuildHeaders/Specta/SPTSharedExampleGroups.h +17 -0
- data/Demo/Pods/BuildHeaders/Specta/SPTSpec.h +21 -0
- data/Demo/Pods/BuildHeaders/Specta/SPTXCTestCase.h +27 -0
- data/Demo/Pods/BuildHeaders/Specta/SPTXCTestReporter.h +9 -0
- data/Demo/Pods/BuildHeaders/Specta/Specta.h +70 -0
- data/Demo/Pods/BuildHeaders/Specta/SpectaSupport.h +46 -0
- data/Demo/Pods/BuildHeaders/Specta/SpectaTypes.h +3 -0
- data/Demo/Pods/BuildHeaders/Specta/SpectaUtility.h +14 -0
- data/Demo/Pods/BuildHeaders/Specta/XCTestCase+Specta.h +4 -0
- data/Demo/Pods/BuildHeaders/Specta/XCTestLog+Specta.h +7 -0
- data/Demo/Pods/BuildHeaders/Specta/XCTestRun+Specta.h +8 -0
- data/Demo/Pods/Expecta/LICENSE +19 -0
- data/Demo/Pods/Expecta/README.md +308 -0
- data/Demo/Pods/Expecta/src/EXPBackwardCompatibility.h +42 -0
- data/Demo/Pods/Expecta/src/EXPBackwardCompatibility.m +17 -0
- data/Demo/Pods/Expecta/src/EXPBlockDefinedMatcher.h +25 -0
- data/Demo/Pods/Expecta/src/EXPBlockDefinedMatcher.m +60 -0
- data/Demo/Pods/Expecta/src/EXPDefines.h +17 -0
- data/Demo/Pods/Expecta/src/EXPDoubleTuple.h +13 -0
- data/Demo/Pods/Expecta/src/EXPDoubleTuple.m +42 -0
- data/Demo/Pods/Expecta/src/EXPExpect.h +45 -0
- data/Demo/Pods/Expecta/src/EXPExpect.m +214 -0
- data/Demo/Pods/Expecta/src/EXPFloatTuple.h +13 -0
- data/Demo/Pods/Expecta/src/EXPFloatTuple.m +42 -0
- data/Demo/Pods/Expecta/src/EXPMatcher.h +20 -0
- data/Demo/Pods/Expecta/src/EXPUnsupportedObject.h +11 -0
- data/Demo/Pods/Expecta/src/EXPUnsupportedObject.m +20 -0
- data/Demo/Pods/Expecta/src/Expecta.h +27 -0
- data/Demo/Pods/Expecta/src/Expecta.m +15 -0
- data/Demo/Pods/Expecta/src/ExpectaSupport.h +64 -0
- data/Demo/Pods/Expecta/src/ExpectaSupport.m +187 -0
- data/Demo/Pods/Expecta/src/NSObject+Expecta.h +14 -0
- data/Demo/Pods/Expecta/src/NSValue+Expecta.h +8 -0
- data/Demo/Pods/Expecta/src/NSValue+Expecta.m +21 -0
- data/Demo/Pods/Expecta/src/matchers/EXPMatcherHelpers.h +4 -0
- data/Demo/Pods/Expecta/src/matchers/EXPMatcherHelpers.m +9 -0
- data/Demo/Pods/Expecta/src/matchers/EXPMatchers+beCloseTo.h +7 -0
- data/Demo/Pods/Expecta/src/matchers/EXPMatchers+beCloseTo.m +49 -0
- data/Demo/Pods/Expecta/src/matchers/EXPMatchers+beFalsy.h +3 -0
- data/Demo/Pods/Expecta/src/matchers/EXPMatchers+beFalsy.m +24 -0
- data/Demo/Pods/Expecta/src/matchers/EXPMatchers+beGreaterThan.h +6 -0
- data/Demo/Pods/Expecta/src/matchers/EXPMatchers+beGreaterThan.m +20 -0
- data/Demo/Pods/Expecta/src/matchers/EXPMatchers+beGreaterThanOrEqualTo.h +6 -0
- data/Demo/Pods/Expecta/src/matchers/EXPMatchers+beGreaterThanOrEqualTo.m +20 -0
- data/Demo/Pods/Expecta/src/matchers/EXPMatchers+beIdenticalTo.h +10 -0
- data/Demo/Pods/Expecta/src/matchers/EXPMatchers+beIdenticalTo.m +24 -0
- data/Demo/Pods/Expecta/src/matchers/EXPMatchers+beInTheRangeOf.h +6 -0
- data/Demo/Pods/Expecta/src/matchers/EXPMatchers+beInTheRangeOf.m +30 -0
- data/Demo/Pods/Expecta/src/matchers/EXPMatchers+beInstanceOf.h +7 -0
- data/Demo/Pods/Expecta/src/matchers/EXPMatchers+beInstanceOf.m +27 -0
- data/Demo/Pods/Expecta/src/matchers/EXPMatchers+beKindOf.h +5 -0
- data/Demo/Pods/Expecta/src/matchers/EXPMatchers+beKindOf.m +27 -0
- data/Demo/Pods/Expecta/src/matchers/EXPMatchers+beLessThan.h +6 -0
- data/Demo/Pods/Expecta/src/matchers/EXPMatchers+beLessThan.m +20 -0
- data/Demo/Pods/Expecta/src/matchers/EXPMatchers+beLessThanOrEqualTo.h +6 -0
- data/Demo/Pods/Expecta/src/matchers/EXPMatchers+beLessThanOrEqualTo.m +20 -0
- data/Demo/Pods/Expecta/src/matchers/EXPMatchers+beNil.h +5 -0
- data/Demo/Pods/Expecta/src/matchers/EXPMatchers+beNil.m +16 -0
- data/Demo/Pods/Expecta/src/matchers/EXPMatchers+beSubclassOf.h +5 -0
- data/Demo/Pods/Expecta/src/matchers/EXPMatchers+beSubclassOf.m +27 -0
- data/Demo/Pods/Expecta/src/matchers/EXPMatchers+beSupersetOf.h +4 -0
- data/Demo/Pods/Expecta/src/matchers/EXPMatchers+beSupersetOf.m +57 -0
- data/Demo/Pods/Expecta/src/matchers/EXPMatchers+beTruthy.h +3 -0
- data/Demo/Pods/Expecta/src/matchers/EXPMatchers+beTruthy.m +24 -0
- data/Demo/Pods/Expecta/src/matchers/EXPMatchers+beginWith.h +5 -0
- data/Demo/Pods/Expecta/src/matchers/EXPMatchers+beginWith.m +49 -0
- data/Demo/Pods/Expecta/src/matchers/EXPMatchers+conformTo.h +3 -0
- data/Demo/Pods/Expecta/src/matchers/EXPMatchers+conformTo.m +33 -0
- data/Demo/Pods/Expecta/src/matchers/EXPMatchers+contain.h +5 -0
- data/Demo/Pods/Expecta/src/matchers/EXPMatchers+contain.m +38 -0
- data/Demo/Pods/Expecta/src/matchers/EXPMatchers+endWith.h +3 -0
- data/Demo/Pods/Expecta/src/matchers/EXPMatchers+endWith.m +49 -0
- data/Demo/Pods/Expecta/src/matchers/EXPMatchers+equal.h +5 -0
- data/Demo/Pods/Expecta/src/matchers/EXPMatchers+equal.m +24 -0
- data/Demo/Pods/Expecta/src/matchers/EXPMatchers+haveCountOf.h +10 -0
- data/Demo/Pods/Expecta/src/matchers/EXPMatchers+haveCountOf.m +36 -0
- data/Demo/Pods/Expecta/src/matchers/EXPMatchers+notify.h +4 -0
- data/Demo/Pods/Expecta/src/matchers/EXPMatchers+notify.m +63 -0
- data/Demo/Pods/Expecta/src/matchers/EXPMatchers+raise.h +4 -0
- data/Demo/Pods/Expecta/src/matchers/EXPMatchers+raise.m +30 -0
- data/Demo/Pods/Expecta/src/matchers/EXPMatchers+raiseWithReason.h +3 -0
- data/Demo/Pods/Expecta/src/matchers/EXPMatchers+raiseWithReason.m +35 -0
- data/Demo/Pods/Expecta/src/matchers/EXPMatchers+respondTo.h +3 -0
- data/Demo/Pods/Expecta/src/matchers/EXPMatchers+respondTo.m +28 -0
- data/Demo/Pods/Expecta/src/matchers/EXPMatchers.h +24 -0
- data/Demo/Pods/Expecta+Snapshots/EXPMatchers+FBSnapshotTest.h +21 -0
- data/Demo/Pods/Expecta+Snapshots/EXPMatchers+FBSnapshotTest.m +308 -0
- data/Demo/Pods/Expecta+Snapshots/LICENSE.md +22 -0
- data/Demo/Pods/Expecta+Snapshots/README.md +85 -0
- data/Demo/Pods/FBSnapshotTestCase/FBSnapshotTestCase.h +87 -0
- data/Demo/Pods/FBSnapshotTestCase/FBSnapshotTestCase.m +82 -0
- data/Demo/Pods/FBSnapshotTestCase/FBSnapshotTestController.h +147 -0
- data/Demo/Pods/FBSnapshotTestCase/FBSnapshotTestController.m +376 -0
- data/Demo/Pods/FBSnapshotTestCase/LICENSE +29 -0
- data/Demo/Pods/FBSnapshotTestCase/README.md +83 -0
- data/Demo/Pods/FBSnapshotTestCase/UIImage+Compare.h +37 -0
- data/Demo/Pods/FBSnapshotTestCase/UIImage+Compare.m +87 -0
- data/Demo/Pods/FBSnapshotTestCase/UIImage+Diff.h +37 -0
- data/Demo/Pods/FBSnapshotTestCase/UIImage+Diff.m +56 -0
- data/Demo/Pods/Headers/Expecta/EXPBackwardCompatibility.h +42 -0
- data/Demo/Pods/Headers/Expecta/EXPBlockDefinedMatcher.h +25 -0
- data/Demo/Pods/Headers/Expecta/EXPDefines.h +17 -0
- data/Demo/Pods/Headers/Expecta/EXPDoubleTuple.h +13 -0
- data/Demo/Pods/Headers/Expecta/EXPExpect.h +45 -0
- data/Demo/Pods/Headers/Expecta/EXPFloatTuple.h +13 -0
- data/Demo/Pods/Headers/Expecta/EXPMatcher.h +20 -0
- data/Demo/Pods/Headers/Expecta/EXPMatcherHelpers.h +4 -0
- data/Demo/Pods/Headers/Expecta/EXPMatchers+beCloseTo.h +7 -0
- data/Demo/Pods/Headers/Expecta/EXPMatchers+beFalsy.h +3 -0
- data/Demo/Pods/Headers/Expecta/EXPMatchers+beGreaterThan.h +6 -0
- data/Demo/Pods/Headers/Expecta/EXPMatchers+beGreaterThanOrEqualTo.h +6 -0
- data/Demo/Pods/Headers/Expecta/EXPMatchers+beIdenticalTo.h +10 -0
- data/Demo/Pods/Headers/Expecta/EXPMatchers+beInTheRangeOf.h +6 -0
- data/Demo/Pods/Headers/Expecta/EXPMatchers+beInstanceOf.h +7 -0
- data/Demo/Pods/Headers/Expecta/EXPMatchers+beKindOf.h +5 -0
- data/Demo/Pods/Headers/Expecta/EXPMatchers+beLessThan.h +6 -0
- data/Demo/Pods/Headers/Expecta/EXPMatchers+beLessThanOrEqualTo.h +6 -0
- data/Demo/Pods/Headers/Expecta/EXPMatchers+beNil.h +5 -0
- data/Demo/Pods/Headers/Expecta/EXPMatchers+beSubclassOf.h +5 -0
- data/Demo/Pods/Headers/Expecta/EXPMatchers+beSupersetOf.h +4 -0
- data/Demo/Pods/Headers/Expecta/EXPMatchers+beTruthy.h +3 -0
- data/Demo/Pods/Headers/Expecta/EXPMatchers+beginWith.h +5 -0
- data/Demo/Pods/Headers/Expecta/EXPMatchers+conformTo.h +3 -0
- data/Demo/Pods/Headers/Expecta/EXPMatchers+contain.h +5 -0
- data/Demo/Pods/Headers/Expecta/EXPMatchers+endWith.h +3 -0
- data/Demo/Pods/Headers/Expecta/EXPMatchers+equal.h +5 -0
- data/Demo/Pods/Headers/Expecta/EXPMatchers+haveCountOf.h +10 -0
- data/Demo/Pods/Headers/Expecta/EXPMatchers+notify.h +4 -0
- data/Demo/Pods/Headers/Expecta/EXPMatchers+raise.h +4 -0
- data/Demo/Pods/Headers/Expecta/EXPMatchers+raiseWithReason.h +3 -0
- data/Demo/Pods/Headers/Expecta/EXPMatchers+respondTo.h +3 -0
- data/Demo/Pods/Headers/Expecta/EXPMatchers.h +24 -0
- data/Demo/Pods/Headers/Expecta/EXPUnsupportedObject.h +11 -0
- data/Demo/Pods/Headers/Expecta/Expecta.h +27 -0
- data/Demo/Pods/Headers/Expecta/ExpectaSupport.h +64 -0
- data/Demo/Pods/Headers/Expecta/NSObject+Expecta.h +14 -0
- data/Demo/Pods/Headers/Expecta/NSValue+Expecta.h +8 -0
- data/Demo/Pods/Headers/Expecta+Snapshots/EXPMatchers+FBSnapshotTest.h +21 -0
- data/Demo/Pods/Headers/FBSnapshotTestCase/FBSnapshotTestCase.h +87 -0
- data/Demo/Pods/Headers/FBSnapshotTestCase/FBSnapshotTestController.h +147 -0
- data/Demo/Pods/Headers/FBSnapshotTestCase/UIImage+Compare.h +37 -0
- data/Demo/Pods/Headers/FBSnapshotTestCase/UIImage+Diff.h +37 -0
- data/Demo/Pods/Headers/Specta/SPTExample.h +14 -0
- data/Demo/Pods/Headers/Specta/SPTExampleGroup.h +40 -0
- data/Demo/Pods/Headers/Specta/SPTNestedReporter.h +5 -0
- data/Demo/Pods/Headers/Specta/SPTReporter.h +33 -0
- data/Demo/Pods/Headers/Specta/SPTSharedExampleGroups.h +17 -0
- data/Demo/Pods/Headers/Specta/SPTSpec.h +21 -0
- data/Demo/Pods/Headers/Specta/SPTXCTestCase.h +27 -0
- data/Demo/Pods/Headers/Specta/SPTXCTestReporter.h +9 -0
- data/Demo/Pods/Headers/Specta/Specta.h +70 -0
- data/Demo/Pods/Headers/Specta/SpectaSupport.h +46 -0
- data/Demo/Pods/Headers/Specta/SpectaTypes.h +3 -0
- data/Demo/Pods/Headers/Specta/SpectaUtility.h +14 -0
- data/Demo/Pods/Headers/Specta/XCTestCase+Specta.h +4 -0
- data/Demo/Pods/Headers/Specta/XCTestLog+Specta.h +7 -0
- data/Demo/Pods/Headers/Specta/XCTestRun+Specta.h +8 -0
- data/Demo/Pods/Manifest.lock +21 -0
- data/Demo/Pods/Pods-DemoTests-EXPMatchers+FBSnapshotTest-Private.xcconfig +6 -0
- data/Demo/Pods/Pods-DemoTests-EXPMatchers+FBSnapshotTest-dummy.m +5 -0
- data/Demo/Pods/Pods-DemoTests-EXPMatchers+FBSnapshotTest-prefix.pch +5 -0
- data/Demo/Pods/Pods-DemoTests-EXPMatchers+FBSnapshotTest.xcconfig +2 -0
- data/Demo/Pods/Pods-DemoTests-Expecta+Snapshots-Private.xcconfig +6 -0
- data/Demo/Pods/Pods-DemoTests-Expecta+Snapshots-dummy.m +5 -0
- data/Demo/Pods/Pods-DemoTests-Expecta+Snapshots-prefix.pch +5 -0
- data/Demo/Pods/Pods-DemoTests-Expecta+Snapshots.xcconfig +2 -0
- data/Demo/Pods/Pods-DemoTests-Expecta-Private.xcconfig +5 -0
- data/Demo/Pods/Pods-DemoTests-Expecta-dummy.m +5 -0
- data/Demo/Pods/Pods-DemoTests-Expecta-prefix.pch +5 -0
- data/Demo/Pods/Pods-DemoTests-Expecta.xcconfig +1 -0
- data/Demo/Pods/Pods-DemoTests-FBSnapshotTestCase-Private.xcconfig +6 -0
- data/Demo/Pods/Pods-DemoTests-FBSnapshotTestCase-dummy.m +5 -0
- data/Demo/Pods/Pods-DemoTests-FBSnapshotTestCase-prefix.pch +6 -0
- data/Demo/Pods/Pods-DemoTests-FBSnapshotTestCase.xcconfig +2 -0
- data/Demo/Pods/Pods-DemoTests-Specta-Private.xcconfig +6 -0
- data/Demo/Pods/Pods-DemoTests-Specta-dummy.m +5 -0
- data/Demo/Pods/Pods-DemoTests-Specta-prefix.pch +5 -0
- data/Demo/Pods/Pods-DemoTests-Specta.xcconfig +2 -0
- data/Demo/Pods/Pods-DemoTests-acknowledgements.markdown +109 -0
- data/Demo/Pods/Pods-DemoTests-acknowledgements.plist +151 -0
- data/Demo/Pods/Pods-DemoTests-dummy.m +5 -0
- data/Demo/Pods/Pods-DemoTests-environment.h +32 -0
- data/Demo/Pods/Pods-DemoTests-resources.sh +68 -0
- data/Demo/Pods/Pods-DemoTests.xcconfig +6 -0
- data/Demo/Pods/Pods.xcodeproj/project.pbxproj +1390 -0
- data/Demo/Pods/Pods.xcodeproj/xcuserdata/ash.xcuserdatad/xcschemes/Pods-DemoTests-Expecta+Snapshots.xcscheme +59 -0
- data/Demo/Pods/Pods.xcodeproj/xcuserdata/ash.xcuserdatad/xcschemes/Pods-DemoTests-Expecta.xcscheme +59 -0
- data/Demo/Pods/Pods.xcodeproj/xcuserdata/ash.xcuserdatad/xcschemes/Pods-DemoTests-FBSnapshotTestCase.xcscheme +59 -0
- data/Demo/Pods/Pods.xcodeproj/xcuserdata/ash.xcuserdatad/xcschemes/Pods-DemoTests-Specta.xcscheme +59 -0
- data/Demo/Pods/Pods.xcodeproj/xcuserdata/ash.xcuserdatad/xcschemes/Pods-DemoTests.xcscheme +59 -0
- data/Demo/Pods/Pods.xcodeproj/xcuserdata/ash.xcuserdatad/xcschemes/xcschememanagement.plist +62 -0
- data/Demo/Pods/Specta/LICENSE +20 -0
- data/Demo/Pods/Specta/README.md +146 -0
- data/Demo/Pods/Specta/src/SPTExample.h +14 -0
- data/Demo/Pods/Specta/src/SPTExample.m +16 -0
- data/Demo/Pods/Specta/src/SPTExampleGroup.h +40 -0
- data/Demo/Pods/Specta/src/SPTExampleGroup.m +326 -0
- data/Demo/Pods/Specta/src/SPTNestedReporter.h +5 -0
- data/Demo/Pods/Specta/src/SPTNestedReporter.m +194 -0
- data/Demo/Pods/Specta/src/SPTReporter.h +33 -0
- data/Demo/Pods/Specta/src/SPTReporter.m +134 -0
- data/Demo/Pods/Specta/src/SPTSharedExampleGroups.h +17 -0
- data/Demo/Pods/Specta/src/SPTSharedExampleGroups.m +62 -0
- data/Demo/Pods/Specta/src/SPTSpec.h +21 -0
- data/Demo/Pods/Specta/src/SPTSpec.m +31 -0
- data/Demo/Pods/Specta/src/SPTXCTestCase.h +27 -0
- data/Demo/Pods/Specta/src/SPTXCTestCase.m +151 -0
- data/Demo/Pods/Specta/src/SPTXCTestReporter.h +9 -0
- data/Demo/Pods/Specta/src/SPTXCTestReporter.m +11 -0
- data/Demo/Pods/Specta/src/Specta.h +70 -0
- data/Demo/Pods/Specta/src/Specta.m +144 -0
- data/Demo/Pods/Specta/src/SpectaSupport.h +46 -0
- data/Demo/Pods/Specta/src/SpectaTypes.h +3 -0
- data/Demo/Pods/Specta/src/SpectaUtility.h +14 -0
- data/Demo/Pods/Specta/src/SpectaUtility.m +65 -0
- data/Demo/Pods/Specta/src/XCTestCase+Specta.h +4 -0
- data/Demo/Pods/Specta/src/XCTestCase+Specta.m +26 -0
- data/Demo/Pods/Specta/src/XCTestLog+Specta.h +7 -0
- data/Demo/Pods/Specta/src/XCTestLog+Specta.m +49 -0
- data/Demo/Pods/Specta/src/XCTestRun+Specta.h +8 -0
- data/Demo/Pods/Specta/src/XCTestRun+Specta.m +44 -0
- data/Gemfile +5 -0
- data/LICENSE +21 -0
- data/README.md +146 -0
- data/Rakefile +7 -0
- data/second_curtain.gemspec +20 -0
- data/spec/sample_output.txt +79 -0
- data/spec/second_shutter/kaleidoscope_command_spec.rb +25 -0
- data/spec/second_shutter/parser_spec.rb +39 -0
- data/spec/second_shutter/test_suite_spec.rb +32 -0
- data/spec/second_shutter/upload_manager_spec.rb +60 -0
- data/spec/second_shutter/upload_spec.rb +34 -0
- data/spec/second_shutter/xcode_test_case_spec.rb +22 -0
- metadata +315 -1
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Created by Gabriel Handford on 3/1/09.
|
|
3
|
+
// Copyright 2009-2013. All rights reserved.
|
|
4
|
+
// Created by John Boiles on 10/20/11.
|
|
5
|
+
// Copyright (c) 2011. All rights reserved
|
|
6
|
+
// Modified by Felix Schulze on 2/11/13.
|
|
7
|
+
// Copyright 2013. All rights reserved.
|
|
8
|
+
//
|
|
9
|
+
// Permission is hereby granted, free of charge, to any person
|
|
10
|
+
// obtaining a copy of this software and associated documentation
|
|
11
|
+
// files (the "Software"), to deal in the Software without
|
|
12
|
+
// restriction, including without limitation the rights to use,
|
|
13
|
+
// copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
14
|
+
// copies of the Software, and to permit persons to whom the
|
|
15
|
+
// Software is furnished to do so, subject to the following
|
|
16
|
+
// conditions:
|
|
17
|
+
//
|
|
18
|
+
// The above copyright notice and this permission notice shall be
|
|
19
|
+
// included in all copies or substantial portions of the Software.
|
|
20
|
+
//
|
|
21
|
+
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
22
|
+
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
23
|
+
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
24
|
+
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
|
25
|
+
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
26
|
+
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
27
|
+
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
28
|
+
// OTHER DEALINGS IN THE SOFTWARE.
|
|
29
|
+
//
|
|
30
|
+
|
|
31
|
+
#import "UIImage+Compare.h"
|
|
32
|
+
|
|
33
|
+
@implementation UIImage (Compare)
|
|
34
|
+
|
|
35
|
+
- (BOOL)compareWithImage:(UIImage *)image
|
|
36
|
+
{
|
|
37
|
+
NSAssert(CGSizeEqualToSize(self.size, image.size), @"Images must be same size.");
|
|
38
|
+
|
|
39
|
+
// The images have the equal size, so we could use the smallest amount of bytes because of byte padding
|
|
40
|
+
size_t minBytesPerRow = MIN(CGImageGetBytesPerRow(self.CGImage), CGImageGetBytesPerRow(image.CGImage));
|
|
41
|
+
size_t referenceImageSizeBytes = CGImageGetHeight(self.CGImage) * minBytesPerRow;
|
|
42
|
+
void *referenceImagePixels = calloc(1, referenceImageSizeBytes);
|
|
43
|
+
void *imagePixels = calloc(1, referenceImageSizeBytes);
|
|
44
|
+
|
|
45
|
+
if (!referenceImagePixels || !imagePixels) {
|
|
46
|
+
free(referenceImagePixels);
|
|
47
|
+
free(imagePixels);
|
|
48
|
+
return NO;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
CGContextRef referenceImageContext = CGBitmapContextCreate(referenceImagePixels,
|
|
52
|
+
CGImageGetWidth(self.CGImage),
|
|
53
|
+
CGImageGetHeight(self.CGImage),
|
|
54
|
+
CGImageGetBitsPerComponent(self.CGImage),
|
|
55
|
+
minBytesPerRow,
|
|
56
|
+
CGImageGetColorSpace(self.CGImage),
|
|
57
|
+
(CGBitmapInfo)kCGImageAlphaPremultipliedLast
|
|
58
|
+
);
|
|
59
|
+
CGContextRef imageContext = CGBitmapContextCreate(imagePixels,
|
|
60
|
+
CGImageGetWidth(image.CGImage),
|
|
61
|
+
CGImageGetHeight(image.CGImage),
|
|
62
|
+
CGImageGetBitsPerComponent(image.CGImage),
|
|
63
|
+
minBytesPerRow,
|
|
64
|
+
CGImageGetColorSpace(image.CGImage),
|
|
65
|
+
(CGBitmapInfo)kCGImageAlphaPremultipliedLast
|
|
66
|
+
);
|
|
67
|
+
|
|
68
|
+
if (!referenceImageContext || !imageContext) {
|
|
69
|
+
CGContextRelease(referenceImageContext);
|
|
70
|
+
CGContextRelease(imageContext);
|
|
71
|
+
free(referenceImagePixels);
|
|
72
|
+
free(imagePixels);
|
|
73
|
+
return NO;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
CGContextDrawImage(referenceImageContext, CGRectMake(0.0f, 0.0f, self.size.width, self.size.height), self.CGImage);
|
|
77
|
+
CGContextDrawImage(imageContext, CGRectMake(0.0f, 0.0f, image.size.width, image.size.height), image.CGImage);
|
|
78
|
+
CGContextRelease(referenceImageContext);
|
|
79
|
+
CGContextRelease(imageContext);
|
|
80
|
+
|
|
81
|
+
BOOL imageEqual = (memcmp(referenceImagePixels, imagePixels, referenceImageSizeBytes) == 0);
|
|
82
|
+
free(referenceImagePixels);
|
|
83
|
+
free(imagePixels);
|
|
84
|
+
return imageEqual;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
@end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Created by Gabriel Handford on 3/1/09.
|
|
3
|
+
// Copyright 2009-2013. All rights reserved.
|
|
4
|
+
// Created by John Boiles on 10/20/11.
|
|
5
|
+
// Copyright (c) 2011. All rights reserved
|
|
6
|
+
// Modified by Felix Schulze on 2/11/13.
|
|
7
|
+
// Copyright 2013. All rights reserved.
|
|
8
|
+
//
|
|
9
|
+
// Permission is hereby granted, free of charge, to any person
|
|
10
|
+
// obtaining a copy of this software and associated documentation
|
|
11
|
+
// files (the "Software"), to deal in the Software without
|
|
12
|
+
// restriction, including without limitation the rights to use,
|
|
13
|
+
// copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
14
|
+
// copies of the Software, and to permit persons to whom the
|
|
15
|
+
// Software is furnished to do so, subject to the following
|
|
16
|
+
// conditions:
|
|
17
|
+
//
|
|
18
|
+
// The above copyright notice and this permission notice shall be
|
|
19
|
+
// included in all copies or substantial portions of the Software.
|
|
20
|
+
//
|
|
21
|
+
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
22
|
+
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
23
|
+
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
24
|
+
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
|
25
|
+
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
26
|
+
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
27
|
+
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
28
|
+
// OTHER DEALINGS IN THE SOFTWARE.
|
|
29
|
+
//
|
|
30
|
+
|
|
31
|
+
#import <UIKit/UIKit.h>
|
|
32
|
+
|
|
33
|
+
@interface UIImage (Diff)
|
|
34
|
+
|
|
35
|
+
- (UIImage *)diffWithImage:(UIImage *)image;
|
|
36
|
+
|
|
37
|
+
@end
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Created by Gabriel Handford on 3/1/09.
|
|
3
|
+
// Copyright 2009-2013. All rights reserved.
|
|
4
|
+
// Created by John Boiles on 10/20/11.
|
|
5
|
+
// Copyright (c) 2011. All rights reserved
|
|
6
|
+
// Modified by Felix Schulze on 2/11/13.
|
|
7
|
+
// Copyright 2013. All rights reserved.
|
|
8
|
+
//
|
|
9
|
+
// Permission is hereby granted, free of charge, to any person
|
|
10
|
+
// obtaining a copy of this software and associated documentation
|
|
11
|
+
// files (the "Software"), to deal in the Software without
|
|
12
|
+
// restriction, including without limitation the rights to use,
|
|
13
|
+
// copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
14
|
+
// copies of the Software, and to permit persons to whom the
|
|
15
|
+
// Software is furnished to do so, subject to the following
|
|
16
|
+
// conditions:
|
|
17
|
+
//
|
|
18
|
+
// The above copyright notice and this permission notice shall be
|
|
19
|
+
// included in all copies or substantial portions of the Software.
|
|
20
|
+
//
|
|
21
|
+
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
22
|
+
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
23
|
+
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
24
|
+
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
|
25
|
+
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
26
|
+
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
27
|
+
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
28
|
+
// OTHER DEALINGS IN THE SOFTWARE.
|
|
29
|
+
//
|
|
30
|
+
|
|
31
|
+
#import "UIImage+Diff.h"
|
|
32
|
+
|
|
33
|
+
@implementation UIImage (Diff)
|
|
34
|
+
|
|
35
|
+
- (UIImage *)diffWithImage:(UIImage *)image
|
|
36
|
+
{
|
|
37
|
+
if (!image) {
|
|
38
|
+
return nil;
|
|
39
|
+
}
|
|
40
|
+
CGSize imageSize = CGSizeMake(MAX(self.size.width, image.size.width), MAX(self.size.height, image.size.height));
|
|
41
|
+
UIGraphicsBeginImageContextWithOptions(imageSize, YES, 0.0);
|
|
42
|
+
CGContextRef context = UIGraphicsGetCurrentContext();
|
|
43
|
+
[self drawInRect:CGRectMake(0, 0, self.size.width, self.size.height)];
|
|
44
|
+
CGContextSetAlpha(context, 0.5f);
|
|
45
|
+
CGContextBeginTransparencyLayer(context, NULL);
|
|
46
|
+
[image drawInRect:CGRectMake(0, 0, image.size.width, image.size.height)];
|
|
47
|
+
CGContextSetBlendMode(context, kCGBlendModeDifference);
|
|
48
|
+
CGContextSetFillColorWithColor(context,[UIColor whiteColor].CGColor);
|
|
49
|
+
CGContextFillRect(context, CGRectMake(0, 0, self.size.width, self.size.height));
|
|
50
|
+
CGContextEndTransparencyLayer(context);
|
|
51
|
+
UIImage *returnImage = UIGraphicsGetImageFromCurrentImageContext();
|
|
52
|
+
UIGraphicsEndImageContext();
|
|
53
|
+
return returnImage;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
@end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
#import "EXPExpect.h"
|
|
2
|
+
|
|
3
|
+
@interface EXPExpect (BackwardCompatiblity)
|
|
4
|
+
|
|
5
|
+
@property(nonatomic, readonly) EXPExpect *Not;
|
|
6
|
+
@property(nonatomic, readonly) EXPExpect *isGoing;
|
|
7
|
+
@property(nonatomic, readonly) EXPExpect *isNotGoing;
|
|
8
|
+
|
|
9
|
+
@end
|
|
10
|
+
|
|
11
|
+
#define toBeFalsy beFalsy
|
|
12
|
+
#define toBeGreaterThan beGreaterThan
|
|
13
|
+
#define toBeGreaterThanOrEqualTo beGreaterThanOrEqualTo
|
|
14
|
+
#define toBeIdenticalTo beIdenticalTo
|
|
15
|
+
#define toBeInTheRangeOf beInTheRangeOf
|
|
16
|
+
#define toBeInstanceOf beInstanceOf
|
|
17
|
+
#define toBeAnInstanceOf beInstanceOf
|
|
18
|
+
#define toBeMemberOf beInstanceOf
|
|
19
|
+
#define toBeAMemberOf beInstanceOf
|
|
20
|
+
#define toBeKindOf beKindOf
|
|
21
|
+
#define toBeAKindOf beKindOf
|
|
22
|
+
#define toBeLessThan beLessThan
|
|
23
|
+
#define toBeLessThanOrEqualTo beLessThanOrEqualTo
|
|
24
|
+
#define toBeNil beNil
|
|
25
|
+
#define toBeNull beNil
|
|
26
|
+
#define toBeSubclassOf beSubclassOf
|
|
27
|
+
#define toBeASubclassOf beSubclassOf
|
|
28
|
+
#define toBeTruthy beTruthy
|
|
29
|
+
#define toBeFalsy beFalsy
|
|
30
|
+
#define toContain contain
|
|
31
|
+
#define toEqual equal
|
|
32
|
+
#define toBeCloseTo beCloseTo
|
|
33
|
+
#define toBeCloseToWithin beCloseToWithin
|
|
34
|
+
#define toHaveCount haveCountOf
|
|
35
|
+
#define toHaveCountOf haveCountOf
|
|
36
|
+
#define toHaveACountOf haveCountOf
|
|
37
|
+
#define toHaveLength haveCountOf
|
|
38
|
+
#define toHaveLengthOf haveCountOf
|
|
39
|
+
#define toHaveALengthOf haveCountOf
|
|
40
|
+
#define toBeEmpty beEmpty
|
|
41
|
+
#define toRaise raise
|
|
42
|
+
#define toRaiseAny raiseAny
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
//
|
|
2
|
+
// EXPRuntimeMatcher.h
|
|
3
|
+
// Expecta
|
|
4
|
+
//
|
|
5
|
+
// Created by Luke Redpath on 26/03/2012.
|
|
6
|
+
// Copyright (c) 2012 Peter Jihoon Kim. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
#import <Foundation/Foundation.h>
|
|
10
|
+
#import "EXPMatcher.h"
|
|
11
|
+
#import "EXPDefines.h"
|
|
12
|
+
|
|
13
|
+
@interface EXPBlockDefinedMatcher : NSObject <EXPMatcher> {
|
|
14
|
+
EXPBoolBlock prerequisiteBlock;
|
|
15
|
+
EXPBoolBlock matchBlock;
|
|
16
|
+
EXPStringBlock failureMessageForToBlock;
|
|
17
|
+
EXPStringBlock failureMessageForNotToBlock;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
@property(nonatomic, copy) EXPBoolBlock prerequisiteBlock;
|
|
21
|
+
@property(nonatomic, copy) EXPBoolBlock matchBlock;
|
|
22
|
+
@property(nonatomic, copy) EXPStringBlock failureMessageForToBlock;
|
|
23
|
+
@property(nonatomic, copy) EXPStringBlock failureMessageForNotToBlock;
|
|
24
|
+
|
|
25
|
+
@end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
//
|
|
2
|
+
// EXPDefines.h
|
|
3
|
+
// Expecta
|
|
4
|
+
//
|
|
5
|
+
// Created by Luke Redpath on 26/03/2012.
|
|
6
|
+
// Copyright (c) 2012 Peter Jihoon Kim. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
#ifndef Expecta_EXPDefines_h
|
|
10
|
+
#define Expecta_EXPDefines_h
|
|
11
|
+
|
|
12
|
+
typedef void (^EXPBasicBlock)();
|
|
13
|
+
typedef id (^EXPIdBlock)();
|
|
14
|
+
typedef BOOL (^EXPBoolBlock)();
|
|
15
|
+
typedef NSString *(^EXPStringBlock)();
|
|
16
|
+
|
|
17
|
+
#endif
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
#import <Foundation/Foundation.h>
|
|
2
|
+
|
|
3
|
+
@interface EXPDoubleTuple : NSObject {
|
|
4
|
+
double *_values;
|
|
5
|
+
size_t _size;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
@property (nonatomic, assign) double *values;
|
|
9
|
+
@property (nonatomic, assign) size_t size;
|
|
10
|
+
|
|
11
|
+
- (id)initWithDoubleValues:(double *)values size:(size_t)size;
|
|
12
|
+
|
|
13
|
+
@end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
#import <Foundation/Foundation.h>
|
|
2
|
+
#import "EXPMatcher.h"
|
|
3
|
+
#import "EXPDefines.h"
|
|
4
|
+
|
|
5
|
+
@interface EXPExpect : NSObject {
|
|
6
|
+
EXPIdBlock _actualBlock;
|
|
7
|
+
id _testCase;
|
|
8
|
+
int _lineNumber;
|
|
9
|
+
char *_fileName;
|
|
10
|
+
BOOL _negative;
|
|
11
|
+
BOOL _asynchronous;
|
|
12
|
+
NSTimeInterval _timeout;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
@property(nonatomic, copy) EXPIdBlock actualBlock;
|
|
16
|
+
@property(nonatomic, readonly) id actual;
|
|
17
|
+
@property(nonatomic, assign) id testCase;
|
|
18
|
+
@property(nonatomic) int lineNumber;
|
|
19
|
+
@property(nonatomic) const char *fileName;
|
|
20
|
+
@property(nonatomic) BOOL negative;
|
|
21
|
+
@property(nonatomic) BOOL asynchronous;
|
|
22
|
+
@property(nonatomic) NSTimeInterval timeout;
|
|
23
|
+
|
|
24
|
+
@property(nonatomic, readonly) EXPExpect *to;
|
|
25
|
+
@property(nonatomic, readonly) EXPExpect *toNot;
|
|
26
|
+
@property(nonatomic, readonly) EXPExpect *notTo;
|
|
27
|
+
@property(nonatomic, readonly) EXPExpect *will;
|
|
28
|
+
@property(nonatomic, readonly) EXPExpect *willNot;
|
|
29
|
+
@property(nonatomic, readonly) EXPExpect *(^after)(NSTimeInterval timeInterval);
|
|
30
|
+
|
|
31
|
+
- (id)initWithActualBlock:(id)actualBlock testCase:(id)testCase lineNumber:(int)lineNumber fileName:(const char *)fileName;
|
|
32
|
+
+ (EXPExpect *)expectWithActualBlock:(id)actualBlock testCase:(id)testCase lineNumber:(int)lineNumber fileName:(const char *)fileName;
|
|
33
|
+
|
|
34
|
+
- (void)applyMatcher:(id<EXPMatcher>)matcher;
|
|
35
|
+
- (void)applyMatcher:(id<EXPMatcher>)matcher to:(NSObject **)actual;
|
|
36
|
+
|
|
37
|
+
@end
|
|
38
|
+
|
|
39
|
+
@interface EXPDynamicPredicateMatcher : NSObject <EXPMatcher> {
|
|
40
|
+
EXPExpect *_expectation;
|
|
41
|
+
SEL _selector;
|
|
42
|
+
}
|
|
43
|
+
- (id)initWithExpectation:(EXPExpect *)expectation selector:(SEL)selector;
|
|
44
|
+
- (void (^)(void))dispatch;
|
|
45
|
+
@end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
#import <Foundation/Foundation.h>
|
|
2
|
+
|
|
3
|
+
@interface EXPFloatTuple : NSObject {
|
|
4
|
+
float *_values;
|
|
5
|
+
size_t _size;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
@property (nonatomic, assign) float *values;
|
|
9
|
+
@property (nonatomic, assign) size_t size;
|
|
10
|
+
|
|
11
|
+
- (id)initWithFloatValues:(float *)values size:(size_t)size;
|
|
12
|
+
|
|
13
|
+
@end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
//
|
|
2
|
+
// EXPMatcher.h
|
|
3
|
+
// Expecta
|
|
4
|
+
//
|
|
5
|
+
// Created by Luke Redpath on 26/03/2012.
|
|
6
|
+
// Copyright (c) 2012 Peter Jihoon Kim. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
#import <Foundation/Foundation.h>
|
|
10
|
+
|
|
11
|
+
@protocol EXPMatcher <NSObject>
|
|
12
|
+
|
|
13
|
+
- (BOOL)matches:(id)actual;
|
|
14
|
+
|
|
15
|
+
@optional
|
|
16
|
+
- (BOOL)meetsPrerequesiteFor:(id)actual;
|
|
17
|
+
- (NSString *)failureMessageForTo:(id)actual;
|
|
18
|
+
- (NSString *)failureMessageForNotTo:(id)actual;
|
|
19
|
+
|
|
20
|
+
@end
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
#import "Expecta.h"
|
|
2
|
+
|
|
3
|
+
EXPMatcherInterface(_beCloseToWithin, (id expected, id within));
|
|
4
|
+
EXPMatcherInterface(beCloseToWithin, (id expected, id within));
|
|
5
|
+
|
|
6
|
+
#define beCloseTo(expected) _beCloseToWithin(EXPObjectify((expected)), nil)
|
|
7
|
+
#define beCloseToWithin(expected, range) _beCloseToWithin(EXPObjectify((expected)), EXPObjectify((range)))
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
#import "Expecta.h"
|
|
2
|
+
|
|
3
|
+
EXPMatcherInterface(_beIdenticalTo, (void *expected));
|
|
4
|
+
EXPMatcherInterface(beIdenticalTo, (void *expected)); // to aid code completion
|
|
5
|
+
|
|
6
|
+
#if __has_feature(objc_arc)
|
|
7
|
+
#define beIdenticalTo(expected) _beIdenticalTo((__bridge void*)expected)
|
|
8
|
+
#else
|
|
9
|
+
#define beIdenticalTo _beIdenticalTo
|
|
10
|
+
#endif
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
#import "Expecta.h"
|
|
2
|
+
|
|
3
|
+
EXPMatcherInterface(_beInTheRangeOf, (id expectedLowerBound, id expectedUpperBound));
|
|
4
|
+
EXPMatcherInterface(beInTheRangeOf, (id expectedLowerBound, id expectedUpperBound));
|
|
5
|
+
|
|
6
|
+
#define beInTheRangeOf(expectedLowerBound, expectedUpperBound) _beInTheRangeOf(EXPObjectify((expectedLowerBound)), EXPObjectify((expectedUpperBound)))
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
#import "Expecta.h"
|
|
2
|
+
|
|
3
|
+
EXPMatcherInterface(haveCountOf, (NSUInteger expected));
|
|
4
|
+
|
|
5
|
+
#define haveCount haveCountOf
|
|
6
|
+
#define haveACountOf haveCountOf
|
|
7
|
+
#define haveLength haveCountOf
|
|
8
|
+
#define haveLengthOf haveCountOf
|
|
9
|
+
#define haveALengthOf haveCountOf
|
|
10
|
+
#define beEmpty() haveCountOf(0)
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
#import "EXPMatchers+beNil.h"
|
|
2
|
+
#import "EXPMatchers+equal.h"
|
|
3
|
+
#import "EXPMatchers+beInstanceOf.h"
|
|
4
|
+
#import "EXPMatchers+beKindOf.h"
|
|
5
|
+
#import "EXPMatchers+beSubclassOf.h"
|
|
6
|
+
#import "EXPMatchers+conformTo.h"
|
|
7
|
+
#import "EXPMatchers+beTruthy.h"
|
|
8
|
+
#import "EXPMatchers+beFalsy.h"
|
|
9
|
+
#import "EXPMatchers+contain.h"
|
|
10
|
+
#import "EXPMatchers+beSupersetOf.h"
|
|
11
|
+
#import "EXPMatchers+haveCountOf.h"
|
|
12
|
+
#import "EXPMatchers+beIdenticalTo.h"
|
|
13
|
+
#import "EXPMatchers+beGreaterThan.h"
|
|
14
|
+
#import "EXPMatchers+beGreaterThanOrEqualTo.h"
|
|
15
|
+
#import "EXPMatchers+beLessThan.h"
|
|
16
|
+
#import "EXPMatchers+beLessThanOrEqualTo.h"
|
|
17
|
+
#import "EXPMatchers+beInTheRangeOf.h"
|
|
18
|
+
#import "EXPMatchers+beCloseTo.h"
|
|
19
|
+
#import "EXPMatchers+raise.h"
|
|
20
|
+
#import "EXPMatchers+raiseWithReason.h"
|
|
21
|
+
#import "EXPMatchers+respondTo.h"
|
|
22
|
+
#import "EXPMatchers+notify.h"
|
|
23
|
+
#import "EXPMatchers+beginWith.h"
|
|
24
|
+
#import "EXPMatchers+endWith.h"
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
#import <Foundation/Foundation.h>
|
|
2
|
+
#import "ExpectaSupport.h"
|
|
3
|
+
|
|
4
|
+
#define EXPObjectify(value) _EXPObjectify(@encode(__typeof__((value))), (value))
|
|
5
|
+
|
|
6
|
+
#define EXP_expect(actual) _EXP_expect(self, __LINE__, __FILE__, ^id{ return EXPObjectify((actual)); })
|
|
7
|
+
|
|
8
|
+
#define EXPMatcherInterface(matcherName, matcherArguments) _EXPMatcherInterface(matcherName, matcherArguments)
|
|
9
|
+
#define EXPMatcherImplementationBegin(matcherName, matcherArguments) _EXPMatcherImplementationBegin(matcherName, matcherArguments)
|
|
10
|
+
#define EXPMatcherImplementationEnd _EXPMatcherImplementationEnd
|
|
11
|
+
|
|
12
|
+
#import "EXPMatchers.h"
|
|
13
|
+
|
|
14
|
+
#ifdef EXP_SHORTHAND
|
|
15
|
+
# define expect(...) EXP_expect((__VA_ARGS__))
|
|
16
|
+
#endif
|
|
17
|
+
|
|
18
|
+
#ifdef EXP_OLD_SYNTAX
|
|
19
|
+
# import "EXPBackwardCompatibility.h"
|
|
20
|
+
#endif
|
|
21
|
+
|
|
22
|
+
@interface Expecta : NSObject
|
|
23
|
+
|
|
24
|
+
+ (NSTimeInterval)asynchronousTestTimeout;
|
|
25
|
+
+ (void)setAsynchronousTestTimeout:(NSTimeInterval)timeout;
|
|
26
|
+
|
|
27
|
+
@end
|