├── .gitignore ├── .travis.yml ├── Assets ├── ImageError.psd ├── ImageError@2x.psd ├── ImageError@3x.psd ├── ImageSelected.psd ├── ImageSelected@2x.psd ├── ImageSelected@3x.psd ├── ImageSelectedSmallOff.psd ├── ImageSelectedSmallOff@2x.psd ├── ImageSelectedSmallOff@3x.psd ├── ImageSelectedSmallOn.psd ├── ImageSelectedSmallOn@2x.psd ├── ImageSelectedSmallOn@3x.psd ├── PlayButtonOverlayLarge.psd ├── PlayButtonOverlayLarge@2x.psd ├── PlayButtonOverlayLarge@3x.psd ├── PlayButtonOverlayLargeTap.psd ├── PlayButtonOverlayLargeTap@2x.psd ├── PlayButtonOverlayLargeTap@3x.psd ├── UIBarButtonItemArrow.psd ├── UIBarButtonItemArrow@2x.psd ├── UIBarButtonItemArrow@3x.psd ├── UIBarButtonItemGrid.psd ├── UIBarButtonItemGrid@2x.psd ├── UIBarButtonItemGrid@3x.psd ├── VideoOverlay.psd ├── VideoOverlay@2x.psd └── VideoOverlay@3x.psd ├── Example ├── MWPhotoBrowser.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ └── contents.xcworkspacedata │ └── xcshareddata │ │ └── xcschemes │ │ └── MWPhotoBrowser-Example.xcscheme ├── MWPhotoBrowser.xcworkspace │ └── contents.xcworkspacedata ├── MWPhotoBrowser │ ├── AppDelegate.h │ ├── AppDelegate.m │ ├── Images.xcassets │ │ ├── AppIcon.appiconset │ │ │ └── Contents.json │ │ ├── ImageSelected.imageset │ │ │ ├── Contents.json │ │ │ ├── ImageSelectedOn.png │ │ │ ├── ImageSelectedOn@2x.png │ │ │ └── ImageSelectedOn@3x.png │ │ ├── ImageSelectedSmall.imageset │ │ │ ├── Contents.json │ │ │ ├── ImageSelectedSmallOn.png │ │ │ ├── ImageSelectedSmallOn@2x.png │ │ │ └── ImageSelectedSmallOn@3x.png │ │ └── LaunchImage.launchimage │ │ │ └── Contents.json │ ├── Local Media │ │ ├── photo1.jpg │ │ ├── photo1t.jpg │ │ ├── photo2.jpg │ │ ├── photo2t.jpg │ │ ├── photo3.jpg │ │ ├── photo3t.jpg │ │ ├── photo4.jpg │ │ ├── photo4t.jpg │ │ ├── photo5.jpg │ │ ├── photo5t.jpg │ │ ├── photo6.jpg │ │ ├── photo6t.jpg │ │ ├── photo7.jpg │ │ ├── photo7t.jpg │ │ ├── photo8.jpg │ │ ├── photo8t.jpg │ │ ├── video.mp4 │ │ └── video_thumb.jpg │ ├── MWPhotoBrowser-Info.plist │ ├── MWPhotoBrowser-Prefix.pch │ ├── Main.storyboard │ ├── Menu.h │ ├── Menu.m │ ├── en.lproj │ │ └── InfoPlist.strings │ └── main.m ├── Podfile ├── Podfile.lock ├── Pods │ ├── DACircularProgress │ │ ├── DACircularProgress │ │ │ ├── DACircularProgressView.h │ │ │ ├── DACircularProgressView.m │ │ │ ├── DALabeledCircularProgressView.h │ │ │ └── DALabeledCircularProgressView.m │ │ ├── LICENSE.md │ │ └── README.md │ ├── Expecta+Snapshots │ │ ├── EXPMatchers+FBSnapshotTest.h │ │ ├── EXPMatchers+FBSnapshotTest.m │ │ ├── LICENSE.md │ │ └── README.md │ ├── Expecta │ │ ├── Expecta │ │ │ ├── EXPBlockDefinedMatcher.h │ │ │ ├── EXPBlockDefinedMatcher.m │ │ │ ├── EXPDefines.h │ │ │ ├── EXPDoubleTuple.h │ │ │ ├── EXPDoubleTuple.m │ │ │ ├── EXPExpect.h │ │ │ ├── EXPExpect.m │ │ │ ├── EXPFloatTuple.h │ │ │ ├── EXPFloatTuple.m │ │ │ ├── EXPMatcher.h │ │ │ ├── EXPUnsupportedObject.h │ │ │ ├── EXPUnsupportedObject.m │ │ │ ├── Expecta.h │ │ │ ├── ExpectaObject.h │ │ │ ├── ExpectaObject.m │ │ │ ├── ExpectaSupport.h │ │ │ ├── ExpectaSupport.m │ │ │ ├── Matchers │ │ │ │ ├── EXPMatcherHelpers.h │ │ │ │ ├── EXPMatcherHelpers.m │ │ │ │ ├── EXPMatchers+beCloseTo.h │ │ │ │ ├── EXPMatchers+beCloseTo.m │ │ │ │ ├── EXPMatchers+beFalsy.h │ │ │ │ ├── EXPMatchers+beFalsy.m │ │ │ │ ├── EXPMatchers+beGreaterThan.h │ │ │ │ ├── EXPMatchers+beGreaterThan.m │ │ │ │ ├── EXPMatchers+beGreaterThanOrEqualTo.h │ │ │ │ ├── EXPMatchers+beGreaterThanOrEqualTo.m │ │ │ │ ├── EXPMatchers+beIdenticalTo.h │ │ │ │ ├── EXPMatchers+beIdenticalTo.m │ │ │ │ ├── EXPMatchers+beInTheRangeOf.h │ │ │ │ ├── EXPMatchers+beInTheRangeOf.m │ │ │ │ ├── EXPMatchers+beInstanceOf.h │ │ │ │ ├── EXPMatchers+beInstanceOf.m │ │ │ │ ├── EXPMatchers+beKindOf.h │ │ │ │ ├── EXPMatchers+beKindOf.m │ │ │ │ ├── EXPMatchers+beLessThan.h │ │ │ │ ├── EXPMatchers+beLessThan.m │ │ │ │ ├── EXPMatchers+beLessThanOrEqualTo.h │ │ │ │ ├── EXPMatchers+beLessThanOrEqualTo.m │ │ │ │ ├── EXPMatchers+beNil.h │ │ │ │ ├── EXPMatchers+beNil.m │ │ │ │ ├── EXPMatchers+beSubclassOf.h │ │ │ │ ├── EXPMatchers+beSubclassOf.m │ │ │ │ ├── EXPMatchers+beSupersetOf.h │ │ │ │ ├── EXPMatchers+beSupersetOf.m │ │ │ │ ├── EXPMatchers+beTruthy.h │ │ │ │ ├── EXPMatchers+beTruthy.m │ │ │ │ ├── EXPMatchers+beginWith.h │ │ │ │ ├── EXPMatchers+beginWith.m │ │ │ │ ├── EXPMatchers+conformTo.h │ │ │ │ ├── EXPMatchers+conformTo.m │ │ │ │ ├── EXPMatchers+contain.h │ │ │ │ ├── EXPMatchers+contain.m │ │ │ │ ├── EXPMatchers+endWith.h │ │ │ │ ├── EXPMatchers+endWith.m │ │ │ │ ├── EXPMatchers+equal.h │ │ │ │ ├── EXPMatchers+equal.m │ │ │ │ ├── EXPMatchers+haveCountOf.h │ │ │ │ ├── EXPMatchers+haveCountOf.m │ │ │ │ ├── EXPMatchers+match.h │ │ │ │ ├── EXPMatchers+match.m │ │ │ │ ├── EXPMatchers+postNotification.h │ │ │ │ ├── EXPMatchers+postNotification.m │ │ │ │ ├── EXPMatchers+raise.h │ │ │ │ ├── EXPMatchers+raise.m │ │ │ │ ├── EXPMatchers+raiseWithReason.h │ │ │ │ ├── EXPMatchers+raiseWithReason.m │ │ │ │ ├── EXPMatchers+respondTo.h │ │ │ │ ├── EXPMatchers+respondTo.m │ │ │ │ └── EXPMatchers.h │ │ │ ├── NSObject+Expecta.h │ │ │ ├── NSValue+Expecta.h │ │ │ └── NSValue+Expecta.m │ │ ├── LICENSE │ │ └── README.md │ ├── FBSnapshotTestCase │ │ ├── FBSnapshotTestCase │ │ │ ├── FBSnapshotTestCase.h │ │ │ ├── FBSnapshotTestCase.m │ │ │ ├── FBSnapshotTestCasePlatform.h │ │ │ ├── FBSnapshotTestCasePlatform.m │ │ │ ├── FBSnapshotTestController.h │ │ │ ├── FBSnapshotTestController.m │ │ │ ├── UIImage+Compare.h │ │ │ ├── UIImage+Compare.m │ │ │ ├── UIImage+Diff.h │ │ │ └── UIImage+Diff.m │ │ ├── LICENSE │ │ └── README.md │ ├── Headers │ │ ├── Private │ │ │ ├── DACircularProgress │ │ │ │ ├── DACircularProgressView.h │ │ │ │ └── DALabeledCircularProgressView.h │ │ │ ├── Expecta+Snapshots │ │ │ │ └── EXPMatchers+FBSnapshotTest.h │ │ │ ├── Expecta │ │ │ │ ├── EXPBlockDefinedMatcher.h │ │ │ │ ├── EXPDefines.h │ │ │ │ ├── EXPDoubleTuple.h │ │ │ │ ├── EXPExpect.h │ │ │ │ ├── EXPFloatTuple.h │ │ │ │ ├── EXPMatcher.h │ │ │ │ ├── EXPMatcherHelpers.h │ │ │ │ ├── EXPMatchers+beCloseTo.h │ │ │ │ ├── EXPMatchers+beFalsy.h │ │ │ │ ├── EXPMatchers+beGreaterThan.h │ │ │ │ ├── EXPMatchers+beGreaterThanOrEqualTo.h │ │ │ │ ├── EXPMatchers+beIdenticalTo.h │ │ │ │ ├── EXPMatchers+beInTheRangeOf.h │ │ │ │ ├── EXPMatchers+beInstanceOf.h │ │ │ │ ├── EXPMatchers+beKindOf.h │ │ │ │ ├── EXPMatchers+beLessThan.h │ │ │ │ ├── EXPMatchers+beLessThanOrEqualTo.h │ │ │ │ ├── EXPMatchers+beNil.h │ │ │ │ ├── EXPMatchers+beSubclassOf.h │ │ │ │ ├── EXPMatchers+beSupersetOf.h │ │ │ │ ├── EXPMatchers+beTruthy.h │ │ │ │ ├── EXPMatchers+beginWith.h │ │ │ │ ├── EXPMatchers+conformTo.h │ │ │ │ ├── EXPMatchers+contain.h │ │ │ │ ├── EXPMatchers+endWith.h │ │ │ │ ├── EXPMatchers+equal.h │ │ │ │ ├── EXPMatchers+haveCountOf.h │ │ │ │ ├── EXPMatchers+match.h │ │ │ │ ├── EXPMatchers+postNotification.h │ │ │ │ ├── EXPMatchers+raise.h │ │ │ │ ├── EXPMatchers+raiseWithReason.h │ │ │ │ ├── EXPMatchers+respondTo.h │ │ │ │ ├── EXPMatchers.h │ │ │ │ ├── EXPUnsupportedObject.h │ │ │ │ ├── Expecta.h │ │ │ │ ├── ExpectaObject.h │ │ │ │ ├── ExpectaSupport.h │ │ │ │ ├── NSObject+Expecta.h │ │ │ │ └── NSValue+Expecta.h │ │ │ ├── FBSnapshotTestCase │ │ │ │ ├── FBSnapshotTestCase.h │ │ │ │ ├── FBSnapshotTestCasePlatform.h │ │ │ │ ├── FBSnapshotTestController.h │ │ │ │ ├── UIImage+Compare.h │ │ │ │ └── UIImage+Diff.h │ │ │ ├── MBProgressHUD │ │ │ │ └── MBProgressHUD.h │ │ │ ├── MWPhotoBrowser │ │ │ │ ├── MWCaptionView.h │ │ │ │ ├── MWCommon.h │ │ │ │ ├── MWGridCell.h │ │ │ │ ├── MWGridViewController.h │ │ │ │ ├── MWPhoto.h │ │ │ │ ├── MWPhotoBrowser.h │ │ │ │ ├── MWPhotoBrowserPrivate.h │ │ │ │ ├── MWPhotoProtocol.h │ │ │ │ ├── MWTapDetectingImageView.h │ │ │ │ ├── MWTapDetectingView.h │ │ │ │ ├── MWZoomingScrollView.h │ │ │ │ └── UIImage+MWPhotoBrowser.h │ │ │ ├── SDWebImage │ │ │ │ ├── NSData+ImageContentType.h │ │ │ │ ├── SDImageCache.h │ │ │ │ ├── SDWebImageCompat.h │ │ │ │ ├── SDWebImageDecoder.h │ │ │ │ ├── SDWebImageDownloader.h │ │ │ │ ├── SDWebImageDownloaderOperation.h │ │ │ │ ├── SDWebImageManager.h │ │ │ │ ├── SDWebImageOperation.h │ │ │ │ ├── SDWebImagePrefetcher.h │ │ │ │ ├── UIButton+WebCache.h │ │ │ │ ├── UIImage+GIF.h │ │ │ │ ├── UIImage+MultiFormat.h │ │ │ │ ├── UIImageView+HighlightedWebCache.h │ │ │ │ ├── UIImageView+WebCache.h │ │ │ │ └── UIView+WebCacheOperation.h │ │ │ └── Specta │ │ │ │ ├── SPTCallSite.h │ │ │ │ ├── SPTCompiledExample.h │ │ │ │ ├── SPTExample.h │ │ │ │ ├── SPTExampleGroup.h │ │ │ │ ├── SPTExcludeGlobalBeforeAfterEach.h │ │ │ │ ├── SPTGlobalBeforeAfterEach.h │ │ │ │ ├── SPTSharedExampleGroups.h │ │ │ │ ├── SPTSpec.h │ │ │ │ ├── SPTTestSuite.h │ │ │ │ ├── Specta.h │ │ │ │ ├── SpectaDSL.h │ │ │ │ ├── SpectaTypes.h │ │ │ │ ├── SpectaUtility.h │ │ │ │ ├── XCTest+Private.h │ │ │ │ └── XCTestCase+Specta.h │ │ └── Public │ │ │ ├── DACircularProgress │ │ │ ├── DACircularProgressView.h │ │ │ └── DALabeledCircularProgressView.h │ │ │ ├── Expecta+Snapshots │ │ │ └── EXPMatchers+FBSnapshotTest.h │ │ │ ├── Expecta │ │ │ ├── EXPBlockDefinedMatcher.h │ │ │ ├── EXPDefines.h │ │ │ ├── EXPDoubleTuple.h │ │ │ ├── EXPExpect.h │ │ │ ├── EXPFloatTuple.h │ │ │ ├── EXPMatcher.h │ │ │ ├── EXPMatcherHelpers.h │ │ │ ├── EXPMatchers+beCloseTo.h │ │ │ ├── EXPMatchers+beFalsy.h │ │ │ ├── EXPMatchers+beGreaterThan.h │ │ │ ├── EXPMatchers+beGreaterThanOrEqualTo.h │ │ │ ├── EXPMatchers+beIdenticalTo.h │ │ │ ├── EXPMatchers+beInTheRangeOf.h │ │ │ ├── EXPMatchers+beInstanceOf.h │ │ │ ├── EXPMatchers+beKindOf.h │ │ │ ├── EXPMatchers+beLessThan.h │ │ │ ├── EXPMatchers+beLessThanOrEqualTo.h │ │ │ ├── EXPMatchers+beNil.h │ │ │ ├── EXPMatchers+beSubclassOf.h │ │ │ ├── EXPMatchers+beSupersetOf.h │ │ │ ├── EXPMatchers+beTruthy.h │ │ │ ├── EXPMatchers+beginWith.h │ │ │ ├── EXPMatchers+conformTo.h │ │ │ ├── EXPMatchers+contain.h │ │ │ ├── EXPMatchers+endWith.h │ │ │ ├── EXPMatchers+equal.h │ │ │ ├── EXPMatchers+haveCountOf.h │ │ │ ├── EXPMatchers+match.h │ │ │ ├── EXPMatchers+postNotification.h │ │ │ ├── EXPMatchers+raise.h │ │ │ ├── EXPMatchers+raiseWithReason.h │ │ │ ├── EXPMatchers+respondTo.h │ │ │ ├── EXPMatchers.h │ │ │ ├── EXPUnsupportedObject.h │ │ │ ├── Expecta.h │ │ │ ├── ExpectaObject.h │ │ │ ├── ExpectaSupport.h │ │ │ ├── NSObject+Expecta.h │ │ │ └── NSValue+Expecta.h │ │ │ ├── FBSnapshotTestCase │ │ │ ├── FBSnapshotTestCase.h │ │ │ ├── FBSnapshotTestCasePlatform.h │ │ │ ├── FBSnapshotTestController.h │ │ │ ├── UIImage+Compare.h │ │ │ └── UIImage+Diff.h │ │ │ ├── MBProgressHUD │ │ │ └── MBProgressHUD.h │ │ │ ├── MWPhotoBrowser │ │ │ ├── MWCaptionView.h │ │ │ ├── MWCommon.h │ │ │ ├── MWGridCell.h │ │ │ ├── MWGridViewController.h │ │ │ ├── MWPhoto.h │ │ │ ├── MWPhotoBrowser.h │ │ │ ├── MWPhotoBrowserPrivate.h │ │ │ ├── MWPhotoProtocol.h │ │ │ ├── MWTapDetectingImageView.h │ │ │ ├── MWTapDetectingView.h │ │ │ ├── MWZoomingScrollView.h │ │ │ └── UIImage+MWPhotoBrowser.h │ │ │ ├── SDWebImage │ │ │ ├── NSData+ImageContentType.h │ │ │ ├── SDImageCache.h │ │ │ ├── SDWebImageCompat.h │ │ │ ├── SDWebImageDecoder.h │ │ │ ├── SDWebImageDownloader.h │ │ │ ├── SDWebImageDownloaderOperation.h │ │ │ ├── SDWebImageManager.h │ │ │ ├── SDWebImageOperation.h │ │ │ ├── SDWebImagePrefetcher.h │ │ │ ├── UIButton+WebCache.h │ │ │ ├── UIImage+GIF.h │ │ │ ├── UIImage+MultiFormat.h │ │ │ ├── UIImageView+HighlightedWebCache.h │ │ │ ├── UIImageView+WebCache.h │ │ │ └── UIView+WebCacheOperation.h │ │ │ └── Specta │ │ │ ├── SPTCallSite.h │ │ │ ├── SPTCompiledExample.h │ │ │ ├── SPTExample.h │ │ │ ├── SPTExampleGroup.h │ │ │ ├── SPTExcludeGlobalBeforeAfterEach.h │ │ │ ├── SPTGlobalBeforeAfterEach.h │ │ │ ├── SPTSharedExampleGroups.h │ │ │ ├── SPTSpec.h │ │ │ ├── SPTTestSuite.h │ │ │ ├── Specta.h │ │ │ ├── SpectaDSL.h │ │ │ ├── SpectaTypes.h │ │ │ ├── SpectaUtility.h │ │ │ ├── XCTest+Private.h │ │ │ └── XCTestCase+Specta.h │ ├── Local Podspecs │ │ └── MWPhotoBrowser.podspec.json │ ├── MBProgressHUD │ │ ├── LICENSE │ │ ├── MBProgressHUD.h │ │ ├── MBProgressHUD.m │ │ └── README.mdown │ ├── Manifest.lock │ ├── Pods.xcodeproj │ │ ├── project.pbxproj │ │ ├── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── xcschemes │ │ │ ├── MWPhotoBrowser.xcscheme │ │ │ ├── Pods-MWPhotoBrowser_Example-MWPhotoBrowser-MWPhotoBrowser.xcscheme │ │ │ ├── Pods-MWPhotoBrowser_Example-MWPhotoBrowser.xcscheme │ │ │ ├── Pods-MWPhotoBrowser_Tests-MWPhotoBrowser-MWPhotoBrowser.xcscheme │ │ │ └── Pods-MWPhotoBrowser_Tests-MWPhotoBrowser.xcscheme │ ├── SDWebImage │ │ ├── LICENSE │ │ ├── README.md │ │ └── SDWebImage │ │ │ ├── NSData+ImageContentType.h │ │ │ ├── NSData+ImageContentType.m │ │ │ ├── SDImageCache.h │ │ │ ├── SDImageCache.m │ │ │ ├── SDWebImageCompat.h │ │ │ ├── SDWebImageCompat.m │ │ │ ├── SDWebImageDecoder.h │ │ │ ├── SDWebImageDecoder.m │ │ │ ├── SDWebImageDownloader.h │ │ │ ├── SDWebImageDownloader.m │ │ │ ├── SDWebImageDownloaderOperation.h │ │ │ ├── SDWebImageDownloaderOperation.m │ │ │ ├── SDWebImageManager.h │ │ │ ├── SDWebImageManager.m │ │ │ ├── SDWebImageOperation.h │ │ │ ├── SDWebImagePrefetcher.h │ │ │ ├── SDWebImagePrefetcher.m │ │ │ ├── UIButton+WebCache.h │ │ │ ├── UIButton+WebCache.m │ │ │ ├── UIImage+GIF.h │ │ │ ├── UIImage+GIF.m │ │ │ ├── UIImage+MultiFormat.h │ │ │ ├── UIImage+MultiFormat.m │ │ │ ├── UIImageView+HighlightedWebCache.h │ │ │ ├── UIImageView+HighlightedWebCache.m │ │ │ ├── UIImageView+WebCache.h │ │ │ ├── UIImageView+WebCache.m │ │ │ ├── UIView+WebCacheOperation.h │ │ │ └── UIView+WebCacheOperation.m │ ├── Specta │ │ ├── LICENSE │ │ ├── README.md │ │ └── Specta │ │ │ └── Specta │ │ │ ├── SPTCallSite.h │ │ │ ├── SPTCallSite.m │ │ │ ├── SPTCompiledExample.h │ │ │ ├── SPTCompiledExample.m │ │ │ ├── SPTExample.h │ │ │ ├── SPTExample.m │ │ │ ├── SPTExampleGroup.h │ │ │ ├── SPTExampleGroup.m │ │ │ ├── SPTExcludeGlobalBeforeAfterEach.h │ │ │ ├── SPTGlobalBeforeAfterEach.h │ │ │ ├── SPTSharedExampleGroups.h │ │ │ ├── SPTSharedExampleGroups.m │ │ │ ├── SPTSpec.h │ │ │ ├── SPTSpec.m │ │ │ ├── SPTTestSuite.h │ │ │ ├── SPTTestSuite.m │ │ │ ├── Specta.h │ │ │ ├── SpectaDSL.h │ │ │ ├── SpectaDSL.m │ │ │ ├── SpectaTypes.h │ │ │ ├── SpectaUtility.h │ │ │ ├── SpectaUtility.m │ │ │ ├── XCTest+Private.h │ │ │ ├── XCTestCase+Specta.h │ │ │ └── XCTestCase+Specta.m │ └── Target Support Files │ │ ├── DACircularProgress │ │ ├── DACircularProgress-dummy.m │ │ ├── DACircularProgress-prefix.pch │ │ └── DACircularProgress.xcconfig │ │ ├── Expecta+Snapshots │ │ ├── Expecta+Snapshots-dummy.m │ │ ├── Expecta+Snapshots-prefix.pch │ │ └── Expecta+Snapshots.xcconfig │ │ ├── Expecta │ │ ├── Expecta-dummy.m │ │ ├── Expecta-prefix.pch │ │ └── Expecta.xcconfig │ │ ├── FBSnapshotTestCase │ │ ├── FBSnapshotTestCase-dummy.m │ │ ├── FBSnapshotTestCase-prefix.pch │ │ └── FBSnapshotTestCase.xcconfig │ │ ├── MBProgressHUD │ │ ├── MBProgressHUD-dummy.m │ │ ├── MBProgressHUD-prefix.pch │ │ └── MBProgressHUD.xcconfig │ │ ├── MWPhotoBrowser │ │ ├── MWPhotoBrowser-dummy.m │ │ ├── MWPhotoBrowser-prefix.pch │ │ └── MWPhotoBrowser.xcconfig │ │ ├── Pods-MWPhotoBrowser_Example │ │ ├── Pods-MWPhotoBrowser_Example-acknowledgements.markdown │ │ ├── Pods-MWPhotoBrowser_Example-acknowledgements.plist │ │ ├── Pods-MWPhotoBrowser_Example-dummy.m │ │ ├── Pods-MWPhotoBrowser_Example-frameworks.sh │ │ ├── Pods-MWPhotoBrowser_Example-resources.sh │ │ ├── Pods-MWPhotoBrowser_Example.debug.xcconfig │ │ └── Pods-MWPhotoBrowser_Example.release.xcconfig │ │ ├── Pods-MWPhotoBrowser_Tests │ │ ├── Pods-MWPhotoBrowser_Tests-acknowledgements.markdown │ │ ├── Pods-MWPhotoBrowser_Tests-acknowledgements.plist │ │ ├── Pods-MWPhotoBrowser_Tests-dummy.m │ │ ├── Pods-MWPhotoBrowser_Tests-frameworks.sh │ │ ├── Pods-MWPhotoBrowser_Tests-resources.sh │ │ ├── Pods-MWPhotoBrowser_Tests.debug.xcconfig │ │ └── Pods-MWPhotoBrowser_Tests.release.xcconfig │ │ ├── SDWebImage │ │ ├── SDWebImage-dummy.m │ │ ├── SDWebImage-prefix.pch │ │ └── SDWebImage.xcconfig │ │ └── Specta │ │ ├── Specta-dummy.m │ │ ├── Specta-prefix.pch │ │ └── Specta.xcconfig └── Tests │ ├── Tests-Info.plist │ ├── Tests-Prefix.pch │ ├── Tests.m │ └── en.lproj │ └── InfoPlist.strings ├── LICENSE ├── MWPhotoBrowser.podspec ├── Pod ├── Assets │ ├── .gitkeep │ ├── ImageError.png │ ├── ImageError@2x.png │ ├── ImageError@3x.png │ ├── ImageSelectedOff.png │ ├── ImageSelectedOff@2x.png │ ├── ImageSelectedOff@3x.png │ ├── ImageSelectedOn.png │ ├── ImageSelectedOn@2x.png │ ├── ImageSelectedOn@3x.png │ ├── ImageSelectedSmallOff.png │ ├── ImageSelectedSmallOff@2x.png │ ├── ImageSelectedSmallOff@3x.png │ ├── ImageSelectedSmallOn.png │ ├── ImageSelectedSmallOn@2x.png │ ├── ImageSelectedSmallOn@3x.png │ ├── PlayButtonOverlayLarge.png │ ├── PlayButtonOverlayLarge@2x.png │ ├── PlayButtonOverlayLarge@3x.png │ ├── PlayButtonOverlayLargeTap.png │ ├── PlayButtonOverlayLargeTap@2x.png │ ├── PlayButtonOverlayLargeTap@3x.png │ ├── UIBarButtonItemArrowLeft.png │ ├── UIBarButtonItemArrowLeft@2x.png │ ├── UIBarButtonItemArrowLeft@3x.png │ ├── UIBarButtonItemArrowRight.png │ ├── UIBarButtonItemArrowRight@2x.png │ ├── UIBarButtonItemArrowRight@3x.png │ ├── UIBarButtonItemGrid.png │ ├── UIBarButtonItemGrid@2x.png │ ├── UIBarButtonItemGrid@3x.png │ ├── VideoOverlay.png │ ├── VideoOverlay@2x.png │ └── VideoOverlay@3x.png └── Classes │ ├── .gitkeep │ ├── MWCaptionView.h │ ├── MWCaptionView.m │ ├── MWCommon.h │ ├── MWGridCell.h │ ├── MWGridCell.m │ ├── MWGridViewController.h │ ├── MWGridViewController.m │ ├── MWPhoto.h │ ├── MWPhoto.m │ ├── MWPhotoBrowser.h │ ├── MWPhotoBrowser.m │ ├── MWPhotoBrowserPrivate.h │ ├── MWPhotoProtocol.h │ ├── MWTapDetectingImageView.h │ ├── MWTapDetectingImageView.m │ ├── MWTapDetectingView.h │ ├── MWTapDetectingView.m │ ├── MWZoomingScrollView.h │ ├── MWZoomingScrollView.m │ ├── UIImage+MWPhotoBrowser.h │ └── UIImage+MWPhotoBrowser.m ├── README.md ├── Screenshots ├── MWPhotoBrowser1.png ├── MWPhotoBrowser1t.png ├── MWPhotoBrowser2.png ├── MWPhotoBrowser2t.png ├── MWPhotoBrowser3.png ├── MWPhotoBrowser3t.png ├── MWPhotoBrowser4.png ├── MWPhotoBrowser4t.png ├── MWPhotoBrowser5.png ├── MWPhotoBrowser5t.png ├── MWPhotoBrowser6.png └── MWPhotoBrowser6t.png └── _Pods.xcodeproj /.gitignore: -------------------------------------------------------------------------------- 1 | # OS X 2 | .DS_Store 3 | 4 | # Xcode 5 | build/ 6 | *.pbxuser 7 | !default.pbxuser 8 | *.mode1v3 9 | !default.mode1v3 10 | *.mode2v3 11 | !default.mode2v3 12 | *.perspectivev3 13 | !default.perspectivev3 14 | xcuserdata 15 | *.xccheckout 16 | profile 17 | *.moved-aside 18 | DerivedData 19 | *.hmap 20 | *.ipa 21 | 22 | # Bundler 23 | .bundle 24 | 25 | Carthage 26 | # We recommend against adding the Pods directory to your .gitignore. However 27 | # you should judge for yourself, the pros and cons are mentioned at: 28 | # http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control 29 | # 30 | # Note: if you ignore the Pods directory, make sure to uncomment 31 | # `pod install` in .travis.yml 32 | # 33 | # Pods/ 34 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | # references: 2 | # * http://www.objc.io/issue-6/travis-ci.html 3 | # * https://github.com/supermarin/xcpretty#usage 4 | 5 | language: objective-c 6 | # cache: cocoapods 7 | # podfile: Example/Podfile 8 | # before_install: 9 | # - gem install cocoapods # Since Travis is not always on latest version 10 | # - pod install --project-directory=Example 11 | install: 12 | - gem install xcpretty --no-rdoc --no-ri --no-document --quiet 13 | script: 14 | - set -o pipefail && xcodebuild test -workspace Example/MWPhotoBrowser.xcworkspace -scheme MWPhotoBrowser-Example -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO | xcpretty -c 15 | - pod lib lint --quick 16 | -------------------------------------------------------------------------------- /Assets/ImageError.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Assets/ImageError.psd -------------------------------------------------------------------------------- /Assets/ImageError@2x.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Assets/ImageError@2x.psd -------------------------------------------------------------------------------- /Assets/ImageError@3x.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Assets/ImageError@3x.psd -------------------------------------------------------------------------------- /Assets/ImageSelected.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Assets/ImageSelected.psd -------------------------------------------------------------------------------- /Assets/ImageSelected@2x.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Assets/ImageSelected@2x.psd -------------------------------------------------------------------------------- /Assets/ImageSelected@3x.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Assets/ImageSelected@3x.psd -------------------------------------------------------------------------------- /Assets/ImageSelectedSmallOff.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Assets/ImageSelectedSmallOff.psd -------------------------------------------------------------------------------- /Assets/ImageSelectedSmallOff@2x.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Assets/ImageSelectedSmallOff@2x.psd -------------------------------------------------------------------------------- /Assets/ImageSelectedSmallOff@3x.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Assets/ImageSelectedSmallOff@3x.psd -------------------------------------------------------------------------------- /Assets/ImageSelectedSmallOn.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Assets/ImageSelectedSmallOn.psd -------------------------------------------------------------------------------- /Assets/ImageSelectedSmallOn@2x.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Assets/ImageSelectedSmallOn@2x.psd -------------------------------------------------------------------------------- /Assets/ImageSelectedSmallOn@3x.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Assets/ImageSelectedSmallOn@3x.psd -------------------------------------------------------------------------------- /Assets/PlayButtonOverlayLarge.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Assets/PlayButtonOverlayLarge.psd -------------------------------------------------------------------------------- /Assets/PlayButtonOverlayLarge@2x.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Assets/PlayButtonOverlayLarge@2x.psd -------------------------------------------------------------------------------- /Assets/PlayButtonOverlayLarge@3x.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Assets/PlayButtonOverlayLarge@3x.psd -------------------------------------------------------------------------------- /Assets/PlayButtonOverlayLargeTap.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Assets/PlayButtonOverlayLargeTap.psd -------------------------------------------------------------------------------- /Assets/PlayButtonOverlayLargeTap@2x.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Assets/PlayButtonOverlayLargeTap@2x.psd -------------------------------------------------------------------------------- /Assets/PlayButtonOverlayLargeTap@3x.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Assets/PlayButtonOverlayLargeTap@3x.psd -------------------------------------------------------------------------------- /Assets/UIBarButtonItemArrow.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Assets/UIBarButtonItemArrow.psd -------------------------------------------------------------------------------- /Assets/UIBarButtonItemArrow@2x.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Assets/UIBarButtonItemArrow@2x.psd -------------------------------------------------------------------------------- /Assets/UIBarButtonItemArrow@3x.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Assets/UIBarButtonItemArrow@3x.psd -------------------------------------------------------------------------------- /Assets/UIBarButtonItemGrid.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Assets/UIBarButtonItemGrid.psd -------------------------------------------------------------------------------- /Assets/UIBarButtonItemGrid@2x.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Assets/UIBarButtonItemGrid@2x.psd -------------------------------------------------------------------------------- /Assets/UIBarButtonItemGrid@3x.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Assets/UIBarButtonItemGrid@3x.psd -------------------------------------------------------------------------------- /Assets/VideoOverlay.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Assets/VideoOverlay.psd -------------------------------------------------------------------------------- /Assets/VideoOverlay@2x.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Assets/VideoOverlay@2x.psd -------------------------------------------------------------------------------- /Assets/VideoOverlay@3x.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Assets/VideoOverlay@3x.psd -------------------------------------------------------------------------------- /Example/MWPhotoBrowser.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Example/MWPhotoBrowser.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Example/MWPhotoBrowser/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // PhotoBrowserDemo 4 | // 5 | // Created by Michael Waterfall on 31/12/2011. 6 | // Copyright (c) 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | //@property (strong, nonatomic) UIViewController *viewController; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Example/MWPhotoBrowser/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "29x29", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "29x29", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "40x40", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "40x40", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "60x60", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "60x60", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "ipad", 35 | "size" : "29x29", 36 | "scale" : "1x" 37 | }, 38 | { 39 | "idiom" : "ipad", 40 | "size" : "29x29", 41 | "scale" : "2x" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "size" : "40x40", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "size" : "40x40", 51 | "scale" : "2x" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "size" : "76x76", 56 | "scale" : "1x" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "size" : "76x76", 61 | "scale" : "2x" 62 | }, 63 | { 64 | "idiom" : "ipad", 65 | "size" : "83.5x83.5", 66 | "scale" : "2x" 67 | } 68 | ], 69 | "info" : { 70 | "version" : 1, 71 | "author" : "xcode" 72 | } 73 | } -------------------------------------------------------------------------------- /Example/MWPhotoBrowser/Images.xcassets/ImageSelected.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "ImageSelectedOn.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "ImageSelectedOn@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x", 16 | "filename" : "ImageSelectedOn@3x.png" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /Example/MWPhotoBrowser/Images.xcassets/ImageSelected.imageset/ImageSelectedOn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Example/MWPhotoBrowser/Images.xcassets/ImageSelected.imageset/ImageSelectedOn.png -------------------------------------------------------------------------------- /Example/MWPhotoBrowser/Images.xcassets/ImageSelected.imageset/ImageSelectedOn@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Example/MWPhotoBrowser/Images.xcassets/ImageSelected.imageset/ImageSelectedOn@2x.png -------------------------------------------------------------------------------- /Example/MWPhotoBrowser/Images.xcassets/ImageSelected.imageset/ImageSelectedOn@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Example/MWPhotoBrowser/Images.xcassets/ImageSelected.imageset/ImageSelectedOn@3x.png -------------------------------------------------------------------------------- /Example/MWPhotoBrowser/Images.xcassets/ImageSelectedSmall.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "ImageSelectedSmallOn.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "ImageSelectedSmallOn@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x", 16 | "filename" : "ImageSelectedSmallOn@3x.png" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /Example/MWPhotoBrowser/Images.xcassets/ImageSelectedSmall.imageset/ImageSelectedSmallOn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Example/MWPhotoBrowser/Images.xcassets/ImageSelectedSmall.imageset/ImageSelectedSmallOn.png -------------------------------------------------------------------------------- /Example/MWPhotoBrowser/Images.xcassets/ImageSelectedSmall.imageset/ImageSelectedSmallOn@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Example/MWPhotoBrowser/Images.xcassets/ImageSelectedSmall.imageset/ImageSelectedSmallOn@2x.png -------------------------------------------------------------------------------- /Example/MWPhotoBrowser/Images.xcassets/ImageSelectedSmall.imageset/ImageSelectedSmallOn@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Example/MWPhotoBrowser/Images.xcassets/ImageSelectedSmall.imageset/ImageSelectedSmallOn@3x.png -------------------------------------------------------------------------------- /Example/MWPhotoBrowser/Images.xcassets/LaunchImage.launchimage/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "orientation" : "portrait", 5 | "idiom" : "iphone", 6 | "extent" : "full-screen", 7 | "minimum-system-version" : "7.0", 8 | "scale" : "2x" 9 | }, 10 | { 11 | "orientation" : "portrait", 12 | "idiom" : "iphone", 13 | "subtype" : "retina4", 14 | "extent" : "full-screen", 15 | "minimum-system-version" : "7.0", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "orientation" : "portrait", 20 | "idiom" : "ipad", 21 | "extent" : "full-screen", 22 | "minimum-system-version" : "7.0", 23 | "scale" : "1x" 24 | }, 25 | { 26 | "orientation" : "landscape", 27 | "idiom" : "ipad", 28 | "extent" : "full-screen", 29 | "minimum-system-version" : "7.0", 30 | "scale" : "1x" 31 | }, 32 | { 33 | "orientation" : "portrait", 34 | "idiom" : "ipad", 35 | "extent" : "full-screen", 36 | "minimum-system-version" : "7.0", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "orientation" : "landscape", 41 | "idiom" : "ipad", 42 | "extent" : "full-screen", 43 | "minimum-system-version" : "7.0", 44 | "scale" : "2x" 45 | } 46 | ], 47 | "info" : { 48 | "version" : 1, 49 | "author" : "xcode" 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /Example/MWPhotoBrowser/Local Media/photo1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Example/MWPhotoBrowser/Local Media/photo1.jpg -------------------------------------------------------------------------------- /Example/MWPhotoBrowser/Local Media/photo1t.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Example/MWPhotoBrowser/Local Media/photo1t.jpg -------------------------------------------------------------------------------- /Example/MWPhotoBrowser/Local Media/photo2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Example/MWPhotoBrowser/Local Media/photo2.jpg -------------------------------------------------------------------------------- /Example/MWPhotoBrowser/Local Media/photo2t.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Example/MWPhotoBrowser/Local Media/photo2t.jpg -------------------------------------------------------------------------------- /Example/MWPhotoBrowser/Local Media/photo3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Example/MWPhotoBrowser/Local Media/photo3.jpg -------------------------------------------------------------------------------- /Example/MWPhotoBrowser/Local Media/photo3t.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Example/MWPhotoBrowser/Local Media/photo3t.jpg -------------------------------------------------------------------------------- /Example/MWPhotoBrowser/Local Media/photo4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Example/MWPhotoBrowser/Local Media/photo4.jpg -------------------------------------------------------------------------------- /Example/MWPhotoBrowser/Local Media/photo4t.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Example/MWPhotoBrowser/Local Media/photo4t.jpg -------------------------------------------------------------------------------- /Example/MWPhotoBrowser/Local Media/photo5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Example/MWPhotoBrowser/Local Media/photo5.jpg -------------------------------------------------------------------------------- /Example/MWPhotoBrowser/Local Media/photo5t.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Example/MWPhotoBrowser/Local Media/photo5t.jpg -------------------------------------------------------------------------------- /Example/MWPhotoBrowser/Local Media/photo6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Example/MWPhotoBrowser/Local Media/photo6.jpg -------------------------------------------------------------------------------- /Example/MWPhotoBrowser/Local Media/photo6t.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Example/MWPhotoBrowser/Local Media/photo6t.jpg -------------------------------------------------------------------------------- /Example/MWPhotoBrowser/Local Media/photo7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Example/MWPhotoBrowser/Local Media/photo7.jpg -------------------------------------------------------------------------------- /Example/MWPhotoBrowser/Local Media/photo7t.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Example/MWPhotoBrowser/Local Media/photo7t.jpg -------------------------------------------------------------------------------- /Example/MWPhotoBrowser/Local Media/photo8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Example/MWPhotoBrowser/Local Media/photo8.jpg -------------------------------------------------------------------------------- /Example/MWPhotoBrowser/Local Media/photo8t.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Example/MWPhotoBrowser/Local Media/photo8t.jpg -------------------------------------------------------------------------------- /Example/MWPhotoBrowser/Local Media/video.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Example/MWPhotoBrowser/Local Media/video.mp4 -------------------------------------------------------------------------------- /Example/MWPhotoBrowser/Local Media/video_thumb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Example/MWPhotoBrowser/Local Media/video_thumb.jpg -------------------------------------------------------------------------------- /Example/MWPhotoBrowser/MWPhotoBrowser-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | ${PRODUCT_NAME} 9 | CFBundleExecutable 10 | ${EXECUTABLE_NAME} 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${PRODUCT_NAME} 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1.0 25 | LSRequiresIPhoneOS 26 | 27 | UILaunchStoryboardName 28 | Main 29 | UIMainStoryboardFile 30 | Main 31 | UIRequiredDeviceCapabilities 32 | 33 | armv7 34 | 35 | UIStatusBarHidden 36 | 37 | UISupportedInterfaceOrientations 38 | 39 | UIInterfaceOrientationPortrait 40 | UIInterfaceOrientationLandscapeLeft 41 | UIInterfaceOrientationLandscapeRight 42 | 43 | UISupportedInterfaceOrientations~ipad 44 | 45 | UIInterfaceOrientationPortrait 46 | UIInterfaceOrientationPortraitUpsideDown 47 | UIInterfaceOrientationLandscapeLeft 48 | UIInterfaceOrientationLandscapeRight 49 | 50 | UIViewControllerBasedStatusBarAppearance 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /Example/MWPhotoBrowser/MWPhotoBrowser-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header 3 | // 4 | // The contents of this file are implicitly included at the beginning of every source file. 5 | // 6 | 7 | #import 8 | 9 | #ifndef __IPHONE_5_0 10 | #warning "This project uses features only available in iOS SDK 5.0 and later." 11 | #endif 12 | 13 | #ifdef __OBJC__ 14 | @import UIKit; 15 | @import Foundation; 16 | #endif 17 | -------------------------------------------------------------------------------- /Example/MWPhotoBrowser/Menu.h: -------------------------------------------------------------------------------- 1 | // 2 | // Menu.h 3 | // MWPhotoBrowser 4 | // 5 | // Created by Michael Waterfall on 21/10/2010. 6 | // Copyright 2010 d3i. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "MWPhotoBrowser.h" 11 | #import 12 | 13 | @interface Menu : UITableViewController { 14 | UISegmentedControl *_segmentedControl; 15 | NSMutableArray *_selections; 16 | } 17 | 18 | @property (nonatomic, strong) NSMutableArray *photos; 19 | @property (nonatomic, strong) NSMutableArray *thumbs; 20 | @property (nonatomic, strong) NSMutableArray *assets; 21 | 22 | @property (nonatomic, strong) ALAssetsLibrary *ALAssetsLibrary; 23 | 24 | - (void)loadAssets; 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /Example/MWPhotoBrowser/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Example/MWPhotoBrowser/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // MWPhotoBrowser 4 | // 5 | // Created by Michael Waterfall on 07/04/2015. 6 | // Copyright (c) 2015 Michael Waterfall. All rights reserved. 7 | // 8 | 9 | @import UIKit; 10 | #import "AppDelegate.h" 11 | 12 | int main(int argc, char * argv[]) 13 | { 14 | @autoreleasepool { 15 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Example/Podfile: -------------------------------------------------------------------------------- 1 | source 'https://github.com/CocoaPods/Specs.git' 2 | 3 | target 'MWPhotoBrowser_Example', :exclusive => true do 4 | pod "MWPhotoBrowser", :path => "../" 5 | end 6 | 7 | target 'MWPhotoBrowser_Tests', :exclusive => true do 8 | pod "MWPhotoBrowser", :path => "../" 9 | 10 | pod 'Specta' 11 | pod 'Expecta' 12 | pod 'FBSnapshotTestCase' 13 | pod 'Expecta+Snapshots' 14 | end 15 | -------------------------------------------------------------------------------- /Example/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - DACircularProgress (2.3.1) 3 | - Expecta (1.0.0) 4 | - Expecta+Snapshots (1.3.4): 5 | - Expecta (~> 1.0) 6 | - FBSnapshotTestCase (~> 1.8) 7 | - FBSnapshotTestCase (1.8.1) 8 | - MBProgressHUD (0.9.2) 9 | - MWPhotoBrowser (2.1.2): 10 | - DACircularProgress (~> 2.3) 11 | - MBProgressHUD (~> 0.9) 12 | - SDWebImage (!= 3.7.2, ~> 3.7) 13 | - SDWebImage (3.7.5): 14 | - SDWebImage/Core (= 3.7.5) 15 | - SDWebImage/Core (3.7.5) 16 | - Specta (1.0.2) 17 | 18 | DEPENDENCIES: 19 | - Expecta 20 | - Expecta+Snapshots 21 | - FBSnapshotTestCase 22 | - MWPhotoBrowser (from `../`) 23 | - Specta 24 | 25 | EXTERNAL SOURCES: 26 | MWPhotoBrowser: 27 | :path: ../ 28 | 29 | SPEC CHECKSUMS: 30 | DACircularProgress: 4dd437c0fc3da5161cb289e07ac449493d41db71 31 | Expecta: 32604574add2c46a36f8d2f716b6c5736eb75024 32 | Expecta+Snapshots: ca15bfb57e7a0f78f86c7699c2c54ffacfa4ad2a 33 | FBSnapshotTestCase: 3dc3899168747a0319c5278f5b3445c13a6532dd 34 | MBProgressHUD: 1569cf7ace17a8bac47aabfbb8580a49690386d1 35 | MWPhotoBrowser: 5836d7aa041dc05a13de380c246826578adc5ea5 36 | SDWebImage: 69c6303e3348fba97e03f65d65d4fbc26740f461 37 | Specta: 9cec98310dca411f7c7ffd6943552b501622abfe 38 | 39 | COCOAPODS: 0.39.0 40 | -------------------------------------------------------------------------------- /Example/Pods/DACircularProgress/DACircularProgress/DACircularProgressView.h: -------------------------------------------------------------------------------- 1 | // 2 | // DACircularProgressView.h 3 | // DACircularProgress 4 | // 5 | // Created by Daniel Amitay on 2/6/12. 6 | // Copyright (c) 2012 Daniel Amitay. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface DACircularProgressView : UIView 12 | 13 | @property(nonatomic, strong) UIColor *trackTintColor UI_APPEARANCE_SELECTOR; 14 | @property(nonatomic, strong) UIColor *progressTintColor UI_APPEARANCE_SELECTOR; 15 | @property(nonatomic, strong) UIColor *innerTintColor UI_APPEARANCE_SELECTOR; 16 | @property(nonatomic) NSInteger roundedCorners UI_APPEARANCE_SELECTOR; // Can not use BOOL with UI_APPEARANCE_SELECTOR :-( 17 | @property(nonatomic) CGFloat thicknessRatio UI_APPEARANCE_SELECTOR; 18 | @property(nonatomic) NSInteger clockwiseProgress UI_APPEARANCE_SELECTOR; // Can not use BOOL with UI_APPEARANCE_SELECTOR :-( 19 | @property(nonatomic) CGFloat progress; 20 | 21 | @property(nonatomic) CGFloat indeterminateDuration UI_APPEARANCE_SELECTOR; 22 | @property(nonatomic) NSInteger indeterminate UI_APPEARANCE_SELECTOR; // Can not use BOOL with UI_APPEARANCE_SELECTOR :-( 23 | 24 | - (void)setProgress:(CGFloat)progress animated:(BOOL)animated; 25 | - (void)setProgress:(CGFloat)progress animated:(BOOL)animated initialDelay:(CFTimeInterval)initialDelay; 26 | - (void)setProgress:(CGFloat)progress animated:(BOOL)animated initialDelay:(CFTimeInterval)initialDelay withDuration:(CFTimeInterval)duration; 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /Example/Pods/DACircularProgress/DACircularProgress/DALabeledCircularProgressView.h: -------------------------------------------------------------------------------- 1 | // 2 | // DALabeledCircularProgressView.h 3 | // DACircularProgressExample 4 | // 5 | // Created by Josh Sklar on 4/8/14. 6 | // Copyright (c) 2014 Shout Messenger. All rights reserved. 7 | // 8 | 9 | #import "DACircularProgressView.h" 10 | 11 | /** 12 | @class DALabeledCircularProgressView 13 | 14 | @brief Subclass of DACircularProgressView that adds a UILabel. 15 | */ 16 | @interface DALabeledCircularProgressView : DACircularProgressView 17 | 18 | /** 19 | UILabel placed right on the DACircularProgressView. 20 | */ 21 | @property (strong, nonatomic) UILabel *progressLabel; 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /Example/Pods/DACircularProgress/DACircularProgress/DALabeledCircularProgressView.m: -------------------------------------------------------------------------------- 1 | // 2 | // DALabeledCircularProgressView.m 3 | // DACircularProgressExample 4 | // 5 | // Created by Josh Sklar on 4/8/14. 6 | // Copyright (c) 2014 Shout Messenger. All rights reserved. 7 | // 8 | 9 | #import "DALabeledCircularProgressView.h" 10 | 11 | @implementation DALabeledCircularProgressView 12 | 13 | - (id)initWithFrame:(CGRect)frame 14 | { 15 | self = [super initWithFrame:frame]; 16 | if (self) { 17 | [self initializeLabel]; 18 | } 19 | return self; 20 | } 21 | 22 | - (id)initWithCoder:(NSCoder *)aDecoder 23 | { 24 | self = [super initWithCoder:aDecoder]; 25 | if (self) { 26 | [self initializeLabel]; 27 | } 28 | return self; 29 | } 30 | 31 | 32 | #pragma mark - Internal methods 33 | 34 | /** 35 | Creates and initializes 36 | -[DALabeledCircularProgressView progressLabel]. 37 | */ 38 | - (void)initializeLabel 39 | { 40 | self.progressLabel = [[UILabel alloc] initWithFrame:self.bounds]; 41 | self.progressLabel.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth; 42 | self.progressLabel.textAlignment = NSTextAlignmentCenter; 43 | self.progressLabel.backgroundColor = [UIColor clearColor]; 44 | [self addSubview:self.progressLabel]; 45 | } 46 | 47 | @end 48 | -------------------------------------------------------------------------------- /Example/Pods/DACircularProgress/LICENSE.md: -------------------------------------------------------------------------------- 1 | # License 2 | 3 | ## MIT License 4 | 5 | Copyright (c) 2013 Daniel Amitay (http://danielamitay.com) 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in 15 | all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | THE SOFTWARE. -------------------------------------------------------------------------------- /Example/Pods/Expecta+Snapshots/EXPMatchers+FBSnapshotTest.h: -------------------------------------------------------------------------------- 1 | // 2 | // EXPMatchers+FBSnapshotTest.h 3 | // Artsy 4 | // 5 | // Created by Daniel Doubrovkine on 1/14/14. 6 | // Copyright (c) 2014 Artsy Inc. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface EXPExpectFBSnapshotTest : NSObject 12 | @end 13 | 14 | /// Set the default folder for image tests to run in 15 | extern void setGlobalReferenceImageDir(char *reference); 16 | 17 | EXPMatcherInterface(haveValidSnapshot, (void)); 18 | EXPMatcherInterface(recordSnapshot, (void)); 19 | 20 | EXPMatcherInterface(haveValidSnapshotNamed, (NSString *snapshot)); 21 | EXPMatcherInterface(recordSnapshotNamed, (NSString *snapshot)); 22 | -------------------------------------------------------------------------------- /Example/Pods/Expecta+Snapshots/LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2014 Daniel Doubrovkine, Artsy Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining 6 | a copy of this software and associated documentation files (the 7 | "Software"), to deal in the Software without restriction, including 8 | without limitation the rights to use, copy, modify, merge, publish, 9 | distribute, sublicense, and/or sell copies of the Software, and to 10 | permit persons to whom the Software is furnished to do so, subject to 11 | the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be 14 | included in all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 20 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 21 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 22 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/EXPBlockDefinedMatcher.h: -------------------------------------------------------------------------------- 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 10 | #import "EXPMatcher.h" 11 | #import "EXPDefines.h" 12 | 13 | @interface EXPBlockDefinedMatcher : NSObject { 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 26 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/EXPBlockDefinedMatcher.m: -------------------------------------------------------------------------------- 1 | // 2 | // EXPRuntimeMatcher.m 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 "EXPBlockDefinedMatcher.h" 10 | 11 | @implementation EXPBlockDefinedMatcher 12 | 13 | - (void)dealloc 14 | { 15 | self.prerequisiteBlock = nil; 16 | self.matchBlock = nil; 17 | self.failureMessageForToBlock = nil; 18 | self.failureMessageForNotToBlock = nil; 19 | 20 | [super dealloc]; 21 | } 22 | 23 | @synthesize prerequisiteBlock; 24 | @synthesize matchBlock; 25 | @synthesize failureMessageForToBlock; 26 | @synthesize failureMessageForNotToBlock; 27 | 28 | - (BOOL)meetsPrerequesiteFor:(id)actual 29 | { 30 | if (self.prerequisiteBlock) { 31 | return self.prerequisiteBlock(); 32 | } 33 | return YES; 34 | } 35 | 36 | - (BOOL)matches:(id)actual 37 | { 38 | if (self.matchBlock) { 39 | return self.matchBlock(); 40 | } 41 | return YES; 42 | } 43 | 44 | - (NSString *)failureMessageForTo:(id)actual 45 | { 46 | if (self.failureMessageForToBlock) { 47 | return self.failureMessageForToBlock(); 48 | } 49 | return nil; 50 | } 51 | 52 | - (NSString *)failureMessageForNotTo:(id)actual 53 | { 54 | if (self.failureMessageForNotToBlock) { 55 | return self.failureMessageForNotToBlock(); 56 | } 57 | return nil; 58 | } 59 | 60 | @end 61 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/EXPDefines.h: -------------------------------------------------------------------------------- 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 18 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/EXPDoubleTuple.h: -------------------------------------------------------------------------------- 1 | #import 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 | - (instancetype)initWithDoubleValues:(double *)values size:(size_t)size NS_DESIGNATED_INITIALIZER; 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/EXPDoubleTuple.m: -------------------------------------------------------------------------------- 1 | #import "EXPDoubleTuple.h" 2 | 3 | @implementation EXPDoubleTuple 4 | 5 | @synthesize values = _values, size = _size; 6 | 7 | - (instancetype)initWithDoubleValues:(double *)values size:(size_t)size { 8 | if ((self = [super init])) { 9 | self.values = malloc(sizeof(double) * size); 10 | memcpy(self.values, values, sizeof(double) * size); 11 | self.size = size; 12 | } 13 | return self; 14 | } 15 | 16 | - (void)dealloc { 17 | free(self.values); 18 | [super dealloc]; 19 | } 20 | 21 | - (BOOL)isEqual:(id)object { 22 | if (![object isKindOfClass:[EXPDoubleTuple class]]) return NO; 23 | EXPDoubleTuple *other = (EXPDoubleTuple *)object; 24 | if (self.size == other.size) { 25 | for (int i = 0; i < self.size; ++i) { 26 | if (self.values[i] != other.values[i]) return NO; 27 | } 28 | return YES; 29 | } 30 | return NO; 31 | } 32 | 33 | - (NSString *)description { 34 | if (self.size == 2) { 35 | return [NSString stringWithFormat:@"Double tuple: {%f, %f}", self.values[0], self.values[1]]; 36 | } else if (self.size == 4) { 37 | return [NSString stringWithFormat:@"Double tuple: {%f, %f, %f, %f}", self.values[0], self.values[1], self.values[2], self.values[3]]; 38 | } 39 | return [NSString stringWithFormat:@"Double tuple of unexpected size %zd, sadly", self.size]; 40 | } 41 | 42 | @end 43 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/EXPExpect.h: -------------------------------------------------------------------------------- 1 | #import 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 | - (instancetype)initWithActualBlock:(id)actualBlock testCase:(id)testCase lineNumber:(int)lineNumber fileName:(const char *)fileName NS_DESIGNATED_INITIALIZER; 32 | + (EXPExpect *)expectWithActualBlock:(id)actualBlock testCase:(id)testCase lineNumber:(int)lineNumber fileName:(const char *)fileName; 33 | 34 | - (void)applyMatcher:(id)matcher; 35 | - (void)applyMatcher:(id)matcher to:(NSObject **)actual; 36 | 37 | @end 38 | 39 | @interface EXPDynamicPredicateMatcher : NSObject { 40 | EXPExpect *_expectation; 41 | SEL _selector; 42 | } 43 | - (instancetype)initWithExpectation:(EXPExpect *)expectation selector:(SEL)selector NS_DESIGNATED_INITIALIZER; 44 | @property (nonatomic, readonly, copy) void (^dispatch)(void); 45 | @end 46 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/EXPFloatTuple.h: -------------------------------------------------------------------------------- 1 | #import 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 | - (instancetype)initWithFloatValues:(float *)values size:(size_t)size NS_DESIGNATED_INITIALIZER; 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/EXPFloatTuple.m: -------------------------------------------------------------------------------- 1 | #import "EXPFloatTuple.h" 2 | 3 | @implementation EXPFloatTuple 4 | 5 | @synthesize values = _values, size = _size; 6 | 7 | - (instancetype)initWithFloatValues:(float *)values size:(size_t)size { 8 | if ((self = [super init])) { 9 | self.values = malloc(sizeof(float) * size); 10 | memcpy(self.values, values, sizeof(float) * size); 11 | self.size = size; 12 | } 13 | return self; 14 | } 15 | 16 | - (void)dealloc { 17 | free(self.values); 18 | [super dealloc]; 19 | } 20 | 21 | - (BOOL)isEqual:(id)object { 22 | if (![object isKindOfClass:[EXPFloatTuple class]]) return NO; 23 | EXPFloatTuple *other = (EXPFloatTuple *)object; 24 | if (self.size == other.size) { 25 | for (int i = 0; i < self.size; ++i) { 26 | if (self.values[i] != other.values[i]) return NO; 27 | } 28 | return YES; 29 | } 30 | return NO; 31 | } 32 | 33 | - (NSUInteger)hash 34 | { 35 | NSUInteger prime = 31; 36 | NSUInteger hash = 0; 37 | for (int i=0; i 10 | 11 | @protocol EXPMatcher 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 21 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/EXPUnsupportedObject.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | @interface EXPUnsupportedObject : NSObject { 4 | NSString *_type; 5 | } 6 | 7 | @property (nonatomic, retain) NSString *type; 8 | 9 | - (instancetype)initWithType:(NSString *)type NS_DESIGNATED_INITIALIZER; 10 | 11 | @end 12 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/EXPUnsupportedObject.m: -------------------------------------------------------------------------------- 1 | #import "EXPUnsupportedObject.h" 2 | 3 | @implementation EXPUnsupportedObject 4 | 5 | @synthesize type=_type; 6 | 7 | - (instancetype)initWithType:(NSString *)type { 8 | self = [super init]; 9 | if(self) { 10 | self.type = type; 11 | } 12 | return self; 13 | } 14 | 15 | - (void)dealloc { 16 | self.type = nil; 17 | [super dealloc]; 18 | } 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/Expecta.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | //! Project version number for Expecta. 4 | FOUNDATION_EXPORT double ExpectaVersionNumber; 5 | 6 | //! Project version string for Expecta. 7 | FOUNDATION_EXPORT const unsigned char ExpectaVersionString[]; 8 | 9 | #import 10 | #import 11 | #import 12 | 13 | // Enable shorthand by default 14 | #define expect(...) EXP_expect((__VA_ARGS__)) 15 | #define failure(...) EXP_failure((__VA_ARGS__)) -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/ExpectaObject.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | #define EXPObjectify(value) _EXPObjectify(@encode(__typeof__((value))), (value)) 4 | #define EXP_expect(actual) _EXP_expect(self, __LINE__, __FILE__, ^id{ return EXPObjectify((actual)); }) 5 | #define EXPMatcherInterface(matcherName, matcherArguments) _EXPMatcherInterface(matcherName, matcherArguments) 6 | #define EXPMatcherImplementationBegin(matcherName, matcherArguments) _EXPMatcherImplementationBegin(matcherName, matcherArguments) 7 | #define EXPMatcherImplementationEnd _EXPMatcherImplementationEnd 8 | #define EXPMatcherAliasImplementation(newMatcherName, oldMatcherName, matcherArguments) _EXPMatcherAliasImplementation(newMatcherName, oldMatcherName, matcherArguments) 9 | 10 | #define EXP_failure(message) EXPFail(self, __LINE__, __FILE__, message) 11 | 12 | 13 | @interface Expecta : NSObject 14 | 15 | + (NSTimeInterval)asynchronousTestTimeout; 16 | + (void)setAsynchronousTestTimeout:(NSTimeInterval)timeout; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/ExpectaObject.m: -------------------------------------------------------------------------------- 1 | #import "ExpectaObject.h" 2 | 3 | @implementation Expecta 4 | 5 | static NSTimeInterval _asynchronousTestTimeout = 1.0; 6 | 7 | + (NSTimeInterval)asynchronousTestTimeout { 8 | return _asynchronousTestTimeout; 9 | } 10 | 11 | + (void)setAsynchronousTestTimeout:(NSTimeInterval)timeout { 12 | _asynchronousTestTimeout = timeout; 13 | } 14 | 15 | @end -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/Matchers/EXPMatcherHelpers.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | BOOL EXPIsValuePointer(NSValue *value); 4 | BOOL EXPIsNumberFloat(NSNumber *number); 5 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/Matchers/EXPMatcherHelpers.m: -------------------------------------------------------------------------------- 1 | #import "EXPMatcherHelpers.h" 2 | 3 | BOOL EXPIsValuePointer(NSValue *value) { 4 | return [value objCType][0] == @encode(void *)[0]; 5 | } 6 | 7 | BOOL EXPIsNumberFloat(NSNumber *number) { 8 | return strcmp([number objCType], @encode(float)) == 0; 9 | } 10 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/Matchers/EXPMatchers+beCloseTo.h: -------------------------------------------------------------------------------- 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))) 8 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/Matchers/EXPMatchers+beCloseTo.m: -------------------------------------------------------------------------------- 1 | #import "EXPMatchers+beCloseTo.h" 2 | #import "EXPMatcherHelpers.h" 3 | 4 | EXPMatcherImplementationBegin(_beCloseToWithin, (id expected, id within)) { 5 | prerequisite(^BOOL{ 6 | return [actual isKindOfClass:[NSNumber class]] && 7 | [expected isKindOfClass:[NSNumber class]] && 8 | ([within isKindOfClass:[NSNumber class]] || (within == nil)); 9 | }); 10 | 11 | match(^BOOL{ 12 | double actualValue = [actual doubleValue]; 13 | double expectedValue = [expected doubleValue]; 14 | 15 | if (within != nil) { 16 | double withinValue = [within doubleValue]; 17 | double lowerBound = expectedValue - withinValue; 18 | double upperBound = expectedValue + withinValue; 19 | return (actualValue >= lowerBound) && (actualValue <= upperBound); 20 | } else { 21 | double diff = fabs(actualValue - expectedValue); 22 | actualValue = fabs(actualValue); 23 | expectedValue = fabs(expectedValue); 24 | double largest = (expectedValue > actualValue) ? expectedValue : actualValue; 25 | return (diff <= largest * FLT_EPSILON); 26 | } 27 | }); 28 | 29 | failureMessageForTo(^NSString *{ 30 | if (within) { 31 | return [NSString stringWithFormat:@"expected %@ to be close to %@ within %@", 32 | EXPDescribeObject(actual), EXPDescribeObject(expected), EXPDescribeObject(within)]; 33 | } else { 34 | return [NSString stringWithFormat:@"expected %@ to be close to %@", 35 | EXPDescribeObject(actual), EXPDescribeObject(expected)]; 36 | } 37 | }); 38 | 39 | failureMessageForNotTo(^NSString *{ 40 | if (within) { 41 | return [NSString stringWithFormat:@"expected %@ not to be close to %@ within %@", 42 | EXPDescribeObject(actual), EXPDescribeObject(expected), EXPDescribeObject(within)]; 43 | } else { 44 | return [NSString stringWithFormat:@"expected %@ not to be close to %@", 45 | EXPDescribeObject(actual), EXPDescribeObject(expected)]; 46 | } 47 | }); 48 | } 49 | EXPMatcherImplementationEnd -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/Matchers/EXPMatchers+beFalsy.h: -------------------------------------------------------------------------------- 1 | #import "Expecta.h" 2 | 3 | EXPMatcherInterface(beFalsy, (void)); 4 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/Matchers/EXPMatchers+beFalsy.m: -------------------------------------------------------------------------------- 1 | #import "EXPMatchers+beFalsy.h" 2 | #import "EXPMatcherHelpers.h" 3 | 4 | EXPMatcherImplementationBegin(beFalsy, (void)) { 5 | match(^BOOL{ 6 | if([actual isKindOfClass:[NSNumber class]]) { 7 | return ![(NSNumber *)actual boolValue]; 8 | } else if([actual isKindOfClass:[NSValue class]]) { 9 | if(EXPIsValuePointer((NSValue *)actual)) { 10 | return ![(NSValue *)actual pointerValue]; 11 | } 12 | } 13 | return !actual; 14 | }); 15 | 16 | failureMessageForTo(^NSString *{ 17 | return [NSString stringWithFormat:@"expected: a falsy value, got: %@, which is truthy", EXPDescribeObject(actual)]; 18 | }); 19 | 20 | failureMessageForNotTo(^NSString *{ 21 | return [NSString stringWithFormat:@"expected: a non-falsy value, got: %@, which is falsy", EXPDescribeObject(actual)]; 22 | }); 23 | } 24 | EXPMatcherImplementationEnd 25 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThan.h: -------------------------------------------------------------------------------- 1 | #import "Expecta.h" 2 | 3 | EXPMatcherInterface(_beGreaterThan, (id expected)); 4 | EXPMatcherInterface(beGreaterThan, (id expected)); 5 | 6 | #define beGreaterThan(expected) _beGreaterThan(EXPObjectify((expected))) 7 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThan.m: -------------------------------------------------------------------------------- 1 | #import "EXPMatchers+beGreaterThan.h" 2 | #import "EXPMatcherHelpers.h" 3 | 4 | EXPMatcherImplementationBegin(_beGreaterThan, (id expected)) { 5 | match(^BOOL{ 6 | if ([actual respondsToSelector:@selector(compare:)]) { 7 | return [actual compare:expected] == NSOrderedDescending; 8 | } 9 | return NO; 10 | }); 11 | 12 | failureMessageForTo(^NSString *{ 13 | return [NSString stringWithFormat:@"expected: %@ to be greater than %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; 14 | }); 15 | 16 | failureMessageForNotTo(^NSString *{ 17 | return [NSString stringWithFormat:@"expected: %@ not to be greater than %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; 18 | }); 19 | } 20 | EXPMatcherImplementationEnd -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.h: -------------------------------------------------------------------------------- 1 | #import "Expecta.h" 2 | 3 | EXPMatcherInterface(_beGreaterThanOrEqualTo, (id expected)); 4 | EXPMatcherInterface(beGreaterThanOrEqualTo, (id expected)); 5 | 6 | #define beGreaterThanOrEqualTo(expected) _beGreaterThanOrEqualTo(EXPObjectify((expected))) 7 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.m: -------------------------------------------------------------------------------- 1 | #import "EXPMatchers+beGreaterThanOrEqualTo.h" 2 | #import "EXPMatcherHelpers.h" 3 | 4 | EXPMatcherImplementationBegin(_beGreaterThanOrEqualTo, (id expected)) { 5 | match(^BOOL{ 6 | if ([actual respondsToSelector:@selector(compare:)]) { 7 | return [actual compare:expected] != NSOrderedAscending; 8 | } 9 | return NO; 10 | }); 11 | 12 | failureMessageForTo(^NSString *{ 13 | return [NSString stringWithFormat:@"expected: %@ to be greater than or equal to %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; 14 | }); 15 | 16 | failureMessageForNotTo(^NSString *{ 17 | return [NSString stringWithFormat:@"expected: %@ not to be greater than or equal to %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; 18 | }); 19 | } 20 | EXPMatcherImplementationEnd -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/Matchers/EXPMatchers+beIdenticalTo.h: -------------------------------------------------------------------------------- 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(expected) _beIdenticalTo(expected) 10 | #endif 11 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/Matchers/EXPMatchers+beIdenticalTo.m: -------------------------------------------------------------------------------- 1 | #import "EXPMatchers+equal.h" 2 | #import "EXPMatcherHelpers.h" 3 | 4 | EXPMatcherImplementationBegin(_beIdenticalTo, (void *expected)) { 5 | match(^BOOL{ 6 | if(actual == expected) { 7 | return YES; 8 | } else if([actual isKindOfClass:[NSValue class]] && EXPIsValuePointer((NSValue *)actual)) { 9 | if([(NSValue *)actual pointerValue] == expected) { 10 | return YES; 11 | } 12 | } 13 | return NO; 14 | }); 15 | 16 | failureMessageForTo(^NSString *{ 17 | return [NSString stringWithFormat:@"expected: <%p>, got: <%p>", expected, actual]; 18 | }); 19 | 20 | failureMessageForNotTo(^NSString *{ 21 | return [NSString stringWithFormat:@"expected: not <%p>, got: <%p>", expected, actual]; 22 | }); 23 | } 24 | EXPMatcherImplementationEnd 25 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/Matchers/EXPMatchers+beInTheRangeOf.h: -------------------------------------------------------------------------------- 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))) 7 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/Matchers/EXPMatchers+beInTheRangeOf.m: -------------------------------------------------------------------------------- 1 | #import "EXPMatchers+beInTheRangeOf.h" 2 | #import "EXPMatcherHelpers.h" 3 | 4 | EXPMatcherImplementationBegin(_beInTheRangeOf, (id expectedLowerBound, id expectedUpperBound)) { 5 | match(^BOOL{ 6 | if ([actual respondsToSelector:@selector(compare:)]) { 7 | NSComparisonResult compareLowerBound = [expectedLowerBound compare: actual]; 8 | NSComparisonResult compareUpperBound = [expectedUpperBound compare: actual]; 9 | if (compareLowerBound == NSOrderedSame) { 10 | return YES; 11 | } 12 | if (compareUpperBound == NSOrderedSame) { 13 | return YES; 14 | } 15 | if ((compareLowerBound == NSOrderedAscending) && (compareUpperBound == NSOrderedDescending)) { 16 | return YES; 17 | } 18 | } 19 | return NO; 20 | }); 21 | 22 | failureMessageForTo(^NSString *{ 23 | return [NSString stringWithFormat:@"expected: %@ to be in the range [%@, %@] (inclusive)", EXPDescribeObject(actual), EXPDescribeObject(expectedLowerBound), EXPDescribeObject(expectedUpperBound)]; 24 | }); 25 | 26 | failureMessageForNotTo(^NSString *{ 27 | return [NSString stringWithFormat:@"expected: %@ not to be in the range [%@, %@] (inclusive)", EXPDescribeObject(actual), EXPDescribeObject(expectedLowerBound), EXPDescribeObject(expectedUpperBound)]; 28 | }); 29 | } 30 | EXPMatcherImplementationEnd -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/Matchers/EXPMatchers+beInstanceOf.h: -------------------------------------------------------------------------------- 1 | #import "Expecta.h" 2 | 3 | EXPMatcherInterface(beInstanceOf, (Class expected)); 4 | EXPMatcherInterface(beAnInstanceOf, (Class expected)); 5 | EXPMatcherInterface(beMemberOf, (Class expected)); 6 | EXPMatcherInterface(beAMemberOf, (Class expected)); 7 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/Matchers/EXPMatchers+beInstanceOf.m: -------------------------------------------------------------------------------- 1 | #import "EXPMatchers+beInstanceOf.h" 2 | 3 | EXPMatcherImplementationBegin(beInstanceOf, (Class expected)) { 4 | BOOL actualIsNil = (actual == nil); 5 | BOOL expectedIsNil = (expected == nil); 6 | 7 | prerequisite(^BOOL{ 8 | return !(actualIsNil || expectedIsNil); 9 | }); 10 | 11 | match(^BOOL{ 12 | return [actual isMemberOfClass:expected]; 13 | }); 14 | 15 | failureMessageForTo(^NSString *{ 16 | if(actualIsNil) return @"the actual value is nil/null"; 17 | if(expectedIsNil) return @"the expected value is nil/null"; 18 | return [NSString stringWithFormat:@"expected: an instance of %@, got: an instance of %@", [expected class], [actual class]]; 19 | }); 20 | 21 | failureMessageForNotTo(^NSString *{ 22 | if(actualIsNil) return @"the actual value is nil/null"; 23 | if(expectedIsNil) return @"the expected value is nil/null"; 24 | return [NSString stringWithFormat:@"expected: not an instance of %@, got: an instance of %@", [expected class], [actual class]]; 25 | }); 26 | } 27 | EXPMatcherImplementationEnd 28 | 29 | EXPMatcherAliasImplementation(beAnInstanceOf, beInstanceOf, (Class expected)); 30 | EXPMatcherAliasImplementation(beMemberOf, beInstanceOf, (Class expected)); 31 | EXPMatcherAliasImplementation(beAMemberOf, beInstanceOf, (Class expected)); 32 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/Matchers/EXPMatchers+beKindOf.h: -------------------------------------------------------------------------------- 1 | #import "Expecta.h" 2 | 3 | EXPMatcherInterface(beKindOf, (Class expected)); 4 | EXPMatcherInterface(beAKindOf, (Class expected)); 5 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/Matchers/EXPMatchers+beKindOf.m: -------------------------------------------------------------------------------- 1 | #import "EXPMatchers+beKindOf.h" 2 | 3 | EXPMatcherImplementationBegin(beKindOf, (Class expected)) { 4 | BOOL actualIsNil = (actual == nil); 5 | BOOL expectedIsNil = (expected == nil); 6 | 7 | prerequisite(^BOOL{ 8 | return !(actualIsNil || expectedIsNil); 9 | }); 10 | 11 | match(^BOOL{ 12 | return [actual isKindOfClass:expected]; 13 | }); 14 | 15 | failureMessageForTo(^NSString *{ 16 | if(actualIsNil) return @"the actual value is nil/null"; 17 | if(expectedIsNil) return @"the expected value is nil/null"; 18 | return [NSString stringWithFormat:@"expected: a kind of %@, got: an instance of %@, which is not a kind of %@", [expected class], [actual class], [expected class]]; 19 | }); 20 | 21 | failureMessageForNotTo(^NSString *{ 22 | if(actualIsNil) return @"the actual value is nil/null"; 23 | if(expectedIsNil) return @"the expected value is nil/null"; 24 | return [NSString stringWithFormat:@"expected: not a kind of %@, got: an instance of %@, which is a kind of %@", [expected class], [actual class], [expected class]]; 25 | }); 26 | } 27 | EXPMatcherImplementationEnd 28 | 29 | EXPMatcherAliasImplementation(beAKindOf, beKindOf, (Class expected)); 30 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThan.h: -------------------------------------------------------------------------------- 1 | #import "Expecta.h" 2 | 3 | EXPMatcherInterface(_beLessThan, (id expected)); 4 | EXPMatcherInterface(beLessThan, (id expected)); 5 | 6 | #define beLessThan(expected) _beLessThan(EXPObjectify((expected))) 7 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThan.m: -------------------------------------------------------------------------------- 1 | #import "EXPMatchers+beLessThan.h" 2 | #import "EXPMatcherHelpers.h" 3 | 4 | EXPMatcherImplementationBegin(_beLessThan, (id expected)) { 5 | match(^BOOL{ 6 | if ([actual respondsToSelector:@selector(compare:)]) { 7 | return [actual compare:expected] == NSOrderedAscending; 8 | } 9 | return NO; 10 | }); 11 | 12 | failureMessageForTo(^NSString *{ 13 | return [NSString stringWithFormat:@"expected: %@ to be less than %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; 14 | }); 15 | 16 | failureMessageForNotTo(^NSString *{ 17 | return [NSString stringWithFormat:@"expected: %@ not to be less than %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; 18 | }); 19 | } 20 | EXPMatcherImplementationEnd -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.h: -------------------------------------------------------------------------------- 1 | #import "Expecta.h" 2 | 3 | EXPMatcherInterface(_beLessThanOrEqualTo, (id expected)); 4 | EXPMatcherInterface(beLessThanOrEqualTo, (id expected)); 5 | 6 | #define beLessThanOrEqualTo(expected) _beLessThanOrEqualTo(EXPObjectify((expected))) 7 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.m: -------------------------------------------------------------------------------- 1 | #import "EXPMatchers+beLessThanOrEqualTo.h" 2 | #import "EXPMatcherHelpers.h" 3 | 4 | EXPMatcherImplementationBegin(_beLessThanOrEqualTo, (id expected)) { 5 | match(^BOOL{ 6 | if ([actual respondsToSelector:@selector(compare:)]) { 7 | return [actual compare:expected] != NSOrderedDescending; 8 | } 9 | return NO; 10 | }); 11 | 12 | failureMessageForTo(^NSString *{ 13 | return [NSString stringWithFormat:@"expected: %@ to be less than or equal to %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; 14 | }); 15 | 16 | failureMessageForNotTo(^NSString *{ 17 | return [NSString stringWithFormat:@"expected: %@ not to be less than or equal to %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; 18 | }); 19 | } 20 | EXPMatcherImplementationEnd -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/Matchers/EXPMatchers+beNil.h: -------------------------------------------------------------------------------- 1 | #import "Expecta.h" 2 | 3 | EXPMatcherInterface(beNil, (void)); 4 | EXPMatcherInterface(beNull, (void)); 5 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/Matchers/EXPMatchers+beNil.m: -------------------------------------------------------------------------------- 1 | #import "EXPMatchers+beNil.h" 2 | 3 | EXPMatcherImplementationBegin(beNil, (void)) { 4 | match(^BOOL{ 5 | return actual == nil; 6 | }); 7 | 8 | failureMessageForTo(^NSString *{ 9 | return [NSString stringWithFormat:@"expected: nil/null, got: %@", EXPDescribeObject(actual)]; 10 | }); 11 | 12 | failureMessageForNotTo(^NSString *{ 13 | return [NSString stringWithFormat:@"expected: not nil/null, got: %@", EXPDescribeObject(actual)]; 14 | }); 15 | } 16 | EXPMatcherImplementationEnd 17 | 18 | EXPMatcherAliasImplementation(beNull, beNil, (void)); 19 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/Matchers/EXPMatchers+beSubclassOf.h: -------------------------------------------------------------------------------- 1 | #import "Expecta.h" 2 | 3 | EXPMatcherInterface(beSubclassOf, (Class expected)); 4 | EXPMatcherInterface(beASubclassOf, (Class expected)); 5 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/Matchers/EXPMatchers+beSubclassOf.m: -------------------------------------------------------------------------------- 1 | #import "EXPMatchers+beSubclassOf.h" 2 | #import "NSValue+Expecta.h" 3 | #import 4 | 5 | EXPMatcherImplementationBegin(beSubclassOf, (Class expected)) { 6 | __block BOOL actualIsClass = YES; 7 | 8 | prerequisite(^BOOL { 9 | actualIsClass = class_isMetaClass(object_getClass(actual)); 10 | return actualIsClass; 11 | }); 12 | 13 | match(^BOOL{ 14 | return [actual isSubclassOfClass:expected]; 15 | }); 16 | 17 | failureMessageForTo(^NSString *{ 18 | if(!actualIsClass) return @"the actual value is not a Class"; 19 | return [NSString stringWithFormat:@"expected: a subclass of %@, got: a class %@, which is not a subclass of %@", [expected class], actual, [expected class]]; 20 | }); 21 | 22 | failureMessageForNotTo(^NSString *{ 23 | if(!actualIsClass) return @"the actual value is not a Class"; 24 | return [NSString stringWithFormat:@"expected: not a subclass of %@, got: a class %@, which is a subclass of %@", [expected class], actual, [expected class]]; 25 | }); 26 | } 27 | EXPMatcherImplementationEnd 28 | 29 | EXPMatcherAliasImplementation(beASubclassOf, beSubclassOf, (Class expected)); 30 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/Matchers/EXPMatchers+beSupersetOf.h: -------------------------------------------------------------------------------- 1 | #import "Expecta.h" 2 | 3 | EXPMatcherInterface(beSupersetOf, (id subset)); 4 | 5 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/Matchers/EXPMatchers+beTruthy.h: -------------------------------------------------------------------------------- 1 | #import "Expecta.h" 2 | 3 | EXPMatcherInterface(beTruthy, (void)); 4 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/Matchers/EXPMatchers+beTruthy.m: -------------------------------------------------------------------------------- 1 | #import "EXPMatchers+beTruthy.h" 2 | #import "EXPMatcherHelpers.h" 3 | 4 | EXPMatcherImplementationBegin(beTruthy, (void)) { 5 | match(^BOOL{ 6 | if([actual isKindOfClass:[NSNumber class]]) { 7 | return !![(NSNumber *)actual boolValue]; 8 | } else if([actual isKindOfClass:[NSValue class]]) { 9 | if(EXPIsValuePointer((NSValue *)actual)) { 10 | return !![(NSValue *)actual pointerValue]; 11 | } 12 | } 13 | return !!actual; 14 | }); 15 | 16 | failureMessageForTo(^NSString *{ 17 | return [NSString stringWithFormat:@"expected: a truthy value, got: %@, which is falsy", EXPDescribeObject(actual)]; 18 | }); 19 | 20 | failureMessageForNotTo(^NSString *{ 21 | return [NSString stringWithFormat:@"expected: a non-truthy value, got: %@, which is truthy", EXPDescribeObject(actual)]; 22 | }); 23 | } 24 | EXPMatcherImplementationEnd 25 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/Matchers/EXPMatchers+beginWith.h: -------------------------------------------------------------------------------- 1 | #import "Expecta.h" 2 | 3 | EXPMatcherInterface(beginWith, (id expected)); 4 | EXPMatcherInterface(startWith, (id expected)); 5 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/Matchers/EXPMatchers+conformTo.h: -------------------------------------------------------------------------------- 1 | #import "Expecta.h" 2 | 3 | EXPMatcherInterface(conformTo, (Protocol *expected)); 4 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/Matchers/EXPMatchers+conformTo.m: -------------------------------------------------------------------------------- 1 | #import "EXPMatchers+conformTo.h" 2 | #import "NSValue+Expecta.h" 3 | #import 4 | 5 | EXPMatcherImplementationBegin(conformTo, (Protocol *expected)) { 6 | BOOL actualIsNil = (actual == nil); 7 | BOOL expectedIsNil = (expected == nil); 8 | 9 | prerequisite(^BOOL{ 10 | return !(actualIsNil || expectedIsNil); 11 | }); 12 | 13 | match(^BOOL{ 14 | return [actual conformsToProtocol:expected]; 15 | }); 16 | 17 | failureMessageForTo(^NSString *{ 18 | if(actualIsNil) return @"the object is nil/null"; 19 | if(expectedIsNil) return @"the protocol is nil/null"; 20 | 21 | NSString *name = NSStringFromProtocol(expected); 22 | return [NSString stringWithFormat:@"expected: %@ to conform to %@", actual, name]; 23 | }); 24 | 25 | failureMessageForNotTo(^NSString *{ 26 | if(actualIsNil) return @"the object is nil/null"; 27 | if(expectedIsNil) return @"the protocol is nil/null"; 28 | 29 | NSString *name = NSStringFromProtocol(expected); 30 | return [NSString stringWithFormat:@"expected: %@ not to conform to %@", actual, name]; 31 | }); 32 | } 33 | EXPMatcherImplementationEnd 34 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/Matchers/EXPMatchers+contain.h: -------------------------------------------------------------------------------- 1 | #import "Expecta.h" 2 | 3 | EXPMatcherInterface(_contain, (id expected)); 4 | EXPMatcherInterface(contain, (id expected)); // to aid code completion 5 | #define contain(expected) _contain(EXPObjectify((expected))) 6 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/Matchers/EXPMatchers+contain.m: -------------------------------------------------------------------------------- 1 | #import "EXPMatchers+contain.h" 2 | 3 | EXPMatcherImplementationBegin(_contain, (id expected)) { 4 | BOOL actualIsCompatible = [actual isKindOfClass:[NSString class]] || [actual conformsToProtocol:@protocol(NSFastEnumeration)]; 5 | BOOL expectedIsNil = (expected == nil); 6 | 7 | prerequisite(^BOOL{ 8 | return actualIsCompatible && !expectedIsNil; 9 | }); 10 | 11 | match(^BOOL{ 12 | if(actualIsCompatible) { 13 | if([actual isKindOfClass:[NSString class]]) { 14 | return [(NSString *)actual rangeOfString:[expected description]].location != NSNotFound; 15 | } else { 16 | for (id object in actual) { 17 | if ([object isEqual:expected]) { 18 | return YES; 19 | } 20 | } 21 | } 22 | } 23 | return NO; 24 | }); 25 | 26 | failureMessageForTo(^NSString *{ 27 | if(!actualIsCompatible) return [NSString stringWithFormat:@"%@ is not an instance of NSString or NSFastEnumeration", EXPDescribeObject(actual)]; 28 | if(expectedIsNil) return @"the expected value is nil/null"; 29 | return [NSString stringWithFormat:@"expected %@ to contain %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; 30 | }); 31 | 32 | failureMessageForNotTo(^NSString *{ 33 | if(!actualIsCompatible) return [NSString stringWithFormat:@"%@ is not an instance of NSString or NSFastEnumeration", EXPDescribeObject(actual)]; 34 | if(expectedIsNil) return @"the expected value is nil/null"; 35 | return [NSString stringWithFormat:@"expected %@ not to contain %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; 36 | }); 37 | } 38 | EXPMatcherImplementationEnd 39 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/Matchers/EXPMatchers+endWith.h: -------------------------------------------------------------------------------- 1 | #import "Expecta.h" 2 | 3 | EXPMatcherInterface(endWith, (id expected)); 4 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/Matchers/EXPMatchers+equal.h: -------------------------------------------------------------------------------- 1 | #import "Expecta.h" 2 | 3 | EXPMatcherInterface(_equal, (id expected)); 4 | EXPMatcherInterface(equal, (id expected)); // to aid code completion 5 | #define equal(...) _equal(EXPObjectify((__VA_ARGS__))) 6 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/Matchers/EXPMatchers+equal.m: -------------------------------------------------------------------------------- 1 | #import "EXPMatchers+equal.h" 2 | #import "EXPMatcherHelpers.h" 3 | 4 | EXPMatcherImplementationBegin(_equal, (id expected)) { 5 | match(^BOOL{ 6 | if((actual == expected) || [actual isEqual:expected]) { 7 | return YES; 8 | } else if([actual isKindOfClass:[NSNumber class]] && [expected isKindOfClass:[NSNumber class]]) { 9 | if([actual isKindOfClass:[NSDecimalNumber class]] || [expected isKindOfClass:[NSDecimalNumber class]]) { 10 | NSDecimalNumber *actualDecimalNumber = [NSDecimalNumber decimalNumberWithDecimal:[(NSNumber *) actual decimalValue]]; 11 | NSDecimalNumber *expectedDecimalNumber = [NSDecimalNumber decimalNumberWithDecimal:[(NSNumber *) expected decimalValue]]; 12 | return [actualDecimalNumber isEqualToNumber:expectedDecimalNumber]; 13 | } 14 | else { 15 | if(EXPIsNumberFloat((NSNumber *)actual) || EXPIsNumberFloat((NSNumber *)expected)) { 16 | return [(NSNumber *)actual floatValue] == [(NSNumber *)expected floatValue]; 17 | } 18 | } 19 | } 20 | return NO; 21 | }); 22 | 23 | failureMessageForTo(^NSString *{ 24 | return [NSString stringWithFormat:@"expected: %@, got: %@", EXPDescribeObject(expected), EXPDescribeObject(actual)]; 25 | }); 26 | 27 | failureMessageForNotTo(^NSString *{ 28 | return [NSString stringWithFormat:@"expected: not %@, got: %@", EXPDescribeObject(expected), EXPDescribeObject(actual)]; 29 | }); 30 | } 31 | EXPMatcherImplementationEnd 32 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/Matchers/EXPMatchers+haveCountOf.h: -------------------------------------------------------------------------------- 1 | #import "Expecta.h" 2 | 3 | EXPMatcherInterface(haveCountOf, (NSUInteger expected)); 4 | EXPMatcherInterface(haveCount, (NSUInteger expected)); 5 | EXPMatcherInterface(haveACountOf, (NSUInteger expected)); 6 | EXPMatcherInterface(haveLength, (NSUInteger expected)); 7 | EXPMatcherInterface(haveLengthOf, (NSUInteger expected)); 8 | EXPMatcherInterface(haveALengthOf, (NSUInteger expected)); 9 | 10 | #define beEmpty() haveCountOf(0) 11 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/Matchers/EXPMatchers+haveCountOf.m: -------------------------------------------------------------------------------- 1 | #import "EXPMatchers+haveCountOf.h" 2 | 3 | EXPMatcherImplementationBegin(haveCountOf, (NSUInteger expected)) { 4 | BOOL actualIsStringy = [actual isKindOfClass:[NSString class]] || [actual isKindOfClass:[NSAttributedString class]]; 5 | BOOL actualIsCompatible = actualIsStringy || [actual respondsToSelector:@selector(count)]; 6 | 7 | prerequisite(^BOOL{ 8 | return actualIsCompatible; 9 | }); 10 | 11 | NSUInteger (^count)(id) = ^(id actual) { 12 | if(actualIsStringy) { 13 | return [actual length]; 14 | } else { 15 | return [actual count]; 16 | } 17 | }; 18 | 19 | match(^BOOL{ 20 | if(actualIsCompatible) { 21 | return count(actual) == expected; 22 | } 23 | return NO; 24 | }); 25 | 26 | failureMessageForTo(^NSString *{ 27 | if(!actualIsCompatible) return [NSString stringWithFormat:@"%@ is not an instance of NSString, NSAttributedString, NSArray, NSSet, NSOrderedSet, or NSDictionary", EXPDescribeObject(actual)]; 28 | return [NSString stringWithFormat:@"expected %@ to have a count of %zi but got %zi", EXPDescribeObject(actual), expected, count(actual)]; 29 | }); 30 | 31 | failureMessageForNotTo(^NSString *{ 32 | if(!actualIsCompatible) return [NSString stringWithFormat:@"%@ is not an instance of NSString, NSAttributedString, NSArray, NSSet, NSOrderedSet, or NSDictionary", EXPDescribeObject(actual)]; 33 | return [NSString stringWithFormat:@"expected %@ not to have a count of %zi", EXPDescribeObject(actual), expected]; 34 | }); 35 | } 36 | EXPMatcherImplementationEnd 37 | 38 | EXPMatcherAliasImplementation(haveCount, haveCountOf, (NSUInteger expected)); 39 | EXPMatcherAliasImplementation(haveACountOf, haveCountOf, (NSUInteger expected)); 40 | EXPMatcherAliasImplementation(haveLength, haveCountOf, (NSUInteger expected)); 41 | EXPMatcherAliasImplementation(haveLengthOf, haveCountOf, (NSUInteger expected)); 42 | EXPMatcherAliasImplementation(haveALengthOf, haveCountOf, (NSUInteger expected)); 43 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/Matchers/EXPMatchers+match.h: -------------------------------------------------------------------------------- 1 | #import "Expecta.h" 2 | 3 | EXPMatcherInterface(match, (NSString *expected)); 4 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/Matchers/EXPMatchers+match.m: -------------------------------------------------------------------------------- 1 | #import "EXPMatchers+match.h" 2 | #import "EXPMatcherHelpers.h" 3 | 4 | EXPMatcherImplementationBegin(match, (NSString *expected)) { 5 | BOOL actualIsNil = (actual == nil); 6 | BOOL expectedIsNil = (expected == nil); 7 | 8 | __block NSRegularExpression *regex = nil; 9 | __block NSError *regexError = nil; 10 | 11 | prerequisite (^BOOL { 12 | BOOL nilInput = (actualIsNil || expectedIsNil); 13 | if (!nilInput) { 14 | regex = [NSRegularExpression regularExpressionWithPattern:expected options:0 error:®exError]; 15 | } 16 | return !nilInput && regex; 17 | }); 18 | 19 | match(^BOOL { 20 | NSRange range = [regex rangeOfFirstMatchInString:actual options:0 range:NSMakeRange(0, [actual length])]; 21 | return !NSEqualRanges(range, NSMakeRange(NSNotFound, 0)); 22 | }); 23 | 24 | failureMessageForTo(^NSString *{ 25 | if (actualIsNil) return @"the object is nil/null"; 26 | if (expectedIsNil) return @"the expression is nil/null"; 27 | if (regexError) return [NSString stringWithFormat:@"unable to create regular expression from given parameter: %@", [regexError localizedDescription]]; 28 | return [NSString stringWithFormat:@"expected: %@ to match to %@", EXPDescribeObject(actual), expected]; 29 | }); 30 | 31 | failureMessageForNotTo(^NSString *{ 32 | if (actualIsNil) return @"the object is nil/null"; 33 | if (expectedIsNil) return @"the expression is nil/null"; 34 | if (regexError) return [NSString stringWithFormat:@"unable to create regular expression from given parameter: %@", [regexError localizedDescription]]; 35 | return [NSString stringWithFormat:@"expected: %@ not to match to %@", EXPDescribeObject(actual), expected]; 36 | }); 37 | } 38 | EXPMatcherImplementationEnd 39 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/Matchers/EXPMatchers+postNotification.h: -------------------------------------------------------------------------------- 1 | #import "Expecta.h" 2 | 3 | EXPMatcherInterface(postNotification, (id expectedNotification)); 4 | EXPMatcherInterface(notify, (id expectedNotification)); 5 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/Matchers/EXPMatchers+raise.h: -------------------------------------------------------------------------------- 1 | #import "Expecta.h" 2 | 3 | EXPMatcherInterface(raise, (NSString *expectedExceptionName)); 4 | #define raiseAny() raise(nil) 5 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/Matchers/EXPMatchers+raise.m: -------------------------------------------------------------------------------- 1 | #import "EXPMatchers+raise.h" 2 | #import "EXPDefines.h" 3 | 4 | EXPMatcherImplementationBegin(raise, (NSString *expectedExceptionName)) { 5 | __block NSException *exceptionCaught = nil; 6 | 7 | match(^BOOL{ 8 | BOOL expectedExceptionCaught = NO; 9 | @try { 10 | ((EXPBasicBlock)actual)(); 11 | } @catch(NSException *e) { 12 | exceptionCaught = e; 13 | expectedExceptionCaught = (expectedExceptionName == nil) || [[exceptionCaught name] isEqualToString:expectedExceptionName]; 14 | } 15 | return expectedExceptionCaught; 16 | }); 17 | 18 | failureMessageForTo(^NSString *{ 19 | return [NSString stringWithFormat:@"expected: %@, got: %@", 20 | expectedExceptionName ? expectedExceptionName : @"any exception", 21 | exceptionCaught ? [exceptionCaught name] : @"no exception"]; 22 | }); 23 | 24 | failureMessageForNotTo(^NSString *{ 25 | return [NSString stringWithFormat:@"expected: %@, got: %@", 26 | expectedExceptionName ? [NSString stringWithFormat:@"not %@", expectedExceptionName] : @"no exception", 27 | exceptionCaught ? [exceptionCaught name] : @"no exception"]; 28 | }); 29 | } 30 | EXPMatcherImplementationEnd 31 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/Matchers/EXPMatchers+raiseWithReason.h: -------------------------------------------------------------------------------- 1 | #import "Expecta.h" 2 | 3 | EXPMatcherInterface(raiseWithReason, (NSString *expectedExceptionName, NSString *expectedReason)); 4 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/Matchers/EXPMatchers+raiseWithReason.m: -------------------------------------------------------------------------------- 1 | #import "EXPMatchers+raiseWithReason.h" 2 | #import "EXPDefines.h" 3 | 4 | EXPMatcherImplementationBegin(raiseWithReason, (NSString *expectedExceptionName, NSString *expectedReason)) { 5 | __block NSException *exceptionCaught = nil; 6 | 7 | match(^BOOL{ 8 | BOOL expectedExceptionCaught = NO; 9 | @try { 10 | ((EXPBasicBlock)actual)(); 11 | } @catch(NSException *e) { 12 | exceptionCaught = e; 13 | expectedExceptionCaught = (((expectedExceptionName == nil) || [[exceptionCaught name] isEqualToString:expectedExceptionName]) && 14 | ((expectedReason == nil) || ([[exceptionCaught reason] isEqualToString:expectedReason]))); 15 | } 16 | return expectedExceptionCaught; 17 | }); 18 | 19 | failureMessageForTo(^NSString *{ 20 | return [NSString stringWithFormat:@"expected: %@ (%@), got: %@ (%@)", 21 | expectedExceptionName ?: @"any exception", 22 | expectedReason ?: @"any reason", 23 | exceptionCaught ? [exceptionCaught name] : @"no exception", 24 | exceptionCaught ? [exceptionCaught reason] : @""]; 25 | }); 26 | 27 | failureMessageForNotTo(^NSString *{ 28 | return [NSString stringWithFormat:@"expected: %@ (%@), got: %@ (%@)", 29 | expectedExceptionName ? [NSString stringWithFormat:@"not %@", expectedExceptionName] : @"no exception", 30 | expectedReason ? [NSString stringWithFormat:@"not '%@'", expectedReason] : @"no reason", 31 | exceptionCaught ? [exceptionCaught name] : @"no exception", 32 | exceptionCaught ? [exceptionCaught reason] : @"no reason"]; 33 | }); 34 | } 35 | EXPMatcherImplementationEnd 36 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/Matchers/EXPMatchers+respondTo.h: -------------------------------------------------------------------------------- 1 | #import "Expecta.h" 2 | 3 | EXPMatcherInterface(respondTo, (SEL expected)); 4 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/Matchers/EXPMatchers+respondTo.m: -------------------------------------------------------------------------------- 1 | #import "EXPMatchers+respondTo.h" 2 | #import "EXPMatcherHelpers.h" 3 | 4 | EXPMatcherImplementationBegin(respondTo, (SEL expected)) { 5 | BOOL actualIsNil = (actual == nil); 6 | BOOL expectedIsNull = (expected == NULL); 7 | 8 | prerequisite (^BOOL { 9 | return !(actualIsNil || expectedIsNull); 10 | }); 11 | 12 | match(^BOOL { 13 | return [actual respondsToSelector:expected]; 14 | }); 15 | 16 | failureMessageForTo(^NSString *{ 17 | if (actualIsNil) return @"the object is nil/null"; 18 | if (expectedIsNull) return @"the selector is null"; 19 | return [NSString stringWithFormat:@"expected: %@ to respond to %@", EXPDescribeObject(actual), NSStringFromSelector(expected)]; 20 | }); 21 | 22 | failureMessageForNotTo(^NSString *{ 23 | if (actualIsNil) return @"the object is nil/null"; 24 | if (expectedIsNull) return @"the selector is null"; 25 | return [NSString stringWithFormat:@"expected: %@ not to respond to %@", EXPDescribeObject(actual), NSStringFromSelector(expected)]; 26 | }); 27 | } 28 | EXPMatcherImplementationEnd 29 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/Matchers/EXPMatchers.h: -------------------------------------------------------------------------------- 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+postNotification.h" 23 | #import "EXPMatchers+beginWith.h" 24 | #import "EXPMatchers+endWith.h" 25 | #import "EXPMatchers+match.h" 26 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/NSObject+Expecta.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | @interface NSObject (Expecta) 4 | 5 | - (void)recordFailureWithDescription:(NSString *)description 6 | inFile:(NSString *)filename 7 | atLine:(NSUInteger)lineNumber 8 | expected:(BOOL)expected; 9 | 10 | @end 11 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/NSValue+Expecta.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | @interface NSValue (Expecta) 4 | 5 | @property (nonatomic) const char *_EXP_objCType; 6 | 7 | @end 8 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/Expecta/NSValue+Expecta.m: -------------------------------------------------------------------------------- 1 | #import "NSValue+Expecta.h" 2 | #import 3 | #import "Expecta.h" 4 | 5 | EXPFixCategoriesBug(NSValue_Expecta); 6 | 7 | @implementation NSValue (Expecta) 8 | 9 | static char _EXP_typeKey; 10 | 11 | - (const char *)_EXP_objCType { 12 | return [(NSString *)objc_getAssociatedObject(self, &_EXP_typeKey) cStringUsingEncoding:NSASCIIStringEncoding]; 13 | } 14 | 15 | - (void)set_EXP_objCType:(const char *)_EXP_objCType { 16 | objc_setAssociatedObject(self, &_EXP_typeKey, 17 | @(_EXP_objCType), 18 | OBJC_ASSOCIATION_COPY_NONATOMIC); 19 | } 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Example/Pods/Expecta/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2011-2015 Specta Team - https://github.com/specta 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCasePlatform.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | * 9 | */ 10 | 11 | #import 12 | 13 | #ifdef __cplusplus 14 | extern "C" { 15 | #endif 16 | 17 | /** 18 | Returns a Boolean value that indicates whether the snapshot test is running in 64Bit. 19 | This method is a convenience for creating the suffixes set based on the architecture 20 | that the test is running. 21 | 22 | @returns @c YES if the test is running in 64bit, otherwise @c NO. 23 | */ 24 | BOOL FBSnapshotTestCaseIs64Bit(void); 25 | 26 | /** 27 | Returns a default set of strings that is used to append a suffix based on the architectures. 28 | @warning Do not modify this function, you can create your own and use it with @c FBSnapshotVerifyViewWithOptions() 29 | 30 | @returns An @c NSOrderedSet object containing strings that are appended to the reference images directory. 31 | */ 32 | NSOrderedSet *FBSnapshotTestCaseDefaultSuffixes(void); 33 | 34 | #ifdef __cplusplus 35 | } 36 | #endif 37 | -------------------------------------------------------------------------------- /Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCasePlatform.m: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | * 9 | */ 10 | 11 | #import 12 | 13 | BOOL FBSnapshotTestCaseIs64Bit(void) 14 | { 15 | #if __LP64__ 16 | return YES; 17 | #else 18 | return NO; 19 | #endif 20 | } 21 | 22 | NSOrderedSet *FBSnapshotTestCaseDefaultSuffixes(void) 23 | { 24 | NSMutableOrderedSet *suffixesSet = [[NSMutableOrderedSet alloc] init]; 25 | [suffixesSet addObject:@"_32"]; 26 | [suffixesSet addObject:@"_64"]; 27 | if (FBSnapshotTestCaseIs64Bit()) { 28 | return [suffixesSet reversedOrderedSet]; 29 | } 30 | return [suffixesSet copy]; 31 | } 32 | -------------------------------------------------------------------------------- /Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/UIImage+Compare.h: -------------------------------------------------------------------------------- 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 32 | 33 | @interface UIImage (Compare) 34 | 35 | - (BOOL)compareWithImage:(UIImage *)image; 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/UIImage+Diff.h: -------------------------------------------------------------------------------- 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 32 | 33 | @interface UIImage (Diff) 34 | 35 | - (UIImage *)diffWithImage:(UIImage *)image; 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /Example/Pods/FBSnapshotTestCase/LICENSE: -------------------------------------------------------------------------------- 1 | BSD License 2 | 3 | For the FBSnapshotTestCase software 4 | 5 | Copyright (c) 2013, Facebook, Inc. 6 | All rights reserved. 7 | 8 | Redistribution and use in source and binary forms, with or without 9 | modification, are permitted provided that the following conditions are met: 10 | 11 | * Redistributions of source code must retain the above copyright notice, 12 | this list of conditions and the following disclaimer. 13 | * Redistributions in binary form must reproduce the above copyright notice, 14 | this list of conditions and the following disclaimer in the documentation 15 | and/or other materials provided with the distribution. 16 | * Neither the name Facebook nor the names of its contributors may be used to 17 | endorse or promote products derived from this software without specific 18 | prior written permission. 19 | 20 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 23 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 24 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 26 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 27 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 28 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/DACircularProgress/DACircularProgressView.h: -------------------------------------------------------------------------------- 1 | ../../../DACircularProgress/DACircularProgress/DACircularProgressView.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/DACircularProgress/DALabeledCircularProgressView.h: -------------------------------------------------------------------------------- 1 | ../../../DACircularProgress/DACircularProgress/DALabeledCircularProgressView.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Expecta+Snapshots/EXPMatchers+FBSnapshotTest.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta+Snapshots/EXPMatchers+FBSnapshotTest.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Expecta/EXPBlockDefinedMatcher.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/EXPBlockDefinedMatcher.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Expecta/EXPDefines.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/EXPDefines.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Expecta/EXPDoubleTuple.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/EXPDoubleTuple.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Expecta/EXPExpect.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/EXPExpect.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Expecta/EXPFloatTuple.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/EXPFloatTuple.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Expecta/EXPMatcher.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/EXPMatcher.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Expecta/EXPMatcherHelpers.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatcherHelpers.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Expecta/EXPMatchers+beCloseTo.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beCloseTo.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Expecta/EXPMatchers+beFalsy.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beFalsy.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Expecta/EXPMatchers+beGreaterThan.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beGreaterThan.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Expecta/EXPMatchers+beGreaterThanOrEqualTo.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Expecta/EXPMatchers+beIdenticalTo.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beIdenticalTo.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Expecta/EXPMatchers+beInTheRangeOf.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beInTheRangeOf.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Expecta/EXPMatchers+beInstanceOf.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beInstanceOf.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Expecta/EXPMatchers+beKindOf.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beKindOf.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Expecta/EXPMatchers+beLessThan.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beLessThan.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Expecta/EXPMatchers+beLessThanOrEqualTo.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Expecta/EXPMatchers+beNil.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beNil.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Expecta/EXPMatchers+beSubclassOf.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beSubclassOf.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Expecta/EXPMatchers+beSupersetOf.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beSupersetOf.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Expecta/EXPMatchers+beTruthy.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beTruthy.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Expecta/EXPMatchers+beginWith.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beginWith.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Expecta/EXPMatchers+conformTo.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+conformTo.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Expecta/EXPMatchers+contain.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+contain.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Expecta/EXPMatchers+endWith.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+endWith.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Expecta/EXPMatchers+equal.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+equal.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Expecta/EXPMatchers+haveCountOf.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+haveCountOf.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Expecta/EXPMatchers+match.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+match.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Expecta/EXPMatchers+postNotification.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+postNotification.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Expecta/EXPMatchers+raise.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+raise.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Expecta/EXPMatchers+raiseWithReason.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+raiseWithReason.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Expecta/EXPMatchers+respondTo.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+respondTo.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Expecta/EXPMatchers.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Expecta/EXPUnsupportedObject.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/EXPUnsupportedObject.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Expecta/Expecta.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Expecta.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Expecta/ExpectaObject.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/ExpectaObject.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Expecta/ExpectaSupport.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/ExpectaSupport.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Expecta/NSObject+Expecta.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/NSObject+Expecta.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Expecta/NSValue+Expecta.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/NSValue+Expecta.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/FBSnapshotTestCase/FBSnapshotTestCase.h: -------------------------------------------------------------------------------- 1 | ../../../FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCase.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/FBSnapshotTestCase/FBSnapshotTestCasePlatform.h: -------------------------------------------------------------------------------- 1 | ../../../FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCasePlatform.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/FBSnapshotTestCase/FBSnapshotTestController.h: -------------------------------------------------------------------------------- 1 | ../../../FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestController.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/FBSnapshotTestCase/UIImage+Compare.h: -------------------------------------------------------------------------------- 1 | ../../../FBSnapshotTestCase/FBSnapshotTestCase/UIImage+Compare.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/FBSnapshotTestCase/UIImage+Diff.h: -------------------------------------------------------------------------------- 1 | ../../../FBSnapshotTestCase/FBSnapshotTestCase/UIImage+Diff.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/MBProgressHUD/MBProgressHUD.h: -------------------------------------------------------------------------------- 1 | ../../../MBProgressHUD/MBProgressHUD.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/MWPhotoBrowser/MWCaptionView.h: -------------------------------------------------------------------------------- 1 | ../../../../../Pod/Classes/MWCaptionView.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/MWPhotoBrowser/MWCommon.h: -------------------------------------------------------------------------------- 1 | ../../../../../Pod/Classes/MWCommon.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/MWPhotoBrowser/MWGridCell.h: -------------------------------------------------------------------------------- 1 | ../../../../../Pod/Classes/MWGridCell.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/MWPhotoBrowser/MWGridViewController.h: -------------------------------------------------------------------------------- 1 | ../../../../../Pod/Classes/MWGridViewController.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/MWPhotoBrowser/MWPhoto.h: -------------------------------------------------------------------------------- 1 | ../../../../../Pod/Classes/MWPhoto.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/MWPhotoBrowser/MWPhotoBrowser.h: -------------------------------------------------------------------------------- 1 | ../../../../../Pod/Classes/MWPhotoBrowser.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/MWPhotoBrowser/MWPhotoBrowserPrivate.h: -------------------------------------------------------------------------------- 1 | ../../../../../Pod/Classes/MWPhotoBrowserPrivate.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/MWPhotoBrowser/MWPhotoProtocol.h: -------------------------------------------------------------------------------- 1 | ../../../../../Pod/Classes/MWPhotoProtocol.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/MWPhotoBrowser/MWTapDetectingImageView.h: -------------------------------------------------------------------------------- 1 | ../../../../../Pod/Classes/MWTapDetectingImageView.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/MWPhotoBrowser/MWTapDetectingView.h: -------------------------------------------------------------------------------- 1 | ../../../../../Pod/Classes/MWTapDetectingView.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/MWPhotoBrowser/MWZoomingScrollView.h: -------------------------------------------------------------------------------- 1 | ../../../../../Pod/Classes/MWZoomingScrollView.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/MWPhotoBrowser/UIImage+MWPhotoBrowser.h: -------------------------------------------------------------------------------- 1 | ../../../../../Pod/Classes/UIImage+MWPhotoBrowser.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/SDWebImage/NSData+ImageContentType.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/NSData+ImageContentType.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/SDWebImage/SDImageCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDImageCache.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/SDWebImage/SDWebImageCompat.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageCompat.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/SDWebImage/SDWebImageDecoder.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageDecoder.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/SDWebImage/SDWebImageDownloader.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageDownloader.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/SDWebImage/SDWebImageDownloaderOperation.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageDownloaderOperation.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/SDWebImage/SDWebImageManager.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageManager.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/SDWebImage/SDWebImageOperation.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageOperation.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/SDWebImage/SDWebImagePrefetcher.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImagePrefetcher.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/SDWebImage/UIButton+WebCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIButton+WebCache.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/SDWebImage/UIImage+GIF.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIImage+GIF.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/SDWebImage/UIImage+MultiFormat.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIImage+MultiFormat.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/SDWebImage/UIImageView+HighlightedWebCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIImageView+HighlightedWebCache.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/SDWebImage/UIImageView+WebCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIImageView+WebCache.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/SDWebImage/UIView+WebCacheOperation.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIView+WebCacheOperation.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Specta/SPTCallSite.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/SPTCallSite.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Specta/SPTCompiledExample.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/SPTCompiledExample.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Specta/SPTExample.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/SPTExample.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Specta/SPTExampleGroup.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/SPTExampleGroup.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Specta/SPTExcludeGlobalBeforeAfterEach.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/SPTExcludeGlobalBeforeAfterEach.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Specta/SPTGlobalBeforeAfterEach.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/SPTGlobalBeforeAfterEach.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Specta/SPTSharedExampleGroups.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/SPTSharedExampleGroups.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Specta/SPTSpec.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/SPTSpec.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Specta/SPTTestSuite.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/SPTTestSuite.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Specta/Specta.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/Specta.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Specta/SpectaDSL.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/SpectaDSL.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Specta/SpectaTypes.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/SpectaTypes.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Specta/SpectaUtility.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/SpectaUtility.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Specta/XCTest+Private.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/XCTest+Private.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Private/Specta/XCTestCase+Specta.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/XCTestCase+Specta.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/DACircularProgress/DACircularProgressView.h: -------------------------------------------------------------------------------- 1 | ../../../DACircularProgress/DACircularProgress/DACircularProgressView.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/DACircularProgress/DALabeledCircularProgressView.h: -------------------------------------------------------------------------------- 1 | ../../../DACircularProgress/DACircularProgress/DALabeledCircularProgressView.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Expecta+Snapshots/EXPMatchers+FBSnapshotTest.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta+Snapshots/EXPMatchers+FBSnapshotTest.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Expecta/EXPBlockDefinedMatcher.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/EXPBlockDefinedMatcher.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Expecta/EXPDefines.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/EXPDefines.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Expecta/EXPDoubleTuple.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/EXPDoubleTuple.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Expecta/EXPExpect.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/EXPExpect.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Expecta/EXPFloatTuple.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/EXPFloatTuple.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Expecta/EXPMatcher.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/EXPMatcher.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Expecta/EXPMatcherHelpers.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatcherHelpers.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Expecta/EXPMatchers+beCloseTo.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beCloseTo.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Expecta/EXPMatchers+beFalsy.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beFalsy.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Expecta/EXPMatchers+beGreaterThan.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beGreaterThan.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Expecta/EXPMatchers+beGreaterThanOrEqualTo.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Expecta/EXPMatchers+beIdenticalTo.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beIdenticalTo.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Expecta/EXPMatchers+beInTheRangeOf.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beInTheRangeOf.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Expecta/EXPMatchers+beInstanceOf.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beInstanceOf.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Expecta/EXPMatchers+beKindOf.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beKindOf.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Expecta/EXPMatchers+beLessThan.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beLessThan.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Expecta/EXPMatchers+beLessThanOrEqualTo.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Expecta/EXPMatchers+beNil.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beNil.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Expecta/EXPMatchers+beSubclassOf.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beSubclassOf.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Expecta/EXPMatchers+beSupersetOf.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beSupersetOf.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Expecta/EXPMatchers+beTruthy.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beTruthy.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Expecta/EXPMatchers+beginWith.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+beginWith.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Expecta/EXPMatchers+conformTo.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+conformTo.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Expecta/EXPMatchers+contain.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+contain.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Expecta/EXPMatchers+endWith.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+endWith.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Expecta/EXPMatchers+equal.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+equal.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Expecta/EXPMatchers+haveCountOf.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+haveCountOf.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Expecta/EXPMatchers+match.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+match.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Expecta/EXPMatchers+postNotification.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+postNotification.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Expecta/EXPMatchers+raise.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+raise.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Expecta/EXPMatchers+raiseWithReason.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+raiseWithReason.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Expecta/EXPMatchers+respondTo.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers+respondTo.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Expecta/EXPMatchers.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Matchers/EXPMatchers.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Expecta/EXPUnsupportedObject.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/EXPUnsupportedObject.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Expecta/Expecta.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/Expecta.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Expecta/ExpectaObject.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/ExpectaObject.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Expecta/ExpectaSupport.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/ExpectaSupport.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Expecta/NSObject+Expecta.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/NSObject+Expecta.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Expecta/NSValue+Expecta.h: -------------------------------------------------------------------------------- 1 | ../../../Expecta/Expecta/NSValue+Expecta.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/FBSnapshotTestCase/FBSnapshotTestCase.h: -------------------------------------------------------------------------------- 1 | ../../../FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCase.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/FBSnapshotTestCase/FBSnapshotTestCasePlatform.h: -------------------------------------------------------------------------------- 1 | ../../../FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCasePlatform.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/FBSnapshotTestCase/FBSnapshotTestController.h: -------------------------------------------------------------------------------- 1 | ../../../FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestController.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/FBSnapshotTestCase/UIImage+Compare.h: -------------------------------------------------------------------------------- 1 | ../../../FBSnapshotTestCase/FBSnapshotTestCase/UIImage+Compare.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/FBSnapshotTestCase/UIImage+Diff.h: -------------------------------------------------------------------------------- 1 | ../../../FBSnapshotTestCase/FBSnapshotTestCase/UIImage+Diff.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/MBProgressHUD/MBProgressHUD.h: -------------------------------------------------------------------------------- 1 | ../../../MBProgressHUD/MBProgressHUD.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/MWPhotoBrowser/MWCaptionView.h: -------------------------------------------------------------------------------- 1 | ../../../../../Pod/Classes/MWCaptionView.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/MWPhotoBrowser/MWCommon.h: -------------------------------------------------------------------------------- 1 | ../../../../../Pod/Classes/MWCommon.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/MWPhotoBrowser/MWGridCell.h: -------------------------------------------------------------------------------- 1 | ../../../../../Pod/Classes/MWGridCell.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/MWPhotoBrowser/MWGridViewController.h: -------------------------------------------------------------------------------- 1 | ../../../../../Pod/Classes/MWGridViewController.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/MWPhotoBrowser/MWPhoto.h: -------------------------------------------------------------------------------- 1 | ../../../../../Pod/Classes/MWPhoto.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/MWPhotoBrowser/MWPhotoBrowser.h: -------------------------------------------------------------------------------- 1 | ../../../../../Pod/Classes/MWPhotoBrowser.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/MWPhotoBrowser/MWPhotoBrowserPrivate.h: -------------------------------------------------------------------------------- 1 | ../../../../../Pod/Classes/MWPhotoBrowserPrivate.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/MWPhotoBrowser/MWPhotoProtocol.h: -------------------------------------------------------------------------------- 1 | ../../../../../Pod/Classes/MWPhotoProtocol.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/MWPhotoBrowser/MWTapDetectingImageView.h: -------------------------------------------------------------------------------- 1 | ../../../../../Pod/Classes/MWTapDetectingImageView.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/MWPhotoBrowser/MWTapDetectingView.h: -------------------------------------------------------------------------------- 1 | ../../../../../Pod/Classes/MWTapDetectingView.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/MWPhotoBrowser/MWZoomingScrollView.h: -------------------------------------------------------------------------------- 1 | ../../../../../Pod/Classes/MWZoomingScrollView.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/MWPhotoBrowser/UIImage+MWPhotoBrowser.h: -------------------------------------------------------------------------------- 1 | ../../../../../Pod/Classes/UIImage+MWPhotoBrowser.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/SDWebImage/NSData+ImageContentType.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/NSData+ImageContentType.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/SDWebImage/SDImageCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDImageCache.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/SDWebImage/SDWebImageCompat.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageCompat.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/SDWebImage/SDWebImageDecoder.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageDecoder.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/SDWebImage/SDWebImageDownloader.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageDownloader.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/SDWebImage/SDWebImageDownloaderOperation.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageDownloaderOperation.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/SDWebImage/SDWebImageManager.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageManager.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/SDWebImage/SDWebImageOperation.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageOperation.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/SDWebImage/SDWebImagePrefetcher.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImagePrefetcher.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/SDWebImage/UIButton+WebCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIButton+WebCache.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/SDWebImage/UIImage+GIF.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIImage+GIF.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/SDWebImage/UIImage+MultiFormat.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIImage+MultiFormat.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/SDWebImage/UIImageView+HighlightedWebCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIImageView+HighlightedWebCache.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/SDWebImage/UIImageView+WebCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIImageView+WebCache.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/SDWebImage/UIView+WebCacheOperation.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIView+WebCacheOperation.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Specta/SPTCallSite.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/SPTCallSite.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Specta/SPTCompiledExample.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/SPTCompiledExample.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Specta/SPTExample.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/SPTExample.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Specta/SPTExampleGroup.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/SPTExampleGroup.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Specta/SPTExcludeGlobalBeforeAfterEach.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/SPTExcludeGlobalBeforeAfterEach.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Specta/SPTGlobalBeforeAfterEach.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/SPTGlobalBeforeAfterEach.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Specta/SPTSharedExampleGroups.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/SPTSharedExampleGroups.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Specta/SPTSpec.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/SPTSpec.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Specta/SPTTestSuite.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/SPTTestSuite.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Specta/Specta.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/Specta.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Specta/SpectaDSL.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/SpectaDSL.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Specta/SpectaTypes.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/SpectaTypes.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Specta/SpectaUtility.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/SpectaUtility.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Specta/XCTest+Private.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/XCTest+Private.h -------------------------------------------------------------------------------- /Example/Pods/Headers/Public/Specta/XCTestCase+Specta.h: -------------------------------------------------------------------------------- 1 | ../../../Specta/Specta/Specta/XCTestCase+Specta.h -------------------------------------------------------------------------------- /Example/Pods/MBProgressHUD/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2009-2015 Matej Bukovinski 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. -------------------------------------------------------------------------------- /Example/Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - DACircularProgress (2.3.1) 3 | - Expecta (1.0.0) 4 | - Expecta+Snapshots (1.3.4): 5 | - Expecta (~> 1.0) 6 | - FBSnapshotTestCase (~> 1.8) 7 | - FBSnapshotTestCase (1.8.1) 8 | - MBProgressHUD (0.9.2) 9 | - MWPhotoBrowser (2.1.2): 10 | - DACircularProgress (~> 2.3) 11 | - MBProgressHUD (~> 0.9) 12 | - SDWebImage (!= 3.7.2, ~> 3.7) 13 | - SDWebImage (3.7.5): 14 | - SDWebImage/Core (= 3.7.5) 15 | - SDWebImage/Core (3.7.5) 16 | - Specta (1.0.2) 17 | 18 | DEPENDENCIES: 19 | - Expecta 20 | - Expecta+Snapshots 21 | - FBSnapshotTestCase 22 | - MWPhotoBrowser (from `../`) 23 | - Specta 24 | 25 | EXTERNAL SOURCES: 26 | MWPhotoBrowser: 27 | :path: ../ 28 | 29 | SPEC CHECKSUMS: 30 | DACircularProgress: 4dd437c0fc3da5161cb289e07ac449493d41db71 31 | Expecta: 32604574add2c46a36f8d2f716b6c5736eb75024 32 | Expecta+Snapshots: ca15bfb57e7a0f78f86c7699c2c54ffacfa4ad2a 33 | FBSnapshotTestCase: 3dc3899168747a0319c5278f5b3445c13a6532dd 34 | MBProgressHUD: 1569cf7ace17a8bac47aabfbb8580a49690386d1 35 | MWPhotoBrowser: 5836d7aa041dc05a13de380c246826578adc5ea5 36 | SDWebImage: 69c6303e3348fba97e03f65d65d4fbc26740f461 37 | Specta: 9cec98310dca411f7c7ffd6943552b501622abfe 38 | 39 | COCOAPODS: 0.39.0 40 | -------------------------------------------------------------------------------- /Example/Pods/Pods.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Example/Pods/SDWebImage/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2009 Olivier Poitrey 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is furnished 8 | to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in all 11 | copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | 21 | -------------------------------------------------------------------------------- /Example/Pods/SDWebImage/SDWebImage/NSData+ImageContentType.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Fabrice Aneche on 06/01/14. 3 | // Copyright (c) 2014 Dailymotion. All rights reserved. 4 | // 5 | 6 | #import 7 | 8 | @interface NSData (ImageContentType) 9 | 10 | /** 11 | * Compute the content type for an image data 12 | * 13 | * @param data the input data 14 | * 15 | * @return the content type as string (i.e. image/jpeg, image/gif) 16 | */ 17 | + (NSString *)sd_contentTypeForImageData:(NSData *)data; 18 | 19 | @end 20 | 21 | 22 | @interface NSData (ImageContentTypeDeprecated) 23 | 24 | + (NSString *)contentTypeForImageData:(NSData *)data __deprecated_msg("Use `sd_contentTypeForImageData:`"); 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /Example/Pods/SDWebImage/SDWebImage/NSData+ImageContentType.m: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Fabrice Aneche on 06/01/14. 3 | // Copyright (c) 2014 Dailymotion. All rights reserved. 4 | // 5 | 6 | #import "NSData+ImageContentType.h" 7 | 8 | 9 | @implementation NSData (ImageContentType) 10 | 11 | + (NSString *)sd_contentTypeForImageData:(NSData *)data { 12 | uint8_t c; 13 | [data getBytes:&c length:1]; 14 | switch (c) { 15 | case 0xFF: 16 | return @"image/jpeg"; 17 | case 0x89: 18 | return @"image/png"; 19 | case 0x47: 20 | return @"image/gif"; 21 | case 0x49: 22 | case 0x4D: 23 | return @"image/tiff"; 24 | case 0x52: 25 | // R as RIFF for WEBP 26 | if ([data length] < 12) { 27 | return nil; 28 | } 29 | 30 | NSString *testString = [[NSString alloc] initWithData:[data subdataWithRange:NSMakeRange(0, 12)] encoding:NSASCIIStringEncoding]; 31 | if ([testString hasPrefix:@"RIFF"] && [testString hasSuffix:@"WEBP"]) { 32 | return @"image/webp"; 33 | } 34 | 35 | return nil; 36 | } 37 | return nil; 38 | } 39 | 40 | @end 41 | 42 | 43 | @implementation NSData (ImageContentTypeDeprecated) 44 | 45 | + (NSString *)contentTypeForImageData:(NSData *)data { 46 | return [self sd_contentTypeForImageData:data]; 47 | } 48 | 49 | @end 50 | -------------------------------------------------------------------------------- /Example/Pods/SDWebImage/SDWebImage/SDWebImageCompat.m: -------------------------------------------------------------------------------- 1 | // 2 | // SDWebImageCompat.m 3 | // SDWebImage 4 | // 5 | // Created by Olivier Poitrey on 11/12/12. 6 | // Copyright (c) 2012 Dailymotion. All rights reserved. 7 | // 8 | 9 | #import "SDWebImageCompat.h" 10 | 11 | #if !__has_feature(objc_arc) 12 | #error SDWebImage is ARC only. Either turn on ARC for the project or use -fobjc-arc flag 13 | #endif 14 | 15 | inline UIImage *SDScaledImageForKey(NSString *key, UIImage *image) { 16 | if (!image) { 17 | return nil; 18 | } 19 | 20 | if ([image.images count] > 0) { 21 | NSMutableArray *scaledImages = [NSMutableArray array]; 22 | 23 | for (UIImage *tempImage in image.images) { 24 | [scaledImages addObject:SDScaledImageForKey(key, tempImage)]; 25 | } 26 | 27 | return [UIImage animatedImageWithImages:scaledImages duration:image.duration]; 28 | } 29 | else { 30 | if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) { 31 | CGFloat scale = [UIScreen mainScreen].scale; 32 | if (key.length >= 8) { 33 | NSRange range = [key rangeOfString:@"@2x."]; 34 | if (range.location != NSNotFound) { 35 | scale = 2.0; 36 | } 37 | 38 | range = [key rangeOfString:@"@3x."]; 39 | if (range.location != NSNotFound) { 40 | scale = 3.0; 41 | } 42 | } 43 | 44 | UIImage *scaledImage = [[UIImage alloc] initWithCGImage:image.CGImage scale:scale orientation:image.imageOrientation]; 45 | image = scaledImage; 46 | } 47 | return image; 48 | } 49 | } 50 | 51 | NSString *const SDWebImageErrorDomain = @"SDWebImageErrorDomain"; 52 | -------------------------------------------------------------------------------- /Example/Pods/SDWebImage/SDWebImage/SDWebImageDecoder.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * Created by james on 9/28/11. 6 | * 7 | * For the full copyright and license information, please view the LICENSE 8 | * file that was distributed with this source code. 9 | */ 10 | 11 | #import 12 | #import "SDWebImageCompat.h" 13 | 14 | @interface UIImage (ForceDecode) 15 | 16 | + (UIImage *)decodedImageWithImage:(UIImage *)image; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Example/Pods/SDWebImage/SDWebImage/SDWebImageOperation.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import 10 | 11 | @protocol SDWebImageOperation 12 | 13 | - (void)cancel; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /Example/Pods/SDWebImage/SDWebImage/UIImage+GIF.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+GIF.h 3 | // LBGIFImage 4 | // 5 | // Created by Laurin Brandner on 06.01.12. 6 | // Copyright (c) 2012 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIImage (GIF) 12 | 13 | + (UIImage *)sd_animatedGIFNamed:(NSString *)name; 14 | 15 | + (UIImage *)sd_animatedGIFWithData:(NSData *)data; 16 | 17 | - (UIImage *)sd_animatedImageByScalingAndCroppingToSize:(CGSize)size; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /Example/Pods/SDWebImage/SDWebImage/UIImage+MultiFormat.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+MultiFormat.h 3 | // SDWebImage 4 | // 5 | // Created by Olivier Poitrey on 07/06/13. 6 | // Copyright (c) 2013 Dailymotion. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIImage (MultiFormat) 12 | 13 | + (UIImage *)sd_imageWithData:(NSData *)data; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /Example/Pods/SDWebImage/SDWebImage/UIView+WebCacheOperation.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import 10 | #import "SDWebImageManager.h" 11 | 12 | @interface UIView (WebCacheOperation) 13 | 14 | /** 15 | * Set the image load operation (storage in a UIView based dictionary) 16 | * 17 | * @param operation the operation 18 | * @param key key for storing the operation 19 | */ 20 | - (void)sd_setImageLoadOperation:(id)operation forKey:(NSString *)key; 21 | 22 | /** 23 | * Cancel all operations for the current UIView and key 24 | * 25 | * @param key key for identifying the operations 26 | */ 27 | - (void)sd_cancelImageLoadOperationWithKey:(NSString *)key; 28 | 29 | /** 30 | * Just remove the operations corresponding to the current UIView and key without cancelling them 31 | * 32 | * @param key key for identifying the operations 33 | */ 34 | - (void)sd_removeImageLoadOperationWithKey:(NSString *)key; 35 | 36 | @end 37 | -------------------------------------------------------------------------------- /Example/Pods/Specta/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2012-2014 Specta Team. 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | 21 | -------------------------------------------------------------------------------- /Example/Pods/Specta/Specta/Specta/SPTCallSite.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | @interface SPTCallSite : NSObject 4 | 5 | @property (nonatomic, copy, readonly) NSString *file; 6 | @property (nonatomic, readonly) NSUInteger line; 7 | 8 | + (instancetype)callSiteWithFile:(NSString *)file line:(NSUInteger)line; 9 | 10 | - (instancetype)initWithFile:(NSString *)file line:(NSUInteger)line; 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /Example/Pods/Specta/Specta/Specta/SPTCallSite.m: -------------------------------------------------------------------------------- 1 | #import "SPTCallSite.h" 2 | 3 | @implementation SPTCallSite 4 | 5 | + (instancetype)callSiteWithFile:(NSString *)file line:(NSUInteger)line { 6 | return [[self alloc] initWithFile:file line:line]; 7 | } 8 | 9 | - (instancetype)initWithFile:(NSString *)file line:(NSUInteger)line { 10 | self = [super init]; 11 | if (self) { 12 | _file = file; 13 | _line = line; 14 | } 15 | return self; 16 | } 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Example/Pods/Specta/Specta/Specta/SPTCompiledExample.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import "SpectaTypes.h" 3 | 4 | @interface SPTCompiledExample : NSObject 5 | 6 | @property (nonatomic, copy) NSString *name; 7 | @property (nonatomic, copy) NSString *testCaseName; 8 | @property (nonatomic, copy) SPTSpecBlock block; 9 | 10 | @property (nonatomic) BOOL pending; 11 | @property (nonatomic, getter=isFocused) BOOL focused; 12 | 13 | @property (nonatomic) SEL testMethodSelector; 14 | 15 | - (id)initWithName:(NSString *)name testCaseName:(NSString *)testCaseName block:(SPTSpecBlock)block pending:(BOOL)pending focused:(BOOL)focused; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Example/Pods/Specta/Specta/Specta/SPTCompiledExample.m: -------------------------------------------------------------------------------- 1 | #import "SPTCompiledExample.h" 2 | 3 | @implementation SPTCompiledExample 4 | 5 | - (id)initWithName:(NSString *)name testCaseName:(NSString *)testCaseName block:(SPTSpecBlock)block pending:(BOOL)pending focused:(BOOL)focused { 6 | self = [super init]; 7 | if (self) { 8 | self.name = name; 9 | self.testCaseName = testCaseName; 10 | self.block = block; 11 | self.pending = pending; 12 | self.focused = focused; 13 | } 14 | return self; 15 | } 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Example/Pods/Specta/Specta/Specta/SPTExample.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import "SpectaTypes.h" 3 | 4 | @class SPTCallSite; 5 | 6 | @interface SPTExample : NSObject 7 | 8 | @property (nonatomic, copy) NSString *name; 9 | @property (nonatomic, retain) SPTCallSite *callSite; 10 | @property (nonatomic, copy) SPTVoidBlock block; 11 | 12 | @property (nonatomic) BOOL pending; 13 | @property (nonatomic, getter=isFocused) BOOL focused; 14 | 15 | - (id)initWithName:(NSString *)name callSite:(SPTCallSite *)callSite focused:(BOOL)focused block:(SPTVoidBlock)block; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Example/Pods/Specta/Specta/Specta/SPTExample.m: -------------------------------------------------------------------------------- 1 | #import "SPTExample.h" 2 | 3 | @implementation SPTExample 4 | 5 | - (id)initWithName:(NSString *)name callSite:(SPTCallSite *)callSite focused:(BOOL)focused block:(SPTVoidBlock)block { 6 | self = [super init]; 7 | if (self) { 8 | self.name = name; 9 | self.callSite = callSite; 10 | self.block = block; 11 | self.focused = focused; 12 | self.pending = block == nil; 13 | } 14 | return self; 15 | } 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Example/Pods/Specta/Specta/Specta/SPTExampleGroup.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | #import "SpectaTypes.h" 4 | 5 | @class SPTExample; 6 | @class SPTCallSite; 7 | 8 | @interface SPTExampleGroup : NSObject 9 | 10 | @property (nonatomic, copy) NSString *name; 11 | @property (nonatomic, strong) SPTExampleGroup *root; 12 | @property (nonatomic, strong) SPTExampleGroup *parent; 13 | @property (nonatomic, strong) NSMutableArray *children; 14 | @property (nonatomic, strong) NSMutableArray *beforeAllArray; 15 | @property (nonatomic, strong) NSMutableArray *afterAllArray; 16 | @property (nonatomic, strong) NSMutableArray *beforeEachArray; 17 | @property (nonatomic, strong) NSMutableArray *afterEachArray; 18 | @property (nonatomic, strong) NSMutableDictionary *sharedExamples; 19 | @property (nonatomic) unsigned int exampleCount; 20 | @property (nonatomic) unsigned int ranExampleCount; 21 | @property (nonatomic) unsigned int pendingExampleCount; 22 | @property (nonatomic, getter=isFocused) BOOL focused; 23 | 24 | - (id)initWithName:(NSString *)name parent:(SPTExampleGroup *)parent root:(SPTExampleGroup *)root; 25 | 26 | - (SPTExampleGroup *)addExampleGroupWithName:(NSString *)name focused:(BOOL)focused; 27 | - (SPTExample *)addExampleWithName:(NSString *)name callSite:(SPTCallSite *)callSite focused:(BOOL)focused block:(SPTVoidBlock)block; 28 | 29 | - (void)addBeforeAllBlock:(SPTVoidBlock)block; 30 | - (void)addAfterAllBlock:(SPTVoidBlock)block; 31 | - (void)addBeforeEachBlock:(SPTVoidBlock)block; 32 | - (void)addAfterEachBlock:(SPTVoidBlock)block; 33 | 34 | - (NSArray *)compileExamplesWithStack:(NSArray *)stack; 35 | 36 | @end 37 | -------------------------------------------------------------------------------- /Example/Pods/Specta/Specta/Specta/SPTExcludeGlobalBeforeAfterEach.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 Specta Team. All rights reserved. 3 | */ 4 | #import 5 | 6 | // This protocol was used for blacklisting classes for global beforeEach and afterEach blocks. 7 | // Now, instead, classes are whitelisted by implementing the SPTGlobalBeforeAfterEach protocol. 8 | __deprecated_msg("Please whitelist classes instead with the SPTGlobalBeforeAfterEach protocol") 9 | @protocol SPTExcludeGlobalBeforeAfterEach 10 | @end 11 | -------------------------------------------------------------------------------- /Example/Pods/Specta/Specta/Specta/SPTGlobalBeforeAfterEach.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 Specta Team. All rights reserved. 3 | */ 4 | #import 5 | 6 | // This protocol is used for whitelisting classes for global beforeEach and afterEach blocks. 7 | // If you want a class to participate in those just add this protocol to a category and it will be 8 | // included. 9 | @protocol SPTGlobalBeforeAfterEach 10 | 11 | @optional 12 | + (void)beforeEach; 13 | + (void)afterEach; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /Example/Pods/Specta/Specta/Specta/SPTSharedExampleGroups.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | #import 4 | 5 | @class _XCTestCaseImplementation; 6 | 7 | @class SPTExampleGroup; 8 | 9 | @interface SPTSharedExampleGroups : XCTestCase 10 | 11 | + (void)addSharedExampleGroupWithName:(NSString *)name block:(SPTDictionaryBlock)block exampleGroup:(SPTExampleGroup *)exampleGroup; 12 | + (SPTDictionaryBlock)sharedExampleGroupWithName:(NSString *)name exampleGroup:(SPTExampleGroup *)exampleGroup; 13 | 14 | - (void)sharedExampleGroups; 15 | 16 | @end 17 | 18 | -------------------------------------------------------------------------------- /Example/Pods/Specta/Specta/Specta/SPTSpec.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | @class 5 | SPTTestSuite 6 | , SPTCompiledExample 7 | ; 8 | 9 | @interface SPTSpec : XCTestCase 10 | 11 | @property (strong) XCTestCaseRun *spt_run; 12 | @property (nonatomic) BOOL spt_pending; 13 | @property (nonatomic) BOOL spt_skipped; 14 | 15 | + (BOOL)spt_isDisabled; 16 | + (void)spt_setDisabled:(BOOL)disabled; 17 | + (BOOL)spt_focusedExamplesExist; 18 | + (SEL)spt_convertToTestMethod:(SPTCompiledExample *)example; 19 | + (SPTTestSuite *)spt_testSuite; 20 | + (void)spt_setCurrentTestSuite; 21 | + (void)spt_unsetCurrentTestSuite; 22 | + (void)spt_setCurrentTestSuiteFileName:(NSString *)fileName lineNumber:(NSUInteger)lineNumber; 23 | 24 | - (void)spec; 25 | - (BOOL)spt_shouldRunExample:(SPTCompiledExample *)example; 26 | - (void)spt_runExample:(SPTCompiledExample *)example; 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /Example/Pods/Specta/Specta/Specta/SPTTestSuite.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | @class 4 | SPTExample 5 | , SPTExampleGroup 6 | ; 7 | 8 | @interface SPTTestSuite : NSObject 9 | 10 | @property (nonatomic, strong) SPTExampleGroup *rootGroup; 11 | @property (nonatomic, strong) NSMutableArray *groupStack; 12 | @property (nonatomic, strong) NSArray *compiledExamples; 13 | @property (nonatomic, copy) NSString *fileName; 14 | @property (nonatomic) NSUInteger lineNumber; 15 | @property (nonatomic, getter = isDisabled) BOOL disabled; 16 | @property (nonatomic) BOOL hasFocusedExamples; 17 | 18 | - (SPTExampleGroup *)currentGroup; 19 | - (void)compile; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Example/Pods/Specta/Specta/Specta/SPTTestSuite.m: -------------------------------------------------------------------------------- 1 | #import "SPTTestSuite.h" 2 | #import "SPTExampleGroup.h" 3 | #import "SPTCompiledExample.h" 4 | 5 | @implementation SPTTestSuite 6 | 7 | - (id)init { 8 | self = [super init]; 9 | if (self) { 10 | self.rootGroup = [[SPTExampleGroup alloc] init]; 11 | self.rootGroup.root = self.rootGroup; 12 | self.groupStack = [NSMutableArray arrayWithObject:self.rootGroup]; 13 | } 14 | return self; 15 | } 16 | 17 | - (SPTExampleGroup *)currentGroup { 18 | return [self.groupStack lastObject]; 19 | } 20 | 21 | - (void)compile { 22 | self.compiledExamples = [self.rootGroup compileExamplesWithStack:@[]]; 23 | for (SPTCompiledExample *example in self.compiledExamples) { 24 | if (example.focused) { 25 | self.hasFocusedExamples = YES; 26 | break; 27 | } 28 | } 29 | } 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /Example/Pods/Specta/Specta/Specta/Specta.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | //! Project version number for Specta. 5 | FOUNDATION_EXPORT double SpectaVersionNumber; 6 | 7 | //! Project version string for Specta. 8 | FOUNDATION_EXPORT const unsigned char SpectaVersionString[]; 9 | 10 | // In this header, you should import all the public headers of your framework using statements like #import 11 | 12 | #import 13 | #import 14 | #import 15 | -------------------------------------------------------------------------------- /Example/Pods/Specta/Specta/Specta/SpectaTypes.h: -------------------------------------------------------------------------------- 1 | @class SPTSpec; 2 | 3 | typedef void (^SPTVoidBlock)(); 4 | typedef void (^SPTSpecBlock)(SPTSpec *spec); 5 | typedef void (^SPTDictionaryBlock)(NSDictionary *dictionary); 6 | -------------------------------------------------------------------------------- /Example/Pods/Specta/Specta/Specta/SpectaUtility.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | extern NSString * const spt_kCurrentTestSuiteKey; 4 | extern NSString * const spt_kCurrentSpecKey; 5 | 6 | #define SPTCurrentTestSuite [[NSThread mainThread] threadDictionary][spt_kCurrentTestSuiteKey] 7 | #define SPTCurrentSpec [[NSThread mainThread] threadDictionary][spt_kCurrentSpecKey] 8 | #define SPTCurrentGroup [SPTCurrentTestSuite currentGroup] 9 | #define SPTGroupStack [SPTCurrentTestSuite groupStack] 10 | 11 | #define SPTReturnUnlessBlockOrNil(block) if ((block) && !SPTIsBlock((block))) return; 12 | #define SPTIsBlock(obj) [(obj) isKindOfClass:NSClassFromString(@"NSBlock")] 13 | 14 | BOOL spt_isSpecClass(Class aClass); 15 | NSString *spt_underscorize(NSString *string); 16 | NSArray *spt_map(NSArray *array, id (^block)(id obj, NSUInteger idx)); 17 | NSArray *spt_shuffle(NSArray *array); 18 | unsigned int spt_seed(); 19 | -------------------------------------------------------------------------------- /Example/Pods/Specta/Specta/Specta/XCTest+Private.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | #if __IPHONE_OS_VERSION_MAX_ALLOWED >= 90000 || __MAC_OS_X_VERSION_MAX_ALLOWED >= 101100 4 | 5 | @interface XCTestObservationCenter (SPTTestSuspention) 6 | 7 | - (void)_suspendObservationForBlock:(void (^)(void))block; 8 | 9 | @end 10 | 11 | #else 12 | 13 | @interface XCTestObservationCenter : NSObject 14 | 15 | + (id)sharedObservationCenter; 16 | - (void)_suspendObservationForBlock:(void (^)(void))block; 17 | 18 | @end 19 | 20 | #endif 21 | 22 | @protocol XCTestObservation 23 | @end 24 | 25 | @interface _XCTestDriverTestObserver : NSObject 26 | 27 | - (void)stopObserving; 28 | - (void)startObserving; 29 | 30 | @end 31 | 32 | @interface _XCTestCaseImplementation : NSObject 33 | @end 34 | 35 | @interface XCTestCase () 36 | 37 | - (_XCTestCaseImplementation *)internalImplementation; 38 | - (void)_recordUnexpectedFailureWithDescription:(NSString *)description exception:(NSException *)exception; 39 | 40 | @end 41 | -------------------------------------------------------------------------------- /Example/Pods/Specta/Specta/Specta/XCTestCase+Specta.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | @interface XCTestCase (Specta) 4 | 5 | - (void)spt_handleException:(NSException *)exception; 6 | 7 | @end 8 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/DACircularProgress/DACircularProgress-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_DACircularProgress : NSObject 3 | @end 4 | @implementation PodsDummy_DACircularProgress 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/DACircularProgress/DACircularProgress-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/DACircularProgress/DACircularProgress.xcconfig: -------------------------------------------------------------------------------- 1 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 2 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/DACircularProgress" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DACircularProgress" "${PODS_ROOT}/Headers/Public/Expecta" "${PODS_ROOT}/Headers/Public/Expecta+Snapshots" "${PODS_ROOT}/Headers/Public/FBSnapshotTestCase" "${PODS_ROOT}/Headers/Public/MBProgressHUD" "${PODS_ROOT}/Headers/Public/MWPhotoBrowser" "${PODS_ROOT}/Headers/Public/SDWebImage" "${PODS_ROOT}/Headers/Public/Specta" 3 | OTHER_LDFLAGS = -framework "QuartzCore" 4 | PODS_ROOT = ${SRCROOT} 5 | SKIP_INSTALL = YES -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Expecta+Snapshots/Expecta+Snapshots-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Expecta_Snapshots : NSObject 3 | @end 4 | @implementation PodsDummy_Expecta_Snapshots 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Expecta+Snapshots/Expecta+Snapshots-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Expecta+Snapshots/Expecta+Snapshots.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$(PLATFORM_DIR)/Developer/Library/Frameworks" 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Expecta+Snapshots" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DACircularProgress" "${PODS_ROOT}/Headers/Public/Expecta" "${PODS_ROOT}/Headers/Public/Expecta+Snapshots" "${PODS_ROOT}/Headers/Public/FBSnapshotTestCase" "${PODS_ROOT}/Headers/Public/MBProgressHUD" "${PODS_ROOT}/Headers/Public/MWPhotoBrowser" "${PODS_ROOT}/Headers/Public/SDWebImage" "${PODS_ROOT}/Headers/Public/Specta" 4 | OTHER_LDFLAGS = -framework "Foundation" -framework "XCTest" 5 | PODS_ROOT = ${SRCROOT} 6 | SKIP_INSTALL = YES -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Expecta/Expecta-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Expecta : NSObject 3 | @end 4 | @implementation PodsDummy_Expecta 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Expecta/Expecta-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Expecta/Expecta.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$(PLATFORM_DIR)/Developer/Library/Frameworks" $(inherited) $(DEVELOPER_FRAMEWORKS_DIR) "$(PLATFORM_DIR)/Developer/Library/Frameworks" "$(DEVELOPER_DIR)/Platforms/iPhoneSimulator.platform/Developer/Library/Frameworks" 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Expecta" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DACircularProgress" "${PODS_ROOT}/Headers/Public/Expecta" "${PODS_ROOT}/Headers/Public/Expecta+Snapshots" "${PODS_ROOT}/Headers/Public/FBSnapshotTestCase" "${PODS_ROOT}/Headers/Public/MBProgressHUD" "${PODS_ROOT}/Headers/Public/MWPhotoBrowser" "${PODS_ROOT}/Headers/Public/SDWebImage" "${PODS_ROOT}/Headers/Public/Specta" 4 | OTHER_LDFLAGS = -framework "Foundation" -framework "XCTest" 5 | PODS_ROOT = ${SRCROOT} 6 | SKIP_INSTALL = YES -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_FBSnapshotTestCase : NSObject 3 | @end 4 | @implementation PodsDummy_FBSnapshotTestCase 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$(PLATFORM_DIR)/Developer/Library/Frameworks" 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FBSnapshotTestCase" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DACircularProgress" "${PODS_ROOT}/Headers/Public/Expecta" "${PODS_ROOT}/Headers/Public/Expecta+Snapshots" "${PODS_ROOT}/Headers/Public/FBSnapshotTestCase" "${PODS_ROOT}/Headers/Public/MBProgressHUD" "${PODS_ROOT}/Headers/Public/MWPhotoBrowser" "${PODS_ROOT}/Headers/Public/SDWebImage" "${PODS_ROOT}/Headers/Public/Specta" 4 | OTHER_LDFLAGS = -framework "XCTest" 5 | PODS_ROOT = ${SRCROOT} 6 | SKIP_INSTALL = YES -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/MBProgressHUD/MBProgressHUD-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_MBProgressHUD : NSObject 3 | @end 4 | @implementation PodsDummy_MBProgressHUD 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/MBProgressHUD/MBProgressHUD-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/MBProgressHUD/MBProgressHUD.xcconfig: -------------------------------------------------------------------------------- 1 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 2 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/MBProgressHUD" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DACircularProgress" "${PODS_ROOT}/Headers/Public/Expecta" "${PODS_ROOT}/Headers/Public/Expecta+Snapshots" "${PODS_ROOT}/Headers/Public/FBSnapshotTestCase" "${PODS_ROOT}/Headers/Public/MBProgressHUD" "${PODS_ROOT}/Headers/Public/MWPhotoBrowser" "${PODS_ROOT}/Headers/Public/SDWebImage" "${PODS_ROOT}/Headers/Public/Specta" 3 | OTHER_LDFLAGS = -framework "CoreGraphics" 4 | PODS_ROOT = ${SRCROOT} 5 | SKIP_INSTALL = YES -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/MWPhotoBrowser/MWPhotoBrowser-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_MWPhotoBrowser : NSObject 3 | @end 4 | @implementation PodsDummy_MWPhotoBrowser 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/MWPhotoBrowser/MWPhotoBrowser-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/MWPhotoBrowser/MWPhotoBrowser.xcconfig: -------------------------------------------------------------------------------- 1 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 2 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/MWPhotoBrowser" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DACircularProgress" "${PODS_ROOT}/Headers/Public/Expecta" "${PODS_ROOT}/Headers/Public/Expecta+Snapshots" "${PODS_ROOT}/Headers/Public/FBSnapshotTestCase" "${PODS_ROOT}/Headers/Public/MBProgressHUD" "${PODS_ROOT}/Headers/Public/MWPhotoBrowser" "${PODS_ROOT}/Headers/Public/SDWebImage" "${PODS_ROOT}/Headers/Public/Specta" 3 | OTHER_LDFLAGS = -framework "AssetsLibrary" -framework "ImageIO" -framework "MediaPlayer" -framework "QuartzCore" -weak_framework "Photos" 4 | PODS_ROOT = ${SRCROOT} 5 | SKIP_INSTALL = YES -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-MWPhotoBrowser_Example/Pods-MWPhotoBrowser_Example-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_MWPhotoBrowser_Example : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_MWPhotoBrowser_Example 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-MWPhotoBrowser_Example/Pods-MWPhotoBrowser_Example.debug.xcconfig: -------------------------------------------------------------------------------- 1 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 2 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DACircularProgress" "${PODS_ROOT}/Headers/Public/Expecta" "${PODS_ROOT}/Headers/Public/Expecta+Snapshots" "${PODS_ROOT}/Headers/Public/FBSnapshotTestCase" "${PODS_ROOT}/Headers/Public/MBProgressHUD" "${PODS_ROOT}/Headers/Public/MWPhotoBrowser" "${PODS_ROOT}/Headers/Public/SDWebImage" "${PODS_ROOT}/Headers/Public/Specta" 3 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/DACircularProgress" -isystem "${PODS_ROOT}/Headers/Public/Expecta" -isystem "${PODS_ROOT}/Headers/Public/Expecta+Snapshots" -isystem "${PODS_ROOT}/Headers/Public/FBSnapshotTestCase" -isystem "${PODS_ROOT}/Headers/Public/MBProgressHUD" -isystem "${PODS_ROOT}/Headers/Public/MWPhotoBrowser" -isystem "${PODS_ROOT}/Headers/Public/SDWebImage" -isystem "${PODS_ROOT}/Headers/Public/Specta" 4 | OTHER_LDFLAGS = $(inherited) -ObjC -l"DACircularProgress" -l"MBProgressHUD" -l"MWPhotoBrowser" -l"SDWebImage" -framework "AssetsLibrary" -framework "CoreGraphics" -framework "ImageIO" -framework "MediaPlayer" -framework "QuartzCore" -weak_framework "Photos" 5 | PODS_ROOT = ${SRCROOT}/Pods -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-MWPhotoBrowser_Example/Pods-MWPhotoBrowser_Example.release.xcconfig: -------------------------------------------------------------------------------- 1 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 2 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DACircularProgress" "${PODS_ROOT}/Headers/Public/Expecta" "${PODS_ROOT}/Headers/Public/Expecta+Snapshots" "${PODS_ROOT}/Headers/Public/FBSnapshotTestCase" "${PODS_ROOT}/Headers/Public/MBProgressHUD" "${PODS_ROOT}/Headers/Public/MWPhotoBrowser" "${PODS_ROOT}/Headers/Public/SDWebImage" "${PODS_ROOT}/Headers/Public/Specta" 3 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/DACircularProgress" -isystem "${PODS_ROOT}/Headers/Public/Expecta" -isystem "${PODS_ROOT}/Headers/Public/Expecta+Snapshots" -isystem "${PODS_ROOT}/Headers/Public/FBSnapshotTestCase" -isystem "${PODS_ROOT}/Headers/Public/MBProgressHUD" -isystem "${PODS_ROOT}/Headers/Public/MWPhotoBrowser" -isystem "${PODS_ROOT}/Headers/Public/SDWebImage" -isystem "${PODS_ROOT}/Headers/Public/Specta" 4 | OTHER_LDFLAGS = $(inherited) -ObjC -l"DACircularProgress" -l"MBProgressHUD" -l"MWPhotoBrowser" -l"SDWebImage" -framework "AssetsLibrary" -framework "CoreGraphics" -framework "ImageIO" -framework "MediaPlayer" -framework "QuartzCore" -weak_framework "Photos" 5 | PODS_ROOT = ${SRCROOT}/Pods -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-MWPhotoBrowser_Tests/Pods-MWPhotoBrowser_Tests-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_MWPhotoBrowser_Tests : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_MWPhotoBrowser_Tests 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-MWPhotoBrowser_Tests/Pods-MWPhotoBrowser_Tests.debug.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) $(inherited) $(DEVELOPER_FRAMEWORKS_DIR) "$(PLATFORM_DIR)/Developer/Library/Frameworks" "$(DEVELOPER_DIR)/Platforms/iPhoneSimulator.platform/Developer/Library/Frameworks" 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DACircularProgress" "${PODS_ROOT}/Headers/Public/Expecta" "${PODS_ROOT}/Headers/Public/Expecta+Snapshots" "${PODS_ROOT}/Headers/Public/FBSnapshotTestCase" "${PODS_ROOT}/Headers/Public/MBProgressHUD" "${PODS_ROOT}/Headers/Public/MWPhotoBrowser" "${PODS_ROOT}/Headers/Public/SDWebImage" "${PODS_ROOT}/Headers/Public/Specta" 4 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/DACircularProgress" -isystem "${PODS_ROOT}/Headers/Public/Expecta" -isystem "${PODS_ROOT}/Headers/Public/Expecta+Snapshots" -isystem "${PODS_ROOT}/Headers/Public/FBSnapshotTestCase" -isystem "${PODS_ROOT}/Headers/Public/MBProgressHUD" -isystem "${PODS_ROOT}/Headers/Public/MWPhotoBrowser" -isystem "${PODS_ROOT}/Headers/Public/SDWebImage" -isystem "${PODS_ROOT}/Headers/Public/Specta" 5 | OTHER_LDFLAGS = $(inherited) -ObjC -l"DACircularProgress" -l"Expecta" -l"Expecta+Snapshots" -l"FBSnapshotTestCase" -l"MBProgressHUD" -l"MWPhotoBrowser" -l"SDWebImage" -l"Specta" -framework "AssetsLibrary" -framework "CoreGraphics" -framework "Foundation" -framework "ImageIO" -framework "MediaPlayer" -framework "QuartzCore" -framework "XCTest" -weak_framework "Photos" 6 | PODS_ROOT = ${SRCROOT}/Pods -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-MWPhotoBrowser_Tests/Pods-MWPhotoBrowser_Tests.release.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) $(inherited) $(DEVELOPER_FRAMEWORKS_DIR) "$(PLATFORM_DIR)/Developer/Library/Frameworks" "$(DEVELOPER_DIR)/Platforms/iPhoneSimulator.platform/Developer/Library/Frameworks" 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DACircularProgress" "${PODS_ROOT}/Headers/Public/Expecta" "${PODS_ROOT}/Headers/Public/Expecta+Snapshots" "${PODS_ROOT}/Headers/Public/FBSnapshotTestCase" "${PODS_ROOT}/Headers/Public/MBProgressHUD" "${PODS_ROOT}/Headers/Public/MWPhotoBrowser" "${PODS_ROOT}/Headers/Public/SDWebImage" "${PODS_ROOT}/Headers/Public/Specta" 4 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/DACircularProgress" -isystem "${PODS_ROOT}/Headers/Public/Expecta" -isystem "${PODS_ROOT}/Headers/Public/Expecta+Snapshots" -isystem "${PODS_ROOT}/Headers/Public/FBSnapshotTestCase" -isystem "${PODS_ROOT}/Headers/Public/MBProgressHUD" -isystem "${PODS_ROOT}/Headers/Public/MWPhotoBrowser" -isystem "${PODS_ROOT}/Headers/Public/SDWebImage" -isystem "${PODS_ROOT}/Headers/Public/Specta" 5 | OTHER_LDFLAGS = $(inherited) -ObjC -l"DACircularProgress" -l"Expecta" -l"Expecta+Snapshots" -l"FBSnapshotTestCase" -l"MBProgressHUD" -l"MWPhotoBrowser" -l"SDWebImage" -l"Specta" -framework "AssetsLibrary" -framework "CoreGraphics" -framework "Foundation" -framework "ImageIO" -framework "MediaPlayer" -framework "QuartzCore" -framework "XCTest" -weak_framework "Photos" 6 | PODS_ROOT = ${SRCROOT}/Pods -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/SDWebImage/SDWebImage-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_SDWebImage : NSObject 3 | @end 4 | @implementation PodsDummy_SDWebImage 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/SDWebImage/SDWebImage-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/SDWebImage/SDWebImage.xcconfig: -------------------------------------------------------------------------------- 1 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 2 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SDWebImage" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DACircularProgress" "${PODS_ROOT}/Headers/Public/Expecta" "${PODS_ROOT}/Headers/Public/Expecta+Snapshots" "${PODS_ROOT}/Headers/Public/FBSnapshotTestCase" "${PODS_ROOT}/Headers/Public/MBProgressHUD" "${PODS_ROOT}/Headers/Public/MWPhotoBrowser" "${PODS_ROOT}/Headers/Public/SDWebImage" "${PODS_ROOT}/Headers/Public/Specta" 3 | OTHER_LDFLAGS = -framework "ImageIO" 4 | PODS_ROOT = ${SRCROOT} 5 | SKIP_INSTALL = YES -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Specta/Specta-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Specta : NSObject 3 | @end 4 | @implementation PodsDummy_Specta 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Specta/Specta-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Specta/Specta.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$(PLATFORM_DIR)/Developer/Library/Frameworks" $(inherited) $(DEVELOPER_FRAMEWORKS_DIR) "$(PLATFORM_DIR)/Developer/Library/Frameworks" "$(DEVELOPER_DIR)/Platforms/iPhoneSimulator.platform/Developer/Library/Frameworks" 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Specta" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DACircularProgress" "${PODS_ROOT}/Headers/Public/Expecta" "${PODS_ROOT}/Headers/Public/Expecta+Snapshots" "${PODS_ROOT}/Headers/Public/FBSnapshotTestCase" "${PODS_ROOT}/Headers/Public/MBProgressHUD" "${PODS_ROOT}/Headers/Public/MWPhotoBrowser" "${PODS_ROOT}/Headers/Public/SDWebImage" "${PODS_ROOT}/Headers/Public/Specta" 4 | OTHER_LDFLAGS = -framework "Foundation" -framework "XCTest" 5 | PODS_ROOT = ${SRCROOT} 6 | SKIP_INSTALL = YES -------------------------------------------------------------------------------- /Example/Tests/Tests-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundlePackageType 14 | BNDL 15 | CFBundleShortVersionString 16 | 1.0 17 | CFBundleSignature 18 | ???? 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /Example/Tests/Tests-Prefix.pch: -------------------------------------------------------------------------------- 1 | // The contents of this file are implicitly included at the beginning of every test case source file. 2 | 3 | #ifdef __OBJC__ 4 | 5 | @import Specta; 6 | @import Expecta; 7 | @import FBSnapshotTestCase; 8 | @import Expecta_Snapshots; 9 | 10 | #endif 11 | -------------------------------------------------------------------------------- /Example/Tests/Tests.m: -------------------------------------------------------------------------------- 1 | // 2 | // MWPhotoBrowserTests.m 3 | // MWPhotoBrowserTests 4 | // 5 | // Created by Michael Waterfall on 07/04/2015. 6 | // Copyright (c) 2015 Michael Waterfall. All rights reserved. 7 | // 8 | 9 | // https://github.com/Specta/Specta 10 | 11 | SpecBegin(InitialSpecs) 12 | 13 | describe(@"these will fail", ^{ 14 | 15 | it(@"can do maths", ^{ 16 | expect(1).to.equal(2); 17 | }); 18 | 19 | it(@"can read", ^{ 20 | expect(@"number").to.equal(@"string"); 21 | }); 22 | 23 | it(@"will wait for 10 seconds and fail", ^{ 24 | waitUntil(^(DoneCallback done) { 25 | 26 | }); 27 | }); 28 | }); 29 | 30 | describe(@"these will pass", ^{ 31 | 32 | it(@"can do maths", ^{ 33 | expect(1).beLessThan(23); 34 | }); 35 | 36 | it(@"can read", ^{ 37 | expect(@"team").toNot.contain(@"I"); 38 | }); 39 | 40 | it(@"will wait and succeed", ^{ 41 | waitUntil(^(DoneCallback done) { 42 | done(); 43 | }); 44 | }); 45 | }); 46 | 47 | SpecEnd 48 | 49 | -------------------------------------------------------------------------------- /Example/Tests/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2010 Michael Waterfall 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /Pod/Assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Pod/Assets/.gitkeep -------------------------------------------------------------------------------- /Pod/Assets/ImageError.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Pod/Assets/ImageError.png -------------------------------------------------------------------------------- /Pod/Assets/ImageError@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Pod/Assets/ImageError@2x.png -------------------------------------------------------------------------------- /Pod/Assets/ImageError@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Pod/Assets/ImageError@3x.png -------------------------------------------------------------------------------- /Pod/Assets/ImageSelectedOff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Pod/Assets/ImageSelectedOff.png -------------------------------------------------------------------------------- /Pod/Assets/ImageSelectedOff@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Pod/Assets/ImageSelectedOff@2x.png -------------------------------------------------------------------------------- /Pod/Assets/ImageSelectedOff@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Pod/Assets/ImageSelectedOff@3x.png -------------------------------------------------------------------------------- /Pod/Assets/ImageSelectedOn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Pod/Assets/ImageSelectedOn.png -------------------------------------------------------------------------------- /Pod/Assets/ImageSelectedOn@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Pod/Assets/ImageSelectedOn@2x.png -------------------------------------------------------------------------------- /Pod/Assets/ImageSelectedOn@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Pod/Assets/ImageSelectedOn@3x.png -------------------------------------------------------------------------------- /Pod/Assets/ImageSelectedSmallOff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Pod/Assets/ImageSelectedSmallOff.png -------------------------------------------------------------------------------- /Pod/Assets/ImageSelectedSmallOff@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Pod/Assets/ImageSelectedSmallOff@2x.png -------------------------------------------------------------------------------- /Pod/Assets/ImageSelectedSmallOff@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Pod/Assets/ImageSelectedSmallOff@3x.png -------------------------------------------------------------------------------- /Pod/Assets/ImageSelectedSmallOn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Pod/Assets/ImageSelectedSmallOn.png -------------------------------------------------------------------------------- /Pod/Assets/ImageSelectedSmallOn@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Pod/Assets/ImageSelectedSmallOn@2x.png -------------------------------------------------------------------------------- /Pod/Assets/ImageSelectedSmallOn@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Pod/Assets/ImageSelectedSmallOn@3x.png -------------------------------------------------------------------------------- /Pod/Assets/PlayButtonOverlayLarge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Pod/Assets/PlayButtonOverlayLarge.png -------------------------------------------------------------------------------- /Pod/Assets/PlayButtonOverlayLarge@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Pod/Assets/PlayButtonOverlayLarge@2x.png -------------------------------------------------------------------------------- /Pod/Assets/PlayButtonOverlayLarge@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Pod/Assets/PlayButtonOverlayLarge@3x.png -------------------------------------------------------------------------------- /Pod/Assets/PlayButtonOverlayLargeTap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Pod/Assets/PlayButtonOverlayLargeTap.png -------------------------------------------------------------------------------- /Pod/Assets/PlayButtonOverlayLargeTap@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Pod/Assets/PlayButtonOverlayLargeTap@2x.png -------------------------------------------------------------------------------- /Pod/Assets/PlayButtonOverlayLargeTap@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Pod/Assets/PlayButtonOverlayLargeTap@3x.png -------------------------------------------------------------------------------- /Pod/Assets/UIBarButtonItemArrowLeft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Pod/Assets/UIBarButtonItemArrowLeft.png -------------------------------------------------------------------------------- /Pod/Assets/UIBarButtonItemArrowLeft@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Pod/Assets/UIBarButtonItemArrowLeft@2x.png -------------------------------------------------------------------------------- /Pod/Assets/UIBarButtonItemArrowLeft@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Pod/Assets/UIBarButtonItemArrowLeft@3x.png -------------------------------------------------------------------------------- /Pod/Assets/UIBarButtonItemArrowRight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Pod/Assets/UIBarButtonItemArrowRight.png -------------------------------------------------------------------------------- /Pod/Assets/UIBarButtonItemArrowRight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Pod/Assets/UIBarButtonItemArrowRight@2x.png -------------------------------------------------------------------------------- /Pod/Assets/UIBarButtonItemArrowRight@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Pod/Assets/UIBarButtonItemArrowRight@3x.png -------------------------------------------------------------------------------- /Pod/Assets/UIBarButtonItemGrid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Pod/Assets/UIBarButtonItemGrid.png -------------------------------------------------------------------------------- /Pod/Assets/UIBarButtonItemGrid@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Pod/Assets/UIBarButtonItemGrid@2x.png -------------------------------------------------------------------------------- /Pod/Assets/UIBarButtonItemGrid@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Pod/Assets/UIBarButtonItemGrid@3x.png -------------------------------------------------------------------------------- /Pod/Assets/VideoOverlay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Pod/Assets/VideoOverlay.png -------------------------------------------------------------------------------- /Pod/Assets/VideoOverlay@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Pod/Assets/VideoOverlay@2x.png -------------------------------------------------------------------------------- /Pod/Assets/VideoOverlay@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Pod/Assets/VideoOverlay@3x.png -------------------------------------------------------------------------------- /Pod/Classes/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Pod/Classes/.gitkeep -------------------------------------------------------------------------------- /Pod/Classes/MWCaptionView.h: -------------------------------------------------------------------------------- 1 | // 2 | // MWCaptionView.h 3 | // MWPhotoBrowser 4 | // 5 | // Created by Michael Waterfall on 30/12/2011. 6 | // Copyright (c) 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "MWPhotoProtocol.h" 11 | 12 | @interface MWCaptionView : UIToolbar 13 | 14 | // Init 15 | - (id)initWithPhoto:(id)photo; 16 | 17 | // To create your own custom caption view, subclass this view 18 | // and override the following two methods (as well as any other 19 | // UIView methods that you see fit): 20 | 21 | // Override -setupCaption so setup your subviews and customise the appearance 22 | // of your custom caption 23 | // You can access the photo's data by accessing the _photo ivar 24 | // If you need more data per photo then simply subclass MWPhoto and return your 25 | // subclass to the photo browsers -photoBrowser:photoAtIndex: delegate method 26 | - (void)setupCaption; 27 | 28 | // Override -sizeThatFits: and return a CGSize specifying the height of your 29 | // custom caption view. With width property is ignored and the caption is displayed 30 | // the full width of the screen 31 | - (CGSize)sizeThatFits:(CGSize)size; 32 | 33 | @end 34 | -------------------------------------------------------------------------------- /Pod/Classes/MWCommon.h: -------------------------------------------------------------------------------- 1 | // 2 | // MWPreprocessor.h 3 | // MWPhotoBrowser 4 | // 5 | // Created by Michael Waterfall on 01/10/2013. 6 | // 7 | 8 | #define SYSTEM_VERSION_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame) 9 | #define SYSTEM_VERSION_GREATER_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending) 10 | #define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending) 11 | #define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending) 12 | #define SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedDescending) 13 | -------------------------------------------------------------------------------- /Pod/Classes/MWGridCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // MWGridCell.h 3 | // MWPhotoBrowser 4 | // 5 | // Created by Michael Waterfall on 08/10/2013. 6 | // 7 | // 8 | 9 | #import 10 | #import "MWPhoto.h" 11 | #import "MWGridViewController.h" 12 | 13 | @interface MWGridCell : UICollectionViewCell {} 14 | 15 | @property (nonatomic, weak) MWGridViewController *gridController; 16 | @property (nonatomic) NSUInteger index; 17 | @property (nonatomic) id photo; 18 | @property (nonatomic) BOOL selectionMode; 19 | @property (nonatomic) BOOL isSelected; 20 | 21 | - (void)displayImage; 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /Pod/Classes/MWGridViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // MWGridViewController.h 3 | // MWPhotoBrowser 4 | // 5 | // Created by Michael Waterfall on 08/10/2013. 6 | // 7 | // 8 | 9 | #import 10 | #import "MWPhotoBrowser.h" 11 | 12 | @interface MWGridViewController : UICollectionViewController {} 13 | 14 | @property (nonatomic, assign) MWPhotoBrowser *browser; 15 | @property (nonatomic) BOOL selectionMode; 16 | @property (nonatomic) CGPoint initialContentOffset; 17 | 18 | - (void)adjustOffsetsAsRequired; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Pod/Classes/MWPhoto.h: -------------------------------------------------------------------------------- 1 | // 2 | // MWPhoto.h 3 | // MWPhotoBrowser 4 | // 5 | // Created by Michael Waterfall on 17/10/2010. 6 | // Copyright 2010 d3i. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "MWPhotoProtocol.h" 12 | 13 | // This class models a photo/image and it's caption 14 | // If you want to handle photos, caching, decompression 15 | // yourself then you can simply ensure your custom data model 16 | // conforms to MWPhotoProtocol 17 | @interface MWPhoto : NSObject 18 | 19 | @property (nonatomic, strong) NSString *caption; 20 | @property (nonatomic, strong) NSURL *videoURL; 21 | @property (nonatomic) BOOL emptyImage; 22 | @property (nonatomic) BOOL isVideo; 23 | 24 | + (MWPhoto *)photoWithImage:(UIImage *)image; 25 | + (MWPhoto *)photoWithURL:(NSURL *)url; 26 | + (MWPhoto *)photoWithAsset:(PHAsset *)asset targetSize:(CGSize)targetSize; 27 | + (MWPhoto *)videoWithURL:(NSURL *)url; // Initialise video with no poster image 28 | 29 | - (id)init; 30 | - (id)initWithImage:(UIImage *)image; 31 | - (id)initWithURL:(NSURL *)url; 32 | - (id)initWithAsset:(PHAsset *)asset targetSize:(CGSize)targetSize; 33 | - (id)initWithVideoURL:(NSURL *)url; 34 | 35 | @end 36 | 37 | -------------------------------------------------------------------------------- /Pod/Classes/MWTapDetectingImageView.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImageViewTap.h 3 | // Momento 4 | // 5 | // Created by Michael Waterfall on 04/11/2009. 6 | // Copyright 2009 d3i. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @protocol MWTapDetectingImageViewDelegate; 12 | 13 | @interface MWTapDetectingImageView : UIImageView {} 14 | 15 | @property (nonatomic, weak) id tapDelegate; 16 | 17 | @end 18 | 19 | @protocol MWTapDetectingImageViewDelegate 20 | 21 | @optional 22 | 23 | - (void)imageView:(UIImageView *)imageView singleTapDetected:(UITouch *)touch; 24 | - (void)imageView:(UIImageView *)imageView doubleTapDetected:(UITouch *)touch; 25 | - (void)imageView:(UIImageView *)imageView tripleTapDetected:(UITouch *)touch; 26 | 27 | @end -------------------------------------------------------------------------------- /Pod/Classes/MWTapDetectingImageView.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIImageViewTap.m 3 | // Momento 4 | // 5 | // Created by Michael Waterfall on 04/11/2009. 6 | // Copyright 2009 d3i. All rights reserved. 7 | // 8 | 9 | #import "MWTapDetectingImageView.h" 10 | 11 | @implementation MWTapDetectingImageView 12 | 13 | - (id)initWithFrame:(CGRect)frame { 14 | if ((self = [super initWithFrame:frame])) { 15 | self.userInteractionEnabled = YES; 16 | } 17 | return self; 18 | } 19 | 20 | - (id)initWithImage:(UIImage *)image { 21 | if ((self = [super initWithImage:image])) { 22 | self.userInteractionEnabled = YES; 23 | } 24 | return self; 25 | } 26 | 27 | - (id)initWithImage:(UIImage *)image highlightedImage:(UIImage *)highlightedImage { 28 | if ((self = [super initWithImage:image highlightedImage:highlightedImage])) { 29 | self.userInteractionEnabled = YES; 30 | } 31 | return self; 32 | } 33 | 34 | - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 35 | UITouch *touch = [touches anyObject]; 36 | NSUInteger tapCount = touch.tapCount; 37 | switch (tapCount) { 38 | case 1: 39 | [self handleSingleTap:touch]; 40 | break; 41 | case 2: 42 | [self handleDoubleTap:touch]; 43 | break; 44 | case 3: 45 | [self handleTripleTap:touch]; 46 | break; 47 | default: 48 | break; 49 | } 50 | [[self nextResponder] touchesEnded:touches withEvent:event]; 51 | } 52 | 53 | - (void)handleSingleTap:(UITouch *)touch { 54 | if ([_tapDelegate respondsToSelector:@selector(imageView:singleTapDetected:)]) 55 | [_tapDelegate imageView:self singleTapDetected:touch]; 56 | } 57 | 58 | - (void)handleDoubleTap:(UITouch *)touch { 59 | if ([_tapDelegate respondsToSelector:@selector(imageView:doubleTapDetected:)]) 60 | [_tapDelegate imageView:self doubleTapDetected:touch]; 61 | } 62 | 63 | - (void)handleTripleTap:(UITouch *)touch { 64 | if ([_tapDelegate respondsToSelector:@selector(imageView:tripleTapDetected:)]) 65 | [_tapDelegate imageView:self tripleTapDetected:touch]; 66 | } 67 | 68 | @end 69 | -------------------------------------------------------------------------------- /Pod/Classes/MWTapDetectingView.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewTap.h 3 | // Momento 4 | // 5 | // Created by Michael Waterfall on 04/11/2009. 6 | // Copyright 2009 d3i. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @protocol MWTapDetectingViewDelegate; 12 | 13 | @interface MWTapDetectingView : UIView {} 14 | 15 | @property (nonatomic, weak) id tapDelegate; 16 | 17 | @end 18 | 19 | @protocol MWTapDetectingViewDelegate 20 | 21 | @optional 22 | 23 | - (void)view:(UIView *)view singleTapDetected:(UITouch *)touch; 24 | - (void)view:(UIView *)view doubleTapDetected:(UITouch *)touch; 25 | - (void)view:(UIView *)view tripleTapDetected:(UITouch *)touch; 26 | 27 | @end -------------------------------------------------------------------------------- /Pod/Classes/MWTapDetectingView.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewTap.m 3 | // Momento 4 | // 5 | // Created by Michael Waterfall on 04/11/2009. 6 | // Copyright 2009 d3i. All rights reserved. 7 | // 8 | 9 | #import "MWTapDetectingView.h" 10 | 11 | @implementation MWTapDetectingView 12 | 13 | - (id)init { 14 | if ((self = [super init])) { 15 | self.userInteractionEnabled = YES; 16 | } 17 | return self; 18 | } 19 | 20 | - (id)initWithFrame:(CGRect)frame { 21 | if ((self = [super initWithFrame:frame])) { 22 | self.userInteractionEnabled = YES; 23 | } 24 | return self; 25 | } 26 | 27 | - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 28 | UITouch *touch = [touches anyObject]; 29 | NSUInteger tapCount = touch.tapCount; 30 | switch (tapCount) { 31 | case 1: 32 | [self handleSingleTap:touch]; 33 | break; 34 | case 2: 35 | [self handleDoubleTap:touch]; 36 | break; 37 | case 3: 38 | [self handleTripleTap:touch]; 39 | break; 40 | default: 41 | break; 42 | } 43 | [[self nextResponder] touchesEnded:touches withEvent:event]; 44 | } 45 | 46 | - (void)handleSingleTap:(UITouch *)touch { 47 | if ([_tapDelegate respondsToSelector:@selector(view:singleTapDetected:)]) 48 | [_tapDelegate view:self singleTapDetected:touch]; 49 | } 50 | 51 | - (void)handleDoubleTap:(UITouch *)touch { 52 | if ([_tapDelegate respondsToSelector:@selector(view:doubleTapDetected:)]) 53 | [_tapDelegate view:self doubleTapDetected:touch]; 54 | } 55 | 56 | - (void)handleTripleTap:(UITouch *)touch { 57 | if ([_tapDelegate respondsToSelector:@selector(view:tripleTapDetected:)]) 58 | [_tapDelegate view:self tripleTapDetected:touch]; 59 | } 60 | 61 | @end 62 | -------------------------------------------------------------------------------- /Pod/Classes/MWZoomingScrollView.h: -------------------------------------------------------------------------------- 1 | // 2 | // ZoomingScrollView.h 3 | // MWPhotoBrowser 4 | // 5 | // Created by Michael Waterfall on 14/10/2010. 6 | // Copyright 2010 d3i. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "MWPhotoProtocol.h" 11 | #import "MWTapDetectingImageView.h" 12 | #import "MWTapDetectingView.h" 13 | 14 | @class MWPhotoBrowser, MWPhoto, MWCaptionView; 15 | 16 | @interface MWZoomingScrollView : UIScrollView { 17 | 18 | } 19 | 20 | @property () NSUInteger index; 21 | @property (nonatomic) id photo; 22 | @property (nonatomic, weak) MWCaptionView *captionView; 23 | @property (nonatomic, weak) UIButton *selectedButton; 24 | @property (nonatomic, weak) UIButton *playButton; 25 | 26 | - (id)initWithPhotoBrowser:(MWPhotoBrowser *)browser; 27 | - (void)displayImage; 28 | - (void)displayImageFailure; 29 | - (void)setMaxMinZoomScalesForCurrentBounds; 30 | - (void)prepareForReuse; 31 | - (BOOL)displayingVideo; 32 | - (void)setImageHidden:(BOOL)hidden; 33 | 34 | @end 35 | -------------------------------------------------------------------------------- /Pod/Classes/UIImage+MWPhotoBrowser.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+MWPhotoBrowser.h 3 | // Pods 4 | // 5 | // Created by Michael Waterfall on 05/07/2015. 6 | // 7 | // 8 | 9 | #import 10 | 11 | @interface UIImage (MWPhotoBrowser) 12 | 13 | + (UIImage *)imageForResourcePath:(NSString *)path ofType:(NSString *)type inBundle:(NSBundle *)bundle; 14 | + (UIImage *)clearImageWithSize:(CGSize)size; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Pod/Classes/UIImage+MWPhotoBrowser.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+MWPhotoBrowser.m 3 | // Pods 4 | // 5 | // Created by Michael Waterfall on 05/07/2015. 6 | // 7 | // 8 | 9 | #import "UIImage+MWPhotoBrowser.h" 10 | 11 | @implementation UIImage (MWPhotoBrowser) 12 | 13 | + (UIImage *)imageForResourcePath:(NSString *)path ofType:(NSString *)type inBundle:(NSBundle *)bundle { 14 | return [UIImage imageWithContentsOfFile:[bundle pathForResource:path ofType:type]]; 15 | } 16 | 17 | + (UIImage *)clearImageWithSize:(CGSize)size { 18 | UIGraphicsBeginImageContextWithOptions(size, NO, [UIScreen mainScreen].scale); 19 | UIImage *blank = UIGraphicsGetImageFromCurrentImageContext(); 20 | UIGraphicsEndImageContext(); 21 | return blank; 22 | } 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /Screenshots/MWPhotoBrowser1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Screenshots/MWPhotoBrowser1.png -------------------------------------------------------------------------------- /Screenshots/MWPhotoBrowser1t.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Screenshots/MWPhotoBrowser1t.png -------------------------------------------------------------------------------- /Screenshots/MWPhotoBrowser2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Screenshots/MWPhotoBrowser2.png -------------------------------------------------------------------------------- /Screenshots/MWPhotoBrowser2t.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Screenshots/MWPhotoBrowser2t.png -------------------------------------------------------------------------------- /Screenshots/MWPhotoBrowser3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Screenshots/MWPhotoBrowser3.png -------------------------------------------------------------------------------- /Screenshots/MWPhotoBrowser3t.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Screenshots/MWPhotoBrowser3t.png -------------------------------------------------------------------------------- /Screenshots/MWPhotoBrowser4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Screenshots/MWPhotoBrowser4.png -------------------------------------------------------------------------------- /Screenshots/MWPhotoBrowser4t.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Screenshots/MWPhotoBrowser4t.png -------------------------------------------------------------------------------- /Screenshots/MWPhotoBrowser5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Screenshots/MWPhotoBrowser5.png -------------------------------------------------------------------------------- /Screenshots/MWPhotoBrowser5t.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Screenshots/MWPhotoBrowser5t.png -------------------------------------------------------------------------------- /Screenshots/MWPhotoBrowser6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Screenshots/MWPhotoBrowser6.png -------------------------------------------------------------------------------- /Screenshots/MWPhotoBrowser6t.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwaterfall/MWPhotoBrowser/66ddd73859978a9c24c6ce014634f3bde351e917/Screenshots/MWPhotoBrowser6t.png -------------------------------------------------------------------------------- /_Pods.xcodeproj: -------------------------------------------------------------------------------- 1 | Example/Pods/Pods.xcodeproj --------------------------------------------------------------------------------