diff --git a/.gitignore b/.gitignore index 0a9eca0d..dfbbf7ad 100644 --- a/.gitignore +++ b/.gitignore @@ -33,3 +33,4 @@ DerivedData # # Pods/ .idea +/Tests/FailureDiffs diff --git a/.swift-version b/.swift-version index bf77d549..7ed6ff82 100644 --- a/.swift-version +++ b/.swift-version @@ -1 +1 @@ -4.2 +5 diff --git a/.travis.yml b/.travis.yml index cfe015f2..adacef74 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,19 +1,17 @@ language: objective-c -osx_image: xcode10 +osx_image: xcode10.2 env: global: - WORKSPACE=Example/PopupDialog.xcworkspace - IOS_FRAMEWORK_SCHEME="PopupDialog-Example" - - IOS_SDK=iphonesimulator12.0 - - EXAMPLE_SCHEME="PopupDialog-Example" + - IOS_SDK=iphonesimulator12.2 matrix: - - DESTINATION="OS=11.1,name=iPhone 7 Plus" SIMNAME="com.apple.CoreSimulator.SimDeviceType.iPhone-7-Plus, 11.1" SCHEME="$IOS_FRAMEWORK_SCHEME" SDK="$IOS_SDK" RUN_TESTS="YES" BUILD_EXAMPLE="YES" POD_LINT="YES" - - DESTINATION="OS=10.2,name=iPhone 6" SIMNAME="com.apple.CoreSimulator.SimDeviceType.iPhone-6, 10.2" SCHEME="$IOS_FRAMEWORK_SCHEME" SDK="$IOS_SDK" RUN_TESTS="YES" BUILD_EXAMPLE="YES" POD_LINT="NO" - - DESTINATION="OS=9.2,name=iPhone 5s" SIMNAME="com.apple.CoreSimulator.SimDeviceType.iPhone-5s, 9.2" SCHEME="$IOS_FRAMEWORK_SCHEME" SDK="$IOS_SDK" RUN_TESTS="YES" BUILD_EXAMPLE="YES" POD_LINT="NO" - - DESTINATION="OS=11.1,name=iPad Air 2" SIMNAME="com.apple.CoreSimulator.SimDeviceType.iPad-Air-2, 11.1" SCHEME="$IOS_FRAMEWORK_SCHEME" SDK="$IOS_SDK" RUN_TESTS="YES" BUILD_EXAMPLE="YES" POD_LINT="NO" + - DESTINATION="OS=12.2,name=iPhone Xʀ" SIMNAME="com.apple.CoreSimulator.SimDeviceType.iPhone-Xʀ, 12.2" SCHEME="$IOS_FRAMEWORK_SCHEME" SDK="$IOS_SDK" POD_LINT="YES" + - DESTINATION="OS=10.2,name=iPhone 6" SIMNAME="com.apple.CoreSimulator.SimDeviceType.iPhone-6, 10.2" SCHEME="$IOS_FRAMEWORK_SCHEME" SDK="$IOS_SDK" POD_LINT="NO" + - DESTINATION="OS=11.1,name=iPad Air 2" SIMNAME="com.apple.CoreSimulator.SimDeviceType.iPad-Air-2, 11.1" SCHEME="$IOS_FRAMEWORK_SCHEME" SDK="$IOS_SDK" POD_LINT="NO" before_install: - npm install ios-sim -g - - gem install cocoapods --no-rdoc --no-ri --no-document --quiet + - gem install cocoapods --no-document --quiet - pod install --project-directory=./Example --repo-update script: - set -o pipefail @@ -22,26 +20,10 @@ script: - xcrun simctl list # "Prewarm" simulators as of https://github.com/travis-ci/travis-ci/issues/6675 - - ios-sim start --devicetypeid "$SIMNAME" + # - ios-sim start --devicetypeid "$SIMNAME" - # Build Framework in Debug and Run Tests if specified - - if [ $RUN_TESTS == "YES" ]; then - xcodebuild -workspace "$WORKSPACE" -scheme "$SCHEME" -sdk "$SDK" -destination "$DESTINATION" -configuration Debug ONLY_ACTIVE_ARCH=NO ENABLE_TESTABILITY=YES test | xcpretty -c; - else - xcodebuild -workspace "$WORKSPACE" -scheme "$SCHEME" -sdk "$SDK" -destination "$DESTINATION" -configuration Debug ONLY_ACTIVE_ARCH=NO build | xcpretty -c; - fi - - # Build Framework in Release and Run Tests if specified - - if [ $RUN_TESTS == "YES" ]; then - xcodebuild -workspace "$WORKSPACE" -scheme "$SCHEME" -sdk "$SDK" -destination "$DESTINATION" -configuration Release ONLY_ACTIVE_ARCH=NO ENABLE_TESTABILITY=YES test | xcpretty -c; - else - xcodebuild -workspace "$WORKSPACE" -scheme "$SCHEME" -sdk "$SDK" -destination "$DESTINATION" -configuration Release ONLY_ACTIVE_ARCH=NO build | xcpretty -c; - fi - - # Build Example in Debug if specified - - if [ $BUILD_EXAMPLE == "YES" ]; then - xcodebuild -workspace "$WORKSPACE" -scheme "$EXAMPLE_SCHEME" -sdk "$SDK" -destination "$DESTINATION" -configuration Debug ONLY_ACTIVE_ARCH=NO build | xcpretty -c; - fi + # Build Framework in Debug and run tests + - xcodebuild -workspace "$WORKSPACE" -scheme "$SCHEME" -sdk "$SDK" -destination "$DESTINATION" -configuration Debug ONLY_ACTIVE_ARCH=NO ENABLE_TESTABILITY=YES test | xcpretty -c; # Run `pod lib lint` if specified - if [ $POD_LINT == "YES" ]; then diff --git a/CHANGELOG.md b/CHANGELOG.md index 81c00597..ab984c19 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ # Changelog - +* **1.1.0** Swift 5 support +* **1.0.0** Pinned Swift version to 4.2
Dropped iOS 9 support as of moving to ios-snapshot-test-case * **0.9.2** Fixes crash when presenting dialog while app is inactive * **0.9.1** Fixes Carthage support * **0.9.0** Swift 4.2 support diff --git a/Example/Podfile b/Example/Podfile index 82c944c2..6be75aac 100644 --- a/Example/Podfile +++ b/Example/Podfile @@ -1,4 +1,4 @@ -platform :ios, '9.0' +platform :ios, '10.0' use_frameworks! ENV['COCOAPODS_DISABLE_STATS'] = "true" ## This disabled the Sending Stats when running Pod install in terminal @@ -12,7 +12,7 @@ target 'PopupDialog_Example' do inherit! :search_paths pod 'Nimble', '~> 7.3.1' - pod 'FBSnapshotTestCase', '~> 2.1.4' + pod 'iOSSnapshotTestCase', '~> 6.0.2' end end diff --git a/Example/Podfile.lock b/Example/Podfile.lock index 58e41b58..dae79920 100644 --- a/Example/Podfile.lock +++ b/Example/Podfile.lock @@ -1,17 +1,17 @@ PODS: - DynamicBlurView (3.0.1) - - FBSnapshotTestCase (2.1.4): - - FBSnapshotTestCase/SwiftSupport (= 2.1.4) - - FBSnapshotTestCase/Core (2.1.4) - - FBSnapshotTestCase/SwiftSupport (2.1.4): - - FBSnapshotTestCase/Core - - Nimble (7.3.1) - - PopupDialog (0.9.2): + - iOSSnapshotTestCase (6.0.2): + - iOSSnapshotTestCase/SwiftSupport (= 6.0.2) + - iOSSnapshotTestCase/Core (6.0.2) + - iOSSnapshotTestCase/SwiftSupport (6.0.2): + - iOSSnapshotTestCase/Core + - Nimble (7.3.4) + - PopupDialog (1.1.0): - DynamicBlurView (~> 3.0.1) - - SwiftLint (0.29.1) + - SwiftLint (0.31.0) DEPENDENCIES: - - FBSnapshotTestCase (~> 2.1.4) + - iOSSnapshotTestCase (~> 6.0.2) - Nimble (~> 7.3.1) - PopupDialog (from `../`) - SwiftLint (~> 0.22) @@ -19,7 +19,7 @@ DEPENDENCIES: SPEC REPOS: https://github.com/cocoapods/specs.git: - DynamicBlurView - - FBSnapshotTestCase + - iOSSnapshotTestCase - Nimble - SwiftLint @@ -29,11 +29,11 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: DynamicBlurView: b1df5415f9bd31897549e5d7077e5ec120a4d636 - FBSnapshotTestCase: 094f9f314decbabe373b87cc339bea235a63e07a - Nimble: 04f732da099ea4d153122aec8c2a88fd0c7219ae - PopupDialog: f4bb461bf70ff422be0b56656566424ee9273080 - SwiftLint: 6772320e40b52049053a518c17db9b0634a0b45a + iOSSnapshotTestCase: 20083a7be9b8ef742610e16c79f15ad829441f29 + Nimble: 051e3d8912d40138fa5591c78594f95fb172af37 + PopupDialog: 42fb7a0bc4fafdf89fef8b5b2b127a6023f3e1cc + SwiftLint: 7a0227733d786395817373b2d0ca799fd0093ff3 -PODFILE CHECKSUM: 2d0166d1e20a1e39377fb316142d39a3785d58f2 +PODFILE CHECKSUM: 745b14824f525113e600d7bfeeb81d4a978d6f28 -COCOAPODS: 1.7.2 +COCOAPODS: 1.6.1 diff --git a/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIApplication+StrictKeyWindow.h b/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIApplication+StrictKeyWindow.h deleted file mode 100644 index eefe11ba..00000000 --- a/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIApplication+StrictKeyWindow.h +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright (c) 2015, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -#import - -@interface UIApplication (StrictKeyWindow) - -/** - @return The receiver's @c keyWindow. Raises an assertion if @c nil. - */ -- (UIWindow *)fb_strictKeyWindow; - -@end diff --git a/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIApplication+StrictKeyWindow.m b/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIApplication+StrictKeyWindow.m deleted file mode 100644 index 0f7a0c25..00000000 --- a/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIApplication+StrictKeyWindow.m +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright (c) 2015, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -#import - -@implementation UIApplication (StrictKeyWindow) - -- (UIWindow *)fb_strictKeyWindow -{ - UIWindow *keyWindow = [UIApplication sharedApplication].keyWindow; - if (!keyWindow) { - [NSException raise:@"FBSnapshotTestCaseNilKeyWindowException" - format:@"Snapshot tests must be hosted by an application with a key window. Please ensure your test" - " host sets up a key window at launch (either via storyboards or programmatically) and doesn't" - " do anything to remove it while snapshot tests are running."]; - } - return keyWindow; -} - -@end diff --git a/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Compare.m b/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Compare.m deleted file mode 100644 index c997f578..00000000 --- a/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Compare.m +++ /dev/null @@ -1,134 +0,0 @@ -// -// Created by Gabriel Handford on 3/1/09. -// Copyright 2009-2013. All rights reserved. -// Created by John Boiles on 10/20/11. -// Copyright (c) 2011. All rights reserved -// Modified by Felix Schulze on 2/11/13. -// Copyright 2013. All rights reserved. -// -// Permission is hereby granted, free of charge, to any person -// obtaining a copy of this software and associated documentation -// files (the "Software"), to deal in the Software without -// restriction, including without limitation the rights to use, -// copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the -// Software is furnished to do so, subject to the following -// conditions: -// -// The above copyright notice and this permission notice shall be -// included in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -// OTHER DEALINGS IN THE SOFTWARE. -// - -#import - -// This makes debugging much more fun -typedef union { - uint32_t raw; - unsigned char bytes[4]; - struct { - char red; - char green; - char blue; - char alpha; - } __attribute__ ((packed)) pixels; -} FBComparePixel; - -@implementation UIImage (Compare) - -- (BOOL)fb_compareWithImage:(UIImage *)image tolerance:(CGFloat)tolerance -{ - NSAssert(CGSizeEqualToSize(self.size, image.size), @"Images must be same size."); - - CGSize referenceImageSize = CGSizeMake(CGImageGetWidth(self.CGImage), CGImageGetHeight(self.CGImage)); - CGSize imageSize = CGSizeMake(CGImageGetWidth(image.CGImage), CGImageGetHeight(image.CGImage)); - - // The images have the equal size, so we could use the smallest amount of bytes because of byte padding - size_t minBytesPerRow = MIN(CGImageGetBytesPerRow(self.CGImage), CGImageGetBytesPerRow(image.CGImage)); - size_t referenceImageSizeBytes = referenceImageSize.height * minBytesPerRow; - void *referenceImagePixels = calloc(1, referenceImageSizeBytes); - void *imagePixels = calloc(1, referenceImageSizeBytes); - - if (!referenceImagePixels || !imagePixels) { - free(referenceImagePixels); - free(imagePixels); - return NO; - } - - CGContextRef referenceImageContext = CGBitmapContextCreate(referenceImagePixels, - referenceImageSize.width, - referenceImageSize.height, - CGImageGetBitsPerComponent(self.CGImage), - minBytesPerRow, - CGImageGetColorSpace(self.CGImage), - (CGBitmapInfo)kCGImageAlphaPremultipliedLast - ); - CGContextRef imageContext = CGBitmapContextCreate(imagePixels, - imageSize.width, - imageSize.height, - CGImageGetBitsPerComponent(image.CGImage), - minBytesPerRow, - CGImageGetColorSpace(image.CGImage), - (CGBitmapInfo)kCGImageAlphaPremultipliedLast - ); - - if (!referenceImageContext || !imageContext) { - CGContextRelease(referenceImageContext); - CGContextRelease(imageContext); - free(referenceImagePixels); - free(imagePixels); - return NO; - } - - CGContextDrawImage(referenceImageContext, CGRectMake(0, 0, referenceImageSize.width, referenceImageSize.height), self.CGImage); - CGContextDrawImage(imageContext, CGRectMake(0, 0, imageSize.width, imageSize.height), image.CGImage); - - CGContextRelease(referenceImageContext); - CGContextRelease(imageContext); - - BOOL imageEqual = YES; - - // Do a fast compare if we can - if (tolerance == 0) { - imageEqual = (memcmp(referenceImagePixels, imagePixels, referenceImageSizeBytes) == 0); - } else { - // Go through each pixel in turn and see if it is different - const NSInteger pixelCount = referenceImageSize.width * referenceImageSize.height; - - FBComparePixel *p1 = referenceImagePixels; - FBComparePixel *p2 = imagePixels; - - NSInteger numDiffPixels = 0; - for (int n = 0; n < pixelCount; ++n) { - // If this pixel is different, increment the pixel diff count and see - // if we have hit our limit. - if (p1->raw != p2->raw) { - numDiffPixels ++; - - CGFloat percent = (CGFloat)numDiffPixels / pixelCount; - if (percent > tolerance) { - imageEqual = NO; - break; - } - } - - p1++; - p2++; - } - } - - free(referenceImagePixels); - free(imagePixels); - - return imageEqual; -} - -@end diff --git a/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Snapshot.h b/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Snapshot.h deleted file mode 100644 index b0d5b26b..00000000 --- a/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Snapshot.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright (c) 2015, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -#import - -@interface UIImage (Snapshot) - -/// Uses renderInContext: to get a snapshot of the layer. -+ (UIImage *)fb_imageForLayer:(CALayer *)layer; - -/// Uses renderInContext: to get a snapshot of the view layer. -+ (UIImage *)fb_imageForViewLayer:(UIView *)view; - -/// Uses drawViewHierarchyInRect: to get a snapshot of the view and adds the view into a window if needed. -+ (UIImage *)fb_imageForView:(UIView *)view; - -@end diff --git a/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Snapshot.m b/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Snapshot.m deleted file mode 100644 index 968091b9..00000000 --- a/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Snapshot.m +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (c) 2015, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -#import -#import - -@implementation UIImage (Snapshot) - -+ (UIImage *)fb_imageForLayer:(CALayer *)layer -{ - CGRect bounds = layer.bounds; - NSAssert1(CGRectGetWidth(bounds), @"Zero width for layer %@", layer); - NSAssert1(CGRectGetHeight(bounds), @"Zero height for layer %@", layer); - - UIGraphicsBeginImageContextWithOptions(bounds.size, NO, 0); - CGContextRef context = UIGraphicsGetCurrentContext(); - NSAssert1(context, @"Could not generate context for layer %@", layer); - CGContextSaveGState(context); - [layer layoutIfNeeded]; - [layer renderInContext:context]; - CGContextRestoreGState(context); - - UIImage *snapshot = UIGraphicsGetImageFromCurrentImageContext(); - UIGraphicsEndImageContext(); - return snapshot; -} - -+ (UIImage *)fb_imageForViewLayer:(UIView *)view -{ - [view layoutIfNeeded]; - return [self fb_imageForLayer:view.layer]; -} - -+ (UIImage *)fb_imageForView:(UIView *)view -{ - CGRect bounds = view.bounds; - NSAssert1(CGRectGetWidth(bounds), @"Zero width for view %@", view); - NSAssert1(CGRectGetHeight(bounds), @"Zero height for view %@", view); - - // If the input view is already a UIWindow, then just use that. Otherwise wrap in a window. - UIWindow *window = [view isKindOfClass:[UIWindow class]] ? (UIWindow *)view : view.window; - BOOL removeFromSuperview = NO; - if (!window) { - window = [[UIApplication sharedApplication] fb_strictKeyWindow]; - } - - if (!view.window && view != window) { - [window addSubview:view]; - removeFromSuperview = YES; - } - - UIGraphicsBeginImageContextWithOptions(bounds.size, NO, 0); - [view layoutIfNeeded]; - [view drawViewHierarchyInRect:view.bounds afterScreenUpdates:YES]; - - UIImage *snapshot = UIGraphicsGetImageFromCurrentImageContext(); - UIGraphicsEndImageContext(); - - if (removeFromSuperview) { - [view removeFromSuperview]; - } - - return snapshot; -} - -@end diff --git a/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCase.h b/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCase.h deleted file mode 100644 index 6438c5c7..00000000 --- a/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCase.h +++ /dev/null @@ -1,182 +0,0 @@ -/* - * Copyright (c) 2015, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -#import -#import - -#import - -#import - -#import - -/* - There are three ways of setting reference image directories. - - 1. Set the preprocessor macro FB_REFERENCE_IMAGE_DIR to a double quoted - c-string with the path. - 2. Set an environment variable named FB_REFERENCE_IMAGE_DIR with the path. This - takes precedence over the preprocessor macro to allow for run-time override. - 3. Keep everything unset, which will cause the reference images to be looked up - inside the bundle holding the current test, in the - Resources/ReferenceImages_* directories. - */ -#ifndef FB_REFERENCE_IMAGE_DIR -#define FB_REFERENCE_IMAGE_DIR "" -#endif - -/** - Similar to our much-loved XCTAssert() macros. Use this to perform your test. No need to write an explanation, though. - @param view The view to snapshot - @param identifier An optional identifier, used if there are multiple snapshot tests in a given -test method. - @param suffixes An NSOrderedSet of strings for the different suffixes - @param tolerance The percentage of pixels that can differ and still count as an 'identical' view - */ -#define FBSnapshotVerifyViewWithOptions(view__, identifier__, suffixes__, tolerance__) \ - FBSnapshotVerifyViewOrLayerWithOptions(View, view__, identifier__, suffixes__, tolerance__) - -#define FBSnapshotVerifyView(view__, identifier__) \ - FBSnapshotVerifyViewWithOptions(view__, identifier__, FBSnapshotTestCaseDefaultSuffixes(), 0) - - -/** - Similar to our much-loved XCTAssert() macros. Use this to perform your test. No need to write an explanation, though. - @param layer The layer to snapshot - @param identifier An optional identifier, used if there are multiple snapshot tests in a given -test method. - @param suffixes An NSOrderedSet of strings for the different suffixes - @param tolerance The percentage of pixels that can differ and still count as an 'identical' layer - */ -#define FBSnapshotVerifyLayerWithOptions(layer__, identifier__, suffixes__, tolerance__) \ - FBSnapshotVerifyViewOrLayerWithOptions(Layer, layer__, identifier__, suffixes__, tolerance__) - -#define FBSnapshotVerifyLayer(layer__, identifier__) \ - FBSnapshotVerifyLayerWithOptions(layer__, identifier__, FBSnapshotTestCaseDefaultSuffixes(), 0) - - -#define FBSnapshotVerifyViewOrLayerWithOptions(what__, viewOrLayer__, identifier__, suffixes__, tolerance__) \ -{ \ - NSString *errorDescription = [self snapshotVerifyViewOrLayer:viewOrLayer__ identifier:identifier__ suffixes:suffixes__ tolerance:tolerance__ defaultReferenceDirectory:(@ FB_REFERENCE_IMAGE_DIR)]; \ - BOOL noErrors = (errorDescription == nil); \ - XCTAssertTrue(noErrors, @"%@", errorDescription); \ -} - - -/** - The base class of view snapshotting tests. If you have small UI component, it's often easier to configure it in a test - and compare an image of the view to a reference image that write lots of complex layout-code tests. - - In order to flip the tests in your subclass to record the reference images set @c recordMode to @c YES. - - @attention When recording, the reference image directory should be explicitly - set, otherwise the images may be written to somewhere inside the - simulator directory. - - For example: - @code - - (void)setUp - { - [super setUp]; - self.recordMode = YES; - } - @endcode - */ -@interface FBSnapshotTestCase : XCTestCase - -/** - When YES, the test macros will save reference images, rather than performing an actual test. - */ -@property (readwrite, nonatomic, assign) BOOL recordMode; - -/** - When @c YES appends the name of the device model and OS to the snapshot file name. - The default value is @c NO. - */ -@property (readwrite, nonatomic, assign, getter=isDeviceAgnostic) BOOL deviceAgnostic; - -/** - When YES, renders a snapshot of the complete view hierarchy as visible onscreen. - There are several things that do not work if renderInContext: is used. - - UIVisualEffect #70 - - UIAppearance #91 - - Size Classes #92 - - @attention If the view does't belong to a UIWindow, it will create one and add the view as a subview. - */ -@property (readwrite, nonatomic, assign) BOOL usesDrawViewHierarchyInRect; - -- (void)setUp NS_REQUIRES_SUPER; -- (void)tearDown NS_REQUIRES_SUPER; - -/** - Performs the comparison or records a snapshot of the layer if recordMode is YES. - @param viewOrLayer The UIView or CALayer to snapshot - @param identifier An optional identifier, used if there are multiple snapshot tests in a given -test method. - @param suffixes An NSOrderedSet of strings for the different suffixes - @param tolerance The percentage difference to still count as identical - 0 mean pixel perfect, 1 means I don't care - @param defaultReferenceDirectory The directory to default to for reference images. - @returns nil if the comparison (or saving of the reference image) succeeded. Otherwise it contains an error description. - */ -- (NSString *)snapshotVerifyViewOrLayer:(id)viewOrLayer - identifier:(NSString *)identifier - suffixes:(NSOrderedSet *)suffixes - tolerance:(CGFloat)tolerance - defaultReferenceDirectory:(NSString *)defaultReferenceDirectory; - -/** - Performs the comparison or records a snapshot of the layer if recordMode is YES. - @param layer The Layer to snapshot - @param referenceImagesDirectory The directory in which reference images are stored. - @param identifier An optional identifier, used if there are multiple snapshot tests in a given -test method. - @param tolerance The percentage difference to still count as identical - 0 mean pixel perfect, 1 means I don't care - @param errorPtr An error to log in an XCTAssert() macro if the method fails (missing reference image, images differ, etc). - @returns YES if the comparison (or saving of the reference image) succeeded. - */ -- (BOOL)compareSnapshotOfLayer:(CALayer *)layer - referenceImagesDirectory:(NSString *)referenceImagesDirectory - identifier:(NSString *)identifier - tolerance:(CGFloat)tolerance - error:(NSError **)errorPtr; - -/** - Performs the comparison or records a snapshot of the view if recordMode is YES. - @param view The view to snapshot - @param referenceImagesDirectory The directory in which reference images are stored. - @param identifier An optional identifier, used if there are multiple snapshot tests in a given -test method. - @param tolerance The percentage difference to still count as identical - 0 mean pixel perfect, 1 means I don't care - @param errorPtr An error to log in an XCTAssert() macro if the method fails (missing reference image, images differ, etc). - @returns YES if the comparison (or saving of the reference image) succeeded. - */ -- (BOOL)compareSnapshotOfView:(UIView *)view - referenceImagesDirectory:(NSString *)referenceImagesDirectory - identifier:(NSString *)identifier - tolerance:(CGFloat)tolerance - error:(NSError **)errorPtr; - -/** - Checks if reference image with identifier based name exists in the reference images directory. - @param referenceImagesDirectory The directory in which reference images are stored. - @param identifier An optional identifier, used if there are multiple snapshot tests in a given -test method. - @param errorPtr An error to log in an XCTAssert() macro if the method fails (missing reference image, images differ, etc). - @returns YES if reference image exists. - */ -- (BOOL)referenceImageRecordedInDirectory:(NSString *)referenceImagesDirectory - identifier:(NSString *)identifier - error:(NSError **)errorPtr; - -/** - Returns the reference image directory. - - Helper function used to implement the assert macros. - - @param dir directory to use if environment variable not specified. Ignored if null or empty. - */ -- (NSString *)getReferenceImageDirectoryWithDefault:(NSString *)dir; - -@end diff --git a/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCase.m b/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCase.m deleted file mode 100644 index f1fb547d..00000000 --- a/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCase.m +++ /dev/null @@ -1,193 +0,0 @@ -/* - * Copyright (c) 2015, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -#import -#import - -@implementation FBSnapshotTestCase -{ - FBSnapshotTestController *_snapshotController; -} - -#pragma mark - Overrides - -- (void)setUp -{ - [super setUp]; - _snapshotController = [[FBSnapshotTestController alloc] initWithTestName:NSStringFromClass([self class])]; -} - -- (void)tearDown -{ - _snapshotController = nil; - [super tearDown]; -} - -- (BOOL)recordMode -{ - return _snapshotController.recordMode; -} - -- (void)setRecordMode:(BOOL)recordMode -{ - NSAssert1(_snapshotController, @"%s cannot be called before [super setUp]", __FUNCTION__); - _snapshotController.recordMode = recordMode; -} - -- (BOOL)isDeviceAgnostic -{ - return _snapshotController.deviceAgnostic; -} - -- (void)setDeviceAgnostic:(BOOL)deviceAgnostic -{ - NSAssert1(_snapshotController, @"%s cannot be called before [super setUp]", __FUNCTION__); - _snapshotController.deviceAgnostic = deviceAgnostic; -} - -- (BOOL)usesDrawViewHierarchyInRect -{ - return _snapshotController.usesDrawViewHierarchyInRect; -} - -- (void)setUsesDrawViewHierarchyInRect:(BOOL)usesDrawViewHierarchyInRect -{ - NSAssert1(_snapshotController, @"%s cannot be called before [super setUp]", __FUNCTION__); - _snapshotController.usesDrawViewHierarchyInRect = usesDrawViewHierarchyInRect; -} - -#pragma mark - Public API - -- (NSString *)snapshotVerifyViewOrLayer:(id)viewOrLayer - identifier:(NSString *)identifier - suffixes:(NSOrderedSet *)suffixes - tolerance:(CGFloat)tolerance - defaultReferenceDirectory:(NSString *)defaultReferenceDirectory -{ - if (nil == viewOrLayer) { - return @"Object to be snapshotted must not be nil"; - } - NSString *referenceImageDirectory = [self getReferenceImageDirectoryWithDefault:defaultReferenceDirectory]; - if (referenceImageDirectory == nil) { - return @"Missing value for referenceImagesDirectory - Set FB_REFERENCE_IMAGE_DIR as Environment variable in your scheme."; - } - if (suffixes.count == 0) { - return [NSString stringWithFormat:@"Suffixes set cannot be empty %@", suffixes]; - } - - BOOL testSuccess = NO; - NSError *error = nil; - NSMutableArray *errors = [NSMutableArray array]; - - if (self.recordMode) { - NSString *referenceImagesDirectory = [NSString stringWithFormat:@"%@%@", referenceImageDirectory, suffixes.firstObject]; - BOOL referenceImageSaved = [self _compareSnapshotOfViewOrLayer:viewOrLayer referenceImagesDirectory:referenceImagesDirectory identifier:(identifier) tolerance:tolerance error:&error]; - if (!referenceImageSaved) { - [errors addObject:error]; - } - } else { - for (NSString *suffix in suffixes) { - NSString *referenceImagesDirectory = [NSString stringWithFormat:@"%@%@", referenceImageDirectory, suffix]; - BOOL referenceImageAvailable = [self referenceImageRecordedInDirectory:referenceImagesDirectory identifier:(identifier) error:&error]; - - if (referenceImageAvailable) { - BOOL comparisonSuccess = [self _compareSnapshotOfViewOrLayer:viewOrLayer referenceImagesDirectory:referenceImagesDirectory identifier:identifier tolerance:tolerance error:&error]; - [errors removeAllObjects]; - if (comparisonSuccess) { - testSuccess = YES; - break; - } else { - [errors addObject:error]; - } - } else { - [errors addObject:error]; - } - } - } - - if (!testSuccess) { - return [NSString stringWithFormat:@"Snapshot comparison failed: %@", errors.firstObject]; - } - if (self.recordMode) { - return @"Test ran in record mode. Reference image is now saved. Disable record mode to perform an actual snapshot comparison!"; - } - - return nil; -} - -- (BOOL)compareSnapshotOfLayer:(CALayer *)layer - referenceImagesDirectory:(NSString *)referenceImagesDirectory - identifier:(NSString *)identifier - tolerance:(CGFloat)tolerance - error:(NSError **)errorPtr -{ - return [self _compareSnapshotOfViewOrLayer:layer - referenceImagesDirectory:referenceImagesDirectory - identifier:identifier - tolerance:tolerance - error:errorPtr]; -} - -- (BOOL)compareSnapshotOfView:(UIView *)view - referenceImagesDirectory:(NSString *)referenceImagesDirectory - identifier:(NSString *)identifier - tolerance:(CGFloat)tolerance - error:(NSError **)errorPtr -{ - return [self _compareSnapshotOfViewOrLayer:view - referenceImagesDirectory:referenceImagesDirectory - identifier:identifier - tolerance:tolerance - error:errorPtr]; -} - -- (BOOL)referenceImageRecordedInDirectory:(NSString *)referenceImagesDirectory - identifier:(NSString *)identifier - error:(NSError **)errorPtr -{ - NSAssert1(_snapshotController, @"%s cannot be called before [super setUp]", __FUNCTION__); - _snapshotController.referenceImagesDirectory = referenceImagesDirectory; - UIImage *referenceImage = [_snapshotController referenceImageForSelector:self.invocation.selector - identifier:identifier - error:errorPtr]; - - return (referenceImage != nil); -} - -- (NSString *)getReferenceImageDirectoryWithDefault:(NSString *)dir -{ - NSString *envReferenceImageDirectory = [NSProcessInfo processInfo].environment[@"FB_REFERENCE_IMAGE_DIR"]; - if (envReferenceImageDirectory) { - return envReferenceImageDirectory; - } - if (dir && dir.length > 0) { - return dir; - } - return [[NSBundle bundleForClass:self.class].resourcePath stringByAppendingPathComponent:@"ReferenceImages"]; -} - - -#pragma mark - Private API - -- (BOOL)_compareSnapshotOfViewOrLayer:(id)viewOrLayer - referenceImagesDirectory:(NSString *)referenceImagesDirectory - identifier:(NSString *)identifier - tolerance:(CGFloat)tolerance - error:(NSError **)errorPtr -{ - _snapshotController.referenceImagesDirectory = referenceImagesDirectory; - return [_snapshotController compareSnapshotOfViewOrLayer:viewOrLayer - selector:self.invocation.selector - identifier:identifier - tolerance:tolerance - error:errorPtr]; -} - -@end diff --git a/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCasePlatform.h b/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCasePlatform.h deleted file mode 100644 index e04acf2f..00000000 --- a/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCasePlatform.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2015, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -#import - -#ifdef __cplusplus -extern "C" { -#endif - -/** - Returns a Boolean value that indicates whether the snapshot test is running in 64Bit. - This method is a convenience for creating the suffixes set based on the architecture - that the test is running. - - @returns @c YES if the test is running in 64bit, otherwise @c NO. - */ -BOOL FBSnapshotTestCaseIs64Bit(void); - -/** - Returns a default set of strings that is used to append a suffix based on the architectures. - @warning Do not modify this function, you can create your own and use it with @c FBSnapshotVerifyViewWithOptions() - - @returns An @c NSOrderedSet object containing strings that are appended to the reference images directory. - */ -NSOrderedSet *FBSnapshotTestCaseDefaultSuffixes(void); - -/** - Returns a fully «normalized» file name. - Strips punctuation and spaces and replaces them with @c _. Also appends the device model, running OS and screen size to the file name. - - @returns An @c NSString object containing the passed @c fileName with the device model, OS and screen size appended at the end. - */ -NSString *FBDeviceAgnosticNormalizedFileName(NSString *fileName); - -#ifdef __cplusplus -} -#endif diff --git a/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCasePlatform.m b/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCasePlatform.m deleted file mode 100644 index d8709d8b..00000000 --- a/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCasePlatform.m +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (c) 2015, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -#import -#import -#import - -BOOL FBSnapshotTestCaseIs64Bit(void) -{ -#if __LP64__ - return YES; -#else - return NO; -#endif -} - -NSOrderedSet *FBSnapshotTestCaseDefaultSuffixes(void) -{ - NSMutableOrderedSet *suffixesSet = [[NSMutableOrderedSet alloc] init]; - [suffixesSet addObject:@"_32"]; - [suffixesSet addObject:@"_64"]; - if (FBSnapshotTestCaseIs64Bit()) { - return [suffixesSet reversedOrderedSet]; - } - return [suffixesSet copy]; -} - -NSString *FBDeviceAgnosticNormalizedFileName(NSString *fileName) -{ - UIDevice *device = [UIDevice currentDevice]; - UIWindow *keyWindow = [[UIApplication sharedApplication] fb_strictKeyWindow]; - CGSize screenSize = keyWindow.bounds.size; - NSString *os = device.systemVersion; - - fileName = [NSString stringWithFormat:@"%@_%@%@_%.0fx%.0f", fileName, device.model, os, screenSize.width, screenSize.height]; - - NSMutableCharacterSet *invalidCharacters = [NSMutableCharacterSet new]; - [invalidCharacters formUnionWithCharacterSet:[NSCharacterSet whitespaceCharacterSet]]; - [invalidCharacters formUnionWithCharacterSet:[NSCharacterSet punctuationCharacterSet]]; - NSArray *validComponents = [fileName componentsSeparatedByCharactersInSet:invalidCharacters]; - fileName = [validComponents componentsJoinedByString:@"_"]; - - return fileName; -} \ No newline at end of file diff --git a/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestController.m b/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestController.m deleted file mode 100644 index 74c5a0a6..00000000 --- a/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestController.m +++ /dev/null @@ -1,358 +0,0 @@ -/* - * Copyright (c) 2015, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -#import -#import -#import -#import -#import - -#import - -NSString *const FBSnapshotTestControllerErrorDomain = @"FBSnapshotTestControllerErrorDomain"; -NSString *const FBReferenceImageFilePathKey = @"FBReferenceImageFilePathKey"; -NSString *const FBReferenceImageKey = @"FBReferenceImageKey"; -NSString *const FBCapturedImageKey = @"FBCapturedImageKey"; -NSString *const FBDiffedImageKey = @"FBDiffedImageKey"; - -typedef NS_ENUM(NSUInteger, FBTestSnapshotFileNameType) { - FBTestSnapshotFileNameTypeReference, - FBTestSnapshotFileNameTypeFailedReference, - FBTestSnapshotFileNameTypeFailedTest, - FBTestSnapshotFileNameTypeFailedTestDiff, -}; - -@implementation FBSnapshotTestController -{ - NSString *_testName; - NSFileManager *_fileManager; -} - -#pragma mark - Initializers - -- (instancetype)initWithTestClass:(Class)testClass; -{ - return [self initWithTestName:NSStringFromClass(testClass)]; -} - -- (instancetype)initWithTestName:(NSString *)testName -{ - if (self = [super init]) { - _testName = [testName copy]; - _deviceAgnostic = NO; - - _fileManager = [[NSFileManager alloc] init]; - } - return self; -} - -#pragma mark - Overrides - -- (NSString *)description -{ - return [NSString stringWithFormat:@"%@ %@", [super description], _referenceImagesDirectory]; -} - -#pragma mark - Public API - -- (BOOL)compareSnapshotOfLayer:(CALayer *)layer - selector:(SEL)selector - identifier:(NSString *)identifier - error:(NSError **)errorPtr -{ - return [self compareSnapshotOfViewOrLayer:layer - selector:selector - identifier:identifier - tolerance:0 - error:errorPtr]; -} - -- (BOOL)compareSnapshotOfView:(UIView *)view - selector:(SEL)selector - identifier:(NSString *)identifier - error:(NSError **)errorPtr -{ - return [self compareSnapshotOfViewOrLayer:view - selector:selector - identifier:identifier - tolerance:0 - error:errorPtr]; -} - -- (BOOL)compareSnapshotOfViewOrLayer:(id)viewOrLayer - selector:(SEL)selector - identifier:(NSString *)identifier - tolerance:(CGFloat)tolerance - error:(NSError **)errorPtr -{ - if (self.recordMode) { - return [self _recordSnapshotOfViewOrLayer:viewOrLayer selector:selector identifier:identifier error:errorPtr]; - } else { - return [self _performPixelComparisonWithViewOrLayer:viewOrLayer selector:selector identifier:identifier tolerance:tolerance error:errorPtr]; - } -} - -- (UIImage *)referenceImageForSelector:(SEL)selector - identifier:(NSString *)identifier - error:(NSError **)errorPtr -{ - NSString *filePath = [self _referenceFilePathForSelector:selector identifier:identifier]; - UIImage *image = [UIImage imageWithContentsOfFile:filePath]; - if (nil == image && NULL != errorPtr) { - BOOL exists = [_fileManager fileExistsAtPath:filePath]; - if (!exists) { - *errorPtr = [NSError errorWithDomain:FBSnapshotTestControllerErrorDomain - code:FBSnapshotTestControllerErrorCodeNeedsRecord - userInfo:@{ - FBReferenceImageFilePathKey: filePath, - NSLocalizedDescriptionKey: @"Unable to load reference image.", - NSLocalizedFailureReasonErrorKey: @"Reference image not found. You need to run the test in record mode", - }]; - } else { - *errorPtr = [NSError errorWithDomain:FBSnapshotTestControllerErrorDomain - code:FBSnapshotTestControllerErrorCodeUnknown - userInfo:nil]; - } - } - return image; -} - -- (BOOL)compareReferenceImage:(UIImage *)referenceImage - toImage:(UIImage *)image - tolerance:(CGFloat)tolerance - error:(NSError **)errorPtr -{ - BOOL sameImageDimensions = CGSizeEqualToSize(referenceImage.size, image.size); - if (sameImageDimensions && [referenceImage fb_compareWithImage:image tolerance:tolerance]) { - return YES; - } - - if (NULL != errorPtr) { - NSString *errorDescription = sameImageDimensions ? @"Images different" : @"Images different sizes"; - NSString *errorReason = sameImageDimensions ? [NSString stringWithFormat:@"image pixels differed by more than %.2f%% from the reference image", tolerance * 100] - : [NSString stringWithFormat:@"referenceImage:%@, image:%@", NSStringFromCGSize(referenceImage.size), NSStringFromCGSize(image.size)]; - FBSnapshotTestControllerErrorCode errorCode = sameImageDimensions ? FBSnapshotTestControllerErrorCodeImagesDifferent : FBSnapshotTestControllerErrorCodeImagesDifferentSizes; - - *errorPtr = [NSError errorWithDomain:FBSnapshotTestControllerErrorDomain - code:errorCode - userInfo:@{ - NSLocalizedDescriptionKey: errorDescription, - NSLocalizedFailureReasonErrorKey: errorReason, - FBReferenceImageKey: referenceImage, - FBCapturedImageKey: image, - FBDiffedImageKey: [referenceImage fb_diffWithImage:image], - }]; - } - return NO; -} - -- (BOOL)saveFailedReferenceImage:(UIImage *)referenceImage - testImage:(UIImage *)testImage - selector:(SEL)selector - identifier:(NSString *)identifier - error:(NSError **)errorPtr -{ - NSData *referencePNGData = UIImagePNGRepresentation(referenceImage); - NSData *testPNGData = UIImagePNGRepresentation(testImage); - - NSString *referencePath = [self _failedFilePathForSelector:selector - identifier:identifier - fileNameType:FBTestSnapshotFileNameTypeFailedReference]; - - NSError *creationError = nil; - BOOL didCreateDir = [_fileManager createDirectoryAtPath:[referencePath stringByDeletingLastPathComponent] - withIntermediateDirectories:YES - attributes:nil - error:&creationError]; - if (!didCreateDir) { - if (NULL != errorPtr) { - *errorPtr = creationError; - } - return NO; - } - - if (![referencePNGData writeToFile:referencePath options:NSDataWritingAtomic error:errorPtr]) { - return NO; - } - - NSString *testPath = [self _failedFilePathForSelector:selector - identifier:identifier - fileNameType:FBTestSnapshotFileNameTypeFailedTest]; - - if (![testPNGData writeToFile:testPath options:NSDataWritingAtomic error:errorPtr]) { - return NO; - } - - NSString *diffPath = [self _failedFilePathForSelector:selector - identifier:identifier - fileNameType:FBTestSnapshotFileNameTypeFailedTestDiff]; - - UIImage *diffImage = [referenceImage fb_diffWithImage:testImage]; - NSData *diffImageData = UIImagePNGRepresentation(diffImage); - - if (![diffImageData writeToFile:diffPath options:NSDataWritingAtomic error:errorPtr]) { - return NO; - } - - NSLog(@"If you have Kaleidoscope installed you can run this command to see an image diff:\n" - @"ksdiff \"%@\" \"%@\"", referencePath, testPath); - - return YES; -} - -#pragma mark - Private API - -- (NSString *)_fileNameForSelector:(SEL)selector - identifier:(NSString *)identifier - fileNameType:(FBTestSnapshotFileNameType)fileNameType -{ - NSString *fileName = nil; - switch (fileNameType) { - case FBTestSnapshotFileNameTypeFailedReference: - fileName = @"reference_"; - break; - case FBTestSnapshotFileNameTypeFailedTest: - fileName = @"failed_"; - break; - case FBTestSnapshotFileNameTypeFailedTestDiff: - fileName = @"diff_"; - break; - default: - fileName = @""; - break; - } - fileName = [fileName stringByAppendingString:NSStringFromSelector(selector)]; - if (0 < identifier.length) { - fileName = [fileName stringByAppendingFormat:@"_%@", identifier]; - } - - if (self.isDeviceAgnostic) { - fileName = FBDeviceAgnosticNormalizedFileName(fileName); - } - - if ([[UIScreen mainScreen] scale] > 1) { - fileName = [fileName stringByAppendingFormat:@"@%.fx", [[UIScreen mainScreen] scale]]; - } - fileName = [fileName stringByAppendingPathExtension:@"png"]; - return fileName; -} - -- (NSString *)_referenceFilePathForSelector:(SEL)selector - identifier:(NSString *)identifier -{ - NSString *fileName = [self _fileNameForSelector:selector - identifier:identifier - fileNameType:FBTestSnapshotFileNameTypeReference]; - NSString *filePath = [_referenceImagesDirectory stringByAppendingPathComponent:_testName]; - filePath = [filePath stringByAppendingPathComponent:fileName]; - return filePath; -} - -- (NSString *)_failedFilePathForSelector:(SEL)selector - identifier:(NSString *)identifier - fileNameType:(FBTestSnapshotFileNameType)fileNameType -{ - NSString *fileName = [self _fileNameForSelector:selector - identifier:identifier - fileNameType:fileNameType]; - NSString *folderPath = NSTemporaryDirectory(); - if (getenv("IMAGE_DIFF_DIR")) { - folderPath = @(getenv("IMAGE_DIFF_DIR")); - } - NSString *filePath = [folderPath stringByAppendingPathComponent:_testName]; - filePath = [filePath stringByAppendingPathComponent:fileName]; - return filePath; -} - -- (BOOL)_performPixelComparisonWithViewOrLayer:(id)viewOrLayer - selector:(SEL)selector - identifier:(NSString *)identifier - tolerance:(CGFloat)tolerance - error:(NSError **)errorPtr -{ - UIImage *referenceImage = [self referenceImageForSelector:selector identifier:identifier error:errorPtr]; - if (nil != referenceImage) { - UIImage *snapshot = [self _imageForViewOrLayer:viewOrLayer]; - BOOL imagesSame = [self compareReferenceImage:referenceImage toImage:snapshot tolerance:tolerance error:errorPtr]; - if (!imagesSame) { - NSError *saveError = nil; - if ([self saveFailedReferenceImage:referenceImage testImage:snapshot selector:selector identifier:identifier error:&saveError] == NO) { - NSLog(@"Error saving test images: %@", saveError); - } - } - return imagesSame; - } - return NO; -} - -- (BOOL)_recordSnapshotOfViewOrLayer:(id)viewOrLayer - selector:(SEL)selector - identifier:(NSString *)identifier - error:(NSError **)errorPtr -{ - UIImage *snapshot = [self _imageForViewOrLayer:viewOrLayer]; - return [self _saveReferenceImage:snapshot selector:selector identifier:identifier error:errorPtr]; -} - -- (BOOL)_saveReferenceImage:(UIImage *)image - selector:(SEL)selector - identifier:(NSString *)identifier - error:(NSError **)errorPtr -{ - BOOL didWrite = NO; - if (nil != image) { - NSString *filePath = [self _referenceFilePathForSelector:selector identifier:identifier]; - NSData *pngData = UIImagePNGRepresentation(image); - if (nil != pngData) { - NSError *creationError = nil; - BOOL didCreateDir = [_fileManager createDirectoryAtPath:[filePath stringByDeletingLastPathComponent] - withIntermediateDirectories:YES - attributes:nil - error:&creationError]; - if (!didCreateDir) { - if (NULL != errorPtr) { - *errorPtr = creationError; - } - return NO; - } - didWrite = [pngData writeToFile:filePath options:NSDataWritingAtomic error:errorPtr]; - if (didWrite) { - NSLog(@"Reference image save at: %@", filePath); - } - } else { - if (nil != errorPtr) { - *errorPtr = [NSError errorWithDomain:FBSnapshotTestControllerErrorDomain - code:FBSnapshotTestControllerErrorCodePNGCreationFailed - userInfo:@{ - FBReferenceImageFilePathKey: filePath, - }]; - } - } - } - return didWrite; -} - -- (UIImage *)_imageForViewOrLayer:(id)viewOrLayer -{ - if ([viewOrLayer isKindOfClass:[UIView class]]) { - if (_usesDrawViewHierarchyInRect) { - return [UIImage fb_imageForView:viewOrLayer]; - } else { - return [UIImage fb_imageForViewLayer:viewOrLayer]; - } - } else if ([viewOrLayer isKindOfClass:[CALayer class]]) { - return [UIImage fb_imageForLayer:viewOrLayer]; - } else { - [NSException raise:@"Only UIView and CALayer classes can be snapshotted" format:@"%@", viewOrLayer]; - } - return nil; -} - -@end diff --git a/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/SwiftSupport.swift b/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/SwiftSupport.swift deleted file mode 100644 index 1bce175b..00000000 --- a/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/SwiftSupport.swift +++ /dev/null @@ -1,125 +0,0 @@ -/* -* Copyright (c) 2015, Facebook, Inc. -* All rights reserved. -* -* This source code is licensed under the BSD-style license found in the -* LICENSE file in the root directory of this source tree. An additional grant -* of patent rights can be found in the PATENTS file in the same directory. -* -*/ - -#if swift(>=3) - public extension FBSnapshotTestCase { - public func FBSnapshotVerifyView(_ view: UIView, identifier: String = "", suffixes: NSOrderedSet = FBSnapshotTestCaseDefaultSuffixes(), tolerance: CGFloat = 0, file: StaticString = #file, line: UInt = #line) { - FBSnapshotVerifyViewOrLayer(view, identifier: identifier, suffixes: suffixes, tolerance: tolerance, file: file, line: line) - } - - public func FBSnapshotVerifyLayer(_ layer: CALayer, identifier: String = "", suffixes: NSOrderedSet = FBSnapshotTestCaseDefaultSuffixes(), tolerance: CGFloat = 0, file: StaticString = #file, line: UInt = #line) { - FBSnapshotVerifyViewOrLayer(layer, identifier: identifier, suffixes: suffixes, tolerance: tolerance, file: file, line: line) - } - - private func FBSnapshotVerifyViewOrLayer(_ viewOrLayer: AnyObject, identifier: String = "", suffixes: NSOrderedSet = FBSnapshotTestCaseDefaultSuffixes(), tolerance: CGFloat = 0, file: StaticString = #file, line: UInt = #line) { - let envReferenceImageDirectory = self.getReferenceImageDirectory(withDefault: FB_REFERENCE_IMAGE_DIR) - var error: NSError? - var comparisonSuccess = false - - if let envReferenceImageDirectory = envReferenceImageDirectory { - for suffix in suffixes { - let referenceImagesDirectory = "\(envReferenceImageDirectory)\(suffix)" - if viewOrLayer.isKind(of: UIView.self) { - do { - try compareSnapshot(of: viewOrLayer as! UIView, referenceImagesDirectory: referenceImagesDirectory, identifier: identifier, tolerance: tolerance) - comparisonSuccess = true - } catch let error1 as NSError { - error = error1 - comparisonSuccess = false - } - } else if viewOrLayer.isKind(of: CALayer.self) { - do { - try compareSnapshot(of: viewOrLayer as! CALayer, referenceImagesDirectory: referenceImagesDirectory, identifier: identifier, tolerance: tolerance) - comparisonSuccess = true - } catch let error1 as NSError { - error = error1 - comparisonSuccess = false - } - } else { - assertionFailure("Only UIView and CALayer classes can be snapshotted") - } - - assert(recordMode == false, message: "Test ran in record mode. Reference image is now saved. Disable record mode to perform an actual snapshot comparison!", file: file, line: line) - - if comparisonSuccess || recordMode { - break - } - - assert(comparisonSuccess, message: "Snapshot comparison failed: \(String(describing: error))", file: file, line: line) - } - } else { - XCTFail("Missing value for referenceImagesDirectory - Set FB_REFERENCE_IMAGE_DIR as Environment variable in your scheme.") - } - } - - func assert(_ assertion: Bool, message: String, file: StaticString, line: UInt) { - if !assertion { - XCTFail(message, file: file, line: line) - } - } - } -#else -public extension FBSnapshotTestCase { - public func FBSnapshotVerifyView(view: UIView, identifier: String = "", suffixes: NSOrderedSet = FBSnapshotTestCaseDefaultSuffixes(), tolerance: CGFloat = 0, file: StaticString = #file, line: UInt = #line) { - FBSnapshotVerifyViewOrLayer(view, identifier: identifier, suffixes: suffixes, tolerance: tolerance, file: file, line: line) - } - - public func FBSnapshotVerifyLayer(layer: CALayer, identifier: String = "", suffixes: NSOrderedSet = FBSnapshotTestCaseDefaultSuffixes(), tolerance: CGFloat = 0, file: StaticString = #file, line: UInt = #line) { - FBSnapshotVerifyViewOrLayer(layer, identifier: identifier, suffixes: suffixes, tolerance: tolerance, file: file, line: line) - } - - private func FBSnapshotVerifyViewOrLayer(viewOrLayer: AnyObject, identifier: String = "", suffixes: NSOrderedSet = FBSnapshotTestCaseDefaultSuffixes(), tolerance: CGFloat = 0, file: StaticString = #file, line: UInt = #line) { - let envReferenceImageDirectory = self.getReferenceImageDirectoryWithDefault(FB_REFERENCE_IMAGE_DIR) - var error: NSError? - var comparisonSuccess = false - - if let envReferenceImageDirectory = envReferenceImageDirectory { - for suffix in suffixes { - let referenceImagesDirectory = "\(envReferenceImageDirectory)\(suffix)" - if viewOrLayer.isKindOfClass(UIView) { - do { - try compareSnapshotOfView(viewOrLayer as! UIView, referenceImagesDirectory: referenceImagesDirectory, identifier: identifier, tolerance: tolerance) - comparisonSuccess = true - } catch let error1 as NSError { - error = error1 - comparisonSuccess = false - } - } else if viewOrLayer.isKindOfClass(CALayer) { - do { - try compareSnapshotOfLayer(viewOrLayer as! CALayer, referenceImagesDirectory: referenceImagesDirectory, identifier: identifier, tolerance: tolerance) - comparisonSuccess = true - } catch let error1 as NSError { - error = error1 - comparisonSuccess = false - } - } else { - assertionFailure("Only UIView and CALayer classes can be snapshotted") - } - - assert(recordMode == false, message: "Test ran in record mode. Reference image is now saved. Disable record mode to perform an actual snapshot comparison!", file: file, line: line) - - if comparisonSuccess || recordMode { - break - } - - assert(comparisonSuccess, message: "Snapshot comparison failed: \(error)", file: file, line: line) - } - } else { - XCTFail("Missing value for referenceImagesDirectory - Set FB_REFERENCE_IMAGE_DIR as Environment variable in your scheme.") - } - } - - func assert(assertion: Bool, message: String, file: StaticString, line: UInt) { - if !assertion { - XCTFail(message, file: file, line: line) - } - } -} -#endif diff --git a/Example/Pods/FBSnapshotTestCase/LICENSE b/Example/Pods/FBSnapshotTestCase/LICENSE deleted file mode 100644 index 2dd780cb..00000000 --- a/Example/Pods/FBSnapshotTestCase/LICENSE +++ /dev/null @@ -1,29 +0,0 @@ -BSD License - -For the FBSnapshotTestCase software - -Copyright (c) 2013, Facebook, Inc. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name Facebook nor the names of its contributors may be used to - endorse or promote products derived from this software without specific - prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/Example/Pods/Local Podspecs/PopupDialog.podspec.json b/Example/Pods/Local Podspecs/PopupDialog.podspec.json index 4cb327fb..64e9f8e2 100644 --- a/Example/Pods/Local Podspecs/PopupDialog.podspec.json +++ b/Example/Pods/Local Podspecs/PopupDialog.podspec.json @@ -1,6 +1,6 @@ { "name": "PopupDialog", - "version": "0.9.2", + "version": "1.1.0", "summary": "A simple custom popup dialog view controller", "homepage": "https://github.com/orderella/PopupDialog", "license": { @@ -12,13 +12,14 @@ }, "source": { "git": "https://github.com/orderella/PopupDialog.git", - "tag": "0.9.2" + "tag": "1.1.0" }, "social_media_url": "https://twitter.com/theMWFire", "platforms": { - "ios": "9.0" + "ios": "10.0" }, "source_files": "PopupDialog/Classes/**/*", + "swift_version": "5", "dependencies": { "DynamicBlurView": [ "~> 3.0.1" diff --git a/Example/Pods/Local Podspecs/FBSnapshotTestCase.podspec.json b/Example/Pods/Local Podspecs/iOSSnapshotTestCase.podspec.json similarity index 81% rename from Example/Pods/Local Podspecs/FBSnapshotTestCase.podspec.json rename to Example/Pods/Local Podspecs/iOSSnapshotTestCase.podspec.json index 351c12fc..ca8f25b2 100644 --- a/Example/Pods/Local Podspecs/FBSnapshotTestCase.podspec.json +++ b/Example/Pods/Local Podspecs/iOSSnapshotTestCase.podspec.json @@ -1,17 +1,18 @@ { - "name": "FBSnapshotTestCase", - "version": "2.1.4", + "name": "iOSSnapshotTestCase", + "module_name": "FBSnapshotTestCase", + "version": "6.0.2", "summary": "Snapshot view unit tests for iOS", "description": "A \"snapshot test case\" takes a configured UIView or CALayer\nand uses the renderInContext: method to get an image snapshot\nof its contents. It compares this snapshot to a \"reference image\"\nstored in your source code repository and fails the test if the\ntwo images don't match.", - "homepage": "https://github.com/facebook/ios-snapshot-test-case", - "license": "BSD", - "authors": "Facebook", + "homepage": "https://github.com/uber/ios-snapshot-test-case", + "license": "MIT", + "authors": "Uber", "source": { - "git": "https://github.com/facebook/ios-snapshot-test-case.git", - "tag": "2.1.4" + "git": "https://github.com/uber/ios-snapshot-test-case.git", + "tag": "6.0.2" }, "platforms": { - "ios": "7.0", + "ios": "10.0", "tvos": "9.0" }, "requires_arc": true, @@ -49,7 +50,7 @@ { "name": "SwiftSupport", "dependencies": { - "FBSnapshotTestCase/Core": [ + "iOSSnapshotTestCase/Core": [ ] }, diff --git a/Example/Pods/Manifest.lock b/Example/Pods/Manifest.lock index 58e41b58..dae79920 100644 --- a/Example/Pods/Manifest.lock +++ b/Example/Pods/Manifest.lock @@ -1,17 +1,17 @@ PODS: - DynamicBlurView (3.0.1) - - FBSnapshotTestCase (2.1.4): - - FBSnapshotTestCase/SwiftSupport (= 2.1.4) - - FBSnapshotTestCase/Core (2.1.4) - - FBSnapshotTestCase/SwiftSupport (2.1.4): - - FBSnapshotTestCase/Core - - Nimble (7.3.1) - - PopupDialog (0.9.2): + - iOSSnapshotTestCase (6.0.2): + - iOSSnapshotTestCase/SwiftSupport (= 6.0.2) + - iOSSnapshotTestCase/Core (6.0.2) + - iOSSnapshotTestCase/SwiftSupport (6.0.2): + - iOSSnapshotTestCase/Core + - Nimble (7.3.4) + - PopupDialog (1.1.0): - DynamicBlurView (~> 3.0.1) - - SwiftLint (0.29.1) + - SwiftLint (0.31.0) DEPENDENCIES: - - FBSnapshotTestCase (~> 2.1.4) + - iOSSnapshotTestCase (~> 6.0.2) - Nimble (~> 7.3.1) - PopupDialog (from `../`) - SwiftLint (~> 0.22) @@ -19,7 +19,7 @@ DEPENDENCIES: SPEC REPOS: https://github.com/cocoapods/specs.git: - DynamicBlurView - - FBSnapshotTestCase + - iOSSnapshotTestCase - Nimble - SwiftLint @@ -29,11 +29,11 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: DynamicBlurView: b1df5415f9bd31897549e5d7077e5ec120a4d636 - FBSnapshotTestCase: 094f9f314decbabe373b87cc339bea235a63e07a - Nimble: 04f732da099ea4d153122aec8c2a88fd0c7219ae - PopupDialog: f4bb461bf70ff422be0b56656566424ee9273080 - SwiftLint: 6772320e40b52049053a518c17db9b0634a0b45a + iOSSnapshotTestCase: 20083a7be9b8ef742610e16c79f15ad829441f29 + Nimble: 051e3d8912d40138fa5591c78594f95fb172af37 + PopupDialog: 42fb7a0bc4fafdf89fef8b5b2b127a6023f3e1cc + SwiftLint: 7a0227733d786395817373b2d0ca799fd0093ff3 -PODFILE CHECKSUM: 2d0166d1e20a1e39377fb316142d39a3785d58f2 +PODFILE CHECKSUM: 745b14824f525113e600d7bfeeb81d4a978d6f28 -COCOAPODS: 1.7.2 +COCOAPODS: 1.6.1 diff --git a/Example/Pods/Nimble/README.md b/Example/Pods/Nimble/README.md index 19c562fe..647028c8 100644 --- a/Example/Pods/Nimble/README.md +++ b/Example/Pods/Nimble/README.md @@ -1277,7 +1277,7 @@ public func equal(expectedValue: T?) -> Predicate { // Predicate { actual in ... } // // But shown with types here for clarity. - return Predicate { (actual: Expression) throws -> PredicateResult in + return Predicate { (actualExpression: Expression) throws -> PredicateResult in let msg = ExpectationMessage.expectedActualValueTo("equal <\(expectedValue)>") if let actualValue = try actualExpression.evaluate() { return PredicateResult( diff --git a/Example/Pods/Nimble/Sources/Nimble/Adapters/NimbleEnvironment.swift b/Example/Pods/Nimble/Sources/Nimble/Adapters/NimbleEnvironment.swift index e1b54323..818e4780 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Adapters/NimbleEnvironment.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Adapters/NimbleEnvironment.swift @@ -3,7 +3,7 @@ import Foundation /// "Global" state of Nimble is stored here. Only DSL functions should access / be aware of this /// class' existence -internal class NimbleEnvironment { +internal class NimbleEnvironment: NSObject { static var activeInstance: NimbleEnvironment { get { let env = Thread.current.threadDictionary["NimbleEnvironment"] @@ -29,7 +29,7 @@ internal class NimbleEnvironment { var suppressTVOSAssertionWarning: Bool = false var awaiter: Awaiter - init() { + override init() { let timeoutQueue: DispatchQueue if #available(OSX 10.10, *) { timeoutQueue = DispatchQueue.global(qos: .userInitiated) @@ -40,6 +40,9 @@ internal class NimbleEnvironment { awaiter = Awaiter( waitLock: AssertionWaitLock(), asyncQueue: .main, - timeoutQueue: timeoutQueue) + timeoutQueue: timeoutQueue + ) + + super.init() } } diff --git a/Example/Pods/Nimble/Sources/Nimble/DSL+Wait.swift b/Example/Pods/Nimble/Sources/Nimble/DSL+Wait.swift index e8741368..ee281edc 100644 --- a/Example/Pods/Nimble/Sources/Nimble/DSL+Wait.swift +++ b/Example/Pods/Nimble/Sources/Nimble/DSL+Wait.swift @@ -89,11 +89,17 @@ internal class NMBWait: NSObject { #if (os(macOS) || os(iOS) || os(tvOS) || os(watchOS)) && !SWIFT_PACKAGE @objc(untilFile:line:action:) - internal class func until(_ file: FileString = #file, line: UInt = #line, action: @escaping (() -> Void) -> Void) { + internal class func until( + _ file: FileString = #file, + line: UInt = #line, + action: @escaping (@escaping () -> Void) -> Void) { until(timeout: 1, file: file, line: line, action: action) } #else - internal class func until(_ file: FileString = #file, line: UInt = #line, action: @escaping (() -> Void) -> Void) { + internal class func until( + _ file: FileString = #file, + line: UInt = #line, + action: @escaping (@escaping () -> Void) -> Void) { until(timeout: 1, file: file, line: line, action: action) } #endif diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/Async.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/Async.swift index 63e863ed..c70b65e2 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/Async.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/Async.swift @@ -23,14 +23,18 @@ private func async(style: ExpectationStyle, predicate: Predicate, timeout: } switch result { case .completed: return lastPredicateResult! - case .timedOut: return PredicateResult(status: .fail, message: lastPredicateResult!.message) + case .timedOut: + let message = lastPredicateResult?.message ?? .fail("timed out before returning a value") + return PredicateResult(status: .fail, message: message) case let .errorThrown(error): return PredicateResult(status: .fail, message: .fail("unexpected error thrown: <\(error)>")) case let .raisedException(exception): return PredicateResult(status: .fail, message: .fail("unexpected exception raised: \(exception)")) case .blockedRunLoop: // swiftlint:disable:next line_length - return PredicateResult(status: .fail, message: lastPredicateResult!.message.appended(message: " (timed out, but main thread was unresponsive).")) + let message = lastPredicateResult?.message.appended(message: " (timed out, but main run loop was unresponsive).") ?? + .fail("main run loop was unresponsive") + return PredicateResult(status: .fail, message: message) case .incomplete: internalError("Reached .incomplete state for \(fnName)(...).") } diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeIdenticalTo.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeIdenticalTo.swift index 94758c2e..dfbcb9e8 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeIdenticalTo.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeIdenticalTo.swift @@ -5,14 +5,38 @@ import Foundation public func beIdenticalTo(_ expected: Any?) -> Predicate { return Predicate.define { actualExpression in #if os(Linux) - let actual = try actualExpression.evaluate() as? AnyObject + #if swift(>=4.0) + #if !swift(>=4.1.50) + let actual = try actualExpression.evaluate() as? AnyObject + #else + let actual = try actualExpression.evaluate() as AnyObject? + #endif + #else + #if !swift(>=3.4) + let actual = try actualExpression.evaluate() as? AnyObject + #else + let actual = try actualExpression.evaluate() as AnyObject? + #endif + #endif #else let actual = try actualExpression.evaluate() as AnyObject? #endif let bool: Bool #if os(Linux) - bool = actual === (expected as? AnyObject) && actual !== nil + #if swift(>=4.0) + #if !swift(>=4.1.50) + bool = actual === (expected as? AnyObject) && actual !== nil + #else + bool = actual === (expected as AnyObject?) && actual !== nil + #endif + #else + #if !swift(>=3.4) + bool = actual === (expected as? AnyObject) && actual !== nil + #else + bool = actual === (expected as AnyObject?) && actual !== nil + #endif + #endif #else bool = actual === (expected as AnyObject?) && actual !== nil #endif diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeginWith.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeginWith.swift index a013f9fa..cb3efe30 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/BeginWith.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/BeginWith.swift @@ -35,8 +35,7 @@ public func beginWith(_ startingElement: Any) -> Predicate public func beginWith(_ startingSubstring: String) -> Predicate { return Predicate.simple("begin with <\(startingSubstring)>") { actualExpression in if let actual = try actualExpression.evaluate() { - let range = actual.range(of: startingSubstring) - return PredicateStatus(bool: range != nil && range!.lowerBound == actual.startIndex) + return PredicateStatus(bool: actual.hasPrefix(startingSubstring)) } return .fail } diff --git a/Example/Pods/Nimble/Sources/Nimble/Matchers/Equal.swift b/Example/Pods/Nimble/Sources/Nimble/Matchers/Equal.swift index 5f26f492..b8ac2c9d 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Matchers/Equal.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Matchers/Equal.swift @@ -7,17 +7,15 @@ import Foundation public func equal(_ expectedValue: T?) -> Predicate { return Predicate.define("equal <\(stringify(expectedValue))>") { actualExpression, msg in let actualValue = try actualExpression.evaluate() - let matches = actualValue == expectedValue && expectedValue != nil - if expectedValue == nil || actualValue == nil { - if expectedValue == nil && actualValue != nil { - return PredicateResult( - status: .fail, - message: msg.appendedBeNilHint() - ) - } + switch (expectedValue, actualValue) { + case (nil, _?): + return PredicateResult(status: .fail, message: msg.appendedBeNilHint()) + case (nil, nil), (_, nil): return PredicateResult(status: .fail, message: msg) + case (let expected?, let actual?): + let matches = expected == actual + return PredicateResult(bool: matches, message: msg) } - return PredicateResult(status: PredicateStatus(bool: matches), message: msg) } } @@ -28,19 +26,15 @@ public func equal(_ expectedValue: T?) -> Predicate { public func equal(_ expectedValue: [T: C]?) -> Predicate<[T: C]> { return Predicate.define("equal <\(stringify(expectedValue))>") { actualExpression, msg in let actualValue = try actualExpression.evaluate() - if expectedValue == nil || actualValue == nil { - if expectedValue == nil && actualValue != nil { - return PredicateResult( - status: .fail, - message: msg.appendedBeNilHint() - ) - } + switch (expectedValue, actualValue) { + case (nil, _?): + return PredicateResult(status: .fail, message: msg.appendedBeNilHint()) + case (nil, nil), (_, nil): return PredicateResult(status: .fail, message: msg) + case (let expected?, let actual?): + let matches = expected == actual + return PredicateResult(bool: matches, message: msg) } - return PredicateResult( - status: PredicateStatus(bool: expectedValue! == actualValue!), - message: msg - ) } } @@ -49,61 +43,54 @@ public func equal(_ expectedValue: [T: C]?) -> Predicate<[T: C] public func equal(_ expectedValue: [T]?) -> Predicate<[T]> { return Predicate.define("equal <\(stringify(expectedValue))>") { actualExpression, msg in let actualValue = try actualExpression.evaluate() - if expectedValue == nil || actualValue == nil { - if expectedValue == nil && actualValue != nil { - return PredicateResult( - status: .fail, - message: msg.appendedBeNilHint() - ) - } - return PredicateResult( - status: .fail, - message: msg - ) + switch (expectedValue, actualValue) { + case (nil, _?): + return PredicateResult(status: .fail, message: msg.appendedBeNilHint()) + case (nil, nil), (_, nil): + return PredicateResult(status: .fail, message: msg) + case (let expected?, let actual?): + let matches = expected == actual + return PredicateResult(bool: matches, message: msg) } - return PredicateResult( - bool: expectedValue! == actualValue!, - message: msg - ) } } /// A Nimble matcher allowing comparison of collection with optional type public func equal(_ expectedValue: [T?]) -> Predicate<[T?]> { return Predicate.define("equal <\(stringify(expectedValue))>") { actualExpression, msg in - if let actualValue = try actualExpression.evaluate() { - let doesNotMatch = PredicateResult( - status: .doesNotMatch, - message: msg - ) - - if expectedValue.count != actualValue.count { - return doesNotMatch - } - - for (index, item) in actualValue.enumerated() { - let otherItem = expectedValue[index] - if item == nil && otherItem == nil { - continue - } else if item == nil && otherItem != nil { - return doesNotMatch - } else if item != nil && otherItem == nil { - return doesNotMatch - } else if item! != otherItem! { - return doesNotMatch - } - } - - return PredicateResult( - status: .matches, - message: msg - ) - } else { + guard let actualValue = try actualExpression.evaluate() else { return PredicateResult( status: .fail, message: msg.appendedBeNilHint() ) } + + let doesNotMatch = PredicateResult( + status: .doesNotMatch, + message: msg + ) + + if expectedValue.count != actualValue.count { + return doesNotMatch + } + + for (index, item) in actualValue.enumerated() { + let otherItem = expectedValue[index] + if item == nil && otherItem == nil { + continue + } else if item == nil && otherItem != nil { + return doesNotMatch + } else if item != nil && otherItem == nil { + return doesNotMatch + } else if item! != otherItem! { + return doesNotMatch + } + } + + return PredicateResult( + status: .matches, + message: msg + ) } } @@ -128,44 +115,45 @@ private func equal(_ expectedValue: Set?, stringify: @escaping (Set?) - var errorMessage: ExpectationMessage = .expectedActualValueTo("equal <\(stringify(expectedValue))>") - if let expectedValue = expectedValue { - if let actualValue = try actualExpression.evaluate() { - errorMessage = .expectedCustomValueTo( - "equal <\(stringify(expectedValue))>", - "<\(stringify(actualValue))>" - ) - - if expectedValue == actualValue { - return PredicateResult( - status: .matches, - message: errorMessage - ) - } - - let missing = expectedValue.subtracting(actualValue) - if missing.count > 0 { - errorMessage = errorMessage.appended(message: ", missing <\(stringify(missing))>") - } - - let extra = actualValue.subtracting(expectedValue) - if extra.count > 0 { - errorMessage = errorMessage.appended(message: ", extra <\(stringify(extra))>") - } - return PredicateResult( - status: .doesNotMatch, - message: errorMessage - ) - } + guard let expectedValue = expectedValue else { return PredicateResult( status: .fail, message: errorMessage.appendedBeNilHint() ) - } else { + } + + guard let actualValue = try actualExpression.evaluate() else { return PredicateResult( status: .fail, message: errorMessage.appendedBeNilHint() ) } + + errorMessage = .expectedCustomValueTo( + "equal <\(stringify(expectedValue))>", + "<\(stringify(actualValue))>" + ) + + if expectedValue == actualValue { + return PredicateResult( + status: .matches, + message: errorMessage + ) + } + + let missing = expectedValue.subtracting(actualValue) + if missing.count > 0 { + errorMessage = errorMessage.appended(message: ", missing <\(stringify(missing))>") + } + + let extra = actualValue.subtracting(expectedValue) + if extra.count > 0 { + errorMessage = errorMessage.appended(message: ", extra <\(stringify(extra))>") + } + return PredicateResult( + status: .doesNotMatch, + message: errorMessage + ) } } diff --git a/Example/Pods/Nimble/Sources/Nimble/Utils/Await.swift b/Example/Pods/Nimble/Sources/Nimble/Utils/Await.swift index cb672adc..ad7a6eb1 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Utils/Await.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Utils/Await.swift @@ -263,7 +263,7 @@ internal class AwaitPromiseBuilder { self.trigger.timeoutSource.resume() while self.promise.asyncResult.isIncomplete() { // Stopping the run loop does not work unless we run only 1 mode - #if swift(>=4.2) + #if swift(>=4.2) && (os(macOS) || os(iOS) || os(tvOS)) _ = RunLoop.current.run(mode: .default, before: .distantFuture) #else _ = RunLoop.current.run(mode: .defaultRunLoopMode, before: .distantFuture) diff --git a/Example/Pods/Nimble/Sources/Nimble/Utils/Stringers.swift b/Example/Pods/Nimble/Sources/Nimble/Utils/Stringers.swift index 7c4d273e..ce21eeab 100644 --- a/Example/Pods/Nimble/Sources/Nimble/Utils/Stringers.swift +++ b/Example/Pods/Nimble/Sources/Nimble/Utils/Stringers.swift @@ -3,7 +3,19 @@ import Foundation internal func identityAsString(_ value: Any?) -> String { let anyObject: AnyObject? #if os(Linux) - anyObject = value as? AnyObject + #if swift(>=4.0) + #if !swift(>=4.1.50) + anyObject = value as? AnyObject + #else + anyObject = value as AnyObject? + #endif + #else + #if !swift(>=3.4) + anyObject = value as? AnyObject + #else + anyObject = value as AnyObject? + #endif + #endif #else anyObject = value as AnyObject? #endif diff --git a/Example/Pods/Pods.xcodeproj/project.pbxproj b/Example/Pods/Pods.xcodeproj/project.pbxproj index ac73f143..eb591280 100644 --- a/Example/Pods/Pods.xcodeproj/project.pbxproj +++ b/Example/Pods/Pods.xcodeproj/project.pbxproj @@ -7,9 +7,9 @@ objects = { /* Begin PBXAggregateTarget section */ - 52B60EC2A583F24ACBB69C113F5488B9 /* SwiftLint */ = { + 462030076D657DEC3A2BAA37E0C875A2 /* SwiftLint */ = { isa = PBXAggregateTarget; - buildConfigurationList = AE7B4FB01588B9E6DF09CB79FC7CE7BD /* Build configuration list for PBXAggregateTarget "SwiftLint" */; + buildConfigurationList = E7020DB2F7FE1DC1165D29E9F84E3E2A /* Build configuration list for PBXAggregateTarget "SwiftLint" */; buildPhases = ( ); dependencies = ( @@ -20,966 +20,945 @@ /* End PBXAggregateTarget section */ /* Begin PBXBuildFile section */ - 00224C929D57F45B70E87359E719948D /* FBSnapshotTestCase.h in Headers */ = {isa = PBXBuildFile; fileRef = 257D5F8B0DCEC33CDA26D63499FB0495 /* FBSnapshotTestCase.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 00620E71264E0E954D667CEAD6BD0E99 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 11DB7CB31983107A7414F650F4E837A4 /* UIKit.framework */; }; - 01869817854E030910D5C2F7FB4D64BB /* ContainElementSatisfying.swift in Sources */ = {isa = PBXBuildFile; fileRef = 698D59A6E494E53C0F43A878354170EF /* ContainElementSatisfying.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 01DAA6DD1809A39129FF7C72DDF93054 /* mach_excServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 1230E2988BCB2EEEF323AEA8ECBA0C2F /* mach_excServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 030FCBCF4FD8CD3905C39EDA654D29BD /* PopupDialogDefaultViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E676FA350BAF8126087BBBBCB484CDB /* PopupDialogDefaultViewController.swift */; }; - 0725A6F6AF5A97F9D46B3188E135D5B2 /* NMBExceptionCapture.h in Headers */ = {isa = PBXBuildFile; fileRef = 38D6C61133B639A2B434904EDC0E25EC /* NMBExceptionCapture.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 08452A247B58228DFFC77D7BA30DD668 /* DynamicBlurView.h in Headers */ = {isa = PBXBuildFile; fileRef = 7155D2ED8BE5F64CC80C5520FC745A76 /* DynamicBlurView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0F82656B116745EE31DB985B8096CD60 /* UIImageView+Calculations.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9294A2D8BAEE19009408690C2B5D3F4A /* UIImageView+Calculations.swift */; }; - 0FDD7A2A9FF06E643EEB86C2DB234913 /* Pods-PopupDialog_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 9CC6517936E4387C41FE2189217EBA63 /* Pods-PopupDialog_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1098AC9B0A4F55B1CCF3C32D46C65FF8 /* NimbleEnvironment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 515D96EB3DCC6FFD927E5316AECF8E3E /* NimbleEnvironment.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 11C410135C7E89353B480AC8DE0BFB77 /* UIApplication+StrictKeyWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 4066371F801BE06ABA7B5378D1516984 /* UIApplication+StrictKeyWindow.m */; }; - 11E562107FE281404113395BA7DA35D8 /* AssertionDispatcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = F798F699A9B2C2769E367394B7730508 /* AssertionDispatcher.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 14AD81D52FAD9CF2C065C61FB00C3B4F /* UIImage+Diff.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E8A64BA70EF2572DB9B8AB444F3EB2F /* UIImage+Diff.m */; }; - 14C511527597E5846AB2627F791C7D8E /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F122610CA81508E4814DDCE94B464D44 /* QuartzCore.framework */; }; - 169D250E01A497F88370028FD950A37C /* TransitionAnimator.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2EE30A42A66A81CBC64D0BBA25F792B /* TransitionAnimator.swift */; }; - 18643D4F9BC327B1E5B9175F4260AC0E /* DynamicBlurView-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 83EF801B4936FC33191B799D61923BC9 /* DynamicBlurView-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1B150812C28ED02DDC40A757EA00EFDB /* NMBExpectation.swift in Sources */ = {isa = PBXBuildFile; fileRef = C48AD81FC13B15ABDC7C963EAB2D5167 /* NMBExpectation.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 1C14E028D177632DF0B363082E85E536 /* CGImage+Accelerate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5048A1AEC9B5705E9EAEF6551940EAF /* CGImage+Accelerate.swift */; }; - 225555187BFD67F7F6DADEA6C73C567F /* PopupDialogContainerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03D6C9895C238A039A720030480F2172 /* PopupDialogContainerView.swift */; }; - 22643CBE1C189CCDF72B28ED90ED9E76 /* Equal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EB568B257A9760AF7D1EB4AC7C16047 /* Equal.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 2C38665499A01B08A0D011CA7AF4FE8A /* FailureMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = E22E40DA96F1E8F484109F7DEEE7D5A4 /* FailureMessage.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 2DCFF0CE0BD295F1D46D3247F36B192C /* UIImage+Compare.m in Sources */ = {isa = PBXBuildFile; fileRef = 7465FC20B8D5A8395133678BB28FDA26 /* UIImage+Compare.m */; }; - 305C1342B9B2F1449A3CAEA2AA961680 /* Predicate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25CAF0CF8FA9D90CE9A964CC2EBC89BE /* Predicate.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 306D848638158C6AB2B6FC2ADC1DFD5A /* BeGreaterThan.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CA3D96AE50B7C956B26E595B9D4F231 /* BeGreaterThan.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 34A653F2102D5C686B9989E1A3A90ABA /* MatchError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B860197A4EB0939F19A944C8DE7B0BB /* MatchError.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 364F3140C786E01EFCF6656C8A2FF6C2 /* Contain.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3578BE46EA8B3A926D36CD6419758AA4 /* Contain.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 37AFD441D3948E62ABBFFBDC662F6DB6 /* UIView+Animations.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C2C079E8AFC3A5EFF22EE190BAEC967 /* UIView+Animations.swift */; }; - 3A7F4D153DC75E8986A55E7F2FFE9CB1 /* SatisfyAnyOf.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7199B1867D8AD2C4E059C8765E3F3F49 /* SatisfyAnyOf.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 3FE6B7466A47A04A940760E383465EAA /* NimbleXCTestHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = A92CB81D978376BC2F0596E89E8AF772 /* NimbleXCTestHandler.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 40039E0AF0D764360B1D4FC4F7950D2E /* UIApplication+StrictKeyWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = C6A00C4B2ADB7764C47E582CA6A3518A /* UIApplication+StrictKeyWindow.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 405AB644E5E32AB19AE8697B4C0CE124 /* CwlMachBadInstructionHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = C664F4D586706BFD0F11F98B08B10C12 /* CwlMachBadInstructionHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 41840A6B236DEFC868F8F8FF3A5EBDB6 /* Pods-PopupDialog_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 6123086D7F043014510D0169F0DEF417 /* Pods-PopupDialog_Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 41E31C552EE259E4BEC6CFE49299B5C2 /* CwlCatchBadInstruction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B12949F2863B29728E61794A7286FD90 /* CwlCatchBadInstruction.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 42414824559FA605DF0EDCD382366DBD /* DynamicBlurView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0896F4869F45E8DA6473F1BFE63E57FE /* DynamicBlurView.swift */; }; - 42AB7693DF9D773D21FB710EC9C848D9 /* Errors.swift in Sources */ = {isa = PBXBuildFile; fileRef = E37DAD951F357455584D34064B109450 /* Errors.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 444242F3A5A087132A93CA36017AD620 /* Async.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BAB293DC0DAC1537437AC4816A067CE /* Async.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 4C6E460A6B911AFFD987F78AC59B7466 /* DynamicBlurView.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B450B6BFDFE3AEDDA29F72764AEA729C /* DynamicBlurView.framework */; }; - 5546955AFBE8D354D17380A294A25CE6 /* PopupDialog.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1DA971E985C8B31B8F00808F5410A674 /* PopupDialog.swift */; }; - 561BE9D824E69DE2B0E24947326A6A9B /* ThrowAssertion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B80D23727C7BAECE77452D3786E9BE8 /* ThrowAssertion.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 5A8FF79601D18B09D614A0B329F7DC05 /* Pods-PopupDialog_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2E14A056794F0B689BD9BC5BFC1E7359 /* Pods-PopupDialog_Tests-dummy.m */; }; - 5CE5E8EA75E0B3DC5BE140B61DF37EFD /* Nimble-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A820AD98C110684A43E3EEF2E11D41B5 /* Nimble-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5F3B71C56395F5BCE2BAB106D780A316 /* BeAnInstanceOf.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6134218EEC838AB9A4D29F431169695 /* BeAnInstanceOf.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 62DFF94A7A777939C861EDA13627999B /* Nimble.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F632647C2DF9AA322A254983005F723 /* Nimble.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 63E9E7352E66E23B5507639CB5EE00C6 /* CwlMachBadInstructionHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 06E50A391A2FBD68EA8C9758D39355B3 /* CwlMachBadInstructionHandler.m */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 64ED91354C9DB1A35CFE783624260E0F /* BeNil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84B0303D51ED5C17293BC4477D02DAA9 /* BeNil.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 67A144189500D0F068317EA82B7A3478 /* CwlBadInstructionException.swift in Sources */ = {isa = PBXBuildFile; fileRef = DEBE9743BEE9E58F26BA6451F2EFB056 /* CwlBadInstructionException.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 68846CF99809A8BB96520D4EF68A1CD6 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0396503F8DBB4F70B59E78A9F62695F3 /* Foundation.framework */; }; - 688A762122DE1032000CB933 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 688A762022DE1032000CB933 /* Assets.xcassets */; }; - 6ADEB55FAF48827EE08D5E1B6F946501 /* BeLogical.swift in Sources */ = {isa = PBXBuildFile; fileRef = 493396BFE4F2972CC647D93F01EA4E3D /* BeLogical.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 6AE239C5D116E1C06F5705699FB9EAF0 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8F1C8AE77592302C5AF8840458F6A7C3 /* XCTest.framework */; }; - 6DBC8EB7532E931C2FBDA71D1E0B66A4 /* FBSnapshotTestCase-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F87B4C3DF9E39BE60AA2539F7D6465CD /* FBSnapshotTestCase-dummy.m */; }; - 72EAF9D11A6F6AA098FDA5BF0D9614B3 /* AssertionRecorder.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB06727B46710C042DD7C1C529932490 /* AssertionRecorder.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 73D0683E05F3565AE7175088B7CE6DC0 /* PopupDialog-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A0A1FC688B731C3AFCEDE79E21616EC /* PopupDialog-dummy.m */; }; - 75715424923FF012103361F76C7A8A05 /* AllPass.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68FCF21795952014AA402E622F36E049 /* AllPass.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 77CC261294B63B80E6C4285045943438 /* ExpectationMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70A02165B63C411CB0CA1467595C40C9 /* ExpectationMessage.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 7A009CFEBD7D09FB5DA532F54EB9FBEF /* TransitionAnimations.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBC7F6A9940A06449DE233A88EB8ECB1 /* TransitionAnimations.swift */; }; - 7BF64B8EB111B20098752B4813CD13D9 /* Match.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AA92EDEF03A1015E5878A9ECA73BB6A /* Match.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 7EBE128BBA4CC34DBF4853B1E747C724 /* DynamicBlurView-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 101D3770BE97321333AF4B130E226A96 /* DynamicBlurView-dummy.m */; }; - 81156AE99DEF656F29B13B8176CDC3B5 /* CGContext+CGImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74D42C5E69D6BBA474F0716A84810ED2 /* CGContext+CGImage.swift */; }; - 82682BC16D5B4EE13D8455F008983751 /* MatcherFunc.swift in Sources */ = {isa = PBXBuildFile; fileRef = 112DB459CB78FF9B606088701CDE72FD /* MatcherFunc.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 83B9E5412A63412A151E0092BF6AF7CA /* PresentationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0DCFE8F07DDE9B0C2DFCEE86E9C7C967 /* PresentationManager.swift */; }; - 8630CA8EABAD27223326FB08E572E639 /* CwlDarwinDefinitions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A51B1E07AF713CC32319375437DD1AC /* CwlDarwinDefinitions.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 864E6B0B8D286D38A202F0381C7D45DD /* BeLessThan.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFC0EDE4766C3C1873262119D2CD0A94 /* BeLessThan.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 8750F8C785B06B6A70E10B61B4B88003 /* SourceLocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 057F58C7AE2DA604796B30040884DFBA /* SourceLocation.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 88396E68DC05A379282F3B374F75F43C /* FBSnapshotTestController.m in Sources */ = {isa = PBXBuildFile; fileRef = E852C041A4280BFE0EFA15CF1F1BB706 /* FBSnapshotTestController.m */; }; - 8A2AADAB3E3CBA788D4DF80984DADFE8 /* XCTestObservationCenter+Register.m in Sources */ = {isa = PBXBuildFile; fileRef = 81E41ADEE8C8232E7CC5A1F2F9577386 /* XCTestObservationCenter+Register.m */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 8CE3BF0ACE07EA42DD5DAC871BF4B767 /* FBSnapshotTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = 403A096447721C75BF14C7A3F6BCCDB2 /* FBSnapshotTestCase.m */; }; - 90142C6259374E18E640396A59AD379A /* FBSnapshotTestController.h in Headers */ = {isa = PBXBuildFile; fileRef = 74D83E2536A78136F46912FBFF2B77AA /* FBSnapshotTestController.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 928FFA6E7256231E743768EBC78E36A7 /* PopupDialog-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A08865764C1B76BA9B96BDB7A661620 /* PopupDialog-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 943EF9191F50F5C8364BFB46E6FFCACB /* PostNotification.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3F6E03C41DFE8DDC1511048AB880C30 /* PostNotification.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 9452493EEAF67E7B9C9224D696ABBA8B /* BeginWith.swift in Sources */ = {isa = PBXBuildFile; fileRef = D052209AC8712176CF87A682578D089F /* BeginWith.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 9586B053F23E4786E0499C3B76ABE281 /* ToSucceed.swift in Sources */ = {isa = PBXBuildFile; fileRef = E01E99A68FE6D40A3471AE8B17E719F3 /* ToSucceed.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 96E1774B23F5FB6842C3B3E36B1CF918 /* Pods-PopupDialog_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = A4AB04D722A9B70580BB83D9CC041170 /* Pods-PopupDialog_Example-dummy.m */; }; - 97B866E860E4C9433C4C10DD590D2D1D /* HaveCount.swift in Sources */ = {isa = PBXBuildFile; fileRef = C20DF3B736A984A8A901C82F7DB537A3 /* HaveCount.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 9B45F788C4CE05D2DC0686432FB0EE22 /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 071F19C535629E91C695B7E7DBDC4FFA /* Accelerate.framework */; }; - 9D65089019D558E5A9661F2DCAD20313 /* SwiftSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FA35888E8C899C40C4F27F0AB8973B7 /* SwiftSupport.swift */; }; - A254857FE369E684CBE3B4F6F292239D /* PopupDialogDefaultButtons.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B1387C6FD1B684C3898213BA1A2A2B0 /* PopupDialogDefaultButtons.swift */; }; - A28905FACC5D77141D82FD07822E1266 /* mach_excServer.c in Sources */ = {isa = PBXBuildFile; fileRef = E2335CA5AAD016B1DAFC50520DC12151 /* mach_excServer.c */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - A2DB6695330623A662CEDEA0EC8598C4 /* CwlCatchException.m in Sources */ = {isa = PBXBuildFile; fileRef = A76484091D5ABDF3F244B9EA6428C1E7 /* CwlCatchException.m */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - A3A25739D8FCB7A4FE17C8C5A6C7BE72 /* NMBStringify.h in Headers */ = {isa = PBXBuildFile; fileRef = 83E8F78BE4BCA36125359604509DBBAD /* NMBStringify.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A525E29E0A8079B35B793D8A2B5FBDF2 /* UIImage+Snapshot.m in Sources */ = {isa = PBXBuildFile; fileRef = 14EC84B096B791D9DB25888C67DC1920 /* UIImage+Snapshot.m */; }; - A82232B7EA64317A4F0A1F5FC2C9F5D6 /* BeLessThanOrEqual.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18416CB52911A067126057FA2295B58A /* BeLessThanOrEqual.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - A94100505467526DB734FAB115BF715C /* PopupDialogOverlayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B85748517E837D6DA8255F8EFF23D92B /* PopupDialogOverlayView.swift */; }; - AB7A087F4F097DF5439A4503B2221E8C /* SatisfyAllOf.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC627C463113F5A776F9FB272C8F4254 /* SatisfyAllOf.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - AC07189DEA030365C05F5501A8F0498E /* Functional.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B555B3BED0DBFF109DF78916794FB52 /* Functional.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - B18FE5EE478D75593AE4D0C6B1E6506F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0396503F8DBB4F70B59E78A9F62695F3 /* Foundation.framework */; }; - B25D795BDC4F426BC01EFC911F368B81 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0396503F8DBB4F70B59E78A9F62695F3 /* Foundation.framework */; }; - B2F489FB022F836FB35B3FEABF68903C /* PopupDialog+Keyboard.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0DB37505438AC54227D55B8BD8BEF31E /* PopupDialog+Keyboard.swift */; }; - B4374EE986ACDA18DE16359C36F43971 /* BeIdenticalTo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BCCEAA100D80B4239CDB98443C2FB6D /* BeIdenticalTo.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - B52BCD660C0CA96651CA9AEAB5672D7B /* CaptureQuality.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C6F790D39FBBF31DF5E9DECE17E6F27 /* CaptureQuality.swift */; }; - B74CD6E6EBEA0B642776BCB37850415D /* UIImage+Snapshot.h in Headers */ = {isa = PBXBuildFile; fileRef = 297AB8230193A0DAA3A1408EF6C34587 /* UIImage+Snapshot.h */; settings = {ATTRIBUTES = (Private, ); }; }; - B7765DD0B31748724E386AA238799A93 /* CwlCatchException.swift in Sources */ = {isa = PBXBuildFile; fileRef = 321CDBDFEA4951B44E94B9B5BCBB4996 /* CwlCatchException.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - BDB3FCECD68FF28D4F74698F452063FD /* BeEmpty.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F1124B9692D608EC99400E0A4F535E3 /* BeEmpty.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - BE8B6D8BA702869EC5CFFA2B59CDCB6E /* Stringers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F51CBF47E005823E6A0F6F3CD578FCD /* Stringers.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - C08A03032406A24E285B680ACE7A9E73 /* TrackingMode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F1D28079A6D6E70E58C38E61F042B2A /* TrackingMode.swift */; }; - C0F8730BE864945038D14BF58B97CA94 /* MatcherProtocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = D58BF5FDACF5AE184110FFF767894AC7 /* MatcherProtocols.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - C3C0DE91C1EDADBF90CA908CB7677FF7 /* BeAKindOf.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8F2F188AF2F2B95A6F84A372020D097 /* BeAKindOf.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - C42E25AEAE4758760D9239D25E88FEAF /* CwlCatchException.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A4EF4BA115F9553E82AFB2B0E453027 /* CwlCatchException.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C49D52712466511E332C952834C81FE1 /* FBSnapshotTestCasePlatform.h in Headers */ = {isa = PBXBuildFile; fileRef = 00FC46044508113A009D88D540F1E018 /* FBSnapshotTestCasePlatform.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C6C51E1FBF972B7360BF01D94EAF3864 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0396503F8DBB4F70B59E78A9F62695F3 /* Foundation.framework */; }; - C9088581BC43832D6AF65207A507F6E9 /* BeCloseTo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 360DA97C674B5F1BBEA334DD9E1B5CD9 /* BeCloseTo.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - C923C7A7E74F165D32CAB0DDAB8C5504 /* Expression.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB09175E2560EFA89DB107739B0003C2 /* Expression.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - C971A8D42C7C043DC4970A69B81546A7 /* DSL.h in Headers */ = {isa = PBXBuildFile; fileRef = 5169668F2FE6098ACCEC6796DD3133B7 /* DSL.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C9D87D93855954B4B23CDB647DEB7D0E /* PopupDialogDefaultView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDBBE62BEA77FFACECF54D2753EEC2EE /* PopupDialogDefaultView.swift */; }; - CA9A2D74A41B640925B521CEC8BBEACE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0396503F8DBB4F70B59E78A9F62695F3 /* Foundation.framework */; }; - CF0DBC57CC4BAF16B8A5EE9B15A27A72 /* RaisesException.swift in Sources */ = {isa = PBXBuildFile; fileRef = 964C2F88B48470725E71A6369F2A1AAD /* RaisesException.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - D04AAC8B22E4A4DC4F39891C4E52F251 /* UIImage+Diff.h in Headers */ = {isa = PBXBuildFile; fileRef = 6AC85212FDC881E6737CAADD8687DFF9 /* UIImage+Diff.h */; settings = {ATTRIBUTES = (Private, ); }; }; - D355A1A86FF97A4444383C7035DA1E1F /* AdapterProtocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC0E5B75A3AA5B8064B338E9539CF544 /* AdapterProtocols.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - D3AF7291BC7915600BAADBDB73C069DE /* Expectation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8FA546E16F2C7E96360FD891F38C47A8 /* Expectation.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - D56F0DEA256B9DF53EEA2F8BA8ABCA70 /* NMBExceptionCapture.m in Sources */ = {isa = PBXBuildFile; fileRef = 7FBDBF40BDAA750070F2523840D60A2C /* NMBExceptionCapture.m */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - D82DC5AAA5AA0E1A33EFE457C493D755 /* UIViewController+Visibility.swift in Sources */ = {isa = PBXBuildFile; fileRef = E3948FE866CE6990380A865041CBDFA6 /* UIViewController+Visibility.swift */; }; - D8D8636AA4F6781D2A809B0984B434B0 /* BeVoid.swift in Sources */ = {isa = PBXBuildFile; fileRef = B28AB78092EF356027D367919A6FB05A /* BeVoid.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - D9F9E9336475EE7188F8F29DDE0A2EB1 /* PresentationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F930241415802EAEF56950FC4CB922F9 /* PresentationController.swift */; }; - DCEE2E72739ADFB7890C33BC35099C01 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0396503F8DBB4F70B59E78A9F62695F3 /* Foundation.framework */; }; - DD2F32642C7F57A4EE71C41F183FEAC8 /* BlurLayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 39C2084D891ED45BDC883367945AACF2 /* BlurLayer.swift */; }; - E0B8D095C732352C854D365B9E5B993D /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 11DB7CB31983107A7414F650F4E837A4 /* UIKit.framework */; }; - E22D9E4B94A4FF6E415308E9D9B6D233 /* EndWith.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1AD45422C210959AAA7DD91AF86BE28 /* EndWith.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - E425105EF5426714A00D9A9B6222123A /* DSL+Wait.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00548BAEAB47DC6ED10CAA8C0C0A2E95 /* DSL+Wait.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - E594306BF52C899BCE23A4BA56CD0DD0 /* CwlPreconditionTesting.h in Headers */ = {isa = PBXBuildFile; fileRef = 72A8C0F537441C4F97601D09EC192155 /* CwlPreconditionTesting.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E6300A4FD79A77E07899341BD8FBB463 /* NMBObjCMatcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBC8ECAEA0B2A38F880089A0C0A4FE13 /* NMBObjCMatcher.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - E885D65DB6E4A4C6C0B85B8F97DF677A /* ThrowError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 811052CEE5B0982AA7CE3AE4FD986A4C /* ThrowError.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - E8AC509D18EBF21B1FEA909652A01108 /* FBSnapshotTestCasePlatform.m in Sources */ = {isa = PBXBuildFile; fileRef = 63E121F8691A77E25F34A346AEF6F8B7 /* FBSnapshotTestCasePlatform.m */; }; - E9157FAB5F209124A32CE9C3BB6B6027 /* UIImage+Blur.swift in Sources */ = {isa = PBXBuildFile; fileRef = F31B1C4454B1440714A9DB8F2A26C34A /* UIImage+Blur.swift */; }; - EB83843AA40E9A388ACBDD0BE1DD4065 /* DSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71B93D69977525B74E43FE1B09CE2860 /* DSL.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - EC78D8A8141D8268D6382866CDF8F16A /* InteractiveTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6ADE5CBAD09E36BB7B465F20267126B /* InteractiveTransition.swift */; }; - ED6FC5CEB11E74E7698F09F380683CFC /* BeGreaterThanOrEqualTo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59169802A6943F3CF3E6863F541A89BE /* BeGreaterThanOrEqualTo.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - EF939F4625A0E03E9DEC69923879FAAD /* Nimble-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6CDBDFA6ADBDBDB485FB855B4F5DE52D /* Nimble-dummy.m */; }; - EFC67FB506472146894C81BD6A680894 /* Await.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32CE95AA00F4BDC440FB69A80F975275 /* Await.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - F1AAAE00BB32B733B238E2B4E8424506 /* UIImage+Compare.h in Headers */ = {isa = PBXBuildFile; fileRef = 642EC164F785288462C5450A382E2B3C /* UIImage+Compare.h */; settings = {ATTRIBUTES = (Private, ); }; }; - F5F579CACAC5D039AEA52CFD85BAA1DC /* DSL.m in Sources */ = {isa = PBXBuildFile; fileRef = E1F08767ED830C0A4ADBB9AEABBD6298 /* DSL.m */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - F720FAF13A108CE6901E0A8B0580E1E8 /* FBSnapshotTestCase-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 23527CD8F043D308D25644A0DCE44123 /* FBSnapshotTestCase-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F82E29CC1BF7165FF77D9C4A387357A7 /* PopupDialogButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = BEB17063EC5F1BD2547DA25EDAD1243E /* PopupDialogButton.swift */; }; - FAF7FF5CC98733942F81EACBDFA6083F /* NMBStringify.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EAD86BEBD8AD8016C0367602A7A4846 /* NMBStringify.m */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 028DF0FD8A2D44D80EB0313263408364 /* CwlCatchException.h in Headers */ = {isa = PBXBuildFile; fileRef = 74823AAD4B57CA924A7ADCE10A08B72C /* CwlCatchException.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 05B0FB93D36C759F7614D065FBC0B164 /* FBSnapshotTestController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8585C63BBC446F4E8A88731650241983 /* FBSnapshotTestController.m */; }; + 091E200786E28C6766A07D636E0B33AB /* FBSnapshotTestCase.h in Headers */ = {isa = PBXBuildFile; fileRef = BE9753BAD372FFB193C0F38512BDB87E /* FBSnapshotTestCase.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0B4955FACB8418E80447FBB5B99CD5C1 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA075E3BCAFC670A0D5A3C1796CE7327 /* Foundation.framework */; }; + 144BDE93E26654901B4FB21484EC77BB /* Pods-PopupDialog_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 29744CD016B1185AC562D0482E20989D /* Pods-PopupDialog_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 148034F66372FB0115EB12D52EA2545A /* MatcherFunc.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0AABD3AA8D14DF1487084914771264AE /* MatcherFunc.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 15A3B154223AF927E93AC5C83732F8C1 /* UIImage+Diff.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D41491FB9AB86E87AD99971C8A6B13F /* UIImage+Diff.m */; }; + 1ABBEF76CF516143AC4C3CD3743BACB6 /* TransitionAnimations.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38D83146DF4CB712F570F9D8D91A29C5 /* TransitionAnimations.swift */; }; + 1B57A0387C2CBCCF616043C57BB60215 /* XCTestObservationCenter+Register.m in Sources */ = {isa = PBXBuildFile; fileRef = 0C10507EBB8AA3756829FDC5FAC25C81 /* XCTestObservationCenter+Register.m */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 1E60789D3801FE2CCFCDFE262CDB2C39 /* DynamicBlurView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADDE6276688C7E8C98EFB817A5289DBB /* DynamicBlurView.swift */; }; + 1F6FBBBBE38178FA36B2CB60271A0D1E /* DynamicBlurView.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 38328F060AF39895E284A3811EC4A9BD /* DynamicBlurView.framework */; }; + 25061DCFE254B9A51567D57282FD09B6 /* BeLogical.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80EE28C5B16EAD867F263D863CA8FC4E /* BeLogical.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 258AD4ECFBD18E67F0B18FE3CF9B1AA7 /* UIImage+Compare.m in Sources */ = {isa = PBXBuildFile; fileRef = 87F785A29003BAC86FB78E9905A624B6 /* UIImage+Compare.m */; }; + 28AFE7BE0D55B9EB0436F652CDC0BF0A /* PresentationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B91546848953EFE3B8A19F21DA855A0 /* PresentationManager.swift */; }; + 2A244420894E5360D3E2E7FEC79AF783 /* NMBStringify.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D76BEEE5B32330195FB03044C3E4F44 /* NMBStringify.m */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 2AF068B3ADCE1AB7D890EC0684C83B63 /* Await.swift in Sources */ = {isa = PBXBuildFile; fileRef = B566E4F7B3B6C3FBFC3D25B4DC4F4CA1 /* Await.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 2B29853C2CD8A22239F8BA8AEAD7D870 /* UIImage+Blur.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC12B991F5D923B49A7E6F2B282A2058 /* UIImage+Blur.swift */; }; + 2B53456A071A2F00B3D1DF5F58E248E4 /* NMBExceptionCapture.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CFD05A4ADF118B4F237803DA904434C /* NMBExceptionCapture.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2B79FFCE612175372C451F1653D32D84 /* iOSSnapshotTestCase-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1243339E448CD16D18717B50F920BB09 /* iOSSnapshotTestCase-dummy.m */; }; + 2C1BD5BAE866697E817108A191FB28B6 /* FailureMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4677A1DC722B43705A27698CD6BFED09 /* FailureMessage.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 2CCCE84C7A1952595015411C9A436D3F /* SwiftSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C5299414864EBA7403DB7EB7300E148 /* SwiftSupport.swift */; }; + 2F1DFFA18F8227FF0B226B3E0971AD20 /* BeIdenticalTo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D3E08FF2BC522160B297D24F3DA657D /* BeIdenticalTo.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 30FD6CA8052FBCAD2D41DF768AEF5D49 /* CaptureQuality.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64091636CB0FA64C3BDF5E1799181546 /* CaptureQuality.swift */; }; + 325558B7841069C5A237F82E8C6C473D /* DSL+Wait.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35165D0C2642FE0116B49AA4F537ACB8 /* DSL+Wait.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 37C28AD0CD393A0063A6E3B3400643EC /* AdapterProtocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5D0DC3E3B34D8BC8DEB09101BF7DC18 /* AdapterProtocols.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 37EC39C7D93118336AF1E98E9C7BAAA2 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA075E3BCAFC670A0D5A3C1796CE7327 /* Foundation.framework */; }; + 38E861DE6E72CED4680AE094D99B77C2 /* ExpectationMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C577112BA5BA61FA2DA28270C5DC2ED /* ExpectationMessage.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 3E0EC3B170A3018A620D85099A090B49 /* DSL.m in Sources */ = {isa = PBXBuildFile; fileRef = 3242E237431529C3360DC01E63A37357 /* DSL.m */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 41C177B80002765D079AC76D27E681FF /* TransitionAnimator.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFD5FE2A53D91BCAB12D921FBF4CD0D0 /* TransitionAnimator.swift */; }; + 4301C742FE4B509A8DC1504F367EEB99 /* Nimble-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EDE5D2AFC33018AA44EDF7079E6C8EF /* Nimble-dummy.m */; }; + 43F296FD5616B0ED2AFB31D98B37B1EE /* FBSnapshotTestCasePlatform.m in Sources */ = {isa = PBXBuildFile; fileRef = CF7931B37ABE8616C2C5EE19B47E0DDC /* FBSnapshotTestCasePlatform.m */; }; + 45B25D082BF52A41858126CE82885AD3 /* DSL.h in Headers */ = {isa = PBXBuildFile; fileRef = E048057C6B26BCEED88BCC32460490C6 /* DSL.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4808EAAB76DB5DA6290FF72A19AD872E /* PopupDialogOverlayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0421D68D0732E11A840C60681F90E79 /* PopupDialogOverlayView.swift */; }; + 4A0338D4EF95D82B125C304D02D5DA2F /* NMBExpectation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED3B51EEE439AD9A185845300BF06AD /* NMBExpectation.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 4AEAB6E35C5D3C704C9A55CFC315C982 /* Match.swift in Sources */ = {isa = PBXBuildFile; fileRef = F955CA621E1387D18B6737FF34FECD4B /* Match.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 4DE6EADE9A71BF90004C24201D5B8E0D /* UIImage+Snapshot.h in Headers */ = {isa = PBXBuildFile; fileRef = 30B622D6D13E7E41B1E38658218CBA00 /* UIImage+Snapshot.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 51D822E3615B158048411AD97501AEB4 /* AllPass.swift in Sources */ = {isa = PBXBuildFile; fileRef = 200A77E157E470437D3C032888ABC3C4 /* AllPass.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 542DF141858D476C903B497D200C9E2F /* PopupDialogContainerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B7F3B2BBF0FD8172393A0D3C72D33A9 /* PopupDialogContainerView.swift */; }; + 54B34FD4ABB0FE120E25F5189DA213F1 /* PopupDialog-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C02E3E9B4CD484F229C00E686266FB17 /* PopupDialog-dummy.m */; }; + 554593DE4755E5BF39C765037C0111FE /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7F2D87DA8397960596B1F5731D378B50 /* UIKit.framework */; }; + 55F0D512EE0320AB90253B2A0F149614 /* BeGreaterThan.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0648E1602C901BD99D761CFE85054D0D /* BeGreaterThan.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 56775B822D73E8E27D53C4A8F93593AB /* BeAKindOf.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52A81F33A5D84847EB12A37057C44A7B /* BeAKindOf.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 5C41F0CE907C842E5D662C74836EFBDC /* PostNotification.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE582858E444F78FF47160866AA54BC7 /* PostNotification.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 608181B47864A58E1C3B7B0AD0FE1FD1 /* Errors.swift in Sources */ = {isa = PBXBuildFile; fileRef = B87A13D66557F8250802FF7BC30E391C /* Errors.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 6193AAE31B8DDFE2B4FD667055CAE810 /* mach_excServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 0BD82EB3728DE03DCC8F5AD53A6C1753 /* mach_excServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 66BF5BCB2E0E11257E427A19F0CA69BB /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA075E3BCAFC670A0D5A3C1796CE7327 /* Foundation.framework */; }; + 6892F564CC7FFE1680FDC431F5E66416 /* ToSucceed.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F48B91B4064EA92FA60D4455FBF0257 /* ToSucceed.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 699AA6D35A7C549B72DF9DF2DA356283 /* BlurLayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 817F8878287639D4DD0224A69EA75047 /* BlurLayer.swift */; }; + 6AF32EB2E58E09B85C53A735BC162BC2 /* NimbleEnvironment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F05F0FE2AD0D7B08BB3F5A14E13573C /* NimbleEnvironment.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 6B4180B400F5F4BC3E85D36C3F9F5821 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1C7B47AEA8507F032FA94B515EA3FAE9 /* QuartzCore.framework */; }; + 6BE8158D44809BA48B8B85EB4F92A45B /* EndWith.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36DDC1C4D729976F1145A8935F22BCDD /* EndWith.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 6D43C958217DDF52EA577425F130C245 /* FBSnapshotTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = 27BA8A345B5729D15B3AACDDC93424DF /* FBSnapshotTestCase.m */; }; + 764666F465F544BCE897E3BF4BAFD38F /* CwlCatchBadInstruction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C61567B81BB2E922D32901B1A352946 /* CwlCatchBadInstruction.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 76F766F6D0B6D09D5158F42A55AD0F29 /* BeEmpty.swift in Sources */ = {isa = PBXBuildFile; fileRef = 049FF961807D2CCFB4BFB006B3F6903A /* BeEmpty.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 7714F044B1FCABBB1C097A62A2A36760 /* Predicate.swift in Sources */ = {isa = PBXBuildFile; fileRef = E99CE5007733C4DAEA48881B1B8ADE74 /* Predicate.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 77A0C071248147C59F2AD9EDE5D9025E /* NMBStringify.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D07B970FABF9B765FD43E03FBDD544D /* NMBStringify.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 785338FE484ABFB22EED6B979AC47AC4 /* NMBObjCMatcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17658872231DBE64CAE55AA7B703F18A /* NMBObjCMatcher.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 7BB6491AF900FAC4353B3DB6649DC259 /* SatisfyAllOf.swift in Sources */ = {isa = PBXBuildFile; fileRef = D287538FE9D0F5D3103907FBA0F711F1 /* SatisfyAllOf.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 7C7A79A8BEE1BEDB839CFA6F74E99C7E /* BeNil.swift in Sources */ = {isa = PBXBuildFile; fileRef = A67141F192016214363002CD81041EB2 /* BeNil.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 8189AB429E5264D1443941BFCEF26AFB /* PopupDialog.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95BA7DF0C033737DEE656977B7246131 /* PopupDialog.swift */; }; + 82DE69D2E7FDCA857DA010C5440D9222 /* BeginWith.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9229EA4AF176F697394404461DF72DBA /* BeginWith.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 83604F2F98561C2DE46A70CF3AE03D56 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E200B17B93288E7C000F89157FC6CE9 /* XCTest.framework */; }; + 839A40B87D37A40C7AA29B800E333724 /* DynamicBlurView-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 19BE1001CECE5FDB557512C1C892E151 /* DynamicBlurView-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 85A4019248D92500E641D01E1AD85724 /* CwlMachBadInstructionHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = D82BCFDBBAE6BD68E1CB4043767DD315 /* CwlMachBadInstructionHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 90D48E81FAE63982EAA8DE7E68010353 /* CwlMachBadInstructionHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 64860498EAA97994F29592BDBD85AB38 /* CwlMachBadInstructionHandler.m */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 91D72D53DEE7E861FC51B58432A07C24 /* Contain.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF8B64BA61B3141DD5976B92851DBC25 /* Contain.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 931F6BA94CDA2C88C3E446AB7359437B /* CGContext+CGImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE1358942C6DCF9745029C7914D4F182 /* CGContext+CGImage.swift */; }; + 937D90C2670CFFB0A35B291A75F9009C /* CwlDarwinDefinitions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79BB1E107157AB7C46336D7728F4AC69 /* CwlDarwinDefinitions.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 94BCC7B3DF53D9802499B98ABDC3FB05 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7F2D87DA8397960596B1F5731D378B50 /* UIKit.framework */; }; + 97BCA6C4414C737B5A3F616ECB87D63A /* PresentationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC7179BE06255B0BF3AA15CFD7235156 /* PresentationController.swift */; }; + 97BFF30F9CB958E74517131650D5BC7C /* mach_excServer.c in Sources */ = {isa = PBXBuildFile; fileRef = A1279F9C7CB28560E947BAB8241A24F9 /* mach_excServer.c */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 9A0EADA9585165E1063D26C596C546F2 /* DynamicBlurView-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C00E7D44ECF69FE5460B080571C2FB66 /* DynamicBlurView-dummy.m */; }; + 9C25BC723ED8C3D2AD876B9CAC53B173 /* Nimble.h in Headers */ = {isa = PBXBuildFile; fileRef = B9BE98E4FDCC94E0DAA530D3355D3FC2 /* Nimble.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9FA84BEFB9A6EBCD81771B3BACD1B6D7 /* BeLessThanOrEqual.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CD84BE03AE82DE3BA117239FC964D53 /* BeLessThanOrEqual.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + A5174F63D2FE4B0D01BBE018F09BC2A1 /* RaisesException.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AEBB59DAF48A0CEFB4F5297AEB3779D /* RaisesException.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + A7B7DDC792B0646E6BBC93DEBCBF1A86 /* CwlCatchException.m in Sources */ = {isa = PBXBuildFile; fileRef = 7186A4E63E259BF85CB22C8237BEEF4E /* CwlCatchException.m */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + A822E02EFA49284044CEDFED620F796E /* NimbleXCTestHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = F50BBB5271703EBEB2D8DC62A1B87F32 /* NimbleXCTestHandler.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + AA4E032922B89B6D052F14D0C0AB250B /* SourceLocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 150E79AC1ECCCC04306BC175588D3351 /* SourceLocation.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + AD4E0E8A55D8BEA2EBC4D011D0A7B212 /* BeGreaterThanOrEqualTo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B9A767D2961EF0F8B7FD646793BEDF0 /* BeGreaterThanOrEqualTo.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + AFBF35BD00F64E9B7B23C718F1340666 /* PopupDialogDefaultButtons.swift in Sources */ = {isa = PBXBuildFile; fileRef = 667AE1285750252FDFEA407317858F9F /* PopupDialogDefaultButtons.swift */; }; + AFF5E68DF0232B4E331A2A6D07A23EF6 /* TrackingMode.swift in Sources */ = {isa = PBXBuildFile; fileRef = E905F165F47AD6C59D19D988CCB1A1E1 /* TrackingMode.swift */; }; + B01AA54C73F2D6B3C7240E81AE5B7EE5 /* BeAnInstanceOf.swift in Sources */ = {isa = PBXBuildFile; fileRef = 87838F7843F344E484A1E26218D90F8B /* BeAnInstanceOf.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + B0EBBC56A849150DCF4CACB5DA6AC44A /* CGImage+Accelerate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 455DC35380748FE9C8AC10A6791D8553 /* CGImage+Accelerate.swift */; }; + B10D7CDB5826C2AFD79C2E255BCD5F05 /* UIViewController+Visibility.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B7C91CE0BEF5AD7EBE599E18BA6F6A8 /* UIViewController+Visibility.swift */; }; + B19CC4DDE469AA715425DF205252DF09 /* BeLessThan.swift in Sources */ = {isa = PBXBuildFile; fileRef = 104768EF226E926A18F524E8C79C0CE7 /* BeLessThan.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + B23CF8A9066EF6B3739E7E8868A2D6C7 /* PopupDialogDefaultViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74D9842BCB672CACFC947E250922F87E /* PopupDialogDefaultViewController.swift */; }; + B5DCD95D29D1251E9F7007D0D752BF3D /* UIView+Animations.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D832BDD2D3D8BC23F7550A2680D3AD1 /* UIView+Animations.swift */; }; + B7E2AB7A6C70C55094F252AFA84AD9C3 /* Expression.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E941EF8F373F12B868892D01A1BA655 /* Expression.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + B8FB2D067E0C5605457C188F19392785 /* PopupDialog+Keyboard.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C8894F8D3D2B3BA57C2A7BC7D100798 /* PopupDialog+Keyboard.swift */; }; + BB37A7C8F86DF110FBE474CCE487F88B /* PopupDialogDefaultView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AA35D35E0EC672D7AC55914FA29B4EB /* PopupDialogDefaultView.swift */; }; + BB4EF29493E23FCD573A571EA2FC2691 /* BeVoid.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5CAF1B1DD973C6246CC3DB8C8E3DEDB /* BeVoid.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + BC87DC0E426ED91DB6BDBF2DF5BF2E3C /* Equal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 83DAF84EA18303E3BB7DE997060F15DD /* Equal.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + BE9631B3CFF5881B6C29BBA43FD8B81E /* Nimble-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FA2D4A0B3E941EAC2405224507125B9 /* Nimble-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BF886FB46C3CDABBD1583AF65B051021 /* AssertionRecorder.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD102EC8424E9B47199994939DEEFCB6 /* AssertionRecorder.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + C21C81182C2082520FFF8A70B6C01A7B /* Pods-PopupDialog_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3F8CFEBEEF998FFE137C33CFF02EF8D6 /* Pods-PopupDialog_Example-dummy.m */; }; + C2D51D0E38F630A8A468843702A90348 /* FBSnapshotTestController.h in Headers */ = {isa = PBXBuildFile; fileRef = F22CD88D4A163E52EFC06779F30AAF0D /* FBSnapshotTestController.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C3E37DE60D2E23308D089991D99BB571 /* NMBExceptionCapture.m in Sources */ = {isa = PBXBuildFile; fileRef = 9FA77AA498A074ACC80A4D92592F369C /* NMBExceptionCapture.m */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + C4F69BE250F3575D749A5E10CB782F9A /* CwlCatchException.swift in Sources */ = {isa = PBXBuildFile; fileRef = 310A46556D07A0296C66D5864B4B1822 /* CwlCatchException.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + C608CD5014667D549210559A33CA1892 /* DynamicBlurView.h in Headers */ = {isa = PBXBuildFile; fileRef = 16F11C32475366566F3A1AE69D966D67 /* DynamicBlurView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CF780D83CD27F18935122124907C4848 /* InteractiveTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = 325E316C92DF01A9D94DF6430091DC23 /* InteractiveTransition.swift */; }; + D0664493DF417CB8D86DFAE07F9671E4 /* ThrowAssertion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3103870D569FB5F369820BD98DC247AF /* ThrowAssertion.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + D0DE9DDC173315C08C72D6DE1B3C859E /* UIImage+Compare.h in Headers */ = {isa = PBXBuildFile; fileRef = 4823F2C2EEADA5B354927EB340E3E020 /* UIImage+Compare.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D1108B0B95C44070293DEC99A96E8B9E /* BeCloseTo.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE88B1AA041F9C52FFFF5D1B373D17CD /* BeCloseTo.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + D119ECF5F4F2CB90DFBA17153A844161 /* PopupDialog-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 6AC75CF853BC4363E81362410CBB15C0 /* PopupDialog-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D67390654B973701CF79FBEBBA6A6DA1 /* UIImageView+Calculations.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4DE10CE7D7C57069894709C6EBE62D5C /* UIImageView+Calculations.swift */; }; + D7CCF84F0F0D1FC2D050CA0F3EAD4E32 /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C335FD9E99D06E1D6FF9521C5F9FEB2 /* Accelerate.framework */; }; + D91179CD68BA1F5A48C16A42B6D14608 /* FBSnapshotTestCasePlatform.h in Headers */ = {isa = PBXBuildFile; fileRef = 59632C31CC7E9B0E97E82219B426C6BA /* FBSnapshotTestCasePlatform.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DE170038470E8DDDBC393195336A19B8 /* CwlPreconditionTesting.h in Headers */ = {isa = PBXBuildFile; fileRef = 249EC0574A7A3B3075817EC5A0CD4C74 /* CwlPreconditionTesting.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DE8627DC4C00D882077FC1D3E87BBEE5 /* HaveCount.swift in Sources */ = {isa = PBXBuildFile; fileRef = C2BACD44F94D3A1EBD2170A673CE67AD /* HaveCount.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + DED2339032E336A6C72A1812E3300AF7 /* CwlBadInstructionException.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607AF5DC12915B330572F1FD9A6253C0 /* CwlBadInstructionException.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + DF8E6E6872AF7D65EB8BC55923DB0B2E /* ContainElementSatisfying.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5537BA52CB0430AAD64E042140B410DF /* ContainElementSatisfying.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + E02F32E3075511E2B030DA022EB14D2E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA075E3BCAFC670A0D5A3C1796CE7327 /* Foundation.framework */; }; + E078C238870C170DD524C8149975B22E /* iOSSnapshotTestCase-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 02293FB2EA49ECAC14876A877C5665B9 /* iOSSnapshotTestCase-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E2E9404DF91A582434E341BAA79EFA9F /* Expectation.swift in Sources */ = {isa = PBXBuildFile; fileRef = A3EFD0811319BB07458B57D9711B0061 /* Expectation.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + E34B752A6940722D74EF7323F9CF96AB /* ThrowError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 511D5F3EF0C438FA53E15FAC3DB97D37 /* ThrowError.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + E36AB6320950BF25D873CEA9F9094A48 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA075E3BCAFC670A0D5A3C1796CE7327 /* Foundation.framework */; }; + E4B82392168C3D0D09AEF735DFAE18A1 /* SatisfyAnyOf.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE64350AE3AF7C9DE3DA3737E70644C5 /* SatisfyAnyOf.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + E523A7C9BB3E1DD9565AD0062BA13177 /* MatcherProtocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDD154686103441586C20809DF72C72A /* MatcherProtocols.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + E6B9EDF7E7EC48A6731FB949F2D97CA3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA075E3BCAFC670A0D5A3C1796CE7327 /* Foundation.framework */; }; + E7B32ED09537D571B1A28C42CE9E7DC9 /* UIImage+Snapshot.m in Sources */ = {isa = PBXBuildFile; fileRef = 287C70787CC4C2F3ABA8597DC104A392 /* UIImage+Snapshot.m */; }; + E978590228F0A06065B7EAD5DBF21CB1 /* Stringers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CF89A6943F689434ED9CB6279165EDC /* Stringers.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + E9894788BB6C368CE76AD7754F8558D3 /* MatchError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3ECE482291E4AB1C3CA3877C9D4FBBD1 /* MatchError.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + EF23FBAFDF08894B5DED08BF52377DDE /* PopupDialogButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7952F701BC2C67E165903F32888AC3CF /* PopupDialogButton.swift */; }; + F1926E4E362CBAED87FE5D17E219913A /* Functional.swift in Sources */ = {isa = PBXBuildFile; fileRef = 87B092C30EDF9B1934FDCE9AFF42924F /* Functional.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + F35CD6B3F10783E58481D6E00ACF3A39 /* DSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9B297BF2DF246257A265F8F19AF1478 /* DSL.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + F4FC149115FDBD8243CA10FA4552B4C8 /* Pods-PopupDialog_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 69B71AD153BEE005185EDF50D848A1BC /* Pods-PopupDialog_Tests-dummy.m */; }; + F7CCFB351CD1D60A555D1F5037EEC775 /* Async.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FCD81F4FCC8CBBB090E891E96AB22B2 /* Async.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + FA71E485EBC200D061E8C861607C02D9 /* Pods-PopupDialog_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 46863F33A0753DFBCB245F19F5E87E46 /* Pods-PopupDialog_Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + FDBD0FFF2F3875EA683279E7A02310E2 /* AssertionDispatcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 431C0DCBF7EA442CC2886C333A20C0DF /* AssertionDispatcher.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + FF107C8DAD13A21F44CE5072AAC76B51 /* UIImage+Diff.h in Headers */ = {isa = PBXBuildFile; fileRef = 6A4FD942AB99D4D6B1BAF5F19A80C325 /* UIImage+Diff.h */; settings = {ATTRIBUTES = (Private, ); }; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 2763FCA98104FEE93EB4E54D32DDF454 /* PBXContainerItemProxy */ = { + 0BB024B8D969D444E23F642A0CC53711 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 7D914FA2F03C860D5133BA2DB87C594A; - remoteInfo = DynamicBlurView; + remoteGlobalIDString = CA74CEED40A402865660392784D34978; + remoteInfo = "Pods-PopupDialog_Example"; }; - 5DE6A812F01602ABD737FAE5CFFDCA8E /* PBXContainerItemProxy */ = { + 416CAAA122ADB75F6B80477E6535EA1C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 64EF52228FAC44ED257BDDD2291AE3A3; - remoteInfo = "Pods-PopupDialog_Example"; + remoteGlobalIDString = 259FA497B621B18FB2921DA18AA46AC2; + remoteInfo = DynamicBlurView; }; - 605A0384FCE86EF59C690F4BD7079E93 /* PBXContainerItemProxy */ = { + 671940896928CBAE7AD220920ED0ED03 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 98A98149697C80CEF8D5772791E92E66; - remoteInfo = FBSnapshotTestCase; + remoteGlobalIDString = 259FA497B621B18FB2921DA18AA46AC2; + remoteInfo = DynamicBlurView; }; - 69ED31331A85AC2F2E811E876B7BA820 /* PBXContainerItemProxy */ = { + A256C510D822779A85DA6B51AA741CEF /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 7D914FA2F03C860D5133BA2DB87C594A; - remoteInfo = DynamicBlurView; + remoteGlobalIDString = 462030076D657DEC3A2BAA37E0C875A2; + remoteInfo = SwiftLint; }; - D156589BEF28B1B971FF543898B5C8AB /* PBXContainerItemProxy */ = { + B649A5E3282D45F422BAD75E2AACA8AB /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 52B60EC2A583F24ACBB69C113F5488B9; - remoteInfo = SwiftLint; + remoteGlobalIDString = FFBD6E8AFCC899B135424D8D701837CE; + remoteInfo = PopupDialog; }; - DAF2265381CBAB2F1C3DDB7475CBDD74 /* PBXContainerItemProxy */ = { + C594029C1966F916E3FE5115D038CA68 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 6F13695E06195A78EA8A95F8C7ED0D2F; + remoteGlobalIDString = D4352C8CA6EDC802E8D85D2E61BC6173; remoteInfo = Nimble; }; - EC80586574AE02330BF77B2C0310E667 /* PBXContainerItemProxy */ = { + DDDB10C5FD26BB4F367DEBD30E06630C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 6E71929B582F8CD57B3DC1FD6560F047; - remoteInfo = PopupDialog; + remoteGlobalIDString = E0D5773C6DEB06357ABB396EF13BB2CD; + remoteInfo = iOSSnapshotTestCase; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 00548BAEAB47DC6ED10CAA8C0C0A2E95 /* DSL+Wait.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DSL+Wait.swift"; path = "Sources/Nimble/DSL+Wait.swift"; sourceTree = ""; }; - 00FC46044508113A009D88D540F1E018 /* FBSnapshotTestCasePlatform.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSnapshotTestCasePlatform.h; path = FBSnapshotTestCase/FBSnapshotTestCasePlatform.h; sourceTree = ""; }; - 0396503F8DBB4F70B59E78A9F62695F3 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - 03D6C9895C238A039A720030480F2172 /* PopupDialogContainerView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PopupDialogContainerView.swift; path = PopupDialog/Classes/PopupDialogContainerView.swift; sourceTree = ""; }; - 057F58C7AE2DA604796B30040884DFBA /* SourceLocation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SourceLocation.swift; path = Sources/Nimble/Utils/SourceLocation.swift; sourceTree = ""; }; - 06E50A391A2FBD68EA8C9758D39355B3 /* CwlMachBadInstructionHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CwlMachBadInstructionHandler.m; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlMachBadInstructionHandler/CwlMachBadInstructionHandler.m; sourceTree = ""; }; - 071F19C535629E91C695B7E7DBDC4FFA /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Accelerate.framework; sourceTree = DEVELOPER_DIR; }; - 0896F4869F45E8DA6473F1BFE63E57FE /* DynamicBlurView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DynamicBlurView.swift; path = DynamicBlurView/DynamicBlurView.swift; sourceTree = ""; }; - 0A08865764C1B76BA9B96BDB7A661620 /* PopupDialog-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PopupDialog-umbrella.h"; sourceTree = ""; }; - 0B80D23727C7BAECE77452D3786E9BE8 /* ThrowAssertion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ThrowAssertion.swift; path = Sources/Nimble/Matchers/ThrowAssertion.swift; sourceTree = ""; }; - 0C6F790D39FBBF31DF5E9DECE17E6F27 /* CaptureQuality.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CaptureQuality.swift; path = DynamicBlurView/CaptureQuality.swift; sourceTree = ""; }; - 0DB37505438AC54227D55B8BD8BEF31E /* PopupDialog+Keyboard.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "PopupDialog+Keyboard.swift"; path = "PopupDialog/Classes/PopupDialog+Keyboard.swift"; sourceTree = ""; }; - 0DCFE8F07DDE9B0C2DFCEE86E9C7C967 /* PresentationManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PresentationManager.swift; path = PopupDialog/Classes/PresentationManager.swift; sourceTree = ""; }; - 0E8C0D570869EA4E252523F6ECB80B99 /* PopupDialog.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = PopupDialog.modulemap; sourceTree = ""; }; - 0EAD86BEBD8AD8016C0367602A7A4846 /* NMBStringify.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = NMBStringify.m; path = Sources/NimbleObjectiveC/NMBStringify.m; sourceTree = ""; }; - 0F1D28079A6D6E70E58C38E61F042B2A /* TrackingMode.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TrackingMode.swift; path = DynamicBlurView/TrackingMode.swift; sourceTree = ""; }; - 101D3770BE97321333AF4B130E226A96 /* DynamicBlurView-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "DynamicBlurView-dummy.m"; sourceTree = ""; }; - 112DB459CB78FF9B606088701CDE72FD /* MatcherFunc.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MatcherFunc.swift; path = Sources/Nimble/Matchers/MatcherFunc.swift; sourceTree = ""; }; - 11DB7CB31983107A7414F650F4E837A4 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; - 1230E2988BCB2EEEF323AEA8ECBA0C2F /* mach_excServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = mach_excServer.h; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlMachBadInstructionHandler/mach_excServer.h; sourceTree = ""; }; - 12DB852B7EACB37262D622FA6AD3237B /* SwiftLint.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftLint.xcconfig; sourceTree = ""; }; - 14EC84B096B791D9DB25888C67DC1920 /* UIImage+Snapshot.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+Snapshot.m"; path = "FBSnapshotTestCase/Categories/UIImage+Snapshot.m"; sourceTree = ""; }; - 18416CB52911A067126057FA2295B58A /* BeLessThanOrEqual.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeLessThanOrEqual.swift; path = Sources/Nimble/Matchers/BeLessThanOrEqual.swift; sourceTree = ""; }; - 1B24E6E5F56D0BB20B8C0C00718A0D08 /* Nimble.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Nimble.modulemap; sourceTree = ""; }; - 1DA971E985C8B31B8F00808F5410A674 /* PopupDialog.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PopupDialog.swift; path = PopupDialog/Classes/PopupDialog.swift; sourceTree = ""; }; - 1FA35888E8C899C40C4F27F0AB8973B7 /* SwiftSupport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SwiftSupport.swift; path = FBSnapshotTestCase/SwiftSupport.swift; sourceTree = ""; }; - 23527CD8F043D308D25644A0DCE44123 /* FBSnapshotTestCase-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FBSnapshotTestCase-umbrella.h"; sourceTree = ""; }; - 257D5F8B0DCEC33CDA26D63499FB0495 /* FBSnapshotTestCase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSnapshotTestCase.h; path = FBSnapshotTestCase/FBSnapshotTestCase.h; sourceTree = ""; }; - 25CAF0CF8FA9D90CE9A964CC2EBC89BE /* Predicate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Predicate.swift; path = Sources/Nimble/Matchers/Predicate.swift; sourceTree = ""; }; - 2970A1076280C6E082DE6D039572CA26 /* Pods-PopupDialog_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-PopupDialog_Tests.release.xcconfig"; sourceTree = ""; }; - 297AB8230193A0DAA3A1408EF6C34587 /* UIImage+Snapshot.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+Snapshot.h"; path = "FBSnapshotTestCase/Categories/UIImage+Snapshot.h"; sourceTree = ""; }; - 2A51B1E07AF713CC32319375437DD1AC /* CwlDarwinDefinitions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CwlDarwinDefinitions.swift; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlPreconditionTesting/CwlDarwinDefinitions.swift; sourceTree = ""; }; - 2B1387C6FD1B684C3898213BA1A2A2B0 /* PopupDialogDefaultButtons.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PopupDialogDefaultButtons.swift; path = PopupDialog/Classes/PopupDialogDefaultButtons.swift; sourceTree = ""; }; - 2B555B3BED0DBFF109DF78916794FB52 /* Functional.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Functional.swift; path = Sources/Nimble/Utils/Functional.swift; sourceTree = ""; }; - 2BD220BDB7064BEFFC9E060BA9677245 /* Pods-PopupDialog_Tests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-PopupDialog_Tests-Info.plist"; sourceTree = ""; }; - 2E14A056794F0B689BD9BC5BFC1E7359 /* Pods-PopupDialog_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-PopupDialog_Tests-dummy.m"; sourceTree = ""; }; - 301A0279C95390C10CDA3DC8E2E1BAF2 /* Pods-PopupDialog_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-PopupDialog_Tests-acknowledgements.plist"; sourceTree = ""; }; - 321CDBDFEA4951B44E94B9B5BCBB4996 /* CwlCatchException.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CwlCatchException.swift; path = Carthage/Checkouts/CwlCatchException/Sources/CwlCatchException/CwlCatchException.swift; sourceTree = ""; }; - 32CE95AA00F4BDC440FB69A80F975275 /* Await.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Await.swift; path = Sources/Nimble/Utils/Await.swift; sourceTree = ""; }; - 34FB964502259D0FF233CE71CFDD2A71 /* PopupDialog.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PopupDialog.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 3578BE46EA8B3A926D36CD6419758AA4 /* Contain.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Contain.swift; path = Sources/Nimble/Matchers/Contain.swift; sourceTree = ""; }; - 360DA97C674B5F1BBEA334DD9E1B5CD9 /* BeCloseTo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeCloseTo.swift; path = Sources/Nimble/Matchers/BeCloseTo.swift; sourceTree = ""; }; - 38D6C61133B639A2B434904EDC0E25EC /* NMBExceptionCapture.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = NMBExceptionCapture.h; path = Sources/NimbleObjectiveC/NMBExceptionCapture.h; sourceTree = ""; }; - 39C2084D891ED45BDC883367945AACF2 /* BlurLayer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlurLayer.swift; path = DynamicBlurView/BlurLayer.swift; sourceTree = ""; }; - 3AE7F0062F408364EC0F24044FA83D49 /* Pods-PopupDialog_Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-PopupDialog_Example-frameworks.sh"; sourceTree = ""; }; - 3BCCEAA100D80B4239CDB98443C2FB6D /* BeIdenticalTo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeIdenticalTo.swift; path = Sources/Nimble/Matchers/BeIdenticalTo.swift; sourceTree = ""; }; - 403A096447721C75BF14C7A3F6BCCDB2 /* FBSnapshotTestCase.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSnapshotTestCase.m; path = FBSnapshotTestCase/FBSnapshotTestCase.m; sourceTree = ""; }; - 4066371F801BE06ABA7B5378D1516984 /* UIApplication+StrictKeyWindow.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIApplication+StrictKeyWindow.m"; path = "FBSnapshotTestCase/Categories/UIApplication+StrictKeyWindow.m"; sourceTree = ""; }; - 493396BFE4F2972CC647D93F01EA4E3D /* BeLogical.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeLogical.swift; path = Sources/Nimble/Matchers/BeLogical.swift; sourceTree = ""; }; - 4A0A1FC688B731C3AFCEDE79E21616EC /* PopupDialog-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "PopupDialog-dummy.m"; sourceTree = ""; }; - 4B7B758730FD6CAAE90F7DB0B1DDFA39 /* FBSnapshotTestCase-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "FBSnapshotTestCase-Info.plist"; sourceTree = ""; }; - 4BAB293DC0DAC1537437AC4816A067CE /* Async.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Async.swift; path = Sources/Nimble/Matchers/Async.swift; sourceTree = ""; }; - 4C1286B7E412539B3FF9B70C238E83EB /* Nimble.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Nimble.xcconfig; sourceTree = ""; }; - 4CA3D96AE50B7C956B26E595B9D4F231 /* BeGreaterThan.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeGreaterThan.swift; path = Sources/Nimble/Matchers/BeGreaterThan.swift; sourceTree = ""; }; - 4EB568B257A9760AF7D1EB4AC7C16047 /* Equal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Equal.swift; path = Sources/Nimble/Matchers/Equal.swift; sourceTree = ""; }; - 4F26742D152937252FF450B2C14758C9 /* Pods_PopupDialog_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_PopupDialog_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 515D96EB3DCC6FFD927E5316AECF8E3E /* NimbleEnvironment.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NimbleEnvironment.swift; path = Sources/Nimble/Adapters/NimbleEnvironment.swift; sourceTree = ""; }; - 5169668F2FE6098ACCEC6796DD3133B7 /* DSL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DSL.h; path = Sources/NimbleObjectiveC/DSL.h; sourceTree = ""; }; - 55EB2E713776DD76CEE5A8F765C27BEE /* PopupDialog.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = PopupDialog.xcconfig; sourceTree = ""; }; - 57340A808DBA136ABD5E11C2ED9CE45F /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; - 59169802A6943F3CF3E6863F541A89BE /* BeGreaterThanOrEqualTo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeGreaterThanOrEqualTo.swift; path = Sources/Nimble/Matchers/BeGreaterThanOrEqualTo.swift; sourceTree = ""; }; - 5A537F208236FF12A11EF4ED807DD40A /* PopupDialog-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PopupDialog-prefix.pch"; sourceTree = ""; }; - 5B860197A4EB0939F19A944C8DE7B0BB /* MatchError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MatchError.swift; path = Sources/Nimble/Matchers/MatchError.swift; sourceTree = ""; }; - 5C4F31330DFA99D699E4BDC8C3573D73 /* FBSnapshotTestCase.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = FBSnapshotTestCase.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 5F51CBF47E005823E6A0F6F3CD578FCD /* Stringers.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Stringers.swift; path = Sources/Nimble/Utils/Stringers.swift; sourceTree = ""; }; - 6123086D7F043014510D0169F0DEF417 /* Pods-PopupDialog_Tests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-PopupDialog_Tests-umbrella.h"; sourceTree = ""; }; - 6160A50827976F047D05E51443A69428 /* PopupDialog-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "PopupDialog-Info.plist"; sourceTree = ""; }; - 633AB6FEA3B38661462E0269BCFBD323 /* Pods-PopupDialog_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-PopupDialog_Example-acknowledgements.plist"; sourceTree = ""; }; - 63E121F8691A77E25F34A346AEF6F8B7 /* FBSnapshotTestCasePlatform.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSnapshotTestCasePlatform.m; path = FBSnapshotTestCase/FBSnapshotTestCasePlatform.m; sourceTree = ""; }; - 642EC164F785288462C5450A382E2B3C /* UIImage+Compare.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+Compare.h"; path = "FBSnapshotTestCase/Categories/UIImage+Compare.h"; sourceTree = ""; }; - 66F2E39DA85ACB237546341635BCF17C /* Pods-PopupDialog_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-PopupDialog_Tests.debug.xcconfig"; sourceTree = ""; }; - 688A762022DE1032000CB933 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 68BF571422DE1849006D64C0 /* .gitkeep */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = .gitkeep; sourceTree = ""; }; - 68FCF21795952014AA402E622F36E049 /* AllPass.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AllPass.swift; path = Sources/Nimble/Matchers/AllPass.swift; sourceTree = ""; }; - 698D59A6E494E53C0F43A878354170EF /* ContainElementSatisfying.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ContainElementSatisfying.swift; path = Sources/Nimble/Matchers/ContainElementSatisfying.swift; sourceTree = ""; }; - 6AC85212FDC881E6737CAADD8687DFF9 /* UIImage+Diff.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+Diff.h"; path = "FBSnapshotTestCase/Categories/UIImage+Diff.h"; sourceTree = ""; }; - 6CDBDFA6ADBDBDB485FB855B4F5DE52D /* Nimble-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Nimble-dummy.m"; sourceTree = ""; }; - 6D389C1F83BA03F065A60C7ED3604A36 /* Pods-PopupDialog_Tests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-PopupDialog_Tests.modulemap"; sourceTree = ""; }; - 6F632647C2DF9AA322A254983005F723 /* Nimble.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Nimble.h; path = Sources/Nimble/Nimble.h; sourceTree = ""; }; - 70A02165B63C411CB0CA1467595C40C9 /* ExpectationMessage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpectationMessage.swift; path = Sources/Nimble/ExpectationMessage.swift; sourceTree = ""; }; - 7155D2ED8BE5F64CC80C5520FC745A76 /* DynamicBlurView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DynamicBlurView.h; path = DynamicBlurView/DynamicBlurView.h; sourceTree = ""; }; - 7199B1867D8AD2C4E059C8765E3F3F49 /* SatisfyAnyOf.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SatisfyAnyOf.swift; path = Sources/Nimble/Matchers/SatisfyAnyOf.swift; sourceTree = ""; }; - 71B93D69977525B74E43FE1B09CE2860 /* DSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DSL.swift; path = Sources/Nimble/DSL.swift; sourceTree = ""; }; - 72018E0EC559764CDE31152BC5BE89D1 /* DynamicBlurView-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DynamicBlurView-prefix.pch"; sourceTree = ""; }; - 72A8C0F537441C4F97601D09EC192155 /* CwlPreconditionTesting.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CwlPreconditionTesting.h; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlPreconditionTesting/Mach/CwlPreconditionTesting.h; sourceTree = ""; }; - 7402B51D20F68E8EDF0BD5032DB9FF6B /* Nimble-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Nimble-prefix.pch"; sourceTree = ""; }; - 7465FC20B8D5A8395133678BB28FDA26 /* UIImage+Compare.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+Compare.m"; path = "FBSnapshotTestCase/Categories/UIImage+Compare.m"; sourceTree = ""; }; - 74D42C5E69D6BBA474F0716A84810ED2 /* CGContext+CGImage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "CGContext+CGImage.swift"; path = "DynamicBlurView/CGContext+CGImage.swift"; sourceTree = ""; }; - 74D83E2536A78136F46912FBFF2B77AA /* FBSnapshotTestController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSnapshotTestController.h; path = FBSnapshotTestCase/FBSnapshotTestController.h; sourceTree = ""; }; - 769D56B8A88B90E963557FF6D0D1858C /* FBSnapshotTestCase-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FBSnapshotTestCase-prefix.pch"; sourceTree = ""; }; - 7E8A64BA70EF2572DB9B8AB444F3EB2F /* UIImage+Diff.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+Diff.m"; path = "FBSnapshotTestCase/Categories/UIImage+Diff.m"; sourceTree = ""; }; - 7EB40C46EE0ED7091984B7942FD6672D /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; - 7F1124B9692D608EC99400E0A4F535E3 /* BeEmpty.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeEmpty.swift; path = Sources/Nimble/Matchers/BeEmpty.swift; sourceTree = ""; }; - 7FBDBF40BDAA750070F2523840D60A2C /* NMBExceptionCapture.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = NMBExceptionCapture.m; path = Sources/NimbleObjectiveC/NMBExceptionCapture.m; sourceTree = ""; }; - 811052CEE5B0982AA7CE3AE4FD986A4C /* ThrowError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ThrowError.swift; path = Sources/Nimble/Matchers/ThrowError.swift; sourceTree = ""; }; - 81E41ADEE8C8232E7CC5A1F2F9577386 /* XCTestObservationCenter+Register.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "XCTestObservationCenter+Register.m"; path = "Sources/NimbleObjectiveC/XCTestObservationCenter+Register.m"; sourceTree = ""; }; - 83E8F78BE4BCA36125359604509DBBAD /* NMBStringify.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = NMBStringify.h; path = Sources/NimbleObjectiveC/NMBStringify.h; sourceTree = ""; }; - 83EF801B4936FC33191B799D61923BC9 /* DynamicBlurView-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DynamicBlurView-umbrella.h"; sourceTree = ""; }; - 84B0303D51ED5C17293BC4477D02DAA9 /* BeNil.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeNil.swift; path = Sources/Nimble/Matchers/BeNil.swift; sourceTree = ""; }; - 86C4A2D817E6CFFF31BF75161625FD5D /* DynamicBlurView.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DynamicBlurView.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 88A2D46F56B9B53408465E9019411FEB /* FBSnapshotTestCase.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FBSnapshotTestCase.xcconfig; sourceTree = ""; }; - 8A4EF4BA115F9553E82AFB2B0E453027 /* CwlCatchException.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CwlCatchException.h; path = Carthage/Checkouts/CwlCatchException/Sources/CwlCatchExceptionSupport/include/CwlCatchException.h; sourceTree = ""; }; - 8C2C079E8AFC3A5EFF22EE190BAEC967 /* UIView+Animations.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIView+Animations.swift"; path = "PopupDialog/Classes/UIView+Animations.swift"; sourceTree = ""; }; - 8F1C8AE77592302C5AF8840458F6A7C3 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; - 8FA546E16F2C7E96360FD891F38C47A8 /* Expectation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Expectation.swift; path = Sources/Nimble/Expectation.swift; sourceTree = ""; }; - 9294A2D8BAEE19009408690C2B5D3F4A /* UIImageView+Calculations.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIImageView+Calculations.swift"; path = "PopupDialog/Classes/UIImageView+Calculations.swift"; sourceTree = ""; }; - 964C2F88B48470725E71A6369F2A1AAD /* RaisesException.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RaisesException.swift; path = Sources/Nimble/Matchers/RaisesException.swift; sourceTree = ""; }; - 98E349E39A55FEA2A0FAD7D52575217A /* Pods-PopupDialog_Example-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-PopupDialog_Example-Info.plist"; sourceTree = ""; }; - 99B3B57867426BE9922334CDB71EA529 /* DynamicBlurView.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = DynamicBlurView.modulemap; sourceTree = ""; }; - 9AA92EDEF03A1015E5878A9ECA73BB6A /* Match.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Match.swift; path = Sources/Nimble/Matchers/Match.swift; sourceTree = ""; }; - 9CC6517936E4387C41FE2189217EBA63 /* Pods-PopupDialog_Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-PopupDialog_Example-umbrella.h"; sourceTree = ""; }; + 02293FB2EA49ECAC14876A877C5665B9 /* iOSSnapshotTestCase-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "iOSSnapshotTestCase-umbrella.h"; sourceTree = ""; }; + 049FF961807D2CCFB4BFB006B3F6903A /* BeEmpty.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeEmpty.swift; path = Sources/Nimble/Matchers/BeEmpty.swift; sourceTree = ""; }; + 062B40CBDA4909A56A64AC28DFA2961C /* Pods_PopupDialog_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_PopupDialog_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 0648E1602C901BD99D761CFE85054D0D /* BeGreaterThan.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeGreaterThan.swift; path = Sources/Nimble/Matchers/BeGreaterThan.swift; sourceTree = ""; }; + 0AABD3AA8D14DF1487084914771264AE /* MatcherFunc.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MatcherFunc.swift; path = Sources/Nimble/Matchers/MatcherFunc.swift; sourceTree = ""; }; + 0AEF0170963EF4B08801F885B935F660 /* Pods-PopupDialog_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-PopupDialog_Example.release.xcconfig"; sourceTree = ""; }; + 0BD82EB3728DE03DCC8F5AD53A6C1753 /* mach_excServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = mach_excServer.h; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlMachBadInstructionHandler/mach_excServer.h; sourceTree = ""; }; + 0C10507EBB8AA3756829FDC5FAC25C81 /* XCTestObservationCenter+Register.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "XCTestObservationCenter+Register.m"; path = "Sources/NimbleObjectiveC/XCTestObservationCenter+Register.m"; sourceTree = ""; }; + 0C577112BA5BA61FA2DA28270C5DC2ED /* ExpectationMessage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpectationMessage.swift; path = Sources/Nimble/ExpectationMessage.swift; sourceTree = ""; }; + 0D76BEEE5B32330195FB03044C3E4F44 /* NMBStringify.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = NMBStringify.m; path = Sources/NimbleObjectiveC/NMBStringify.m; sourceTree = ""; }; + 104768EF226E926A18F524E8C79C0CE7 /* BeLessThan.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeLessThan.swift; path = Sources/Nimble/Matchers/BeLessThan.swift; sourceTree = ""; }; + 1243339E448CD16D18717B50F920BB09 /* iOSSnapshotTestCase-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "iOSSnapshotTestCase-dummy.m"; sourceTree = ""; }; + 150E79AC1ECCCC04306BC175588D3351 /* SourceLocation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SourceLocation.swift; path = Sources/Nimble/Utils/SourceLocation.swift; sourceTree = ""; }; + 15F87AFA7A13F5CC2191237E6950D9F6 /* iOSSnapshotTestCase-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "iOSSnapshotTestCase-Info.plist"; sourceTree = ""; }; + 16188B23CF197FC44AD8B26B9A757403 /* Pods-PopupDialog_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-PopupDialog_Tests-acknowledgements.markdown"; sourceTree = ""; }; + 16F11C32475366566F3A1AE69D966D67 /* DynamicBlurView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DynamicBlurView.h; path = DynamicBlurView/DynamicBlurView.h; sourceTree = ""; }; + 17658872231DBE64CAE55AA7B703F18A /* NMBObjCMatcher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NMBObjCMatcher.swift; path = Sources/Nimble/Adapters/NMBObjCMatcher.swift; sourceTree = ""; }; + 19BE1001CECE5FDB557512C1C892E151 /* DynamicBlurView-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DynamicBlurView-umbrella.h"; sourceTree = ""; }; + 1B66FE64BF30208C9B90EDFDF4CB4184 /* PopupDialog.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = PopupDialog.modulemap; sourceTree = ""; }; + 1B91546848953EFE3B8A19F21DA855A0 /* PresentationManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PresentationManager.swift; path = PopupDialog/Classes/PresentationManager.swift; sourceTree = ""; }; + 1C4A913B2ABE97CB0F21D60821655525 /* Nimble.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Nimble.xcconfig; sourceTree = ""; }; + 1C7B47AEA8507F032FA94B515EA3FAE9 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; + 1CECC7B09DE0C6F52BABCCDC6AE24C22 /* iOSSnapshotTestCase-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "iOSSnapshotTestCase-prefix.pch"; sourceTree = ""; }; + 1E941EF8F373F12B868892D01A1BA655 /* Expression.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Expression.swift; path = Sources/Nimble/Expression.swift; sourceTree = ""; }; + 1F48B91B4064EA92FA60D4455FBF0257 /* ToSucceed.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ToSucceed.swift; path = Sources/Nimble/Matchers/ToSucceed.swift; sourceTree = ""; }; + 200A77E157E470437D3C032888ABC3C4 /* AllPass.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AllPass.swift; path = Sources/Nimble/Matchers/AllPass.swift; sourceTree = ""; }; + 249EC0574A7A3B3075817EC5A0CD4C74 /* CwlPreconditionTesting.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CwlPreconditionTesting.h; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlPreconditionTesting/Mach/CwlPreconditionTesting.h; sourceTree = ""; }; + 27BA8A345B5729D15B3AACDDC93424DF /* FBSnapshotTestCase.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSnapshotTestCase.m; path = FBSnapshotTestCase/FBSnapshotTestCase.m; sourceTree = ""; }; + 287C70787CC4C2F3ABA8597DC104A392 /* UIImage+Snapshot.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+Snapshot.m"; path = "FBSnapshotTestCase/Categories/UIImage+Snapshot.m"; sourceTree = ""; }; + 29744CD016B1185AC562D0482E20989D /* Pods-PopupDialog_Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-PopupDialog_Example-umbrella.h"; sourceTree = ""; }; + 2BA118F30416203AD3F72914EF48A12A /* DynamicBlurView-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "DynamicBlurView-Info.plist"; sourceTree = ""; }; + 2C5299414864EBA7403DB7EB7300E148 /* SwiftSupport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SwiftSupport.swift; path = FBSnapshotTestCase/SwiftSupport.swift; sourceTree = ""; }; + 30B622D6D13E7E41B1E38658218CBA00 /* UIImage+Snapshot.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+Snapshot.h"; path = "FBSnapshotTestCase/Categories/UIImage+Snapshot.h"; sourceTree = ""; }; + 3103870D569FB5F369820BD98DC247AF /* ThrowAssertion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ThrowAssertion.swift; path = Sources/Nimble/Matchers/ThrowAssertion.swift; sourceTree = ""; }; + 310A46556D07A0296C66D5864B4B1822 /* CwlCatchException.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CwlCatchException.swift; path = Carthage/Checkouts/CwlCatchException/Sources/CwlCatchException/CwlCatchException.swift; sourceTree = ""; }; + 3242E237431529C3360DC01E63A37357 /* DSL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DSL.m; path = Sources/NimbleObjectiveC/DSL.m; sourceTree = ""; }; + 325E316C92DF01A9D94DF6430091DC23 /* InteractiveTransition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = InteractiveTransition.swift; path = PopupDialog/Classes/InteractiveTransition.swift; sourceTree = ""; }; + 35165D0C2642FE0116B49AA4F537ACB8 /* DSL+Wait.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DSL+Wait.swift"; path = "Sources/Nimble/DSL+Wait.swift"; sourceTree = ""; }; + 36DDC1C4D729976F1145A8935F22BCDD /* EndWith.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EndWith.swift; path = Sources/Nimble/Matchers/EndWith.swift; sourceTree = ""; }; + 38328F060AF39895E284A3811EC4A9BD /* DynamicBlurView.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DynamicBlurView.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 38D83146DF4CB712F570F9D8D91A29C5 /* TransitionAnimations.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TransitionAnimations.swift; path = PopupDialog/Classes/TransitionAnimations.swift; sourceTree = ""; }; + 3AA35D35E0EC672D7AC55914FA29B4EB /* PopupDialogDefaultView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PopupDialogDefaultView.swift; path = PopupDialog/Classes/PopupDialogDefaultView.swift; sourceTree = ""; }; + 3AEBB59DAF48A0CEFB4F5297AEB3779D /* RaisesException.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RaisesException.swift; path = Sources/Nimble/Matchers/RaisesException.swift; sourceTree = ""; }; + 3B248EF6FA846138728808541EF4BCC5 /* Pods-PopupDialog_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-PopupDialog_Example.debug.xcconfig"; sourceTree = ""; }; + 3C8894F8D3D2B3BA57C2A7BC7D100798 /* PopupDialog+Keyboard.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "PopupDialog+Keyboard.swift"; path = "PopupDialog/Classes/PopupDialog+Keyboard.swift"; sourceTree = ""; }; + 3DD2DA301B282EF57E9C93CF779114A3 /* Nimble.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Nimble.modulemap; sourceTree = ""; }; + 3E03482672DEA8CD8256EF0392339636 /* iOSSnapshotTestCase.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = iOSSnapshotTestCase.xcconfig; sourceTree = ""; }; + 3ECE482291E4AB1C3CA3877C9D4FBBD1 /* MatchError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MatchError.swift; path = Sources/Nimble/Matchers/MatchError.swift; sourceTree = ""; }; + 3EDE5D2AFC33018AA44EDF7079E6C8EF /* Nimble-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Nimble-dummy.m"; sourceTree = ""; }; + 3F8CFEBEEF998FFE137C33CFF02EF8D6 /* Pods-PopupDialog_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-PopupDialog_Example-dummy.m"; sourceTree = ""; }; + 401ECAF6FFC2200EEFED7B1B53B2F6BC /* Pods-PopupDialog_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-PopupDialog_Tests.debug.xcconfig"; sourceTree = ""; }; + 431C0DCBF7EA442CC2886C333A20C0DF /* AssertionDispatcher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AssertionDispatcher.swift; path = Sources/Nimble/Adapters/AssertionDispatcher.swift; sourceTree = ""; }; + 455DC35380748FE9C8AC10A6791D8553 /* CGImage+Accelerate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "CGImage+Accelerate.swift"; path = "DynamicBlurView/CGImage+Accelerate.swift"; sourceTree = ""; }; + 4677A1DC722B43705A27698CD6BFED09 /* FailureMessage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FailureMessage.swift; path = Sources/Nimble/FailureMessage.swift; sourceTree = ""; }; + 46863F33A0753DFBCB245F19F5E87E46 /* Pods-PopupDialog_Tests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-PopupDialog_Tests-umbrella.h"; sourceTree = ""; }; + 4823F2C2EEADA5B354927EB340E3E020 /* UIImage+Compare.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+Compare.h"; path = "FBSnapshotTestCase/Categories/UIImage+Compare.h"; sourceTree = ""; }; + 4B921A25089E53BFEDCD66354FE5169B /* DynamicBlurView-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DynamicBlurView-prefix.pch"; sourceTree = ""; }; + 4CFD05A4ADF118B4F237803DA904434C /* NMBExceptionCapture.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = NMBExceptionCapture.h; path = Sources/NimbleObjectiveC/NMBExceptionCapture.h; sourceTree = ""; }; + 4DE10CE7D7C57069894709C6EBE62D5C /* UIImageView+Calculations.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIImageView+Calculations.swift"; path = "PopupDialog/Classes/UIImageView+Calculations.swift"; sourceTree = ""; }; + 511D5F3EF0C438FA53E15FAC3DB97D37 /* ThrowError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ThrowError.swift; path = Sources/Nimble/Matchers/ThrowError.swift; sourceTree = ""; }; + 52A81F33A5D84847EB12A37057C44A7B /* BeAKindOf.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeAKindOf.swift; path = Sources/Nimble/Matchers/BeAKindOf.swift; sourceTree = ""; }; + 52E79702AB3898330C827CB689786AEB /* DynamicBlurView.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DynamicBlurView.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 5537BA52CB0430AAD64E042140B410DF /* ContainElementSatisfying.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ContainElementSatisfying.swift; path = Sources/Nimble/Matchers/ContainElementSatisfying.swift; sourceTree = ""; }; + 59632C31CC7E9B0E97E82219B426C6BA /* FBSnapshotTestCasePlatform.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSnapshotTestCasePlatform.h; path = FBSnapshotTestCase/FBSnapshotTestCasePlatform.h; sourceTree = ""; }; + 5C335FD9E99D06E1D6FF9521C5F9FEB2 /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/Accelerate.framework; sourceTree = DEVELOPER_DIR; }; + 5C61567B81BB2E922D32901B1A352946 /* CwlCatchBadInstruction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CwlCatchBadInstruction.swift; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlPreconditionTesting/CwlCatchBadInstruction.swift; sourceTree = ""; }; + 5F3C735F0FF2503CC2041F1CF007347D /* Nimble-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Nimble-Info.plist"; sourceTree = ""; }; + 5FCD81F4FCC8CBBB090E891E96AB22B2 /* Async.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Async.swift; path = Sources/Nimble/Matchers/Async.swift; sourceTree = ""; }; + 607AF5DC12915B330572F1FD9A6253C0 /* CwlBadInstructionException.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CwlBadInstructionException.swift; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlPreconditionTesting/CwlBadInstructionException.swift; sourceTree = ""; }; + 61760C778E71AF733C0C3FE68A2325B8 /* Pods-PopupDialog_Tests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-PopupDialog_Tests.modulemap"; sourceTree = ""; }; + 64091636CB0FA64C3BDF5E1799181546 /* CaptureQuality.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CaptureQuality.swift; path = DynamicBlurView/CaptureQuality.swift; sourceTree = ""; }; + 64860498EAA97994F29592BDBD85AB38 /* CwlMachBadInstructionHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CwlMachBadInstructionHandler.m; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlMachBadInstructionHandler/CwlMachBadInstructionHandler.m; sourceTree = ""; }; + 667AE1285750252FDFEA407317858F9F /* PopupDialogDefaultButtons.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PopupDialogDefaultButtons.swift; path = PopupDialog/Classes/PopupDialogDefaultButtons.swift; sourceTree = ""; }; + 69B71AD153BEE005185EDF50D848A1BC /* Pods-PopupDialog_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-PopupDialog_Tests-dummy.m"; sourceTree = ""; }; + 6A4FD942AB99D4D6B1BAF5F19A80C325 /* UIImage+Diff.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+Diff.h"; path = "FBSnapshotTestCase/Categories/UIImage+Diff.h"; sourceTree = ""; }; + 6AC75CF853BC4363E81362410CBB15C0 /* PopupDialog-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PopupDialog-umbrella.h"; sourceTree = ""; }; + 6CD84BE03AE82DE3BA117239FC964D53 /* BeLessThanOrEqual.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeLessThanOrEqual.swift; path = Sources/Nimble/Matchers/BeLessThanOrEqual.swift; sourceTree = ""; }; + 6ED3B51EEE439AD9A185845300BF06AD /* NMBExpectation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NMBExpectation.swift; path = Sources/Nimble/Adapters/NMBExpectation.swift; sourceTree = ""; }; + 7186A4E63E259BF85CB22C8237BEEF4E /* CwlCatchException.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CwlCatchException.m; path = Carthage/Checkouts/CwlCatchException/Sources/CwlCatchExceptionSupport/CwlCatchException.m; sourceTree = ""; }; + 722C7A27FD7D7E22369E39AAFFC586C2 /* Pods-PopupDialog_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-PopupDialog_Example-acknowledgements.plist"; sourceTree = ""; }; + 74823AAD4B57CA924A7ADCE10A08B72C /* CwlCatchException.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CwlCatchException.h; path = Carthage/Checkouts/CwlCatchException/Sources/CwlCatchExceptionSupport/include/CwlCatchException.h; sourceTree = ""; }; + 74D9842BCB672CACFC947E250922F87E /* PopupDialogDefaultViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PopupDialogDefaultViewController.swift; path = PopupDialog/Classes/PopupDialogDefaultViewController.swift; sourceTree = ""; }; + 77CC9B70E7718AF175B15CE716EC1493 /* Pods-PopupDialog_Example-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-PopupDialog_Example-Info.plist"; sourceTree = ""; }; + 7952F701BC2C67E165903F32888AC3CF /* PopupDialogButton.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PopupDialogButton.swift; path = PopupDialog/Classes/PopupDialogButton.swift; sourceTree = ""; }; + 79BB1E107157AB7C46336D7728F4AC69 /* CwlDarwinDefinitions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CwlDarwinDefinitions.swift; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlPreconditionTesting/CwlDarwinDefinitions.swift; sourceTree = ""; }; + 7B55FC5833F829BBE6DBA3E1D3624839 /* PopupDialog.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = PopupDialog.xcconfig; sourceTree = ""; }; + 7B9A767D2961EF0F8B7FD646793BEDF0 /* BeGreaterThanOrEqualTo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeGreaterThanOrEqualTo.swift; path = Sources/Nimble/Matchers/BeGreaterThanOrEqualTo.swift; sourceTree = ""; }; + 7E200B17B93288E7C000F89157FC6CE9 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; + 7F2D87DA8397960596B1F5731D378B50 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; + 80EE28C5B16EAD867F263D863CA8FC4E /* BeLogical.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeLogical.swift; path = Sources/Nimble/Matchers/BeLogical.swift; sourceTree = ""; }; + 817F8878287639D4DD0224A69EA75047 /* BlurLayer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlurLayer.swift; path = DynamicBlurView/BlurLayer.swift; sourceTree = ""; }; + 83DAF84EA18303E3BB7DE997060F15DD /* Equal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Equal.swift; path = Sources/Nimble/Matchers/Equal.swift; sourceTree = ""; }; + 8585C63BBC446F4E8A88731650241983 /* FBSnapshotTestController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSnapshotTestController.m; path = FBSnapshotTestCase/FBSnapshotTestController.m; sourceTree = ""; }; + 865F19D3D1EF135E1965B13962BE1B4B /* Pods-PopupDialog_Tests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-PopupDialog_Tests-frameworks.sh"; sourceTree = ""; }; + 87838F7843F344E484A1E26218D90F8B /* BeAnInstanceOf.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeAnInstanceOf.swift; path = Sources/Nimble/Matchers/BeAnInstanceOf.swift; sourceTree = ""; }; + 87B092C30EDF9B1934FDCE9AFF42924F /* Functional.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Functional.swift; path = Sources/Nimble/Utils/Functional.swift; sourceTree = ""; }; + 87F785A29003BAC86FB78E9905A624B6 /* UIImage+Compare.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+Compare.m"; path = "FBSnapshotTestCase/Categories/UIImage+Compare.m"; sourceTree = ""; }; + 8D07B970FABF9B765FD43E03FBDD544D /* NMBStringify.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = NMBStringify.h; path = Sources/NimbleObjectiveC/NMBStringify.h; sourceTree = ""; }; + 8D3E08FF2BC522160B297D24F3DA657D /* BeIdenticalTo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeIdenticalTo.swift; path = Sources/Nimble/Matchers/BeIdenticalTo.swift; sourceTree = ""; }; + 8D41491FB9AB86E87AD99971C8A6B13F /* UIImage+Diff.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+Diff.m"; path = "FBSnapshotTestCase/Categories/UIImage+Diff.m"; sourceTree = ""; }; + 8F05F0FE2AD0D7B08BB3F5A14E13573C /* NimbleEnvironment.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NimbleEnvironment.swift; path = Sources/Nimble/Adapters/NimbleEnvironment.swift; sourceTree = ""; }; + 8FA2D4A0B3E941EAC2405224507125B9 /* Nimble-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Nimble-umbrella.h"; sourceTree = ""; }; + 90DE7B18813B41B0237404EA7187BCD5 /* Pods-PopupDialog_Tests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-PopupDialog_Tests-Info.plist"; sourceTree = ""; }; + 9149414E122143FE570977D66C83E70C /* Pods_PopupDialog_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_PopupDialog_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 9229EA4AF176F697394404461DF72DBA /* BeginWith.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeginWith.swift; path = Sources/Nimble/Matchers/BeginWith.swift; sourceTree = ""; }; + 92EE080E4A4E64AE18D07C5479F1ABFA /* DynamicBlurView.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = DynamicBlurView.modulemap; sourceTree = ""; }; + 95BA7DF0C033737DEE656977B7246131 /* PopupDialog.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PopupDialog.swift; path = PopupDialog/Classes/PopupDialog.swift; sourceTree = ""; }; + 97174344DBF09A205DFA3DC57B25C7D1 /* PopupDialog-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "PopupDialog-Info.plist"; sourceTree = ""; }; + 9B7C91CE0BEF5AD7EBE599E18BA6F6A8 /* UIViewController+Visibility.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIViewController+Visibility.swift"; path = "PopupDialog/Classes/UIViewController+Visibility.swift"; sourceTree = ""; }; + 9B7F3B2BBF0FD8172393A0D3C72D33A9 /* PopupDialogContainerView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PopupDialogContainerView.swift; path = PopupDialog/Classes/PopupDialogContainerView.swift; sourceTree = ""; }; + 9CF89A6943F689434ED9CB6279165EDC /* Stringers.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Stringers.swift; path = Sources/Nimble/Utils/Stringers.swift; sourceTree = ""; }; + 9D832BDD2D3D8BC23F7550A2680D3AD1 /* UIView+Animations.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIView+Animations.swift"; path = "PopupDialog/Classes/UIView+Animations.swift"; sourceTree = ""; }; 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 9E676FA350BAF8126087BBBBCB484CDB /* PopupDialogDefaultViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PopupDialogDefaultViewController.swift; path = PopupDialog/Classes/PopupDialogDefaultViewController.swift; sourceTree = ""; }; - A013F2B906262190FBABDDB366F5434B /* PopupDialog.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; path = PopupDialog.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - A4AB04D722A9B70580BB83D9CC041170 /* Pods-PopupDialog_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-PopupDialog_Example-dummy.m"; sourceTree = ""; }; - A76484091D5ABDF3F244B9EA6428C1E7 /* CwlCatchException.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CwlCatchException.m; path = Carthage/Checkouts/CwlCatchException/Sources/CwlCatchExceptionSupport/CwlCatchException.m; sourceTree = ""; }; - A820AD98C110684A43E3EEF2E11D41B5 /* Nimble-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Nimble-umbrella.h"; sourceTree = ""; }; - A92CB81D978376BC2F0596E89E8AF772 /* NimbleXCTestHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NimbleXCTestHandler.swift; path = Sources/Nimble/Adapters/NimbleXCTestHandler.swift; sourceTree = ""; }; - AB06727B46710C042DD7C1C529932490 /* AssertionRecorder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AssertionRecorder.swift; path = Sources/Nimble/Adapters/AssertionRecorder.swift; sourceTree = ""; }; - B12949F2863B29728E61794A7286FD90 /* CwlCatchBadInstruction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CwlCatchBadInstruction.swift; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlPreconditionTesting/CwlCatchBadInstruction.swift; sourceTree = ""; }; - B28AB78092EF356027D367919A6FB05A /* BeVoid.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeVoid.swift; path = Sources/Nimble/Matchers/BeVoid.swift; sourceTree = ""; }; - B2EE30A42A66A81CBC64D0BBA25F792B /* TransitionAnimator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TransitionAnimator.swift; path = PopupDialog/Classes/TransitionAnimator.swift; sourceTree = ""; }; - B3F6E03C41DFE8DDC1511048AB880C30 /* PostNotification.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PostNotification.swift; path = Sources/Nimble/Matchers/PostNotification.swift; sourceTree = ""; }; - B44D7414C363A59797B255B0AC679CC7 /* DynamicBlurView.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DynamicBlurView.xcconfig; sourceTree = ""; }; - B450B6BFDFE3AEDDA29F72764AEA729C /* DynamicBlurView.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DynamicBlurView.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - B7636B793C45A6B7C3223D149C2D6478 /* FBSnapshotTestCase.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = FBSnapshotTestCase.modulemap; sourceTree = ""; }; - B85748517E837D6DA8255F8EFF23D92B /* PopupDialogOverlayView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PopupDialogOverlayView.swift; path = PopupDialog/Classes/PopupDialogOverlayView.swift; sourceTree = ""; }; - BA25CA8154E3DABB0DDA3EF619142C27 /* Pods_PopupDialog_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_PopupDialog_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - BAE263041362D074978BB3B577DF0A05 /* Nimble.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Nimble.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - BB09175E2560EFA89DB107739B0003C2 /* Expression.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Expression.swift; path = Sources/Nimble/Expression.swift; sourceTree = ""; }; - BBC8ECAEA0B2A38F880089A0C0A4FE13 /* NMBObjCMatcher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NMBObjCMatcher.swift; path = Sources/Nimble/Adapters/NMBObjCMatcher.swift; sourceTree = ""; }; - BEB17063EC5F1BD2547DA25EDAD1243E /* PopupDialogButton.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PopupDialogButton.swift; path = PopupDialog/Classes/PopupDialogButton.swift; sourceTree = ""; }; - C1AD45422C210959AAA7DD91AF86BE28 /* EndWith.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EndWith.swift; path = Sources/Nimble/Matchers/EndWith.swift; sourceTree = ""; }; - C20DF3B736A984A8A901C82F7DB537A3 /* HaveCount.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HaveCount.swift; path = Sources/Nimble/Matchers/HaveCount.swift; sourceTree = ""; }; - C48AD81FC13B15ABDC7C963EAB2D5167 /* NMBExpectation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NMBExpectation.swift; path = Sources/Nimble/Adapters/NMBExpectation.swift; sourceTree = ""; }; - C664F4D586706BFD0F11F98B08B10C12 /* CwlMachBadInstructionHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CwlMachBadInstructionHandler.h; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlMachBadInstructionHandler/include/CwlMachBadInstructionHandler.h; sourceTree = ""; }; - C6A00C4B2ADB7764C47E582CA6A3518A /* UIApplication+StrictKeyWindow.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIApplication+StrictKeyWindow.h"; path = "FBSnapshotTestCase/Categories/UIApplication+StrictKeyWindow.h"; sourceTree = ""; }; - C8EBE3D8F36B0D0D1FA6998CC2F6B89D /* Pods-PopupDialog_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-PopupDialog_Example-acknowledgements.markdown"; sourceTree = ""; }; - CC0E5B75A3AA5B8064B338E9539CF544 /* AdapterProtocols.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AdapterProtocols.swift; path = Sources/Nimble/Adapters/AdapterProtocols.swift; sourceTree = ""; }; - CFC0EDE4766C3C1873262119D2CD0A94 /* BeLessThan.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeLessThan.swift; path = Sources/Nimble/Matchers/BeLessThan.swift; sourceTree = ""; }; - D052209AC8712176CF87A682578D089F /* BeginWith.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeginWith.swift; path = Sources/Nimble/Matchers/BeginWith.swift; sourceTree = ""; }; - D58BF5FDACF5AE184110FFF767894AC7 /* MatcherProtocols.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MatcherProtocols.swift; path = Sources/Nimble/Matchers/MatcherProtocols.swift; sourceTree = ""; }; - D6ADE5CBAD09E36BB7B465F20267126B /* InteractiveTransition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = InteractiveTransition.swift; path = PopupDialog/Classes/InteractiveTransition.swift; sourceTree = ""; }; - D94E5FE82EB71B546653309B3AB0340E /* Pods-PopupDialog_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-PopupDialog_Example.modulemap"; sourceTree = ""; }; - DB0B0960351CCD1A27ED66390D9E9BD9 /* Pods-PopupDialog_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-PopupDialog_Tests-acknowledgements.markdown"; sourceTree = ""; }; - DC627C463113F5A776F9FB272C8F4254 /* SatisfyAllOf.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SatisfyAllOf.swift; path = Sources/Nimble/Matchers/SatisfyAllOf.swift; sourceTree = ""; }; - DDBBE62BEA77FFACECF54D2753EEC2EE /* PopupDialogDefaultView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PopupDialogDefaultView.swift; path = PopupDialog/Classes/PopupDialogDefaultView.swift; sourceTree = ""; }; - DEBE9743BEE9E58F26BA6451F2EFB056 /* CwlBadInstructionException.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CwlBadInstructionException.swift; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlPreconditionTesting/CwlBadInstructionException.swift; sourceTree = ""; }; - E01E99A68FE6D40A3471AE8B17E719F3 /* ToSucceed.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ToSucceed.swift; path = Sources/Nimble/Matchers/ToSucceed.swift; sourceTree = ""; }; - E1F08767ED830C0A4ADBB9AEABBD6298 /* DSL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DSL.m; path = Sources/NimbleObjectiveC/DSL.m; sourceTree = ""; }; - E22E40DA96F1E8F484109F7DEEE7D5A4 /* FailureMessage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FailureMessage.swift; path = Sources/Nimble/FailureMessage.swift; sourceTree = ""; }; - E2335CA5AAD016B1DAFC50520DC12151 /* mach_excServer.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = mach_excServer.c; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlMachBadInstructionHandler/mach_excServer.c; sourceTree = ""; }; - E37DAD951F357455584D34064B109450 /* Errors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Errors.swift; path = Sources/Nimble/Utils/Errors.swift; sourceTree = ""; }; - E3948FE866CE6990380A865041CBDFA6 /* UIViewController+Visibility.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIViewController+Visibility.swift"; path = "PopupDialog/Classes/UIViewController+Visibility.swift"; sourceTree = ""; }; - E5F42DD12B23CB820F7EA547131E0F5F /* Pods-PopupDialog_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-PopupDialog_Example.release.xcconfig"; sourceTree = ""; }; - E852C041A4280BFE0EFA15CF1F1BB706 /* FBSnapshotTestController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSnapshotTestController.m; path = FBSnapshotTestCase/FBSnapshotTestController.m; sourceTree = ""; }; - EBC7F6A9940A06449DE233A88EB8ECB1 /* TransitionAnimations.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TransitionAnimations.swift; path = PopupDialog/Classes/TransitionAnimations.swift; sourceTree = ""; }; - EDAAAD4E2845FDC911308B3B0876160D /* Pods-PopupDialog_Tests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-PopupDialog_Tests-frameworks.sh"; sourceTree = ""; }; - F122610CA81508E4814DDCE94B464D44 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; - F31B1C4454B1440714A9DB8F2A26C34A /* UIImage+Blur.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIImage+Blur.swift"; path = "DynamicBlurView/UIImage+Blur.swift"; sourceTree = ""; }; - F32180681E56C5A87DA90CA8518491D6 /* Pods-PopupDialog_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-PopupDialog_Example.debug.xcconfig"; sourceTree = ""; }; - F3DE313D47F1A8B78173DEE798A6D113 /* DynamicBlurView-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "DynamicBlurView-Info.plist"; sourceTree = ""; }; - F5048A1AEC9B5705E9EAEF6551940EAF /* CGImage+Accelerate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "CGImage+Accelerate.swift"; path = "DynamicBlurView/CGImage+Accelerate.swift"; sourceTree = ""; }; - F6134218EEC838AB9A4D29F431169695 /* BeAnInstanceOf.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeAnInstanceOf.swift; path = Sources/Nimble/Matchers/BeAnInstanceOf.swift; sourceTree = ""; }; - F798F699A9B2C2769E367394B7730508 /* AssertionDispatcher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AssertionDispatcher.swift; path = Sources/Nimble/Adapters/AssertionDispatcher.swift; sourceTree = ""; }; - F87B4C3DF9E39BE60AA2539F7D6465CD /* FBSnapshotTestCase-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FBSnapshotTestCase-dummy.m"; sourceTree = ""; }; - F8F2F188AF2F2B95A6F84A372020D097 /* BeAKindOf.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeAKindOf.swift; path = Sources/Nimble/Matchers/BeAKindOf.swift; sourceTree = ""; }; - F930241415802EAEF56950FC4CB922F9 /* PresentationController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PresentationController.swift; path = PopupDialog/Classes/PresentationController.swift; sourceTree = ""; }; - FAC489ADCF3442AC67C69B8614C2120D /* Nimble-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Nimble-Info.plist"; sourceTree = ""; }; + 9F60D7B3660F496938B4E5377B009CCF /* PopupDialog-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PopupDialog-prefix.pch"; sourceTree = ""; }; + 9FA77AA498A074ACC80A4D92592F369C /* NMBExceptionCapture.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = NMBExceptionCapture.m; path = Sources/NimbleObjectiveC/NMBExceptionCapture.m; sourceTree = ""; }; + A1279F9C7CB28560E947BAB8241A24F9 /* mach_excServer.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = mach_excServer.c; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlMachBadInstructionHandler/mach_excServer.c; sourceTree = ""; }; + A3EFD0811319BB07458B57D9711B0061 /* Expectation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Expectation.swift; path = Sources/Nimble/Expectation.swift; sourceTree = ""; }; + A67141F192016214363002CD81041EB2 /* BeNil.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeNil.swift; path = Sources/Nimble/Matchers/BeNil.swift; sourceTree = ""; }; + AC7179BE06255B0BF3AA15CFD7235156 /* PresentationController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PresentationController.swift; path = PopupDialog/Classes/PresentationController.swift; sourceTree = ""; }; + ACE9B6F7F453332909939918B2BDD955 /* DynamicBlurView.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DynamicBlurView.xcconfig; sourceTree = ""; }; + AD102EC8424E9B47199994939DEEFCB6 /* AssertionRecorder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AssertionRecorder.swift; path = Sources/Nimble/Adapters/AssertionRecorder.swift; sourceTree = ""; }; + ADDE6276688C7E8C98EFB817A5289DBB /* DynamicBlurView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DynamicBlurView.swift; path = DynamicBlurView/DynamicBlurView.swift; sourceTree = ""; }; + B47D5EC16FEF0045652155C89E1409E1 /* FBSnapshotTestCase.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = FBSnapshotTestCase.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B566E4F7B3B6C3FBFC3D25B4DC4F4CA1 /* Await.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Await.swift; path = Sources/Nimble/Utils/Await.swift; sourceTree = ""; }; + B7636B26B91AE19F8C6C8F2CAF6F1327 /* PopupDialog.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PopupDialog.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B87A13D66557F8250802FF7BC30E391C /* Errors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Errors.swift; path = Sources/Nimble/Utils/Errors.swift; sourceTree = ""; }; + B9BE98E4FDCC94E0DAA530D3355D3FC2 /* Nimble.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Nimble.h; path = Sources/Nimble/Nimble.h; sourceTree = ""; }; + BC12B991F5D923B49A7E6F2B282A2058 /* UIImage+Blur.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIImage+Blur.swift"; path = "DynamicBlurView/UIImage+Blur.swift"; sourceTree = ""; }; + BD502993A3978DB664BF441919E99662 /* iOSSnapshotTestCase.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = iOSSnapshotTestCase.modulemap; sourceTree = ""; }; + BE9753BAD372FFB193C0F38512BDB87E /* FBSnapshotTestCase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSnapshotTestCase.h; path = FBSnapshotTestCase/FBSnapshotTestCase.h; sourceTree = ""; }; + BEF9780F2991FD5333A5A395605731B3 /* Pods-PopupDialog_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-PopupDialog_Example.modulemap"; sourceTree = ""; }; + BFD5FE2A53D91BCAB12D921FBF4CD0D0 /* TransitionAnimator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TransitionAnimator.swift; path = PopupDialog/Classes/TransitionAnimator.swift; sourceTree = ""; }; + C00E7D44ECF69FE5460B080571C2FB66 /* DynamicBlurView-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "DynamicBlurView-dummy.m"; sourceTree = ""; }; + C02E3E9B4CD484F229C00E686266FB17 /* PopupDialog-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "PopupDialog-dummy.m"; sourceTree = ""; }; + C0421D68D0732E11A840C60681F90E79 /* PopupDialogOverlayView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PopupDialogOverlayView.swift; path = PopupDialog/Classes/PopupDialogOverlayView.swift; sourceTree = ""; }; + C2BACD44F94D3A1EBD2170A673CE67AD /* HaveCount.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HaveCount.swift; path = Sources/Nimble/Matchers/HaveCount.swift; sourceTree = ""; }; + C35AE0EC6B190BA1A70B80CBCBCE687F /* Nimble.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Nimble.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + C35CF80D63DC8F5F6863D1812D6CF747 /* SwiftLint.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftLint.xcconfig; sourceTree = ""; }; + C397EFCA77221A911AACAC10C50B5DB1 /* Pods-PopupDialog_Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-PopupDialog_Example-frameworks.sh"; sourceTree = ""; }; + CE1358942C6DCF9745029C7914D4F182 /* CGContext+CGImage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "CGContext+CGImage.swift"; path = "DynamicBlurView/CGContext+CGImage.swift"; sourceTree = ""; }; + CF7931B37ABE8616C2C5EE19B47E0DDC /* FBSnapshotTestCasePlatform.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSnapshotTestCasePlatform.m; path = FBSnapshotTestCase/FBSnapshotTestCasePlatform.m; sourceTree = ""; }; + D287538FE9D0F5D3103907FBA0F711F1 /* SatisfyAllOf.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SatisfyAllOf.swift; path = Sources/Nimble/Matchers/SatisfyAllOf.swift; sourceTree = ""; }; + D323DD67FFBE939EC3EA336EC9C7A621 /* PopupDialog.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; path = PopupDialog.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + D82BCFDBBAE6BD68E1CB4043767DD315 /* CwlMachBadInstructionHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CwlMachBadInstructionHandler.h; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlMachBadInstructionHandler/include/CwlMachBadInstructionHandler.h; sourceTree = ""; }; + DDD154686103441586C20809DF72C72A /* MatcherProtocols.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MatcherProtocols.swift; path = Sources/Nimble/Matchers/MatcherProtocols.swift; sourceTree = ""; }; + DF8B64BA61B3141DD5976B92851DBC25 /* Contain.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Contain.swift; path = Sources/Nimble/Matchers/Contain.swift; sourceTree = ""; }; + DFF4F3DCD321434492639106B48E1F05 /* Pods-PopupDialog_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-PopupDialog_Example-acknowledgements.markdown"; sourceTree = ""; }; + E048057C6B26BCEED88BCC32460490C6 /* DSL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DSL.h; path = Sources/NimbleObjectiveC/DSL.h; sourceTree = ""; }; + E7EE4FCD21354C85451D558888090033 /* Nimble-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Nimble-prefix.pch"; sourceTree = ""; }; + E8031E699664E8D061985874A6BBB0FF /* Pods-PopupDialog_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-PopupDialog_Tests.release.xcconfig"; sourceTree = ""; }; + E905F165F47AD6C59D19D988CCB1A1E1 /* TrackingMode.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TrackingMode.swift; path = DynamicBlurView/TrackingMode.swift; sourceTree = ""; }; + E99CE5007733C4DAEA48881B1B8ADE74 /* Predicate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Predicate.swift; path = Sources/Nimble/Matchers/Predicate.swift; sourceTree = ""; }; + E9B297BF2DF246257A265F8F19AF1478 /* DSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DSL.swift; path = Sources/Nimble/DSL.swift; sourceTree = ""; }; + EE88B1AA041F9C52FFFF5D1B373D17CD /* BeCloseTo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeCloseTo.swift; path = Sources/Nimble/Matchers/BeCloseTo.swift; sourceTree = ""; }; + F22CD88D4A163E52EFC06779F30AAF0D /* FBSnapshotTestController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSnapshotTestController.h; path = FBSnapshotTestCase/FBSnapshotTestController.h; sourceTree = ""; }; + F50BBB5271703EBEB2D8DC62A1B87F32 /* NimbleXCTestHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NimbleXCTestHandler.swift; path = Sources/Nimble/Adapters/NimbleXCTestHandler.swift; sourceTree = ""; }; + F5CAF1B1DD973C6246CC3DB8C8E3DEDB /* BeVoid.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeVoid.swift; path = Sources/Nimble/Matchers/BeVoid.swift; sourceTree = ""; }; + F5D0DC3E3B34D8BC8DEB09101BF7DC18 /* AdapterProtocols.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AdapterProtocols.swift; path = Sources/Nimble/Adapters/AdapterProtocols.swift; sourceTree = ""; }; + F955CA621E1387D18B6737FF34FECD4B /* Match.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Match.swift; path = Sources/Nimble/Matchers/Match.swift; sourceTree = ""; }; + FA075E3BCAFC670A0D5A3C1796CE7327 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + FAB2E9EF1E87FFD08EAED9983DF8CDAD /* Pods-PopupDialog_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-PopupDialog_Tests-acknowledgements.plist"; sourceTree = ""; }; + FE0FBDEEC78693A30D4A798D7D0B5795 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + FE1461AF6ABDCCB635C4C9F3E257A998 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + FE582858E444F78FF47160866AA54BC7 /* PostNotification.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PostNotification.swift; path = Sources/Nimble/Matchers/PostNotification.swift; sourceTree = ""; }; + FE64350AE3AF7C9DE3DA3737E70644C5 /* SatisfyAnyOf.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SatisfyAnyOf.swift; path = Sources/Nimble/Matchers/SatisfyAnyOf.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 0A474632AE524B9A102B0A1DD317BE5F /* Frameworks */ = { + 355864A5162A9D152615B2D9CB1F511B /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 68846CF99809A8BB96520D4EF68A1CD6 /* Foundation.framework in Frameworks */, + 1F6FBBBBE38178FA36B2CB60271A0D1E /* DynamicBlurView.framework in Frameworks */, + E6B9EDF7E7EC48A6731FB949F2D97CA3 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 74F47434089ED97AF48B711E9FADBF5C /* Frameworks */ = { + 6F954DBE88DF5B843F07784A61AB0AAE /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 4C6E460A6B911AFFD987F78AC59B7466 /* DynamicBlurView.framework in Frameworks */, - B18FE5EE478D75593AE4D0C6B1E6506F /* Foundation.framework in Frameworks */, + D7CCF84F0F0D1FC2D050CA0F3EAD4E32 /* Accelerate.framework in Frameworks */, + 37EC39C7D93118336AF1E98E9C7BAAA2 /* Foundation.framework in Frameworks */, + 554593DE4755E5BF39C765037C0111FE /* UIKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - A7EDD7975CD88AD39BAE0D6484C32803 /* Frameworks */ = { + 73308E1586E14416AC19C29CACA6BDDA /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - CA9A2D74A41B640925B521CEC8BBEACE /* Foundation.framework in Frameworks */, + E02F32E3075511E2B030DA022EB14D2E /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - E581515110D66F94F80A6937831489A1 /* Frameworks */ = { + A26F80CA3273279AAED0BA638B9D1E6A /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - B25D795BDC4F426BC01EFC911F368B81 /* Foundation.framework in Frameworks */, - 14C511527597E5846AB2627F791C7D8E /* QuartzCore.framework in Frameworks */, - E0B8D095C732352C854D365B9E5B993D /* UIKit.framework in Frameworks */, - 6AE239C5D116E1C06F5705699FB9EAF0 /* XCTest.framework in Frameworks */, + 0B4955FACB8418E80447FBB5B99CD5C1 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - E65CA3D384260DCB7B4E58EA234ABEA5 /* Frameworks */ = { + A625497FAB9235BC3AB53206C7BE41B6 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 9B45F788C4CE05D2DC0686432FB0EE22 /* Accelerate.framework in Frameworks */, - DCEE2E72739ADFB7890C33BC35099C01 /* Foundation.framework in Frameworks */, - 00620E71264E0E954D667CEAD6BD0E99 /* UIKit.framework in Frameworks */, + E36AB6320950BF25D873CEA9F9094A48 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - F4DE368568D44A7FF6E98C4554CCAD21 /* Frameworks */ = { + F3287CA501DBA186DAEEE8D485738900 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C6C51E1FBF972B7360BF01D94EAF3864 /* Foundation.framework in Frameworks */, + 66BF5BCB2E0E11257E427A19F0CA69BB /* Foundation.framework in Frameworks */, + 6B4180B400F5F4BC3E85D36C3F9F5821 /* QuartzCore.framework in Frameworks */, + 94BCC7B3DF53D9802499B98ABDC3FB05 /* UIKit.framework in Frameworks */, + 83604F2F98561C2DE46A70CF3AE03D56 /* XCTest.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 07EA2993EE620066456A3209A4A968C4 /* Nimble */ = { + 0D55A80B1C8F8BFF77FBCC7E65FD8FEB /* Support Files */ = { isa = PBXGroup; children = ( - CC0E5B75A3AA5B8064B338E9539CF544 /* AdapterProtocols.swift */, - 68FCF21795952014AA402E622F36E049 /* AllPass.swift */, - F798F699A9B2C2769E367394B7730508 /* AssertionDispatcher.swift */, - AB06727B46710C042DD7C1C529932490 /* AssertionRecorder.swift */, - 4BAB293DC0DAC1537437AC4816A067CE /* Async.swift */, - 32CE95AA00F4BDC440FB69A80F975275 /* Await.swift */, - F8F2F188AF2F2B95A6F84A372020D097 /* BeAKindOf.swift */, - F6134218EEC838AB9A4D29F431169695 /* BeAnInstanceOf.swift */, - 360DA97C674B5F1BBEA334DD9E1B5CD9 /* BeCloseTo.swift */, - 7F1124B9692D608EC99400E0A4F535E3 /* BeEmpty.swift */, - D052209AC8712176CF87A682578D089F /* BeginWith.swift */, - 4CA3D96AE50B7C956B26E595B9D4F231 /* BeGreaterThan.swift */, - 59169802A6943F3CF3E6863F541A89BE /* BeGreaterThanOrEqualTo.swift */, - 3BCCEAA100D80B4239CDB98443C2FB6D /* BeIdenticalTo.swift */, - CFC0EDE4766C3C1873262119D2CD0A94 /* BeLessThan.swift */, - 18416CB52911A067126057FA2295B58A /* BeLessThanOrEqual.swift */, - 493396BFE4F2972CC647D93F01EA4E3D /* BeLogical.swift */, - 84B0303D51ED5C17293BC4477D02DAA9 /* BeNil.swift */, - B28AB78092EF356027D367919A6FB05A /* BeVoid.swift */, - 3578BE46EA8B3A926D36CD6419758AA4 /* Contain.swift */, - 698D59A6E494E53C0F43A878354170EF /* ContainElementSatisfying.swift */, - DEBE9743BEE9E58F26BA6451F2EFB056 /* CwlBadInstructionException.swift */, - B12949F2863B29728E61794A7286FD90 /* CwlCatchBadInstruction.swift */, - 8A4EF4BA115F9553E82AFB2B0E453027 /* CwlCatchException.h */, - A76484091D5ABDF3F244B9EA6428C1E7 /* CwlCatchException.m */, - 321CDBDFEA4951B44E94B9B5BCBB4996 /* CwlCatchException.swift */, - 2A51B1E07AF713CC32319375437DD1AC /* CwlDarwinDefinitions.swift */, - C664F4D586706BFD0F11F98B08B10C12 /* CwlMachBadInstructionHandler.h */, - 06E50A391A2FBD68EA8C9758D39355B3 /* CwlMachBadInstructionHandler.m */, - 72A8C0F537441C4F97601D09EC192155 /* CwlPreconditionTesting.h */, - 5169668F2FE6098ACCEC6796DD3133B7 /* DSL.h */, - E1F08767ED830C0A4ADBB9AEABBD6298 /* DSL.m */, - 71B93D69977525B74E43FE1B09CE2860 /* DSL.swift */, - 00548BAEAB47DC6ED10CAA8C0C0A2E95 /* DSL+Wait.swift */, - C1AD45422C210959AAA7DD91AF86BE28 /* EndWith.swift */, - 4EB568B257A9760AF7D1EB4AC7C16047 /* Equal.swift */, - E37DAD951F357455584D34064B109450 /* Errors.swift */, - 8FA546E16F2C7E96360FD891F38C47A8 /* Expectation.swift */, - 70A02165B63C411CB0CA1467595C40C9 /* ExpectationMessage.swift */, - BB09175E2560EFA89DB107739B0003C2 /* Expression.swift */, - E22E40DA96F1E8F484109F7DEEE7D5A4 /* FailureMessage.swift */, - 2B555B3BED0DBFF109DF78916794FB52 /* Functional.swift */, - C20DF3B736A984A8A901C82F7DB537A3 /* HaveCount.swift */, - E2335CA5AAD016B1DAFC50520DC12151 /* mach_excServer.c */, - 1230E2988BCB2EEEF323AEA8ECBA0C2F /* mach_excServer.h */, - 9AA92EDEF03A1015E5878A9ECA73BB6A /* Match.swift */, - 112DB459CB78FF9B606088701CDE72FD /* MatcherFunc.swift */, - D58BF5FDACF5AE184110FFF767894AC7 /* MatcherProtocols.swift */, - 5B860197A4EB0939F19A944C8DE7B0BB /* MatchError.swift */, - 6F632647C2DF9AA322A254983005F723 /* Nimble.h */, - 515D96EB3DCC6FFD927E5316AECF8E3E /* NimbleEnvironment.swift */, - A92CB81D978376BC2F0596E89E8AF772 /* NimbleXCTestHandler.swift */, - 38D6C61133B639A2B434904EDC0E25EC /* NMBExceptionCapture.h */, - 7FBDBF40BDAA750070F2523840D60A2C /* NMBExceptionCapture.m */, - C48AD81FC13B15ABDC7C963EAB2D5167 /* NMBExpectation.swift */, - BBC8ECAEA0B2A38F880089A0C0A4FE13 /* NMBObjCMatcher.swift */, - 83E8F78BE4BCA36125359604509DBBAD /* NMBStringify.h */, - 0EAD86BEBD8AD8016C0367602A7A4846 /* NMBStringify.m */, - B3F6E03C41DFE8DDC1511048AB880C30 /* PostNotification.swift */, - 25CAF0CF8FA9D90CE9A964CC2EBC89BE /* Predicate.swift */, - 964C2F88B48470725E71A6369F2A1AAD /* RaisesException.swift */, - DC627C463113F5A776F9FB272C8F4254 /* SatisfyAllOf.swift */, - 7199B1867D8AD2C4E059C8765E3F3F49 /* SatisfyAnyOf.swift */, - 057F58C7AE2DA604796B30040884DFBA /* SourceLocation.swift */, - 5F51CBF47E005823E6A0F6F3CD578FCD /* Stringers.swift */, - 0B80D23727C7BAECE77452D3786E9BE8 /* ThrowAssertion.swift */, - 811052CEE5B0982AA7CE3AE4FD986A4C /* ThrowError.swift */, - E01E99A68FE6D40A3471AE8B17E719F3 /* ToSucceed.swift */, - 81E41ADEE8C8232E7CC5A1F2F9577386 /* XCTestObservationCenter+Register.m */, - BBDEBA6FABD8EDEDC0F67D8099FEF39F /* Support Files */, + 1B66FE64BF30208C9B90EDFDF4CB4184 /* PopupDialog.modulemap */, + 7B55FC5833F829BBE6DBA3E1D3624839 /* PopupDialog.xcconfig */, + C02E3E9B4CD484F229C00E686266FB17 /* PopupDialog-dummy.m */, + 97174344DBF09A205DFA3DC57B25C7D1 /* PopupDialog-Info.plist */, + 9F60D7B3660F496938B4E5377B009CCF /* PopupDialog-prefix.pch */, + 6AC75CF853BC4363E81362410CBB15C0 /* PopupDialog-umbrella.h */, ); - path = Nimble; + name = "Support Files"; + path = "Example/Pods/Target Support Files/PopupDialog"; sourceTree = ""; }; - 2532449E1067F7FD053A87F04E4E80C1 /* Frameworks */ = { + 20F7009C21BBD105C384FC95787F86FD /* Support Files */ = { isa = PBXGroup; children = ( - B450B6BFDFE3AEDDA29F72764AEA729C /* DynamicBlurView.framework */, - E65D85F39321793A59528B14660F1C84 /* iOS */, + BD502993A3978DB664BF441919E99662 /* iOSSnapshotTestCase.modulemap */, + 3E03482672DEA8CD8256EF0392339636 /* iOSSnapshotTestCase.xcconfig */, + 1243339E448CD16D18717B50F920BB09 /* iOSSnapshotTestCase-dummy.m */, + 15F87AFA7A13F5CC2191237E6950D9F6 /* iOSSnapshotTestCase-Info.plist */, + 1CECC7B09DE0C6F52BABCCDC6AE24C22 /* iOSSnapshotTestCase-prefix.pch */, + 02293FB2EA49ECAC14876A877C5665B9 /* iOSSnapshotTestCase-umbrella.h */, ); - name = Frameworks; + name = "Support Files"; + path = "../Target Support Files/iOSSnapshotTestCase"; sourceTree = ""; }; - 364BAB7F1E54B8151FCD7BB8EEF1633B /* Support Files */ = { + 2387B8EE36C007228061054F970DE66D /* SwiftSupport */ = { isa = PBXGroup; children = ( - 12DB852B7EACB37262D622FA6AD3237B /* SwiftLint.xcconfig */, + 2C5299414864EBA7403DB7EB7300E148 /* SwiftSupport.swift */, ); - name = "Support Files"; - path = "../Target Support Files/SwiftLint"; + name = SwiftSupport; sourceTree = ""; }; - 3A0A53BA0703F711352975DEE5A38EA8 /* Products */ = { + 4D96BFF3643E3E9D0453DF5BC4AC5024 /* iOS */ = { isa = PBXGroup; children = ( - 86C4A2D817E6CFFF31BF75161625FD5D /* DynamicBlurView.framework */, - 5C4F31330DFA99D699E4BDC8C3573D73 /* FBSnapshotTestCase.framework */, - BAE263041362D074978BB3B577DF0A05 /* Nimble.framework */, - BA25CA8154E3DABB0DDA3EF619142C27 /* Pods_PopupDialog_Example.framework */, - 4F26742D152937252FF450B2C14758C9 /* Pods_PopupDialog_Tests.framework */, - 34FB964502259D0FF233CE71CFDD2A71 /* PopupDialog.framework */, + 5C335FD9E99D06E1D6FF9521C5F9FEB2 /* Accelerate.framework */, + FA075E3BCAFC670A0D5A3C1796CE7327 /* Foundation.framework */, + 1C7B47AEA8507F032FA94B515EA3FAE9 /* QuartzCore.framework */, + 7F2D87DA8397960596B1F5731D378B50 /* UIKit.framework */, + 7E200B17B93288E7C000F89157FC6CE9 /* XCTest.framework */, ); - name = Products; + name = iOS; sourceTree = ""; }; 5EA8687ED3EE1464A017436A1DBC228E /* Development Pods */ = { isa = PBXGroup; children = ( - 638D0C89D5187B019C16D4DC39AB30BB /* PopupDialog */, + 85EBCEFE872DFB9FD326A44280742505 /* PopupDialog */, ); name = "Development Pods"; sourceTree = ""; }; - 60666D3BDB77F3C76A54F03360F2B2D8 /* DynamicBlurView */ = { + 85EBCEFE872DFB9FD326A44280742505 /* PopupDialog */ = { isa = PBXGroup; children = ( - 39C2084D891ED45BDC883367945AACF2 /* BlurLayer.swift */, - 0C6F790D39FBBF31DF5E9DECE17E6F27 /* CaptureQuality.swift */, - 74D42C5E69D6BBA474F0716A84810ED2 /* CGContext+CGImage.swift */, - F5048A1AEC9B5705E9EAEF6551940EAF /* CGImage+Accelerate.swift */, - 7155D2ED8BE5F64CC80C5520FC745A76 /* DynamicBlurView.h */, - 0896F4869F45E8DA6473F1BFE63E57FE /* DynamicBlurView.swift */, - 0F1D28079A6D6E70E58C38E61F042B2A /* TrackingMode.swift */, - F31B1C4454B1440714A9DB8F2A26C34A /* UIImage+Blur.swift */, - 63E8E4FCC835A694BCD7A473327E9C45 /* Support Files */, + 325E316C92DF01A9D94DF6430091DC23 /* InteractiveTransition.swift */, + 95BA7DF0C033737DEE656977B7246131 /* PopupDialog.swift */, + 3C8894F8D3D2B3BA57C2A7BC7D100798 /* PopupDialog+Keyboard.swift */, + 7952F701BC2C67E165903F32888AC3CF /* PopupDialogButton.swift */, + 9B7F3B2BBF0FD8172393A0D3C72D33A9 /* PopupDialogContainerView.swift */, + 667AE1285750252FDFEA407317858F9F /* PopupDialogDefaultButtons.swift */, + 3AA35D35E0EC672D7AC55914FA29B4EB /* PopupDialogDefaultView.swift */, + 74D9842BCB672CACFC947E250922F87E /* PopupDialogDefaultViewController.swift */, + C0421D68D0732E11A840C60681F90E79 /* PopupDialogOverlayView.swift */, + AC7179BE06255B0BF3AA15CFD7235156 /* PresentationController.swift */, + 1B91546848953EFE3B8A19F21DA855A0 /* PresentationManager.swift */, + 38D83146DF4CB712F570F9D8D91A29C5 /* TransitionAnimations.swift */, + BFD5FE2A53D91BCAB12D921FBF4CD0D0 /* TransitionAnimator.swift */, + 4DE10CE7D7C57069894709C6EBE62D5C /* UIImageView+Calculations.swift */, + 9D832BDD2D3D8BC23F7550A2680D3AD1 /* UIView+Animations.swift */, + 9B7C91CE0BEF5AD7EBE599E18BA6F6A8 /* UIViewController+Visibility.swift */, + 9627740200784F0A1E94F900965AF5D9 /* Pod */, + 0D55A80B1C8F8BFF77FBCC7E65FD8FEB /* Support Files */, ); - path = DynamicBlurView; + name = PopupDialog; + path = ../..; sourceTree = ""; }; - 638D0C89D5187B019C16D4DC39AB30BB /* PopupDialog */ = { + 9627740200784F0A1E94F900965AF5D9 /* Pod */ = { isa = PBXGroup; children = ( - D6ADE5CBAD09E36BB7B465F20267126B /* InteractiveTransition.swift */, - 1DA971E985C8B31B8F00808F5410A674 /* PopupDialog.swift */, - 0DB37505438AC54227D55B8BD8BEF31E /* PopupDialog+Keyboard.swift */, - BEB17063EC5F1BD2547DA25EDAD1243E /* PopupDialogButton.swift */, - 03D6C9895C238A039A720030480F2172 /* PopupDialogContainerView.swift */, - 2B1387C6FD1B684C3898213BA1A2A2B0 /* PopupDialogDefaultButtons.swift */, - DDBBE62BEA77FFACECF54D2753EEC2EE /* PopupDialogDefaultView.swift */, - 9E676FA350BAF8126087BBBBCB484CDB /* PopupDialogDefaultViewController.swift */, - B85748517E837D6DA8255F8EFF23D92B /* PopupDialogOverlayView.swift */, - F930241415802EAEF56950FC4CB922F9 /* PresentationController.swift */, - 0DCFE8F07DDE9B0C2DFCEE86E9C7C967 /* PresentationManager.swift */, - EBC7F6A9940A06449DE233A88EB8ECB1 /* TransitionAnimations.swift */, - B2EE30A42A66A81CBC64D0BBA25F792B /* TransitionAnimator.swift */, - 9294A2D8BAEE19009408690C2B5D3F4A /* UIImageView+Calculations.swift */, - 8C2C079E8AFC3A5EFF22EE190BAEC967 /* UIView+Animations.swift */, - E3948FE866CE6990380A865041CBDFA6 /* UIViewController+Visibility.swift */, - 6F2E45DB40E3105C07B26B6FA327B185 /* Pod */, - F71FC4974C7EA87ABFD21E81EC7F197B /* Support Files */, + FE1461AF6ABDCCB635C4C9F3E257A998 /* LICENSE */, + D323DD67FFBE939EC3EA336EC9C7A621 /* PopupDialog.podspec */, + FE0FBDEEC78693A30D4A798D7D0B5795 /* README.md */, ); - name = PopupDialog; - path = ../..; + name = Pod; sourceTree = ""; }; - 63E8E4FCC835A694BCD7A473327E9C45 /* Support Files */ = { + 984F9142BB63EE98B50EA8DA0668177D /* DynamicBlurView */ = { isa = PBXGroup; children = ( - 99B3B57867426BE9922334CDB71EA529 /* DynamicBlurView.modulemap */, - B44D7414C363A59797B255B0AC679CC7 /* DynamicBlurView.xcconfig */, - 101D3770BE97321333AF4B130E226A96 /* DynamicBlurView-dummy.m */, - F3DE313D47F1A8B78173DEE798A6D113 /* DynamicBlurView-Info.plist */, - 72018E0EC559764CDE31152BC5BE89D1 /* DynamicBlurView-prefix.pch */, - 83EF801B4936FC33191B799D61923BC9 /* DynamicBlurView-umbrella.h */, + 817F8878287639D4DD0224A69EA75047 /* BlurLayer.swift */, + 64091636CB0FA64C3BDF5E1799181546 /* CaptureQuality.swift */, + CE1358942C6DCF9745029C7914D4F182 /* CGContext+CGImage.swift */, + 455DC35380748FE9C8AC10A6791D8553 /* CGImage+Accelerate.swift */, + 16F11C32475366566F3A1AE69D966D67 /* DynamicBlurView.h */, + ADDE6276688C7E8C98EFB817A5289DBB /* DynamicBlurView.swift */, + E905F165F47AD6C59D19D988CCB1A1E1 /* TrackingMode.swift */, + BC12B991F5D923B49A7E6F2B282A2058 /* UIImage+Blur.swift */, + D5637143441B390F603A471017E5AD36 /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/DynamicBlurView"; + path = DynamicBlurView; sourceTree = ""; }; - 68BF571322DE1849006D64C0 /* Assets */ = { + AEBB5515A92AAB92E16502B85589DA15 /* Products */ = { isa = PBXGroup; children = ( - 688A762022DE1032000CB933 /* Assets.xcassets */, - 68BF571422DE1849006D64C0 /* .gitkeep */, + 52E79702AB3898330C827CB689786AEB /* DynamicBlurView.framework */, + B47D5EC16FEF0045652155C89E1409E1 /* FBSnapshotTestCase.framework */, + C35AE0EC6B190BA1A70B80CBCBCE687F /* Nimble.framework */, + 9149414E122143FE570977D66C83E70C /* Pods_PopupDialog_Example.framework */, + 062B40CBDA4909A56A64AC28DFA2961C /* Pods_PopupDialog_Tests.framework */, + B7636B26B91AE19F8C6C8F2CAF6F1327 /* PopupDialog.framework */, ); - name = Assets; - path = ../../../../PopupDialog/Assets; + name = Products; sourceTree = ""; }; - 6F2E45DB40E3105C07B26B6FA327B185 /* Pod */ = { + BD08BC8565F0647EA0D012DDAB34466E /* Targets Support Files */ = { isa = PBXGroup; children = ( - 57340A808DBA136ABD5E11C2ED9CE45F /* LICENSE */, - A013F2B906262190FBABDDB366F5434B /* PopupDialog.podspec */, - 7EB40C46EE0ED7091984B7942FD6672D /* README.md */, + C1CAAB0CDC9FCA03CEDA805EB3AADD24 /* Pods-PopupDialog_Example */, + C65E1797B36A0C95FE61338DDA78D4BC /* Pods-PopupDialog_Tests */, ); - name = Pod; + name = "Targets Support Files"; sourceTree = ""; }; - 773E51668042E63B8209AF891177F44A /* Pods */ = { + BF461195EB47ED1624B9D8B4A290F0C1 /* Core */ = { isa = PBXGroup; children = ( - 60666D3BDB77F3C76A54F03360F2B2D8 /* DynamicBlurView */, - AD69FA2DFA5AB56CB0056DD42F60792B /* FBSnapshotTestCase */, - 07EA2993EE620066456A3209A4A968C4 /* Nimble */, - BBBE722464CEA717C3E90AFB2A484976 /* SwiftLint */, + BE9753BAD372FFB193C0F38512BDB87E /* FBSnapshotTestCase.h */, + 27BA8A345B5729D15B3AACDDC93424DF /* FBSnapshotTestCase.m */, + 59632C31CC7E9B0E97E82219B426C6BA /* FBSnapshotTestCasePlatform.h */, + CF7931B37ABE8616C2C5EE19B47E0DDC /* FBSnapshotTestCasePlatform.m */, + F22CD88D4A163E52EFC06779F30AAF0D /* FBSnapshotTestController.h */, + 8585C63BBC446F4E8A88731650241983 /* FBSnapshotTestController.m */, + 4823F2C2EEADA5B354927EB340E3E020 /* UIImage+Compare.h */, + 87F785A29003BAC86FB78E9905A624B6 /* UIImage+Compare.m */, + 6A4FD942AB99D4D6B1BAF5F19A80C325 /* UIImage+Diff.h */, + 8D41491FB9AB86E87AD99971C8A6B13F /* UIImage+Diff.m */, + 30B622D6D13E7E41B1E38658218CBA00 /* UIImage+Snapshot.h */, + 287C70787CC4C2F3ABA8597DC104A392 /* UIImage+Snapshot.m */, ); - name = Pods; + name = Core; sourceTree = ""; }; - 77B3E13C5A2E90FE27465F7BDD915D81 /* Pods-PopupDialog_Example */ = { + C1CAAB0CDC9FCA03CEDA805EB3AADD24 /* Pods-PopupDialog_Example */ = { isa = PBXGroup; children = ( - D94E5FE82EB71B546653309B3AB0340E /* Pods-PopupDialog_Example.modulemap */, - C8EBE3D8F36B0D0D1FA6998CC2F6B89D /* Pods-PopupDialog_Example-acknowledgements.markdown */, - 633AB6FEA3B38661462E0269BCFBD323 /* Pods-PopupDialog_Example-acknowledgements.plist */, - A4AB04D722A9B70580BB83D9CC041170 /* Pods-PopupDialog_Example-dummy.m */, - 3AE7F0062F408364EC0F24044FA83D49 /* Pods-PopupDialog_Example-frameworks.sh */, - 98E349E39A55FEA2A0FAD7D52575217A /* Pods-PopupDialog_Example-Info.plist */, - 9CC6517936E4387C41FE2189217EBA63 /* Pods-PopupDialog_Example-umbrella.h */, - F32180681E56C5A87DA90CA8518491D6 /* Pods-PopupDialog_Example.debug.xcconfig */, - E5F42DD12B23CB820F7EA547131E0F5F /* Pods-PopupDialog_Example.release.xcconfig */, + BEF9780F2991FD5333A5A395605731B3 /* Pods-PopupDialog_Example.modulemap */, + DFF4F3DCD321434492639106B48E1F05 /* Pods-PopupDialog_Example-acknowledgements.markdown */, + 722C7A27FD7D7E22369E39AAFFC586C2 /* Pods-PopupDialog_Example-acknowledgements.plist */, + 3F8CFEBEEF998FFE137C33CFF02EF8D6 /* Pods-PopupDialog_Example-dummy.m */, + C397EFCA77221A911AACAC10C50B5DB1 /* Pods-PopupDialog_Example-frameworks.sh */, + 77CC9B70E7718AF175B15CE716EC1493 /* Pods-PopupDialog_Example-Info.plist */, + 29744CD016B1185AC562D0482E20989D /* Pods-PopupDialog_Example-umbrella.h */, + 3B248EF6FA846138728808541EF4BCC5 /* Pods-PopupDialog_Example.debug.xcconfig */, + 0AEF0170963EF4B08801F885B935F660 /* Pods-PopupDialog_Example.release.xcconfig */, ); name = "Pods-PopupDialog_Example"; path = "Target Support Files/Pods-PopupDialog_Example"; sourceTree = ""; }; - 7C2BFAC855841C6CBEF1785EE872E8EC /* Core */ = { + C65E1797B36A0C95FE61338DDA78D4BC /* Pods-PopupDialog_Tests */ = { isa = PBXGroup; children = ( - 257D5F8B0DCEC33CDA26D63499FB0495 /* FBSnapshotTestCase.h */, - 403A096447721C75BF14C7A3F6BCCDB2 /* FBSnapshotTestCase.m */, - 00FC46044508113A009D88D540F1E018 /* FBSnapshotTestCasePlatform.h */, - 63E121F8691A77E25F34A346AEF6F8B7 /* FBSnapshotTestCasePlatform.m */, - 74D83E2536A78136F46912FBFF2B77AA /* FBSnapshotTestController.h */, - E852C041A4280BFE0EFA15CF1F1BB706 /* FBSnapshotTestController.m */, - C6A00C4B2ADB7764C47E582CA6A3518A /* UIApplication+StrictKeyWindow.h */, - 4066371F801BE06ABA7B5378D1516984 /* UIApplication+StrictKeyWindow.m */, - 642EC164F785288462C5450A382E2B3C /* UIImage+Compare.h */, - 7465FC20B8D5A8395133678BB28FDA26 /* UIImage+Compare.m */, - 6AC85212FDC881E6737CAADD8687DFF9 /* UIImage+Diff.h */, - 7E8A64BA70EF2572DB9B8AB444F3EB2F /* UIImage+Diff.m */, - 297AB8230193A0DAA3A1408EF6C34587 /* UIImage+Snapshot.h */, - 14EC84B096B791D9DB25888C67DC1920 /* UIImage+Snapshot.m */, + 61760C778E71AF733C0C3FE68A2325B8 /* Pods-PopupDialog_Tests.modulemap */, + 16188B23CF197FC44AD8B26B9A757403 /* Pods-PopupDialog_Tests-acknowledgements.markdown */, + FAB2E9EF1E87FFD08EAED9983DF8CDAD /* Pods-PopupDialog_Tests-acknowledgements.plist */, + 69B71AD153BEE005185EDF50D848A1BC /* Pods-PopupDialog_Tests-dummy.m */, + 865F19D3D1EF135E1965B13962BE1B4B /* Pods-PopupDialog_Tests-frameworks.sh */, + 90DE7B18813B41B0237404EA7187BCD5 /* Pods-PopupDialog_Tests-Info.plist */, + 46863F33A0753DFBCB245F19F5E87E46 /* Pods-PopupDialog_Tests-umbrella.h */, + 401ECAF6FFC2200EEFED7B1B53B2F6BC /* Pods-PopupDialog_Tests.debug.xcconfig */, + E8031E699664E8D061985874A6BBB0FF /* Pods-PopupDialog_Tests.release.xcconfig */, ); - name = Core; + name = "Pods-PopupDialog_Tests"; + path = "Target Support Files/Pods-PopupDialog_Tests"; sourceTree = ""; }; - 9835994B8761AEB0C4D623706DDF7087 /* SwiftSupport */ = { + C8EE6100528200C1DF1D17C2DCEF8FEA /* SwiftLint */ = { isa = PBXGroup; children = ( - 1FA35888E8C899C40C4F27F0AB8973B7 /* SwiftSupport.swift */, + F79E028C5939EF44368AB4732542118B /* Support Files */, ); - name = SwiftSupport; + path = SwiftLint; sourceTree = ""; }; - 9BB1ACE16B715318A0AF3C24F4DA0425 /* Pods-PopupDialog_Tests */ = { + CF1408CF629C7361332E53B88F7BD30C = { isa = PBXGroup; children = ( - 6D389C1F83BA03F065A60C7ED3604A36 /* Pods-PopupDialog_Tests.modulemap */, - DB0B0960351CCD1A27ED66390D9E9BD9 /* Pods-PopupDialog_Tests-acknowledgements.markdown */, - 301A0279C95390C10CDA3DC8E2E1BAF2 /* Pods-PopupDialog_Tests-acknowledgements.plist */, - 2E14A056794F0B689BD9BC5BFC1E7359 /* Pods-PopupDialog_Tests-dummy.m */, - EDAAAD4E2845FDC911308B3B0876160D /* Pods-PopupDialog_Tests-frameworks.sh */, - 2BD220BDB7064BEFFC9E060BA9677245 /* Pods-PopupDialog_Tests-Info.plist */, - 6123086D7F043014510D0169F0DEF417 /* Pods-PopupDialog_Tests-umbrella.h */, - 66F2E39DA85ACB237546341635BCF17C /* Pods-PopupDialog_Tests.debug.xcconfig */, - 2970A1076280C6E082DE6D039572CA26 /* Pods-PopupDialog_Tests.release.xcconfig */, + 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, + 5EA8687ED3EE1464A017436A1DBC228E /* Development Pods */, + DE7837930404BBA5FDB7015C3A7390B2 /* Frameworks */, + D1BBDA63391567AEF8ECF0171490FDE1 /* Pods */, + AEBB5515A92AAB92E16502B85589DA15 /* Products */, + BD08BC8565F0647EA0D012DDAB34466E /* Targets Support Files */, ); - name = "Pods-PopupDialog_Tests"; - path = "Target Support Files/Pods-PopupDialog_Tests"; sourceTree = ""; }; - AD69FA2DFA5AB56CB0056DD42F60792B /* FBSnapshotTestCase */ = { + D1BBDA63391567AEF8ECF0171490FDE1 /* Pods */ = { isa = PBXGroup; children = ( - 7C2BFAC855841C6CBEF1785EE872E8EC /* Core */, - BF6A412F9DE04EBC83DF41A2FBDBFA6A /* Support Files */, - 9835994B8761AEB0C4D623706DDF7087 /* SwiftSupport */, + 984F9142BB63EE98B50EA8DA0668177D /* DynamicBlurView */, + D347C648A754BF3FC93C9DD805F087DC /* iOSSnapshotTestCase */, + F7FC86AB7AB5296584A33AC821746398 /* Nimble */, + C8EE6100528200C1DF1D17C2DCEF8FEA /* SwiftLint */, ); - path = FBSnapshotTestCase; + name = Pods; sourceTree = ""; }; - BBBE722464CEA717C3E90AFB2A484976 /* SwiftLint */ = { + D347C648A754BF3FC93C9DD805F087DC /* iOSSnapshotTestCase */ = { isa = PBXGroup; children = ( - 364BAB7F1E54B8151FCD7BB8EEF1633B /* Support Files */, + BF461195EB47ED1624B9D8B4A290F0C1 /* Core */, + 20F7009C21BBD105C384FC95787F86FD /* Support Files */, + 2387B8EE36C007228061054F970DE66D /* SwiftSupport */, ); - path = SwiftLint; + path = iOSSnapshotTestCase; sourceTree = ""; }; - BBDEBA6FABD8EDEDC0F67D8099FEF39F /* Support Files */ = { + D5637143441B390F603A471017E5AD36 /* Support Files */ = { isa = PBXGroup; children = ( - 1B24E6E5F56D0BB20B8C0C00718A0D08 /* Nimble.modulemap */, - 4C1286B7E412539B3FF9B70C238E83EB /* Nimble.xcconfig */, - 6CDBDFA6ADBDBDB485FB855B4F5DE52D /* Nimble-dummy.m */, - FAC489ADCF3442AC67C69B8614C2120D /* Nimble-Info.plist */, - 7402B51D20F68E8EDF0BD5032DB9FF6B /* Nimble-prefix.pch */, - A820AD98C110684A43E3EEF2E11D41B5 /* Nimble-umbrella.h */, + 92EE080E4A4E64AE18D07C5479F1ABFA /* DynamicBlurView.modulemap */, + ACE9B6F7F453332909939918B2BDD955 /* DynamicBlurView.xcconfig */, + C00E7D44ECF69FE5460B080571C2FB66 /* DynamicBlurView-dummy.m */, + 2BA118F30416203AD3F72914EF48A12A /* DynamicBlurView-Info.plist */, + 4B921A25089E53BFEDCD66354FE5169B /* DynamicBlurView-prefix.pch */, + 19BE1001CECE5FDB557512C1C892E151 /* DynamicBlurView-umbrella.h */, ); name = "Support Files"; - path = "../Target Support Files/Nimble"; - sourceTree = ""; - }; - BD08BC8565F0647EA0D012DDAB34466E /* Targets Support Files */ = { - isa = PBXGroup; - children = ( - 77B3E13C5A2E90FE27465F7BDD915D81 /* Pods-PopupDialog_Example */, - 9BB1ACE16B715318A0AF3C24F4DA0425 /* Pods-PopupDialog_Tests */, - ); - name = "Targets Support Files"; + path = "../Target Support Files/DynamicBlurView"; sourceTree = ""; }; - BF6A412F9DE04EBC83DF41A2FBDBFA6A /* Support Files */ = { + DA8802CF07C1038F72127431F9BAA2D8 /* Support Files */ = { isa = PBXGroup; children = ( - B7636B793C45A6B7C3223D149C2D6478 /* FBSnapshotTestCase.modulemap */, - 88A2D46F56B9B53408465E9019411FEB /* FBSnapshotTestCase.xcconfig */, - F87B4C3DF9E39BE60AA2539F7D6465CD /* FBSnapshotTestCase-dummy.m */, - 4B7B758730FD6CAAE90F7DB0B1DDFA39 /* FBSnapshotTestCase-Info.plist */, - 769D56B8A88B90E963557FF6D0D1858C /* FBSnapshotTestCase-prefix.pch */, - 23527CD8F043D308D25644A0DCE44123 /* FBSnapshotTestCase-umbrella.h */, + 3DD2DA301B282EF57E9C93CF779114A3 /* Nimble.modulemap */, + 1C4A913B2ABE97CB0F21D60821655525 /* Nimble.xcconfig */, + 3EDE5D2AFC33018AA44EDF7079E6C8EF /* Nimble-dummy.m */, + 5F3C735F0FF2503CC2041F1CF007347D /* Nimble-Info.plist */, + E7EE4FCD21354C85451D558888090033 /* Nimble-prefix.pch */, + 8FA2D4A0B3E941EAC2405224507125B9 /* Nimble-umbrella.h */, ); name = "Support Files"; - path = "../Target Support Files/FBSnapshotTestCase"; + path = "../Target Support Files/Nimble"; sourceTree = ""; }; - CF1408CF629C7361332E53B88F7BD30C = { + DE7837930404BBA5FDB7015C3A7390B2 /* Frameworks */ = { isa = PBXGroup; children = ( - 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, - 5EA8687ED3EE1464A017436A1DBC228E /* Development Pods */, - 2532449E1067F7FD053A87F04E4E80C1 /* Frameworks */, - 773E51668042E63B8209AF891177F44A /* Pods */, - 3A0A53BA0703F711352975DEE5A38EA8 /* Products */, - BD08BC8565F0647EA0D012DDAB34466E /* Targets Support Files */, + 38328F060AF39895E284A3811EC4A9BD /* DynamicBlurView.framework */, + 4D96BFF3643E3E9D0453DF5BC4AC5024 /* iOS */, ); + name = Frameworks; sourceTree = ""; }; - E65D85F39321793A59528B14660F1C84 /* iOS */ = { + F79E028C5939EF44368AB4732542118B /* Support Files */ = { isa = PBXGroup; children = ( - 071F19C535629E91C695B7E7DBDC4FFA /* Accelerate.framework */, - 0396503F8DBB4F70B59E78A9F62695F3 /* Foundation.framework */, - F122610CA81508E4814DDCE94B464D44 /* QuartzCore.framework */, - 11DB7CB31983107A7414F650F4E837A4 /* UIKit.framework */, - 8F1C8AE77592302C5AF8840458F6A7C3 /* XCTest.framework */, + C35CF80D63DC8F5F6863D1812D6CF747 /* SwiftLint.xcconfig */, ); - name = iOS; + name = "Support Files"; + path = "../Target Support Files/SwiftLint"; sourceTree = ""; }; - F71FC4974C7EA87ABFD21E81EC7F197B /* Support Files */ = { + F7FC86AB7AB5296584A33AC821746398 /* Nimble */ = { isa = PBXGroup; children = ( - 68BF571322DE1849006D64C0 /* Assets */, - 0E8C0D570869EA4E252523F6ECB80B99 /* PopupDialog.modulemap */, - 55EB2E713776DD76CEE5A8F765C27BEE /* PopupDialog.xcconfig */, - 4A0A1FC688B731C3AFCEDE79E21616EC /* PopupDialog-dummy.m */, - 6160A50827976F047D05E51443A69428 /* PopupDialog-Info.plist */, - 5A537F208236FF12A11EF4ED807DD40A /* PopupDialog-prefix.pch */, - 0A08865764C1B76BA9B96BDB7A661620 /* PopupDialog-umbrella.h */, + F5D0DC3E3B34D8BC8DEB09101BF7DC18 /* AdapterProtocols.swift */, + 200A77E157E470437D3C032888ABC3C4 /* AllPass.swift */, + 431C0DCBF7EA442CC2886C333A20C0DF /* AssertionDispatcher.swift */, + AD102EC8424E9B47199994939DEEFCB6 /* AssertionRecorder.swift */, + 5FCD81F4FCC8CBBB090E891E96AB22B2 /* Async.swift */, + B566E4F7B3B6C3FBFC3D25B4DC4F4CA1 /* Await.swift */, + 52A81F33A5D84847EB12A37057C44A7B /* BeAKindOf.swift */, + 87838F7843F344E484A1E26218D90F8B /* BeAnInstanceOf.swift */, + EE88B1AA041F9C52FFFF5D1B373D17CD /* BeCloseTo.swift */, + 049FF961807D2CCFB4BFB006B3F6903A /* BeEmpty.swift */, + 9229EA4AF176F697394404461DF72DBA /* BeginWith.swift */, + 0648E1602C901BD99D761CFE85054D0D /* BeGreaterThan.swift */, + 7B9A767D2961EF0F8B7FD646793BEDF0 /* BeGreaterThanOrEqualTo.swift */, + 8D3E08FF2BC522160B297D24F3DA657D /* BeIdenticalTo.swift */, + 104768EF226E926A18F524E8C79C0CE7 /* BeLessThan.swift */, + 6CD84BE03AE82DE3BA117239FC964D53 /* BeLessThanOrEqual.swift */, + 80EE28C5B16EAD867F263D863CA8FC4E /* BeLogical.swift */, + A67141F192016214363002CD81041EB2 /* BeNil.swift */, + F5CAF1B1DD973C6246CC3DB8C8E3DEDB /* BeVoid.swift */, + DF8B64BA61B3141DD5976B92851DBC25 /* Contain.swift */, + 5537BA52CB0430AAD64E042140B410DF /* ContainElementSatisfying.swift */, + 607AF5DC12915B330572F1FD9A6253C0 /* CwlBadInstructionException.swift */, + 5C61567B81BB2E922D32901B1A352946 /* CwlCatchBadInstruction.swift */, + 74823AAD4B57CA924A7ADCE10A08B72C /* CwlCatchException.h */, + 7186A4E63E259BF85CB22C8237BEEF4E /* CwlCatchException.m */, + 310A46556D07A0296C66D5864B4B1822 /* CwlCatchException.swift */, + 79BB1E107157AB7C46336D7728F4AC69 /* CwlDarwinDefinitions.swift */, + D82BCFDBBAE6BD68E1CB4043767DD315 /* CwlMachBadInstructionHandler.h */, + 64860498EAA97994F29592BDBD85AB38 /* CwlMachBadInstructionHandler.m */, + 249EC0574A7A3B3075817EC5A0CD4C74 /* CwlPreconditionTesting.h */, + E048057C6B26BCEED88BCC32460490C6 /* DSL.h */, + 3242E237431529C3360DC01E63A37357 /* DSL.m */, + E9B297BF2DF246257A265F8F19AF1478 /* DSL.swift */, + 35165D0C2642FE0116B49AA4F537ACB8 /* DSL+Wait.swift */, + 36DDC1C4D729976F1145A8935F22BCDD /* EndWith.swift */, + 83DAF84EA18303E3BB7DE997060F15DD /* Equal.swift */, + B87A13D66557F8250802FF7BC30E391C /* Errors.swift */, + A3EFD0811319BB07458B57D9711B0061 /* Expectation.swift */, + 0C577112BA5BA61FA2DA28270C5DC2ED /* ExpectationMessage.swift */, + 1E941EF8F373F12B868892D01A1BA655 /* Expression.swift */, + 4677A1DC722B43705A27698CD6BFED09 /* FailureMessage.swift */, + 87B092C30EDF9B1934FDCE9AFF42924F /* Functional.swift */, + C2BACD44F94D3A1EBD2170A673CE67AD /* HaveCount.swift */, + A1279F9C7CB28560E947BAB8241A24F9 /* mach_excServer.c */, + 0BD82EB3728DE03DCC8F5AD53A6C1753 /* mach_excServer.h */, + F955CA621E1387D18B6737FF34FECD4B /* Match.swift */, + 0AABD3AA8D14DF1487084914771264AE /* MatcherFunc.swift */, + DDD154686103441586C20809DF72C72A /* MatcherProtocols.swift */, + 3ECE482291E4AB1C3CA3877C9D4FBBD1 /* MatchError.swift */, + B9BE98E4FDCC94E0DAA530D3355D3FC2 /* Nimble.h */, + 8F05F0FE2AD0D7B08BB3F5A14E13573C /* NimbleEnvironment.swift */, + F50BBB5271703EBEB2D8DC62A1B87F32 /* NimbleXCTestHandler.swift */, + 4CFD05A4ADF118B4F237803DA904434C /* NMBExceptionCapture.h */, + 9FA77AA498A074ACC80A4D92592F369C /* NMBExceptionCapture.m */, + 6ED3B51EEE439AD9A185845300BF06AD /* NMBExpectation.swift */, + 17658872231DBE64CAE55AA7B703F18A /* NMBObjCMatcher.swift */, + 8D07B970FABF9B765FD43E03FBDD544D /* NMBStringify.h */, + 0D76BEEE5B32330195FB03044C3E4F44 /* NMBStringify.m */, + FE582858E444F78FF47160866AA54BC7 /* PostNotification.swift */, + E99CE5007733C4DAEA48881B1B8ADE74 /* Predicate.swift */, + 3AEBB59DAF48A0CEFB4F5297AEB3779D /* RaisesException.swift */, + D287538FE9D0F5D3103907FBA0F711F1 /* SatisfyAllOf.swift */, + FE64350AE3AF7C9DE3DA3737E70644C5 /* SatisfyAnyOf.swift */, + 150E79AC1ECCCC04306BC175588D3351 /* SourceLocation.swift */, + 9CF89A6943F689434ED9CB6279165EDC /* Stringers.swift */, + 3103870D569FB5F369820BD98DC247AF /* ThrowAssertion.swift */, + 511D5F3EF0C438FA53E15FAC3DB97D37 /* ThrowError.swift */, + 1F48B91B4064EA92FA60D4455FBF0257 /* ToSucceed.swift */, + 0C10507EBB8AA3756829FDC5FAC25C81 /* XCTestObservationCenter+Register.m */, + DA8802CF07C1038F72127431F9BAA2D8 /* Support Files */, ); - name = "Support Files"; - path = "Example/Pods/Target Support Files/PopupDialog"; + path = Nimble; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - 374F07EA1942679546AB2B657C60C1AD /* Headers */ = { + 1254F19917E0E1C2D98427AA5F2BAE5A /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - C42E25AEAE4758760D9239D25E88FEAF /* CwlCatchException.h in Headers */, - 405AB644E5E32AB19AE8697B4C0CE124 /* CwlMachBadInstructionHandler.h in Headers */, - E594306BF52C899BCE23A4BA56CD0DD0 /* CwlPreconditionTesting.h in Headers */, - C971A8D42C7C043DC4970A69B81546A7 /* DSL.h in Headers */, - 01DAA6DD1809A39129FF7C72DDF93054 /* mach_excServer.h in Headers */, - 5CE5E8EA75E0B3DC5BE140B61DF37EFD /* Nimble-umbrella.h in Headers */, - 62DFF94A7A777939C861EDA13627999B /* Nimble.h in Headers */, - 0725A6F6AF5A97F9D46B3188E135D5B2 /* NMBExceptionCapture.h in Headers */, - A3A25739D8FCB7A4FE17C8C5A6C7BE72 /* NMBStringify.h in Headers */, + 028DF0FD8A2D44D80EB0313263408364 /* CwlCatchException.h in Headers */, + 85A4019248D92500E641D01E1AD85724 /* CwlMachBadInstructionHandler.h in Headers */, + DE170038470E8DDDBC393195336A19B8 /* CwlPreconditionTesting.h in Headers */, + 45B25D082BF52A41858126CE82885AD3 /* DSL.h in Headers */, + 6193AAE31B8DDFE2B4FD667055CAE810 /* mach_excServer.h in Headers */, + BE9631B3CFF5881B6C29BBA43FD8B81E /* Nimble-umbrella.h in Headers */, + 9C25BC723ED8C3D2AD876B9CAC53B173 /* Nimble.h in Headers */, + 2B53456A071A2F00B3D1DF5F58E248E4 /* NMBExceptionCapture.h in Headers */, + 77A0C071248147C59F2AD9EDE5D9025E /* NMBStringify.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 384DE8A8021C5DA5E256BCFEC3D478A9 /* Headers */ = { + 1A03BD6302B9962E80B75AF1B3B48F79 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - F720FAF13A108CE6901E0A8B0580E1E8 /* FBSnapshotTestCase-umbrella.h in Headers */, - 00224C929D57F45B70E87359E719948D /* FBSnapshotTestCase.h in Headers */, - C49D52712466511E332C952834C81FE1 /* FBSnapshotTestCasePlatform.h in Headers */, - 90142C6259374E18E640396A59AD379A /* FBSnapshotTestController.h in Headers */, - 40039E0AF0D764360B1D4FC4F7950D2E /* UIApplication+StrictKeyWindow.h in Headers */, - F1AAAE00BB32B733B238E2B4E8424506 /* UIImage+Compare.h in Headers */, - D04AAC8B22E4A4DC4F39891C4E52F251 /* UIImage+Diff.h in Headers */, - B74CD6E6EBEA0B642776BCB37850415D /* UIImage+Snapshot.h in Headers */, + 144BDE93E26654901B4FB21484EC77BB /* Pods-PopupDialog_Example-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 87353A53FB8FA55F6215AC51654C8C0E /* Headers */ = { + 605F63EC3CC6DD8D6EBCEB37637F17FF /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 928FFA6E7256231E743768EBC78E36A7 /* PopupDialog-umbrella.h in Headers */, + 839A40B87D37A40C7AA29B800E333724 /* DynamicBlurView-umbrella.h in Headers */, + C608CD5014667D549210559A33CA1892 /* DynamicBlurView.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 91BC06AC56280076E5F934A39734C6A3 /* Headers */ = { + 92D99921DA44522F17071A078AB5B35D /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 41840A6B236DEFC868F8F8FF3A5EBDB6 /* Pods-PopupDialog_Tests-umbrella.h in Headers */, + D119ECF5F4F2CB90DFBA17153A844161 /* PopupDialog-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - BD91A0408709E5CE60C515237C69EEE0 /* Headers */ = { + B8E44194E23FD1D5E3F7B3ED7E306A8D /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 18643D4F9BC327B1E5B9175F4260AC0E /* DynamicBlurView-umbrella.h in Headers */, - 08452A247B58228DFFC77D7BA30DD668 /* DynamicBlurView.h in Headers */, + FA71E485EBC200D061E8C861607C02D9 /* Pods-PopupDialog_Tests-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - E0D64CF3D53140437C487466BD0E54C4 /* Headers */ = { + C1A051BB72BEC6C4DD32571E75D6C182 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 0FDD7A2A9FF06E643EEB86C2DB234913 /* Pods-PopupDialog_Example-umbrella.h in Headers */, + 091E200786E28C6766A07D636E0B33AB /* FBSnapshotTestCase.h in Headers */, + D91179CD68BA1F5A48C16A42B6D14608 /* FBSnapshotTestCasePlatform.h in Headers */, + C2D51D0E38F630A8A468843702A90348 /* FBSnapshotTestController.h in Headers */, + E078C238870C170DD524C8149975B22E /* iOSSnapshotTestCase-umbrella.h in Headers */, + D0DE9DDC173315C08C72D6DE1B3C859E /* UIImage+Compare.h in Headers */, + FF107C8DAD13A21F44CE5072AAC76B51 /* UIImage+Diff.h in Headers */, + 4DE6EADE9A71BF90004C24201D5B8E0D /* UIImage+Snapshot.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 64EF52228FAC44ED257BDDD2291AE3A3 /* Pods-PopupDialog_Example */ = { + 259FA497B621B18FB2921DA18AA46AC2 /* DynamicBlurView */ = { isa = PBXNativeTarget; - buildConfigurationList = A6D0C1C247431A33E92C7965B033247C /* Build configuration list for PBXNativeTarget "Pods-PopupDialog_Example" */; + buildConfigurationList = 42F3E018DABDBF2D4F22D7F144BD9AF2 /* Build configuration list for PBXNativeTarget "DynamicBlurView" */; buildPhases = ( - E0D64CF3D53140437C487466BD0E54C4 /* Headers */, - D12978267A1F44DA2B4D2C2BCE312DC4 /* Sources */, - F4DE368568D44A7FF6E98C4554CCAD21 /* Frameworks */, - D7474BDEBF636DB62BABFB52ABE9CB2E /* Resources */, + 605F63EC3CC6DD8D6EBCEB37637F17FF /* Headers */, + 9F7C4A233710EDA715FBFF4679D4F731 /* Sources */, + 6F954DBE88DF5B843F07784A61AB0AAE /* Frameworks */, + 4D7D7821B2568B6700CF333B6E5A11C3 /* Resources */, ); buildRules = ( ); dependencies = ( - 20BF833400E3675351D94658C1850CFD /* PBXTargetDependency */, - F3C5E5CA1F5D2472C5F366426964C032 /* PBXTargetDependency */, - 093B5E4B745AB0161D4FAC2A0B55D393 /* PBXTargetDependency */, ); - name = "Pods-PopupDialog_Example"; - productName = "Pods-PopupDialog_Example"; - productReference = BA25CA8154E3DABB0DDA3EF619142C27 /* Pods_PopupDialog_Example.framework */; + name = DynamicBlurView; + productName = DynamicBlurView; + productReference = 52E79702AB3898330C827CB689786AEB /* DynamicBlurView.framework */; productType = "com.apple.product-type.framework"; }; - 6E71929B582F8CD57B3DC1FD6560F047 /* PopupDialog */ = { + A318C90E72C2B09215F12ECE5413C46B /* Pods-PopupDialog_Tests */ = { isa = PBXNativeTarget; - buildConfigurationList = BC7508D556E6C0879FE57E3E574C62AE /* Build configuration list for PBXNativeTarget "PopupDialog" */; + buildConfigurationList = 2FEE350026219C4443E4BB79ACCE110E /* Build configuration list for PBXNativeTarget "Pods-PopupDialog_Tests" */; buildPhases = ( - 87353A53FB8FA55F6215AC51654C8C0E /* Headers */, - 45888BA4605C36782FAFEAC2D00E6CD3 /* Sources */, - 74F47434089ED97AF48B711E9FADBF5C /* Frameworks */, - 51F44C6F0DFF3643706A346EC44D61E8 /* Resources */, + B8E44194E23FD1D5E3F7B3ED7E306A8D /* Headers */, + 65201B3A3F06D736E21A77BFCE523AED /* Sources */, + A625497FAB9235BC3AB53206C7BE41B6 /* Frameworks */, + 373942DA481CB447FE30BCA677A15BD1 /* Resources */, ); buildRules = ( ); dependencies = ( - 7A0F55816EC0A47F2B5F6C7CA549559A /* PBXTargetDependency */, + 001D59E92165994957FE0FFC562903AD /* PBXTargetDependency */, + 553D322FBCC157A4AE5E44BB0F323793 /* PBXTargetDependency */, + 4DFB277277B85A469117529882537300 /* PBXTargetDependency */, ); - name = PopupDialog; - productName = PopupDialog; - productReference = 34FB964502259D0FF233CE71CFDD2A71 /* PopupDialog.framework */; + name = "Pods-PopupDialog_Tests"; + productName = "Pods-PopupDialog_Tests"; + productReference = 062B40CBDA4909A56A64AC28DFA2961C /* Pods_PopupDialog_Tests.framework */; productType = "com.apple.product-type.framework"; }; - 6F13695E06195A78EA8A95F8C7ED0D2F /* Nimble */ = { + CA74CEED40A402865660392784D34978 /* Pods-PopupDialog_Example */ = { isa = PBXNativeTarget; - buildConfigurationList = 0EDE00A0AE7F2ACDA112F853133A5D2F /* Build configuration list for PBXNativeTarget "Nimble" */; + buildConfigurationList = FF4378A1AC3651ACF5BA4E428B589E3C /* Build configuration list for PBXNativeTarget "Pods-PopupDialog_Example" */; buildPhases = ( - 374F07EA1942679546AB2B657C60C1AD /* Headers */, - 5E7A13B8F8D6BC9C7DBBCDCDA4D84246 /* Sources */, - A7EDD7975CD88AD39BAE0D6484C32803 /* Frameworks */, - C937BE3138C5339919754BC30CA46DE7 /* Resources */, + 1A03BD6302B9962E80B75AF1B3B48F79 /* Headers */, + 37DB39C43D1A5CC839EB6AA5F5817CD6 /* Sources */, + A26F80CA3273279AAED0BA638B9D1E6A /* Frameworks */, + 91BC40534C87DB2F9C8A0E463842F210 /* Resources */, ); buildRules = ( ); dependencies = ( + 38F256C8A3B911B1112A1F99BAB8CD1F /* PBXTargetDependency */, + 4DBFF901667733D7986BA2A058F8BA1D /* PBXTargetDependency */, + 19D554CE624F10D565E8599D14C7BB01 /* PBXTargetDependency */, ); - name = Nimble; - productName = Nimble; - productReference = BAE263041362D074978BB3B577DF0A05 /* Nimble.framework */; + name = "Pods-PopupDialog_Example"; + productName = "Pods-PopupDialog_Example"; + productReference = 9149414E122143FE570977D66C83E70C /* Pods_PopupDialog_Example.framework */; productType = "com.apple.product-type.framework"; }; - 7D914FA2F03C860D5133BA2DB87C594A /* DynamicBlurView */ = { + D4352C8CA6EDC802E8D85D2E61BC6173 /* Nimble */ = { isa = PBXNativeTarget; - buildConfigurationList = B00E17D5B863CDCF74DE6FA3A6C1300F /* Build configuration list for PBXNativeTarget "DynamicBlurView" */; + buildConfigurationList = F7696C5CA73833843928D0745738A604 /* Build configuration list for PBXNativeTarget "Nimble" */; buildPhases = ( - BD91A0408709E5CE60C515237C69EEE0 /* Headers */, - 64D4719150E9FEC3CDDBB82624177D73 /* Sources */, - E65CA3D384260DCB7B4E58EA234ABEA5 /* Frameworks */, - 4991E03E196B947CF16368E88975E33C /* Resources */, + 1254F19917E0E1C2D98427AA5F2BAE5A /* Headers */, + 7EF0B1276B07BC36BB916E65618EDC6B /* Sources */, + 73308E1586E14416AC19C29CACA6BDDA /* Frameworks */, + 331EF7BDCF08FFF90F46CE9B1E24EFD5 /* Resources */, ); buildRules = ( ); dependencies = ( ); - name = DynamicBlurView; - productName = DynamicBlurView; - productReference = 86C4A2D817E6CFFF31BF75161625FD5D /* DynamicBlurView.framework */; + name = Nimble; + productName = Nimble; + productReference = C35AE0EC6B190BA1A70B80CBCBCE687F /* Nimble.framework */; productType = "com.apple.product-type.framework"; }; - 98A98149697C80CEF8D5772791E92E66 /* FBSnapshotTestCase */ = { + E0D5773C6DEB06357ABB396EF13BB2CD /* iOSSnapshotTestCase */ = { isa = PBXNativeTarget; - buildConfigurationList = A38070E189561F257BBD5A0A55CACCCF /* Build configuration list for PBXNativeTarget "FBSnapshotTestCase" */; + buildConfigurationList = EEB1DCFA8D23D738DB723872276F2402 /* Build configuration list for PBXNativeTarget "iOSSnapshotTestCase" */; buildPhases = ( - 384DE8A8021C5DA5E256BCFEC3D478A9 /* Headers */, - A48201AC594B2E6B09C0EE0396BC1377 /* Sources */, - E581515110D66F94F80A6937831489A1 /* Frameworks */, - 5CC655F1A6C7A45A9693160581076BAE /* Resources */, + C1A051BB72BEC6C4DD32571E75D6C182 /* Headers */, + 4E0D9E5D7FD898F301A30F72EF7E3947 /* Sources */, + F3287CA501DBA186DAEEE8D485738900 /* Frameworks */, + 50D0972EB23D3950F66DCF37E3B0428E /* Resources */, ); buildRules = ( ); dependencies = ( ); - name = FBSnapshotTestCase; - productName = FBSnapshotTestCase; - productReference = 5C4F31330DFA99D699E4BDC8C3573D73 /* FBSnapshotTestCase.framework */; + name = iOSSnapshotTestCase; + productName = iOSSnapshotTestCase; + productReference = B47D5EC16FEF0045652155C89E1409E1 /* FBSnapshotTestCase.framework */; productType = "com.apple.product-type.framework"; }; - A0860FC7ADE369F09253ED2D78A340A1 /* Pods-PopupDialog_Tests */ = { + FFBD6E8AFCC899B135424D8D701837CE /* PopupDialog */ = { isa = PBXNativeTarget; - buildConfigurationList = A86897A13F2AC24A28D86D8117ED3F42 /* Build configuration list for PBXNativeTarget "Pods-PopupDialog_Tests" */; + buildConfigurationList = FDE921D1C54A9CC100987516CC70515B /* Build configuration list for PBXNativeTarget "PopupDialog" */; buildPhases = ( - 91BC06AC56280076E5F934A39734C6A3 /* Headers */, - 35B518E0F57F1751FD6C9DF5AF0C2A7D /* Sources */, - 0A474632AE524B9A102B0A1DD317BE5F /* Frameworks */, - 35EF78A6FD06F21CD105F7B64BCFE75D /* Resources */, + 92D99921DA44522F17071A078AB5B35D /* Headers */, + A92A200ACA82F1FDC864C5EBC348618D /* Sources */, + 355864A5162A9D152615B2D9CB1F511B /* Frameworks */, + 32490BC967CA4FE4130F5C555AF68362 /* Resources */, ); buildRules = ( ); dependencies = ( - 2FEEA930D656412EF284AE9C48D33C5A /* PBXTargetDependency */, - 711C20415A0D5AD96B70AEBD1C0DE3CC /* PBXTargetDependency */, - 045F6B82947F8D91938A16E771DE1389 /* PBXTargetDependency */, + 5DAFA5BFE5881E697AEA777D819B23DC /* PBXTargetDependency */, ); - name = "Pods-PopupDialog_Tests"; - productName = "Pods-PopupDialog_Tests"; - productReference = 4F26742D152937252FF450B2C14758C9 /* Pods_PopupDialog_Tests.framework */; + name = PopupDialog; + productName = PopupDialog; + productReference = B7636B26B91AE19F8C6C8F2CAF6F1327 /* PopupDialog.framework */; productType = "com.apple.product-type.framework"; }; /* End PBXNativeTarget section */ @@ -988,70 +967,78 @@ BFDFE7DC352907FC980B868725387E98 /* Project object */ = { isa = PBXProject; attributes = { - LastSwiftUpdateCheck = 1100; - LastUpgradeCheck = 1100; + LastSwiftUpdateCheck = 0930; + LastUpgradeCheck = 1020; + TargetAttributes = { + 259FA497B621B18FB2921DA18AA46AC2 = { + LastSwiftMigration = 1020; + }; + FFBD6E8AFCC899B135424D8D701837CE = { + LastSwiftMigration = 1020; + }; + }; }; buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */; compatibilityVersion = "Xcode 3.2"; - developmentRegion = en; + developmentRegion = English; hasScannedForEncodings = 0; knownRegions = ( + English, en, ); mainGroup = CF1408CF629C7361332E53B88F7BD30C; - productRefGroup = 3A0A53BA0703F711352975DEE5A38EA8 /* Products */; + productRefGroup = AEBB5515A92AAB92E16502B85589DA15 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( - 7D914FA2F03C860D5133BA2DB87C594A /* DynamicBlurView */, - 98A98149697C80CEF8D5772791E92E66 /* FBSnapshotTestCase */, - 6F13695E06195A78EA8A95F8C7ED0D2F /* Nimble */, - 64EF52228FAC44ED257BDDD2291AE3A3 /* Pods-PopupDialog_Example */, - A0860FC7ADE369F09253ED2D78A340A1 /* Pods-PopupDialog_Tests */, - 6E71929B582F8CD57B3DC1FD6560F047 /* PopupDialog */, - 52B60EC2A583F24ACBB69C113F5488B9 /* SwiftLint */, + 259FA497B621B18FB2921DA18AA46AC2 /* DynamicBlurView */, + E0D5773C6DEB06357ABB396EF13BB2CD /* iOSSnapshotTestCase */, + D4352C8CA6EDC802E8D85D2E61BC6173 /* Nimble */, + CA74CEED40A402865660392784D34978 /* Pods-PopupDialog_Example */, + A318C90E72C2B09215F12ECE5413C46B /* Pods-PopupDialog_Tests */, + FFBD6E8AFCC899B135424D8D701837CE /* PopupDialog */, + 462030076D657DEC3A2BAA37E0C875A2 /* SwiftLint */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - 35EF78A6FD06F21CD105F7B64BCFE75D /* Resources */ = { + 32490BC967CA4FE4130F5C555AF68362 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 4991E03E196B947CF16368E88975E33C /* Resources */ = { + 331EF7BDCF08FFF90F46CE9B1E24EFD5 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 51F44C6F0DFF3643706A346EC44D61E8 /* Resources */ = { + 373942DA481CB447FE30BCA677A15BD1 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 688A762122DE1032000CB933 /* Assets.xcassets in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 5CC655F1A6C7A45A9693160581076BAE /* Resources */ = { + 4D7D7821B2568B6700CF333B6E5A11C3 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - C937BE3138C5339919754BC30CA46DE7 /* Resources */ = { + 50D0972EB23D3950F66DCF37E3B0428E /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - D7474BDEBF636DB62BABFB52ABE9CB2E /* Resources */ = { + 91BC40534C87DB2F9C8A0E463842F210 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( @@ -1061,294 +1048,199 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - 35B518E0F57F1751FD6C9DF5AF0C2A7D /* Sources */ = { + 37DB39C43D1A5CC839EB6AA5F5817CD6 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 5A8FF79601D18B09D614A0B329F7DC05 /* Pods-PopupDialog_Tests-dummy.m in Sources */, + C21C81182C2082520FFF8A70B6C01A7B /* Pods-PopupDialog_Example-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 45888BA4605C36782FAFEAC2D00E6CD3 /* Sources */ = { + 4E0D9E5D7FD898F301A30F72EF7E3947 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - EC78D8A8141D8268D6382866CDF8F16A /* InteractiveTransition.swift in Sources */, - B2F489FB022F836FB35B3FEABF68903C /* PopupDialog+Keyboard.swift in Sources */, - 73D0683E05F3565AE7175088B7CE6DC0 /* PopupDialog-dummy.m in Sources */, - 5546955AFBE8D354D17380A294A25CE6 /* PopupDialog.swift in Sources */, - F82E29CC1BF7165FF77D9C4A387357A7 /* PopupDialogButton.swift in Sources */, - 225555187BFD67F7F6DADEA6C73C567F /* PopupDialogContainerView.swift in Sources */, - A254857FE369E684CBE3B4F6F292239D /* PopupDialogDefaultButtons.swift in Sources */, - C9D87D93855954B4B23CDB647DEB7D0E /* PopupDialogDefaultView.swift in Sources */, - 030FCBCF4FD8CD3905C39EDA654D29BD /* PopupDialogDefaultViewController.swift in Sources */, - A94100505467526DB734FAB115BF715C /* PopupDialogOverlayView.swift in Sources */, - D9F9E9336475EE7188F8F29DDE0A2EB1 /* PresentationController.swift in Sources */, - 83B9E5412A63412A151E0092BF6AF7CA /* PresentationManager.swift in Sources */, - 7A009CFEBD7D09FB5DA532F54EB9FBEF /* TransitionAnimations.swift in Sources */, - 169D250E01A497F88370028FD950A37C /* TransitionAnimator.swift in Sources */, - 0F82656B116745EE31DB985B8096CD60 /* UIImageView+Calculations.swift in Sources */, - 37AFD441D3948E62ABBFFBDC662F6DB6 /* UIView+Animations.swift in Sources */, - D82DC5AAA5AA0E1A33EFE457C493D755 /* UIViewController+Visibility.swift in Sources */, + 6D43C958217DDF52EA577425F130C245 /* FBSnapshotTestCase.m in Sources */, + 43F296FD5616B0ED2AFB31D98B37B1EE /* FBSnapshotTestCasePlatform.m in Sources */, + 05B0FB93D36C759F7614D065FBC0B164 /* FBSnapshotTestController.m in Sources */, + 2B79FFCE612175372C451F1653D32D84 /* iOSSnapshotTestCase-dummy.m in Sources */, + 2CCCE84C7A1952595015411C9A436D3F /* SwiftSupport.swift in Sources */, + 258AD4ECFBD18E67F0B18FE3CF9B1AA7 /* UIImage+Compare.m in Sources */, + 15A3B154223AF927E93AC5C83732F8C1 /* UIImage+Diff.m in Sources */, + E7B32ED09537D571B1A28C42CE9E7DC9 /* UIImage+Snapshot.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 5E7A13B8F8D6BC9C7DBBCDCDA4D84246 /* Sources */ = { + 65201B3A3F06D736E21A77BFCE523AED /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - D355A1A86FF97A4444383C7035DA1E1F /* AdapterProtocols.swift in Sources */, - 75715424923FF012103361F76C7A8A05 /* AllPass.swift in Sources */, - 11E562107FE281404113395BA7DA35D8 /* AssertionDispatcher.swift in Sources */, - 72EAF9D11A6F6AA098FDA5BF0D9614B3 /* AssertionRecorder.swift in Sources */, - 444242F3A5A087132A93CA36017AD620 /* Async.swift in Sources */, - EFC67FB506472146894C81BD6A680894 /* Await.swift in Sources */, - C3C0DE91C1EDADBF90CA908CB7677FF7 /* BeAKindOf.swift in Sources */, - 5F3B71C56395F5BCE2BAB106D780A316 /* BeAnInstanceOf.swift in Sources */, - C9088581BC43832D6AF65207A507F6E9 /* BeCloseTo.swift in Sources */, - BDB3FCECD68FF28D4F74698F452063FD /* BeEmpty.swift in Sources */, - 9452493EEAF67E7B9C9224D696ABBA8B /* BeginWith.swift in Sources */, - 306D848638158C6AB2B6FC2ADC1DFD5A /* BeGreaterThan.swift in Sources */, - ED6FC5CEB11E74E7698F09F380683CFC /* BeGreaterThanOrEqualTo.swift in Sources */, - B4374EE986ACDA18DE16359C36F43971 /* BeIdenticalTo.swift in Sources */, - 864E6B0B8D286D38A202F0381C7D45DD /* BeLessThan.swift in Sources */, - A82232B7EA64317A4F0A1F5FC2C9F5D6 /* BeLessThanOrEqual.swift in Sources */, - 6ADEB55FAF48827EE08D5E1B6F946501 /* BeLogical.swift in Sources */, - 64ED91354C9DB1A35CFE783624260E0F /* BeNil.swift in Sources */, - D8D8636AA4F6781D2A809B0984B434B0 /* BeVoid.swift in Sources */, - 364F3140C786E01EFCF6656C8A2FF6C2 /* Contain.swift in Sources */, - 01869817854E030910D5C2F7FB4D64BB /* ContainElementSatisfying.swift in Sources */, - 67A144189500D0F068317EA82B7A3478 /* CwlBadInstructionException.swift in Sources */, - 41E31C552EE259E4BEC6CFE49299B5C2 /* CwlCatchBadInstruction.swift in Sources */, - A2DB6695330623A662CEDEA0EC8598C4 /* CwlCatchException.m in Sources */, - B7765DD0B31748724E386AA238799A93 /* CwlCatchException.swift in Sources */, - 8630CA8EABAD27223326FB08E572E639 /* CwlDarwinDefinitions.swift in Sources */, - 63E9E7352E66E23B5507639CB5EE00C6 /* CwlMachBadInstructionHandler.m in Sources */, - E425105EF5426714A00D9A9B6222123A /* DSL+Wait.swift in Sources */, - F5F579CACAC5D039AEA52CFD85BAA1DC /* DSL.m in Sources */, - EB83843AA40E9A388ACBDD0BE1DD4065 /* DSL.swift in Sources */, - E22D9E4B94A4FF6E415308E9D9B6D233 /* EndWith.swift in Sources */, - 22643CBE1C189CCDF72B28ED90ED9E76 /* Equal.swift in Sources */, - 42AB7693DF9D773D21FB710EC9C848D9 /* Errors.swift in Sources */, - D3AF7291BC7915600BAADBDB73C069DE /* Expectation.swift in Sources */, - 77CC261294B63B80E6C4285045943438 /* ExpectationMessage.swift in Sources */, - C923C7A7E74F165D32CAB0DDAB8C5504 /* Expression.swift in Sources */, - 2C38665499A01B08A0D011CA7AF4FE8A /* FailureMessage.swift in Sources */, - AC07189DEA030365C05F5501A8F0498E /* Functional.swift in Sources */, - 97B866E860E4C9433C4C10DD590D2D1D /* HaveCount.swift in Sources */, - A28905FACC5D77141D82FD07822E1266 /* mach_excServer.c in Sources */, - 7BF64B8EB111B20098752B4813CD13D9 /* Match.swift in Sources */, - 82682BC16D5B4EE13D8455F008983751 /* MatcherFunc.swift in Sources */, - C0F8730BE864945038D14BF58B97CA94 /* MatcherProtocols.swift in Sources */, - 34A653F2102D5C686B9989E1A3A90ABA /* MatchError.swift in Sources */, - EF939F4625A0E03E9DEC69923879FAAD /* Nimble-dummy.m in Sources */, - 1098AC9B0A4F55B1CCF3C32D46C65FF8 /* NimbleEnvironment.swift in Sources */, - 3FE6B7466A47A04A940760E383465EAA /* NimbleXCTestHandler.swift in Sources */, - D56F0DEA256B9DF53EEA2F8BA8ABCA70 /* NMBExceptionCapture.m in Sources */, - 1B150812C28ED02DDC40A757EA00EFDB /* NMBExpectation.swift in Sources */, - E6300A4FD79A77E07899341BD8FBB463 /* NMBObjCMatcher.swift in Sources */, - FAF7FF5CC98733942F81EACBDFA6083F /* NMBStringify.m in Sources */, - 943EF9191F50F5C8364BFB46E6FFCACB /* PostNotification.swift in Sources */, - 305C1342B9B2F1449A3CAEA2AA961680 /* Predicate.swift in Sources */, - CF0DBC57CC4BAF16B8A5EE9B15A27A72 /* RaisesException.swift in Sources */, - AB7A087F4F097DF5439A4503B2221E8C /* SatisfyAllOf.swift in Sources */, - 3A7F4D153DC75E8986A55E7F2FFE9CB1 /* SatisfyAnyOf.swift in Sources */, - 8750F8C785B06B6A70E10B61B4B88003 /* SourceLocation.swift in Sources */, - BE8B6D8BA702869EC5CFFA2B59CDCB6E /* Stringers.swift in Sources */, - 561BE9D824E69DE2B0E24947326A6A9B /* ThrowAssertion.swift in Sources */, - E885D65DB6E4A4C6C0B85B8F97DF677A /* ThrowError.swift in Sources */, - 9586B053F23E4786E0499C3B76ABE281 /* ToSucceed.swift in Sources */, - 8A2AADAB3E3CBA788D4DF80984DADFE8 /* XCTestObservationCenter+Register.m in Sources */, + F4FC149115FDBD8243CA10FA4552B4C8 /* Pods-PopupDialog_Tests-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 64D4719150E9FEC3CDDBB82624177D73 /* Sources */ = { + 7EF0B1276B07BC36BB916E65618EDC6B /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - DD2F32642C7F57A4EE71C41F183FEAC8 /* BlurLayer.swift in Sources */, - B52BCD660C0CA96651CA9AEAB5672D7B /* CaptureQuality.swift in Sources */, - 81156AE99DEF656F29B13B8176CDC3B5 /* CGContext+CGImage.swift in Sources */, - 1C14E028D177632DF0B363082E85E536 /* CGImage+Accelerate.swift in Sources */, - 7EBE128BBA4CC34DBF4853B1E747C724 /* DynamicBlurView-dummy.m in Sources */, - 42414824559FA605DF0EDCD382366DBD /* DynamicBlurView.swift in Sources */, - C08A03032406A24E285B680ACE7A9E73 /* TrackingMode.swift in Sources */, - E9157FAB5F209124A32CE9C3BB6B6027 /* UIImage+Blur.swift in Sources */, + 37C28AD0CD393A0063A6E3B3400643EC /* AdapterProtocols.swift in Sources */, + 51D822E3615B158048411AD97501AEB4 /* AllPass.swift in Sources */, + FDBD0FFF2F3875EA683279E7A02310E2 /* AssertionDispatcher.swift in Sources */, + BF886FB46C3CDABBD1583AF65B051021 /* AssertionRecorder.swift in Sources */, + F7CCFB351CD1D60A555D1F5037EEC775 /* Async.swift in Sources */, + 2AF068B3ADCE1AB7D890EC0684C83B63 /* Await.swift in Sources */, + 56775B822D73E8E27D53C4A8F93593AB /* BeAKindOf.swift in Sources */, + B01AA54C73F2D6B3C7240E81AE5B7EE5 /* BeAnInstanceOf.swift in Sources */, + D1108B0B95C44070293DEC99A96E8B9E /* BeCloseTo.swift in Sources */, + 76F766F6D0B6D09D5158F42A55AD0F29 /* BeEmpty.swift in Sources */, + 82DE69D2E7FDCA857DA010C5440D9222 /* BeginWith.swift in Sources */, + 55F0D512EE0320AB90253B2A0F149614 /* BeGreaterThan.swift in Sources */, + AD4E0E8A55D8BEA2EBC4D011D0A7B212 /* BeGreaterThanOrEqualTo.swift in Sources */, + 2F1DFFA18F8227FF0B226B3E0971AD20 /* BeIdenticalTo.swift in Sources */, + B19CC4DDE469AA715425DF205252DF09 /* BeLessThan.swift in Sources */, + 9FA84BEFB9A6EBCD81771B3BACD1B6D7 /* BeLessThanOrEqual.swift in Sources */, + 25061DCFE254B9A51567D57282FD09B6 /* BeLogical.swift in Sources */, + 7C7A79A8BEE1BEDB839CFA6F74E99C7E /* BeNil.swift in Sources */, + BB4EF29493E23FCD573A571EA2FC2691 /* BeVoid.swift in Sources */, + 91D72D53DEE7E861FC51B58432A07C24 /* Contain.swift in Sources */, + DF8E6E6872AF7D65EB8BC55923DB0B2E /* ContainElementSatisfying.swift in Sources */, + DED2339032E336A6C72A1812E3300AF7 /* CwlBadInstructionException.swift in Sources */, + 764666F465F544BCE897E3BF4BAFD38F /* CwlCatchBadInstruction.swift in Sources */, + A7B7DDC792B0646E6BBC93DEBCBF1A86 /* CwlCatchException.m in Sources */, + C4F69BE250F3575D749A5E10CB782F9A /* CwlCatchException.swift in Sources */, + 937D90C2670CFFB0A35B291A75F9009C /* CwlDarwinDefinitions.swift in Sources */, + 90D48E81FAE63982EAA8DE7E68010353 /* CwlMachBadInstructionHandler.m in Sources */, + 325558B7841069C5A237F82E8C6C473D /* DSL+Wait.swift in Sources */, + 3E0EC3B170A3018A620D85099A090B49 /* DSL.m in Sources */, + F35CD6B3F10783E58481D6E00ACF3A39 /* DSL.swift in Sources */, + 6BE8158D44809BA48B8B85EB4F92A45B /* EndWith.swift in Sources */, + BC87DC0E426ED91DB6BDBF2DF5BF2E3C /* Equal.swift in Sources */, + 608181B47864A58E1C3B7B0AD0FE1FD1 /* Errors.swift in Sources */, + E2E9404DF91A582434E341BAA79EFA9F /* Expectation.swift in Sources */, + 38E861DE6E72CED4680AE094D99B77C2 /* ExpectationMessage.swift in Sources */, + B7E2AB7A6C70C55094F252AFA84AD9C3 /* Expression.swift in Sources */, + 2C1BD5BAE866697E817108A191FB28B6 /* FailureMessage.swift in Sources */, + F1926E4E362CBAED87FE5D17E219913A /* Functional.swift in Sources */, + DE8627DC4C00D882077FC1D3E87BBEE5 /* HaveCount.swift in Sources */, + 97BFF30F9CB958E74517131650D5BC7C /* mach_excServer.c in Sources */, + 4AEAB6E35C5D3C704C9A55CFC315C982 /* Match.swift in Sources */, + 148034F66372FB0115EB12D52EA2545A /* MatcherFunc.swift in Sources */, + E523A7C9BB3E1DD9565AD0062BA13177 /* MatcherProtocols.swift in Sources */, + E9894788BB6C368CE76AD7754F8558D3 /* MatchError.swift in Sources */, + 4301C742FE4B509A8DC1504F367EEB99 /* Nimble-dummy.m in Sources */, + 6AF32EB2E58E09B85C53A735BC162BC2 /* NimbleEnvironment.swift in Sources */, + A822E02EFA49284044CEDFED620F796E /* NimbleXCTestHandler.swift in Sources */, + C3E37DE60D2E23308D089991D99BB571 /* NMBExceptionCapture.m in Sources */, + 4A0338D4EF95D82B125C304D02D5DA2F /* NMBExpectation.swift in Sources */, + 785338FE484ABFB22EED6B979AC47AC4 /* NMBObjCMatcher.swift in Sources */, + 2A244420894E5360D3E2E7FEC79AF783 /* NMBStringify.m in Sources */, + 5C41F0CE907C842E5D662C74836EFBDC /* PostNotification.swift in Sources */, + 7714F044B1FCABBB1C097A62A2A36760 /* Predicate.swift in Sources */, + A5174F63D2FE4B0D01BBE018F09BC2A1 /* RaisesException.swift in Sources */, + 7BB6491AF900FAC4353B3DB6649DC259 /* SatisfyAllOf.swift in Sources */, + E4B82392168C3D0D09AEF735DFAE18A1 /* SatisfyAnyOf.swift in Sources */, + AA4E032922B89B6D052F14D0C0AB250B /* SourceLocation.swift in Sources */, + E978590228F0A06065B7EAD5DBF21CB1 /* Stringers.swift in Sources */, + D0664493DF417CB8D86DFAE07F9671E4 /* ThrowAssertion.swift in Sources */, + E34B752A6940722D74EF7323F9CF96AB /* ThrowError.swift in Sources */, + 6892F564CC7FFE1680FDC431F5E66416 /* ToSucceed.swift in Sources */, + 1B57A0387C2CBCCF616043C57BB60215 /* XCTestObservationCenter+Register.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - A48201AC594B2E6B09C0EE0396BC1377 /* Sources */ = { + 9F7C4A233710EDA715FBFF4679D4F731 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 6DBC8EB7532E931C2FBDA71D1E0B66A4 /* FBSnapshotTestCase-dummy.m in Sources */, - 8CE3BF0ACE07EA42DD5DAC871BF4B767 /* FBSnapshotTestCase.m in Sources */, - E8AC509D18EBF21B1FEA909652A01108 /* FBSnapshotTestCasePlatform.m in Sources */, - 88396E68DC05A379282F3B374F75F43C /* FBSnapshotTestController.m in Sources */, - 9D65089019D558E5A9661F2DCAD20313 /* SwiftSupport.swift in Sources */, - 11C410135C7E89353B480AC8DE0BFB77 /* UIApplication+StrictKeyWindow.m in Sources */, - 2DCFF0CE0BD295F1D46D3247F36B192C /* UIImage+Compare.m in Sources */, - 14AD81D52FAD9CF2C065C61FB00C3B4F /* UIImage+Diff.m in Sources */, - A525E29E0A8079B35B793D8A2B5FBDF2 /* UIImage+Snapshot.m in Sources */, + 699AA6D35A7C549B72DF9DF2DA356283 /* BlurLayer.swift in Sources */, + 30FD6CA8052FBCAD2D41DF768AEF5D49 /* CaptureQuality.swift in Sources */, + 931F6BA94CDA2C88C3E446AB7359437B /* CGContext+CGImage.swift in Sources */, + B0EBBC56A849150DCF4CACB5DA6AC44A /* CGImage+Accelerate.swift in Sources */, + 9A0EADA9585165E1063D26C596C546F2 /* DynamicBlurView-dummy.m in Sources */, + 1E60789D3801FE2CCFCDFE262CDB2C39 /* DynamicBlurView.swift in Sources */, + AFF5E68DF0232B4E331A2A6D07A23EF6 /* TrackingMode.swift in Sources */, + 2B29853C2CD8A22239F8BA8AEAD7D870 /* UIImage+Blur.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - D12978267A1F44DA2B4D2C2BCE312DC4 /* Sources */ = { + A92A200ACA82F1FDC864C5EBC348618D /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 96E1774B23F5FB6842C3B3E36B1CF918 /* Pods-PopupDialog_Example-dummy.m in Sources */, + CF780D83CD27F18935122124907C4848 /* InteractiveTransition.swift in Sources */, + B8FB2D067E0C5605457C188F19392785 /* PopupDialog+Keyboard.swift in Sources */, + 54B34FD4ABB0FE120E25F5189DA213F1 /* PopupDialog-dummy.m in Sources */, + 8189AB429E5264D1443941BFCEF26AFB /* PopupDialog.swift in Sources */, + EF23FBAFDF08894B5DED08BF52377DDE /* PopupDialogButton.swift in Sources */, + 542DF141858D476C903B497D200C9E2F /* PopupDialogContainerView.swift in Sources */, + AFBF35BD00F64E9B7B23C718F1340666 /* PopupDialogDefaultButtons.swift in Sources */, + BB37A7C8F86DF110FBE474CCE487F88B /* PopupDialogDefaultView.swift in Sources */, + B23CF8A9066EF6B3739E7E8868A2D6C7 /* PopupDialogDefaultViewController.swift in Sources */, + 4808EAAB76DB5DA6290FF72A19AD872E /* PopupDialogOverlayView.swift in Sources */, + 97BCA6C4414C737B5A3F616ECB87D63A /* PresentationController.swift in Sources */, + 28AFE7BE0D55B9EB0436F652CDC0BF0A /* PresentationManager.swift in Sources */, + 1ABBEF76CF516143AC4C3CD3743BACB6 /* TransitionAnimations.swift in Sources */, + 41C177B80002765D079AC76D27E681FF /* TransitionAnimator.swift in Sources */, + D67390654B973701CF79FBEBBA6A6DA1 /* UIImageView+Calculations.swift in Sources */, + B5DCD95D29D1251E9F7007D0D752BF3D /* UIView+Animations.swift in Sources */, + B10D7CDB5826C2AFD79C2E255BCD5F05 /* UIViewController+Visibility.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 045F6B82947F8D91938A16E771DE1389 /* PBXTargetDependency */ = { + 001D59E92165994957FE0FFC562903AD /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "Pods-PopupDialog_Example"; - target = 64EF52228FAC44ED257BDDD2291AE3A3 /* Pods-PopupDialog_Example */; - targetProxy = 5DE6A812F01602ABD737FAE5CFFDCA8E /* PBXContainerItemProxy */; + name = Nimble; + target = D4352C8CA6EDC802E8D85D2E61BC6173 /* Nimble */; + targetProxy = C594029C1966F916E3FE5115D038CA68 /* PBXContainerItemProxy */; }; - 093B5E4B745AB0161D4FAC2A0B55D393 /* PBXTargetDependency */ = { + 19D554CE624F10D565E8599D14C7BB01 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = SwiftLint; - target = 52B60EC2A583F24ACBB69C113F5488B9 /* SwiftLint */; - targetProxy = D156589BEF28B1B971FF543898B5C8AB /* PBXContainerItemProxy */; + target = 462030076D657DEC3A2BAA37E0C875A2 /* SwiftLint */; + targetProxy = A256C510D822779A85DA6B51AA741CEF /* PBXContainerItemProxy */; }; - 20BF833400E3675351D94658C1850CFD /* PBXTargetDependency */ = { + 38F256C8A3B911B1112A1F99BAB8CD1F /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = DynamicBlurView; - target = 7D914FA2F03C860D5133BA2DB87C594A /* DynamicBlurView */; - targetProxy = 69ED31331A85AC2F2E811E876B7BA820 /* PBXContainerItemProxy */; + target = 259FA497B621B18FB2921DA18AA46AC2 /* DynamicBlurView */; + targetProxy = 671940896928CBAE7AD220920ED0ED03 /* PBXContainerItemProxy */; }; - 2FEEA930D656412EF284AE9C48D33C5A /* PBXTargetDependency */ = { + 4DBFF901667733D7986BA2A058F8BA1D /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = FBSnapshotTestCase; - target = 98A98149697C80CEF8D5772791E92E66 /* FBSnapshotTestCase */; - targetProxy = 605A0384FCE86EF59C690F4BD7079E93 /* PBXContainerItemProxy */; + name = PopupDialog; + target = FFBD6E8AFCC899B135424D8D701837CE /* PopupDialog */; + targetProxy = B649A5E3282D45F422BAD75E2AACA8AB /* PBXContainerItemProxy */; }; - 711C20415A0D5AD96B70AEBD1C0DE3CC /* PBXTargetDependency */ = { + 4DFB277277B85A469117529882537300 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = Nimble; - target = 6F13695E06195A78EA8A95F8C7ED0D2F /* Nimble */; - targetProxy = DAF2265381CBAB2F1C3DDB7475CBDD74 /* PBXContainerItemProxy */; + name = iOSSnapshotTestCase; + target = E0D5773C6DEB06357ABB396EF13BB2CD /* iOSSnapshotTestCase */; + targetProxy = DDDB10C5FD26BB4F367DEBD30E06630C /* PBXContainerItemProxy */; }; - 7A0F55816EC0A47F2B5F6C7CA549559A /* PBXTargetDependency */ = { + 553D322FBCC157A4AE5E44BB0F323793 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = DynamicBlurView; - target = 7D914FA2F03C860D5133BA2DB87C594A /* DynamicBlurView */; - targetProxy = 2763FCA98104FEE93EB4E54D32DDF454 /* PBXContainerItemProxy */; + name = "Pods-PopupDialog_Example"; + target = CA74CEED40A402865660392784D34978 /* Pods-PopupDialog_Example */; + targetProxy = 0BB024B8D969D444E23F642A0CC53711 /* PBXContainerItemProxy */; }; - F3C5E5CA1F5D2472C5F366426964C032 /* PBXTargetDependency */ = { + 5DAFA5BFE5881E697AEA777D819B23DC /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = PopupDialog; - target = 6E71929B582F8CD57B3DC1FD6560F047 /* PopupDialog */; - targetProxy = EC80586574AE02330BF77B2C0310E667 /* PBXContainerItemProxy */; + name = DynamicBlurView; + target = 259FA497B621B18FB2921DA18AA46AC2 /* DynamicBlurView */; + targetProxy = 416CAAA122ADB75F6B80477E6535EA1C /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 007387143DF96735A6244DDAC76A6949 /* Release */ = { + 01E31F4A41458606804042EA6C1236FC /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B44D7414C363A59797B255B0AC679CC7 /* DynamicBlurView.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/DynamicBlurView/DynamicBlurView-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/DynamicBlurView/DynamicBlurView-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/DynamicBlurView/DynamicBlurView.modulemap"; - PRODUCT_MODULE_NAME = DynamicBlurView; - PRODUCT_NAME = DynamicBlurView; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.2; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 0D4510BA86E088F19147060A9B0C3960 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 55EB2E713776DD76CEE5A8F765C27BEE /* PopupDialog.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/PopupDialog/PopupDialog-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/PopupDialog/PopupDialog-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/PopupDialog/PopupDialog.modulemap"; - PRODUCT_MODULE_NAME = PopupDialog; - PRODUCT_NAME = PopupDialog; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.2; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 0FA88438CF675D26F485314DD737CC23 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 55EB2E713776DD76CEE5A8F765C27BEE /* PopupDialog.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/PopupDialog/PopupDialog-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/PopupDialog/PopupDialog-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/PopupDialog/PopupDialog.modulemap"; - PRODUCT_MODULE_NAME = PopupDialog; - PRODUCT_NAME = PopupDialog; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.2; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 1C2731746A9A1F820775BCE0DA50B044 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 66F2E39DA85ACB237546341635BCF17C /* Pods-PopupDialog_Tests.debug.xcconfig */; + baseConfigurationReference = 401ECAF6FFC2200EEFED7B1B53B2F6BC /* Pods-PopupDialog_Tests.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -1360,7 +1252,7 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = "Target Support Files/Pods-PopupDialog_Tests/Pods-PopupDialog_Tests-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MACH_O_TYPE = staticlib; MODULEMAP_FILE = "Target Support Files/Pods-PopupDialog_Tests/Pods-PopupDialog_Tests.modulemap"; @@ -1377,43 +1269,12 @@ }; name = Debug; }; - 29B89AC39698C1A037CDDC9554A421A4 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 88A2D46F56B9B53408465E9019411FEB /* FBSnapshotTestCase.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase.modulemap"; - PRODUCT_MODULE_NAME = FBSnapshotTestCase; - PRODUCT_NAME = FBSnapshotTestCase; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.2; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 6FD17D43D835DA2C7AAEF8E1402546AD /* Release */ = { + 0C9D24A589163050912194A7CB12225D /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2970A1076280C6E082DE6D039572CA26 /* Pods-PopupDialog_Tests.release.xcconfig */; + baseConfigurationReference = 3B248EF6FA846138728808541EF4BCC5 /* Pods-PopupDialog_Example.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -1423,12 +1284,12 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-PopupDialog_Tests/Pods-PopupDialog_Tests-Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-PopupDialog_Example/Pods-PopupDialog_Example-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-PopupDialog_Tests/Pods-PopupDialog_Tests.modulemap"; + MODULEMAP_FILE = "Target Support Files/Pods-PopupDialog_Example/Pods-PopupDialog_Example.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; @@ -1437,15 +1298,14 @@ SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - 70BB4E7161BBFF9CA53070590C506089 /* Debug */ = { + 1AA40C2615CEBF48DB1E5A97C6E7CB70 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4C1286B7E412539B3FF9B70C238E83EB /* Nimble.xcconfig */; + baseConfigurationReference = ACE9B6F7F453332909939918B2BDD955 /* DynamicBlurView.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1456,29 +1316,30 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/Nimble/Nimble-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Nimble/Nimble-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/DynamicBlurView/DynamicBlurView-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/DynamicBlurView/DynamicBlurView-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Nimble/Nimble.modulemap"; - PRODUCT_MODULE_NAME = Nimble; - PRODUCT_NAME = Nimble; + MODULEMAP_FILE = "Target Support Files/DynamicBlurView/DynamicBlurView.modulemap"; + PRODUCT_MODULE_NAME = DynamicBlurView; + PRODUCT_NAME = DynamicBlurView; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - 7F82D28573631B6DEC5244B28ADD132C /* Release */ = { + 2A81B974C40589143E85DC3DD8813721 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E5F42DD12B23CB820F7EA547131E0F5F /* Pods-PopupDialog_Example.release.xcconfig */; + baseConfigurationReference = 7B55FC5833F829BBE6DBA3E1D3624839 /* PopupDialog.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -1488,41 +1349,25 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-PopupDialog_Example/Pods-PopupDialog_Example-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/PopupDialog/PopupDialog-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/PopupDialog/PopupDialog-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-PopupDialog_Example/Pods-PopupDialog_Example.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + MODULEMAP_FILE = "Target Support Files/PopupDialog/PopupDialog.modulemap"; + PRODUCT_MODULE_NAME = PopupDialog; + PRODUCT_NAME = PopupDialog; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; - }; - 84D7C4574E8F0F3095623F0E06F5B402 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 12DB852B7EACB37262D622FA6AD3237B /* SwiftLint.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "iPhone Developer"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; + name = Debug; }; - 8F17DC3A99F99FBAD606CE6963886315 /* Release */ = { + 3048B0C5C704DFFF688DA57F5380ED58 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -1570,18 +1415,116 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; PRODUCT_NAME = "$(TARGET_NAME)"; STRIP_INSTALLED_PRODUCT = NO; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 5.0; + SWIFT_VERSION = 4.2; SYMROOT = "${SRCROOT}/../build"; }; name = Release; }; - 916E0404255105F480DC4950B7625F7A /* Debug */ = { + 3185788DB883A823A0F9C056482D527F /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 3E03482672DEA8CD8256EF0392339636 /* iOSSnapshotTestCase.xcconfig */; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREFIX_HEADER = "Target Support Files/iOSSnapshotTestCase/iOSSnapshotTestCase-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/iOSSnapshotTestCase/iOSSnapshotTestCase-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/iOSSnapshotTestCase/iOSSnapshotTestCase.modulemap"; + PRODUCT_MODULE_NAME = FBSnapshotTestCase; + PRODUCT_NAME = FBSnapshotTestCase; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 347DCB0B04CF0402391B8E41DC89875C /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7B55FC5833F829BBE6DBA3E1D3624839 /* PopupDialog.xcconfig */; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREFIX_HEADER = "Target Support Files/PopupDialog/PopupDialog-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/PopupDialog/PopupDialog-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/PopupDialog/PopupDialog.modulemap"; + PRODUCT_MODULE_NAME = PopupDialog; + PRODUCT_NAME = PopupDialog; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 59E644D3FB16AA5C772B602190EFC11A /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 3E03482672DEA8CD8256EF0392339636 /* iOSSnapshotTestCase.xcconfig */; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREFIX_HEADER = "Target Support Files/iOSSnapshotTestCase/iOSSnapshotTestCase-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/iOSSnapshotTestCase/iOSSnapshotTestCase-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/iOSSnapshotTestCase/iOSSnapshotTestCase.modulemap"; + PRODUCT_MODULE_NAME = FBSnapshotTestCase; + PRODUCT_NAME = FBSnapshotTestCase; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 5B0C8287D755FD95091CF35D87FB8B2D /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -1632,7 +1575,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; ONLY_ACTIVE_ARCH = YES; @@ -1640,16 +1583,17 @@ STRIP_INSTALLED_PRODUCT = NO; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; + SWIFT_VERSION = 4.2; SYMROOT = "${SRCROOT}/../build"; }; name = Debug; }; - 949CA66468B39AEEA02FE9C71937326A /* Debug */ = { + 6EDD1587C5F5A582616E5440E18E461B /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F32180681E56C5A87DA90CA8518491D6 /* Pods-PopupDialog_Example.debug.xcconfig */; + baseConfigurationReference = E8031E699664E8D061985874A6BBB0FF /* Pods-PopupDialog_Tests.release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -1659,12 +1603,12 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-PopupDialog_Example/Pods-PopupDialog_Example-Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-PopupDialog_Tests/Pods-PopupDialog_Tests-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-PopupDialog_Example/Pods-PopupDialog_Example.modulemap"; + MODULEMAP_FILE = "Target Support Files/Pods-PopupDialog_Tests/Pods-PopupDialog_Tests.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; @@ -1673,14 +1617,15 @@ SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - D86A0D81258B84128E37D8CD2BB83675 /* Release */ = { + 76B3BAC40781CC2A23EFBC64F63C9985 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4C1286B7E412539B3FF9B70C238E83EB /* Nimble.xcconfig */; + baseConfigurationReference = ACE9B6F7F453332909939918B2BDD955 /* DynamicBlurView.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1691,28 +1636,27 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/Nimble/Nimble-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Nimble/Nimble-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/DynamicBlurView/DynamicBlurView-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/DynamicBlurView/DynamicBlurView-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Nimble/Nimble.modulemap"; - PRODUCT_MODULE_NAME = Nimble; - PRODUCT_NAME = Nimble; + MODULEMAP_FILE = "Target Support Files/DynamicBlurView/DynamicBlurView.modulemap"; + PRODUCT_MODULE_NAME = DynamicBlurView; + PRODUCT_NAME = DynamicBlurView; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - D874327C5BAF66319F3A454EF4963A9A /* Debug */ = { + 859AD728C633B3A340DD6965CD4B8270 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 88A2D46F56B9B53408465E9019411FEB /* FBSnapshotTestCase.xcconfig */; + baseConfigurationReference = 1C4A913B2ABE97CB0F21D60821655525 /* Nimble.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1723,27 +1667,28 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/Nimble/Nimble-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Nimble/Nimble-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase.modulemap"; - PRODUCT_MODULE_NAME = FBSnapshotTestCase; - PRODUCT_NAME = FBSnapshotTestCase; + MODULEMAP_FILE = "Target Support Files/Nimble/Nimble.modulemap"; + PRODUCT_MODULE_NAME = Nimble; + PRODUCT_NAME = Nimble; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - DEED47E09AF743F48544C1C4FEADEF47 /* Debug */ = { + 9150C2ED5E67EA091FAC5455C201345A /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 12DB852B7EACB37262D622FA6AD3237B /* SwiftLint.xcconfig */; + baseConfigurationReference = C35CF80D63DC8F5F6863D1812D6CF747 /* SwiftLint.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -1754,9 +1699,9 @@ }; name = Debug; }; - E9D799643CE4F0D6A79C48D8AC0E04AA /* Debug */ = { + A3D72EA419B99BD5E3C10DE26F0D2F27 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B44D7414C363A59797B255B0AC679CC7 /* DynamicBlurView.xcconfig */; + baseConfigurationReference = 1C4A913B2ABE97CB0F21D60821655525 /* Nimble.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1767,95 +1712,144 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/DynamicBlurView/DynamicBlurView-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/DynamicBlurView/DynamicBlurView-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/Nimble/Nimble-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Nimble/Nimble-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/DynamicBlurView/DynamicBlurView.modulemap"; - PRODUCT_MODULE_NAME = DynamicBlurView; - PRODUCT_NAME = DynamicBlurView; + MODULEMAP_FILE = "Target Support Files/Nimble/Nimble.modulemap"; + PRODUCT_MODULE_NAME = Nimble; + PRODUCT_NAME = Nimble; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Debug; }; + B8D0B328673EF982177B06F859ED08E5 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 0AEF0170963EF4B08801F885B935F660 /* Pods-PopupDialog_Example.release.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/Pods-PopupDialog_Example/Pods-PopupDialog_Example-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-PopupDialog_Example/Pods-PopupDialog_Example.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + E7E17EB72524D1C100AA8D1962F5C103 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = C35CF80D63DC8F5F6863D1812D6CF747 /* SwiftLint.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 0EDE00A0AE7F2ACDA112F853133A5D2F /* Build configuration list for PBXNativeTarget "Nimble" */ = { + 2FEE350026219C4443E4BB79ACCE110E /* Build configuration list for PBXNativeTarget "Pods-PopupDialog_Tests" */ = { isa = XCConfigurationList; buildConfigurations = ( - 70BB4E7161BBFF9CA53070590C506089 /* Debug */, - D86A0D81258B84128E37D8CD2BB83675 /* Release */, + 01E31F4A41458606804042EA6C1236FC /* Debug */, + 6EDD1587C5F5A582616E5440E18E461B /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { + 42F3E018DABDBF2D4F22D7F144BD9AF2 /* Build configuration list for PBXNativeTarget "DynamicBlurView" */ = { isa = XCConfigurationList; buildConfigurations = ( - 916E0404255105F480DC4950B7625F7A /* Debug */, - 8F17DC3A99F99FBAD606CE6963886315 /* Release */, + 76B3BAC40781CC2A23EFBC64F63C9985 /* Debug */, + 1AA40C2615CEBF48DB1E5A97C6E7CB70 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - A38070E189561F257BBD5A0A55CACCCF /* Build configuration list for PBXNativeTarget "FBSnapshotTestCase" */ = { + 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( - D874327C5BAF66319F3A454EF4963A9A /* Debug */, - 29B89AC39698C1A037CDDC9554A421A4 /* Release */, + 5B0C8287D755FD95091CF35D87FB8B2D /* Debug */, + 3048B0C5C704DFFF688DA57F5380ED58 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - A6D0C1C247431A33E92C7965B033247C /* Build configuration list for PBXNativeTarget "Pods-PopupDialog_Example" */ = { + E7020DB2F7FE1DC1165D29E9F84E3E2A /* Build configuration list for PBXAggregateTarget "SwiftLint" */ = { isa = XCConfigurationList; buildConfigurations = ( - 949CA66468B39AEEA02FE9C71937326A /* Debug */, - 7F82D28573631B6DEC5244B28ADD132C /* Release */, + 9150C2ED5E67EA091FAC5455C201345A /* Debug */, + E7E17EB72524D1C100AA8D1962F5C103 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - A86897A13F2AC24A28D86D8117ED3F42 /* Build configuration list for PBXNativeTarget "Pods-PopupDialog_Tests" */ = { + EEB1DCFA8D23D738DB723872276F2402 /* Build configuration list for PBXNativeTarget "iOSSnapshotTestCase" */ = { isa = XCConfigurationList; buildConfigurations = ( - 1C2731746A9A1F820775BCE0DA50B044 /* Debug */, - 6FD17D43D835DA2C7AAEF8E1402546AD /* Release */, + 3185788DB883A823A0F9C056482D527F /* Debug */, + 59E644D3FB16AA5C772B602190EFC11A /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - AE7B4FB01588B9E6DF09CB79FC7CE7BD /* Build configuration list for PBXAggregateTarget "SwiftLint" */ = { + F7696C5CA73833843928D0745738A604 /* Build configuration list for PBXNativeTarget "Nimble" */ = { isa = XCConfigurationList; buildConfigurations = ( - DEED47E09AF743F48544C1C4FEADEF47 /* Debug */, - 84D7C4574E8F0F3095623F0E06F5B402 /* Release */, + A3D72EA419B99BD5E3C10DE26F0D2F27 /* Debug */, + 859AD728C633B3A340DD6965CD4B8270 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B00E17D5B863CDCF74DE6FA3A6C1300F /* Build configuration list for PBXNativeTarget "DynamicBlurView" */ = { + FDE921D1C54A9CC100987516CC70515B /* Build configuration list for PBXNativeTarget "PopupDialog" */ = { isa = XCConfigurationList; buildConfigurations = ( - E9D799643CE4F0D6A79C48D8AC0E04AA /* Debug */, - 007387143DF96735A6244DDAC76A6949 /* Release */, + 2A81B974C40589143E85DC3DD8813721 /* Debug */, + 347DCB0B04CF0402391B8E41DC89875C /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - BC7508D556E6C0879FE57E3E574C62AE /* Build configuration list for PBXNativeTarget "PopupDialog" */ = { + FF4378A1AC3651ACF5BA4E428B589E3C /* Build configuration list for PBXNativeTarget "Pods-PopupDialog_Example" */ = { isa = XCConfigurationList; buildConfigurations = ( - 0D4510BA86E088F19147060A9B0C3960 /* Debug */, - 0FA88438CF675D26F485314DD737CC23 /* Release */, + 0C9D24A589163050912194A7CB12225D /* Debug */, + B8D0B328673EF982177B06F859ED08E5 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/PopupDialog.xcscheme b/Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/PopupDialog.xcscheme index 0bddef86..40251ca8 100644 --- a/Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/PopupDialog.xcscheme +++ b/Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/PopupDialog.xcscheme @@ -1,6 +1,6 @@ @@ -45,7 +45,7 @@ diff --git a/Example/Pods/SwiftLint/swiftlint b/Example/Pods/SwiftLint/swiftlint index 23422c45..4d2eb4f4 100755 Binary files a/Example/Pods/SwiftLint/swiftlint and b/Example/Pods/SwiftLint/swiftlint differ diff --git a/Example/Pods/Target Support Files/DynamicBlurView/DynamicBlurView-Info.plist b/Example/Pods/Target Support Files/DynamicBlurView/DynamicBlurView-Info.plist new file mode 100644 index 00000000..b0b461e3 --- /dev/null +++ b/Example/Pods/Target Support Files/DynamicBlurView/DynamicBlurView-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 3.0.1 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Example/Pods/Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase-dummy.m b/Example/Pods/Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase-dummy.m deleted file mode 100644 index fb0c8fe9..00000000 --- a/Example/Pods/Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_FBSnapshotTestCase : NSObject -@end -@implementation PodsDummy_FBSnapshotTestCase -@end diff --git a/Example/Pods/Target Support Files/Nimble/Info.plist b/Example/Pods/Target Support Files/Nimble/Info.plist index 6971fd45..5e150f81 100644 --- a/Example/Pods/Target Support Files/Nimble/Info.plist +++ b/Example/Pods/Target Support Files/Nimble/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 7.3.1 + 7.3.4 CFBundleSignature ???? CFBundleVersion diff --git a/Example/Pods/Target Support Files/Nimble/Nimble-Info.plist b/Example/Pods/Target Support Files/Nimble/Nimble-Info.plist new file mode 100644 index 00000000..5e150f81 --- /dev/null +++ b/Example/Pods/Target Support Files/Nimble/Nimble-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 7.3.4 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Example/Pods/Target Support Files/Pods-PopupDialog_Example/Pods-PopupDialog_Example-Info.plist b/Example/Pods/Target Support Files/Pods-PopupDialog_Example/Pods-PopupDialog_Example-Info.plist new file mode 100644 index 00000000..2243fe6e --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-PopupDialog_Example/Pods-PopupDialog_Example-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Example/Pods/Target Support Files/Pods-PopupDialog_Tests/Pods-PopupDialog_Tests-Info.plist b/Example/Pods/Target Support Files/Pods-PopupDialog_Tests/Pods-PopupDialog_Tests-Info.plist new file mode 100644 index 00000000..2243fe6e --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-PopupDialog_Tests/Pods-PopupDialog_Tests-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Example/Pods/Target Support Files/Pods-PopupDialog_Tests/Pods-PopupDialog_Tests-acknowledgements.markdown b/Example/Pods/Target Support Files/Pods-PopupDialog_Tests/Pods-PopupDialog_Tests-acknowledgements.markdown index 4b1ba86a..72f7cbe3 100644 --- a/Example/Pods/Target Support Files/Pods-PopupDialog_Tests/Pods-PopupDialog_Tests-acknowledgements.markdown +++ b/Example/Pods/Target Support Files/Pods-PopupDialog_Tests/Pods-PopupDialog_Tests-acknowledgements.markdown @@ -1,39 +1,6 @@ # Acknowledgements This application makes use of the following third party libraries: -## FBSnapshotTestCase - -BSD License - -For the FBSnapshotTestCase software - -Copyright (c) 2013, Facebook, Inc. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name Facebook nor the names of its contributors may be used to - endorse or promote products derived from this software without specific - prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - ## Nimble Apache License @@ -238,4 +205,30 @@ Apache License See the License for the specific language governing permissions and limitations under the License. + +## iOSSnapshotTestCase + +MIT License + +Copyright (c) 2017-2018, Uber Technologies, Inc. +Copyright (c) 2013-2018, Facebook, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + Generated by CocoaPods - https://cocoapods.org diff --git a/Example/Pods/Target Support Files/Pods-PopupDialog_Tests/Pods-PopupDialog_Tests-acknowledgements.plist b/Example/Pods/Target Support Files/Pods-PopupDialog_Tests/Pods-PopupDialog_Tests-acknowledgements.plist index d62d267f..f9dcf78a 100644 --- a/Example/Pods/Target Support Files/Pods-PopupDialog_Tests/Pods-PopupDialog_Tests-acknowledgements.plist +++ b/Example/Pods/Target Support Files/Pods-PopupDialog_Tests/Pods-PopupDialog_Tests-acknowledgements.plist @@ -12,45 +12,6 @@ Type PSGroupSpecifier - - FooterText - BSD License - -For the FBSnapshotTestCase software - -Copyright (c) 2013, Facebook, Inc. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name Facebook nor the names of its contributors may be used to - endorse or promote products derived from this software without specific - prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - License - BSD - Title - FBSnapshotTestCase - Type - PSGroupSpecifier - FooterText Apache License @@ -262,6 +223,38 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Type PSGroupSpecifier + + FooterText + MIT License + +Copyright (c) 2017-2018, Uber Technologies, Inc. +Copyright (c) 2013-2018, Facebook, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + License + MIT + Title + iOSSnapshotTestCase + Type + PSGroupSpecifier + FooterText Generated by CocoaPods - https://cocoapods.org diff --git a/Example/Pods/Target Support Files/Pods-PopupDialog_Tests/Pods-PopupDialog_Tests-frameworks.sh b/Example/Pods/Target Support Files/Pods-PopupDialog_Tests/Pods-PopupDialog_Tests-frameworks.sh index 86ec3821..51843433 100755 --- a/Example/Pods/Target Support Files/Pods-PopupDialog_Tests/Pods-PopupDialog_Tests-frameworks.sh +++ b/Example/Pods/Target Support Files/Pods-PopupDialog_Tests/Pods-PopupDialog_Tests-frameworks.sh @@ -161,12 +161,12 @@ strip_invalid_archs() { if [[ "$CONFIGURATION" == "Debug" ]]; then - install_framework "${BUILT_PRODUCTS_DIR}/FBSnapshotTestCase/FBSnapshotTestCase.framework" install_framework "${BUILT_PRODUCTS_DIR}/Nimble/Nimble.framework" + install_framework "${BUILT_PRODUCTS_DIR}/iOSSnapshotTestCase/FBSnapshotTestCase.framework" fi if [[ "$CONFIGURATION" == "Release" ]]; then - install_framework "${BUILT_PRODUCTS_DIR}/FBSnapshotTestCase/FBSnapshotTestCase.framework" install_framework "${BUILT_PRODUCTS_DIR}/Nimble/Nimble.framework" + install_framework "${BUILT_PRODUCTS_DIR}/iOSSnapshotTestCase/FBSnapshotTestCase.framework" fi if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then wait diff --git a/Example/Pods/Target Support Files/Pods-PopupDialog_Tests/Pods-PopupDialog_Tests.debug.xcconfig b/Example/Pods/Target Support Files/Pods-PopupDialog_Tests/Pods-PopupDialog_Tests.debug.xcconfig index 85d4c21c..68d682db 100644 --- a/Example/Pods/Target Support Files/Pods-PopupDialog_Tests/Pods-PopupDialog_Tests.debug.xcconfig +++ b/Example/Pods/Target Support Files/Pods-PopupDialog_Tests/Pods-PopupDialog_Tests.debug.xcconfig @@ -1,7 +1,7 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) "$(PLATFORM_DIR)/Developer/Library/Frameworks" "${PODS_CONFIGURATION_BUILD_DIR}/DynamicBlurView" "${PODS_CONFIGURATION_BUILD_DIR}/FBSnapshotTestCase" "${PODS_CONFIGURATION_BUILD_DIR}/Nimble" "${PODS_CONFIGURATION_BUILD_DIR}/PopupDialog" +FRAMEWORK_SEARCH_PATHS = $(inherited) "$(PLATFORM_DIR)/Developer/Library/Frameworks" "${PODS_CONFIGURATION_BUILD_DIR}/DynamicBlurView" "${PODS_CONFIGURATION_BUILD_DIR}/Nimble" "${PODS_CONFIGURATION_BUILD_DIR}/PopupDialog" "${PODS_CONFIGURATION_BUILD_DIR}/iOSSnapshotTestCase" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DynamicBlurView/DynamicBlurView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FBSnapshotTestCase/FBSnapshotTestCase.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Nimble/Nimble.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/PopupDialog/PopupDialog.framework/Headers" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DynamicBlurView/DynamicBlurView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Nimble/Nimble.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/PopupDialog/PopupDialog.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/iOSSnapshotTestCase/FBSnapshotTestCase.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' OTHER_LDFLAGS = $(inherited) -framework "Accelerate" -framework "DynamicBlurView" -framework "FBSnapshotTestCase" -framework "Foundation" -framework "Nimble" -framework "PopupDialog" -framework "QuartzCore" -framework "UIKit" -framework "XCTest" -weak_framework "XCTest" OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS diff --git a/Example/Pods/Target Support Files/Pods-PopupDialog_Tests/Pods-PopupDialog_Tests.release.xcconfig b/Example/Pods/Target Support Files/Pods-PopupDialog_Tests/Pods-PopupDialog_Tests.release.xcconfig index 85d4c21c..68d682db 100644 --- a/Example/Pods/Target Support Files/Pods-PopupDialog_Tests/Pods-PopupDialog_Tests.release.xcconfig +++ b/Example/Pods/Target Support Files/Pods-PopupDialog_Tests/Pods-PopupDialog_Tests.release.xcconfig @@ -1,7 +1,7 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) "$(PLATFORM_DIR)/Developer/Library/Frameworks" "${PODS_CONFIGURATION_BUILD_DIR}/DynamicBlurView" "${PODS_CONFIGURATION_BUILD_DIR}/FBSnapshotTestCase" "${PODS_CONFIGURATION_BUILD_DIR}/Nimble" "${PODS_CONFIGURATION_BUILD_DIR}/PopupDialog" +FRAMEWORK_SEARCH_PATHS = $(inherited) "$(PLATFORM_DIR)/Developer/Library/Frameworks" "${PODS_CONFIGURATION_BUILD_DIR}/DynamicBlurView" "${PODS_CONFIGURATION_BUILD_DIR}/Nimble" "${PODS_CONFIGURATION_BUILD_DIR}/PopupDialog" "${PODS_CONFIGURATION_BUILD_DIR}/iOSSnapshotTestCase" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DynamicBlurView/DynamicBlurView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FBSnapshotTestCase/FBSnapshotTestCase.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Nimble/Nimble.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/PopupDialog/PopupDialog.framework/Headers" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DynamicBlurView/DynamicBlurView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Nimble/Nimble.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/PopupDialog/PopupDialog.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/iOSSnapshotTestCase/FBSnapshotTestCase.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' OTHER_LDFLAGS = $(inherited) -framework "Accelerate" -framework "DynamicBlurView" -framework "FBSnapshotTestCase" -framework "Foundation" -framework "Nimble" -framework "PopupDialog" -framework "QuartzCore" -framework "UIKit" -framework "XCTest" -weak_framework "XCTest" OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS diff --git a/Example/Pods/Target Support Files/PopupDialog/Info.plist b/Example/Pods/Target Support Files/PopupDialog/Info.plist index 68ac6e26..2243fe6e 100644 --- a/Example/Pods/Target Support Files/PopupDialog/Info.plist +++ b/Example/Pods/Target Support Files/PopupDialog/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 0.9.2 + 1.0.0 CFBundleSignature ???? CFBundleVersion diff --git a/Example/Pods/Target Support Files/PopupDialog/PopupDialog-Info.plist b/Example/Pods/Target Support Files/PopupDialog/PopupDialog-Info.plist new file mode 100644 index 00000000..21a30b4a --- /dev/null +++ b/Example/Pods/Target Support Files/PopupDialog/PopupDialog-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.1.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Example/Pods/Target Support Files/SwiftLint/SwiftLint.xcconfig b/Example/Pods/Target Support Files/SwiftLint/SwiftLint.xcconfig new file mode 100644 index 00000000..00f22eb0 --- /dev/null +++ b/Example/Pods/Target Support Files/SwiftLint/SwiftLint.xcconfig @@ -0,0 +1,8 @@ +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SwiftLint +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/SwiftLint +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES diff --git a/Example/Pods/Target Support Files/FBSnapshotTestCase/Info.plist b/Example/Pods/Target Support Files/iOSSnapshotTestCase/Info.plist similarity index 96% rename from Example/Pods/Target Support Files/FBSnapshotTestCase/Info.plist rename to Example/Pods/Target Support Files/iOSSnapshotTestCase/Info.plist index 57b76a5d..69f0d0ab 100644 --- a/Example/Pods/Target Support Files/FBSnapshotTestCase/Info.plist +++ b/Example/Pods/Target Support Files/iOSSnapshotTestCase/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.1.4 + 6.0.2 CFBundleSignature ???? CFBundleVersion diff --git a/Example/Pods/Target Support Files/iOSSnapshotTestCase/iOSSnapshotTestCase-Info.plist b/Example/Pods/Target Support Files/iOSSnapshotTestCase/iOSSnapshotTestCase-Info.plist new file mode 100644 index 00000000..69f0d0ab --- /dev/null +++ b/Example/Pods/Target Support Files/iOSSnapshotTestCase/iOSSnapshotTestCase-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 6.0.2 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Example/Pods/Target Support Files/iOSSnapshotTestCase/iOSSnapshotTestCase-dummy.m b/Example/Pods/Target Support Files/iOSSnapshotTestCase/iOSSnapshotTestCase-dummy.m new file mode 100644 index 00000000..9967d3eb --- /dev/null +++ b/Example/Pods/Target Support Files/iOSSnapshotTestCase/iOSSnapshotTestCase-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_iOSSnapshotTestCase : NSObject +@end +@implementation PodsDummy_iOSSnapshotTestCase +@end diff --git a/Example/Pods/Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase-prefix.pch b/Example/Pods/Target Support Files/iOSSnapshotTestCase/iOSSnapshotTestCase-prefix.pch similarity index 100% rename from Example/Pods/Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase-prefix.pch rename to Example/Pods/Target Support Files/iOSSnapshotTestCase/iOSSnapshotTestCase-prefix.pch diff --git a/Example/Pods/Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase-umbrella.h b/Example/Pods/Target Support Files/iOSSnapshotTestCase/iOSSnapshotTestCase-umbrella.h similarity index 100% rename from Example/Pods/Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase-umbrella.h rename to Example/Pods/Target Support Files/iOSSnapshotTestCase/iOSSnapshotTestCase-umbrella.h diff --git a/Example/Pods/Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase.modulemap b/Example/Pods/Target Support Files/iOSSnapshotTestCase/iOSSnapshotTestCase.modulemap similarity index 59% rename from Example/Pods/Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase.modulemap rename to Example/Pods/Target Support Files/iOSSnapshotTestCase/iOSSnapshotTestCase.modulemap index 45b74ece..d2c2777f 100644 --- a/Example/Pods/Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase.modulemap +++ b/Example/Pods/Target Support Files/iOSSnapshotTestCase/iOSSnapshotTestCase.modulemap @@ -1,5 +1,5 @@ framework module FBSnapshotTestCase { - umbrella header "FBSnapshotTestCase-umbrella.h" + umbrella header "iOSSnapshotTestCase-umbrella.h" export * module * { export * } diff --git a/Example/Pods/Target Support Files/iOSSnapshotTestCase/iOSSnapshotTestCase.xcconfig b/Example/Pods/Target Support Files/iOSSnapshotTestCase/iOSSnapshotTestCase.xcconfig new file mode 100644 index 00000000..446cd9a6 --- /dev/null +++ b/Example/Pods/Target Support Files/iOSSnapshotTestCase/iOSSnapshotTestCase.xcconfig @@ -0,0 +1,12 @@ +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/iOSSnapshotTestCase +ENABLE_BITCODE = NO +FRAMEWORK_SEARCH_PATHS = $(inherited) "$(PLATFORM_DIR)/Developer/Library/Frameworks" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +OTHER_LDFLAGS = $(inherited) -framework "Foundation" -framework "QuartzCore" -framework "UIKit" -framework "XCTest" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/iOSSnapshotTestCase +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES diff --git a/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Compare.h b/Example/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Compare.h similarity index 69% rename from Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Compare.h rename to Example/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Compare.h index 9091d62a..fb7d7b0c 100644 --- a/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Compare.h +++ b/Example/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Compare.h @@ -30,8 +30,20 @@ #import +NS_ASSUME_NONNULL_BEGIN + @interface UIImage (Compare) -- (BOOL)fb_compareWithImage:(UIImage *)image tolerance:(CGFloat)tolerance; +/** + Compares the image against another given image. + + @param image The other image to compare against. + @param perPixelTolerance How much (in percentage) any given pixel's colors are allowed to change from the pixel in the reference image. + @param overallTolerance The overall percentage of pixels that are allowed to change from the pixels in the reference image. + @return A BOOL which represents if the image is the same or not. + */ +- (BOOL)fb_compareWithImage:(UIImage *)image perPixelTolerance:(CGFloat)perPixelTolerance overallTolerance:(CGFloat)overallTolerance; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Compare.m b/Example/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Compare.m new file mode 100644 index 00000000..f191c52b --- /dev/null +++ b/Example/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Compare.m @@ -0,0 +1,180 @@ +// +// Created by Gabriel Handford on 3/1/09. +// Copyright 2009-2013. All rights reserved. +// Created by John Boiles on 10/20/11. +// Copyright (c) 2011. All rights reserved +// Modified by Felix Schulze on 2/11/13. +// Copyright 2013. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, +// copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the +// Software is furnished to do so, subject to the following +// conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +// OTHER DEALINGS IN THE SOFTWARE. +// + +#import + +// This makes debugging much more fun +typedef union { + uint32_t raw; + unsigned char bytes[4]; + struct { + char red; + char green; + char blue; + char alpha; + } __attribute__((packed)) pixels; +} FBComparePixel; + +@implementation UIImage (Compare) + +- (BOOL)fb_compareWithImage:(UIImage *)image perPixelTolerance:(CGFloat)perPixelTolerance overallTolerance:(CGFloat)overallTolerance +{ + NSAssert(CGSizeEqualToSize(self.size, image.size), @"Images must be same size."); + + CGSize referenceImageSize = CGSizeMake(CGImageGetWidth(self.CGImage), CGImageGetHeight(self.CGImage)); + CGSize imageSize = CGSizeMake(CGImageGetWidth(image.CGImage), CGImageGetHeight(image.CGImage)); + + // The images have the equal size, so we could use the smallest amount of bytes because of byte padding + size_t minBytesPerRow = MIN(CGImageGetBytesPerRow(self.CGImage), CGImageGetBytesPerRow(image.CGImage)); + size_t referenceImageSizeBytes = referenceImageSize.height * minBytesPerRow; + void *referenceImagePixels = calloc(1, referenceImageSizeBytes); + void *imagePixels = calloc(1, referenceImageSizeBytes); + + if (!referenceImagePixels || !imagePixels) { + free(referenceImagePixels); + free(imagePixels); + return NO; + } + + CGContextRef referenceImageContext = CGBitmapContextCreate(referenceImagePixels, + referenceImageSize.width, + referenceImageSize.height, + CGImageGetBitsPerComponent(self.CGImage), + minBytesPerRow, + CGImageGetColorSpace(self.CGImage), + (CGBitmapInfo)kCGImageAlphaPremultipliedLast); + CGContextRef imageContext = CGBitmapContextCreate(imagePixels, + imageSize.width, + imageSize.height, + CGImageGetBitsPerComponent(image.CGImage), + minBytesPerRow, + CGImageGetColorSpace(image.CGImage), + (CGBitmapInfo)kCGImageAlphaPremultipliedLast); + + if (!referenceImageContext || !imageContext) { + CGContextRelease(referenceImageContext); + CGContextRelease(imageContext); + free(referenceImagePixels); + free(imagePixels); + return NO; + } + + CGContextDrawImage(referenceImageContext, CGRectMake(0, 0, referenceImageSize.width, referenceImageSize.height), self.CGImage); + CGContextDrawImage(imageContext, CGRectMake(0, 0, imageSize.width, imageSize.height), image.CGImage); + + CGContextRelease(referenceImageContext); + CGContextRelease(imageContext); + + BOOL imageEqual = YES; + FBComparePixel *p1 = referenceImagePixels; + FBComparePixel *p2 = imagePixels; + + // Do a fast compare if we can + if (overallTolerance == 0 && perPixelTolerance == 0) { + imageEqual = (memcmp(referenceImagePixels, imagePixels, referenceImageSizeBytes) == 0); + } else { + const NSUInteger pixelCount = referenceImageSize.width * referenceImageSize.height; + // Go through each pixel in turn and see if it is different + imageEqual = [self _compareAllPixelsWithPerPixelTolerance:perPixelTolerance + overallTolerance:overallTolerance + pixelCount:pixelCount + referencePixels:p1 + imagePixels:p2]; + } + + free(referenceImagePixels); + free(imagePixels); + + return imageEqual; +} + +- (BOOL)_comparePixelWithPerPixelTolerance:(CGFloat)perPixelTolerance + referencePixel:(FBComparePixel *)referencePixel + imagePixel:(FBComparePixel *)imagePixel +{ + if (referencePixel->raw == imagePixel->raw) { + return YES; + } else if (perPixelTolerance == 0) { + return NO; + } + + CGFloat redPercentDiff = [self _calculatePercentDifferenceForReferencePixelComponent:referencePixel->pixels.red + imagePixelComponent:imagePixel->pixels.red]; + CGFloat greenPercentDiff = [self _calculatePercentDifferenceForReferencePixelComponent:referencePixel->pixels.green + imagePixelComponent:imagePixel->pixels.green]; + CGFloat bluePercentDiff = [self _calculatePercentDifferenceForReferencePixelComponent:referencePixel->pixels.blue + imagePixelComponent:imagePixel->pixels.blue]; + CGFloat alphaPercentDiff = [self _calculatePercentDifferenceForReferencePixelComponent:referencePixel->pixels.alpha + imagePixelComponent:imagePixel->pixels.alpha]; + + BOOL anyDifferencesFound = (redPercentDiff > perPixelTolerance || + greenPercentDiff > perPixelTolerance || + bluePercentDiff > perPixelTolerance || + alphaPercentDiff > perPixelTolerance); + + return !anyDifferencesFound; +} + +- (CGFloat)_calculatePercentDifferenceForReferencePixelComponent:(char)p1 + imagePixelComponent:(char)p2 +{ + NSInteger referencePixelComponent = (unsigned char)p1; + NSInteger imagePixelComponent = (unsigned char)p2; + NSUInteger componentDifference = ABS(referencePixelComponent - imagePixelComponent); + return (CGFloat)componentDifference / 256; +} + +- (BOOL)_compareAllPixelsWithPerPixelTolerance:(CGFloat)perPixelTolerance + overallTolerance:(CGFloat)overallTolerance + pixelCount:(NSUInteger)pixelCount + referencePixels:(FBComparePixel *)referencePixel + imagePixels:(FBComparePixel *)imagePixel +{ + NSUInteger numDiffPixels = 0; + for (NSUInteger n = 0; n < pixelCount; ++n) { + // If this pixel is different, increment the pixel diff count and see + // if we have hit our limit. + BOOL isIdenticalPixel = [self _comparePixelWithPerPixelTolerance:perPixelTolerance referencePixel:referencePixel imagePixel:imagePixel]; + if (!isIdenticalPixel) { + numDiffPixels++; + + CGFloat percent = (CGFloat)numDiffPixels / (CGFloat)pixelCount; + if (percent > overallTolerance) { + return NO; + } + } + + referencePixel++; + imagePixel++; + } + return YES; +} + +@end diff --git a/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Diff.h b/Example/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Diff.h similarity index 96% rename from Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Diff.h rename to Example/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Diff.h index a0863f30..2a97e116 100644 --- a/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Diff.h +++ b/Example/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Diff.h @@ -30,8 +30,12 @@ #import +NS_ASSUME_NONNULL_BEGIN + @interface UIImage (Diff) - (UIImage *)fb_diffWithImage:(UIImage *)image; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Diff.m b/Example/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Diff.m similarity index 62% rename from Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Diff.m rename to Example/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Diff.m index ebb72fe3..7cb1d40b 100644 --- a/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Diff.m +++ b/Example/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Diff.m @@ -34,23 +34,23 @@ @implementation UIImage (Diff) - (UIImage *)fb_diffWithImage:(UIImage *)image { - if (!image) { - return nil; - } - CGSize imageSize = CGSizeMake(MAX(self.size.width, image.size.width), MAX(self.size.height, image.size.height)); - UIGraphicsBeginImageContextWithOptions(imageSize, YES, 0); - CGContextRef context = UIGraphicsGetCurrentContext(); - [self drawInRect:CGRectMake(0, 0, self.size.width, self.size.height)]; - CGContextSetAlpha(context, 0.5); - CGContextBeginTransparencyLayer(context, NULL); - [image drawInRect:CGRectMake(0, 0, image.size.width, image.size.height)]; - CGContextSetBlendMode(context, kCGBlendModeDifference); - CGContextSetFillColorWithColor(context,[UIColor whiteColor].CGColor); - CGContextFillRect(context, CGRectMake(0, 0, self.size.width, self.size.height)); - CGContextEndTransparencyLayer(context); - UIImage *returnImage = UIGraphicsGetImageFromCurrentImageContext(); - UIGraphicsEndImageContext(); - return returnImage; + if (!image) { + return nil; + } + CGSize imageSize = CGSizeMake(MAX(self.size.width, image.size.width), MAX(self.size.height, image.size.height)); + UIGraphicsBeginImageContextWithOptions(imageSize, YES, 0); + CGContextRef context = UIGraphicsGetCurrentContext(); + [self drawInRect:CGRectMake(0, 0, self.size.width, self.size.height)]; + CGContextSetAlpha(context, 0.5); + CGContextBeginTransparencyLayer(context, NULL); + [image drawInRect:CGRectMake(0, 0, image.size.width, image.size.height)]; + CGContextSetBlendMode(context, kCGBlendModeDifference); + CGContextSetFillColorWithColor(context, [UIColor whiteColor].CGColor); + CGContextFillRect(context, CGRectMake(0, 0, self.size.width, self.size.height)); + CGContextEndTransparencyLayer(context); + UIImage *returnImage = UIGraphicsGetImageFromCurrentImageContext(); + UIGraphicsEndImageContext(); + return returnImage; } @end diff --git a/Example/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Snapshot.h b/Example/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Snapshot.h new file mode 100644 index 00000000..10c304fe --- /dev/null +++ b/Example/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Snapshot.h @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2017-2018, Uber Technologies, Inc. + * Copyright (c) 2015-2018, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface UIImage (Snapshot) + +/// Uses renderInContext: to get a snapshot of the layer. ++ (nullable UIImage *)fb_imageForLayer:(CALayer *)layer; + +/// Uses renderInContext: to get a snapshot of the view layer. ++ (nullable UIImage *)fb_imageForViewLayer:(UIView *)view; + +/// Uses drawViewHierarchyInRect: to get a snapshot of the view and adds the view into a window if needed. ++ (nullable UIImage *)fb_imageForView:(UIView *)view; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Snapshot.m b/Example/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Snapshot.m new file mode 100644 index 00000000..e1830b3d --- /dev/null +++ b/Example/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Snapshot.m @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2017-2018, Uber Technologies, Inc. + * Copyright (c) 2015-2018, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import + +@implementation UIImage (Snapshot) + ++ (UIImage *)fb_imageForLayer:(CALayer *)layer +{ + CGRect bounds = layer.bounds; + NSAssert1(CGRectGetWidth(bounds), @"Zero width for layer %@", layer); + NSAssert1(CGRectGetHeight(bounds), @"Zero height for layer %@", layer); + + UIGraphicsBeginImageContextWithOptions(bounds.size, NO, 0); + CGContextRef context = UIGraphicsGetCurrentContext(); + NSAssert1(context, @"Could not generate context for layer %@", layer); + CGContextSaveGState(context); + [layer layoutIfNeeded]; + [layer renderInContext:context]; + CGContextRestoreGState(context); + + UIImage *snapshot = UIGraphicsGetImageFromCurrentImageContext(); + UIGraphicsEndImageContext(); + return snapshot; +} + ++ (UIImage *)fb_imageForViewLayer:(UIView *)view +{ + [view layoutIfNeeded]; + return [self fb_imageForLayer:view.layer]; +} + ++ (UIImage *)fb_imageForView:(UIView *)view +{ + // If the input view is already a UIWindow, then just use that. Otherwise wrap in a window. + UIWindow *window = [view isKindOfClass:[UIWindow class]] ? (UIWindow *)view : view.window; + BOOL removeFromSuperview = NO; + if (!window) { + window = [[UIApplication sharedApplication] keyWindow]; + } + + if (!view.window && view != window) { + [window addSubview:view]; + removeFromSuperview = YES; + } + + [view layoutIfNeeded]; + + CGRect bounds = view.bounds; + NSAssert1(CGRectGetWidth(bounds), @"Zero width for view %@", view); + NSAssert1(CGRectGetHeight(bounds), @"Zero height for view %@", view); + + UIGraphicsBeginImageContextWithOptions(bounds.size, NO, 0); + [view drawViewHierarchyInRect:view.bounds afterScreenUpdates:YES]; + + UIImage *snapshot = UIGraphicsGetImageFromCurrentImageContext(); + UIGraphicsEndImageContext(); + + if (removeFromSuperview) { + [view removeFromSuperview]; + } + + return snapshot; +} + +@end diff --git a/Example/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCase.h b/Example/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCase.h new file mode 100644 index 00000000..24bb870f --- /dev/null +++ b/Example/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCase.h @@ -0,0 +1,313 @@ +/* + * Copyright (c) 2017-2018, Uber Technologies, Inc. + * Copyright (c) 2015-2018, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import +#import + +#import + +#import + +#import + +/* + There are three ways of setting reference image directories. + + 1. Set the preprocessor macro FB_REFERENCE_IMAGE_DIR to a double quoted + c-string with the path. + 2. Set an environment variable named FB_REFERENCE_IMAGE_DIR with the path. This + takes precedence over the preprocessor macro to allow for run-time override. + 3. Keep everything unset, which will cause the reference images to be looked up + inside the bundle holding the current test, in the + Resources/ReferenceImages_* directories. + */ +#ifndef FB_REFERENCE_IMAGE_DIR +#define FB_REFERENCE_IMAGE_DIR "" +#endif + +/* + There are three ways of setting failed image diff directories. + + 1. Set the preprocessor macro IMAGE_DIFF_DIR to a double quoted + c-string with the path. + 2. Set an environment variable named IMAGE_DIFF_DIR with the path. This + takes precedence over the preprocessor macro to allow for run-time override. + 3. Keep everything unset, which will cause the failed image diff images to be saved + inside a temporary directory. + */ +#ifndef IMAGE_DIFF_DIR +#define IMAGE_DIFF_DIR "" +#endif + +/** + Similar to our much-loved XCTAssert() macros. Use this to perform your test. No need to write an explanation, though. + @param view The view to snapshot. + @param identifier An optional identifier, used if there are multiple snapshot tests in a given -test method. + @param suffixes An NSOrderedSet of strings for the different suffixes. + @param tolerance The overall percentage of pixels that can differ and still count as an 'identical' view. + */ +#define FBSnapshotVerifyViewWithOptions(view__, identifier__, suffixes__, tolerance__) \ + FBSnapshotVerifyViewOrLayerWithOptions(View, view__, identifier__, suffixes__, tolerance__) + +/** + Similar to our much-loved XCTAssert() macros. Use this to perform your test. No need to write an explanation, though. + @param view The view to snapshot. + @param identifier An optional identifier, used if there are multiple snapshot tests in a given -test method. + @param suffixes An NSOrderedSet of strings for the different suffixes. + @param pixelTolerance The percentage a given pixel's R,G,B and A components can differ and still be considered 'identical'. + @param tolerance The overall percentage of pixels that can differ and still count as an 'identical' layer. + */ +#define FBSnapshotVerifyViewWithPixelOptions(view__, identifier__, suffixes__, pixelTolerance__, tolerance__) \ + FBSnapshotVerifyViewOrLayerWithPixelOptions(View, view__, identifier__, suffixes__, pixelTolerance__, tolerance__) + +#define FBSnapshotVerifyView(view__, identifier__) \ + FBSnapshotVerifyViewWithOptions(view__, identifier__, FBSnapshotTestCaseDefaultSuffixes(), 0) + + +/** + Similar to our much-loved XCTAssert() macros. Use this to perform your test. No need to write an explanation, though. + @param layer The layer to snapshot. + @param identifier An optional identifier, used if there are multiple snapshot tests in a given -test method. + @param suffixes An NSOrderedSet of strings for the different suffixes. + @param pixelTolerance The percentage a given pixel's R,G,B and A components can differ and still be considered 'identical'. + @param tolerance The overall percentage of pixels that can differ and still count as an 'identical' layer. + */ +#define FBSnapshotVerifyLayerWithPixelOptions(layer__, identifier__, suffixes__, pixelTolerance__, tolerance__) \ + FBSnapshotVerifyViewOrLayerWithPixelOptions(Layer, layer__, identifier__, suffixes__, pixelTolerance__, tolerance__) + +/** + Similar to our much-loved XCTAssert() macros. Use this to perform your test. No need to write an explanation, though. + @param layer The layer to snapshot. + @param identifier An optional identifier, used if there are multiple snapshot tests in a given -test method. + @param suffixes An NSOrderedSet of strings for the different suffixes. + @param tolerance The overall percentage of pixels that can differ and still count as an 'identical' layer. + */ +#define FBSnapshotVerifyLayerWithOptions(layer__, identifier__, suffixes__, tolerance__) \ + FBSnapshotVerifyViewOrLayerWithOptions(Layer, layer__, identifier__, suffixes__, tolerance__) + +#define FBSnapshotVerifyLayer(layer__, identifier__) \ + FBSnapshotVerifyLayerWithOptions(layer__, identifier__, FBSnapshotTestCaseDefaultSuffixes(), 0) + +#define FBSnapshotVerifyViewOrLayerWithOptions(what__, viewOrLayer__, identifier__, suffixes__, tolerance__) \ + { \ + NSString *errorDescription = [self snapshotVerifyViewOrLayer:viewOrLayer__ identifier:identifier__ suffixes:suffixes__ overallTolerance:tolerance__ defaultReferenceDirectory:(@FB_REFERENCE_IMAGE_DIR) defaultImageDiffDirectory:(@IMAGE_DIFF_DIR)]; \ + BOOL noErrors = (errorDescription == nil); \ + XCTAssertTrue(noErrors, @"%@", errorDescription); \ + } + +#define FBSnapshotVerifyViewOrLayerWithPixelOptions(what__, viewOrLayer__, identifier__, suffixes__, pixelTolerance__, tolerance__) \ + { \ + NSString *errorDescription = [self snapshotVerifyViewOrLayer:viewOrLayer__ identifier:identifier__ suffixes:suffixes__ perPixelTolerance:pixelTolerance__ overallTolerance:tolerance__ defaultReferenceDirectory:(@FB_REFERENCE_IMAGE_DIR) defaultImageDiffDirectory:(@IMAGE_DIFF_DIR)]; \ + BOOL noErrors = (errorDescription == nil); \ + XCTAssertTrue(noErrors, @"%@", errorDescription); \ + } + +NS_ASSUME_NONNULL_BEGIN + +/** + The base class of view snapshotting tests. If you have small UI component, it's often easier to configure it in a test + and compare an image of the view to a reference image that write lots of complex layout-code tests. + + In order to flip the tests in your subclass to record the reference images set @c recordMode to @c YES. + + @attention When recording, the reference image directory should be explicitly + set, otherwise the images may be written to somewhere inside the + simulator directory. + + For example: + @code + - (void)setUp + { + [super setUp]; + self.recordMode = YES; + } + @endcode + */ +@interface FBSnapshotTestCase : XCTestCase + +/** + When YES, the test macros will save reference images, rather than performing an actual test. + */ +@property (readwrite, nonatomic, assign) BOOL recordMode; + +/** + When set, allows fine-grained control over what you want the file names to include. + + Allows you to combine which device or simulator specific details you want in your snapshot file names. + + The default value is FBSnapshotTestCaseFileNameIncludeOptionScreenScale. + + @discussion If you are migrating from the now deleted FBSnapshotTestCaseAgnosticOption to FBSnapshotTestCaseFileNameIncludeOption, we default to using FBSnapshotTestCaseFileNameIncludeOptionScreenScale for fileNameOptions to make the transition easy. If you don't want to have the screen scale included in your file name, you need to set fileNameOptions to a mask that doesn't include FBSnapshotTestCaseFileNameIncludeOptionScreenScale: + + self.fileNameOptions = (FBSnapshotTestCaseFileNameIncludeOptionDevice | FBSnapshotTestCaseFileNameIncludeOptionOS); + */ + +@property (readwrite, nonatomic, assign) FBSnapshotTestCaseFileNameIncludeOption fileNameOptions; + +/** + Overrides the folder name in which the snapshot is going to be saved. + + @attention This property *must* be called *AFTER* [super setUp]. + */ +@property (readwrite, nonatomic, copy, nullable) NSString *folderName; + +/** + When YES, renders a snapshot of the complete view hierarchy as visible onscreen. + There are several things that do not work if renderInContext: is used. + - UIVisualEffect #70 + - UIAppearance #91 + - Size Classes #92 + + @attention If the view does't belong to a UIWindow, it will create one and add the view as a subview. + */ +@property (readwrite, nonatomic, assign) BOOL usesDrawViewHierarchyInRect; + +- (void)setUp NS_REQUIRES_SUPER; +- (void)tearDown NS_REQUIRES_SUPER; + +/** + Performs the comparison or records a snapshot of the layer if recordMode is YES. + @param viewOrLayer The UIView or CALayer to snapshot. + @param identifier An optional identifier, used if there are multiple snapshot tests in a given -test method. + @param suffixes An NSOrderedSet of strings for the different suffixes. + @param overallTolerance The percentage difference to still count as identical - 0 mean pixel perfect, 1 means I don't care. + @param defaultReferenceDirectory The directory to default to for reference images. + @param defaultImageDiffDirectory The directory to default to for failed image diffs. + @returns nil if the comparison (or saving of the reference image) succeeded. Otherwise it contains an error description. + */ +- (NSString *)snapshotVerifyViewOrLayer:(id)viewOrLayer + identifier:(nullable NSString *)identifier + suffixes:(NSOrderedSet *)suffixes + overallTolerance:(CGFloat)overallTolerance + defaultReferenceDirectory:(nullable NSString *)defaultReferenceDirectory + defaultImageDiffDirectory:(nullable NSString *)defaultImageDiffDirectory; + +/** + Performs the comparison or records a snapshot of the layer if recordMode is YES. + @param viewOrLayer The UIView or CALayer to snapshot. + @param identifier An optional identifier, used if there are multiple snapshot tests in a given -test method. + @param suffixes An NSOrderedSet of strings for the different suffixes. + @param perPixelTolerance The percentage a given pixel's R,G,B and A components can differ and still be considered 'identical'. Each color shade difference represents a 0.390625% change. + @param overallTolerance The percentage difference to still count as identical - 0 mean pixel perfect, 1 means I don't care. + @param defaultReferenceDirectory The directory to default to for reference images. + @param defaultImageDiffDirectory The directory to default to for failed image diffs. + @returns nil if the comparison (or saving of the reference image) succeeded. Otherwise it contains an error description. + */ +- (nullable NSString *)snapshotVerifyViewOrLayer:(id)viewOrLayer + identifier:(nullable NSString *)identifier + suffixes:(NSOrderedSet *)suffixes + perPixelTolerance:(CGFloat)perPixelTolerance + overallTolerance:(CGFloat)overallTolerance + defaultReferenceDirectory:(nullable NSString *)defaultReferenceDirectory + defaultImageDiffDirectory:(nullable NSString *)defaultImageDiffDirectory; + +/** + Performs the comparison or records a snapshot of the layer if recordMode is YES. + @param layer The Layer to snapshot. + @param referenceImagesDirectory The directory in which reference images are stored. + @param imageDiffDirectory The directory in which failed image diffs are stored. + @param identifier An optional identifier, used if there are multiple snapshot tests in a given -test method. + @param overallTolerance The percentage difference to still count as identical - 0 mean pixel perfect, 1 means I don't care. + @param errorPtr An error to log in an XCTAssert() macro if the method fails (missing reference image, images differ, etc). + @returns YES if the comparison (or saving of the reference image) succeeded. + */ +- (BOOL)compareSnapshotOfLayer:(CALayer *)layer + referenceImagesDirectory:(NSString *)referenceImagesDirectory + imageDiffDirectory:(NSString *)imageDiffDirectory + identifier:(nullable NSString *)identifier + overallTolerance:(CGFloat)overallTolerance + error:(NSError **)errorPtr; + +/** + Performs the comparison or records a snapshot of the layer if recordMode is YES. + @param layer The Layer to snapshot. + @param referenceImagesDirectory The directory in which reference images are stored. + @param imageDiffDirectory The directory in which failed image diffs are stored. + @param identifier An optional identifier, used if there are multiple snapshot tests in a given -test method. + @param perPixelTolerance The percentage a given pixel's R,G,B and A components can differ and still be considered 'identical'. Each color shade difference represents a 0.390625% change. + @param overallTolerance The percentage difference to still count as identical - 0 mean pixel perfect, 1 means I don't care. + @param errorPtr An error to log in an XCTAssert() macro if the method fails (missing reference image, images differ, etc). + @returns YES if the comparison (or saving of the reference image) succeeded. + */ +- (BOOL)compareSnapshotOfLayer:(CALayer *)layer + referenceImagesDirectory:(NSString *)referenceImagesDirectory + imageDiffDirectory:(NSString *)imageDiffDirectory + identifier:(nullable NSString *)identifier + perPixelTolerance:(CGFloat)perPixelTolerance + overallTolerance:(CGFloat)overallTolerance + error:(NSError **)errorPtr; + +/** + Performs the comparison or records a snapshot of the view if recordMode is YES. + @param view The view to snapshot. + @param referenceImagesDirectory The directory in which reference images are stored. + @param imageDiffDirectory The directory in which failed image diffs are stored. + @param identifier An optional identifier, used if there are multiple snapshot tests in a given -test method. + @param overallTolerance The percentage difference to still count as identical - 0 mean pixel perfect, 1 means I don't care. + @param errorPtr An error to log in an XCTAssert() macro if the method fails (missing reference image, images differ, etc). + @returns YES if the comparison (or saving of the reference image) succeeded. + */ +- (BOOL)compareSnapshotOfView:(UIView *)view + referenceImagesDirectory:(NSString *)referenceImagesDirectory + imageDiffDirectory:(NSString *)imageDiffDirectory + identifier:(nullable NSString *)identifier + overallTolerance:(CGFloat)overallTolerance + error:(NSError **)errorPtr; + +/** + Performs the comparison or records a snapshot of the view if recordMode is YES. + @param view The view to snapshot. + @param referenceImagesDirectory The directory in which reference images are stored. + @param imageDiffDirectory The directory in which failed image diffs are stored. + @param identifier An optional identifier, used if there are multiple snapshot tests in a given -test method. + @param perPixelTolerance The percentage a given pixel's R,G,B and A components can differ and still be considered 'identical'. Each color shade difference represents a 0.390625% change. + @param overallTolerance The percentage difference to still count as identical - 0 mean pixel perfect, 1 means I don't care. + @param errorPtr An error to log in an XCTAssert() macro if the method fails (missing reference image, images differ, etc). + @returns YES if the comparison (or saving of the reference image) succeeded. + */ +- (BOOL)compareSnapshotOfView:(UIView *)view + referenceImagesDirectory:(NSString *)referenceImagesDirectory + imageDiffDirectory:(NSString *)imageDiffDirectory + identifier:(nullable NSString *)identifier + perPixelTolerance:(CGFloat)perPixelTolerance + overallTolerance:(CGFloat)overallTolerance + error:(NSError **)errorPtr; + +/** + Checks if reference image with identifier based name exists in the reference images directory. + @param referenceImagesDirectory The directory in which reference images are stored. + @param identifier An optional identifier, used if there are multiple snapshot tests in a given -test method. + @param errorPtr An error to log in an XCTAssert() macro if the method fails (missing reference image, images differ, etc). + @returns YES if reference image exists. + */ +- (BOOL)referenceImageRecordedInDirectory:(NSString *)referenceImagesDirectory + identifier:(nullable NSString *)identifier + error:(NSError **)errorPtr; + +/** + Returns the reference image directory. + + Helper function used to implement the assert macros. + + @param dir Directory to use if environment variable not specified. Ignored if null or empty. + */ +- (NSString *)getReferenceImageDirectoryWithDefault:(nullable NSString *)dir; + +/** + Returns the failed image diff directory. + + Helper function used to implement the assert macros. + + @param dir Directory to use if environment variable not specified. Ignored if null or empty. + */ +- (NSString *)getImageDiffDirectoryWithDefault:(nullable NSString *)dir; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCase.m b/Example/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCase.m new file mode 100644 index 00000000..04506242 --- /dev/null +++ b/Example/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCase.m @@ -0,0 +1,281 @@ +/* + * Copyright (c) 2017-2018, Uber Technologies, Inc. + * Copyright (c) 2015-2018, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import +#import + +@implementation FBSnapshotTestCase { + FBSnapshotTestController *_snapshotController; +} + +#pragma mark - Overrides + +- (void)setUp +{ + [super setUp]; + _snapshotController = [[FBSnapshotTestController alloc] initWithTestClass:[self class]]; +} + +- (void)tearDown +{ + _snapshotController = nil; + [super tearDown]; +} + +- (BOOL)recordMode +{ + return _snapshotController.recordMode; +} + +- (void)setRecordMode:(BOOL)recordMode +{ + NSAssert1(_snapshotController, @"%s cannot be called before [super setUp]", __FUNCTION__); + _snapshotController.recordMode = recordMode; +} + +- (FBSnapshotTestCaseFileNameIncludeOption)fileNameOptions +{ + return _snapshotController.fileNameOptions; +} + +- (void)setFileNameOptions:(FBSnapshotTestCaseFileNameIncludeOption)fileNameOptions +{ + NSAssert1(_snapshotController, @"%s cannot be called before [super setUp]", __FUNCTION__); + _snapshotController.fileNameOptions = fileNameOptions; +} + +- (BOOL)usesDrawViewHierarchyInRect +{ + return _snapshotController.usesDrawViewHierarchyInRect; +} + +- (void)setUsesDrawViewHierarchyInRect:(BOOL)usesDrawViewHierarchyInRect +{ + NSAssert1(_snapshotController, @"%s cannot be called before [super setUp]", __FUNCTION__); + _snapshotController.usesDrawViewHierarchyInRect = usesDrawViewHierarchyInRect; +} + +- (NSString *)folderName +{ + return _snapshotController.folderName; +} + +- (void)setFolderName:(NSString *)folderName +{ + _snapshotController.folderName = folderName; +} + +#pragma mark - Public API + +- (NSString *)snapshotVerifyViewOrLayer:(id)viewOrLayer + identifier:(NSString *)identifier + suffixes:(NSOrderedSet *)suffixes + overallTolerance:(CGFloat)overallTolerance + defaultReferenceDirectory:(NSString *)defaultReferenceDirectory + defaultImageDiffDirectory:(NSString *)defaultImageDiffDirectory +{ + return [self snapshotVerifyViewOrLayer:viewOrLayer + identifier:identifier + suffixes:suffixes + perPixelTolerance:0 + overallTolerance:overallTolerance + defaultReferenceDirectory:defaultReferenceDirectory + defaultImageDiffDirectory:defaultImageDiffDirectory]; +} + +- (NSString *)snapshotVerifyViewOrLayer:(id)viewOrLayer + identifier:(NSString *)identifier + suffixes:(NSOrderedSet *)suffixes + perPixelTolerance:(CGFloat)perPixelTolerance + overallTolerance:(CGFloat)overallTolerance + defaultReferenceDirectory:(NSString *)defaultReferenceDirectory + defaultImageDiffDirectory:(NSString *)defaultImageDiffDirectory +{ + if (nil == viewOrLayer) { + return @"Object to be snapshotted must not be nil"; + } + + NSString *referenceImageDirectory = [self getReferenceImageDirectoryWithDefault:defaultReferenceDirectory]; + if (referenceImageDirectory == nil) { + return @"Missing value for referenceImagesDirectory - Set FB_REFERENCE_IMAGE_DIR as an Environment variable in your scheme."; + } + + NSString *imageDiffDirectory = [self getImageDiffDirectoryWithDefault:defaultImageDiffDirectory]; + if (imageDiffDirectory == nil) { + return @"Missing value for imageDiffDirectory - Set IMAGE_DIFF_DIR as an Environment variable in your scheme."; + } + + if (suffixes.count == 0) { + return [NSString stringWithFormat:@"Suffixes set cannot be empty %@", suffixes]; + } + + BOOL testSuccess = NO; + NSError *error = nil; + NSMutableArray *errors = [NSMutableArray array]; + + if (self.recordMode) { + NSString *referenceImagesDirectory = [NSString stringWithFormat:@"%@%@", referenceImageDirectory, suffixes.firstObject]; + BOOL referenceImageSaved = [self _compareSnapshotOfViewOrLayer:viewOrLayer referenceImagesDirectory:referenceImagesDirectory imageDiffDirectory:imageDiffDirectory identifier:(identifier) perPixelTolerance:perPixelTolerance overallTolerance:overallTolerance error:&error]; + if (!referenceImageSaved) { + [errors addObject:error]; + } + } else { + for (NSString *suffix in suffixes) { + NSString *referenceImagesDirectory = [NSString stringWithFormat:@"%@%@", referenceImageDirectory, suffix]; + BOOL referenceImageAvailable = [self referenceImageRecordedInDirectory:referenceImagesDirectory identifier:(identifier) error:&error]; + + if (referenceImageAvailable) { + BOOL comparisonSuccess = [self _compareSnapshotOfViewOrLayer:viewOrLayer referenceImagesDirectory:referenceImagesDirectory imageDiffDirectory:imageDiffDirectory identifier:identifier perPixelTolerance:perPixelTolerance overallTolerance:overallTolerance error:&error]; + [errors removeAllObjects]; + if (comparisonSuccess) { + testSuccess = YES; + break; + } else { + [errors addObject:error]; + } + } else { + [errors addObject:error]; + } + } + } + + if (!testSuccess) { + return [NSString stringWithFormat:@"Snapshot comparison failed: %@", errors.firstObject]; + } + if (self.recordMode) { + return @"Test ran in record mode. Reference image is now saved. Disable record mode to perform an actual snapshot comparison!"; + } + + return nil; +} + +- (BOOL)compareSnapshotOfLayer:(CALayer *)layer + referenceImagesDirectory:(NSString *)referenceImagesDirectory + imageDiffDirectory:(NSString *)imageDiffDirectory + identifier:(NSString *)identifier + overallTolerance:(CGFloat)overallTolerance + error:(NSError **)errorPtr +{ + return [self _compareSnapshotOfViewOrLayer:layer + referenceImagesDirectory:referenceImagesDirectory + imageDiffDirectory:imageDiffDirectory + identifier:identifier + perPixelTolerance:0 + overallTolerance:overallTolerance + error:errorPtr]; +} + +- (BOOL)compareSnapshotOfLayer:(CALayer *)layer + referenceImagesDirectory:(NSString *)referenceImagesDirectory + imageDiffDirectory:(NSString *)imageDiffDirectory + identifier:(NSString *)identifier + perPixelTolerance:(CGFloat)perPixelTolerance + overallTolerance:(CGFloat)overallTolerance + error:(NSError **)errorPtr +{ + return [self _compareSnapshotOfViewOrLayer:layer + referenceImagesDirectory:referenceImagesDirectory + imageDiffDirectory:(NSString *)imageDiffDirectory + identifier:identifier + perPixelTolerance:perPixelTolerance + overallTolerance:overallTolerance + error:errorPtr]; +} + +- (BOOL)compareSnapshotOfView:(UIView *)view + referenceImagesDirectory:(NSString *)referenceImagesDirectory + imageDiffDirectory:(NSString *)imageDiffDirectory + identifier:(NSString *)identifier + overallTolerance:(CGFloat)overallTolerance + error:(NSError **)errorPtr +{ + return [self _compareSnapshotOfViewOrLayer:view + referenceImagesDirectory:referenceImagesDirectory + imageDiffDirectory:imageDiffDirectory + identifier:identifier + perPixelTolerance:0 + overallTolerance:overallTolerance + error:errorPtr]; +} + +- (BOOL)compareSnapshotOfView:(UIView *)view + referenceImagesDirectory:(NSString *)referenceImagesDirectory + imageDiffDirectory:(NSString *)imageDiffDirectory + identifier:(NSString *)identifier + perPixelTolerance:(CGFloat)perPixelTolerance + overallTolerance:(CGFloat)overallTolerance + error:(NSError **)errorPtr +{ + return [self _compareSnapshotOfViewOrLayer:view + referenceImagesDirectory:referenceImagesDirectory + imageDiffDirectory:(NSString *)imageDiffDirectory + identifier:identifier + perPixelTolerance:perPixelTolerance + overallTolerance:overallTolerance + error:errorPtr]; +} + +- (BOOL)referenceImageRecordedInDirectory:(NSString *)referenceImagesDirectory + identifier:(NSString *)identifier + error:(NSError **)errorPtr +{ + NSAssert1(_snapshotController, @"%s cannot be called before [super setUp]", __FUNCTION__); + _snapshotController.referenceImagesDirectory = referenceImagesDirectory; + UIImage *referenceImage = [_snapshotController referenceImageForSelector:self.invocation.selector + identifier:identifier + error:errorPtr]; + + return (referenceImage != nil); +} + +- (NSString *)getReferenceImageDirectoryWithDefault:(NSString *)dir +{ + NSString *envReferenceImageDirectory = [NSProcessInfo processInfo].environment[@"FB_REFERENCE_IMAGE_DIR"]; + if (envReferenceImageDirectory) { + return envReferenceImageDirectory; + } + if (dir && dir.length > 0) { + return dir; + } + return [[NSBundle bundleForClass:self.class].resourcePath stringByAppendingPathComponent:@"ReferenceImages"]; +} + +- (NSString *)getImageDiffDirectoryWithDefault:(NSString *)dir +{ + NSString *envImageDiffDirectory = [NSProcessInfo processInfo].environment[@"IMAGE_DIFF_DIR"]; + if (envImageDiffDirectory) { + return envImageDiffDirectory; + } + if (dir && dir.length > 0) { + return dir; + } + return NSTemporaryDirectory(); +} + +#pragma mark - Private API + +- (BOOL)_compareSnapshotOfViewOrLayer:(id)viewOrLayer + referenceImagesDirectory:(NSString *)referenceImagesDirectory + imageDiffDirectory:(NSString *)imageDiffDirectory + identifier:(NSString *)identifier + perPixelTolerance:(CGFloat)perPixelTolerance + overallTolerance:(CGFloat)overallTolerance + error:(NSError **)errorPtr +{ + _snapshotController.referenceImagesDirectory = referenceImagesDirectory; + _snapshotController.imageDiffDirectory = imageDiffDirectory; + return [_snapshotController compareSnapshotOfViewOrLayer:viewOrLayer + selector:self.invocation.selector + identifier:identifier + perPixelTolerance:perPixelTolerance + overallTolerance:overallTolerance + error:errorPtr]; +} + +@end diff --git a/Example/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCasePlatform.h b/Example/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCasePlatform.h new file mode 100644 index 00000000..6f576613 --- /dev/null +++ b/Example/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCasePlatform.h @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2017-2018, Uber Technologies, Inc. + * Copyright (c) 2015-2018, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import + +#ifdef __cplusplus +extern "C" { +#endif + +NS_ASSUME_NONNULL_BEGIN + +/** + An option mask that allows you to cherry pick which parts you want to include in the snapshot file name. + + - FBSnapshotTestCaseFileNameIncludeOptionNone: Don't include any of these options at all. + - FBSnapshotTestCaseFileNameIncludeOptionDevice: The file name should include the device name, as returned by UIDevice.currentDevice.model. + - FBSnapshotTestCaseFileNameIncludeOptionOS: The file name should include the OS version, as returned by UIDevice.currentDevice.systemVersion. + - FBSnapshotTestCaseFileNameIncludeOptionScreenSize: The file name should include the screen size of the current keyWindow, as returned by UIApplication.sharedApplication.keyWindow.bounds.size. + - FBSnapshotTestCaseFileNameIncludeOptionScreenScale: The file name should include the scale of the current device, as returned by UIScreen.mainScreen.scale. + */ +typedef NS_OPTIONS(NSUInteger, FBSnapshotTestCaseFileNameIncludeOption) { + FBSnapshotTestCaseFileNameIncludeOptionNone = 1 << 0, + FBSnapshotTestCaseFileNameIncludeOptionDevice = 1 << 1, + FBSnapshotTestCaseFileNameIncludeOptionOS = 1 << 2, + FBSnapshotTestCaseFileNameIncludeOptionScreenSize = 1 << 3, + FBSnapshotTestCaseFileNameIncludeOptionScreenScale = 1 << 4 +}; + +/** + Returns a Boolean value that indicates whether the snapshot test is running in 64Bit. + This method is a convenience for creating the suffixes set based on the architecture + that the test is running. + + @returns @c YES if the test is running in 64bit, otherwise @c NO. + */ +BOOL FBSnapshotTestCaseIs64Bit(void); + +/** + Returns a default set of strings that is used to append a suffix based on the architectures. + @warning Do not modify this function, you can create your own and use it with @c FBSnapshotVerifyViewWithOptions() + + @returns An @c NSOrderedSet object containing strings that are appended to the reference images directory. + */ +NSOrderedSet *FBSnapshotTestCaseDefaultSuffixes(void); + +/** + Returns a fully normalized file name as per the provided option mask. Strips punctuation and spaces and replaces them with @c _. + + @param fileName The file name to normalize. + @param option File Name Include options to use before normalization. + @return An @c NSString object containing the passed @c fileName and optionally, with the device model and/or OS and/or screen size and/or screen scale appended at the end. + */ +NSString *FBFileNameIncludeNormalizedFileNameFromOption(NSString *fileName, FBSnapshotTestCaseFileNameIncludeOption option); + +NS_ASSUME_NONNULL_END + +#ifdef __cplusplus +} +#endif diff --git a/Example/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCasePlatform.m b/Example/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCasePlatform.m new file mode 100644 index 00000000..e7ee8e8c --- /dev/null +++ b/Example/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCasePlatform.m @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2017-2018, Uber Technologies, Inc. + * Copyright (c) 2015-2018, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import +#import + +BOOL FBSnapshotTestCaseIs64Bit(void) +{ +#if __LP64__ + return YES; +#else + return NO; +#endif +} + +NSOrderedSet *FBSnapshotTestCaseDefaultSuffixes(void) +{ + NSMutableOrderedSet *suffixesSet = [[NSMutableOrderedSet alloc] init]; + [suffixesSet addObject:@"_32"]; + [suffixesSet addObject:@"_64"]; + if (FBSnapshotTestCaseIs64Bit()) { + return [suffixesSet reversedOrderedSet]; + } + return [suffixesSet copy]; +} + +NSString *FBFileNameIncludeNormalizedFileNameFromOption(NSString *fileName, FBSnapshotTestCaseFileNameIncludeOption option) +{ + if ((option & FBSnapshotTestCaseFileNameIncludeOptionDevice) == FBSnapshotTestCaseFileNameIncludeOptionDevice) { + UIDevice *device = [UIDevice currentDevice]; + fileName = [fileName stringByAppendingFormat:@"_%@", device.model]; + } + + if ((option & FBSnapshotTestCaseFileNameIncludeOptionOS) == FBSnapshotTestCaseFileNameIncludeOptionOS) { + UIDevice *device = [UIDevice currentDevice]; + NSString *os = device.systemVersion; + fileName = [fileName stringByAppendingFormat:@"_%@", os]; + } + + if ((option & FBSnapshotTestCaseFileNameIncludeOptionScreenSize) == FBSnapshotTestCaseFileNameIncludeOptionScreenSize) { + UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow]; + CGSize screenSize = keyWindow.bounds.size; + fileName = [fileName stringByAppendingFormat:@"_%.0fx%.0f", screenSize.width, screenSize.height]; + } + + NSMutableCharacterSet *invalidCharacters = [NSMutableCharacterSet new]; + [invalidCharacters formUnionWithCharacterSet:[NSCharacterSet whitespaceCharacterSet]]; + [invalidCharacters formUnionWithCharacterSet:[NSCharacterSet punctuationCharacterSet]]; + NSArray *validComponents = [fileName componentsSeparatedByCharactersInSet:invalidCharacters]; + fileName = [validComponents componentsJoinedByString:@"_"]; + + if ((option & FBSnapshotTestCaseFileNameIncludeOptionScreenScale) == FBSnapshotTestCaseFileNameIncludeOptionScreenScale) { + CGFloat screenScale = [[UIScreen mainScreen] scale]; + fileName = [fileName stringByAppendingFormat:@"@%.fx", screenScale]; + } + + return fileName; +} diff --git a/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestController.h b/Example/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestController.h similarity index 52% rename from Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestController.h rename to Example/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestController.h index 0000c71f..556361f6 100644 --- a/Example/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestController.h +++ b/Example/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestController.h @@ -1,23 +1,27 @@ /* - * Copyright (c) 2015, Facebook, Inc. - * All rights reserved. + * Copyright (c) 2017-2018, Uber Technologies, Inc. + * Copyright (c) 2015-2018, Facebook, Inc. * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. * */ #import #import +#import + +NS_ASSUME_NONNULL_BEGIN + typedef NS_ENUM(NSInteger, FBSnapshotTestControllerErrorCode) { - FBSnapshotTestControllerErrorCodeUnknown, - FBSnapshotTestControllerErrorCodeNeedsRecord, - FBSnapshotTestControllerErrorCodePNGCreationFailed, - FBSnapshotTestControllerErrorCodeImagesDifferentSizes, - FBSnapshotTestControllerErrorCodeImagesDifferent, + FBSnapshotTestControllerErrorCodeUnknown, + FBSnapshotTestControllerErrorCodeNeedsRecord, + FBSnapshotTestControllerErrorCodePNGCreationFailed, + FBSnapshotTestControllerErrorCodeImagesDifferentSizes, + FBSnapshotTestControllerErrorCodeImagesDifferent, }; + /** Errors returned by the methods of FBSnapshotTestController use this domain. */ @@ -56,10 +60,17 @@ extern NSString *const FBDiffedImageKey; @property (readwrite, nonatomic, assign) BOOL recordMode; /** - When @c YES appends the name of the device model and OS to the snapshot file name. - The default value is @c NO. + When set, allows fine-grained control over what you want the file names to include. + + Allows you to combine which device or simulator specific details you want in your snapshot file names. + + The default value is FBSnapshotTestCaseFileNameIncludeOptionScreenScale. + + @discussion If you are migrating from the now deleted FBSnapshotTestCaseAgnosticOption to FBSnapshotTestCaseFileNameIncludeOption, we default to using FBSnapshotTestCaseFileNameIncludeOptionScreenScale for fileNameOptions to make the transition easier. If you don't want to have the screen scale included in your file name, you need to set fileNameOptions to a mask that doesn't include FBSnapshotTestCaseFileNameIncludeOptionScreenScale: + + self.fileNameOptions = (FBSnapshotTestCaseFileNameIncludeOptionDevice | FBSnapshotTestCaseFileNameIncludeOptionOS); */ -@property (readwrite, nonatomic, assign, getter=isDeviceAgnostic) BOOL deviceAgnostic; +@property (readwrite, nonatomic, assign) FBSnapshotTestCaseFileNameIncludeOption fileNameOptions; /** Uses drawViewHierarchyInRect:afterScreenUpdates: to draw the image instead of renderInContext: @@ -67,22 +78,25 @@ extern NSString *const FBDiffedImageKey; @property (readwrite, nonatomic, assign) BOOL usesDrawViewHierarchyInRect; /** - The directory in which referfence images are stored. + The directory in which reference images are stored. */ -@property (readwrite, nonatomic, copy) NSString *referenceImagesDirectory; +@property (readwrite, nonatomic, copy, nullable) NSString *referenceImagesDirectory; /** - @param testClass The subclass of FBSnapshotTestCase that is using this controller. - @returns An instance of FBSnapshotTestController. + The directory in which failed snapshot images are stored. */ -- (instancetype)initWithTestClass:(Class)testClass; +@property (readwrite, nonatomic, copy) NSString *imageDiffDirectory; /** - Designated initializer. - @param testName The name of the tests. + The name folder in which the snapshots will be saved for a given test case. +*/ +@property (readwrite, nonatomic, copy) NSString *folderName; + +/** + @param testClass The subclass of FBSnapshotTestCase that is using this controller. @returns An instance of FBSnapshotTestController. */ -- (instancetype)initWithTestName:(NSString *)testName; +- (instancetype)initWithTestClass:(Class)testClass; /** Performs the comparison of the layer. @@ -94,7 +108,7 @@ extern NSString *const FBDiffedImageKey; */ - (BOOL)compareSnapshotOfLayer:(CALayer *)layer selector:(SEL)selector - identifier:(NSString *)identifier + identifier:(nullable NSString *)identifier error:(NSError **)errorPtr; /** @@ -107,7 +121,7 @@ extern NSString *const FBDiffedImageKey; */ - (BOOL)compareSnapshotOfView:(UIView *)view selector:(SEL)selector - identifier:(NSString *)identifier + identifier:(nullable NSString *)identifier error:(NSError **)errorPtr; /** @@ -115,14 +129,31 @@ extern NSString *const FBDiffedImageKey; @param viewOrLayer The view or layer to snapshot. @param selector The test method being run. @param identifier An optional identifier, used is there are muliptle snapshot tests in a given -test method. - @param tolerance The percentage of pixels that can differ and still be considered 'identical' + @param overallTolerance The percentage of pixels that can differ and still be considered 'identical'. + @param errorPtr An error to log in an XCTAssert() macro if the method fails (missing reference image, images differ, etc). + @returns YES if the comparison (or saving of the reference image) succeeded. + */ +- (BOOL)compareSnapshotOfViewOrLayer:(id)viewOrLayer + selector:(SEL)selector + identifier:(nullable NSString *)identifier + overallTolerance:(CGFloat)overallTolerance + error:(NSError **)errorPtr; + +/** + Performs the comparison of a view or layer. + @param viewOrLayer The view or layer to snapshot. + @param selector The test method being run. + @param identifier An optional identifier, used is there are muliptle snapshot tests in a given -test method. + @param perPixelTolerance The percentage a given pixel's R,G,B and A components can differ and still be considered 'identical'. + @param overallTolerance The percentage of pixels that can differ and still be considered 'identical'. @param errorPtr An error to log in an XCTAssert() macro if the method fails (missing reference image, images differ, etc). @returns YES if the comparison (or saving of the reference image) succeeded. */ - (BOOL)compareSnapshotOfViewOrLayer:(id)viewOrLayer selector:(SEL)selector - identifier:(NSString *)identifier - tolerance:(CGFloat)tolerance + identifier:(nullable NSString *)identifier + perPixelTolerance:(CGFloat)perPixelTolerance + overallTolerance:(CGFloat)overallTolerance error:(NSError **)errorPtr; /** @@ -132,21 +163,36 @@ extern NSString *const FBDiffedImageKey; @param errorPtr An error, if this methods returns nil, the error will be something useful. @returns An image. */ -- (UIImage *)referenceImageForSelector:(SEL)selector - identifier:(NSString *)identifier - error:(NSError **)errorPtr; +- (nullable UIImage *)referenceImageForSelector:(SEL)selector + identifier:(nullable NSString *)identifier + error:(NSError **)errorPtr; /** Performs a pixel-by-pixel comparison of the two images with an allowable margin of error. @param referenceImage The reference (correct) image. @param image The image to test against the reference. - @param tolerance The percentage of pixels that can differ and still be considered 'identical' + @param overallTolerance The percentage of pixels that can differ and still be considered 'identical'. @param errorPtr An error that indicates why the comparison failed if it does. @returns YES if the comparison succeeded and the images are the same(ish). */ - (BOOL)compareReferenceImage:(UIImage *)referenceImage toImage:(UIImage *)image - tolerance:(CGFloat)tolerance + overallTolerance:(CGFloat)overallTolerance + error:(NSError **)errorPtr; + +/** + Performs a pixel-by-pixel comparison of the two images with an allowable margin of error. + @param referenceImage The reference (correct) image. + @param image The image to test against the reference. + @param perPixelTolerance The percentage a given pixel's R,G,B and A components can differ and still be considered 'identical'. + @param overallTolerance The percentage of pixels that can differ and still be considered 'identical'. + @param errorPtr An error that indicates why the comparison failed if it does. + @returns YES if the comparison succeeded and the images are the same(ish). + */ +- (BOOL)compareReferenceImage:(UIImage *)referenceImage + toImage:(UIImage *)image + perPixelTolerance:(CGFloat)perPixelTolerance + overallTolerance:(CGFloat)overallTolerance error:(NSError **)errorPtr; /** @@ -161,6 +207,8 @@ extern NSString *const FBDiffedImageKey; - (BOOL)saveFailedReferenceImage:(UIImage *)referenceImage testImage:(UIImage *)testImage selector:(SEL)selector - identifier:(NSString *)identifier + identifier:(nullable NSString *)identifier error:(NSError **)errorPtr; @end + +NS_ASSUME_NONNULL_END diff --git a/Example/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestController.m b/Example/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestController.m new file mode 100644 index 00000000..4fcd6146 --- /dev/null +++ b/Example/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestController.m @@ -0,0 +1,377 @@ +/* + * Copyright (c) 2017-2018, Uber Technologies, Inc. + * Copyright (c) 2015-2018, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import +#import +#import +#import +#import + +#import + +NSString *const FBSnapshotTestControllerErrorDomain = @"FBSnapshotTestControllerErrorDomain"; +NSString *const FBReferenceImageFilePathKey = @"FBReferenceImageFilePathKey"; +NSString *const FBReferenceImageKey = @"FBReferenceImageKey"; +NSString *const FBCapturedImageKey = @"FBCapturedImageKey"; +NSString *const FBDiffedImageKey = @"FBDiffedImageKey"; + +typedef NS_ENUM(NSUInteger, FBTestSnapshotFileNameType) { + FBTestSnapshotFileNameTypeReference, + FBTestSnapshotFileNameTypeFailedReference, + FBTestSnapshotFileNameTypeFailedTest, + FBTestSnapshotFileNameTypeFailedTestDiff, +}; + +@implementation FBSnapshotTestController { + NSFileManager *_fileManager; +} + +#pragma mark - Initializers + +- (instancetype)initWithTestClass:(Class)testClass; +{ + if (self = [super init]) { + _folderName = NSStringFromClass(testClass); + _fileNameOptions = FBSnapshotTestCaseFileNameIncludeOptionScreenScale; + + _fileManager = [[NSFileManager alloc] init]; + } + return self; +} + +#pragma mark - Overrides + +- (NSString *)description +{ + return [NSString stringWithFormat:@"%@ %@", [super description], _referenceImagesDirectory]; +} + +#pragma mark - Public API + +- (BOOL)compareSnapshotOfLayer:(CALayer *)layer + selector:(SEL)selector + identifier:(NSString *)identifier + error:(NSError **)errorPtr +{ + return [self compareSnapshotOfViewOrLayer:layer + selector:selector + identifier:identifier + perPixelTolerance:0 + overallTolerance:0 + error:errorPtr]; +} + +- (BOOL)compareSnapshotOfView:(UIView *)view + selector:(SEL)selector + identifier:(NSString *)identifier + error:(NSError **)errorPtr +{ + return [self compareSnapshotOfViewOrLayer:view + selector:selector + identifier:identifier + perPixelTolerance:0 + overallTolerance:0 + error:errorPtr]; +} + +- (BOOL)compareSnapshotOfViewOrLayer:(id)viewOrLayer + selector:(SEL)selector + identifier:(NSString *)identifier + overallTolerance:(CGFloat)overallTolerance + error:(NSError **)errorPtr +{ + return [self compareSnapshotOfViewOrLayer:viewOrLayer + selector:selector + identifier:identifier + perPixelTolerance:0 + overallTolerance:overallTolerance + error:errorPtr]; +} + + +- (BOOL)compareSnapshotOfViewOrLayer:(id)viewOrLayer + selector:(SEL)selector + identifier:(NSString *)identifier + perPixelTolerance:(CGFloat)perPixelTolerance + overallTolerance:(CGFloat)overallTolerance + error:(NSError **)errorPtr +{ + if (self.recordMode) { + return [self _recordSnapshotOfViewOrLayer:viewOrLayer selector:selector identifier:identifier error:errorPtr]; + } else { + return [self _performPixelComparisonWithViewOrLayer:viewOrLayer selector:selector identifier:identifier perPixelTolerance:perPixelTolerance overallTolerance:overallTolerance error:errorPtr]; + } +} + +- (UIImage *)referenceImageForSelector:(SEL)selector + identifier:(NSString *)identifier + error:(NSError **)errorPtr +{ + NSString *filePath = [self _referenceFilePathForSelector:selector identifier:identifier]; + UIImage *image = [UIImage imageWithContentsOfFile:filePath]; + if (nil == image && NULL != errorPtr) { + BOOL exists = [_fileManager fileExistsAtPath:filePath]; + if (!exists) { + *errorPtr = [NSError errorWithDomain:FBSnapshotTestControllerErrorDomain + code:FBSnapshotTestControllerErrorCodeNeedsRecord + userInfo:@{ + FBReferenceImageFilePathKey : filePath, + NSLocalizedDescriptionKey : @"Unable to load reference image.", + NSLocalizedFailureReasonErrorKey : @"Reference image not found. You need to run the test in record mode", + }]; + } else { + *errorPtr = [NSError errorWithDomain:FBSnapshotTestControllerErrorDomain + code:FBSnapshotTestControllerErrorCodeUnknown + userInfo:nil]; + } + } + return image; +} + +- (BOOL)compareReferenceImage:(UIImage *)referenceImage + toImage:(UIImage *)image + overallTolerance:(CGFloat)overallTolerance + error:(NSError **)errorPtr +{ + return [self compareReferenceImage:referenceImage + toImage:image + perPixelTolerance:0 + overallTolerance:overallTolerance + error:errorPtr]; +} + +- (BOOL)compareReferenceImage:(UIImage *)referenceImage + toImage:(UIImage *)image + perPixelTolerance:(CGFloat)perPixelTolerance + overallTolerance:(CGFloat)overallTolerance + error:(NSError **)errorPtr +{ + BOOL sameImageDimensions = CGSizeEqualToSize(referenceImage.size, image.size); + if (sameImageDimensions && [referenceImage fb_compareWithImage:image perPixelTolerance:perPixelTolerance overallTolerance:overallTolerance]) { + return YES; + } + + if (NULL != errorPtr) { + NSString *errorDescription = sameImageDimensions ? @"Images different" : @"Images different sizes"; + NSString *errorReason = sameImageDimensions ? [NSString stringWithFormat:@"image pixels differed by more than %.2f%% from the reference image", overallTolerance * 100] : [NSString stringWithFormat:@"referenceImage:%@, image:%@", NSStringFromCGSize(referenceImage.size), NSStringFromCGSize(image.size)]; + FBSnapshotTestControllerErrorCode errorCode = sameImageDimensions ? FBSnapshotTestControllerErrorCodeImagesDifferent : FBSnapshotTestControllerErrorCodeImagesDifferentSizes; + + *errorPtr = [NSError errorWithDomain:FBSnapshotTestControllerErrorDomain + code:errorCode + userInfo:@{ + NSLocalizedDescriptionKey : errorDescription, + NSLocalizedFailureReasonErrorKey : errorReason, + FBReferenceImageKey : referenceImage, + FBCapturedImageKey : image, + FBDiffedImageKey : [referenceImage fb_diffWithImage:image], + }]; + } + return NO; +} + +- (BOOL)saveFailedReferenceImage:(UIImage *)referenceImage + testImage:(UIImage *)testImage + selector:(SEL)selector + identifier:(NSString *)identifier + error:(NSError **)errorPtr +{ + NSData *referencePNGData = UIImagePNGRepresentation(referenceImage); + NSData *testPNGData = UIImagePNGRepresentation(testImage); + + NSString *referencePath = [self _failedFilePathForSelector:selector + identifier:identifier + fileNameType:FBTestSnapshotFileNameTypeFailedReference]; + + NSError *creationError = nil; + BOOL didCreateDir = [_fileManager createDirectoryAtPath:[referencePath stringByDeletingLastPathComponent] + withIntermediateDirectories:YES + attributes:nil + error:&creationError]; + if (!didCreateDir) { + if (NULL != errorPtr) { + *errorPtr = creationError; + } + return NO; + } + + if (![referencePNGData writeToFile:referencePath options:NSDataWritingAtomic error:errorPtr]) { + return NO; + } + + NSString *testPath = [self _failedFilePathForSelector:selector + identifier:identifier + fileNameType:FBTestSnapshotFileNameTypeFailedTest]; + + if (![testPNGData writeToFile:testPath options:NSDataWritingAtomic error:errorPtr]) { + return NO; + } + + NSString *diffPath = [self _failedFilePathForSelector:selector + identifier:identifier + fileNameType:FBTestSnapshotFileNameTypeFailedTestDiff]; + + UIImage *diffImage = [referenceImage fb_diffWithImage:testImage]; + NSData *diffImageData = UIImagePNGRepresentation(diffImage); + + if (![diffImageData writeToFile:diffPath options:NSDataWritingAtomic error:errorPtr]) { + return NO; + } + + NSLog(@"If you have Kaleidoscope installed you can run this command to see an image diff:\n" + @"ksdiff \"%@\" \"%@\"", + referencePath, testPath); + + return YES; +} + +#pragma mark - Private API + +- (NSString *)_fileNameForSelector:(SEL)selector + identifier:(NSString *)identifier + fileNameType:(FBTestSnapshotFileNameType)fileNameType +{ + NSString *fileName = nil; + switch (fileNameType) { + case FBTestSnapshotFileNameTypeFailedReference: + fileName = @"reference_"; + break; + case FBTestSnapshotFileNameTypeFailedTest: + fileName = @"failed_"; + break; + case FBTestSnapshotFileNameTypeFailedTestDiff: + fileName = @"diff_"; + break; + default: + fileName = @""; + break; + } + fileName = [fileName stringByAppendingString:NSStringFromSelector(selector)]; + if (0 < identifier.length) { + fileName = [fileName stringByAppendingFormat:@"_%@", identifier]; + } + + BOOL noFileNameOption = (self.fileNameOptions & FBSnapshotTestCaseFileNameIncludeOptionNone) == FBSnapshotTestCaseFileNameIncludeOptionNone; + if (!noFileNameOption) { + fileName = FBFileNameIncludeNormalizedFileNameFromOption(fileName, self.fileNameOptions); + } + + fileName = [fileName stringByAppendingPathExtension:@"png"]; + return fileName; +} + +- (NSString *)_referenceFilePathForSelector:(SEL)selector + identifier:(NSString *)identifier +{ + NSString *fileName = [self _fileNameForSelector:selector + identifier:identifier + fileNameType:FBTestSnapshotFileNameTypeReference]; + NSString *filePath = [_referenceImagesDirectory stringByAppendingPathComponent:self.folderName]; + filePath = [filePath stringByAppendingPathComponent:fileName]; + return filePath; +} + +- (NSString *)_failedFilePathForSelector:(SEL)selector + identifier:(NSString *)identifier + fileNameType:(FBTestSnapshotFileNameType)fileNameType +{ + NSString *fileName = [self _fileNameForSelector:selector + identifier:identifier + fileNameType:fileNameType]; + + NSString *filePath = [_imageDiffDirectory stringByAppendingPathComponent:self.folderName]; + filePath = [filePath stringByAppendingPathComponent:fileName]; + return filePath; +} + +- (BOOL)_performPixelComparisonWithViewOrLayer:(id)viewOrLayer + selector:(SEL)selector + identifier:(NSString *)identifier + perPixelTolerance:(CGFloat)perPixelTolerance + overallTolerance:(CGFloat)overallTolerance + error:(NSError **)errorPtr +{ + UIImage *referenceImage = [self referenceImageForSelector:selector identifier:identifier error:errorPtr]; + if (nil != referenceImage) { + UIImage *snapshot = [self _imageForViewOrLayer:viewOrLayer]; + BOOL imagesSame = [self compareReferenceImage:referenceImage toImage:snapshot perPixelTolerance:perPixelTolerance overallTolerance:overallTolerance error:errorPtr]; + if (!imagesSame) { + NSError *saveError = nil; + if ([self saveFailedReferenceImage:referenceImage testImage:snapshot selector:selector identifier:identifier error:&saveError] == NO) { + NSLog(@"Error saving test images: %@", saveError); + } + } + return imagesSame; + } + return NO; +} + +- (BOOL)_recordSnapshotOfViewOrLayer:(id)viewOrLayer + selector:(SEL)selector + identifier:(NSString *)identifier + error:(NSError **)errorPtr +{ + UIImage *snapshot = [self _imageForViewOrLayer:viewOrLayer]; + return [self _saveReferenceImage:snapshot selector:selector identifier:identifier error:errorPtr]; +} + +- (BOOL)_saveReferenceImage:(UIImage *)image + selector:(SEL)selector + identifier:(NSString *)identifier + error:(NSError **)errorPtr +{ + BOOL didWrite = NO; + if (nil != image) { + NSString *filePath = [self _referenceFilePathForSelector:selector identifier:identifier]; + NSData *pngData = UIImagePNGRepresentation(image); + if (nil != pngData) { + NSError *creationError = nil; + BOOL didCreateDir = [_fileManager createDirectoryAtPath:[filePath stringByDeletingLastPathComponent] + withIntermediateDirectories:YES + attributes:nil + error:&creationError]; + if (!didCreateDir) { + if (NULL != errorPtr) { + *errorPtr = creationError; + } + return NO; + } + didWrite = [pngData writeToFile:filePath options:NSDataWritingAtomic error:errorPtr]; + if (didWrite) { + NSLog(@"Reference image save at: %@", filePath); + } + } else { + if (nil != errorPtr) { + *errorPtr = [NSError errorWithDomain:FBSnapshotTestControllerErrorDomain + code:FBSnapshotTestControllerErrorCodePNGCreationFailed + userInfo:@{ + FBReferenceImageFilePathKey : filePath, + }]; + } + } + } + return didWrite; +} + +- (UIImage *)_imageForViewOrLayer:(id)viewOrLayer +{ + if ([viewOrLayer isKindOfClass:[UIView class]]) { + if (_usesDrawViewHierarchyInRect) { + return [UIImage fb_imageForView:viewOrLayer]; + } else { + return [UIImage fb_imageForViewLayer:viewOrLayer]; + } + } else if ([viewOrLayer isKindOfClass:[CALayer class]]) { + return [UIImage fb_imageForLayer:viewOrLayer]; + } else { + [NSException raise:@"Only UIView and CALayer classes can be snapshotted" format:@"%@", viewOrLayer]; + } + return nil; +} + +@end diff --git a/Example/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/SwiftSupport.swift b/Example/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/SwiftSupport.swift new file mode 100644 index 00000000..de7ff3b3 --- /dev/null +++ b/Example/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/SwiftSupport.swift @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2017-2018, Uber Technologies, Inc. + * Copyright (c) 2015-2018, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +public extension FBSnapshotTestCase { + func FBSnapshotVerifyView(_ view: UIView, identifier: String = "", suffixes: NSOrderedSet = FBSnapshotTestCaseDefaultSuffixes(), perPixelTolerance: CGFloat = 0, overallTolerance: CGFloat = 0, file: StaticString = #file, line: UInt = #line) { + FBSnapshotVerifyViewOrLayer(view, identifier: identifier, suffixes: suffixes, perPixelTolerance: perPixelTolerance, overallTolerance: overallTolerance, file: file, line: line) + } + + func FBSnapshotVerifyLayer(_ layer: CALayer, identifier: String = "", suffixes: NSOrderedSet = FBSnapshotTestCaseDefaultSuffixes(), perPixelTolerance: CGFloat = 0, overallTolerance: CGFloat = 0, file: StaticString = #file, line: UInt = #line) { + FBSnapshotVerifyViewOrLayer(layer, identifier: identifier, suffixes: suffixes, perPixelTolerance: perPixelTolerance, overallTolerance: overallTolerance, file: file, line: line) + } + + private func FBSnapshotVerifyViewOrLayer(_ viewOrLayer: AnyObject, identifier: String = "", suffixes: NSOrderedSet = FBSnapshotTestCaseDefaultSuffixes(), perPixelTolerance: CGFloat = 0, overallTolerance: CGFloat = 0, file: StaticString = #file, line: UInt = #line) { + let envReferenceImageDirectory = self.getReferenceImageDirectory(withDefault: FB_REFERENCE_IMAGE_DIR) + let envImageDiffDirectory = self.getImageDiffDirectory(withDefault: IMAGE_DIFF_DIR) + var error: NSError? + var comparisonSuccess = false + + for suffix in suffixes { + let referenceImagesDirectory = "\(envReferenceImageDirectory)\(suffix)" + let imageDiffDirectory = envImageDiffDirectory + if viewOrLayer.isKind(of: UIView.self) { + do { + try compareSnapshot(of: viewOrLayer as! UIView, referenceImagesDirectory: referenceImagesDirectory, imageDiffDirectory: imageDiffDirectory, identifier: identifier, perPixelTolerance: perPixelTolerance, overallTolerance: overallTolerance) + comparisonSuccess = true + } catch let error1 as NSError { + error = error1 + comparisonSuccess = false + } + } else if viewOrLayer.isKind(of: CALayer.self) { + do { + try compareSnapshot(of: viewOrLayer as! CALayer, referenceImagesDirectory: referenceImagesDirectory, imageDiffDirectory: imageDiffDirectory, identifier: identifier, perPixelTolerance: perPixelTolerance, overallTolerance: overallTolerance) + comparisonSuccess = true + } catch let error1 as NSError { + error = error1 + comparisonSuccess = false + } + } else { + assertionFailure("Only UIView and CALayer classes can be snapshotted") + } + + assert(recordMode == false, message: "Test ran in record mode. Reference image is now saved. Disable record mode to perform an actual snapshot comparison!", file: file, line: line) + + if comparisonSuccess || recordMode { + break + } + + assert(comparisonSuccess, message: "Snapshot comparison failed: \(String(describing: error))", file: file, line: line) + } + } + + func assert(_ assertion: Bool, message: String, file: StaticString, line: UInt) { + if !assertion { + XCTFail(message, file: file, line: line) + } + } +} diff --git a/Example/Pods/iOSSnapshotTestCase/LICENSE b/Example/Pods/iOSSnapshotTestCase/LICENSE new file mode 100644 index 00000000..1b3cb069 --- /dev/null +++ b/Example/Pods/iOSSnapshotTestCase/LICENSE @@ -0,0 +1,22 @@ +MIT License + +Copyright (c) 2017-2018, Uber Technologies, Inc. +Copyright (c) 2013-2018, Facebook, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/Example/Pods/FBSnapshotTestCase/README.md b/Example/Pods/iOSSnapshotTestCase/README.md similarity index 52% rename from Example/Pods/FBSnapshotTestCase/README.md rename to Example/Pods/iOSSnapshotTestCase/README.md index 01cdb907..1cf665db 100644 --- a/Example/Pods/FBSnapshotTestCase/README.md +++ b/Example/Pods/iOSSnapshotTestCase/README.md @@ -1,7 +1,9 @@ -FBSnapshotTestCase +iOSSnapshotTestCase (previously named FBSnapshotTestCase) ====================== -[![Build Status](https://travis-ci.org/facebook/ios-snapshot-test-case.svg)](https://travis-ci.org/facebook/ios-snapshot-test-case) [![Cocoa Pod Version](https://cocoapod-badges.herokuapp.com/v/FBSnapshotTestCase/badge.svg)](http://cocoadocs.org/docsets/FBSnapshotTestCase/) +[![Build Status](https://travis-ci.org/uber/ios-snapshot-test-case.svg)](https://travis-ci.org/uber/ios-snapshot-test-case) +[![CocoaPods Compatible](https://img.shields.io/cocoapods/v/iOSSnapshotTestCase.svg)](https://img.shields.io/cocoapods/v/iOSSnapshotTestCase.svg) +[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) What it does ------------ @@ -14,9 +16,8 @@ repository and fails the test if the two images don't match. Why? ---- -At Facebook we write a lot of UI code. As you might imagine, each type of -feed story is rendered using a subclass of `UIView`. There are a lot of edge -cases that we want to handle correctly: +We write a lot of UI code. There are a lot of edge +cases that we want to handle correctly when you are creating `UIView` instances: - What if there is more text than can fit in the space available? - What if an image doesn't match the size of an image view? @@ -27,32 +28,32 @@ views. You can do a lot of rectangle asserts, but these are hard to understand or visualize. Looking at an image diff shows you exactly what changed and how it will look to users. -We developed `FBSnapshotTestCase` to make snapshot tests easy. +`iOSSnapshotTestCase` was developed to make snapshot tests easy. Installation with CocoaPods --------------------------- 1. Add the following lines to your Podfile: - ``` + ```ruby target "Tests" do use_frameworks! - pod 'FBSnapshotTestCase' + pod 'iOSSnapshotTestCase' end ``` - If you support iOS 7 use `FBSnapshotTestCase/Core` instead, which doesn't contain Swift support. + If your test target is Objective-C only use `iOSSnapshotTestCase/Core` instead, which doesn't contain Swift support. Replace "Tests" with the name of your test project. -2. There are [three ways](https://github.com/facebook/ios-snapshot-test-case/blob/master/FBSnapshotTestCase/FBSnapshotTestCase.h#L19-L29) of setting reference image directories, the recommended one is to define `FB_REFERENCE_IMAGE_DIR` in your scheme. This should point to the directory where you want reference images to be stored. At Facebook, we normally use this: +2. There are [three ways](https://github.com/uber/ios-snapshot-test-case/blob/master/FBSnapshotTestCase/FBSnapshotTestCase.h#L19-L29) of setting reference image directories, the recommended one is to define `FB_REFERENCE_IMAGE_DIR` in your scheme. This should point to the directory where you want reference images to be stored. We normally use this: |Name|Value| |:---|:----| |`FB_REFERENCE_IMAGE_DIR`|`$(SOURCE_ROOT)/$(PROJECT_NAME)Tests/ReferenceImages`| |`IMAGE_DIFF_DIR`|`$(SOURCE_ROOT)/$(PROJECT_NAME)Tests/FailureDiffs`| -Define the `IMAGE_DIFF_DIR` to the directory where you want to store diffs of failed snapshots. +Define the `IMAGE_DIFF_DIR` to the directory where you want to store diffs of failed snapshots. There are also [three ways](https://github.com/uber/ios-snapshot-test-case/blob/master/FBSnapshotTestCase/FBSnapshotTestCase.h#L34-L43) to set failed image diff directories. ![](FBSnapshotTestCaseDemo/Scheme_FB_REFERENCE_IMAGE_DIR.png) @@ -77,24 +78,32 @@ Features in a single test method. - Support for `CALayer` via `FBSnapshotVerifyLayer`. - `usesDrawViewHierarchyInRect` to handle cases like `UIVisualEffect`, `UIAppearance` and Size Classes. -- `isDeviceAgnostic` to allow appending the device model (`iPhone`, `iPad`, `iPod Touch`, etc), OS version and screen size to the images (allowing to have multiple tests for the same «snapshot» for different `OS`s and devices). +- `fileNameOptions` to control appending the device model (`iPhone`, `iPad`, `iPod Touch`, etc), OS version, screen size and screen scale to the images (allowing to have multiple tests for the same «snapshot» for different `OS`s and devices). Notes ----- -Your unit test must be an "application test", not a "logic test." (That is, it -must be run within the Simulator so that it has access to UIKit.) In Xcode 5 +Your unit tests _should_ be inside an "application" bundle, not a "logic/library" test bundle. (That is, it +should be run within the Simulator so that it has access to UIKit.) + +In Xcode 5 and later new projects only offer application tests, but older projects will have separate targets for the two types. +*However*, if you are writing snapshot tests inside a library/framework, you might want to keep your test bundle as a library test bundle without a Test Host. + +Read more on this [here](docs/LibraryVsApplicationTestBundles.md). + Authors ------- -`FBSnapshotTestCase` was written at Facebook by +`iOSSnapshotTestCase` was written at Facebook by [Jonathan Dann](https://facebook.com/j.p.dann) with significant contributions by [Todd Krabach](https://facebook.com/toddkrabach). +Today it is maintained by [Uber](https://github.com/uber) and [Alan Zeino](https://github.com/alanzeino). + License ------- -`FBSnapshotTestCase` is BSD-licensed. See `LICENSE`. +`iOSSnapshotTestCase` is MIT–licensed. See `LICENSE`. diff --git a/Example/PopupDialog.xcodeproj/project.pbxproj b/Example/PopupDialog.xcodeproj/project.pbxproj index 10b35bd5..30b916ea 100644 --- a/Example/PopupDialog.xcodeproj/project.pbxproj +++ b/Example/PopupDialog.xcodeproj/project.pbxproj @@ -286,22 +286,22 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0820; - LastUpgradeCheck = 0930; + LastUpgradeCheck = 1020; ORGANIZATIONNAME = CocoaPods; TargetAttributes = { 607FACCF1AFB9204008FA782 = { CreatedOnToolsVersion = 6.3.1; - LastSwiftMigration = 1000; + LastSwiftMigration = 1020; ProvisioningStyle = Automatic; }; 607FACE41AFB9204008FA782 = { CreatedOnToolsVersion = 6.3.1; - LastSwiftMigration = 1000; + LastSwiftMigration = 1020; TestTargetID = 607FACCF1AFB9204008FA782; }; C7EA1E071E2A181A009D3044 = { CreatedOnToolsVersion = 8.2.1; - LastSwiftMigration = 1000; + LastSwiftMigration = 1020; ProvisioningStyle = Automatic; TestTargetID = 607FACCF1AFB9204008FA782; }; @@ -386,13 +386,13 @@ ); inputPaths = ( "${PODS_ROOT}/Target Support Files/Pods-PopupDialog_Tests/Pods-PopupDialog_Tests-frameworks.sh", - "${BUILT_PRODUCTS_DIR}/FBSnapshotTestCase/FBSnapshotTestCase.framework", "${BUILT_PRODUCTS_DIR}/Nimble/Nimble.framework", + "${BUILT_PRODUCTS_DIR}/iOSSnapshotTestCase/FBSnapshotTestCase.framework", ); name = "[CP] Embed Pods Frameworks"; outputPaths = ( - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FBSnapshotTestCase.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Nimble.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FBSnapshotTestCase.framework", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -569,7 +569,7 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = ""; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -621,7 +621,7 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = ""; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; @@ -640,14 +640,14 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; DEVELOPMENT_TEAM = ""; INFOPLIST_FILE = PopupDialog/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; MODULE_NAME = ExampleApp; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE = ""; PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; @@ -661,14 +661,14 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; DEVELOPMENT_TEAM = ""; INFOPLIST_FILE = PopupDialog/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; MODULE_NAME = ExampleApp; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE = ""; PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Release; @@ -690,7 +690,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = ""; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/PopupDialog_Example.app/PopupDialog_Example"; }; name = Debug; @@ -707,7 +707,7 @@ PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = ""; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/PopupDialog_Example.app/PopupDialog_Example"; }; name = Release; @@ -728,7 +728,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; TEST_TARGET_NAME = PopupDialog_Example; }; name = Debug; @@ -746,7 +746,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "de.mwfire.PopupDialog-ExampleUITests"; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; TEST_TARGET_NAME = PopupDialog_Example; }; name = Release; diff --git a/Example/PopupDialog.xcodeproj/xcshareddata/xcschemes/PopupDialog-Example.xcscheme b/Example/PopupDialog.xcodeproj/xcshareddata/xcschemes/PopupDialog-Example.xcscheme index fe0daf5a..a9561148 100644 --- a/Example/PopupDialog.xcodeproj/xcshareddata/xcschemes/PopupDialog-Example.xcscheme +++ b/Example/PopupDialog.xcodeproj/xcshareddata/xcschemes/PopupDialog-Example.xcscheme @@ -1,6 +1,6 @@ 'MIT', :file => 'LICENSE' } @@ -8,8 +8,9 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/orderella/PopupDialog.git', :tag => s.version.to_s } s.social_media_url = 'https://twitter.com/theMWFire' - s.ios.deployment_target = '9.0' + s.ios.deployment_target = '10.0' s.source_files = 'PopupDialog/Classes/**/*' + s.swift_version = '5' s.resource_bundles = { 'PopupDialog' => ['PopupDialog/Assets/**/*'] diff --git a/PopupDialog/Classes/PopupDialog+Keyboard.swift b/PopupDialog/Classes/PopupDialog+Keyboard.swift index 5acb0eed..c1165696 100644 --- a/PopupDialog/Classes/PopupDialog+Keyboard.swift +++ b/PopupDialog/Classes/PopupDialog+Keyboard.swift @@ -33,7 +33,7 @@ extension PopupDialog { // MARK: - Keyboard & orientation observers /*! Add obserservers for UIKeyboard notifications */ - internal func addObservers() { + func addObservers() { NotificationCenter.default.addObserver(self, selector: #selector(orientationChanged), name: UIDevice.orientationDidChangeNotification, object: nil) @@ -55,7 +55,7 @@ extension PopupDialog { } /*! Remove observers */ - internal func removeObservers() { + func removeObservers() { NotificationCenter.default.removeObserver(self, name: UIDevice.orientationDidChangeNotification, object: nil) diff --git a/PopupDialog/Classes/PopupDialogDefaultViewController.swift b/PopupDialog/Classes/PopupDialogDefaultViewController.swift index 7ac9015a..cdda4111 100644 --- a/PopupDialog/Classes/PopupDialogDefaultViewController.swift +++ b/PopupDialog/Classes/PopupDialogDefaultViewController.swift @@ -44,7 +44,7 @@ public extension PopupDialogDefaultViewController { // MARK: Content /// The dialog image - public var image: UIImage? { + var image: UIImage? { get { return standardView.imageView.image } set { standardView.imageView.image = newValue @@ -53,7 +53,7 @@ public extension PopupDialogDefaultViewController { } /// The title text of the dialog - public var titleText: String? { + var titleText: String? { get { return standardView.titleLabel.text } set { standardView.titleLabel.text = newValue @@ -62,7 +62,7 @@ public extension PopupDialogDefaultViewController { } /// The message text of the dialog - public var messageText: String? { + var messageText: String? { get { return standardView.messageLabel.text } set { standardView.messageLabel.text = newValue @@ -73,7 +73,7 @@ public extension PopupDialogDefaultViewController { // MARK: Appearance /// The font and size of the title label - @objc public dynamic var titleFont: UIFont { + @objc dynamic var titleFont: UIFont { get { return standardView.titleFont } set { standardView.titleFont = newValue @@ -82,7 +82,7 @@ public extension PopupDialogDefaultViewController { } /// The color of the title label - @objc public dynamic var titleColor: UIColor? { + @objc dynamic var titleColor: UIColor? { get { return standardView.titleLabel.textColor } set { standardView.titleColor = newValue @@ -91,7 +91,7 @@ public extension PopupDialogDefaultViewController { } /// The text alignment of the title label - @objc public dynamic var titleTextAlignment: NSTextAlignment { + @objc dynamic var titleTextAlignment: NSTextAlignment { get { return standardView.titleTextAlignment } set { standardView.titleTextAlignment = newValue @@ -100,7 +100,7 @@ public extension PopupDialogDefaultViewController { } /// The font and size of the body label - @objc public dynamic var messageFont: UIFont { + @objc dynamic var messageFont: UIFont { get { return standardView.messageFont} set { standardView.messageFont = newValue @@ -109,7 +109,7 @@ public extension PopupDialogDefaultViewController { } /// The color of the message label - @objc public dynamic var messageColor: UIColor? { + @objc dynamic var messageColor: UIColor? { get { return standardView.messageColor } set { standardView.messageColor = newValue @@ -118,7 +118,7 @@ public extension PopupDialogDefaultViewController { } /// The text alignment of the message label - @objc public dynamic var messageTextAlignment: NSTextAlignment { + @objc dynamic var messageTextAlignment: NSTextAlignment { get { return standardView.messageTextAlignment } set { standardView.messageTextAlignment = newValue @@ -126,7 +126,7 @@ public extension PopupDialogDefaultViewController { } } - public override func viewDidLayoutSubviews() { + override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() standardView.imageHeightConstraint?.constant = standardView.imageView.pv_heightForImageView() } diff --git a/PopupDialog/Classes/UIImageView+Calculations.swift b/PopupDialog/Classes/UIImageView+Calculations.swift index 641cfeda..2ad91213 100755 --- a/PopupDialog/Classes/UIImageView+Calculations.swift +++ b/PopupDialog/Classes/UIImageView+Calculations.swift @@ -33,7 +33,7 @@ internal extension UIImageView { have so the image is displayed correctly - returns: Height to set on the imageView */ - internal func pv_heightForImageView() -> CGFloat { + func pv_heightForImageView() -> CGFloat { guard let image = image, image.size.height > 0 else { return 0.0 } diff --git a/PopupDialog/Classes/UIView+Animations.swift b/PopupDialog/Classes/UIView+Animations.swift index e672d8ec..68adc290 100644 --- a/PopupDialog/Classes/UIView+Animations.swift +++ b/PopupDialog/Classes/UIView+Animations.swift @@ -39,10 +39,10 @@ internal enum AnimationDirection { internal extension UIView { /// The key for the fade animation - internal var fadeKey: String { return "FadeAnimation" } - internal var shakeKey: String { return "ShakeAnimation" } + var fadeKey: String { return "FadeAnimation" } + var shakeKey: String { return "ShakeAnimation" } - internal func pv_fade(_ direction: AnimationDirection, _ value: Float, duration: CFTimeInterval = 0.08) { + func pv_fade(_ direction: AnimationDirection, _ value: Float, duration: CFTimeInterval = 0.08) { layer.removeAnimation(forKey: fadeKey) let animation = CABasicAnimation(keyPath: "opacity") animation.duration = duration @@ -52,7 +52,7 @@ internal extension UIView { layer.add(animation, forKey: fadeKey) } - internal func pv_layoutIfNeededAnimated(duration: CFTimeInterval = 0.08) { + func pv_layoutIfNeededAnimated(duration: CFTimeInterval = 0.08) { UIView.animate(withDuration: duration, delay: 0, options: UIView.AnimationOptions(), animations: { self.layoutIfNeeded() }, completion: nil) @@ -60,7 +60,7 @@ internal extension UIView { // As found at https://gist.github.com/mourad-brahim/cf0bfe9bec5f33a6ea66#file-uiview-animations-swift-L9 // Slightly modified - internal func pv_shake() { + func pv_shake() { layer.removeAnimation(forKey: shakeKey) let vals: [Double] = [-2, 2, -2, 2, 0] diff --git a/PopupDialog/Classes/UIViewController+Visibility.swift b/PopupDialog/Classes/UIViewController+Visibility.swift index 2ceb9e93..079b1ac2 100644 --- a/PopupDialog/Classes/UIViewController+Visibility.swift +++ b/PopupDialog/Classes/UIViewController+Visibility.swift @@ -29,18 +29,18 @@ import UIKit // http://stackoverflow.com/questions/2777438/how-to-tell-if-uiviewcontrollers-view-is-visible internal extension UIViewController { - internal var isTopAndVisible: Bool { + var isTopAndVisible: Bool { return isVisible && isTopViewController } - internal var isVisible: Bool { + var isVisible: Bool { if isViewLoaded { return view.window != nil } return false } - internal var isTopViewController: Bool { + var isTopViewController: Bool { if self.navigationController != nil { return self.navigationController?.visibleViewController === self } else if self.tabBarController != nil { diff --git a/README.md b/README.md index dfce074c..9831f32c 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@

 

-![Swift Version](https://img.shields.io/badge/Swift-4.2-orange.svg) +![Swift Version](https://img.shields.io/badge/Swift-5-orange.svg) [![Version](https://img.shields.io/cocoapods/v/PopupDialog.svg?style=flat)](http://cocoapods.org/pods/PopupDialog) [![License](https://img.shields.io/cocoapods/l/PopupDialog.svg?style=flat)](http://cocoapods.org/pods/PopupDialog) [![Platform](https://img.shields.io/cocoapods/p/PopupDialog.svg?style=flat)](http://cocoapods.org/pods/PopupDialog) @@ -31,13 +31,13 @@ Popup Dialog is a simple, customizable popup dialog written in Swift. - [x] Fully themeable via appearance, including fonts, colors, corner radius, shadow, overlay color and blur, etc. - [x] Can be dismissed via swipe and background tap - [x] Objective-C compatible -- [x] Works on all screens and devices supporting iOS 9.0+ +- [x] Works on all screens and devices supporting iOS 10.0+

 

# Installation -This version is Swift 4.2 compatible. For the Swift 3 version, please use [V0.5.4](https://github.com/Orderella/PopupDialog/releases/tag/0.5.4). +This version is Swift 5 compatible. For the Swift 4.2 version, please use [V1.0.0](https://github.com/Orderella/PopupDialog/releases/tag/1.0.0). ## CocoaPods @@ -47,7 +47,7 @@ PopupDialog is available through [CocoaPods](http://cocoapods.org). Simply add t use_frameworks! target '' -pod 'PopupDialog', '~> 0.9' +pod 'PopupDialog', '~> 1.1' ``` ## Carthage @@ -57,7 +57,7 @@ pod 'PopupDialog', '~> 0.9' To install, simply add the following lines to your Cartfile: ```ruby -github "Orderella/PopupDialog" ~> 0.9 +github "Orderella/PopupDialog" ~> 1.1 ``` ## Manually @@ -441,11 +441,13 @@ If you happen to use PopupDialog to validate text input, for example, you can ca # Requirements -Minimum requirement is iOS 9.0. This dialog was written with Swift 4, for support of older versions please head over to releases. +Minimum requirement is iOS 10.0. This dialog was written with Swift 5, for support of older versions please head over to releases.

 

# Changelog +* **1.1.0** Swift 5 support +* **1.0.0** Pinned Swift version to 4.2
Dropped iOS 9 support as of moving to ios-snapshot-test-case * **0.9.2** Fixes crash when presenting dialog while app is inactive * **0.9.1** Fixes Carthage support * **0.9.0** Swift 4.2 support diff --git a/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testCustomDialog_iPad11_1_768x1024@2x.png b/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testCustomDialog_iPad_11_1_768x1024.png similarity index 100% rename from Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testCustomDialog_iPad11_1_768x1024@2x.png rename to Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testCustomDialog_iPad_11_1_768x1024.png diff --git a/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testCustomDialog_iPad_11_1_768x1024@2x.png b/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testCustomDialog_iPad_11_1_768x1024@2x.png new file mode 100644 index 00000000..6a91994c Binary files /dev/null and b/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testCustomDialog_iPad_11_1_768x1024@2x.png differ diff --git a/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testCustomDialog_iPhone11_1_414x736@3x.png b/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testCustomDialog_iPhone11_1_414x736@3x.png deleted file mode 100644 index 999f01cc..00000000 Binary files a/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testCustomDialog_iPhone11_1_414x736@3x.png and /dev/null differ diff --git a/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testCustomDialog_iPhone9_2_320x568@2x.png b/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testCustomDialog_iPhone9_2_320x568@2x.png deleted file mode 100644 index 8ac19eec..00000000 Binary files a/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testCustomDialog_iPhone9_2_320x568@2x.png and /dev/null differ diff --git a/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testCustomDialog_iPhone10_2_375x667@2x.png b/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testCustomDialog_iPhone_10_2_375x667.png similarity index 100% rename from Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testCustomDialog_iPhone10_2_375x667@2x.png rename to Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testCustomDialog_iPhone_10_2_375x667.png diff --git a/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testCustomDialog_iPhone_10_2_375x667@2x.png b/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testCustomDialog_iPhone_10_2_375x667@2x.png new file mode 100644 index 00000000..26763f64 Binary files /dev/null and b/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testCustomDialog_iPhone_10_2_375x667@2x.png differ diff --git a/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testCustomDialog_iPhone_12_2_414x896.png b/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testCustomDialog_iPhone_12_2_414x896.png new file mode 100644 index 00000000..b384a819 Binary files /dev/null and b/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testCustomDialog_iPhone_12_2_414x896.png differ diff --git a/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testCustomDialog_iPhone_12_2_414x896@2x.png b/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testCustomDialog_iPhone_12_2_414x896@2x.png new file mode 100644 index 00000000..b384a819 Binary files /dev/null and b/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testCustomDialog_iPhone_12_2_414x896@2x.png differ diff --git a/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testInitialView_iPad11_1_768x1024@2x.png b/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testInitialView_iPad_11_1_768x1024.png similarity index 100% rename from Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testInitialView_iPad11_1_768x1024@2x.png rename to Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testInitialView_iPad_11_1_768x1024.png diff --git a/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testInitialView_iPad_11_1_768x1024@2x.png b/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testInitialView_iPad_11_1_768x1024@2x.png new file mode 100644 index 00000000..c829a180 Binary files /dev/null and b/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testInitialView_iPad_11_1_768x1024@2x.png differ diff --git a/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testInitialView_iPhone11_1_414x736@3x.png b/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testInitialView_iPhone11_1_414x736@3x.png deleted file mode 100644 index 7bc560d1..00000000 Binary files a/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testInitialView_iPhone11_1_414x736@3x.png and /dev/null differ diff --git a/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testInitialView_iPhone9_2_320x568@2x.png b/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testInitialView_iPhone9_2_320x568@2x.png deleted file mode 100644 index b5c05685..00000000 Binary files a/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testInitialView_iPhone9_2_320x568@2x.png and /dev/null differ diff --git a/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testInitialView_iPhone10_2_375x667@2x.png b/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testInitialView_iPhone_10_2_375x667.png similarity index 100% rename from Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testInitialView_iPhone10_2_375x667@2x.png rename to Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testInitialView_iPhone_10_2_375x667.png diff --git a/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testInitialView_iPhone_10_2_375x667@2x.png b/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testInitialView_iPhone_10_2_375x667@2x.png new file mode 100644 index 00000000..b8a623d5 Binary files /dev/null and b/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testInitialView_iPhone_10_2_375x667@2x.png differ diff --git a/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testInitialView_iPhone_12_2_414x896.png b/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testInitialView_iPhone_12_2_414x896.png new file mode 100644 index 00000000..c7dd28ee Binary files /dev/null and b/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testInitialView_iPhone_12_2_414x896.png differ diff --git a/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testInitialView_iPhone_12_2_414x896@2x.png b/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testInitialView_iPhone_12_2_414x896@2x.png new file mode 100644 index 00000000..c7dd28ee Binary files /dev/null and b/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testInitialView_iPhone_12_2_414x896@2x.png differ diff --git a/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testStandardDialogWithImage_iPad11_1_768x1024@2x.png b/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testStandardDialogWithImage_iPad_11_1_768x1024.png similarity index 100% rename from Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testStandardDialogWithImage_iPad11_1_768x1024@2x.png rename to Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testStandardDialogWithImage_iPad_11_1_768x1024.png diff --git a/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testStandardDialogWithImage_iPad_11_1_768x1024@2x.png b/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testStandardDialogWithImage_iPad_11_1_768x1024@2x.png new file mode 100644 index 00000000..1955e143 Binary files /dev/null and b/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testStandardDialogWithImage_iPad_11_1_768x1024@2x.png differ diff --git a/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testStandardDialogWithImage_iPhone11_1_414x736@3x.png b/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testStandardDialogWithImage_iPhone11_1_414x736@3x.png deleted file mode 100644 index 87d7cddb..00000000 Binary files a/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testStandardDialogWithImage_iPhone11_1_414x736@3x.png and /dev/null differ diff --git a/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testStandardDialogWithImage_iPhone9_2_320x568@2x.png b/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testStandardDialogWithImage_iPhone9_2_320x568@2x.png deleted file mode 100644 index 765577b2..00000000 Binary files a/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testStandardDialogWithImage_iPhone9_2_320x568@2x.png and /dev/null differ diff --git a/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testStandardDialogWithImage_iPhone10_2_375x667@2x.png b/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testStandardDialogWithImage_iPhone_10_2_375x667.png similarity index 100% rename from Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testStandardDialogWithImage_iPhone10_2_375x667@2x.png rename to Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testStandardDialogWithImage_iPhone_10_2_375x667.png diff --git a/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testStandardDialogWithImage_iPhone_10_2_375x667@2x.png b/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testStandardDialogWithImage_iPhone_10_2_375x667@2x.png new file mode 100644 index 00000000..9cf22e0b Binary files /dev/null and b/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testStandardDialogWithImage_iPhone_10_2_375x667@2x.png differ diff --git a/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testStandardDialogWithImage_iPhone_12_2_414x896.png b/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testStandardDialogWithImage_iPhone_12_2_414x896.png new file mode 100644 index 00000000..2f224766 Binary files /dev/null and b/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testStandardDialogWithImage_iPhone_12_2_414x896.png differ diff --git a/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testStandardDialogWithImage_iPhone_12_2_414x896@2x.png b/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testStandardDialogWithImage_iPhone_12_2_414x896@2x.png new file mode 100644 index 00000000..2f224766 Binary files /dev/null and b/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testStandardDialogWithImage_iPhone_12_2_414x896@2x.png differ diff --git a/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testStandardDialogWithoutImage_iPad11_1_768x1024@2x.png b/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testStandardDialogWithoutImage_iPad_11_1_768x1024.png similarity index 100% rename from Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testStandardDialogWithoutImage_iPad11_1_768x1024@2x.png rename to Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testStandardDialogWithoutImage_iPad_11_1_768x1024.png diff --git a/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testStandardDialogWithoutImage_iPad_11_1_768x1024@2x.png b/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testStandardDialogWithoutImage_iPad_11_1_768x1024@2x.png new file mode 100644 index 00000000..94315fad Binary files /dev/null and b/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testStandardDialogWithoutImage_iPad_11_1_768x1024@2x.png differ diff --git a/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testStandardDialogWithoutImage_iPhone11_1_414x736@3x.png b/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testStandardDialogWithoutImage_iPhone11_1_414x736@3x.png deleted file mode 100644 index c3a26c8b..00000000 Binary files a/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testStandardDialogWithoutImage_iPhone11_1_414x736@3x.png and /dev/null differ diff --git a/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testStandardDialogWithoutImage_iPhone9_2_320x568@2x.png b/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testStandardDialogWithoutImage_iPhone9_2_320x568@2x.png deleted file mode 100644 index 6eba09e2..00000000 Binary files a/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testStandardDialogWithoutImage_iPhone9_2_320x568@2x.png and /dev/null differ diff --git a/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testStandardDialogWithoutImage_iPhone10_2_375x667@2x.png b/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testStandardDialogWithoutImage_iPhone_10_2_375x667.png similarity index 100% rename from Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testStandardDialogWithoutImage_iPhone10_2_375x667@2x.png rename to Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testStandardDialogWithoutImage_iPhone_10_2_375x667.png diff --git a/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testStandardDialogWithoutImage_iPhone_10_2_375x667@2x.png b/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testStandardDialogWithoutImage_iPhone_10_2_375x667@2x.png new file mode 100644 index 00000000..ce5bfd65 Binary files /dev/null and b/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testStandardDialogWithoutImage_iPhone_10_2_375x667@2x.png differ diff --git a/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testStandardDialogWithoutImage_iPhone_12_2_414x896.png b/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testStandardDialogWithoutImage_iPhone_12_2_414x896.png new file mode 100644 index 00000000..8765da8e Binary files /dev/null and b/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testStandardDialogWithoutImage_iPhone_12_2_414x896.png differ diff --git a/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testStandardDialogWithoutImage_iPhone_12_2_414x896@2x.png b/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testStandardDialogWithoutImage_iPhone_12_2_414x896@2x.png new file mode 100644 index 00000000..8765da8e Binary files /dev/null and b/Tests/ReferenceImages_64/PopupDialog_Tests.SnapshotTests/testStandardDialogWithoutImage_iPhone_12_2_414x896@2x.png differ diff --git a/Tests/SnapshotTests.swift b/Tests/SnapshotTests.swift index 6c6e915e..54e49c76 100644 --- a/Tests/SnapshotTests.swift +++ b/Tests/SnapshotTests.swift @@ -12,7 +12,7 @@ class SnapshotTests: FBSnapshotTestCase { super.setUp() recordMode = false - isDeviceAgnostic = true + fileNameOptions = [.device, .OS, .screenSize, .screenScale] let bundle = Bundle(for: self.classForCoder) let sb = UIStoryboard(name: "Main", bundle: bundle)