diff --git a/PNChart/PNPieChart.h b/PNChart/PNPieChart.h index 20c61e29..1d1936b8 100644 --- a/PNChart/PNPieChart.h +++ b/PNChart/PNPieChart.h @@ -69,4 +69,7 @@ - (void)recompute; +/** highlight the specified item */ +- (void)highlightItemWithIndex:(NSInteger)index; + @end diff --git a/PNChart/PNPieChart.m b/PNChart/PNPieChart.m index 94e66143..00248ceb 100644 --- a/PNChart/PNPieChart.m +++ b/PNChart/PNPieChart.m @@ -317,6 +317,10 @@ - (void)didTouchAt:(CGPoint)touchLocation [self.delegate userClickedOnPieIndexItem:index]; } + [self highlightItemWithIndex:index]; +} + +- (void)highlightItemWithIndex:(NSInteger)index { if (self.shouldHighlightSectorOnTouch) { if (!self.enableMultipleSelection) @@ -345,7 +349,7 @@ - (void)didTouchAt:(CGPoint)touchLocation if (self.enableMultipleSelection) { - NSString *dictIndex = [NSString stringWithFormat:@"%d", index]; + NSString *dictIndex = [NSString stringWithFormat:@"%ld", (long)index]; CAShapeLayer *indexShape = [self.selectedItems valueForKey:dictIndex]; if (indexShape) { diff --git a/PNChartDemo.xcodeproj/project.pbxproj b/PNChartDemo.xcodeproj/project.pbxproj index 7899bef7..fde3b599 100644 --- a/PNChartDemo.xcodeproj/project.pbxproj +++ b/PNChartDemo.xcodeproj/project.pbxproj @@ -416,8 +416,6 @@ 0AF7A860182AA9F6003645C4 /* Sources */, 0AF7A861182AA9F6003645C4 /* Frameworks */, 0AF7A862182AA9F6003645C4 /* Resources */, - 7D516272BD760D57A76DAD64 /* [CP] Embed Pods Frameworks */, - 4552CFD6C9080AB9EE9E46D1 /* [CP] Copy Pods Resources */, 3ED57DE8204F0C44003D6796 /* Embed Frameworks */, ); buildRules = ( @@ -456,8 +454,6 @@ 6E984E4D1AE2AF2D00E817A0 /* Sources */, 6E984E4E1AE2AF2D00E817A0 /* Frameworks */, 6E984E4F1AE2AF2D00E817A0 /* Resources */, - 352F07839FB03B1A9D90A483 /* [CP] Embed Pods Frameworks */, - 7D8856A691FAB9EC9C672F2A /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -539,36 +535,6 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 352F07839FB03B1A9D90A483 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "[CP] Embed Pods Frameworks"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-PNChartTests/Pods-PNChartTests-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - 4552CFD6C9080AB9EE9E46D1 /* [CP] Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "[CP] Copy Pods Resources"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-PNChartDemo/Pods-PNChartDemo-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; 701E9E0847192B2A2BE3698D /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -587,36 +553,6 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - 7D516272BD760D57A76DAD64 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "[CP] Embed Pods Frameworks"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-PNChartDemo/Pods-PNChartDemo-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - 7D8856A691FAB9EC9C672F2A /* [CP] Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "[CP] Copy Pods Resources"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-PNChartTests/Pods-PNChartTests-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; FA0C39B32F296624BBDFF3E3 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; diff --git a/PNChartDemo/PCChartViewController.m b/PNChartDemo/PCChartViewController.m index 72a63c82..969240ec 100644 --- a/PNChartDemo/PCChartViewController.m +++ b/PNChartDemo/PCChartViewController.m @@ -480,4 +480,8 @@ - (IBAction)animationsSwitchChanged:(UISwitch *)sender { } } +- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { + [self.pieChart highlightItemWithIndex:2]; +} + @end diff --git a/Podfile b/Podfile index 9b393dcf..f715b700 100644 --- a/Podfile +++ b/Podfile @@ -3,7 +3,7 @@ source 'https://github.com/CocoaPods/Specs.git' platform :ios, '8.0' target :PNChartDemo do - pod 'UICountingLabel','~> 1.4.1' + pod 'UICountingLabel','~> 1.0.0' end target :PNChartTests do diff --git a/Podfile.lock b/Podfile.lock index fc7ce096..917ec699 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -1,15 +1,20 @@ PODS: - Expecta (1.0.6) - - UICountingLabel (1.4.1) + - UICountingLabel (1.0.0) DEPENDENCIES: - Expecta - - UICountingLabel (~> 1.4.1) + - UICountingLabel (~> 1.0.0) + +SPEC REPOS: + https://github.com/cocoapods/specs.git: + - Expecta + - UICountingLabel SPEC CHECKSUMS: Expecta: 3b6bd90a64b9a1dcb0b70aa0e10a7f8f631667d5 - UICountingLabel: faf890b505d96312e324a86718f031fafffb0ccb + UICountingLabel: 540feeca6bbb78be892c8ab75b6ad02313cb2b10 -PODFILE CHECKSUM: de6be598c24bcfa6bcb5d22972adde29af718156 +PODFILE CHECKSUM: e78182a4fa088d19e3151af985af1dc8a514b92a -COCOAPODS: 1.4.0 +COCOAPODS: 1.5.3 diff --git a/Pods/Expecta/Expecta/EXPBlockDefinedMatcher.h b/Pods/Expecta/Expecta/EXPBlockDefinedMatcher.h new file mode 100644 index 00000000..58b12828 --- /dev/null +++ b/Pods/Expecta/Expecta/EXPBlockDefinedMatcher.h @@ -0,0 +1,25 @@ +// +// EXPRuntimeMatcher.h +// Expecta +// +// Created by Luke Redpath on 26/03/2012. +// Copyright (c) 2012 Peter Jihoon Kim. All rights reserved. +// + +#import +#import "EXPMatcher.h" +#import "EXPDefines.h" + +@interface EXPBlockDefinedMatcher : NSObject { + EXPBoolBlock prerequisiteBlock; + EXPBoolBlock matchBlock; + EXPStringBlock failureMessageForToBlock; + EXPStringBlock failureMessageForNotToBlock; +} + +@property(nonatomic, copy) EXPBoolBlock prerequisiteBlock; +@property(nonatomic, copy) EXPBoolBlock matchBlock; +@property(nonatomic, copy) EXPStringBlock failureMessageForToBlock; +@property(nonatomic, copy) EXPStringBlock failureMessageForNotToBlock; + +@end diff --git a/Pods/Expecta/Expecta/EXPBlockDefinedMatcher.m b/Pods/Expecta/Expecta/EXPBlockDefinedMatcher.m new file mode 100644 index 00000000..89bba377 --- /dev/null +++ b/Pods/Expecta/Expecta/EXPBlockDefinedMatcher.m @@ -0,0 +1,60 @@ +// +// EXPRuntimeMatcher.m +// Expecta +// +// Created by Luke Redpath on 26/03/2012. +// Copyright (c) 2012 Peter Jihoon Kim. All rights reserved. +// + +#import "EXPBlockDefinedMatcher.h" + +@implementation EXPBlockDefinedMatcher + +- (void)dealloc +{ + self.prerequisiteBlock = nil; + self.matchBlock = nil; + self.failureMessageForToBlock = nil; + self.failureMessageForNotToBlock = nil; + + [super dealloc]; +} + +@synthesize prerequisiteBlock; +@synthesize matchBlock; +@synthesize failureMessageForToBlock; +@synthesize failureMessageForNotToBlock; + +- (BOOL)meetsPrerequesiteFor:(id)actual +{ + if (self.prerequisiteBlock) { + return self.prerequisiteBlock(); + } + return YES; +} + +- (BOOL)matches:(id)actual +{ + if (self.matchBlock) { + return self.matchBlock(); + } + return YES; +} + +- (NSString *)failureMessageForTo:(id)actual +{ + if (self.failureMessageForToBlock) { + return self.failureMessageForToBlock(); + } + return nil; +} + +- (NSString *)failureMessageForNotTo:(id)actual +{ + if (self.failureMessageForNotToBlock) { + return self.failureMessageForNotToBlock(); + } + return nil; +} + +@end diff --git a/Pods/Expecta/Expecta/EXPDefines.h b/Pods/Expecta/Expecta/EXPDefines.h new file mode 100644 index 00000000..f37f697f --- /dev/null +++ b/Pods/Expecta/Expecta/EXPDefines.h @@ -0,0 +1,17 @@ +// +// EXPDefines.h +// Expecta +// +// Created by Luke Redpath on 26/03/2012. +// Copyright (c) 2012 Peter Jihoon Kim. All rights reserved. +// + +#ifndef Expecta_EXPDefines_h +#define Expecta_EXPDefines_h + +typedef void (^EXPBasicBlock)(void); +typedef id (^EXPIdBlock)(void); +typedef BOOL (^EXPBoolBlock)(void); +typedef NSString *(^EXPStringBlock)(void); + +#endif diff --git a/Pods/Expecta/Expecta/EXPDoubleTuple.h b/Pods/Expecta/Expecta/EXPDoubleTuple.h new file mode 100644 index 00000000..4bd231c5 --- /dev/null +++ b/Pods/Expecta/Expecta/EXPDoubleTuple.h @@ -0,0 +1,13 @@ +#import + +@interface EXPDoubleTuple : NSObject { + double *_values; + size_t _size; +} + +@property (nonatomic, assign) double *values; +@property (nonatomic, assign) size_t size; + +- (instancetype)initWithDoubleValues:(double *)values size:(size_t)size NS_DESIGNATED_INITIALIZER; + +@end diff --git a/Pods/Expecta/Expecta/EXPDoubleTuple.m b/Pods/Expecta/Expecta/EXPDoubleTuple.m new file mode 100644 index 00000000..9ebef500 --- /dev/null +++ b/Pods/Expecta/Expecta/EXPDoubleTuple.m @@ -0,0 +1,45 @@ +#import "EXPDoubleTuple.h" + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wobjc-designated-initializers" +@implementation EXPDoubleTuple +#pragma clang diagnostic pop + +@synthesize values = _values, size = _size; + +- (instancetype)initWithDoubleValues:(double *)values size:(size_t)size { + if ((self = [super init])) { + self.values = malloc(sizeof(double) * size); + memcpy(self.values, values, sizeof(double) * size); + self.size = size; + } + return self; +} + +- (void)dealloc { + free(self.values); + [super dealloc]; +} + +- (BOOL)isEqual:(id)object { + if (![object isKindOfClass:[EXPDoubleTuple class]]) return NO; + EXPDoubleTuple *other = (EXPDoubleTuple *)object; + if (self.size == other.size) { + for (int i = 0; i < self.size; ++i) { + if (self.values[i] != other.values[i]) return NO; + } + return YES; + } + return NO; +} + +- (NSString *)description { + if (self.size == 2) { + return [NSString stringWithFormat:@"Double tuple: {%f, %f}", self.values[0], self.values[1]]; + } else if (self.size == 4) { + return [NSString stringWithFormat:@"Double tuple: {%f, %f, %f, %f}", self.values[0], self.values[1], self.values[2], self.values[3]]; + } + return [NSString stringWithFormat:@"Double tuple of unexpected size %zd, sadly", self.size]; +} + +@end diff --git a/Pods/Expecta/Expecta/EXPExpect.h b/Pods/Expecta/Expecta/EXPExpect.h new file mode 100644 index 00000000..985c1200 --- /dev/null +++ b/Pods/Expecta/Expecta/EXPExpect.h @@ -0,0 +1,45 @@ +#import +#import "EXPMatcher.h" +#import "EXPDefines.h" + +@interface EXPExpect : NSObject { + EXPIdBlock _actualBlock; + id _testCase; + int _lineNumber; + char *_fileName; + BOOL _negative; + BOOL _asynchronous; + NSTimeInterval _timeout; +} + +@property(nonatomic, copy) EXPIdBlock actualBlock; +@property(nonatomic, readonly) id actual; +@property(nonatomic, assign) id testCase; +@property(nonatomic) int lineNumber; +@property(nonatomic) const char *fileName; +@property(nonatomic) BOOL negative; +@property(nonatomic) BOOL asynchronous; +@property(nonatomic) NSTimeInterval timeout; + +@property(nonatomic, readonly) EXPExpect *to; +@property(nonatomic, readonly) EXPExpect *toNot; +@property(nonatomic, readonly) EXPExpect *notTo; +@property(nonatomic, readonly) EXPExpect *will; +@property(nonatomic, readonly) EXPExpect *willNot; +@property(nonatomic, readonly) EXPExpect *(^after)(NSTimeInterval timeInterval); + +- (instancetype)initWithActualBlock:(id)actualBlock testCase:(id)testCase lineNumber:(int)lineNumber fileName:(const char *)fileName NS_DESIGNATED_INITIALIZER; ++ (EXPExpect *)expectWithActualBlock:(id)actualBlock testCase:(id)testCase lineNumber:(int)lineNumber fileName:(const char *)fileName; + +- (void)applyMatcher:(id)matcher; +- (void)applyMatcher:(id)matcher to:(NSObject **)actual; + +@end + +@interface EXPDynamicPredicateMatcher : NSObject { + EXPExpect *_expectation; + SEL _selector; +} +- (instancetype)initWithExpectation:(EXPExpect *)expectation selector:(SEL)selector NS_DESIGNATED_INITIALIZER; +@property (nonatomic, readonly, copy) void (^dispatch)(void); +@end diff --git a/Pods/Expecta/Expecta/EXPExpect.m b/Pods/Expecta/Expecta/EXPExpect.m new file mode 100644 index 00000000..230e137f --- /dev/null +++ b/Pods/Expecta/Expecta/EXPExpect.m @@ -0,0 +1,221 @@ +#import "EXPExpect.h" +#import "NSObject+Expecta.h" +#import "Expecta.h" +#import "EXPUnsupportedObject.h" +#import "EXPMatcher.h" +#import "EXPBlockDefinedMatcher.h" +#import + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wobjc-designated-initializers" +@implementation EXPExpect +#pragma clang diagnostic pop + +@dynamic + actual, + to, + toNot, + notTo, + will, + willNot, + after; + +@synthesize + actualBlock=_actualBlock, + testCase=_testCase, + negative=_negative, + asynchronous=_asynchronous, + timeout=_timeout, + lineNumber=_lineNumber, + fileName=_fileName; + +- (instancetype)initWithActualBlock:(id)actualBlock testCase:(id)testCase lineNumber:(int)lineNumber fileName:(const char *)fileName { + self = [super init]; + if(self) { + self.actualBlock = actualBlock; + self.testCase = testCase; + self.negative = NO; + self.asynchronous = NO; + self.timeout = [Expecta asynchronousTestTimeout]; + self.lineNumber = lineNumber; + self.fileName = fileName; + } + return self; +} + +- (void)dealloc +{ + [_actualBlock release]; + _actualBlock = nil; + [super dealloc]; +} + ++ (EXPExpect *)expectWithActualBlock:(id)actualBlock testCase:(id)testCase lineNumber:(int)lineNumber fileName:(const char *)fileName { + return [[[EXPExpect alloc] initWithActualBlock:actualBlock testCase:(id)testCase lineNumber:lineNumber fileName:fileName] autorelease]; +} + +#pragma mark - + +- (EXPExpect *)to { + return self; +} + +- (EXPExpect *)toNot { + self.negative = !self.negative; + return self; +} + +- (EXPExpect *)notTo { + return [self toNot]; +} + +- (EXPExpect *)will { + self.asynchronous = YES; + return self; +} + +- (EXPExpect *)willNot { + return self.will.toNot; +} + +- (EXPExpect *(^)(NSTimeInterval))after +{ + EXPExpect * (^block)(NSTimeInterval) = [^EXPExpect *(NSTimeInterval timeout) { + self.asynchronous = YES; + self.timeout = timeout; + return self; + } copy]; + + return [block autorelease]; +} + +#pragma mark - + +- (id)actual { + if(self.actualBlock) { + return self.actualBlock(); + } + return nil; +} + +- (void)applyMatcher:(id)matcher +{ + id actual = [self actual]; + [self applyMatcher:matcher to:&actual]; +} + +- (void)applyMatcher:(id)matcher to:(NSObject **)actual { + if([*actual isKindOfClass:[EXPUnsupportedObject class]]) { + EXPFail(self.testCase, self.lineNumber, self.fileName, + [NSString stringWithFormat:@"expecting a %@ is not supported", ((EXPUnsupportedObject *)*actual).type]); + } else { + BOOL failed = NO; + if([matcher respondsToSelector:@selector(meetsPrerequesiteFor:)] && + ![matcher meetsPrerequesiteFor:*actual]) { + failed = YES; + } else { + BOOL matchResult = NO; + if(self.asynchronous) { + NSTimeInterval timeOut = self.timeout; + NSDate *expiryDate = [NSDate dateWithTimeIntervalSinceNow:timeOut]; + while(1) { + matchResult = [matcher matches:*actual]; + failed = self.negative ? matchResult : !matchResult; + if(!failed || ([(NSDate *)[NSDate date] compare:expiryDate] == NSOrderedDescending)) { + break; + } + [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.01]]; + OSMemoryBarrier(); + *actual = self.actual; + } + } else { + matchResult = [matcher matches:*actual]; + } + failed = self.negative ? matchResult : !matchResult; + } + if(failed) { + NSString *message = nil; + + if(self.negative) { + if ([matcher respondsToSelector:@selector(failureMessageForNotTo:)]) { + message = [matcher failureMessageForNotTo:*actual]; + } + } else { + if ([matcher respondsToSelector:@selector(failureMessageForTo:)]) { + message = [matcher failureMessageForTo:*actual]; + } + } + if (message == nil) { + message = @"Match Failed."; + } + + EXPFail(self.testCase, self.lineNumber, self.fileName, message); + } + } + self.negative = NO; +} + +#pragma mark - Dynamic predicate dispatch + +- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector +{ + if ([self.actual respondsToSelector:aSelector]) { + return [self.actual methodSignatureForSelector:aSelector]; + } + return [super methodSignatureForSelector:aSelector]; +} + +- (void)forwardInvocation:(NSInvocation *)anInvocation +{ + if ([self.actual respondsToSelector:anInvocation.selector]) { + EXPDynamicPredicateMatcher *matcher = [[EXPDynamicPredicateMatcher alloc] initWithExpectation:self selector:anInvocation.selector]; + [anInvocation setSelector:@selector(dispatch)]; + [anInvocation invokeWithTarget:matcher]; + [matcher release]; + } + else { + [super forwardInvocation:anInvocation]; + } +} + +@end + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wobjc-designated-initializers" +@implementation EXPDynamicPredicateMatcher +#pragma clang diagnostic pop + +- (instancetype)initWithExpectation:(EXPExpect *)expectation selector:(SEL)selector +{ + if ((self = [super init])) { + _expectation = expectation; + _selector = selector; + } + return self; +} + +- (BOOL)matches:(id)actual +{ + return (BOOL)[actual performSelector:_selector]; +} + +- (NSString *)failureMessageForTo:(id)actual +{ + return [NSString stringWithFormat:@"expected %@ to be true", NSStringFromSelector(_selector)]; +} + +- (NSString *)failureMessageForNotTo:(id)actual +{ + return [NSString stringWithFormat:@"expected %@ to be false", NSStringFromSelector(_selector)]; +} + +- (void (^)(void))dispatch +{ + __block id blockExpectation = _expectation; + + return [[^{ + [blockExpectation applyMatcher:self]; + } copy] autorelease]; +} + +@end diff --git a/Pods/Expecta/Expecta/EXPFloatTuple.h b/Pods/Expecta/Expecta/EXPFloatTuple.h new file mode 100644 index 00000000..ea8ee810 --- /dev/null +++ b/Pods/Expecta/Expecta/EXPFloatTuple.h @@ -0,0 +1,13 @@ +#import + +@interface EXPFloatTuple : NSObject { + float *_values; + size_t _size; +} + +@property (nonatomic, assign) float *values; +@property (nonatomic, assign) size_t size; + +- (instancetype)initWithFloatValues:(float *)values size:(size_t)size NS_DESIGNATED_INITIALIZER; + +@end diff --git a/Pods/Expecta/Expecta/EXPFloatTuple.m b/Pods/Expecta/Expecta/EXPFloatTuple.m new file mode 100644 index 00000000..b7ccf085 --- /dev/null +++ b/Pods/Expecta/Expecta/EXPFloatTuple.m @@ -0,0 +1,55 @@ +#import "EXPFloatTuple.h" + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wobjc-designated-initializers" +@implementation EXPFloatTuple +#pragma clang diagnostic pop + +@synthesize values = _values, size = _size; + +- (instancetype)initWithFloatValues:(float *)values size:(size_t)size { + if ((self = [super init])) { + self.values = malloc(sizeof(float) * size); + memcpy(self.values, values, sizeof(float) * size); + self.size = size; + } + return self; +} + +- (void)dealloc { + free(self.values); + [super dealloc]; +} + +- (BOOL)isEqual:(id)object { + if (![object isKindOfClass:[EXPFloatTuple class]]) return NO; + EXPFloatTuple *other = (EXPFloatTuple *)object; + if (self.size == other.size) { + for (int i = 0; i < self.size; ++i) { + if (self.values[i] != other.values[i]) return NO; + } + return YES; + } + return NO; +} + +- (NSUInteger)hash +{ + NSUInteger prime = 31; + NSUInteger hash = 0; + for (int i=0; i + +@protocol EXPMatcher + +- (BOOL)matches:(id)actual; + +@optional +- (BOOL)meetsPrerequesiteFor:(id)actual; +- (NSString *)failureMessageForTo:(id)actual; +- (NSString *)failureMessageForNotTo:(id)actual; + +@end diff --git a/Pods/Expecta/Expecta/EXPUnsupportedObject.h b/Pods/Expecta/Expecta/EXPUnsupportedObject.h new file mode 100644 index 00000000..3ad0561e --- /dev/null +++ b/Pods/Expecta/Expecta/EXPUnsupportedObject.h @@ -0,0 +1,11 @@ +#import + +@interface EXPUnsupportedObject : NSObject { + NSString *_type; +} + +@property (nonatomic, retain) NSString *type; + +- (instancetype)initWithType:(NSString *)type NS_DESIGNATED_INITIALIZER; + +@end diff --git a/Pods/Expecta/Expecta/EXPUnsupportedObject.m b/Pods/Expecta/Expecta/EXPUnsupportedObject.m new file mode 100644 index 00000000..3d062e3e --- /dev/null +++ b/Pods/Expecta/Expecta/EXPUnsupportedObject.m @@ -0,0 +1,23 @@ +#import "EXPUnsupportedObject.h" + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wobjc-designated-initializers" +@implementation EXPUnsupportedObject +#pragma clang diagnostic pop + +@synthesize type=_type; + +- (instancetype)initWithType:(NSString *)type { + self = [super init]; + if(self) { + self.type = type; + } + return self; +} + +- (void)dealloc { + self.type = nil; + [super dealloc]; +} + +@end diff --git a/Pods/Expecta/Expecta/Expecta.h b/Pods/Expecta/Expecta/Expecta.h new file mode 100644 index 00000000..066e9883 --- /dev/null +++ b/Pods/Expecta/Expecta/Expecta.h @@ -0,0 +1,15 @@ +#import + +//! Project version number for Expecta. +FOUNDATION_EXPORT double ExpectaVersionNumber; + +//! Project version string for Expecta. +FOUNDATION_EXPORT const unsigned char ExpectaVersionString[]; + +#import +#import +#import + +// Enable shorthand by default +#define expect(...) EXP_expect((__VA_ARGS__)) +#define failure(...) EXP_failure((__VA_ARGS__)) diff --git a/Pods/Expecta/Expecta/ExpectaObject.h b/Pods/Expecta/Expecta/ExpectaObject.h new file mode 100644 index 00000000..e4277a9a --- /dev/null +++ b/Pods/Expecta/Expecta/ExpectaObject.h @@ -0,0 +1,18 @@ +#import + +#define EXPObjectify(value) _EXPObjectify(@encode(__typeof__((value))), (value)) +#define EXP_expect(actual) _EXP_expect(self, __LINE__, __FILE__, ^id{ __typeof__((actual)) strongActual = (actual); return EXPObjectify(strongActual); }) +#define EXPMatcherInterface(matcherName, matcherArguments) _EXPMatcherInterface(matcherName, matcherArguments) +#define EXPMatcherImplementationBegin(matcherName, matcherArguments) _EXPMatcherImplementationBegin(matcherName, matcherArguments) +#define EXPMatcherImplementationEnd _EXPMatcherImplementationEnd +#define EXPMatcherAliasImplementation(newMatcherName, oldMatcherName, matcherArguments) _EXPMatcherAliasImplementation(newMatcherName, oldMatcherName, matcherArguments) + +#define EXP_failure(message) EXPFail(self, __LINE__, __FILE__, message) + + +@interface Expecta : NSObject + ++ (NSTimeInterval)asynchronousTestTimeout; ++ (void)setAsynchronousTestTimeout:(NSTimeInterval)timeout; + +@end diff --git a/Pods/Expecta/Expecta/ExpectaObject.m b/Pods/Expecta/Expecta/ExpectaObject.m new file mode 100644 index 00000000..b51e00a9 --- /dev/null +++ b/Pods/Expecta/Expecta/ExpectaObject.m @@ -0,0 +1,15 @@ +#import "ExpectaObject.h" + +@implementation Expecta + +static NSTimeInterval _asynchronousTestTimeout = 1.0; + ++ (NSTimeInterval)asynchronousTestTimeout { + return _asynchronousTestTimeout; +} + ++ (void)setAsynchronousTestTimeout:(NSTimeInterval)timeout { + _asynchronousTestTimeout = timeout; +} + +@end \ No newline at end of file diff --git a/Pods/Expecta/Expecta/ExpectaSupport.h b/Pods/Expecta/Expecta/ExpectaSupport.h new file mode 100644 index 00000000..28fc5e0e --- /dev/null +++ b/Pods/Expecta/Expecta/ExpectaSupport.h @@ -0,0 +1,74 @@ +#import "EXPExpect.h" +#import "EXPBlockDefinedMatcher.h" + +#ifdef __cplusplus +extern "C" { +#endif + +id _EXPObjectify(const char *type, ...); +EXPExpect *_EXP_expect(id testCase, int lineNumber, const char *fileName, EXPIdBlock actualBlock); + +void EXPFail(id testCase, int lineNumber, const char *fileName, NSString *message); +NSString *EXPDescribeObject(id obj); + +void EXP_prerequisite(EXPBoolBlock block); +void EXP_match(EXPBoolBlock block); +void EXP_failureMessageForTo(EXPStringBlock block); +void EXP_failureMessageForNotTo(EXPStringBlock block); + +#if __has_feature(objc_arc) +#define _EXP_release(x) +#define _EXP_autorelease(x) (x) + +#else +#define _EXP_release(x) [x release] +#define _EXP_autorelease(x) [x autorelease] +#endif + +// workaround for the categories bug: http://developer.apple.com/library/mac/#qa/qa1490/_index.html +#define EXPFixCategoriesBug(name) \ +__attribute__((constructor)) static void EXPFixCategoriesBug##name() {} + +#define _EXPMatcherInterface(matcherName, matcherArguments) \ +@interface EXPExpect (matcherName##Matcher) \ +@property (nonatomic, readonly) void(^ matcherName) matcherArguments; \ +@end + +#define _EXPMatcherImplementationBegin(matcherName, matcherArguments) \ +EXPFixCategoriesBug(EXPMatcher##matcherName##Matcher); \ +@implementation EXPExpect (matcherName##Matcher) \ +@dynamic matcherName;\ +- (void(^) matcherArguments) matcherName { \ + EXPBlockDefinedMatcher *matcher = [[EXPBlockDefinedMatcher alloc] init]; \ + [[[NSThread currentThread] threadDictionary] setObject:matcher forKey:@"EXP_currentMatcher"]; \ + __block id actual = self.actual; \ + __block void (^prerequisite)(EXPBoolBlock block) = ^(EXPBoolBlock block) { EXP_prerequisite(block); }; \ + __block void (^match)(EXPBoolBlock block) = ^(EXPBoolBlock block) { EXP_match(block); }; \ + __block void (^failureMessageForTo)(EXPStringBlock block) = ^(EXPStringBlock block) { EXP_failureMessageForTo(block); }; \ + __block void (^failureMessageForNotTo)(EXPStringBlock block) = ^(EXPStringBlock block) { EXP_failureMessageForNotTo(block); }; \ + prerequisite(nil); match(nil); failureMessageForTo(nil); failureMessageForNotTo(nil); \ + void (^matcherBlock) matcherArguments = [^ matcherArguments { \ + { + +#define _EXPMatcherImplementationEnd \ + } \ + [self applyMatcher:matcher to:&actual]; \ + [[[NSThread currentThread] threadDictionary] removeObjectForKey:@"EXP_currentMatcher"]; \ + } copy]; \ + _EXP_release(matcher); \ + return _EXP_autorelease(matcherBlock); \ +} \ +@end + +#define _EXPMatcherAliasImplementation(newMatcherName, oldMatcherName, matcherArguments) \ +EXPFixCategoriesBug(EXPMatcher##newMatcherName##Matcher); \ +@implementation EXPExpect (newMatcherName##Matcher) \ +@dynamic newMatcherName;\ +- (void(^) matcherArguments) newMatcherName { \ + return [self oldMatcherName]; \ +}\ +@end + +#ifdef __cplusplus +} +#endif diff --git a/Pods/Expecta/Expecta/ExpectaSupport.m b/Pods/Expecta/Expecta/ExpectaSupport.m new file mode 100644 index 00000000..8abe415e --- /dev/null +++ b/Pods/Expecta/Expecta/ExpectaSupport.m @@ -0,0 +1,176 @@ +#import "ExpectaSupport.h" +#import "NSValue+Expecta.h" +#import "NSObject+Expecta.h" +#import "EXPUnsupportedObject.h" +#import "EXPFloatTuple.h" +#import "EXPDoubleTuple.h" +#import "EXPDefines.h" +#import + +@interface NSObject (ExpectaXCTestRecordFailure) + +// suppress warning +- (void)recordFailureWithDescription:(NSString *)description inFile:(NSString *)filename atLine:(NSUInteger)lineNumber expected:(BOOL)expected; + +@end + +id _EXPObjectify(const char *type, ...) { + va_list v; + va_start(v, type); + id obj = nil; + if(strcmp(type, @encode(char)) == 0) { + char actual = (char)va_arg(v, int); + obj = @(actual); + } else if(strcmp(type, @encode(_Bool)) == 0) { + _Static_assert(sizeof(_Bool) <= sizeof(int), "Expected _Bool to be subject to vararg type promotion"); + _Bool actual = (_Bool)va_arg(v, int); + obj = @(actual); + } else if(strcmp(type, @encode(double)) == 0) { + double actual = (double)va_arg(v, double); + obj = @(actual); + } else if(strcmp(type, @encode(float)) == 0) { + float actual = (float)va_arg(v, double); + obj = @(actual); + } else if(strcmp(type, @encode(int)) == 0) { + int actual = (int)va_arg(v, int); + obj = @(actual); + } else if(strcmp(type, @encode(long)) == 0) { + long actual = (long)va_arg(v, long); + obj = @(actual); + } else if(strcmp(type, @encode(long long)) == 0) { + long long actual = (long long)va_arg(v, long long); + obj = @(actual); + } else if(strcmp(type, @encode(short)) == 0) { + short actual = (short)va_arg(v, int); + obj = @(actual); + } else if(strcmp(type, @encode(unsigned char)) == 0) { + unsigned char actual = (unsigned char)va_arg(v, unsigned int); + obj = @(actual); + } else if(strcmp(type, @encode(unsigned int)) == 0) { + unsigned int actual = (int)va_arg(v, unsigned int); + obj = @(actual); + } else if(strcmp(type, @encode(unsigned long)) == 0) { + unsigned long actual = (unsigned long)va_arg(v, unsigned long); + obj = @(actual); + } else if(strcmp(type, @encode(unsigned long long)) == 0) { + unsigned long long actual = (unsigned long long)va_arg(v, unsigned long long); + obj = @(actual); + } else if(strcmp(type, @encode(unsigned short)) == 0) { + unsigned short actual = (unsigned short)va_arg(v, unsigned int); + obj = @(actual); + } else if(strstr(type, @encode(EXPBasicBlock)) != NULL) { + // @encode(EXPBasicBlock) returns @? as of clang 4.1. + // This condition must occur before the test for id/class type, + // otherwise blocks will be treated as vanilla objects. + id actual = va_arg(v, EXPBasicBlock); + obj = [[actual copy] autorelease]; + } else if((strstr(type, @encode(id)) != NULL) || (strstr(type, @encode(Class)) != 0)) { + id actual = va_arg(v, id); + obj = actual; + } else if(strcmp(type, @encode(__typeof__(nil))) == 0) { + obj = nil; + } else if(strstr(type, "ff}{") != NULL) { //TODO: of course this only works for a 2x2 e.g. CGRect + obj = [[[EXPFloatTuple alloc] initWithFloatValues:(float *)va_arg(v, float[4]) size:4] autorelease]; + } else if(strstr(type, "=ff}") != NULL) { + obj = [[[EXPFloatTuple alloc] initWithFloatValues:(float *)va_arg(v, float[2]) size:2] autorelease]; + } else if(strstr(type, "=ffff}") != NULL) { + obj = [[[EXPFloatTuple alloc] initWithFloatValues:(float *)va_arg(v, float[4]) size:4] autorelease]; + } else if(strstr(type, "dd}{") != NULL) { //TODO: same here + obj = [[[EXPDoubleTuple alloc] initWithDoubleValues:(double *)va_arg(v, double[4]) size:4] autorelease]; + } else if(strstr(type, "=dd}") != NULL) { + obj = [[[EXPDoubleTuple alloc] initWithDoubleValues:(double *)va_arg(v, double[2]) size:2] autorelease]; + } else if(strstr(type, "=dddd}") != NULL) { + obj = [[[EXPDoubleTuple alloc] initWithDoubleValues:(double *)va_arg(v, double[4]) size:4] autorelease]; + } else if(type[0] == '{') { + EXPUnsupportedObject *actual = [[[EXPUnsupportedObject alloc] initWithType:@"struct"] autorelease]; + obj = actual; + } else if(type[0] == '(') { + EXPUnsupportedObject *actual = [[[EXPUnsupportedObject alloc] initWithType:@"union"] autorelease]; + obj = actual; + } else { + void *actual = va_arg(v, void *); + obj = (actual == NULL ? nil :[NSValue valueWithPointer:actual]); + } + if([obj isKindOfClass:[NSValue class]] && ![obj isKindOfClass:[NSNumber class]]) { + [(NSValue *)obj set_EXP_objCType:type]; + } + va_end(v); + return obj; +} + +EXPExpect *_EXP_expect(id testCase, int lineNumber, const char *fileName, EXPIdBlock actualBlock) { + return [EXPExpect expectWithActualBlock:actualBlock testCase:testCase lineNumber:lineNumber fileName:fileName]; +} + +void EXPFail(id testCase, int lineNumber, const char *fileName, NSString *message) { + NSLog(@"%s:%d %@", fileName, lineNumber, message); + NSString *reason = [NSString stringWithFormat:@"%s:%d %@", fileName, lineNumber, message]; + NSException *exception = [NSException exceptionWithName:@"Expecta Error" reason:reason userInfo:nil]; + + if(testCase && [testCase respondsToSelector:@selector(recordFailureWithDescription:inFile:atLine:expected:)]){ + [testCase recordFailureWithDescription:message + inFile:@(fileName) + atLine:lineNumber + expected:NO]; + } else { + [exception raise]; + } +} + +NSString *EXPDescribeObject(id obj) { + if(obj == nil) { + return @"nil/null"; + } else if([obj isKindOfClass:[NSValue class]] && ![obj isKindOfClass:[NSNumber class]]) { + const char *type = [(NSValue *)obj _EXP_objCType]; + if(type) { + if(strcmp(type, @encode(SEL)) == 0) { + return [NSString stringWithFormat:@"@selector(%@)", NSStringFromSelector([obj pointerValue])]; + } else if(strcmp(type, @encode(Class)) == 0) { + return NSStringFromClass([obj pointerValue]); + } + } + } + NSString *description = [obj description]; + if([obj isKindOfClass:[NSArray class]]) { + NSMutableArray *arr = [NSMutableArray arrayWithCapacity:[obj count]]; + for(id o in obj) { + [arr addObject:EXPDescribeObject(o)]; + } + description = [NSString stringWithFormat:@"(%@)", [arr componentsJoinedByString:@", "]]; + } else if([obj isKindOfClass:[NSSet class]] || [obj isKindOfClass:[NSOrderedSet class]]) { + NSMutableArray *arr = [NSMutableArray arrayWithCapacity:[obj count]]; + for(id o in obj) { + [arr addObject:EXPDescribeObject(o)]; + } + description = [NSString stringWithFormat:@"{(%@)}", [arr componentsJoinedByString:@", "]]; + } else if([obj isKindOfClass:[NSDictionary class]]) { + NSMutableArray *arr = [NSMutableArray arrayWithCapacity:[obj count]]; + for(id k in obj) { + id v = obj[k]; + [arr addObject:[NSString stringWithFormat:@"%@ = %@;",EXPDescribeObject(k), EXPDescribeObject(v)]]; + } + description = [NSString stringWithFormat:@"{%@}", [arr componentsJoinedByString:@" "]]; + } else if([obj isKindOfClass:[NSAttributedString class]]) { + description = [obj string]; + } else { + description = [description stringByReplacingOccurrencesOfString:@"\n" withString:@"\\n"]; + } + return description; +} + +void EXP_prerequisite(EXPBoolBlock block) { + [[[NSThread currentThread] threadDictionary][@"EXP_currentMatcher"] setPrerequisiteBlock:block]; +} + +void EXP_match(EXPBoolBlock block) { + [[[NSThread currentThread] threadDictionary][@"EXP_currentMatcher"] setMatchBlock:block]; +} + +void EXP_failureMessageForTo(EXPStringBlock block) { + [[[NSThread currentThread] threadDictionary][@"EXP_currentMatcher"] setFailureMessageForToBlock:block]; +} + +void EXP_failureMessageForNotTo(EXPStringBlock block) { + [[[NSThread currentThread] threadDictionary][@"EXP_currentMatcher"] setFailureMessageForNotToBlock:block]; +} + diff --git a/Pods/Expecta/Expecta/Matchers/EXPMatcherHelpers.h b/Pods/Expecta/Expecta/Matchers/EXPMatcherHelpers.h new file mode 100644 index 00000000..5780ff63 --- /dev/null +++ b/Pods/Expecta/Expecta/Matchers/EXPMatcherHelpers.h @@ -0,0 +1,4 @@ +#import + +BOOL EXPIsValuePointer(NSValue *value); +BOOL EXPIsNumberFloat(NSNumber *number); diff --git a/Pods/Expecta/Expecta/Matchers/EXPMatcherHelpers.m b/Pods/Expecta/Expecta/Matchers/EXPMatcherHelpers.m new file mode 100644 index 00000000..cec03434 --- /dev/null +++ b/Pods/Expecta/Expecta/Matchers/EXPMatcherHelpers.m @@ -0,0 +1,9 @@ +#import "EXPMatcherHelpers.h" + +BOOL EXPIsValuePointer(NSValue *value) { + return [value objCType][0] == @encode(void *)[0]; +} + +BOOL EXPIsNumberFloat(NSNumber *number) { + return strcmp([number objCType], @encode(float)) == 0; +} diff --git a/Pods/Expecta/Expecta/Matchers/EXPMatchers+beCloseTo.h b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beCloseTo.h new file mode 100644 index 00000000..f683d6b0 --- /dev/null +++ b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beCloseTo.h @@ -0,0 +1,7 @@ +#import "Expecta.h" + +EXPMatcherInterface(_beCloseToWithin, (id expected, id within)); +EXPMatcherInterface(beCloseToWithin, (id expected, id within)); + +#define beCloseTo(expected) _beCloseToWithin(EXPObjectify((expected)), nil) +#define beCloseToWithin(expected, range) _beCloseToWithin(EXPObjectify((expected)), EXPObjectify((range))) diff --git a/Pods/Expecta/Expecta/Matchers/EXPMatchers+beCloseTo.m b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beCloseTo.m new file mode 100644 index 00000000..c55431aa --- /dev/null +++ b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beCloseTo.m @@ -0,0 +1,49 @@ +#import "EXPMatchers+beCloseTo.h" +#import "EXPMatcherHelpers.h" + +EXPMatcherImplementationBegin(_beCloseToWithin, (id expected, id within)) { + prerequisite(^BOOL{ + return [actual isKindOfClass:[NSNumber class]] && + [expected isKindOfClass:[NSNumber class]] && + ([within isKindOfClass:[NSNumber class]] || (within == nil)); + }); + + match(^BOOL{ + double actualValue = [actual doubleValue]; + double expectedValue = [expected doubleValue]; + + if (within != nil) { + double withinValue = [within doubleValue]; + double lowerBound = expectedValue - withinValue; + double upperBound = expectedValue + withinValue; + return (actualValue >= lowerBound) && (actualValue <= upperBound); + } else { + double diff = fabs(actualValue - expectedValue); + actualValue = fabs(actualValue); + expectedValue = fabs(expectedValue); + double largest = (expectedValue > actualValue) ? expectedValue : actualValue; + return (diff <= largest * FLT_EPSILON); + } + }); + + failureMessageForTo(^NSString *{ + if (within) { + return [NSString stringWithFormat:@"expected %@ to be close to %@ within %@", + EXPDescribeObject(actual), EXPDescribeObject(expected), EXPDescribeObject(within)]; + } else { + return [NSString stringWithFormat:@"expected %@ to be close to %@", + EXPDescribeObject(actual), EXPDescribeObject(expected)]; + } + }); + + failureMessageForNotTo(^NSString *{ + if (within) { + return [NSString stringWithFormat:@"expected %@ not to be close to %@ within %@", + EXPDescribeObject(actual), EXPDescribeObject(expected), EXPDescribeObject(within)]; + } else { + return [NSString stringWithFormat:@"expected %@ not to be close to %@", + EXPDescribeObject(actual), EXPDescribeObject(expected)]; + } + }); +} +EXPMatcherImplementationEnd \ No newline at end of file diff --git a/Pods/Expecta/Expecta/Matchers/EXPMatchers+beFalsy.h b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beFalsy.h new file mode 100644 index 00000000..89c8e003 --- /dev/null +++ b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beFalsy.h @@ -0,0 +1,3 @@ +#import "Expecta.h" + +EXPMatcherInterface(beFalsy, (void)); diff --git a/Pods/Expecta/Expecta/Matchers/EXPMatchers+beFalsy.m b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beFalsy.m new file mode 100644 index 00000000..382cab8b --- /dev/null +++ b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beFalsy.m @@ -0,0 +1,24 @@ +#import "EXPMatchers+beFalsy.h" +#import "EXPMatcherHelpers.h" + +EXPMatcherImplementationBegin(beFalsy, (void)) { + match(^BOOL{ + if([actual isKindOfClass:[NSNumber class]]) { + return ![(NSNumber *)actual boolValue]; + } else if([actual isKindOfClass:[NSValue class]]) { + if(EXPIsValuePointer((NSValue *)actual)) { + return ![(NSValue *)actual pointerValue]; + } + } + return !actual; + }); + + failureMessageForTo(^NSString *{ + return [NSString stringWithFormat:@"expected: a falsy value, got: %@, which is truthy", EXPDescribeObject(actual)]; + }); + + failureMessageForNotTo(^NSString *{ + return [NSString stringWithFormat:@"expected: a non-falsy value, got: %@, which is falsy", EXPDescribeObject(actual)]; + }); +} +EXPMatcherImplementationEnd diff --git a/Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThan.h b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThan.h new file mode 100644 index 00000000..a2f9fbac --- /dev/null +++ b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThan.h @@ -0,0 +1,6 @@ +#import "Expecta.h" + +EXPMatcherInterface(_beGreaterThan, (id expected)); +EXPMatcherInterface(beGreaterThan, (id expected)); + +#define beGreaterThan(expected) _beGreaterThan(EXPObjectify((expected))) diff --git a/Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThan.m b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThan.m new file mode 100644 index 00000000..d7253878 --- /dev/null +++ b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThan.m @@ -0,0 +1,20 @@ +#import "EXPMatchers+beGreaterThan.h" +#import "EXPMatcherHelpers.h" + +EXPMatcherImplementationBegin(_beGreaterThan, (id expected)) { + match(^BOOL{ + if ([actual respondsToSelector:@selector(compare:)]) { + return [actual compare:expected] == NSOrderedDescending; + } + return NO; + }); + + failureMessageForTo(^NSString *{ + return [NSString stringWithFormat:@"expected: %@ to be greater than %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; + }); + + failureMessageForNotTo(^NSString *{ + return [NSString stringWithFormat:@"expected: %@ not to be greater than %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; + }); +} +EXPMatcherImplementationEnd \ No newline at end of file diff --git a/Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.h b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.h new file mode 100644 index 00000000..3e91c64c --- /dev/null +++ b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.h @@ -0,0 +1,6 @@ +#import "Expecta.h" + +EXPMatcherInterface(_beGreaterThanOrEqualTo, (id expected)); +EXPMatcherInterface(beGreaterThanOrEqualTo, (id expected)); + +#define beGreaterThanOrEqualTo(expected) _beGreaterThanOrEqualTo(EXPObjectify((expected))) diff --git a/Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.m b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.m new file mode 100644 index 00000000..32763449 --- /dev/null +++ b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.m @@ -0,0 +1,20 @@ +#import "EXPMatchers+beGreaterThanOrEqualTo.h" +#import "EXPMatcherHelpers.h" + +EXPMatcherImplementationBegin(_beGreaterThanOrEqualTo, (id expected)) { + match(^BOOL{ + if ([actual respondsToSelector:@selector(compare:)]) { + return [actual compare:expected] != NSOrderedAscending; + } + return NO; + }); + + failureMessageForTo(^NSString *{ + return [NSString stringWithFormat:@"expected: %@ to be greater than or equal to %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; + }); + + failureMessageForNotTo(^NSString *{ + return [NSString stringWithFormat:@"expected: %@ not to be greater than or equal to %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; + }); +} +EXPMatcherImplementationEnd \ No newline at end of file diff --git a/Pods/Expecta/Expecta/Matchers/EXPMatchers+beIdenticalTo.h b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beIdenticalTo.h new file mode 100644 index 00000000..d13619f8 --- /dev/null +++ b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beIdenticalTo.h @@ -0,0 +1,10 @@ +#import "Expecta.h" + +EXPMatcherInterface(_beIdenticalTo, (void *expected)); +EXPMatcherInterface(beIdenticalTo, (void *expected)); // to aid code completion + +#if __has_feature(objc_arc) +#define beIdenticalTo(expected) _beIdenticalTo((__bridge void*)expected) +#else +#define beIdenticalTo(expected) _beIdenticalTo(expected) +#endif diff --git a/Pods/Expecta/Expecta/Matchers/EXPMatchers+beIdenticalTo.m b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beIdenticalTo.m new file mode 100644 index 00000000..b62b0fe6 --- /dev/null +++ b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beIdenticalTo.m @@ -0,0 +1,24 @@ +#import "EXPMatchers+equal.h" +#import "EXPMatcherHelpers.h" + +EXPMatcherImplementationBegin(_beIdenticalTo, (void *expected)) { + match(^BOOL{ + if(actual == expected) { + return YES; + } else if([actual isKindOfClass:[NSValue class]] && EXPIsValuePointer((NSValue *)actual)) { + if([(NSValue *)actual pointerValue] == expected) { + return YES; + } + } + return NO; + }); + + failureMessageForTo(^NSString *{ + return [NSString stringWithFormat:@"expected: <%p>, got: <%p>", expected, actual]; + }); + + failureMessageForNotTo(^NSString *{ + return [NSString stringWithFormat:@"expected: not <%p>, got: <%p>", expected, actual]; + }); +} +EXPMatcherImplementationEnd diff --git a/Pods/Expecta/Expecta/Matchers/EXPMatchers+beInTheRangeOf.h b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beInTheRangeOf.h new file mode 100644 index 00000000..8ea990e2 --- /dev/null +++ b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beInTheRangeOf.h @@ -0,0 +1,6 @@ +#import "Expecta.h" + +EXPMatcherInterface(_beInTheRangeOf, (id expectedLowerBound, id expectedUpperBound)); +EXPMatcherInterface(beInTheRangeOf, (id expectedLowerBound, id expectedUpperBound)); + +#define beInTheRangeOf(expectedLowerBound, expectedUpperBound) _beInTheRangeOf(EXPObjectify((expectedLowerBound)), EXPObjectify((expectedUpperBound))) diff --git a/Pods/Expecta/Expecta/Matchers/EXPMatchers+beInTheRangeOf.m b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beInTheRangeOf.m new file mode 100644 index 00000000..1631f248 --- /dev/null +++ b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beInTheRangeOf.m @@ -0,0 +1,30 @@ +#import "EXPMatchers+beInTheRangeOf.h" +#import "EXPMatcherHelpers.h" + +EXPMatcherImplementationBegin(_beInTheRangeOf, (id expectedLowerBound, id expectedUpperBound)) { + match(^BOOL{ + if ([actual respondsToSelector:@selector(compare:)]) { + NSComparisonResult compareLowerBound = [expectedLowerBound compare: actual]; + NSComparisonResult compareUpperBound = [expectedUpperBound compare: actual]; + if (compareLowerBound == NSOrderedSame) { + return YES; + } + if (compareUpperBound == NSOrderedSame) { + return YES; + } + if ((compareLowerBound == NSOrderedAscending) && (compareUpperBound == NSOrderedDescending)) { + return YES; + } + } + return NO; + }); + + failureMessageForTo(^NSString *{ + return [NSString stringWithFormat:@"expected: %@ to be in the range [%@, %@] (inclusive)", EXPDescribeObject(actual), EXPDescribeObject(expectedLowerBound), EXPDescribeObject(expectedUpperBound)]; + }); + + failureMessageForNotTo(^NSString *{ + return [NSString stringWithFormat:@"expected: %@ not to be in the range [%@, %@] (inclusive)", EXPDescribeObject(actual), EXPDescribeObject(expectedLowerBound), EXPDescribeObject(expectedUpperBound)]; + }); +} +EXPMatcherImplementationEnd \ No newline at end of file diff --git a/Pods/Expecta/Expecta/Matchers/EXPMatchers+beInstanceOf.h b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beInstanceOf.h new file mode 100644 index 00000000..a8e8175d --- /dev/null +++ b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beInstanceOf.h @@ -0,0 +1,6 @@ +#import "Expecta.h" + +EXPMatcherInterface(beInstanceOf, (Class expected)); +EXPMatcherInterface(beAnInstanceOf, (Class expected)); +EXPMatcherInterface(beMemberOf, (Class expected)); +EXPMatcherInterface(beAMemberOf, (Class expected)); diff --git a/Pods/Expecta/Expecta/Matchers/EXPMatchers+beInstanceOf.m b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beInstanceOf.m new file mode 100644 index 00000000..9535e1e7 --- /dev/null +++ b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beInstanceOf.m @@ -0,0 +1,31 @@ +#import "EXPMatchers+beInstanceOf.h" + +EXPMatcherImplementationBegin(beInstanceOf, (Class expected)) { + BOOL actualIsNil = (actual == nil); + BOOL expectedIsNil = (expected == nil); + + prerequisite(^BOOL{ + return !(actualIsNil || expectedIsNil); + }); + + match(^BOOL{ + return [actual isMemberOfClass:expected]; + }); + + failureMessageForTo(^NSString *{ + if(actualIsNil) return @"the actual value is nil/null"; + if(expectedIsNil) return @"the expected value is nil/null"; + return [NSString stringWithFormat:@"expected: an instance of %@, got: an instance of %@", [expected class], [actual class]]; + }); + + failureMessageForNotTo(^NSString *{ + if(actualIsNil) return @"the actual value is nil/null"; + if(expectedIsNil) return @"the expected value is nil/null"; + return [NSString stringWithFormat:@"expected: not an instance of %@, got: an instance of %@", [expected class], [actual class]]; + }); +} +EXPMatcherImplementationEnd + +EXPMatcherAliasImplementation(beAnInstanceOf, beInstanceOf, (Class expected)); +EXPMatcherAliasImplementation(beMemberOf, beInstanceOf, (Class expected)); +EXPMatcherAliasImplementation(beAMemberOf, beInstanceOf, (Class expected)); diff --git a/Pods/Expecta/Expecta/Matchers/EXPMatchers+beKindOf.h b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beKindOf.h new file mode 100644 index 00000000..b8623e0b --- /dev/null +++ b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beKindOf.h @@ -0,0 +1,4 @@ +#import "Expecta.h" + +EXPMatcherInterface(beKindOf, (Class expected)); +EXPMatcherInterface(beAKindOf, (Class expected)); diff --git a/Pods/Expecta/Expecta/Matchers/EXPMatchers+beKindOf.m b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beKindOf.m new file mode 100644 index 00000000..f13ffb54 --- /dev/null +++ b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beKindOf.m @@ -0,0 +1,29 @@ +#import "EXPMatchers+beKindOf.h" + +EXPMatcherImplementationBegin(beKindOf, (Class expected)) { + BOOL actualIsNil = (actual == nil); + BOOL expectedIsNil = (expected == nil); + + prerequisite(^BOOL{ + return !(actualIsNil || expectedIsNil); + }); + + match(^BOOL{ + return [actual isKindOfClass:expected]; + }); + + failureMessageForTo(^NSString *{ + if(actualIsNil) return @"the actual value is nil/null"; + if(expectedIsNil) return @"the expected value is nil/null"; + return [NSString stringWithFormat:@"expected: a kind of %@, got: an instance of %@, which is not a kind of %@", [expected class], [actual class], [expected class]]; + }); + + failureMessageForNotTo(^NSString *{ + if(actualIsNil) return @"the actual value is nil/null"; + if(expectedIsNil) return @"the expected value is nil/null"; + return [NSString stringWithFormat:@"expected: not a kind of %@, got: an instance of %@, which is a kind of %@", [expected class], [actual class], [expected class]]; + }); +} +EXPMatcherImplementationEnd + +EXPMatcherAliasImplementation(beAKindOf, beKindOf, (Class expected)); diff --git a/Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThan.h b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThan.h new file mode 100644 index 00000000..5ed0a24c --- /dev/null +++ b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThan.h @@ -0,0 +1,6 @@ +#import "Expecta.h" + +EXPMatcherInterface(_beLessThan, (id expected)); +EXPMatcherInterface(beLessThan, (id expected)); + +#define beLessThan(expected) _beLessThan(EXPObjectify((expected))) diff --git a/Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThan.m b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThan.m new file mode 100644 index 00000000..39b68830 --- /dev/null +++ b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThan.m @@ -0,0 +1,20 @@ +#import "EXPMatchers+beLessThan.h" +#import "EXPMatcherHelpers.h" + +EXPMatcherImplementationBegin(_beLessThan, (id expected)) { + match(^BOOL{ + if ([actual respondsToSelector:@selector(compare:)]) { + return [actual compare:expected] == NSOrderedAscending; + } + return NO; + }); + + failureMessageForTo(^NSString *{ + return [NSString stringWithFormat:@"expected: %@ to be less than %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; + }); + + failureMessageForNotTo(^NSString *{ + return [NSString stringWithFormat:@"expected: %@ not to be less than %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; + }); +} +EXPMatcherImplementationEnd \ No newline at end of file diff --git a/Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.h b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.h new file mode 100644 index 00000000..2c313415 --- /dev/null +++ b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.h @@ -0,0 +1,6 @@ +#import "Expecta.h" + +EXPMatcherInterface(_beLessThanOrEqualTo, (id expected)); +EXPMatcherInterface(beLessThanOrEqualTo, (id expected)); + +#define beLessThanOrEqualTo(expected) _beLessThanOrEqualTo(EXPObjectify((expected))) diff --git a/Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.m b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.m new file mode 100644 index 00000000..401c194b --- /dev/null +++ b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.m @@ -0,0 +1,20 @@ +#import "EXPMatchers+beLessThanOrEqualTo.h" +#import "EXPMatcherHelpers.h" + +EXPMatcherImplementationBegin(_beLessThanOrEqualTo, (id expected)) { + match(^BOOL{ + if ([actual respondsToSelector:@selector(compare:)]) { + return [actual compare:expected] != NSOrderedDescending; + } + return NO; + }); + + failureMessageForTo(^NSString *{ + return [NSString stringWithFormat:@"expected: %@ to be less than or equal to %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; + }); + + failureMessageForNotTo(^NSString *{ + return [NSString stringWithFormat:@"expected: %@ not to be less than or equal to %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; + }); +} +EXPMatcherImplementationEnd \ No newline at end of file diff --git a/Pods/Expecta/Expecta/Matchers/EXPMatchers+beNil.h b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beNil.h new file mode 100644 index 00000000..6d781620 --- /dev/null +++ b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beNil.h @@ -0,0 +1,4 @@ +#import "Expecta.h" + +EXPMatcherInterface(beNil, (void)); +EXPMatcherInterface(beNull, (void)); diff --git a/Pods/Expecta/Expecta/Matchers/EXPMatchers+beNil.m b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beNil.m new file mode 100644 index 00000000..161067ff --- /dev/null +++ b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beNil.m @@ -0,0 +1,18 @@ +#import "EXPMatchers+beNil.h" + +EXPMatcherImplementationBegin(beNil, (void)) { + match(^BOOL{ + return actual == nil; + }); + + failureMessageForTo(^NSString *{ + return [NSString stringWithFormat:@"expected: nil/null, got: %@", EXPDescribeObject(actual)]; + }); + + failureMessageForNotTo(^NSString *{ + return [NSString stringWithFormat:@"expected: not nil/null, got: %@", EXPDescribeObject(actual)]; + }); +} +EXPMatcherImplementationEnd + +EXPMatcherAliasImplementation(beNull, beNil, (void)); diff --git a/Pods/Expecta/Expecta/Matchers/EXPMatchers+beSubclassOf.h b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beSubclassOf.h new file mode 100644 index 00000000..65401c59 --- /dev/null +++ b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beSubclassOf.h @@ -0,0 +1,4 @@ +#import "Expecta.h" + +EXPMatcherInterface(beSubclassOf, (Class expected)); +EXPMatcherInterface(beASubclassOf, (Class expected)); diff --git a/Pods/Expecta/Expecta/Matchers/EXPMatchers+beSubclassOf.m b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beSubclassOf.m new file mode 100644 index 00000000..d4976d58 --- /dev/null +++ b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beSubclassOf.m @@ -0,0 +1,29 @@ +#import "EXPMatchers+beSubclassOf.h" +#import "NSValue+Expecta.h" +#import + +EXPMatcherImplementationBegin(beSubclassOf, (Class expected)) { + __block BOOL actualIsClass = YES; + + prerequisite(^BOOL { + actualIsClass = class_isMetaClass(object_getClass(actual)); + return actualIsClass; + }); + + match(^BOOL{ + return [actual isSubclassOfClass:expected]; + }); + + failureMessageForTo(^NSString *{ + if(!actualIsClass) return @"the actual value is not a Class"; + return [NSString stringWithFormat:@"expected: a subclass of %@, got: a class %@, which is not a subclass of %@", [expected class], actual, [expected class]]; + }); + + failureMessageForNotTo(^NSString *{ + if(!actualIsClass) return @"the actual value is not a Class"; + return [NSString stringWithFormat:@"expected: not a subclass of %@, got: a class %@, which is a subclass of %@", [expected class], actual, [expected class]]; + }); +} +EXPMatcherImplementationEnd + +EXPMatcherAliasImplementation(beASubclassOf, beSubclassOf, (Class expected)); diff --git a/Pods/Expecta/Expecta/Matchers/EXPMatchers+beSupersetOf.h b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beSupersetOf.h new file mode 100644 index 00000000..f9a47ba6 --- /dev/null +++ b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beSupersetOf.h @@ -0,0 +1,4 @@ +#import "Expecta.h" + +EXPMatcherInterface(beSupersetOf, (id subset)); + diff --git a/Pods/Expecta/Expecta/Matchers/EXPMatchers+beSupersetOf.m b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beSupersetOf.m new file mode 100644 index 00000000..f4d05c09 --- /dev/null +++ b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beSupersetOf.m @@ -0,0 +1,62 @@ +#import "EXPMatchers+contain.h" + +EXPMatcherImplementationBegin(beSupersetOf, (id subset)) { + BOOL actualIsCompatible = [actual isKindOfClass:[NSDictionary class]] || [actual respondsToSelector:@selector(containsObject:)]; + BOOL subsetIsNil = (subset == nil); + + // For some instances the isKindOfClass: method returns false, even though + // they are both actually dictionaries. e.g. Comparing a NSCFDictionary and a + // NSDictionary. + // Or in cases when you compare NSMutableArray (which implementation is __NSArrayM:NSMutableArray:NSArray) + // and NSArray (which implementation is __NSArrayI:NSArray) + BOOL bothAreIdenticalCollectionClasses = ([actual isKindOfClass:[NSDictionary class]] && [subset isKindOfClass:[NSDictionary class]]) || + ([actual isKindOfClass:[NSArray class]] && [subset isKindOfClass:[NSArray class]]) || + ([actual isKindOfClass:[NSSet class]] && [subset isKindOfClass:[NSSet class]]) || + ([actual isKindOfClass:[NSOrderedSet class]] && [subset isKindOfClass:[NSOrderedSet class]]); + + BOOL classMatches = bothAreIdenticalCollectionClasses || [subset isKindOfClass:[actual class]]; + + prerequisite(^BOOL{ + return actualIsCompatible && !subsetIsNil && classMatches; + }); + + match(^BOOL{ + if(!actualIsCompatible) return NO; + + if([actual isKindOfClass:[NSDictionary class]]) { + for (id key in subset) { + id actualValue = [actual valueForKey:key]; + id subsetValue = [subset valueForKey:key]; + + if (![subsetValue isEqual:actualValue]) return NO; + } + } else { + for (id object in subset) { + if (![actual containsObject:object]) return NO; + } + } + + return YES; + }); + + failureMessageForTo(^NSString *{ + if(!actualIsCompatible) return [NSString stringWithFormat:@"%@ is not an instance of NSDictionary and does not implement -containsObject:", EXPDescribeObject(actual)]; + + if(subsetIsNil) return @"the expected value is nil/null"; + + if(!classMatches) return [NSString stringWithFormat:@"%@ does not match the class of %@", EXPDescribeObject(subset), EXPDescribeObject(actual)]; + + return [NSString stringWithFormat:@"expected %@ to be a superset of %@", EXPDescribeObject(actual), EXPDescribeObject(subset)]; + }); + + failureMessageForNotTo(^NSString *{ + if(!actualIsCompatible) return [NSString stringWithFormat:@"%@ is not an instance of NSDictionary and does not implement -containsObject:", EXPDescribeObject(actual)]; + + if(subsetIsNil) return @"the expected value is nil/null"; + + if(!classMatches) return [NSString stringWithFormat:@"%@ does not match the class of %@", EXPDescribeObject(subset), EXPDescribeObject(actual)]; + + return [NSString stringWithFormat:@"expected %@ not to be a superset of %@", EXPDescribeObject(actual), EXPDescribeObject(subset)]; + }); +} +EXPMatcherImplementationEnd diff --git a/Pods/Expecta/Expecta/Matchers/EXPMatchers+beTruthy.h b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beTruthy.h new file mode 100644 index 00000000..1e4e78f9 --- /dev/null +++ b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beTruthy.h @@ -0,0 +1,3 @@ +#import "Expecta.h" + +EXPMatcherInterface(beTruthy, (void)); diff --git a/Pods/Expecta/Expecta/Matchers/EXPMatchers+beTruthy.m b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beTruthy.m new file mode 100644 index 00000000..02fa6e79 --- /dev/null +++ b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beTruthy.m @@ -0,0 +1,24 @@ +#import "EXPMatchers+beTruthy.h" +#import "EXPMatcherHelpers.h" + +EXPMatcherImplementationBegin(beTruthy, (void)) { + match(^BOOL{ + if([actual isKindOfClass:[NSNumber class]]) { + return !![(NSNumber *)actual boolValue]; + } else if([actual isKindOfClass:[NSValue class]]) { + if(EXPIsValuePointer((NSValue *)actual)) { + return !![(NSValue *)actual pointerValue]; + } + } + return !!actual; + }); + + failureMessageForTo(^NSString *{ + return [NSString stringWithFormat:@"expected: a truthy value, got: %@, which is falsy", EXPDescribeObject(actual)]; + }); + + failureMessageForNotTo(^NSString *{ + return [NSString stringWithFormat:@"expected: a non-truthy value, got: %@, which is truthy", EXPDescribeObject(actual)]; + }); +} +EXPMatcherImplementationEnd diff --git a/Pods/Expecta/Expecta/Matchers/EXPMatchers+beginWith.h b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beginWith.h new file mode 100644 index 00000000..07ddd6c2 --- /dev/null +++ b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beginWith.h @@ -0,0 +1,4 @@ +#import "Expecta.h" + +EXPMatcherInterface(beginWith, (id expected)); +EXPMatcherInterface(startWith, (id expected)); diff --git a/Pods/Expecta/Expecta/Matchers/EXPMatchers+beginWith.m b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beginWith.m new file mode 100644 index 00000000..a7c9e599 --- /dev/null +++ b/Pods/Expecta/Expecta/Matchers/EXPMatchers+beginWith.m @@ -0,0 +1,51 @@ +#import "EXPMatchers+beginWith.h" + +EXPMatcherImplementationBegin(beginWith, (id expected)) { + BOOL actualIsNil = (actual == nil); + BOOL expectedIsNil = (expected == nil); + //This condition allows the comparison of an immutable string or ordered collection to the mutable type of the same + BOOL actualAndExpectedAreCompatible = (([actual isKindOfClass:[NSString class]] && [expected isKindOfClass:[NSString class]]) + || ([actual isKindOfClass:[NSArray class]] && [expected isKindOfClass:[NSArray class]]) + || ([actual isKindOfClass:[NSOrderedSet class]] && [expected isKindOfClass:[NSOrderedSet class]])); + + prerequisite(^BOOL { + return actualAndExpectedAreCompatible; + }); + + match(^BOOL { + if ([actual isKindOfClass:[NSString class]]) { + return [actual hasPrefix:expected]; + } else if ([actual isKindOfClass:[NSArray class]]) { + if ([expected count] > [actual count] || [expected count] == 0) { + return NO; + } + NSArray *subArray = [actual subarrayWithRange:NSMakeRange(0, [expected count])]; + return [subArray isEqualToArray:expected]; + } else { + if ([expected count] > [actual count] || [expected count] == 0) { + return NO; + } + + NSOrderedSet *subset = [NSOrderedSet orderedSetWithOrderedSet:actual range:NSMakeRange(0, [expected count]) copyItems:NO]; + return [subset isEqualToOrderedSet:expected]; + } + }); + + failureMessageForTo(^NSString *{ + if (actualIsNil) return @"the object is nil/null"; + if (expectedIsNil) return @"the expected value is nil/null"; + if (!actualAndExpectedAreCompatible) return [NSString stringWithFormat:@"%@ and %@ are not instances of one of %@, %@, or %@", EXPDescribeObject(actual), EXPDescribeObject(expected), [NSString class], [NSArray class], [NSOrderedSet class]]; + return [NSString stringWithFormat:@"expected: %@ to begin with %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; + }); + + failureMessageForNotTo(^NSString *{ + if (actualIsNil) return @"the object is nil/null"; + if (expectedIsNil) return @"the expected value is nil/null"; + if (!actualAndExpectedAreCompatible) return [NSString stringWithFormat:@"%@ and %@ are not instances of one of %@, %@, or %@", EXPDescribeObject(actual), EXPDescribeObject(expected), [NSString class], [NSArray class], [NSOrderedSet class]]; + + return [NSString stringWithFormat:@"expected: %@ not to begin with %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; + }); +} +EXPMatcherImplementationEnd + +EXPMatcherAliasImplementation(startWith, beginWith, (id expected)); diff --git a/Pods/Expecta/Expecta/Matchers/EXPMatchers+conformTo.h b/Pods/Expecta/Expecta/Matchers/EXPMatchers+conformTo.h new file mode 100644 index 00000000..efc7b982 --- /dev/null +++ b/Pods/Expecta/Expecta/Matchers/EXPMatchers+conformTo.h @@ -0,0 +1,3 @@ +#import "Expecta.h" + +EXPMatcherInterface(conformTo, (Protocol *expected)); diff --git a/Pods/Expecta/Expecta/Matchers/EXPMatchers+conformTo.m b/Pods/Expecta/Expecta/Matchers/EXPMatchers+conformTo.m new file mode 100644 index 00000000..b88014d6 --- /dev/null +++ b/Pods/Expecta/Expecta/Matchers/EXPMatchers+conformTo.m @@ -0,0 +1,33 @@ +#import "EXPMatchers+conformTo.h" +#import "NSValue+Expecta.h" +#import + +EXPMatcherImplementationBegin(conformTo, (Protocol *expected)) { + BOOL actualIsNil = (actual == nil); + BOOL expectedIsNil = (expected == nil); + + prerequisite(^BOOL{ + return !(actualIsNil || expectedIsNil); + }); + + match(^BOOL{ + return [actual conformsToProtocol:expected]; + }); + + failureMessageForTo(^NSString *{ + if(actualIsNil) return @"the object is nil/null"; + if(expectedIsNil) return @"the protocol is nil/null"; + + NSString *name = NSStringFromProtocol(expected); + return [NSString stringWithFormat:@"expected: %@ to conform to %@", actual, name]; + }); + + failureMessageForNotTo(^NSString *{ + if(actualIsNil) return @"the object is nil/null"; + if(expectedIsNil) return @"the protocol is nil/null"; + + NSString *name = NSStringFromProtocol(expected); + return [NSString stringWithFormat:@"expected: %@ not to conform to %@", actual, name]; + }); +} +EXPMatcherImplementationEnd diff --git a/Pods/Expecta/Expecta/Matchers/EXPMatchers+contain.h b/Pods/Expecta/Expecta/Matchers/EXPMatchers+contain.h new file mode 100644 index 00000000..58031461 --- /dev/null +++ b/Pods/Expecta/Expecta/Matchers/EXPMatchers+contain.h @@ -0,0 +1,5 @@ +#import "Expecta.h" + +EXPMatcherInterface(_contain, (id expected)); +EXPMatcherInterface(contain, (id expected)); // to aid code completion +#define contain(expected) _contain(EXPObjectify((expected))) diff --git a/Pods/Expecta/Expecta/Matchers/EXPMatchers+contain.m b/Pods/Expecta/Expecta/Matchers/EXPMatchers+contain.m new file mode 100644 index 00000000..b8a6f869 --- /dev/null +++ b/Pods/Expecta/Expecta/Matchers/EXPMatchers+contain.m @@ -0,0 +1,38 @@ +#import "EXPMatchers+contain.h" + +EXPMatcherImplementationBegin(_contain, (id expected)) { + BOOL actualIsCompatible = [actual isKindOfClass:[NSString class]] || [actual conformsToProtocol:@protocol(NSFastEnumeration)]; + BOOL expectedIsNil = (expected == nil); + + prerequisite(^BOOL{ + return actualIsCompatible && !expectedIsNil; + }); + + match(^BOOL{ + if(actualIsCompatible) { + if([actual isKindOfClass:[NSString class]]) { + return [(NSString *)actual rangeOfString:[expected description]].location != NSNotFound; + } else { + for (id object in actual) { + if ([object isEqual:expected]) { + return YES; + } + } + } + } + return NO; + }); + + failureMessageForTo(^NSString *{ + if(!actualIsCompatible) return [NSString stringWithFormat:@"%@ is not an instance of NSString or NSFastEnumeration", EXPDescribeObject(actual)]; + if(expectedIsNil) return @"the expected value is nil/null"; + return [NSString stringWithFormat:@"expected %@ to contain %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; + }); + + failureMessageForNotTo(^NSString *{ + if(!actualIsCompatible) return [NSString stringWithFormat:@"%@ is not an instance of NSString or NSFastEnumeration", EXPDescribeObject(actual)]; + if(expectedIsNil) return @"the expected value is nil/null"; + return [NSString stringWithFormat:@"expected %@ not to contain %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; + }); +} +EXPMatcherImplementationEnd diff --git a/Pods/Expecta/Expecta/Matchers/EXPMatchers+endWith.h b/Pods/Expecta/Expecta/Matchers/EXPMatchers+endWith.h new file mode 100644 index 00000000..228cea95 --- /dev/null +++ b/Pods/Expecta/Expecta/Matchers/EXPMatchers+endWith.h @@ -0,0 +1,3 @@ +#import "Expecta.h" + +EXPMatcherInterface(endWith, (id expected)); diff --git a/Pods/Expecta/Expecta/Matchers/EXPMatchers+endWith.m b/Pods/Expecta/Expecta/Matchers/EXPMatchers+endWith.m new file mode 100644 index 00000000..f34bd900 --- /dev/null +++ b/Pods/Expecta/Expecta/Matchers/EXPMatchers+endWith.m @@ -0,0 +1,49 @@ +#import "EXPMatchers+endWith.h" + +EXPMatcherImplementationBegin(endWith, (id expected)) { + BOOL actualIsNil = (actual == nil); + BOOL expectedIsNil = (expected == nil); + //This condition allows the comparison of an immutable string or ordered collection to the mutable type of the same + BOOL actualAndExpectedAreCompatible = (([actual isKindOfClass:[NSString class]] && [expected isKindOfClass:[NSString class]]) + || ([actual isKindOfClass:[NSArray class]] && [expected isKindOfClass:[NSArray class]]) + || ([actual isKindOfClass:[NSOrderedSet class]] && [expected isKindOfClass:[NSOrderedSet class]])); + + prerequisite(^BOOL { + return actualAndExpectedAreCompatible; + }); + + match(^BOOL { + if ([actual isKindOfClass:[NSString class]]) { + return [actual hasSuffix:expected]; + } else if ([actual isKindOfClass:[NSArray class]]) { + if ([expected count] > [actual count] || [expected count] == 0) { + return NO; + } + NSArray *subArray = [actual subarrayWithRange:NSMakeRange([actual count] - [expected count], [expected count])]; + return [subArray isEqualToArray:expected]; + } else { + if ([expected count] > [actual count] || [expected count] == 0) { + return NO; + } + + NSOrderedSet *subset = [NSOrderedSet orderedSetWithOrderedSet:actual range:NSMakeRange([actual count] - [expected count], [expected count]) copyItems:NO]; + return [subset isEqualToOrderedSet:expected]; + } + }); + + failureMessageForTo(^NSString *{ + if (actualIsNil) return @"the object is nil/null"; + if (expectedIsNil) return @"the expected value is nil/null"; + if (!actualAndExpectedAreCompatible) return [NSString stringWithFormat:@"%@ and %@ are not instances of one of %@, %@, or %@", EXPDescribeObject(actual), EXPDescribeObject(expected), [NSString class], [NSArray class], [NSOrderedSet class]]; + return [NSString stringWithFormat:@"expected: %@ to end with %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; + }); + + failureMessageForNotTo(^NSString *{ + if (actualIsNil) return @"the object is nil/null"; + if (expectedIsNil) return @"the expected value is nil/null"; + if (!actualAndExpectedAreCompatible) return [NSString stringWithFormat:@"%@ and %@ are not instances of one of %@, %@, or %@", EXPDescribeObject(actual), EXPDescribeObject(expected), [NSString class], [NSArray class], [NSOrderedSet class]]; + + return [NSString stringWithFormat:@"expected: %@ not to end with %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; + }); +} +EXPMatcherImplementationEnd diff --git a/Pods/Expecta/Expecta/Matchers/EXPMatchers+equal.h b/Pods/Expecta/Expecta/Matchers/EXPMatchers+equal.h new file mode 100644 index 00000000..b4047c0e --- /dev/null +++ b/Pods/Expecta/Expecta/Matchers/EXPMatchers+equal.h @@ -0,0 +1,5 @@ +#import "Expecta.h" + +EXPMatcherInterface(_equal, (id expected)); +EXPMatcherInterface(equal, (id expected)); // to aid code completion +#define equal(...) _equal(EXPObjectify((__VA_ARGS__))) diff --git a/Pods/Expecta/Expecta/Matchers/EXPMatchers+equal.m b/Pods/Expecta/Expecta/Matchers/EXPMatchers+equal.m new file mode 100644 index 00000000..0dc4d33d --- /dev/null +++ b/Pods/Expecta/Expecta/Matchers/EXPMatchers+equal.m @@ -0,0 +1,38 @@ +#import "EXPMatchers+equal.h" +#import "EXPMatcherHelpers.h" + +EXPMatcherImplementationBegin(_equal, (id expected)) { + match(^BOOL{ + if((actual == expected) || [actual isEqual:expected]) { + return YES; + } else if([actual isKindOfClass:[NSNumber class]] && [expected isKindOfClass:[NSNumber class]]) { + if([actual isKindOfClass:[NSDecimalNumber class]] || [expected isKindOfClass:[NSDecimalNumber class]]) { + NSDecimalNumber *actualDecimalNumber = [NSDecimalNumber decimalNumberWithDecimal:[(NSNumber *) actual decimalValue]]; + NSDecimalNumber *expectedDecimalNumber = [NSDecimalNumber decimalNumberWithDecimal:[(NSNumber *) expected decimalValue]]; + return [actualDecimalNumber isEqualToNumber:expectedDecimalNumber]; + } + else { + if(EXPIsNumberFloat((NSNumber *)actual) || EXPIsNumberFloat((NSNumber *)expected)) { + return [(NSNumber *)actual floatValue] == [(NSNumber *)expected floatValue]; + } + } + } + return NO; + }); + + failureMessageForTo(^NSString *{ + NSString *expectedDescription = EXPDescribeObject(expected); + NSString *actualDescription = EXPDescribeObject(actual); + + if (![expectedDescription isEqualToString:actualDescription]) { + return [NSString stringWithFormat:@"expected: %@, got: %@", EXPDescribeObject(expected), EXPDescribeObject(actual)]; + } else { + return [NSString stringWithFormat:@"expected (%@): %@, got (%@): %@", NSStringFromClass([expected class]), EXPDescribeObject(expected), NSStringFromClass([actual class]), EXPDescribeObject(actual)]; + } + }); + + failureMessageForNotTo(^NSString *{ + return [NSString stringWithFormat:@"expected: not %@, got: %@", EXPDescribeObject(expected), EXPDescribeObject(actual)]; + }); +} +EXPMatcherImplementationEnd diff --git a/Pods/Expecta/Expecta/Matchers/EXPMatchers+haveCountOf.h b/Pods/Expecta/Expecta/Matchers/EXPMatchers+haveCountOf.h new file mode 100644 index 00000000..2e9aef57 --- /dev/null +++ b/Pods/Expecta/Expecta/Matchers/EXPMatchers+haveCountOf.h @@ -0,0 +1,10 @@ +#import "Expecta.h" + +EXPMatcherInterface(haveCountOf, (NSUInteger expected)); +EXPMatcherInterface(haveCount, (NSUInteger expected)); +EXPMatcherInterface(haveACountOf, (NSUInteger expected)); +EXPMatcherInterface(haveLength, (NSUInteger expected)); +EXPMatcherInterface(haveLengthOf, (NSUInteger expected)); +EXPMatcherInterface(haveALengthOf, (NSUInteger expected)); + +#define beEmpty() haveCountOf(0) diff --git a/Pods/Expecta/Expecta/Matchers/EXPMatchers+haveCountOf.m b/Pods/Expecta/Expecta/Matchers/EXPMatchers+haveCountOf.m new file mode 100644 index 00000000..ecc48317 --- /dev/null +++ b/Pods/Expecta/Expecta/Matchers/EXPMatchers+haveCountOf.m @@ -0,0 +1,42 @@ +#import "EXPMatchers+haveCountOf.h" + +EXPMatcherImplementationBegin(haveCountOf, (NSUInteger expected)) { + BOOL actualIsStringy = [actual isKindOfClass:[NSString class]] || [actual isKindOfClass:[NSAttributedString class]]; + BOOL actualIsCompatible = actualIsStringy || [actual respondsToSelector:@selector(count)]; + + prerequisite(^BOOL{ + return actualIsCompatible; + }); + + NSUInteger (^count)(id) = ^(id actual) { + if(actualIsStringy) { + return [actual length]; + } else { + return [actual count]; + } + }; + + match(^BOOL{ + if(actualIsCompatible) { + return count(actual) == expected; + } + return NO; + }); + + failureMessageForTo(^NSString *{ + if(!actualIsCompatible) return [NSString stringWithFormat:@"%@ is not an instance of NSString, NSAttributedString, NSArray, NSSet, NSOrderedSet, or NSDictionary", EXPDescribeObject(actual)]; + return [NSString stringWithFormat:@"expected %@ to have a count of %zi but got %zi", EXPDescribeObject(actual), expected, count(actual)]; + }); + + failureMessageForNotTo(^NSString *{ + if(!actualIsCompatible) return [NSString stringWithFormat:@"%@ is not an instance of NSString, NSAttributedString, NSArray, NSSet, NSOrderedSet, or NSDictionary", EXPDescribeObject(actual)]; + return [NSString stringWithFormat:@"expected %@ not to have a count of %zi", EXPDescribeObject(actual), expected]; + }); +} +EXPMatcherImplementationEnd + +EXPMatcherAliasImplementation(haveCount, haveCountOf, (NSUInteger expected)); +EXPMatcherAliasImplementation(haveACountOf, haveCountOf, (NSUInteger expected)); +EXPMatcherAliasImplementation(haveLength, haveCountOf, (NSUInteger expected)); +EXPMatcherAliasImplementation(haveLengthOf, haveCountOf, (NSUInteger expected)); +EXPMatcherAliasImplementation(haveALengthOf, haveCountOf, (NSUInteger expected)); diff --git a/Pods/Expecta/Expecta/Matchers/EXPMatchers+match.h b/Pods/Expecta/Expecta/Matchers/EXPMatchers+match.h new file mode 100644 index 00000000..4f0e8e47 --- /dev/null +++ b/Pods/Expecta/Expecta/Matchers/EXPMatchers+match.h @@ -0,0 +1,3 @@ +#import "Expecta.h" + +EXPMatcherInterface(match, (NSString *expected)); diff --git a/Pods/Expecta/Expecta/Matchers/EXPMatchers+match.m b/Pods/Expecta/Expecta/Matchers/EXPMatchers+match.m new file mode 100644 index 00000000..a2174673 --- /dev/null +++ b/Pods/Expecta/Expecta/Matchers/EXPMatchers+match.m @@ -0,0 +1,38 @@ +#import "EXPMatchers+match.h" +#import "EXPMatcherHelpers.h" + +EXPMatcherImplementationBegin(match, (NSString *expected)) { + BOOL actualIsNil = (actual == nil); + BOOL expectedIsNil = (expected == nil); + + __block NSRegularExpression *regex = nil; + __block NSError *regexError = nil; + + prerequisite (^BOOL { + BOOL nilInput = (actualIsNil || expectedIsNil); + if (!nilInput) { + regex = [NSRegularExpression regularExpressionWithPattern:expected options:0 error:®exError]; + } + return !nilInput && regex; + }); + + match(^BOOL { + NSRange range = [regex rangeOfFirstMatchInString:actual options:0 range:NSMakeRange(0, [actual length])]; + return !NSEqualRanges(range, NSMakeRange(NSNotFound, 0)); + }); + + failureMessageForTo(^NSString *{ + if (actualIsNil) return @"the object is nil/null"; + if (expectedIsNil) return @"the expression is nil/null"; + if (regexError) return [NSString stringWithFormat:@"unable to create regular expression from given parameter: %@", [regexError localizedDescription]]; + return [NSString stringWithFormat:@"expected: %@ to match to %@", EXPDescribeObject(actual), expected]; + }); + + failureMessageForNotTo(^NSString *{ + if (actualIsNil) return @"the object is nil/null"; + if (expectedIsNil) return @"the expression is nil/null"; + if (regexError) return [NSString stringWithFormat:@"unable to create regular expression from given parameter: %@", [regexError localizedDescription]]; + return [NSString stringWithFormat:@"expected: %@ not to match to %@", EXPDescribeObject(actual), expected]; + }); +} +EXPMatcherImplementationEnd diff --git a/Pods/Expecta/Expecta/Matchers/EXPMatchers+postNotification.h b/Pods/Expecta/Expecta/Matchers/EXPMatchers+postNotification.h new file mode 100644 index 00000000..cdba4a34 --- /dev/null +++ b/Pods/Expecta/Expecta/Matchers/EXPMatchers+postNotification.h @@ -0,0 +1,4 @@ +#import "Expecta.h" + +EXPMatcherInterface(postNotification, (id expectedNotification)); +EXPMatcherInterface(notify, (id expectedNotification)); diff --git a/Pods/Expecta/Expecta/Matchers/EXPMatchers+postNotification.m b/Pods/Expecta/Expecta/Matchers/EXPMatchers+postNotification.m new file mode 100644 index 00000000..6e517c41 --- /dev/null +++ b/Pods/Expecta/Expecta/Matchers/EXPMatchers+postNotification.m @@ -0,0 +1,88 @@ +#import "EXPMatchers+postNotification.h" + +@implementation NSNotification (EXPEquality) + +- (BOOL)exp_isFunctionallyEqualTo:(NSNotification *)otherNotification +{ + if (![otherNotification isKindOfClass:[NSNotification class]]) return NO; + + BOOL namesMatch = [otherNotification.name isEqualToString:self.name]; + + BOOL objectsMatch = YES; + if (otherNotification.object || self.object) { + objectsMatch = [otherNotification.object isEqual:self.object]; + } + + BOOL userInfoMatches = YES; + if (otherNotification.userInfo || self.userInfo) { + userInfoMatches = [otherNotification.userInfo isEqual:self.userInfo]; + } + + return (namesMatch && objectsMatch && userInfoMatches); +} + +@end + +EXPMatcherImplementationBegin(postNotification, (id expected)){ + BOOL actualIsNil = (actual == nil); + BOOL expectedIsNil = (expected == nil); + BOOL isNotification = [expected isKindOfClass:[NSNotification class]]; + BOOL isName = [expected isKindOfClass:[NSString class]]; + + __block NSString *expectedName; + __block BOOL expectedNotificationOccurred = NO; + __block id observer; + + prerequisite(^BOOL{ + expectedNotificationOccurred = NO; + if (actualIsNil || expectedIsNil) return NO; + if (isNotification) { + expectedName = [expected name]; + }else if(isName) { + expectedName = expected; + }else{ + return NO; + } + + observer = [[NSNotificationCenter defaultCenter] addObserverForName:expectedName object:nil queue:nil usingBlock:^(NSNotification *note){ + if (isNotification) { + expectedNotificationOccurred |= [expected exp_isFunctionallyEqualTo:note]; + }else{ + expectedNotificationOccurred = YES; + } + }]; + ((EXPBasicBlock)actual)(); + return YES; + }); + + match(^BOOL{ + if(expectedNotificationOccurred) { + [[NSNotificationCenter defaultCenter] removeObserver:observer]; + } + return expectedNotificationOccurred; + }); + + failureMessageForTo(^NSString *{ + if (observer) { + [[NSNotificationCenter defaultCenter] removeObserver:observer]; + } + if(actualIsNil) return @"the actual value is nil/null"; + if(expectedIsNil) return @"the expected value is nil/null"; + if(!(isNotification || isName)) return @"the actual value is not a notification or string"; + return [NSString stringWithFormat:@"expected: %@, got: none",expectedName]; + }); + + failureMessageForNotTo(^NSString *{ + if (observer) { + [[NSNotificationCenter defaultCenter] removeObserver:observer]; + } + if(actualIsNil) return @"the actual value is nil/null"; + if(expectedIsNil) return @"the expected value is nil/null"; + if(!(isNotification || isName)) return @"the actual value is not a notification or string"; + return [NSString stringWithFormat:@"expected: none, got: %@", expectedName]; + }); +} + +EXPMatcherImplementationEnd + +EXPMatcherAliasImplementation(notify, postNotification, (id expectedNotification)) diff --git a/Pods/Expecta/Expecta/Matchers/EXPMatchers+raise.h b/Pods/Expecta/Expecta/Matchers/EXPMatchers+raise.h new file mode 100644 index 00000000..1f7fae02 --- /dev/null +++ b/Pods/Expecta/Expecta/Matchers/EXPMatchers+raise.h @@ -0,0 +1,4 @@ +#import "Expecta.h" + +EXPMatcherInterface(raise, (NSString *expectedExceptionName)); +#define raiseAny() raise(nil) diff --git a/Pods/Expecta/Expecta/Matchers/EXPMatchers+raise.m b/Pods/Expecta/Expecta/Matchers/EXPMatchers+raise.m new file mode 100644 index 00000000..26f3c55f --- /dev/null +++ b/Pods/Expecta/Expecta/Matchers/EXPMatchers+raise.m @@ -0,0 +1,30 @@ +#import "EXPMatchers+raise.h" +#import "EXPDefines.h" + +EXPMatcherImplementationBegin(raise, (NSString *expectedExceptionName)) { + __block NSException *exceptionCaught = nil; + + match(^BOOL{ + BOOL expectedExceptionCaught = NO; + @try { + ((EXPBasicBlock)actual)(); + } @catch(NSException *e) { + exceptionCaught = e; + expectedExceptionCaught = (expectedExceptionName == nil) || [[exceptionCaught name] isEqualToString:expectedExceptionName]; + } + return expectedExceptionCaught; + }); + + failureMessageForTo(^NSString *{ + return [NSString stringWithFormat:@"expected: %@, got: %@", + expectedExceptionName ? expectedExceptionName : @"any exception", + exceptionCaught ? [exceptionCaught name] : @"no exception"]; + }); + + failureMessageForNotTo(^NSString *{ + return [NSString stringWithFormat:@"expected: %@, got: %@", + expectedExceptionName ? [NSString stringWithFormat:@"not %@", expectedExceptionName] : @"no exception", + exceptionCaught ? [exceptionCaught name] : @"no exception"]; + }); +} +EXPMatcherImplementationEnd diff --git a/Pods/Expecta/Expecta/Matchers/EXPMatchers+raiseWithReason.h b/Pods/Expecta/Expecta/Matchers/EXPMatchers+raiseWithReason.h new file mode 100644 index 00000000..2cf5a5d2 --- /dev/null +++ b/Pods/Expecta/Expecta/Matchers/EXPMatchers+raiseWithReason.h @@ -0,0 +1,3 @@ +#import "Expecta.h" + +EXPMatcherInterface(raiseWithReason, (NSString *expectedExceptionName, NSString *expectedReason)); diff --git a/Pods/Expecta/Expecta/Matchers/EXPMatchers+raiseWithReason.m b/Pods/Expecta/Expecta/Matchers/EXPMatchers+raiseWithReason.m new file mode 100644 index 00000000..3943d383 --- /dev/null +++ b/Pods/Expecta/Expecta/Matchers/EXPMatchers+raiseWithReason.m @@ -0,0 +1,35 @@ +#import "EXPMatchers+raiseWithReason.h" +#import "EXPDefines.h" + +EXPMatcherImplementationBegin(raiseWithReason, (NSString *expectedExceptionName, NSString *expectedReason)) { + __block NSException *exceptionCaught = nil; + + match(^BOOL{ + BOOL expectedExceptionCaught = NO; + @try { + ((EXPBasicBlock)actual)(); + } @catch(NSException *e) { + exceptionCaught = e; + expectedExceptionCaught = (((expectedExceptionName == nil) || [[exceptionCaught name] isEqualToString:expectedExceptionName]) && + ((expectedReason == nil) || ([[exceptionCaught reason] isEqualToString:expectedReason]))); + } + return expectedExceptionCaught; + }); + + failureMessageForTo(^NSString *{ + return [NSString stringWithFormat:@"expected: %@ (%@), got: %@ (%@)", + expectedExceptionName ?: @"any exception", + expectedReason ?: @"any reason", + exceptionCaught ? [exceptionCaught name] : @"no exception", + exceptionCaught ? [exceptionCaught reason] : @""]; + }); + + failureMessageForNotTo(^NSString *{ + return [NSString stringWithFormat:@"expected: %@ (%@), got: %@ (%@)", + expectedExceptionName ? [NSString stringWithFormat:@"not %@", expectedExceptionName] : @"no exception", + expectedReason ? [NSString stringWithFormat:@"not '%@'", expectedReason] : @"no reason", + exceptionCaught ? [exceptionCaught name] : @"no exception", + exceptionCaught ? [exceptionCaught reason] : @"no reason"]; + }); +} +EXPMatcherImplementationEnd diff --git a/Pods/Expecta/Expecta/Matchers/EXPMatchers+respondTo.h b/Pods/Expecta/Expecta/Matchers/EXPMatchers+respondTo.h new file mode 100644 index 00000000..279131dd --- /dev/null +++ b/Pods/Expecta/Expecta/Matchers/EXPMatchers+respondTo.h @@ -0,0 +1,3 @@ +#import "Expecta.h" + +EXPMatcherInterface(respondTo, (SEL expected)); diff --git a/Pods/Expecta/Expecta/Matchers/EXPMatchers+respondTo.m b/Pods/Expecta/Expecta/Matchers/EXPMatchers+respondTo.m new file mode 100644 index 00000000..597aeec4 --- /dev/null +++ b/Pods/Expecta/Expecta/Matchers/EXPMatchers+respondTo.m @@ -0,0 +1,32 @@ +#import "EXPMatchers+respondTo.h" +#import "EXPMatcherHelpers.h" + +EXPMatcherImplementationBegin(respondTo, (SEL expected)) { + BOOL actualIsNil = (actual == nil); + BOOL expectedIsNull = (expected == NULL); + + prerequisite (^BOOL { + return !(actualIsNil || expectedIsNull); + }); + + match(^BOOL { + if ([actual respondsToSelector:@selector(instancesRespondToSelector:)] && + [actual instancesRespondToSelector:expected]) { + return YES; + } + return [actual respondsToSelector:expected]; + }); + + failureMessageForTo(^NSString *{ + if (actualIsNil) return @"the object is nil/null"; + if (expectedIsNull) return @"the selector is null"; + return [NSString stringWithFormat:@"expected: %@ to respond to %@", EXPDescribeObject(actual), NSStringFromSelector(expected)]; + }); + + failureMessageForNotTo(^NSString *{ + if (actualIsNil) return @"the object is nil/null"; + if (expectedIsNull) return @"the selector is null"; + return [NSString stringWithFormat:@"expected: %@ not to respond to %@", EXPDescribeObject(actual), NSStringFromSelector(expected)]; + }); +} +EXPMatcherImplementationEnd diff --git a/Pods/Expecta/Expecta/Matchers/EXPMatchers.h b/Pods/Expecta/Expecta/Matchers/EXPMatchers.h new file mode 100644 index 00000000..ed6ef85f --- /dev/null +++ b/Pods/Expecta/Expecta/Matchers/EXPMatchers.h @@ -0,0 +1,25 @@ +#import "EXPMatchers+beNil.h" +#import "EXPMatchers+equal.h" +#import "EXPMatchers+beInstanceOf.h" +#import "EXPMatchers+beKindOf.h" +#import "EXPMatchers+beSubclassOf.h" +#import "EXPMatchers+conformTo.h" +#import "EXPMatchers+beTruthy.h" +#import "EXPMatchers+beFalsy.h" +#import "EXPMatchers+contain.h" +#import "EXPMatchers+beSupersetOf.h" +#import "EXPMatchers+haveCountOf.h" +#import "EXPMatchers+beIdenticalTo.h" +#import "EXPMatchers+beGreaterThan.h" +#import "EXPMatchers+beGreaterThanOrEqualTo.h" +#import "EXPMatchers+beLessThan.h" +#import "EXPMatchers+beLessThanOrEqualTo.h" +#import "EXPMatchers+beInTheRangeOf.h" +#import "EXPMatchers+beCloseTo.h" +#import "EXPMatchers+raise.h" +#import "EXPMatchers+raiseWithReason.h" +#import "EXPMatchers+respondTo.h" +#import "EXPMatchers+postNotification.h" +#import "EXPMatchers+beginWith.h" +#import "EXPMatchers+endWith.h" +#import "EXPMatchers+match.h" diff --git a/Pods/Expecta/Expecta/NSObject+Expecta.h b/Pods/Expecta/Expecta/NSObject+Expecta.h new file mode 100644 index 00000000..5920e311 --- /dev/null +++ b/Pods/Expecta/Expecta/NSObject+Expecta.h @@ -0,0 +1,10 @@ +#import + +@interface NSObject (Expecta) + +- (void)recordFailureWithDescription:(NSString *)description + inFile:(NSString *)filename + atLine:(NSUInteger)lineNumber + expected:(BOOL)expected; + +@end diff --git a/Pods/Expecta/Expecta/NSValue+Expecta.h b/Pods/Expecta/Expecta/NSValue+Expecta.h new file mode 100644 index 00000000..e8ff6a4c --- /dev/null +++ b/Pods/Expecta/Expecta/NSValue+Expecta.h @@ -0,0 +1,7 @@ +#import + +@interface NSValue (Expecta) + +@property (nonatomic) const char *_EXP_objCType; + +@end diff --git a/Pods/Expecta/Expecta/NSValue+Expecta.m b/Pods/Expecta/Expecta/NSValue+Expecta.m new file mode 100644 index 00000000..f6609964 --- /dev/null +++ b/Pods/Expecta/Expecta/NSValue+Expecta.m @@ -0,0 +1,21 @@ +#import "NSValue+Expecta.h" +#import +#import "Expecta.h" + +EXPFixCategoriesBug(NSValue_Expecta); + +@implementation NSValue (Expecta) + +static char _EXP_typeKey; + +- (const char *)_EXP_objCType { + return [(NSString *)objc_getAssociatedObject(self, &_EXP_typeKey) cStringUsingEncoding:NSASCIIStringEncoding]; +} + +- (void)set_EXP_objCType:(const char *)_EXP_objCType { + objc_setAssociatedObject(self, &_EXP_typeKey, + @(_EXP_objCType), + OBJC_ASSOCIATION_COPY_NONATOMIC); +} + +@end diff --git a/Pods/Expecta/LICENSE b/Pods/Expecta/LICENSE new file mode 100644 index 00000000..a036c85f --- /dev/null +++ b/Pods/Expecta/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2011-2015 Specta Team - https://github.com/specta + +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/Pods/Expecta/README.md b/Pods/Expecta/README.md new file mode 100644 index 00000000..afebcf25 --- /dev/null +++ b/Pods/Expecta/README.md @@ -0,0 +1,297 @@ +# Expecta [![Build Status](http://img.shields.io/travis/specta/expecta/master.svg?style=flat)](https://travis-ci.org/specta/expecta) [![Pod Version](http://img.shields.io/cocoapods/v/Expecta.svg?style=flat)](http://cocoadocs.org/docsets/Expecta/) + +A matcher framework for Objective-C and Cocoa. + +## FEATURES + +The main advantage of using Expecta over other matcher frameworks is that you do not have to specify the data types. Also, the syntax of Expecta matchers is much more readable and does not suffer from parenthesitis. + +```objective-c +expect(@"foo").to.equal(@"foo"); // `to` is a syntactic sugar and can be safely omitted. +expect(foo).notTo.equal(1); +expect([bar isBar]).to.equal(YES); +expect(baz).to.equal(3.14159); +``` + +Expecta is framework-agnostic: it works well with XCTest and XCTest-compatible test frameworks such as [Specta](http://github.com/petejkim/specta/), or [Kiwi](https://github.com/kiwi-bdd/Kiwi/). + + +## MATCHERS + +> `expect(x).to.equal(y);` compares objects or primitives x and y and passes if they are identical (==) or equivalent isEqual:). + +> `expect(x).to.beIdenticalTo(y);` compares objects x and y and passes if they are identical and have the same memory address. + +> `expect(x).to.beNil();` passes if x is nil. + +> `expect(x).to.beTruthy();` passes if x evaluates to true (non-zero). + +> `expect(x).to.beFalsy();` passes if x evaluates to false (zero). + +> `expect(x).to.contain(y);` passes if an instance of NSArray or NSString x contains y. + +> `expect(x).to.beSupersetOf(y);` passes if an instance of NSArray, NSSet, NSDictionary or NSOrderedSet x contains all elements of y. + +> `expect(x).to.haveCountOf(y);` passes if an instance of NSArray, NSSet, NSDictionary or NSString x has a count or length of y. + +> `expect(x).to.beEmpty();` passes if an instance of NSArray, NSSet, NSDictionary or NSString x has a count or length of . + +> `expect(x).to.beInstanceOf([Foo class]);` passes if x is an instance of a class Foo. + +> `expect(x).to.beKindOf([Foo class]);` passes if x is an instance of a class Foo or if x is an instance of any class that inherits from the class Foo. + +> `expect([Foo class]).to.beSubclassOf([Bar class]);` passes if the class Foo is a subclass of the class Bar or if it is identical to the class Bar. Use beKindOf() for class clusters. + +> `expect(x).to.beLessThan(y);` passes if `x` is less than `y`. + +> `expect(x).to.beLessThanOrEqualTo(y);` passes if `x` is less than or equal to `y`. + +> `expect(x).to.beGreaterThan(y);` passes if `x` is greater than `y`. + +> `expect(x).to.beGreaterThanOrEqualTo(y);` passes if `x` is greater than or equal to `y`. + +> `expect(x).to.beInTheRangeOf(y,z);` passes if `x` is in the range of `y` and `z`. + +> `expect(x).to.beCloseTo(y);` passes if `x` is close to `y`. + +> `expect(x).to.beCloseToWithin(y, z);` passes if `x` is close to `y` within `z`. + +> `expect(^{ /* code */ }).to.raise(@"ExceptionName");` passes if a given block of code raises an exception named `ExceptionName`. + +> `expect(^{ /* code */ }).to.raiseAny();` passes if a given block of code raises any exception. + +> `expect(x).to.conformTo(y);` passes if `x` conforms to the protocol `y`. + +> `expect(x).to.respondTo(y);` passes if `x` responds to the selector `y`. + +> `expect(^{ /* code */ }).to.notify(@"NotificationName");` passes if a given block of code generates an NSNotification amed `NotificationName`. + +> `expect(^{ /* code */ }).to.notify(notification);` passes if a given block of code generates an NSNotification equal to the passed `notification`. + +> `expect(x).to.beginWith(y);` passes if an instance of NSString, NSArray, or NSOrderedSet `x` begins with `y`. Also liased by `startWith` + +> `expect(x).to.endWith(y);` passes if an instance of NSString, NSArray, or NSOrderedSet `x` ends with `y`. + +> `expect(x).to.match(y);` passes if an instance of NSString `x` matches regular expression (given as NSString) `y` one or more times. + +### Inverting Matchers + +Every matcher's criteria can be inverted by prepending `.notTo` or `.toNot`: + +>`expect(x).notTo.equal(y);` compares objects or primitives x and y and passes if they are *not* equivalent. + +### Asynchronous Testing + +Every matcher can be made to perform asynchronous testing by prepending `.will`, `.willNot` or `after(...)`: + +>`expect(x).will.beNil();` passes if x becomes nil before the default timeout. +> +>`expect(x).willNot.beNil();` passes if x becomes non-nil before the default timeout. +> +>`expect(x).after(3).to.beNil();` passes if x becoms nil after 3.0 seconds. +> +>`expect(x).after(2.5).notTo.equal(42);` passes if x doesn't equal 42 after 2.5 seconds. + +The default timeout is 1.0 second and is used for all matchers if not otherwise specified. This setting can be changed by calling `[Expecta setAsynchronousTestTimeout:x]`, where `x` is the desired timeout in seconds. + +```objective-c +describe(@"Foo", ^{ + beforeAll(^{ + // All asynchronous matching using `will` and `willNot` + // will have a timeout of 2.0 seconds + [Expecta setAsynchronousTestTimeout:2]; + }); + + it(@"will not be nil", ^{ + // Test case where default timeout is used + expect(foo).willNot.beNil(); + }); + + it(@"should equal 42 after 3 seconds", ^{ + // Signle case where timeout differs from the default + expect(foo).after(3).to.equal(42); + }); +}); +``` + +### Forced Failing + +You can fail a test by using the `failure` attribute. This can be used to test branching. + +> `failure(@"This should not happen");` outright fails a test. + + +### WRITING NEW MATCHERS + +Writing a new matcher is easy with special macros provided by Expecta. Take a look at how `.beKindOf()` matcher is defined: + +`EXPMatchers+beKindOf.h` + +```objective-c +#import "Expecta.h" + +EXPMatcherInterface(beKindOf, (Class expected)); +// 1st argument is the name of the matcher function +// 2nd argument is the list of arguments that may be passed in the function +// call. +// Multiple arguments are fine. (e.g. (int foo, float bar)) + +#define beAKindOf beKindOf +``` + +`EXPMatchers+beKindOf.m` + +```objective-c +#import "EXPMatchers+beKindOf.h" + +EXPMatcherImplementationBegin(beKindOf, (Class expected)) { + BOOL actualIsNil = (actual == nil); + BOOL expectedIsNil = (expected == nil); + + prerequisite(^BOOL { + return !(actualIsNil || expectedIsNil); + // Return `NO` if matcher should fail whether or not the result is inverted + // using `.Not`. + }); + + match(^BOOL { + return [actual isKindOfClass:expected]; + // Return `YES` if the matcher should pass, `NO` if it should not. + // The actual value/object is passed as `actual`. + // Please note that primitive values will be wrapped in NSNumber/NSValue. + }); + + failureMessageForTo(^NSString * { + if (actualIsNil) + return @"the actual value is nil/null"; + if (expectedIsNil) + return @"the expected value is nil/null"; + return [NSString + stringWithFormat:@"expected: a kind of %@, " + "got: an instance of %@, which is not a kind of %@", + [expected class], [actual class], [expected class]]; + // Return the message to be displayed when the match function returns `YES`. + }); + + failureMessageForNotTo(^NSString * { + if (actualIsNil) + return @"the actual value is nil/null"; + if (expectedIsNil) + return @"the expected value is nil/null"; + return [NSString + stringWithFormat:@"expected: not a kind of %@, " + "got: an instance of %@, which is a kind of %@", + [expected class], [actual class], [expected class]]; + // Return the message to be displayed when the match function returns `NO`. + }); +} +EXPMatcherImplementationEnd +``` + +## DYNAMIC PREDICATE MATCHERS + +It is possible to add predicate matchers by simply defining the matcher interface, with the matcher implementation being handled at runtime by delegating to the predicate method on your object. + +For instance, if you have the following class: + +```objc +@interface LightSwitch : NSObject +@property (nonatomic, assign, getter=isTurnedOn) BOOL turnedOn; +@end + +@implementation LightSwitch +@synthesize turnedOn; +@end +``` + +The normal way to write an assertion that the switch is turned on would be: + +```objc +expect([lightSwitch isTurnedOn]).to.beTruthy(); +``` + +However, if we define a custom predicate matcher: + +```objc +EXPMatcherInterface(isTurnedOn, (void)); +``` + +(Note: we haven't defined the matcher implementation, just it's interface) + +You can now write your assertion as follows: + +```objc +expect(lightSwitch).isTurnedOn(); +``` + +## INSTALLATION + +You can setup Expecta using [CocoaPods](http://github.com/CocoaPods/CocoaPods), [Carthage](https://github.com/Carthage/Carthage) or [completely manually](#setting-up-manually). + +### CocoaPods + +1. Add Expecta to your project's `Podfile`: + +```ruby +target :MyApp do +# your app dependencies + + target :MyAppTests do + inherit! search_paths + + pod 'Expecta', '~> 1.0' + end +end +``` + +### Carthage + +1. Add Expecta to your project's `Cartfile.private`: + + ```ruby + github "specta/expecta" "master" + ``` + +2. Run `carthage update` in your project directory. +3. Drag the appropriate **Expecta.framework** for your platform (located in `Carthage/Build/`) into your application’s Xcode project, and add it to your test target(s). + + +2. Run `pod update` or `pod install` in your project directory. + +### Setting Up Manually + +1. Clone Expecta from Github. +2. Run `rake` in your project directory to build the frameworks and libraries. +3. Add a Cocoa or Cocoa Touch Unit Testing Bundle target to your Xcode project if you don't already have one. +4. For **OS X projects**, copy and add `Expecta.framework` in the `Products/osx` folder to your project's test target. + + For **iOS projects**, copy and add `Expecta.framework` in the `Products/ios` folder to your project's test target. + + You can also use `libExpecta.a` if you prefer to link Expecta as a static library — iOS 7.x and below require this. + +6. Add `-ObjC` and `-all_load` to the **Other Linker Flags** build setting for the test target in your Xcode project. +7. You can now use Expecta in your test classes by adding the following import: + + ```objective-c + @import Expecta; // If you're using Expecta.framework + + // OR + + #import // If you're using the static library, or the framework + ``` + +## STATUS + +Expecta, and Specta are considered done projects, there are no plans for _active_ development on the project at the moment aside from ensuring future Xcode compatability. +Therefore it is a stable dependency, but will not be moving into the Swift world. If you are looking for that, we recommend you consider [Quick](https://github.com/quick/quick) and [Nimble](https://github.com/quick/nimble). + + +## Contribution Guidelines + +* Please use only spaces and indent 2 spaces at a time. +* Please prefix instance variable names with a single underscore (`_`). +* Please prefix custom classes and functions defined in the global scope with `EXP`. + +## License + +Copyright (c) 2012-2016 [Specta Team](https://github.com/specta?tab=members). This software is licensed under the [MIT License](http://github.com/specta/specta/raw/master/LICENSE). diff --git a/Pods/Headers/Private/Expecta/EXPBlockDefinedMatcher.h b/Pods/Headers/Private/Expecta/EXPBlockDefinedMatcher.h new file mode 120000 index 00000000..ebefa87b --- /dev/null +++ b/Pods/Headers/Private/Expecta/EXPBlockDefinedMatcher.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/EXPBlockDefinedMatcher.h \ No newline at end of file diff --git a/Pods/Headers/Private/Expecta/EXPDefines.h b/Pods/Headers/Private/Expecta/EXPDefines.h new file mode 120000 index 00000000..22add0cd --- /dev/null +++ b/Pods/Headers/Private/Expecta/EXPDefines.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/EXPDefines.h \ No newline at end of file diff --git a/Pods/Headers/Private/Expecta/EXPDoubleTuple.h b/Pods/Headers/Private/Expecta/EXPDoubleTuple.h new file mode 120000 index 00000000..54aa0b5e --- /dev/null +++ b/Pods/Headers/Private/Expecta/EXPDoubleTuple.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/EXPDoubleTuple.h \ No newline at end of file diff --git a/Pods/Headers/Private/Expecta/EXPExpect.h b/Pods/Headers/Private/Expecta/EXPExpect.h new file mode 120000 index 00000000..a677bddf --- /dev/null +++ b/Pods/Headers/Private/Expecta/EXPExpect.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/EXPExpect.h \ No newline at end of file diff --git a/Pods/Headers/Private/Expecta/EXPFloatTuple.h b/Pods/Headers/Private/Expecta/EXPFloatTuple.h new file mode 120000 index 00000000..2b405694 --- /dev/null +++ b/Pods/Headers/Private/Expecta/EXPFloatTuple.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/EXPFloatTuple.h \ No newline at end of file diff --git a/Pods/Headers/Private/Expecta/EXPMatcher.h b/Pods/Headers/Private/Expecta/EXPMatcher.h new file mode 120000 index 00000000..3b20a122 --- /dev/null +++ b/Pods/Headers/Private/Expecta/EXPMatcher.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/EXPMatcher.h \ No newline at end of file diff --git a/Pods/Headers/Private/Expecta/EXPMatcherHelpers.h b/Pods/Headers/Private/Expecta/EXPMatcherHelpers.h new file mode 120000 index 00000000..697385b0 --- /dev/null +++ b/Pods/Headers/Private/Expecta/EXPMatcherHelpers.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatcherHelpers.h \ No newline at end of file diff --git a/Pods/Headers/Private/Expecta/EXPMatchers+beCloseTo.h b/Pods/Headers/Private/Expecta/EXPMatchers+beCloseTo.h new file mode 120000 index 00000000..0eed377c --- /dev/null +++ b/Pods/Headers/Private/Expecta/EXPMatchers+beCloseTo.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beCloseTo.h \ No newline at end of file diff --git a/Pods/Headers/Private/Expecta/EXPMatchers+beFalsy.h b/Pods/Headers/Private/Expecta/EXPMatchers+beFalsy.h new file mode 120000 index 00000000..92643c49 --- /dev/null +++ b/Pods/Headers/Private/Expecta/EXPMatchers+beFalsy.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beFalsy.h \ No newline at end of file diff --git a/Pods/Headers/Private/Expecta/EXPMatchers+beGreaterThan.h b/Pods/Headers/Private/Expecta/EXPMatchers+beGreaterThan.h new file mode 120000 index 00000000..1ccc62b4 --- /dev/null +++ b/Pods/Headers/Private/Expecta/EXPMatchers+beGreaterThan.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beGreaterThan.h \ No newline at end of file diff --git a/Pods/Headers/Private/Expecta/EXPMatchers+beGreaterThanOrEqualTo.h b/Pods/Headers/Private/Expecta/EXPMatchers+beGreaterThanOrEqualTo.h new file mode 120000 index 00000000..db5bf966 --- /dev/null +++ b/Pods/Headers/Private/Expecta/EXPMatchers+beGreaterThanOrEqualTo.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.h \ No newline at end of file diff --git a/Pods/Headers/Private/Expecta/EXPMatchers+beIdenticalTo.h b/Pods/Headers/Private/Expecta/EXPMatchers+beIdenticalTo.h new file mode 120000 index 00000000..6e17ea43 --- /dev/null +++ b/Pods/Headers/Private/Expecta/EXPMatchers+beIdenticalTo.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beIdenticalTo.h \ No newline at end of file diff --git a/Pods/Headers/Private/Expecta/EXPMatchers+beInTheRangeOf.h b/Pods/Headers/Private/Expecta/EXPMatchers+beInTheRangeOf.h new file mode 120000 index 00000000..362d8a7f --- /dev/null +++ b/Pods/Headers/Private/Expecta/EXPMatchers+beInTheRangeOf.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beInTheRangeOf.h \ No newline at end of file diff --git a/Pods/Headers/Private/Expecta/EXPMatchers+beInstanceOf.h b/Pods/Headers/Private/Expecta/EXPMatchers+beInstanceOf.h new file mode 120000 index 00000000..4dd60632 --- /dev/null +++ b/Pods/Headers/Private/Expecta/EXPMatchers+beInstanceOf.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beInstanceOf.h \ No newline at end of file diff --git a/Pods/Headers/Private/Expecta/EXPMatchers+beKindOf.h b/Pods/Headers/Private/Expecta/EXPMatchers+beKindOf.h new file mode 120000 index 00000000..113c7d37 --- /dev/null +++ b/Pods/Headers/Private/Expecta/EXPMatchers+beKindOf.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beKindOf.h \ No newline at end of file diff --git a/Pods/Headers/Private/Expecta/EXPMatchers+beLessThan.h b/Pods/Headers/Private/Expecta/EXPMatchers+beLessThan.h new file mode 120000 index 00000000..675e86a5 --- /dev/null +++ b/Pods/Headers/Private/Expecta/EXPMatchers+beLessThan.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beLessThan.h \ No newline at end of file diff --git a/Pods/Headers/Private/Expecta/EXPMatchers+beLessThanOrEqualTo.h b/Pods/Headers/Private/Expecta/EXPMatchers+beLessThanOrEqualTo.h new file mode 120000 index 00000000..c16df2f0 --- /dev/null +++ b/Pods/Headers/Private/Expecta/EXPMatchers+beLessThanOrEqualTo.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.h \ No newline at end of file diff --git a/Pods/Headers/Private/Expecta/EXPMatchers+beNil.h b/Pods/Headers/Private/Expecta/EXPMatchers+beNil.h new file mode 120000 index 00000000..9f65a6c1 --- /dev/null +++ b/Pods/Headers/Private/Expecta/EXPMatchers+beNil.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beNil.h \ No newline at end of file diff --git a/Pods/Headers/Private/Expecta/EXPMatchers+beSubclassOf.h b/Pods/Headers/Private/Expecta/EXPMatchers+beSubclassOf.h new file mode 120000 index 00000000..27aa7bea --- /dev/null +++ b/Pods/Headers/Private/Expecta/EXPMatchers+beSubclassOf.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beSubclassOf.h \ No newline at end of file diff --git a/Pods/Headers/Private/Expecta/EXPMatchers+beSupersetOf.h b/Pods/Headers/Private/Expecta/EXPMatchers+beSupersetOf.h new file mode 120000 index 00000000..ea3f770a --- /dev/null +++ b/Pods/Headers/Private/Expecta/EXPMatchers+beSupersetOf.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beSupersetOf.h \ No newline at end of file diff --git a/Pods/Headers/Private/Expecta/EXPMatchers+beTruthy.h b/Pods/Headers/Private/Expecta/EXPMatchers+beTruthy.h new file mode 120000 index 00000000..192ac764 --- /dev/null +++ b/Pods/Headers/Private/Expecta/EXPMatchers+beTruthy.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beTruthy.h \ No newline at end of file diff --git a/Pods/Headers/Private/Expecta/EXPMatchers+beginWith.h b/Pods/Headers/Private/Expecta/EXPMatchers+beginWith.h new file mode 120000 index 00000000..2efba8fe --- /dev/null +++ b/Pods/Headers/Private/Expecta/EXPMatchers+beginWith.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beginWith.h \ No newline at end of file diff --git a/Pods/Headers/Private/Expecta/EXPMatchers+conformTo.h b/Pods/Headers/Private/Expecta/EXPMatchers+conformTo.h new file mode 120000 index 00000000..062fb51d --- /dev/null +++ b/Pods/Headers/Private/Expecta/EXPMatchers+conformTo.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+conformTo.h \ No newline at end of file diff --git a/Pods/Headers/Private/Expecta/EXPMatchers+contain.h b/Pods/Headers/Private/Expecta/EXPMatchers+contain.h new file mode 120000 index 00000000..3661fe5f --- /dev/null +++ b/Pods/Headers/Private/Expecta/EXPMatchers+contain.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+contain.h \ No newline at end of file diff --git a/Pods/Headers/Private/Expecta/EXPMatchers+endWith.h b/Pods/Headers/Private/Expecta/EXPMatchers+endWith.h new file mode 120000 index 00000000..7e6c9cf1 --- /dev/null +++ b/Pods/Headers/Private/Expecta/EXPMatchers+endWith.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+endWith.h \ No newline at end of file diff --git a/Pods/Headers/Private/Expecta/EXPMatchers+equal.h b/Pods/Headers/Private/Expecta/EXPMatchers+equal.h new file mode 120000 index 00000000..7bee7886 --- /dev/null +++ b/Pods/Headers/Private/Expecta/EXPMatchers+equal.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+equal.h \ No newline at end of file diff --git a/Pods/Headers/Private/Expecta/EXPMatchers+haveCountOf.h b/Pods/Headers/Private/Expecta/EXPMatchers+haveCountOf.h new file mode 120000 index 00000000..f46d23ad --- /dev/null +++ b/Pods/Headers/Private/Expecta/EXPMatchers+haveCountOf.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+haveCountOf.h \ No newline at end of file diff --git a/Pods/Headers/Private/Expecta/EXPMatchers+match.h b/Pods/Headers/Private/Expecta/EXPMatchers+match.h new file mode 120000 index 00000000..18f995de --- /dev/null +++ b/Pods/Headers/Private/Expecta/EXPMatchers+match.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+match.h \ No newline at end of file diff --git a/Pods/Headers/Private/Expecta/EXPMatchers+postNotification.h b/Pods/Headers/Private/Expecta/EXPMatchers+postNotification.h new file mode 120000 index 00000000..c9422e3e --- /dev/null +++ b/Pods/Headers/Private/Expecta/EXPMatchers+postNotification.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+postNotification.h \ No newline at end of file diff --git a/Pods/Headers/Private/Expecta/EXPMatchers+raise.h b/Pods/Headers/Private/Expecta/EXPMatchers+raise.h new file mode 120000 index 00000000..901e04c1 --- /dev/null +++ b/Pods/Headers/Private/Expecta/EXPMatchers+raise.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+raise.h \ No newline at end of file diff --git a/Pods/Headers/Private/Expecta/EXPMatchers+raiseWithReason.h b/Pods/Headers/Private/Expecta/EXPMatchers+raiseWithReason.h new file mode 120000 index 00000000..5b063b64 --- /dev/null +++ b/Pods/Headers/Private/Expecta/EXPMatchers+raiseWithReason.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+raiseWithReason.h \ No newline at end of file diff --git a/Pods/Headers/Private/Expecta/EXPMatchers+respondTo.h b/Pods/Headers/Private/Expecta/EXPMatchers+respondTo.h new file mode 120000 index 00000000..e7a5fad1 --- /dev/null +++ b/Pods/Headers/Private/Expecta/EXPMatchers+respondTo.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+respondTo.h \ No newline at end of file diff --git a/Pods/Headers/Private/Expecta/EXPMatchers.h b/Pods/Headers/Private/Expecta/EXPMatchers.h new file mode 120000 index 00000000..a454dc40 --- /dev/null +++ b/Pods/Headers/Private/Expecta/EXPMatchers.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers.h \ No newline at end of file diff --git a/Pods/Headers/Private/Expecta/EXPUnsupportedObject.h b/Pods/Headers/Private/Expecta/EXPUnsupportedObject.h new file mode 120000 index 00000000..60fae89f --- /dev/null +++ b/Pods/Headers/Private/Expecta/EXPUnsupportedObject.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/EXPUnsupportedObject.h \ No newline at end of file diff --git a/Pods/Headers/Private/Expecta/Expecta.h b/Pods/Headers/Private/Expecta/Expecta.h new file mode 120000 index 00000000..45ef877d --- /dev/null +++ b/Pods/Headers/Private/Expecta/Expecta.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Expecta.h \ No newline at end of file diff --git a/Pods/Headers/Private/Expecta/ExpectaObject.h b/Pods/Headers/Private/Expecta/ExpectaObject.h new file mode 120000 index 00000000..36a99e13 --- /dev/null +++ b/Pods/Headers/Private/Expecta/ExpectaObject.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/ExpectaObject.h \ No newline at end of file diff --git a/Pods/Headers/Private/Expecta/ExpectaSupport.h b/Pods/Headers/Private/Expecta/ExpectaSupport.h new file mode 120000 index 00000000..c59d3fc6 --- /dev/null +++ b/Pods/Headers/Private/Expecta/ExpectaSupport.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/ExpectaSupport.h \ No newline at end of file diff --git a/Pods/Headers/Private/Expecta/NSObject+Expecta.h b/Pods/Headers/Private/Expecta/NSObject+Expecta.h new file mode 120000 index 00000000..55c3635a --- /dev/null +++ b/Pods/Headers/Private/Expecta/NSObject+Expecta.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/NSObject+Expecta.h \ No newline at end of file diff --git a/Pods/Headers/Private/Expecta/NSValue+Expecta.h b/Pods/Headers/Private/Expecta/NSValue+Expecta.h new file mode 120000 index 00000000..ee557b84 --- /dev/null +++ b/Pods/Headers/Private/Expecta/NSValue+Expecta.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/NSValue+Expecta.h \ No newline at end of file diff --git a/Pods/Headers/Private/UICountingLabel/UICountingLabel.h b/Pods/Headers/Private/UICountingLabel/UICountingLabel.h new file mode 120000 index 00000000..45a67bb5 --- /dev/null +++ b/Pods/Headers/Private/UICountingLabel/UICountingLabel.h @@ -0,0 +1 @@ +../../../UICountingLabel/UICountingLabel.h \ No newline at end of file diff --git a/Pods/Headers/Public/Expecta/EXPBlockDefinedMatcher.h b/Pods/Headers/Public/Expecta/EXPBlockDefinedMatcher.h new file mode 120000 index 00000000..ebefa87b --- /dev/null +++ b/Pods/Headers/Public/Expecta/EXPBlockDefinedMatcher.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/EXPBlockDefinedMatcher.h \ No newline at end of file diff --git a/Pods/Headers/Public/Expecta/EXPDefines.h b/Pods/Headers/Public/Expecta/EXPDefines.h new file mode 120000 index 00000000..22add0cd --- /dev/null +++ b/Pods/Headers/Public/Expecta/EXPDefines.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/EXPDefines.h \ No newline at end of file diff --git a/Pods/Headers/Public/Expecta/EXPDoubleTuple.h b/Pods/Headers/Public/Expecta/EXPDoubleTuple.h new file mode 120000 index 00000000..54aa0b5e --- /dev/null +++ b/Pods/Headers/Public/Expecta/EXPDoubleTuple.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/EXPDoubleTuple.h \ No newline at end of file diff --git a/Pods/Headers/Public/Expecta/EXPExpect.h b/Pods/Headers/Public/Expecta/EXPExpect.h new file mode 120000 index 00000000..a677bddf --- /dev/null +++ b/Pods/Headers/Public/Expecta/EXPExpect.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/EXPExpect.h \ No newline at end of file diff --git a/Pods/Headers/Public/Expecta/EXPFloatTuple.h b/Pods/Headers/Public/Expecta/EXPFloatTuple.h new file mode 120000 index 00000000..2b405694 --- /dev/null +++ b/Pods/Headers/Public/Expecta/EXPFloatTuple.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/EXPFloatTuple.h \ No newline at end of file diff --git a/Pods/Headers/Public/Expecta/EXPMatcher.h b/Pods/Headers/Public/Expecta/EXPMatcher.h new file mode 120000 index 00000000..3b20a122 --- /dev/null +++ b/Pods/Headers/Public/Expecta/EXPMatcher.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/EXPMatcher.h \ No newline at end of file diff --git a/Pods/Headers/Public/Expecta/EXPMatcherHelpers.h b/Pods/Headers/Public/Expecta/EXPMatcherHelpers.h new file mode 120000 index 00000000..697385b0 --- /dev/null +++ b/Pods/Headers/Public/Expecta/EXPMatcherHelpers.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatcherHelpers.h \ No newline at end of file diff --git a/Pods/Headers/Public/Expecta/EXPMatchers+beCloseTo.h b/Pods/Headers/Public/Expecta/EXPMatchers+beCloseTo.h new file mode 120000 index 00000000..0eed377c --- /dev/null +++ b/Pods/Headers/Public/Expecta/EXPMatchers+beCloseTo.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beCloseTo.h \ No newline at end of file diff --git a/Pods/Headers/Public/Expecta/EXPMatchers+beFalsy.h b/Pods/Headers/Public/Expecta/EXPMatchers+beFalsy.h new file mode 120000 index 00000000..92643c49 --- /dev/null +++ b/Pods/Headers/Public/Expecta/EXPMatchers+beFalsy.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beFalsy.h \ No newline at end of file diff --git a/Pods/Headers/Public/Expecta/EXPMatchers+beGreaterThan.h b/Pods/Headers/Public/Expecta/EXPMatchers+beGreaterThan.h new file mode 120000 index 00000000..1ccc62b4 --- /dev/null +++ b/Pods/Headers/Public/Expecta/EXPMatchers+beGreaterThan.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beGreaterThan.h \ No newline at end of file diff --git a/Pods/Headers/Public/Expecta/EXPMatchers+beGreaterThanOrEqualTo.h b/Pods/Headers/Public/Expecta/EXPMatchers+beGreaterThanOrEqualTo.h new file mode 120000 index 00000000..db5bf966 --- /dev/null +++ b/Pods/Headers/Public/Expecta/EXPMatchers+beGreaterThanOrEqualTo.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.h \ No newline at end of file diff --git a/Pods/Headers/Public/Expecta/EXPMatchers+beIdenticalTo.h b/Pods/Headers/Public/Expecta/EXPMatchers+beIdenticalTo.h new file mode 120000 index 00000000..6e17ea43 --- /dev/null +++ b/Pods/Headers/Public/Expecta/EXPMatchers+beIdenticalTo.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beIdenticalTo.h \ No newline at end of file diff --git a/Pods/Headers/Public/Expecta/EXPMatchers+beInTheRangeOf.h b/Pods/Headers/Public/Expecta/EXPMatchers+beInTheRangeOf.h new file mode 120000 index 00000000..362d8a7f --- /dev/null +++ b/Pods/Headers/Public/Expecta/EXPMatchers+beInTheRangeOf.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beInTheRangeOf.h \ No newline at end of file diff --git a/Pods/Headers/Public/Expecta/EXPMatchers+beInstanceOf.h b/Pods/Headers/Public/Expecta/EXPMatchers+beInstanceOf.h new file mode 120000 index 00000000..4dd60632 --- /dev/null +++ b/Pods/Headers/Public/Expecta/EXPMatchers+beInstanceOf.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beInstanceOf.h \ No newline at end of file diff --git a/Pods/Headers/Public/Expecta/EXPMatchers+beKindOf.h b/Pods/Headers/Public/Expecta/EXPMatchers+beKindOf.h new file mode 120000 index 00000000..113c7d37 --- /dev/null +++ b/Pods/Headers/Public/Expecta/EXPMatchers+beKindOf.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beKindOf.h \ No newline at end of file diff --git a/Pods/Headers/Public/Expecta/EXPMatchers+beLessThan.h b/Pods/Headers/Public/Expecta/EXPMatchers+beLessThan.h new file mode 120000 index 00000000..675e86a5 --- /dev/null +++ b/Pods/Headers/Public/Expecta/EXPMatchers+beLessThan.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beLessThan.h \ No newline at end of file diff --git a/Pods/Headers/Public/Expecta/EXPMatchers+beLessThanOrEqualTo.h b/Pods/Headers/Public/Expecta/EXPMatchers+beLessThanOrEqualTo.h new file mode 120000 index 00000000..c16df2f0 --- /dev/null +++ b/Pods/Headers/Public/Expecta/EXPMatchers+beLessThanOrEqualTo.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.h \ No newline at end of file diff --git a/Pods/Headers/Public/Expecta/EXPMatchers+beNil.h b/Pods/Headers/Public/Expecta/EXPMatchers+beNil.h new file mode 120000 index 00000000..9f65a6c1 --- /dev/null +++ b/Pods/Headers/Public/Expecta/EXPMatchers+beNil.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beNil.h \ No newline at end of file diff --git a/Pods/Headers/Public/Expecta/EXPMatchers+beSubclassOf.h b/Pods/Headers/Public/Expecta/EXPMatchers+beSubclassOf.h new file mode 120000 index 00000000..27aa7bea --- /dev/null +++ b/Pods/Headers/Public/Expecta/EXPMatchers+beSubclassOf.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beSubclassOf.h \ No newline at end of file diff --git a/Pods/Headers/Public/Expecta/EXPMatchers+beSupersetOf.h b/Pods/Headers/Public/Expecta/EXPMatchers+beSupersetOf.h new file mode 120000 index 00000000..ea3f770a --- /dev/null +++ b/Pods/Headers/Public/Expecta/EXPMatchers+beSupersetOf.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beSupersetOf.h \ No newline at end of file diff --git a/Pods/Headers/Public/Expecta/EXPMatchers+beTruthy.h b/Pods/Headers/Public/Expecta/EXPMatchers+beTruthy.h new file mode 120000 index 00000000..192ac764 --- /dev/null +++ b/Pods/Headers/Public/Expecta/EXPMatchers+beTruthy.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beTruthy.h \ No newline at end of file diff --git a/Pods/Headers/Public/Expecta/EXPMatchers+beginWith.h b/Pods/Headers/Public/Expecta/EXPMatchers+beginWith.h new file mode 120000 index 00000000..2efba8fe --- /dev/null +++ b/Pods/Headers/Public/Expecta/EXPMatchers+beginWith.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beginWith.h \ No newline at end of file diff --git a/Pods/Headers/Public/Expecta/EXPMatchers+conformTo.h b/Pods/Headers/Public/Expecta/EXPMatchers+conformTo.h new file mode 120000 index 00000000..062fb51d --- /dev/null +++ b/Pods/Headers/Public/Expecta/EXPMatchers+conformTo.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+conformTo.h \ No newline at end of file diff --git a/Pods/Headers/Public/Expecta/EXPMatchers+contain.h b/Pods/Headers/Public/Expecta/EXPMatchers+contain.h new file mode 120000 index 00000000..3661fe5f --- /dev/null +++ b/Pods/Headers/Public/Expecta/EXPMatchers+contain.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+contain.h \ No newline at end of file diff --git a/Pods/Headers/Public/Expecta/EXPMatchers+endWith.h b/Pods/Headers/Public/Expecta/EXPMatchers+endWith.h new file mode 120000 index 00000000..7e6c9cf1 --- /dev/null +++ b/Pods/Headers/Public/Expecta/EXPMatchers+endWith.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+endWith.h \ No newline at end of file diff --git a/Pods/Headers/Public/Expecta/EXPMatchers+equal.h b/Pods/Headers/Public/Expecta/EXPMatchers+equal.h new file mode 120000 index 00000000..7bee7886 --- /dev/null +++ b/Pods/Headers/Public/Expecta/EXPMatchers+equal.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+equal.h \ No newline at end of file diff --git a/Pods/Headers/Public/Expecta/EXPMatchers+haveCountOf.h b/Pods/Headers/Public/Expecta/EXPMatchers+haveCountOf.h new file mode 120000 index 00000000..f46d23ad --- /dev/null +++ b/Pods/Headers/Public/Expecta/EXPMatchers+haveCountOf.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+haveCountOf.h \ No newline at end of file diff --git a/Pods/Headers/Public/Expecta/EXPMatchers+match.h b/Pods/Headers/Public/Expecta/EXPMatchers+match.h new file mode 120000 index 00000000..18f995de --- /dev/null +++ b/Pods/Headers/Public/Expecta/EXPMatchers+match.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+match.h \ No newline at end of file diff --git a/Pods/Headers/Public/Expecta/EXPMatchers+postNotification.h b/Pods/Headers/Public/Expecta/EXPMatchers+postNotification.h new file mode 120000 index 00000000..c9422e3e --- /dev/null +++ b/Pods/Headers/Public/Expecta/EXPMatchers+postNotification.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+postNotification.h \ No newline at end of file diff --git a/Pods/Headers/Public/Expecta/EXPMatchers+raise.h b/Pods/Headers/Public/Expecta/EXPMatchers+raise.h new file mode 120000 index 00000000..901e04c1 --- /dev/null +++ b/Pods/Headers/Public/Expecta/EXPMatchers+raise.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+raise.h \ No newline at end of file diff --git a/Pods/Headers/Public/Expecta/EXPMatchers+raiseWithReason.h b/Pods/Headers/Public/Expecta/EXPMatchers+raiseWithReason.h new file mode 120000 index 00000000..5b063b64 --- /dev/null +++ b/Pods/Headers/Public/Expecta/EXPMatchers+raiseWithReason.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+raiseWithReason.h \ No newline at end of file diff --git a/Pods/Headers/Public/Expecta/EXPMatchers+respondTo.h b/Pods/Headers/Public/Expecta/EXPMatchers+respondTo.h new file mode 120000 index 00000000..e7a5fad1 --- /dev/null +++ b/Pods/Headers/Public/Expecta/EXPMatchers+respondTo.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+respondTo.h \ No newline at end of file diff --git a/Pods/Headers/Public/Expecta/EXPMatchers.h b/Pods/Headers/Public/Expecta/EXPMatchers.h new file mode 120000 index 00000000..a454dc40 --- /dev/null +++ b/Pods/Headers/Public/Expecta/EXPMatchers.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers.h \ No newline at end of file diff --git a/Pods/Headers/Public/Expecta/EXPUnsupportedObject.h b/Pods/Headers/Public/Expecta/EXPUnsupportedObject.h new file mode 120000 index 00000000..60fae89f --- /dev/null +++ b/Pods/Headers/Public/Expecta/EXPUnsupportedObject.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/EXPUnsupportedObject.h \ No newline at end of file diff --git a/Pods/Headers/Public/Expecta/Expecta.h b/Pods/Headers/Public/Expecta/Expecta.h new file mode 120000 index 00000000..45ef877d --- /dev/null +++ b/Pods/Headers/Public/Expecta/Expecta.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Expecta.h \ No newline at end of file diff --git a/Pods/Headers/Public/Expecta/ExpectaObject.h b/Pods/Headers/Public/Expecta/ExpectaObject.h new file mode 120000 index 00000000..36a99e13 --- /dev/null +++ b/Pods/Headers/Public/Expecta/ExpectaObject.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/ExpectaObject.h \ No newline at end of file diff --git a/Pods/Headers/Public/Expecta/ExpectaSupport.h b/Pods/Headers/Public/Expecta/ExpectaSupport.h new file mode 120000 index 00000000..c59d3fc6 --- /dev/null +++ b/Pods/Headers/Public/Expecta/ExpectaSupport.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/ExpectaSupport.h \ No newline at end of file diff --git a/Pods/Headers/Public/Expecta/NSObject+Expecta.h b/Pods/Headers/Public/Expecta/NSObject+Expecta.h new file mode 120000 index 00000000..55c3635a --- /dev/null +++ b/Pods/Headers/Public/Expecta/NSObject+Expecta.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/NSObject+Expecta.h \ No newline at end of file diff --git a/Pods/Headers/Public/Expecta/NSValue+Expecta.h b/Pods/Headers/Public/Expecta/NSValue+Expecta.h new file mode 120000 index 00000000..ee557b84 --- /dev/null +++ b/Pods/Headers/Public/Expecta/NSValue+Expecta.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/NSValue+Expecta.h \ No newline at end of file diff --git a/Pods/Headers/Public/UICountingLabel/UICountingLabel.h b/Pods/Headers/Public/UICountingLabel/UICountingLabel.h new file mode 120000 index 00000000..45a67bb5 --- /dev/null +++ b/Pods/Headers/Public/UICountingLabel/UICountingLabel.h @@ -0,0 +1 @@ +../../../UICountingLabel/UICountingLabel.h \ No newline at end of file diff --git a/Pods/Manifest.lock b/Pods/Manifest.lock new file mode 100644 index 00000000..917ec699 --- /dev/null +++ b/Pods/Manifest.lock @@ -0,0 +1,20 @@ +PODS: + - Expecta (1.0.6) + - UICountingLabel (1.0.0) + +DEPENDENCIES: + - Expecta + - UICountingLabel (~> 1.0.0) + +SPEC REPOS: + https://github.com/cocoapods/specs.git: + - Expecta + - UICountingLabel + +SPEC CHECKSUMS: + Expecta: 3b6bd90a64b9a1dcb0b70aa0e10a7f8f631667d5 + UICountingLabel: 540feeca6bbb78be892c8ab75b6ad02313cb2b10 + +PODFILE CHECKSUM: e78182a4fa088d19e3151af985af1dc8a514b92a + +COCOAPODS: 1.5.3 diff --git a/Pods/Pods.xcodeproj/project.pbxproj b/Pods/Pods.xcodeproj/project.pbxproj new file mode 100644 index 00000000..4447c332 --- /dev/null +++ b/Pods/Pods.xcodeproj/project.pbxproj @@ -0,0 +1,1046 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 0373040B6D0EC3BF9932B60FB8452B11 /* EXPMatchers+match.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FDC2E3E9DF155E99B145B74E87FC903 /* EXPMatchers+match.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 041F0924D6BBCA56F44CFFF7C81C509B /* EXPMatchers+conformTo.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DEF37F1554E16CEF0C13E0AE6F069D2 /* EXPMatchers+conformTo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0435080233FFD861A266AB43BE3279D3 /* EXPMatchers+beNil.m in Sources */ = {isa = PBXBuildFile; fileRef = AB346C1CE5D0CD1E1371D8CFE8F03C2E /* EXPMatchers+beNil.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 045E77138594FCD0492D74EE7C22AC90 /* EXPDoubleTuple.m in Sources */ = {isa = PBXBuildFile; fileRef = 58AD2F1E42A42B719863E56CC42D99B6 /* EXPDoubleTuple.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 072E8F29228E95010CF6B82102E59E8A /* EXPMatchers+beIdenticalTo.h in Headers */ = {isa = PBXBuildFile; fileRef = A4F597B38F1FCB2B1728FCE05565AFE7 /* EXPMatchers+beIdenticalTo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 07CEA1D649A728B0D963AD1113C98B58 /* EXPUnsupportedObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 8DD65D5BC7A96A0E902FF7A973C1B7CB /* EXPUnsupportedObject.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 09848E9B8DF8DBBB1263FBB91DAA264E /* EXPMatchers+beLessThan.h in Headers */ = {isa = PBXBuildFile; fileRef = 09C0C8790C92FC14EC398F79710E041F /* EXPMatchers+beLessThan.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0AC841465E3CA33A2D5A18B46C2A7678 /* Expecta.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B509D0447156624FC6D425B52388FB5 /* Expecta.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0CBF5CAA8F3E1589857BC6CEE5E042F8 /* EXPMatchers+beNil.h in Headers */ = {isa = PBXBuildFile; fileRef = EF7E9C2B30498466FC61AE0577C80009 /* EXPMatchers+beNil.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0FE4C580D709657792E5661E74F171D5 /* EXPMatchers+match.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F69E9F8C323A4223277FDBCB7E38000 /* EXPMatchers+match.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 1722F83A4D5ECBEDF3E9C9410A259304 /* EXPMatchers.h in Headers */ = {isa = PBXBuildFile; fileRef = 6EABE6ACDA0D9C6B8B7A1A83B32D71D9 /* EXPMatchers.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1C74D210067A2D584AA672E61F246ECC /* EXPExpect.m in Sources */ = {isa = PBXBuildFile; fileRef = 4EA355C2281BC4D4373535AA2B0544BD /* EXPExpect.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 1D622FBC8A4262E6B398F5CCCB1D9650 /* EXPMatchers+raiseWithReason.m in Sources */ = {isa = PBXBuildFile; fileRef = 28A9BA3AC7B5F1A9B7BB6E0C2F820CBF /* EXPMatchers+raiseWithReason.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 1E2343F7AE04C5D386CCD455E84F13E0 /* EXPMatchers+beTruthy.m in Sources */ = {isa = PBXBuildFile; fileRef = 28812166AA554027A23068B1F8798BBB /* EXPMatchers+beTruthy.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 240B2559B270C0497F375F56B84C5266 /* EXPMatchers+beSupersetOf.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D74AC1CBC358331B1BFAF461439AB19 /* EXPMatchers+beSupersetOf.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 24FF4A3B66A2F383BA14790790108406 /* EXPMatchers+haveCountOf.m in Sources */ = {isa = PBXBuildFile; fileRef = 11B11593494280E87A83E8D8B7507AF0 /* EXPMatchers+haveCountOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 2523657BEE249A532CDFD495AC911F39 /* EXPMatchers+beLessThanOrEqualTo.m in Sources */ = {isa = PBXBuildFile; fileRef = E0A8E28267F0034D64DFA9D4692A8226 /* EXPMatchers+beLessThanOrEqualTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 26EE69036F8E1D37693B1CC6F4EE184B /* EXPMatchers+raiseWithReason.h in Headers */ = {isa = PBXBuildFile; fileRef = 1534926F838DB04A4825EB8F1AE46CB6 /* EXPMatchers+raiseWithReason.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2858702E979011C83F32DD7417BE3050 /* EXPMatchers+haveCountOf.h in Headers */ = {isa = PBXBuildFile; fileRef = F4F49E2D687969D24521A1054CF858D7 /* EXPMatchers+haveCountOf.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 28BC58EE3C7374C4C2DEF6D029011C84 /* EXPMatchers+beInTheRangeOf.m in Sources */ = {isa = PBXBuildFile; fileRef = 832D8D1EF0B2F1CAFBD9EAA0A98EEE0A /* EXPMatchers+beInTheRangeOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 2C944499E3BB44E17E10959A76BBAEA3 /* EXPMatchers+beGreaterThan.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B8B859C118E76F4E2E2655C7B5AD14A /* EXPMatchers+beGreaterThan.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 32DE8BF73DA69143816F16AFC6A7C019 /* EXPMatchers+postNotification.h in Headers */ = {isa = PBXBuildFile; fileRef = F3859EB26BA9C5BA13B18A608B0726D3 /* EXPMatchers+postNotification.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 335CCD82F4E8B3CD7AF8CE57EBF36F4F /* EXPMatchers+contain.h in Headers */ = {isa = PBXBuildFile; fileRef = 66E65047B2C7B1371C6EFB9A1579A2C1 /* EXPMatchers+contain.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 391226D83570CA724B533A2C609A5EF5 /* EXPMatchers+beSupersetOf.m in Sources */ = {isa = PBXBuildFile; fileRef = B2FDF7A346CFDFAD6B1AB2568A3ECF55 /* EXPMatchers+beSupersetOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 3BBA71B2E9E5B9806E4A00A5915F69F7 /* EXPMatchers+beInTheRangeOf.h in Headers */ = {isa = PBXBuildFile; fileRef = DD4CA93DA38D1B0E9BDE06EFFA2445F0 /* EXPMatchers+beInTheRangeOf.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4943F7D828D56A874ACCA7AC312F863B /* EXPMatchers+beCloseTo.m in Sources */ = {isa = PBXBuildFile; fileRef = E04363B4A041813123E16079D1124CB3 /* EXPMatchers+beCloseTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 4BD994BE09FE75E3BC1B1583E815C6ED /* EXPMatchers+beginWith.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B230920F24A541981F80A5178E1A31D /* EXPMatchers+beginWith.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4D7F229C964C28BB52FE46858B9FDC1B /* UICountingLabel.m in Sources */ = {isa = PBXBuildFile; fileRef = 49DAB4FD6D43048A4BF97C48A5B23D72 /* UICountingLabel.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 4E491997DC6C1AF8CA3F57254995BD10 /* Pods-PNChartDemo-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E331571E2B273C8D9B160C8ACA0EC1D3 /* Pods-PNChartDemo-dummy.m */; }; + 4EB308BF802E6F21BABDA8B8718CC7AB /* NSValue+Expecta.m in Sources */ = {isa = PBXBuildFile; fileRef = BB7C75D70C1567D8FBB71CC050E07184 /* NSValue+Expecta.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 5329BE09734B1F03EF22BE39A97D51DD /* EXPMatcherHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = F1C31A1291283C195CE77B761A0826C6 /* EXPMatcherHelpers.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5504E1CA910F4258DDAFD0C25AF8D490 /* ExpectaSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = DB6A89509590D2D83ADBDD691C38882A /* ExpectaSupport.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 56DF862FDB341B9BFF571308CB65D1E2 /* EXPBlockDefinedMatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 44A2DB3005044E852D75292B58153E42 /* EXPBlockDefinedMatcher.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 58E38027B0A4F6CA7BE54F0AE8D4885B /* EXPMatchers+conformTo.m in Sources */ = {isa = PBXBuildFile; fileRef = 58CED10CE87F87D9793C74A0DCCBE5F3 /* EXPMatchers+conformTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 5D50DA13C7A8B2AF549AA4F05E69F9F4 /* EXPMatchers+respondTo.m in Sources */ = {isa = PBXBuildFile; fileRef = 3876C9B7C41F6BCE7B5CA574B25E9656 /* EXPMatchers+respondTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 63CDCCAC82CBC33021220531D93213A2 /* EXPMatcherHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = 982B0433336ED2CCB4038A3A2E101FB4 /* EXPMatcherHelpers.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 643DE0287F1066D083368EAC928DF078 /* EXPFloatTuple.m in Sources */ = {isa = PBXBuildFile; fileRef = 5E96404373315AB7147DC98335007619 /* EXPFloatTuple.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 64D92EB797C2CB0A09A128B190DA6E77 /* EXPMatchers+beSubclassOf.h in Headers */ = {isa = PBXBuildFile; fileRef = 00E86E09D3ED5CCCACACF31EA6E77A7C /* EXPMatchers+beSubclassOf.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6947A74A7CCE879510F8CD52A7D0272A /* NSValue+Expecta.h in Headers */ = {isa = PBXBuildFile; fileRef = F289FEAB8348D9D1E6F77233AF824FA2 /* NSValue+Expecta.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6A37D9AAA0B7BD3336D5F2DFBAF31AD3 /* EXPMatchers+endWith.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E90759C32DED074C25D963D96D48538 /* EXPMatchers+endWith.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6EE4611B91A104D540D3D4094F25228B /* EXPMatchers+beTruthy.h in Headers */ = {isa = PBXBuildFile; fileRef = 88E1460D25DCA6170DA0462A1D7B8D99 /* EXPMatchers+beTruthy.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 712EB3243017083770C6D7DB3E00596D /* UICountingLabel-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = AD02C2DB733BD1F2253DFD2E7E82E911 /* UICountingLabel-dummy.m */; }; + 71C9E905E7DF90435ED0C1D1B3B1E42D /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 80C82283F763D9ABC7DD3BB91787CA8D /* XCTest.framework */; }; + 71FBC2F8907E29EB767026E6A08F7EEF /* EXPMatchers+beSubclassOf.m in Sources */ = {isa = PBXBuildFile; fileRef = 36195B7DD6D38283E09207495C4A98A5 /* EXPMatchers+beSubclassOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 770E58F3AB82B2A21DC0F2207328AC4D /* EXPExpect.h in Headers */ = {isa = PBXBuildFile; fileRef = 0BE31B7BAB3A80AFDD6C4509310AF3CC /* EXPExpect.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7E2C04AB8CB1D40C13D5FD52B1F1327E /* EXPMatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = E4F24D8BA97A4EA38ACC8086C13BB4BE /* EXPMatcher.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7F00B5C0B48374699FDA4AF2195F37F3 /* EXPMatchers+beGreaterThan.h in Headers */ = {isa = PBXBuildFile; fileRef = E7FEB7CBEF5677C81C545B8C8597DE37 /* EXPMatchers+beGreaterThan.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 863C5CC8F4698A0C85AB53C9B072D889 /* EXPMatchers+equal.m in Sources */ = {isa = PBXBuildFile; fileRef = 596F09D163635694C77872B8CF0966AC /* EXPMatchers+equal.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 885C2534832AF6B1DFA98FA19C4D9994 /* EXPMatchers+beKindOf.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EB4632D477D92BA057F7FFFA7700E12 /* EXPMatchers+beKindOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 88C4D2F85056EA7F7535106211147ECC /* EXPMatchers+beCloseTo.h in Headers */ = {isa = PBXBuildFile; fileRef = C83B2AEEBA718BA79220FFD656F4712C /* EXPMatchers+beCloseTo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8FBA1C7BEC45C028C2288189DBD810C9 /* EXPMatchers+beFalsy.h in Headers */ = {isa = PBXBuildFile; fileRef = E7CEBC07C47A5AF801D99F90B6E6F8D4 /* EXPMatchers+beFalsy.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9817696462CA759792EB02DEF0EEFF74 /* EXPMatchers+raise.h in Headers */ = {isa = PBXBuildFile; fileRef = C272FA1A3E691EBD62ADE01CFC9FCC38 /* EXPMatchers+raise.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9DB6E85F01E893757CA49612C8F6B032 /* Pods-PNChartTests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = A86D3D96C8E4ACCCD27DB62E86FC5793 /* Pods-PNChartTests-dummy.m */; }; + A12B39559E464A1089E4389274973616 /* EXPMatchers+beLessThan.m in Sources */ = {isa = PBXBuildFile; fileRef = BD629F6A967ED98B84DC2854DE50EDF8 /* EXPMatchers+beLessThan.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + A153917F76E52B405C5914771613E9D4 /* NSObject+Expecta.h in Headers */ = {isa = PBXBuildFile; fileRef = 64E26C39D1714411224A2FAFE93CB53D /* NSObject+Expecta.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A5CB8C92268FCAC7B00F12EE55B43338 /* EXPMatchers+raise.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D760C2DFD0768A9AAA71A47DBDDD411 /* EXPMatchers+raise.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + A688437F602916EEDEE68C80545A3D15 /* EXPFloatTuple.h in Headers */ = {isa = PBXBuildFile; fileRef = 38C872119DA784037BD981DE17CA0E18 /* EXPFloatTuple.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A6B84E4776F9B1A6A60F8D1ADC8AF807 /* ExpectaObject.h in Headers */ = {isa = PBXBuildFile; fileRef = E49036F950DFFE52675366C4EFD935F5 /* ExpectaObject.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A904D2D6242F68CC3B959E2B0FC8B4F9 /* ExpectaObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 572D9B0D34B55FCEA9AF53E01FC06BEB /* ExpectaObject.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + AC5A673EB5F87A58AEC0ED278F61DD67 /* EXPDoubleTuple.h in Headers */ = {isa = PBXBuildFile; fileRef = 316A30EDFF70759CB2158DB13E05B460 /* EXPDoubleTuple.h */; settings = {ATTRIBUTES = (Project, ); }; }; + ADC3FF08FCE3A3B1B1AF2C3A1FB9F722 /* UICountingLabel.h in Headers */ = {isa = PBXBuildFile; fileRef = DC29837CE95A06F00D5F68CDBAAD9A17 /* UICountingLabel.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B2880B5D7D91AACFCEF345934CFEBA55 /* EXPMatchers+beInstanceOf.m in Sources */ = {isa = PBXBuildFile; fileRef = 037986BD30C5472825602C816F6643F6 /* EXPMatchers+beInstanceOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + B709C0890B67EB6C1AB9B9738CDBEEC6 /* EXPMatchers+beIdenticalTo.m in Sources */ = {isa = PBXBuildFile; fileRef = FE4578AADA6DC7C0527B04E75C227E15 /* EXPMatchers+beIdenticalTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + C091203A57422574B3263D1E9BA53A87 /* ExpectaSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = 0BE95559A4D8E2EC8B06D606C032D7AC /* ExpectaSupport.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + C498F24E736A80A0F6C440DBC33AF494 /* EXPMatchers+beFalsy.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EFC577F430ED5D861CDC056E3A3A180 /* EXPMatchers+beFalsy.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + C670343470EAC260E60ABD463CC39E2D /* EXPMatchers+beginWith.m in Sources */ = {isa = PBXBuildFile; fileRef = 382520E0D1A5323C662D99172257675F /* EXPMatchers+beginWith.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + C7634203CCAE9061181FF1E509C569A4 /* EXPMatchers+beLessThanOrEqualTo.h in Headers */ = {isa = PBXBuildFile; fileRef = F0C5D1678CAFB5BE4EB827D5F0F1EDCE /* EXPMatchers+beLessThanOrEqualTo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CC995F4F36E9D6237AFC6F729364B867 /* EXPBlockDefinedMatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 053654A934F7F454B420FE8990DA6FEF /* EXPBlockDefinedMatcher.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + CDA268F5B643324DD61A0E25BD4179ED /* EXPMatchers+beGreaterThanOrEqualTo.m in Sources */ = {isa = PBXBuildFile; fileRef = C4600C60E47FEC2360ED7AB6D8CAC9F5 /* EXPMatchers+beGreaterThanOrEqualTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + D6A7F64A32E06AFE5E4DC9167E24F016 /* EXPMatchers+beInstanceOf.h in Headers */ = {isa = PBXBuildFile; fileRef = C205FDAE8D78410E054A4DDDEC51B57B /* EXPMatchers+beInstanceOf.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D94F3CDE976C052BF0BD112E257A7F19 /* EXPMatchers+postNotification.m in Sources */ = {isa = PBXBuildFile; fileRef = C80B0DFACA5D26F6598C74528866A5C1 /* EXPMatchers+postNotification.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + D9A91A7D0AA02B17E8DC43770EC7DC6B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DDD0F5DAA0AC84C5E3ADE087C20B50BA /* Foundation.framework */; }; + DBA2ACB360E11D42FD68312A1C48887F /* EXPMatchers+equal.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BE0CD29311E941E6F0E2DE8BFD8C2FF /* EXPMatchers+equal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E0F03C95E05A98F39D1DC1A98385803E /* EXPDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 585A0EBF4E489E8B1BF636D2C34F3C65 /* EXPDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E95DE019212836608A35BF3270AADF17 /* Expecta-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = FD904907F3F34A1D28E900EFB5B72D9F /* Expecta-dummy.m */; }; + ED087996824EE3256B222E3BAEBAB14D /* EXPUnsupportedObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 65ED954FA559049A4828BD5F5C520070 /* EXPUnsupportedObject.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + F8E39087737225714939DB0252FB1114 /* EXPMatchers+endWith.m in Sources */ = {isa = PBXBuildFile; fileRef = 5186FFC69C2E106F6D18778B3EC37767 /* EXPMatchers+endWith.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + F9195123C863E423DF77D4F6D8B37C2C /* EXPMatchers+beKindOf.h in Headers */ = {isa = PBXBuildFile; fileRef = B93307C07F94D52E97A9797FE2D79AF6 /* EXPMatchers+beKindOf.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FC9ACAFA4E12B4D41007910974A7FCC9 /* EXPMatchers+beGreaterThanOrEqualTo.h in Headers */ = {isa = PBXBuildFile; fileRef = 991B4030A7FC7AE8FA7A112841B73997 /* EXPMatchers+beGreaterThanOrEqualTo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FD7BD436456F97A418DE68561354EC4B /* EXPMatchers+respondTo.h in Headers */ = {isa = PBXBuildFile; fileRef = 690372F83B29285EE4199586D8DC7150 /* EXPMatchers+respondTo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FE84239BE923F217FD38E45B4F770EFD /* EXPMatchers+contain.m in Sources */ = {isa = PBXBuildFile; fileRef = C64D910E05D2B1997DD8A24CEC3DF47C /* EXPMatchers+contain.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 47EAF2D6AF32B41D97D362B1CA86F5EF /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 46D68D26DCAAC4D999D549BA45F0B0EC; + remoteInfo = Expecta; + }; + D4F70E4505E1C36F6CCA5CEE16DBE0BF /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4070EE8B4B78023C1F3EC01E9020F297; + remoteInfo = UICountingLabel; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 00E86E09D3ED5CCCACACF31EA6E77A7C /* EXPMatchers+beSubclassOf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beSubclassOf.h"; path = "Expecta/Matchers/EXPMatchers+beSubclassOf.h"; sourceTree = ""; }; + 037986BD30C5472825602C816F6643F6 /* EXPMatchers+beInstanceOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beInstanceOf.m"; path = "Expecta/Matchers/EXPMatchers+beInstanceOf.m"; sourceTree = ""; }; + 053654A934F7F454B420FE8990DA6FEF /* EXPBlockDefinedMatcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPBlockDefinedMatcher.m; path = Expecta/EXPBlockDefinedMatcher.m; sourceTree = ""; }; + 09C0C8790C92FC14EC398F79710E041F /* EXPMatchers+beLessThan.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beLessThan.h"; path = "Expecta/Matchers/EXPMatchers+beLessThan.h"; sourceTree = ""; }; + 0BE31B7BAB3A80AFDD6C4509310AF3CC /* EXPExpect.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPExpect.h; path = Expecta/EXPExpect.h; sourceTree = ""; }; + 0BE95559A4D8E2EC8B06D606C032D7AC /* ExpectaSupport.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ExpectaSupport.m; path = Expecta/ExpectaSupport.m; sourceTree = ""; }; + 0EFC577F430ED5D861CDC056E3A3A180 /* EXPMatchers+beFalsy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beFalsy.m"; path = "Expecta/Matchers/EXPMatchers+beFalsy.m"; sourceTree = ""; }; + 11B11593494280E87A83E8D8B7507AF0 /* EXPMatchers+haveCountOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+haveCountOf.m"; path = "Expecta/Matchers/EXPMatchers+haveCountOf.m"; sourceTree = ""; }; + 1244A3B47B409C72530B01CAD3DC94DF /* Pods-PNChartDemo-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-PNChartDemo-resources.sh"; sourceTree = ""; }; + 1534926F838DB04A4825EB8F1AE46CB6 /* EXPMatchers+raiseWithReason.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+raiseWithReason.h"; path = "Expecta/Matchers/EXPMatchers+raiseWithReason.h"; sourceTree = ""; }; + 1BD86E5DFDD4818F16961D4ACDACE5F5 /* Pods-PNChartTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-PNChartTests.release.xcconfig"; sourceTree = ""; }; + 1EB4632D477D92BA057F7FFFA7700E12 /* EXPMatchers+beKindOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beKindOf.m"; path = "Expecta/Matchers/EXPMatchers+beKindOf.m"; sourceTree = ""; }; + 27D84D20A73625020B4890C161774190 /* Expecta.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Expecta.xcconfig; sourceTree = ""; }; + 28812166AA554027A23068B1F8798BBB /* EXPMatchers+beTruthy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beTruthy.m"; path = "Expecta/Matchers/EXPMatchers+beTruthy.m"; sourceTree = ""; }; + 28A9BA3AC7B5F1A9B7BB6E0C2F820CBF /* EXPMatchers+raiseWithReason.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+raiseWithReason.m"; path = "Expecta/Matchers/EXPMatchers+raiseWithReason.m"; sourceTree = ""; }; + 2B509D0447156624FC6D425B52388FB5 /* Expecta.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Expecta.h; path = Expecta/Expecta.h; sourceTree = ""; }; + 2DEF37F1554E16CEF0C13E0AE6F069D2 /* EXPMatchers+conformTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+conformTo.h"; path = "Expecta/Matchers/EXPMatchers+conformTo.h"; sourceTree = ""; }; + 316A30EDFF70759CB2158DB13E05B460 /* EXPDoubleTuple.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPDoubleTuple.h; path = Expecta/EXPDoubleTuple.h; sourceTree = ""; }; + 36195B7DD6D38283E09207495C4A98A5 /* EXPMatchers+beSubclassOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beSubclassOf.m"; path = "Expecta/Matchers/EXPMatchers+beSubclassOf.m"; sourceTree = ""; }; + 382520E0D1A5323C662D99172257675F /* EXPMatchers+beginWith.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beginWith.m"; path = "Expecta/Matchers/EXPMatchers+beginWith.m"; sourceTree = ""; }; + 3876C9B7C41F6BCE7B5CA574B25E9656 /* EXPMatchers+respondTo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+respondTo.m"; path = "Expecta/Matchers/EXPMatchers+respondTo.m"; sourceTree = ""; }; + 38C872119DA784037BD981DE17CA0E18 /* EXPFloatTuple.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPFloatTuple.h; path = Expecta/EXPFloatTuple.h; sourceTree = ""; }; + 3B8B859C118E76F4E2E2655C7B5AD14A /* EXPMatchers+beGreaterThan.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beGreaterThan.m"; path = "Expecta/Matchers/EXPMatchers+beGreaterThan.m"; sourceTree = ""; }; + 3BE0CD29311E941E6F0E2DE8BFD8C2FF /* EXPMatchers+equal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+equal.h"; path = "Expecta/Matchers/EXPMatchers+equal.h"; sourceTree = ""; }; + 40778BB6582503466ACFBE7E63EDC440 /* libPods-PNChartDemo.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-PNChartDemo.a"; path = "libPods-PNChartDemo.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 44A2DB3005044E852D75292B58153E42 /* EXPBlockDefinedMatcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPBlockDefinedMatcher.h; path = Expecta/EXPBlockDefinedMatcher.h; sourceTree = ""; }; + 49DAB4FD6D43048A4BF97C48A5B23D72 /* UICountingLabel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = UICountingLabel.m; sourceTree = ""; }; + 4D74AC1CBC358331B1BFAF461439AB19 /* EXPMatchers+beSupersetOf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beSupersetOf.h"; path = "Expecta/Matchers/EXPMatchers+beSupersetOf.h"; sourceTree = ""; }; + 4D760C2DFD0768A9AAA71A47DBDDD411 /* EXPMatchers+raise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+raise.m"; path = "Expecta/Matchers/EXPMatchers+raise.m"; sourceTree = ""; }; + 4EA355C2281BC4D4373535AA2B0544BD /* EXPExpect.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPExpect.m; path = Expecta/EXPExpect.m; sourceTree = ""; }; + 5186FFC69C2E106F6D18778B3EC37767 /* EXPMatchers+endWith.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+endWith.m"; path = "Expecta/Matchers/EXPMatchers+endWith.m"; sourceTree = ""; }; + 572D9B0D34B55FCEA9AF53E01FC06BEB /* ExpectaObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ExpectaObject.m; path = Expecta/ExpectaObject.m; sourceTree = ""; }; + 579A217DF362B510BEA5FDB1B00FBE5E /* Expecta-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Expecta-prefix.pch"; sourceTree = ""; }; + 585A0EBF4E489E8B1BF636D2C34F3C65 /* EXPDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPDefines.h; path = Expecta/EXPDefines.h; sourceTree = ""; }; + 58AD2F1E42A42B719863E56CC42D99B6 /* EXPDoubleTuple.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPDoubleTuple.m; path = Expecta/EXPDoubleTuple.m; sourceTree = ""; }; + 58CED10CE87F87D9793C74A0DCCBE5F3 /* EXPMatchers+conformTo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+conformTo.m"; path = "Expecta/Matchers/EXPMatchers+conformTo.m"; sourceTree = ""; }; + 596F09D163635694C77872B8CF0966AC /* EXPMatchers+equal.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+equal.m"; path = "Expecta/Matchers/EXPMatchers+equal.m"; sourceTree = ""; }; + 5B230920F24A541981F80A5178E1A31D /* EXPMatchers+beginWith.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beginWith.h"; path = "Expecta/Matchers/EXPMatchers+beginWith.h"; sourceTree = ""; }; + 5E64789CB2FC199B9210CEDC015CDF7B /* Pods-PNChartDemo-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-PNChartDemo-acknowledgements.plist"; sourceTree = ""; }; + 5E96404373315AB7147DC98335007619 /* EXPFloatTuple.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPFloatTuple.m; path = Expecta/EXPFloatTuple.m; sourceTree = ""; }; + 64E26C39D1714411224A2FAFE93CB53D /* NSObject+Expecta.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+Expecta.h"; path = "Expecta/NSObject+Expecta.h"; sourceTree = ""; }; + 65070186C5E09543F1721412A5659108 /* libPods-PNChartTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-PNChartTests.a"; path = "libPods-PNChartTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 65ED954FA559049A4828BD5F5C520070 /* EXPUnsupportedObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPUnsupportedObject.m; path = Expecta/EXPUnsupportedObject.m; sourceTree = ""; }; + 66E65047B2C7B1371C6EFB9A1579A2C1 /* EXPMatchers+contain.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+contain.h"; path = "Expecta/Matchers/EXPMatchers+contain.h"; sourceTree = ""; }; + 690372F83B29285EE4199586D8DC7150 /* EXPMatchers+respondTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+respondTo.h"; path = "Expecta/Matchers/EXPMatchers+respondTo.h"; sourceTree = ""; }; + 6E1856F94341D88D8625CEDFE764D5BF /* Pods-PNChartDemo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-PNChartDemo.release.xcconfig"; sourceTree = ""; }; + 6EABE6ACDA0D9C6B8B7A1A83B32D71D9 /* EXPMatchers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPMatchers.h; path = Expecta/Matchers/EXPMatchers.h; sourceTree = ""; }; + 6F69E9F8C323A4223277FDBCB7E38000 /* EXPMatchers+match.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+match.m"; path = "Expecta/Matchers/EXPMatchers+match.m"; sourceTree = ""; }; + 6FDC2E3E9DF155E99B145B74E87FC903 /* EXPMatchers+match.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+match.h"; path = "Expecta/Matchers/EXPMatchers+match.h"; sourceTree = ""; }; + 7E90759C32DED074C25D963D96D48538 /* EXPMatchers+endWith.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+endWith.h"; path = "Expecta/Matchers/EXPMatchers+endWith.h"; sourceTree = ""; }; + 80C82283F763D9ABC7DD3BB91787CA8D /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.3.sdk/System/Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; + 832D8D1EF0B2F1CAFBD9EAA0A98EEE0A /* EXPMatchers+beInTheRangeOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beInTheRangeOf.m"; path = "Expecta/Matchers/EXPMatchers+beInTheRangeOf.m"; sourceTree = ""; }; + 83998CB288C558456A59FC59DAF88FA8 /* UICountingLabel.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = UICountingLabel.xcconfig; sourceTree = ""; }; + 88E1460D25DCA6170DA0462A1D7B8D99 /* EXPMatchers+beTruthy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beTruthy.h"; path = "Expecta/Matchers/EXPMatchers+beTruthy.h"; sourceTree = ""; }; + 8AAAD09EFF972B7348C4663DF2641129 /* UICountingLabel-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "UICountingLabel-prefix.pch"; sourceTree = ""; }; + 8ACA598422D109CBFFCDECD096CFE74F /* Pods-PNChartTests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-PNChartTests-acknowledgements.plist"; sourceTree = ""; }; + 8DD65D5BC7A96A0E902FF7A973C1B7CB /* EXPUnsupportedObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPUnsupportedObject.h; path = Expecta/EXPUnsupportedObject.h; sourceTree = ""; }; + 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 982B0433336ED2CCB4038A3A2E101FB4 /* EXPMatcherHelpers.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPMatcherHelpers.m; path = Expecta/Matchers/EXPMatcherHelpers.m; sourceTree = ""; }; + 991B4030A7FC7AE8FA7A112841B73997 /* EXPMatchers+beGreaterThanOrEqualTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beGreaterThanOrEqualTo.h"; path = "Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.h"; sourceTree = ""; }; + 9BD0A422D248E34DCC72C59383D1B830 /* Pods-PNChartTests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-PNChartTests-frameworks.sh"; sourceTree = ""; }; + A4F597B38F1FCB2B1728FCE05565AFE7 /* EXPMatchers+beIdenticalTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beIdenticalTo.h"; path = "Expecta/Matchers/EXPMatchers+beIdenticalTo.h"; sourceTree = ""; }; + A86D3D96C8E4ACCCD27DB62E86FC5793 /* Pods-PNChartTests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-PNChartTests-dummy.m"; sourceTree = ""; }; + A911A17061A94B1E9A8C6EAD6B7044A6 /* Pods-PNChartDemo-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-PNChartDemo-acknowledgements.markdown"; sourceTree = ""; }; + AB346C1CE5D0CD1E1371D8CFE8F03C2E /* EXPMatchers+beNil.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beNil.m"; path = "Expecta/Matchers/EXPMatchers+beNil.m"; sourceTree = ""; }; + AD02C2DB733BD1F2253DFD2E7E82E911 /* UICountingLabel-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "UICountingLabel-dummy.m"; sourceTree = ""; }; + AF022A56D0844FA2695490A968256946 /* Pods-PNChartTests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-PNChartTests-acknowledgements.markdown"; sourceTree = ""; }; + B24785CD58CFD00B17AC7D4BA287BA62 /* Pods-PNChartTests-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-PNChartTests-resources.sh"; sourceTree = ""; }; + B2FDF7A346CFDFAD6B1AB2568A3ECF55 /* EXPMatchers+beSupersetOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beSupersetOf.m"; path = "Expecta/Matchers/EXPMatchers+beSupersetOf.m"; sourceTree = ""; }; + B770A53CF4F704C9ECC588E518F42CF6 /* Pods-PNChartDemo.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-PNChartDemo.debug.xcconfig"; sourceTree = ""; }; + B93307C07F94D52E97A9797FE2D79AF6 /* EXPMatchers+beKindOf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beKindOf.h"; path = "Expecta/Matchers/EXPMatchers+beKindOf.h"; sourceTree = ""; }; + BB7C75D70C1567D8FBB71CC050E07184 /* NSValue+Expecta.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSValue+Expecta.m"; path = "Expecta/NSValue+Expecta.m"; sourceTree = ""; }; + BD629F6A967ED98B84DC2854DE50EDF8 /* EXPMatchers+beLessThan.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beLessThan.m"; path = "Expecta/Matchers/EXPMatchers+beLessThan.m"; sourceTree = ""; }; + C205FDAE8D78410E054A4DDDEC51B57B /* EXPMatchers+beInstanceOf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beInstanceOf.h"; path = "Expecta/Matchers/EXPMatchers+beInstanceOf.h"; sourceTree = ""; }; + C272FA1A3E691EBD62ADE01CFC9FCC38 /* EXPMatchers+raise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+raise.h"; path = "Expecta/Matchers/EXPMatchers+raise.h"; sourceTree = ""; }; + C30D0A792ADAB3D5DC9F1FE9500E3781 /* Pods-PNChartTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-PNChartTests.debug.xcconfig"; sourceTree = ""; }; + C4600C60E47FEC2360ED7AB6D8CAC9F5 /* EXPMatchers+beGreaterThanOrEqualTo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beGreaterThanOrEqualTo.m"; path = "Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.m"; sourceTree = ""; }; + C64D910E05D2B1997DD8A24CEC3DF47C /* EXPMatchers+contain.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+contain.m"; path = "Expecta/Matchers/EXPMatchers+contain.m"; sourceTree = ""; }; + C80B0DFACA5D26F6598C74528866A5C1 /* EXPMatchers+postNotification.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+postNotification.m"; path = "Expecta/Matchers/EXPMatchers+postNotification.m"; sourceTree = ""; }; + C83B2AEEBA718BA79220FFD656F4712C /* EXPMatchers+beCloseTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beCloseTo.h"; path = "Expecta/Matchers/EXPMatchers+beCloseTo.h"; sourceTree = ""; }; + DB6A89509590D2D83ADBDD691C38882A /* ExpectaSupport.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ExpectaSupport.h; path = Expecta/ExpectaSupport.h; sourceTree = ""; }; + DC29837CE95A06F00D5F68CDBAAD9A17 /* UICountingLabel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = UICountingLabel.h; sourceTree = ""; }; + DD4CA93DA38D1B0E9BDE06EFFA2445F0 /* EXPMatchers+beInTheRangeOf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beInTheRangeOf.h"; path = "Expecta/Matchers/EXPMatchers+beInTheRangeOf.h"; sourceTree = ""; }; + DDD0F5DAA0AC84C5E3ADE087C20B50BA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + DE26012985CC19107D01B5F734D81646 /* libUICountingLabel.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libUICountingLabel.a; path = libUICountingLabel.a; sourceTree = BUILT_PRODUCTS_DIR; }; + E04363B4A041813123E16079D1124CB3 /* EXPMatchers+beCloseTo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beCloseTo.m"; path = "Expecta/Matchers/EXPMatchers+beCloseTo.m"; sourceTree = ""; }; + E0A8E28267F0034D64DFA9D4692A8226 /* EXPMatchers+beLessThanOrEqualTo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beLessThanOrEqualTo.m"; path = "Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.m"; sourceTree = ""; }; + E331571E2B273C8D9B160C8ACA0EC1D3 /* Pods-PNChartDemo-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-PNChartDemo-dummy.m"; sourceTree = ""; }; + E49036F950DFFE52675366C4EFD935F5 /* ExpectaObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ExpectaObject.h; path = Expecta/ExpectaObject.h; sourceTree = ""; }; + E4F24D8BA97A4EA38ACC8086C13BB4BE /* EXPMatcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPMatcher.h; path = Expecta/EXPMatcher.h; sourceTree = ""; }; + E7CEBC07C47A5AF801D99F90B6E6F8D4 /* EXPMatchers+beFalsy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beFalsy.h"; path = "Expecta/Matchers/EXPMatchers+beFalsy.h"; sourceTree = ""; }; + E7FEB7CBEF5677C81C545B8C8597DE37 /* EXPMatchers+beGreaterThan.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beGreaterThan.h"; path = "Expecta/Matchers/EXPMatchers+beGreaterThan.h"; sourceTree = ""; }; + EA50E18D8544CC5B9E0CF0FD3FA1D163 /* libExpecta.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libExpecta.a; path = libExpecta.a; sourceTree = BUILT_PRODUCTS_DIR; }; + EF7E9C2B30498466FC61AE0577C80009 /* EXPMatchers+beNil.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beNil.h"; path = "Expecta/Matchers/EXPMatchers+beNil.h"; sourceTree = ""; }; + F0C5D1678CAFB5BE4EB827D5F0F1EDCE /* EXPMatchers+beLessThanOrEqualTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beLessThanOrEqualTo.h"; path = "Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.h"; sourceTree = ""; }; + F1C31A1291283C195CE77B761A0826C6 /* EXPMatcherHelpers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPMatcherHelpers.h; path = Expecta/Matchers/EXPMatcherHelpers.h; sourceTree = ""; }; + F289FEAB8348D9D1E6F77233AF824FA2 /* NSValue+Expecta.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSValue+Expecta.h"; path = "Expecta/NSValue+Expecta.h"; sourceTree = ""; }; + F3859EB26BA9C5BA13B18A608B0726D3 /* EXPMatchers+postNotification.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+postNotification.h"; path = "Expecta/Matchers/EXPMatchers+postNotification.h"; sourceTree = ""; }; + F4F49E2D687969D24521A1054CF858D7 /* EXPMatchers+haveCountOf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+haveCountOf.h"; path = "Expecta/Matchers/EXPMatchers+haveCountOf.h"; sourceTree = ""; }; + F6B3BC12C750D5C34B3EDC22ED7C521E /* Pods-PNChartDemo-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-PNChartDemo-frameworks.sh"; sourceTree = ""; }; + FD904907F3F34A1D28E900EFB5B72D9F /* Expecta-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Expecta-dummy.m"; sourceTree = ""; }; + FE4578AADA6DC7C0527B04E75C227E15 /* EXPMatchers+beIdenticalTo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beIdenticalTo.m"; path = "Expecta/Matchers/EXPMatchers+beIdenticalTo.m"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 03F8C9DE4B5918EEA35CE61AA3A1186A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + D9A91A7D0AA02B17E8DC43770EC7DC6B /* Foundation.framework in Frameworks */, + 71C9E905E7DF90435ED0C1D1B3B1E42D /* XCTest.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 197371D30EE334D949F278307B32D6FF /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 49455F7404E1D9F89FAC6A2AC8311039 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + E528752615F14DE88CEE6EC25701E42B /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 1E85F0F44277212282918D8D5DDB3588 /* iOS */ = { + isa = PBXGroup; + children = ( + DDD0F5DAA0AC84C5E3ADE087C20B50BA /* Foundation.framework */, + 80C82283F763D9ABC7DD3BB91787CA8D /* XCTest.framework */, + ); + name = iOS; + sourceTree = ""; + }; + 2C01CA67157A60FD120B55B047093C34 /* Pods-PNChartDemo */ = { + isa = PBXGroup; + children = ( + A911A17061A94B1E9A8C6EAD6B7044A6 /* Pods-PNChartDemo-acknowledgements.markdown */, + 5E64789CB2FC199B9210CEDC015CDF7B /* Pods-PNChartDemo-acknowledgements.plist */, + E331571E2B273C8D9B160C8ACA0EC1D3 /* Pods-PNChartDemo-dummy.m */, + F6B3BC12C750D5C34B3EDC22ED7C521E /* Pods-PNChartDemo-frameworks.sh */, + 1244A3B47B409C72530B01CAD3DC94DF /* Pods-PNChartDemo-resources.sh */, + B770A53CF4F704C9ECC588E518F42CF6 /* Pods-PNChartDemo.debug.xcconfig */, + 6E1856F94341D88D8625CEDFE764D5BF /* Pods-PNChartDemo.release.xcconfig */, + ); + name = "Pods-PNChartDemo"; + path = "Target Support Files/Pods-PNChartDemo"; + sourceTree = ""; + }; + 365DFCF4EE7A394DDC0368574B44A882 /* Support Files */ = { + isa = PBXGroup; + children = ( + 83998CB288C558456A59FC59DAF88FA8 /* UICountingLabel.xcconfig */, + AD02C2DB733BD1F2253DFD2E7E82E911 /* UICountingLabel-dummy.m */, + 8AAAD09EFF972B7348C4663DF2641129 /* UICountingLabel-prefix.pch */, + ); + name = "Support Files"; + path = "../Target Support Files/UICountingLabel"; + sourceTree = ""; + }; + 433CD3331B6C3787F473C941B61FC68F /* Frameworks */ = { + isa = PBXGroup; + children = ( + 1E85F0F44277212282918D8D5DDB3588 /* iOS */, + ); + name = Frameworks; + sourceTree = ""; + }; + 7430FB27BA5F88FA3C5C4899C49A91A8 /* Pods-PNChartTests */ = { + isa = PBXGroup; + children = ( + AF022A56D0844FA2695490A968256946 /* Pods-PNChartTests-acknowledgements.markdown */, + 8ACA598422D109CBFFCDECD096CFE74F /* Pods-PNChartTests-acknowledgements.plist */, + A86D3D96C8E4ACCCD27DB62E86FC5793 /* Pods-PNChartTests-dummy.m */, + 9BD0A422D248E34DCC72C59383D1B830 /* Pods-PNChartTests-frameworks.sh */, + B24785CD58CFD00B17AC7D4BA287BA62 /* Pods-PNChartTests-resources.sh */, + C30D0A792ADAB3D5DC9F1FE9500E3781 /* Pods-PNChartTests.debug.xcconfig */, + 1BD86E5DFDD4818F16961D4ACDACE5F5 /* Pods-PNChartTests.release.xcconfig */, + ); + name = "Pods-PNChartTests"; + path = "Target Support Files/Pods-PNChartTests"; + sourceTree = ""; + }; + 74FB386D0E8D813A0864920650E3A0DA /* Pods */ = { + isa = PBXGroup; + children = ( + A9AC57A125B588A5297559BA932185C3 /* Expecta */, + 9D5A34346A8C2D59D191E089D752FBBD /* UICountingLabel */, + ); + name = Pods; + sourceTree = ""; + }; + 7DB346D0F39D3F0E887471402A8071AB = { + isa = PBXGroup; + children = ( + 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */, + 433CD3331B6C3787F473C941B61FC68F /* Frameworks */, + 74FB386D0E8D813A0864920650E3A0DA /* Pods */, + 7FC0C0EFE3E513C41492E15EAF275310 /* Products */, + 8E6AE688B4497D4C56E876E583E224A2 /* Targets Support Files */, + ); + sourceTree = ""; + }; + 7FC0C0EFE3E513C41492E15EAF275310 /* Products */ = { + isa = PBXGroup; + children = ( + EA50E18D8544CC5B9E0CF0FD3FA1D163 /* libExpecta.a */, + 40778BB6582503466ACFBE7E63EDC440 /* libPods-PNChartDemo.a */, + 65070186C5E09543F1721412A5659108 /* libPods-PNChartTests.a */, + DE26012985CC19107D01B5F734D81646 /* libUICountingLabel.a */, + ); + name = Products; + sourceTree = ""; + }; + 8E6AE688B4497D4C56E876E583E224A2 /* Targets Support Files */ = { + isa = PBXGroup; + children = ( + 2C01CA67157A60FD120B55B047093C34 /* Pods-PNChartDemo */, + 7430FB27BA5F88FA3C5C4899C49A91A8 /* Pods-PNChartTests */, + ); + name = "Targets Support Files"; + sourceTree = ""; + }; + 9D5A34346A8C2D59D191E089D752FBBD /* UICountingLabel */ = { + isa = PBXGroup; + children = ( + DC29837CE95A06F00D5F68CDBAAD9A17 /* UICountingLabel.h */, + 49DAB4FD6D43048A4BF97C48A5B23D72 /* UICountingLabel.m */, + 365DFCF4EE7A394DDC0368574B44A882 /* Support Files */, + ); + name = UICountingLabel; + path = UICountingLabel; + sourceTree = ""; + }; + A9AC57A125B588A5297559BA932185C3 /* Expecta */ = { + isa = PBXGroup; + children = ( + 44A2DB3005044E852D75292B58153E42 /* EXPBlockDefinedMatcher.h */, + 053654A934F7F454B420FE8990DA6FEF /* EXPBlockDefinedMatcher.m */, + 585A0EBF4E489E8B1BF636D2C34F3C65 /* EXPDefines.h */, + 316A30EDFF70759CB2158DB13E05B460 /* EXPDoubleTuple.h */, + 58AD2F1E42A42B719863E56CC42D99B6 /* EXPDoubleTuple.m */, + 2B509D0447156624FC6D425B52388FB5 /* Expecta.h */, + E49036F950DFFE52675366C4EFD935F5 /* ExpectaObject.h */, + 572D9B0D34B55FCEA9AF53E01FC06BEB /* ExpectaObject.m */, + DB6A89509590D2D83ADBDD691C38882A /* ExpectaSupport.h */, + 0BE95559A4D8E2EC8B06D606C032D7AC /* ExpectaSupport.m */, + 0BE31B7BAB3A80AFDD6C4509310AF3CC /* EXPExpect.h */, + 4EA355C2281BC4D4373535AA2B0544BD /* EXPExpect.m */, + 38C872119DA784037BD981DE17CA0E18 /* EXPFloatTuple.h */, + 5E96404373315AB7147DC98335007619 /* EXPFloatTuple.m */, + E4F24D8BA97A4EA38ACC8086C13BB4BE /* EXPMatcher.h */, + F1C31A1291283C195CE77B761A0826C6 /* EXPMatcherHelpers.h */, + 982B0433336ED2CCB4038A3A2E101FB4 /* EXPMatcherHelpers.m */, + 6EABE6ACDA0D9C6B8B7A1A83B32D71D9 /* EXPMatchers.h */, + C83B2AEEBA718BA79220FFD656F4712C /* EXPMatchers+beCloseTo.h */, + E04363B4A041813123E16079D1124CB3 /* EXPMatchers+beCloseTo.m */, + E7CEBC07C47A5AF801D99F90B6E6F8D4 /* EXPMatchers+beFalsy.h */, + 0EFC577F430ED5D861CDC056E3A3A180 /* EXPMatchers+beFalsy.m */, + 5B230920F24A541981F80A5178E1A31D /* EXPMatchers+beginWith.h */, + 382520E0D1A5323C662D99172257675F /* EXPMatchers+beginWith.m */, + E7FEB7CBEF5677C81C545B8C8597DE37 /* EXPMatchers+beGreaterThan.h */, + 3B8B859C118E76F4E2E2655C7B5AD14A /* EXPMatchers+beGreaterThan.m */, + 991B4030A7FC7AE8FA7A112841B73997 /* EXPMatchers+beGreaterThanOrEqualTo.h */, + C4600C60E47FEC2360ED7AB6D8CAC9F5 /* EXPMatchers+beGreaterThanOrEqualTo.m */, + A4F597B38F1FCB2B1728FCE05565AFE7 /* EXPMatchers+beIdenticalTo.h */, + FE4578AADA6DC7C0527B04E75C227E15 /* EXPMatchers+beIdenticalTo.m */, + C205FDAE8D78410E054A4DDDEC51B57B /* EXPMatchers+beInstanceOf.h */, + 037986BD30C5472825602C816F6643F6 /* EXPMatchers+beInstanceOf.m */, + DD4CA93DA38D1B0E9BDE06EFFA2445F0 /* EXPMatchers+beInTheRangeOf.h */, + 832D8D1EF0B2F1CAFBD9EAA0A98EEE0A /* EXPMatchers+beInTheRangeOf.m */, + B93307C07F94D52E97A9797FE2D79AF6 /* EXPMatchers+beKindOf.h */, + 1EB4632D477D92BA057F7FFFA7700E12 /* EXPMatchers+beKindOf.m */, + 09C0C8790C92FC14EC398F79710E041F /* EXPMatchers+beLessThan.h */, + BD629F6A967ED98B84DC2854DE50EDF8 /* EXPMatchers+beLessThan.m */, + F0C5D1678CAFB5BE4EB827D5F0F1EDCE /* EXPMatchers+beLessThanOrEqualTo.h */, + E0A8E28267F0034D64DFA9D4692A8226 /* EXPMatchers+beLessThanOrEqualTo.m */, + EF7E9C2B30498466FC61AE0577C80009 /* EXPMatchers+beNil.h */, + AB346C1CE5D0CD1E1371D8CFE8F03C2E /* EXPMatchers+beNil.m */, + 00E86E09D3ED5CCCACACF31EA6E77A7C /* EXPMatchers+beSubclassOf.h */, + 36195B7DD6D38283E09207495C4A98A5 /* EXPMatchers+beSubclassOf.m */, + 4D74AC1CBC358331B1BFAF461439AB19 /* EXPMatchers+beSupersetOf.h */, + B2FDF7A346CFDFAD6B1AB2568A3ECF55 /* EXPMatchers+beSupersetOf.m */, + 88E1460D25DCA6170DA0462A1D7B8D99 /* EXPMatchers+beTruthy.h */, + 28812166AA554027A23068B1F8798BBB /* EXPMatchers+beTruthy.m */, + 2DEF37F1554E16CEF0C13E0AE6F069D2 /* EXPMatchers+conformTo.h */, + 58CED10CE87F87D9793C74A0DCCBE5F3 /* EXPMatchers+conformTo.m */, + 66E65047B2C7B1371C6EFB9A1579A2C1 /* EXPMatchers+contain.h */, + C64D910E05D2B1997DD8A24CEC3DF47C /* EXPMatchers+contain.m */, + 7E90759C32DED074C25D963D96D48538 /* EXPMatchers+endWith.h */, + 5186FFC69C2E106F6D18778B3EC37767 /* EXPMatchers+endWith.m */, + 3BE0CD29311E941E6F0E2DE8BFD8C2FF /* EXPMatchers+equal.h */, + 596F09D163635694C77872B8CF0966AC /* EXPMatchers+equal.m */, + F4F49E2D687969D24521A1054CF858D7 /* EXPMatchers+haveCountOf.h */, + 11B11593494280E87A83E8D8B7507AF0 /* EXPMatchers+haveCountOf.m */, + 6FDC2E3E9DF155E99B145B74E87FC903 /* EXPMatchers+match.h */, + 6F69E9F8C323A4223277FDBCB7E38000 /* EXPMatchers+match.m */, + F3859EB26BA9C5BA13B18A608B0726D3 /* EXPMatchers+postNotification.h */, + C80B0DFACA5D26F6598C74528866A5C1 /* EXPMatchers+postNotification.m */, + C272FA1A3E691EBD62ADE01CFC9FCC38 /* EXPMatchers+raise.h */, + 4D760C2DFD0768A9AAA71A47DBDDD411 /* EXPMatchers+raise.m */, + 1534926F838DB04A4825EB8F1AE46CB6 /* EXPMatchers+raiseWithReason.h */, + 28A9BA3AC7B5F1A9B7BB6E0C2F820CBF /* EXPMatchers+raiseWithReason.m */, + 690372F83B29285EE4199586D8DC7150 /* EXPMatchers+respondTo.h */, + 3876C9B7C41F6BCE7B5CA574B25E9656 /* EXPMatchers+respondTo.m */, + 8DD65D5BC7A96A0E902FF7A973C1B7CB /* EXPUnsupportedObject.h */, + 65ED954FA559049A4828BD5F5C520070 /* EXPUnsupportedObject.m */, + 64E26C39D1714411224A2FAFE93CB53D /* NSObject+Expecta.h */, + F289FEAB8348D9D1E6F77233AF824FA2 /* NSValue+Expecta.h */, + BB7C75D70C1567D8FBB71CC050E07184 /* NSValue+Expecta.m */, + D43CBD10B41166F94735C6F26D63DA62 /* Support Files */, + ); + name = Expecta; + path = Expecta; + sourceTree = ""; + }; + D43CBD10B41166F94735C6F26D63DA62 /* Support Files */ = { + isa = PBXGroup; + children = ( + 27D84D20A73625020B4890C161774190 /* Expecta.xcconfig */, + FD904907F3F34A1D28E900EFB5B72D9F /* Expecta-dummy.m */, + 579A217DF362B510BEA5FDB1B00FBE5E /* Expecta-prefix.pch */, + ); + name = "Support Files"; + path = "../Target Support Files/Expecta"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 05E58D356A38DD487823D5BE24334920 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 56DF862FDB341B9BFF571308CB65D1E2 /* EXPBlockDefinedMatcher.h in Headers */, + E0F03C95E05A98F39D1DC1A98385803E /* EXPDefines.h in Headers */, + AC5A673EB5F87A58AEC0ED278F61DD67 /* EXPDoubleTuple.h in Headers */, + 0AC841465E3CA33A2D5A18B46C2A7678 /* Expecta.h in Headers */, + A6B84E4776F9B1A6A60F8D1ADC8AF807 /* ExpectaObject.h in Headers */, + 5504E1CA910F4258DDAFD0C25AF8D490 /* ExpectaSupport.h in Headers */, + 770E58F3AB82B2A21DC0F2207328AC4D /* EXPExpect.h in Headers */, + A688437F602916EEDEE68C80545A3D15 /* EXPFloatTuple.h in Headers */, + 7E2C04AB8CB1D40C13D5FD52B1F1327E /* EXPMatcher.h in Headers */, + 5329BE09734B1F03EF22BE39A97D51DD /* EXPMatcherHelpers.h in Headers */, + 88C4D2F85056EA7F7535106211147ECC /* EXPMatchers+beCloseTo.h in Headers */, + 8FBA1C7BEC45C028C2288189DBD810C9 /* EXPMatchers+beFalsy.h in Headers */, + 4BD994BE09FE75E3BC1B1583E815C6ED /* EXPMatchers+beginWith.h in Headers */, + 7F00B5C0B48374699FDA4AF2195F37F3 /* EXPMatchers+beGreaterThan.h in Headers */, + FC9ACAFA4E12B4D41007910974A7FCC9 /* EXPMatchers+beGreaterThanOrEqualTo.h in Headers */, + 072E8F29228E95010CF6B82102E59E8A /* EXPMatchers+beIdenticalTo.h in Headers */, + D6A7F64A32E06AFE5E4DC9167E24F016 /* EXPMatchers+beInstanceOf.h in Headers */, + 3BBA71B2E9E5B9806E4A00A5915F69F7 /* EXPMatchers+beInTheRangeOf.h in Headers */, + F9195123C863E423DF77D4F6D8B37C2C /* EXPMatchers+beKindOf.h in Headers */, + 09848E9B8DF8DBBB1263FBB91DAA264E /* EXPMatchers+beLessThan.h in Headers */, + C7634203CCAE9061181FF1E509C569A4 /* EXPMatchers+beLessThanOrEqualTo.h in Headers */, + 0CBF5CAA8F3E1589857BC6CEE5E042F8 /* EXPMatchers+beNil.h in Headers */, + 64D92EB797C2CB0A09A128B190DA6E77 /* EXPMatchers+beSubclassOf.h in Headers */, + 240B2559B270C0497F375F56B84C5266 /* EXPMatchers+beSupersetOf.h in Headers */, + 6EE4611B91A104D540D3D4094F25228B /* EXPMatchers+beTruthy.h in Headers */, + 041F0924D6BBCA56F44CFFF7C81C509B /* EXPMatchers+conformTo.h in Headers */, + 335CCD82F4E8B3CD7AF8CE57EBF36F4F /* EXPMatchers+contain.h in Headers */, + 6A37D9AAA0B7BD3336D5F2DFBAF31AD3 /* EXPMatchers+endWith.h in Headers */, + DBA2ACB360E11D42FD68312A1C48887F /* EXPMatchers+equal.h in Headers */, + 2858702E979011C83F32DD7417BE3050 /* EXPMatchers+haveCountOf.h in Headers */, + 0373040B6D0EC3BF9932B60FB8452B11 /* EXPMatchers+match.h in Headers */, + 32DE8BF73DA69143816F16AFC6A7C019 /* EXPMatchers+postNotification.h in Headers */, + 9817696462CA759792EB02DEF0EEFF74 /* EXPMatchers+raise.h in Headers */, + 26EE69036F8E1D37693B1CC6F4EE184B /* EXPMatchers+raiseWithReason.h in Headers */, + FD7BD436456F97A418DE68561354EC4B /* EXPMatchers+respondTo.h in Headers */, + 1722F83A4D5ECBEDF3E9C9410A259304 /* EXPMatchers.h in Headers */, + 07CEA1D649A728B0D963AD1113C98B58 /* EXPUnsupportedObject.h in Headers */, + A153917F76E52B405C5914771613E9D4 /* NSObject+Expecta.h in Headers */, + 6947A74A7CCE879510F8CD52A7D0272A /* NSValue+Expecta.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 2F92FB29A97521CD12F984C9A3A7CD5E /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + ADC3FF08FCE3A3B1B1AF2C3A1FB9F722 /* UICountingLabel.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 4070EE8B4B78023C1F3EC01E9020F297 /* UICountingLabel */ = { + isa = PBXNativeTarget; + buildConfigurationList = F2F8776F1965E8C1A52F7E59C605DB95 /* Build configuration list for PBXNativeTarget "UICountingLabel" */; + buildPhases = ( + 2858A299BB862D87C8CF97ED6D780115 /* Sources */, + 197371D30EE334D949F278307B32D6FF /* Frameworks */, + 2F92FB29A97521CD12F984C9A3A7CD5E /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = UICountingLabel; + productName = UICountingLabel; + productReference = DE26012985CC19107D01B5F734D81646 /* libUICountingLabel.a */; + productType = "com.apple.product-type.library.static"; + }; + 46D68D26DCAAC4D999D549BA45F0B0EC /* Expecta */ = { + isa = PBXNativeTarget; + buildConfigurationList = D88EDEBF3855FDEF25FC2B2C9BC585A7 /* Build configuration list for PBXNativeTarget "Expecta" */; + buildPhases = ( + 5A1715485AF02533C3EE06033E9DA73F /* Sources */, + 03F8C9DE4B5918EEA35CE61AA3A1186A /* Frameworks */, + 05E58D356A38DD487823D5BE24334920 /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Expecta; + productName = Expecta; + productReference = EA50E18D8544CC5B9E0CF0FD3FA1D163 /* libExpecta.a */; + productType = "com.apple.product-type.library.static"; + }; + 5CC55225AE7A78963BBE1EBBEBB8BB7D /* Pods-PNChartDemo */ = { + isa = PBXNativeTarget; + buildConfigurationList = 16C3264BB26C6DEDEF3F508613AEBEEE /* Build configuration list for PBXNativeTarget "Pods-PNChartDemo" */; + buildPhases = ( + 4C32BBC96BD5E2A29121453F288C0E21 /* Sources */, + E528752615F14DE88CEE6EC25701E42B /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 355ACC160B1CFD568D869F5E56AE15C6 /* PBXTargetDependency */, + ); + name = "Pods-PNChartDemo"; + productName = "Pods-PNChartDemo"; + productReference = 40778BB6582503466ACFBE7E63EDC440 /* libPods-PNChartDemo.a */; + productType = "com.apple.product-type.library.static"; + }; + 7CEA00C387503012EE32EE5BB58CB2E1 /* Pods-PNChartTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 87428D2C975CC7C29DDA3D252039B7A5 /* Build configuration list for PBXNativeTarget "Pods-PNChartTests" */; + buildPhases = ( + 931CC81A3335B46B6462426E1C702F65 /* Sources */, + 49455F7404E1D9F89FAC6A2AC8311039 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + C4E70D76F00E450D67DB9A51E36B36C9 /* PBXTargetDependency */, + ); + name = "Pods-PNChartTests"; + productName = "Pods-PNChartTests"; + productReference = 65070186C5E09543F1721412A5659108 /* libPods-PNChartTests.a */; + productType = "com.apple.product-type.library.static"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + D41D8CD98F00B204E9800998ECF8427E /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0930; + LastUpgradeCheck = 0930; + }; + buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 7DB346D0F39D3F0E887471402A8071AB; + productRefGroup = 7FC0C0EFE3E513C41492E15EAF275310 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 46D68D26DCAAC4D999D549BA45F0B0EC /* Expecta */, + 5CC55225AE7A78963BBE1EBBEBB8BB7D /* Pods-PNChartDemo */, + 7CEA00C387503012EE32EE5BB58CB2E1 /* Pods-PNChartTests */, + 4070EE8B4B78023C1F3EC01E9020F297 /* UICountingLabel */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + 2858A299BB862D87C8CF97ED6D780115 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 712EB3243017083770C6D7DB3E00596D /* UICountingLabel-dummy.m in Sources */, + 4D7F229C964C28BB52FE46858B9FDC1B /* UICountingLabel.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4C32BBC96BD5E2A29121453F288C0E21 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4E491997DC6C1AF8CA3F57254995BD10 /* Pods-PNChartDemo-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 5A1715485AF02533C3EE06033E9DA73F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + CC995F4F36E9D6237AFC6F729364B867 /* EXPBlockDefinedMatcher.m in Sources */, + 045E77138594FCD0492D74EE7C22AC90 /* EXPDoubleTuple.m in Sources */, + E95DE019212836608A35BF3270AADF17 /* Expecta-dummy.m in Sources */, + A904D2D6242F68CC3B959E2B0FC8B4F9 /* ExpectaObject.m in Sources */, + C091203A57422574B3263D1E9BA53A87 /* ExpectaSupport.m in Sources */, + 1C74D210067A2D584AA672E61F246ECC /* EXPExpect.m in Sources */, + 643DE0287F1066D083368EAC928DF078 /* EXPFloatTuple.m in Sources */, + 63CDCCAC82CBC33021220531D93213A2 /* EXPMatcherHelpers.m in Sources */, + 4943F7D828D56A874ACCA7AC312F863B /* EXPMatchers+beCloseTo.m in Sources */, + C498F24E736A80A0F6C440DBC33AF494 /* EXPMatchers+beFalsy.m in Sources */, + C670343470EAC260E60ABD463CC39E2D /* EXPMatchers+beginWith.m in Sources */, + 2C944499E3BB44E17E10959A76BBAEA3 /* EXPMatchers+beGreaterThan.m in Sources */, + CDA268F5B643324DD61A0E25BD4179ED /* EXPMatchers+beGreaterThanOrEqualTo.m in Sources */, + B709C0890B67EB6C1AB9B9738CDBEEC6 /* EXPMatchers+beIdenticalTo.m in Sources */, + B2880B5D7D91AACFCEF345934CFEBA55 /* EXPMatchers+beInstanceOf.m in Sources */, + 28BC58EE3C7374C4C2DEF6D029011C84 /* EXPMatchers+beInTheRangeOf.m in Sources */, + 885C2534832AF6B1DFA98FA19C4D9994 /* EXPMatchers+beKindOf.m in Sources */, + A12B39559E464A1089E4389274973616 /* EXPMatchers+beLessThan.m in Sources */, + 2523657BEE249A532CDFD495AC911F39 /* EXPMatchers+beLessThanOrEqualTo.m in Sources */, + 0435080233FFD861A266AB43BE3279D3 /* EXPMatchers+beNil.m in Sources */, + 71FBC2F8907E29EB767026E6A08F7EEF /* EXPMatchers+beSubclassOf.m in Sources */, + 391226D83570CA724B533A2C609A5EF5 /* EXPMatchers+beSupersetOf.m in Sources */, + 1E2343F7AE04C5D386CCD455E84F13E0 /* EXPMatchers+beTruthy.m in Sources */, + 58E38027B0A4F6CA7BE54F0AE8D4885B /* EXPMatchers+conformTo.m in Sources */, + FE84239BE923F217FD38E45B4F770EFD /* EXPMatchers+contain.m in Sources */, + F8E39087737225714939DB0252FB1114 /* EXPMatchers+endWith.m in Sources */, + 863C5CC8F4698A0C85AB53C9B072D889 /* EXPMatchers+equal.m in Sources */, + 24FF4A3B66A2F383BA14790790108406 /* EXPMatchers+haveCountOf.m in Sources */, + 0FE4C580D709657792E5661E74F171D5 /* EXPMatchers+match.m in Sources */, + D94F3CDE976C052BF0BD112E257A7F19 /* EXPMatchers+postNotification.m in Sources */, + A5CB8C92268FCAC7B00F12EE55B43338 /* EXPMatchers+raise.m in Sources */, + 1D622FBC8A4262E6B398F5CCCB1D9650 /* EXPMatchers+raiseWithReason.m in Sources */, + 5D50DA13C7A8B2AF549AA4F05E69F9F4 /* EXPMatchers+respondTo.m in Sources */, + ED087996824EE3256B222E3BAEBAB14D /* EXPUnsupportedObject.m in Sources */, + 4EB308BF802E6F21BABDA8B8718CC7AB /* NSValue+Expecta.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 931CC81A3335B46B6462426E1C702F65 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9DB6E85F01E893757CA49612C8F6B032 /* Pods-PNChartTests-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 355ACC160B1CFD568D869F5E56AE15C6 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = UICountingLabel; + target = 4070EE8B4B78023C1F3EC01E9020F297 /* UICountingLabel */; + targetProxy = D4F70E4505E1C36F6CCA5CEE16DBE0BF /* PBXContainerItemProxy */; + }; + C4E70D76F00E450D67DB9A51E36B36C9 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Expecta; + target = 46D68D26DCAAC4D999D549BA45F0B0EC /* Expecta */; + targetProxy = 47EAF2D6AF32B41D97D362B1CA86F5EF /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 0804E0C951110A6CA607C424C37BDCEE /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1BD86E5DFDD4818F16961D4ACDACE5F5 /* Pods-PNChartTests.release.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MACH_O_TYPE = staticlib; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 1EE19F5DD95931924296F637BF18BD8F /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGNING_ALLOWED = NO; + CODE_SIGNING_REQUIRED = NO; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "POD_CONFIGURATION_DEBUG=1", + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + STRIP_INSTALLED_PRODUCT = NO; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SYMROOT = "${SRCROOT}/../build"; + }; + name = Debug; + }; + 4113A68BAA6A73BFEE0ADF75F66AB594 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B770A53CF4F704C9ECC588E518F42CF6 /* Pods-PNChartDemo.debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MACH_O_TYPE = staticlib; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 585223F1BE1244956BE113C8382DD56C /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 27D84D20A73625020B4890C161774190 /* Expecta.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/Expecta/Expecta-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = Expecta; + PRODUCT_NAME = Expecta; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 5AC8C72802687219ADF24C145B8DD1A8 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = C30D0A792ADAB3D5DC9F1FE9500E3781 /* Pods-PNChartTests.debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MACH_O_TYPE = staticlib; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 67471BC593E88CC431DF7767924B9F74 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 83998CB288C558456A59FC59DAF88FA8 /* UICountingLabel.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/UICountingLabel/UICountingLabel-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 5.0; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = UICountingLabel; + PRODUCT_NAME = UICountingLabel; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + CC531B0F03D903E3D4D48F53FC766B5D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 6E1856F94341D88D8625CEDFE764D5BF /* Pods-PNChartDemo.release.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MACH_O_TYPE = staticlib; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + F339FA0E7113164AE831FACBF680C889 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 83998CB288C558456A59FC59DAF88FA8 /* UICountingLabel.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/UICountingLabel/UICountingLabel-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 5.0; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = UICountingLabel; + PRODUCT_NAME = UICountingLabel; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + F4568DEE257655D290C2B9CEAB37C934 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGNING_ALLOWED = NO; + CODE_SIGNING_REQUIRED = NO; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + "POD_CONFIGURATION_RELEASE=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_NAME = "$(TARGET_NAME)"; + STRIP_INSTALLED_PRODUCT = NO; + SYMROOT = "${SRCROOT}/../build"; + }; + name = Release; + }; + FD369066AD69E3ADB2D9194FC494DEC9 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 27D84D20A73625020B4890C161774190 /* Expecta.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/Expecta/Expecta-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = Expecta; + PRODUCT_NAME = Expecta; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 16C3264BB26C6DEDEF3F508613AEBEEE /* Build configuration list for PBXNativeTarget "Pods-PNChartDemo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4113A68BAA6A73BFEE0ADF75F66AB594 /* Debug */, + CC531B0F03D903E3D4D48F53FC766B5D /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1EE19F5DD95931924296F637BF18BD8F /* Debug */, + F4568DEE257655D290C2B9CEAB37C934 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 87428D2C975CC7C29DDA3D252039B7A5 /* Build configuration list for PBXNativeTarget "Pods-PNChartTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 5AC8C72802687219ADF24C145B8DD1A8 /* Debug */, + 0804E0C951110A6CA607C424C37BDCEE /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + D88EDEBF3855FDEF25FC2B2C9BC585A7 /* Build configuration list for PBXNativeTarget "Expecta" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 585223F1BE1244956BE113C8382DD56C /* Debug */, + FD369066AD69E3ADB2D9194FC494DEC9 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + F2F8776F1965E8C1A52F7E59C605DB95 /* Build configuration list for PBXNativeTarget "UICountingLabel" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F339FA0E7113164AE831FACBF680C889 /* Debug */, + 67471BC593E88CC431DF7767924B9F74 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = D41D8CD98F00B204E9800998ECF8427E /* Project object */; +} diff --git a/Pods/Target Support Files/Expecta/Expecta-dummy.m b/Pods/Target Support Files/Expecta/Expecta-dummy.m new file mode 100644 index 00000000..c4c252a6 --- /dev/null +++ b/Pods/Target Support Files/Expecta/Expecta-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Expecta : NSObject +@end +@implementation PodsDummy_Expecta +@end diff --git a/Pods/Target Support Files/Expecta/Expecta-prefix.pch b/Pods/Target Support Files/Expecta/Expecta-prefix.pch new file mode 100644 index 00000000..beb2a244 --- /dev/null +++ b/Pods/Target Support Files/Expecta/Expecta-prefix.pch @@ -0,0 +1,12 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + diff --git a/Pods/Target Support Files/Expecta/Expecta.xcconfig b/Pods/Target Support Files/Expecta/Expecta.xcconfig new file mode 100644 index 00000000..6fdd374e --- /dev/null +++ b/Pods/Target Support Files/Expecta/Expecta.xcconfig @@ -0,0 +1,12 @@ +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Expecta +ENABLE_BITCODE = NO +FRAMEWORK_SEARCH_PATHS = $(inherited) "$(PLATFORM_DIR)/Developer/Library/Frameworks" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Expecta" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Expecta" +OTHER_LDFLAGS = -framework "Foundation" -framework "XCTest" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/Expecta +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES diff --git a/Pods/Target Support Files/Pods-PNChartDemo/Pods-PNChartDemo-acknowledgements.markdown b/Pods/Target Support Files/Pods-PNChartDemo/Pods-PNChartDemo-acknowledgements.markdown new file mode 100644 index 00000000..3384b4d1 --- /dev/null +++ b/Pods/Target Support Files/Pods-PNChartDemo/Pods-PNChartDemo-acknowledgements.markdown @@ -0,0 +1,27 @@ +# Acknowledgements +This application makes use of the following third party libraries: + +## UICountingLabel + +The MIT License (MIT) + +Copyright (c) 2013 Tim Gostony + +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/Pods/Target Support Files/Pods-PNChartDemo/Pods-PNChartDemo-acknowledgements.plist b/Pods/Target Support Files/Pods-PNChartDemo/Pods-PNChartDemo-acknowledgements.plist new file mode 100644 index 00000000..b7527d9a --- /dev/null +++ b/Pods/Target Support Files/Pods-PNChartDemo/Pods-PNChartDemo-acknowledgements.plist @@ -0,0 +1,59 @@ + + + + + PreferenceSpecifiers + + + FooterText + This application makes use of the following third party libraries: + Title + Acknowledgements + Type + PSGroupSpecifier + + + FooterText + The MIT License (MIT) + +Copyright (c) 2013 Tim Gostony + +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 + UICountingLabel + Type + PSGroupSpecifier + + + FooterText + Generated by CocoaPods - https://cocoapods.org + Title + + Type + PSGroupSpecifier + + + StringsTable + Acknowledgements + Title + Acknowledgements + + diff --git a/Pods/Target Support Files/Pods-PNChartDemo/Pods-PNChartDemo-dummy.m b/Pods/Target Support Files/Pods-PNChartDemo/Pods-PNChartDemo-dummy.m new file mode 100644 index 00000000..7073529b --- /dev/null +++ b/Pods/Target Support Files/Pods-PNChartDemo/Pods-PNChartDemo-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Pods_PNChartDemo : NSObject +@end +@implementation PodsDummy_Pods_PNChartDemo +@end diff --git a/Pods/Target Support Files/Pods-PNChartDemo/Pods-PNChartDemo-frameworks.sh b/Pods/Target Support Files/Pods-PNChartDemo/Pods-PNChartDemo-frameworks.sh new file mode 100755 index 00000000..08e3eaac --- /dev/null +++ b/Pods/Target Support Files/Pods-PNChartDemo/Pods-PNChartDemo-frameworks.sh @@ -0,0 +1,146 @@ +#!/bin/sh +set -e +set -u +set -o pipefail + +if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then + # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy + # frameworks to, so exit 0 (signalling the script phase was successful). + exit 0 +fi + +echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" +mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + +COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}" +SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" + +# Used as a return value for each invocation of `strip_invalid_archs` function. +STRIP_BINARY_RETVAL=0 + +# This protects against multiple targets copying the same framework dependency at the same time. The solution +# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html +RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") + +# Copies and strips a vendored framework +install_framework() +{ + if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then + local source="${BUILT_PRODUCTS_DIR}/$1" + elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then + local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" + elif [ -r "$1" ]; then + local source="$1" + fi + + local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + + if [ -L "${source}" ]; then + echo "Symlinked..." + source="$(readlink "${source}")" + fi + + # Use filter instead of exclude so missing patterns don't throw errors. + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" + + local basename + basename="$(basename -s .framework "$1")" + binary="${destination}/${basename}.framework/${basename}" + if ! [ -r "$binary" ]; then + binary="${destination}/${basename}" + fi + + # Strip invalid architectures so "fat" simulator / device frameworks work on device + if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then + strip_invalid_archs "$binary" + fi + + # Resign the code if required by the build settings to avoid unstable apps + code_sign_if_enabled "${destination}/$(basename "$1")" + + # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. + if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then + local swift_runtime_libs + swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) + for lib in $swift_runtime_libs; do + echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" + rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" + code_sign_if_enabled "${destination}/${lib}" + done + fi +} + +# Copies and strips a vendored dSYM +install_dsym() { + local source="$1" + if [ -r "$source" ]; then + # Copy the dSYM into a the targets temp dir. + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}" + + local basename + basename="$(basename -s .framework.dSYM "$source")" + binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}" + + # Strip invalid architectures so "fat" simulator / device frameworks work on device + if [[ "$(file "$binary")" == *"Mach-O dSYM companion"* ]]; then + strip_invalid_archs "$binary" + fi + + if [[ $STRIP_BINARY_RETVAL == 1 ]]; then + # Move the stripped file into its final destination. + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}" + else + # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing. + touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM" + fi + fi +} + +# Signs a framework with the provided identity +code_sign_if_enabled() { + if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then + # Use the current code_sign_identitiy + echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" + local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" + + if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then + code_sign_cmd="$code_sign_cmd &" + fi + echo "$code_sign_cmd" + eval "$code_sign_cmd" + fi +} + +# Strip invalid architectures +strip_invalid_archs() { + binary="$1" + # Get architectures for current target binary + binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)" + # Intersect them with the architectures we are building for + intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)" + # If there are no archs supported by this binary then warn the user + if [[ -z "$intersected_archs" ]]; then + echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." + STRIP_BINARY_RETVAL=0 + return + fi + stripped="" + for arch in $binary_archs; do + if ! [[ "${ARCHS}" == *"$arch"* ]]; then + # Strip non-valid architectures in-place + lipo -remove "$arch" -output "$binary" "$binary" || exit 1 + stripped="$stripped $arch" + fi + done + if [[ "$stripped" ]]; then + echo "Stripped $binary of architectures:$stripped" + fi + STRIP_BINARY_RETVAL=1 +} + +if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then + wait +fi diff --git a/Pods/Target Support Files/Pods-PNChartDemo/Pods-PNChartDemo-resources.sh b/Pods/Target Support Files/Pods-PNChartDemo/Pods-PNChartDemo-resources.sh new file mode 100755 index 00000000..345301f2 --- /dev/null +++ b/Pods/Target Support Files/Pods-PNChartDemo/Pods-PNChartDemo-resources.sh @@ -0,0 +1,118 @@ +#!/bin/sh +set -e +set -u +set -o pipefail + +if [ -z ${UNLOCALIZED_RESOURCES_FOLDER_PATH+x} ]; then + # If UNLOCALIZED_RESOURCES_FOLDER_PATH is not set, then there's nowhere for us to copy + # resources to, so exit 0 (signalling the script phase was successful). + exit 0 +fi + +mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" + +RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt +> "$RESOURCES_TO_COPY" + +XCASSET_FILES=() + +# This protects against multiple targets copying the same framework dependency at the same time. The solution +# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html +RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") + +case "${TARGETED_DEVICE_FAMILY:-}" in + 1,2) + TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" + ;; + 1) + TARGET_DEVICE_ARGS="--target-device iphone" + ;; + 2) + TARGET_DEVICE_ARGS="--target-device ipad" + ;; + 3) + TARGET_DEVICE_ARGS="--target-device tv" + ;; + 4) + TARGET_DEVICE_ARGS="--target-device watch" + ;; + *) + TARGET_DEVICE_ARGS="--target-device mac" + ;; +esac + +install_resource() +{ + if [[ "$1" = /* ]] ; then + RESOURCE_PATH="$1" + else + RESOURCE_PATH="${PODS_ROOT}/$1" + fi + if [[ ! -e "$RESOURCE_PATH" ]] ; then + cat << EOM +error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script. +EOM + exit 1 + fi + case $RESOURCE_PATH in + *.storyboard) + echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true + ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} + ;; + *.xib) + echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true + ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} + ;; + *.framework) + echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true + mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + ;; + *.xcdatamodel) + echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true + xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" + ;; + *.xcdatamodeld) + echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true + xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" + ;; + *.xcmappingmodel) + echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true + xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" + ;; + *.xcassets) + ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH" + XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") + ;; + *) + echo "$RESOURCE_PATH" || true + echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" + ;; + esac +} + +mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then + mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" + rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +fi +rm -f "$RESOURCES_TO_COPY" + +if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "${XCASSET_FILES:-}" ] +then + # Find all other xcassets (this unfortunately includes those of path pods and other targets). + OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) + while read line; do + if [[ $line != "${PODS_ROOT}*" ]]; then + XCASSET_FILES+=("$line") + fi + done <<<"$OTHER_XCASSETS" + + if [ -z ${ASSETCATALOG_COMPILER_APPICON_NAME+x} ]; then + printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" + else + printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${TARGET_TEMP_DIR}/assetcatalog_generated_info_cocoapods.plist" + fi +fi diff --git a/Pods/Target Support Files/Pods-PNChartDemo/Pods-PNChartDemo.debug.xcconfig b/Pods/Target Support Files/Pods-PNChartDemo/Pods-PNChartDemo.debug.xcconfig new file mode 100644 index 00000000..051dacd1 --- /dev/null +++ b/Pods/Target Support Files/Pods-PNChartDemo/Pods-PNChartDemo.debug.xcconfig @@ -0,0 +1,9 @@ +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Expecta" "${PODS_ROOT}/Headers/Public/UICountingLabel" +LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/UICountingLabel" +OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Expecta" -isystem "${PODS_ROOT}/Headers/Public/UICountingLabel" +OTHER_LDFLAGS = $(inherited) -ObjC -l"UICountingLabel" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. +PODS_ROOT = ${SRCROOT}/Pods diff --git a/Pods/Target Support Files/Pods-PNChartDemo/Pods-PNChartDemo.release.xcconfig b/Pods/Target Support Files/Pods-PNChartDemo/Pods-PNChartDemo.release.xcconfig new file mode 100644 index 00000000..051dacd1 --- /dev/null +++ b/Pods/Target Support Files/Pods-PNChartDemo/Pods-PNChartDemo.release.xcconfig @@ -0,0 +1,9 @@ +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Expecta" "${PODS_ROOT}/Headers/Public/UICountingLabel" +LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/UICountingLabel" +OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Expecta" -isystem "${PODS_ROOT}/Headers/Public/UICountingLabel" +OTHER_LDFLAGS = $(inherited) -ObjC -l"UICountingLabel" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. +PODS_ROOT = ${SRCROOT}/Pods diff --git a/Pods/Target Support Files/Pods-PNChartTests/Pods-PNChartTests-acknowledgements.markdown b/Pods/Target Support Files/Pods-PNChartTests/Pods-PNChartTests-acknowledgements.markdown new file mode 100644 index 00000000..c6be2313 --- /dev/null +++ b/Pods/Target Support Files/Pods-PNChartTests/Pods-PNChartTests-acknowledgements.markdown @@ -0,0 +1,26 @@ +# Acknowledgements +This application makes use of the following third party libraries: + +## Expecta + +Copyright (c) 2011-2015 Specta Team - https://github.com/specta + +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/Pods/Target Support Files/Pods-PNChartTests/Pods-PNChartTests-acknowledgements.plist b/Pods/Target Support Files/Pods-PNChartTests/Pods-PNChartTests-acknowledgements.plist new file mode 100644 index 00000000..e46fb587 --- /dev/null +++ b/Pods/Target Support Files/Pods-PNChartTests/Pods-PNChartTests-acknowledgements.plist @@ -0,0 +1,58 @@ + + + + + PreferenceSpecifiers + + + FooterText + This application makes use of the following third party libraries: + Title + Acknowledgements + Type + PSGroupSpecifier + + + FooterText + Copyright (c) 2011-2015 Specta Team - https://github.com/specta + +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 + Expecta + Type + PSGroupSpecifier + + + FooterText + Generated by CocoaPods - https://cocoapods.org + Title + + Type + PSGroupSpecifier + + + StringsTable + Acknowledgements + Title + Acknowledgements + + diff --git a/Pods/Target Support Files/Pods-PNChartTests/Pods-PNChartTests-dummy.m b/Pods/Target Support Files/Pods-PNChartTests/Pods-PNChartTests-dummy.m new file mode 100644 index 00000000..fea988ce --- /dev/null +++ b/Pods/Target Support Files/Pods-PNChartTests/Pods-PNChartTests-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Pods_PNChartTests : NSObject +@end +@implementation PodsDummy_Pods_PNChartTests +@end diff --git a/Pods/Target Support Files/Pods-PNChartTests/Pods-PNChartTests-frameworks.sh b/Pods/Target Support Files/Pods-PNChartTests/Pods-PNChartTests-frameworks.sh new file mode 100755 index 00000000..08e3eaac --- /dev/null +++ b/Pods/Target Support Files/Pods-PNChartTests/Pods-PNChartTests-frameworks.sh @@ -0,0 +1,146 @@ +#!/bin/sh +set -e +set -u +set -o pipefail + +if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then + # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy + # frameworks to, so exit 0 (signalling the script phase was successful). + exit 0 +fi + +echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" +mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + +COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}" +SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" + +# Used as a return value for each invocation of `strip_invalid_archs` function. +STRIP_BINARY_RETVAL=0 + +# This protects against multiple targets copying the same framework dependency at the same time. The solution +# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html +RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") + +# Copies and strips a vendored framework +install_framework() +{ + if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then + local source="${BUILT_PRODUCTS_DIR}/$1" + elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then + local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" + elif [ -r "$1" ]; then + local source="$1" + fi + + local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + + if [ -L "${source}" ]; then + echo "Symlinked..." + source="$(readlink "${source}")" + fi + + # Use filter instead of exclude so missing patterns don't throw errors. + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" + + local basename + basename="$(basename -s .framework "$1")" + binary="${destination}/${basename}.framework/${basename}" + if ! [ -r "$binary" ]; then + binary="${destination}/${basename}" + fi + + # Strip invalid architectures so "fat" simulator / device frameworks work on device + if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then + strip_invalid_archs "$binary" + fi + + # Resign the code if required by the build settings to avoid unstable apps + code_sign_if_enabled "${destination}/$(basename "$1")" + + # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. + if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then + local swift_runtime_libs + swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) + for lib in $swift_runtime_libs; do + echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" + rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" + code_sign_if_enabled "${destination}/${lib}" + done + fi +} + +# Copies and strips a vendored dSYM +install_dsym() { + local source="$1" + if [ -r "$source" ]; then + # Copy the dSYM into a the targets temp dir. + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}" + + local basename + basename="$(basename -s .framework.dSYM "$source")" + binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}" + + # Strip invalid architectures so "fat" simulator / device frameworks work on device + if [[ "$(file "$binary")" == *"Mach-O dSYM companion"* ]]; then + strip_invalid_archs "$binary" + fi + + if [[ $STRIP_BINARY_RETVAL == 1 ]]; then + # Move the stripped file into its final destination. + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}" + else + # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing. + touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM" + fi + fi +} + +# Signs a framework with the provided identity +code_sign_if_enabled() { + if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then + # Use the current code_sign_identitiy + echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" + local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" + + if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then + code_sign_cmd="$code_sign_cmd &" + fi + echo "$code_sign_cmd" + eval "$code_sign_cmd" + fi +} + +# Strip invalid architectures +strip_invalid_archs() { + binary="$1" + # Get architectures for current target binary + binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)" + # Intersect them with the architectures we are building for + intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)" + # If there are no archs supported by this binary then warn the user + if [[ -z "$intersected_archs" ]]; then + echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." + STRIP_BINARY_RETVAL=0 + return + fi + stripped="" + for arch in $binary_archs; do + if ! [[ "${ARCHS}" == *"$arch"* ]]; then + # Strip non-valid architectures in-place + lipo -remove "$arch" -output "$binary" "$binary" || exit 1 + stripped="$stripped $arch" + fi + done + if [[ "$stripped" ]]; then + echo "Stripped $binary of architectures:$stripped" + fi + STRIP_BINARY_RETVAL=1 +} + +if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then + wait +fi diff --git a/Pods/Target Support Files/Pods-PNChartTests/Pods-PNChartTests-resources.sh b/Pods/Target Support Files/Pods-PNChartTests/Pods-PNChartTests-resources.sh new file mode 100755 index 00000000..345301f2 --- /dev/null +++ b/Pods/Target Support Files/Pods-PNChartTests/Pods-PNChartTests-resources.sh @@ -0,0 +1,118 @@ +#!/bin/sh +set -e +set -u +set -o pipefail + +if [ -z ${UNLOCALIZED_RESOURCES_FOLDER_PATH+x} ]; then + # If UNLOCALIZED_RESOURCES_FOLDER_PATH is not set, then there's nowhere for us to copy + # resources to, so exit 0 (signalling the script phase was successful). + exit 0 +fi + +mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" + +RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt +> "$RESOURCES_TO_COPY" + +XCASSET_FILES=() + +# This protects against multiple targets copying the same framework dependency at the same time. The solution +# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html +RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") + +case "${TARGETED_DEVICE_FAMILY:-}" in + 1,2) + TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" + ;; + 1) + TARGET_DEVICE_ARGS="--target-device iphone" + ;; + 2) + TARGET_DEVICE_ARGS="--target-device ipad" + ;; + 3) + TARGET_DEVICE_ARGS="--target-device tv" + ;; + 4) + TARGET_DEVICE_ARGS="--target-device watch" + ;; + *) + TARGET_DEVICE_ARGS="--target-device mac" + ;; +esac + +install_resource() +{ + if [[ "$1" = /* ]] ; then + RESOURCE_PATH="$1" + else + RESOURCE_PATH="${PODS_ROOT}/$1" + fi + if [[ ! -e "$RESOURCE_PATH" ]] ; then + cat << EOM +error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script. +EOM + exit 1 + fi + case $RESOURCE_PATH in + *.storyboard) + echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true + ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} + ;; + *.xib) + echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true + ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} + ;; + *.framework) + echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true + mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + ;; + *.xcdatamodel) + echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true + xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" + ;; + *.xcdatamodeld) + echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true + xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" + ;; + *.xcmappingmodel) + echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true + xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" + ;; + *.xcassets) + ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH" + XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") + ;; + *) + echo "$RESOURCE_PATH" || true + echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" + ;; + esac +} + +mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then + mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" + rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +fi +rm -f "$RESOURCES_TO_COPY" + +if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "${XCASSET_FILES:-}" ] +then + # Find all other xcassets (this unfortunately includes those of path pods and other targets). + OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) + while read line; do + if [[ $line != "${PODS_ROOT}*" ]]; then + XCASSET_FILES+=("$line") + fi + done <<<"$OTHER_XCASSETS" + + if [ -z ${ASSETCATALOG_COMPILER_APPICON_NAME+x} ]; then + printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" + else + printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${TARGET_TEMP_DIR}/assetcatalog_generated_info_cocoapods.plist" + fi +fi diff --git a/Pods/Target Support Files/Pods-PNChartTests/Pods-PNChartTests.debug.xcconfig b/Pods/Target Support Files/Pods-PNChartTests/Pods-PNChartTests.debug.xcconfig new file mode 100644 index 00000000..12f815a2 --- /dev/null +++ b/Pods/Target Support Files/Pods-PNChartTests/Pods-PNChartTests.debug.xcconfig @@ -0,0 +1,10 @@ +FRAMEWORK_SEARCH_PATHS = $(inherited) $(PLATFORM_DIR)/Developer/Library/Frameworks "$(PLATFORM_DIR)/Developer/Library/Frameworks" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Expecta" "${PODS_ROOT}/Headers/Public/UICountingLabel" +LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Expecta" +OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Expecta" -isystem "${PODS_ROOT}/Headers/Public/UICountingLabel" +OTHER_LDFLAGS = $(inherited) -ObjC -l"Expecta" -framework "Foundation" -framework "XCTest" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. +PODS_ROOT = ${SRCROOT}/Pods diff --git a/Pods/Target Support Files/Pods-PNChartTests/Pods-PNChartTests.release.xcconfig b/Pods/Target Support Files/Pods-PNChartTests/Pods-PNChartTests.release.xcconfig new file mode 100644 index 00000000..12f815a2 --- /dev/null +++ b/Pods/Target Support Files/Pods-PNChartTests/Pods-PNChartTests.release.xcconfig @@ -0,0 +1,10 @@ +FRAMEWORK_SEARCH_PATHS = $(inherited) $(PLATFORM_DIR)/Developer/Library/Frameworks "$(PLATFORM_DIR)/Developer/Library/Frameworks" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Expecta" "${PODS_ROOT}/Headers/Public/UICountingLabel" +LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Expecta" +OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Expecta" -isystem "${PODS_ROOT}/Headers/Public/UICountingLabel" +OTHER_LDFLAGS = $(inherited) -ObjC -l"Expecta" -framework "Foundation" -framework "XCTest" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. +PODS_ROOT = ${SRCROOT}/Pods diff --git a/Pods/Target Support Files/UICountingLabel/UICountingLabel-dummy.m b/Pods/Target Support Files/UICountingLabel/UICountingLabel-dummy.m new file mode 100644 index 00000000..8e827c4b --- /dev/null +++ b/Pods/Target Support Files/UICountingLabel/UICountingLabel-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_UICountingLabel : NSObject +@end +@implementation PodsDummy_UICountingLabel +@end diff --git a/Pods/Target Support Files/UICountingLabel/UICountingLabel-prefix.pch b/Pods/Target Support Files/UICountingLabel/UICountingLabel-prefix.pch new file mode 100644 index 00000000..beb2a244 --- /dev/null +++ b/Pods/Target Support Files/UICountingLabel/UICountingLabel-prefix.pch @@ -0,0 +1,12 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + diff --git a/Pods/Target Support Files/UICountingLabel/UICountingLabel.xcconfig b/Pods/Target Support Files/UICountingLabel/UICountingLabel.xcconfig new file mode 100644 index 00000000..87f97d51 --- /dev/null +++ b/Pods/Target Support Files/UICountingLabel/UICountingLabel.xcconfig @@ -0,0 +1,9 @@ +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/UICountingLabel +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/UICountingLabel" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/UICountingLabel" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/UICountingLabel +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES diff --git a/Pods/UICountingLabel/LICENSE b/Pods/UICountingLabel/LICENSE new file mode 100644 index 00000000..5b7a7437 --- /dev/null +++ b/Pods/UICountingLabel/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2013 Tim Gostony + +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. \ No newline at end of file diff --git a/Pods/UICountingLabel/README.md b/Pods/UICountingLabel/README.md new file mode 100644 index 00000000..c792f6fc --- /dev/null +++ b/Pods/UICountingLabel/README.md @@ -0,0 +1,60 @@ +# UICountingLabel #### + +Adds animated counting support to `UILabel`. + + +## Setup ###### +Simply initialize a `UICountingLabel` the same way you set up a regular `UILabel`: + + UICountingLabel* myLabel = [[UICountingLabel alloc] initWithFrame:CGRectMake(10, 10, 100, 40)]; + [self.view addSubview:myLabel]; + [myLabel release]; + +You can also add it to your XIB file, just make sure you set the class type to `UICountingLabel` instead of `UILabel` and be sure to `#import "UICountingLabel.h"` in the header file. + +## Use ##### + +Set the format of your label. This will be filled with a single int or float (depending on how you format it) when it updates: + + myLabel.format = @"%d"; + +Optionally, set the mode. The default is `UILabelCountingMethodEaseInOut`, which will start slow, speed up, and then slow down as it reaches the end. Other options are described below in the Methods section. + + myLabel.method = UILabelCountingMethodLinear; + +When you want the label to start counting, just call: + + [myLabel countFrom:0 to:100]; + +You can also specify the duration. The default is 2.0 seconds. + + [myLabel countFrom:0 to:100 withDuration:5.0f]; + +The full signature is: + + [myLabel countFrom:(float)startValue + to:(float)endValue + withDuration:(NSTimeInterval)duration]; + +## Formats ##### + +When you set the `format` property, the label will look for the presence of `%(.*)d` or `%(.*)i`, and if found, will cast the value to `int` before formatting the string. Otherwise, it will format it using a `float`. + +If you're using a `float` value, it's recommended to limit the number of digits with a format string, such as `@"%.1f"` for one decimal place. + +Because it uses the standard `stringWithFormat:` method, you can also include arbitrary text in your format, such as `@"Points: %i"`. + +## Modes ##### +There are currently four modes of counting. + +### `UILabelCountingMethodLinear` ##### +Counts linearly from the start to the end. + +### `UILabelCountingMethodEaseIn` ##### +Ease In starts out slow and speeds up counting as it gets to the end, stopping suddenly at the final value. + +### `UILabelCountingMethodEaseOut` ##### +Ease Out starts out fast and slows down as it gets to the destination value. + +### `UILabelCountingMethodEaseInOut` ##### +Ease In/Out starts out slow, speeds up towards the middle, and then slows down as it approaches the destination. It is a nice, smooth curve that looks great, and is the default method. diff --git a/Pods/UICountingLabel/UICountingLabel.h b/Pods/UICountingLabel/UICountingLabel.h new file mode 100644 index 00000000..5d3569e6 --- /dev/null +++ b/Pods/UICountingLabel/UICountingLabel.h @@ -0,0 +1,27 @@ +#import +#import + +typedef enum { + UILabelCountingMethodEaseInOut, + UILabelCountingMethodEaseIn, + UILabelCountingMethodEaseOut, + UILabelCountingMethodLinear +} UILabelCountingMethod; + +typedef NSString* (^UICountingLabelFormatBlock)(float value); + + +@interface UICountingLabel : UILabel + +@property (nonatomic, strong) NSString *format; +@property (nonatomic, assign) UILabelCountingMethod method; + +@property (nonatomic, copy) UICountingLabelFormatBlock formatBlock; +@property (nonatomic, copy) void (^completionBlock)(); + + +-(void)countFrom:(float)startValue to:(float)endValue; +-(void)countFrom:(float)startValue to:(float)endValue withDuration:(NSTimeInterval)duration; + +@end + diff --git a/Pods/UICountingLabel/UICountingLabel.m b/Pods/UICountingLabel/UICountingLabel.m new file mode 100644 index 00000000..9216a8d0 --- /dev/null +++ b/Pods/UICountingLabel/UICountingLabel.m @@ -0,0 +1,182 @@ +#import "UICountingLabel.h" + + +#pragma mark - UILabelCounter + +// This whole class & subclasses are private to UICountingLabel, which is why they are declared here in the .m file + +@interface UILabelCounter : NSObject + +-(float)update:(float)t; + +@property float rate; + +@end + +@interface UILabelCounterLinear : UILabelCounter + +@end + +@interface UILabelCounterEaseIn : UILabelCounter + +@end + +@interface UILabelCounterEaseOut : UILabelCounter + +@end + +@interface UILabelCounterEaseInOut : UILabelCounter + +@end + +@implementation UILabelCounter + +-(float)update:(float)t{ + return 0; +} + +@end + +@implementation UILabelCounterLinear + +-(float)update:(float)t +{ + return t; +} + +@end + +@implementation UILabelCounterEaseIn + +-(float)update:(float)t +{ + return powf(t, self.rate); +} + +@end + +@implementation UILabelCounterEaseOut + +-(float)update:(float)t{ + return 1.0-powf((1.0-t), self.rate); +} + +@end + +@implementation UILabelCounterEaseInOut + +-(float) update: (float) t +{ + int sign =1; + int r = (int) self.rate; + if (r % 2 == 0) + sign = -1; + t *= 2; + if (t < 1) + return 0.5f * powf (t, self.rate); + else + return sign*0.5f * (powf (t-2, self.rate) + sign*2); +} + +@end + +#pragma mark - UICountingLabel + +@interface UICountingLabel () + +@property float startingValue; +@property float destinationValue; +@property NSTimeInterval progress; +@property NSTimeInterval lastUpdate; +@property NSTimeInterval totalTime; +@property float easingRate; + +@property (nonatomic, retain) UILabelCounter* counter; + +@end + +@implementation UICountingLabel + +-(void)countFrom:(float)value to:(float)endValue +{ + [self countFrom:value to:endValue withDuration:2.0f]; +} + +-(void)countFrom:(float)startValue to:(float)endValue withDuration:(NSTimeInterval)duration +{ + + self.easingRate = 3.0f; + self.startingValue = startValue; + self.destinationValue = endValue; + self.progress = 0; + self.totalTime = duration; + self.lastUpdate = [NSDate timeIntervalSinceReferenceDate]; + + if(self.format == nil) + self.format = @"%f"; + + switch(self.method) + { + case UILabelCountingMethodLinear: + self.counter = [[UILabelCounterLinear alloc] init]; + break; + case UILabelCountingMethodEaseIn: + self.counter = [[UILabelCounterEaseIn alloc] init]; + break; + case UILabelCountingMethodEaseOut: + self.counter = [[UILabelCounterEaseOut alloc] init]; + break; + case UILabelCountingMethodEaseInOut: + self.counter = [[UILabelCounterEaseInOut alloc] init]; + break; + } + + self.counter.rate = 3.0f; + + NSTimer* timer = [NSTimer timerWithTimeInterval:(1.0f/30.0f) target:self selector:@selector(updateValue:) userInfo:nil repeats:YES]; + [[NSRunLoop mainRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode]; +} + +-(void)updateValue:(NSTimer*)timer +{ + // update progress + NSTimeInterval now = [NSDate timeIntervalSinceReferenceDate]; + self.progress += now - self.lastUpdate; + self.lastUpdate = now; + + if(self.progress >= self.totalTime) + { + [timer invalidate]; + self.progress = self.totalTime; + } + + float percent = self.progress / self.totalTime; + float updateVal =[self.counter update:percent]; + float value = self.startingValue + (updateVal * (self.destinationValue - self.startingValue)); + + + if(self.formatBlock != nil) + { + self.text = self.formatBlock(value); + } + else + { + // check if counting with ints - cast to int + if([self.format rangeOfString:@"%(.*)d" options:NSRegularExpressionSearch].location != NSNotFound || [self.format rangeOfString:@"%(.*)i"].location != NSNotFound ) + { + self.text = [NSString stringWithFormat:self.format,(int)value]; + } + else + { + self.text = [NSString stringWithFormat:self.format,value]; + } + } + + if(self.progress == self.totalTime && self.completionBlock != nil) + { + self.completionBlock(); + self.completionBlock = nil; + } +} + +@end