├── .gitignore
├── .travis.yml
├── DSNestedAccordion.podspec
├── Example
├── DSNestedAccordion.xcodeproj
│ ├── project.pbxproj
│ ├── project.xcworkspace
│ │ └── contents.xcworkspacedata
│ └── xcshareddata
│ │ └── xcschemes
│ │ └── DSNestedAccordion.xcscheme
├── DSNestedAccordion.xcworkspace
│ └── contents.xcworkspacedata
├── DSNestedAccordion
│ ├── Base.lproj
│ │ ├── Main_iPad.storyboard
│ │ └── Main_iPhone.storyboard
│ ├── DSAppDelegate.h
│ ├── DSAppDelegate.m
│ ├── DSBeerFlavor.h
│ ├── DSBeerFlavor.m
│ ├── DSBeerStyle.h
│ ├── DSBeerStyle.m
│ ├── DSBeerTableViewHandler.h
│ ├── DSBeerTableViewHandler.m
│ ├── DSBeerViewController.h
│ ├── DSBeerViewController.m
│ ├── DSBeers.h
│ ├── DSBeers.m
│ ├── DSCellWithLabel.h
│ ├── DSCellWithLabel.m
│ ├── DSNestedAccordion-Info.plist
│ ├── DSNestedAccordion-Prefix.pch
│ ├── DSNotableBeerStyle.h
│ ├── DSNotableBeerStyle.m
│ ├── Images.xcassets
│ │ ├── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ └── LaunchImage.launchimage
│ │ │ └── Contents.json
│ ├── en.lproj
│ │ └── InfoPlist.strings
│ └── main.m
├── Podfile
├── Podfile.lock
├── Pods
│ ├── BuildHeaders
│ │ ├── DSNestedAccordion
│ │ │ ├── DSCellLevel.h
│ │ │ ├── DSCellPath.h
│ │ │ ├── DSCellPathTracker.h
│ │ │ ├── DSNestedAccordionHandler.h
│ │ │ └── NSException+DSException.h
│ │ └── Kiwi
│ │ │ ├── KWAfterAllNode.h
│ │ │ ├── KWAfterEachNode.h
│ │ │ ├── KWAny.h
│ │ │ ├── KWAsyncVerifier.h
│ │ │ ├── KWBeBetweenMatcher.h
│ │ │ ├── KWBeEmptyMatcher.h
│ │ │ ├── KWBeIdenticalToMatcher.h
│ │ │ ├── KWBeKindOfClassMatcher.h
│ │ │ ├── KWBeMemberOfClassMatcher.h
│ │ │ ├── KWBeSubclassOfClassMatcher.h
│ │ │ ├── KWBeTrueMatcher.h
│ │ │ ├── KWBeWithinMatcher.h
│ │ │ ├── KWBeZeroMatcher.h
│ │ │ ├── KWBeforeAllNode.h
│ │ │ ├── KWBeforeEachNode.h
│ │ │ ├── KWBlock.h
│ │ │ ├── KWBlockNode.h
│ │ │ ├── KWBlockRaiseMatcher.h
│ │ │ ├── KWCallSite.h
│ │ │ ├── KWCaptureSpy.h
│ │ │ ├── KWChangeMatcher.h
│ │ │ ├── KWConformToProtocolMatcher.h
│ │ │ ├── KWContainMatcher.h
│ │ │ ├── KWContainStringMatcher.h
│ │ │ ├── KWContextNode.h
│ │ │ ├── KWCountType.h
│ │ │ ├── KWDeviceInfo.h
│ │ │ ├── KWEqualMatcher.h
│ │ │ ├── KWExample.h
│ │ │ ├── KWExampleDelegate.h
│ │ │ ├── KWExampleNode.h
│ │ │ ├── KWExampleNodeVisitor.h
│ │ │ ├── KWExampleSuite.h
│ │ │ ├── KWExampleSuiteBuilder.h
│ │ │ ├── KWExistVerifier.h
│ │ │ ├── KWExpectationType.h
│ │ │ ├── KWFailure.h
│ │ │ ├── KWFormatter.h
│ │ │ ├── KWFutureObject.h
│ │ │ ├── KWGenericMatchEvaluator.h
│ │ │ ├── KWGenericMatcher.h
│ │ │ ├── KWGenericMatchingAdditions.h
│ │ │ ├── KWHaveMatcher.h
│ │ │ ├── KWHaveValueMatcher.h
│ │ │ ├── KWInequalityMatcher.h
│ │ │ ├── KWIntercept.h
│ │ │ ├── KWInvocationCapturer.h
│ │ │ ├── KWItNode.h
│ │ │ ├── KWLet.h
│ │ │ ├── KWLetNode.h
│ │ │ ├── KWMatchVerifier.h
│ │ │ ├── KWMatcher.h
│ │ │ ├── KWMatcherFactory.h
│ │ │ ├── KWMatchers.h
│ │ │ ├── KWMatching.h
│ │ │ ├── KWMessagePattern.h
│ │ │ ├── KWMessageSpying.h
│ │ │ ├── KWMessageTracker.h
│ │ │ ├── KWMock.h
│ │ │ ├── KWNilMatcher.h
│ │ │ ├── KWNotificationMatcher.h
│ │ │ ├── KWNull.h
│ │ │ ├── KWObjCUtilities.h
│ │ │ ├── KWPendingNode.h
│ │ │ ├── KWProbe.h
│ │ │ ├── KWProbePoller.h
│ │ │ ├── KWRaiseMatcher.h
│ │ │ ├── KWReceiveMatcher.h
│ │ │ ├── KWRegisterMatchersNode.h
│ │ │ ├── KWRegularExpressionPatternMatcher.h
│ │ │ ├── KWReporting.h
│ │ │ ├── KWRespondToSelectorMatcher.h
│ │ │ ├── KWSpec.h
│ │ │ ├── KWStringContainsMatcher.h
│ │ │ ├── KWStringPrefixMatcher.h
│ │ │ ├── KWStringUtilities.h
│ │ │ ├── KWStub.h
│ │ │ ├── KWSymbolicator.h
│ │ │ ├── KWUserDefinedMatcher.h
│ │ │ ├── KWValue.h
│ │ │ ├── KWVerifying.h
│ │ │ ├── KWWorkarounds.h
│ │ │ ├── Kiwi.h
│ │ │ ├── KiwiBlockMacros.h
│ │ │ ├── KiwiConfiguration.h
│ │ │ ├── KiwiMacros.h
│ │ │ ├── NSInvocation+KiwiAdditions.h
│ │ │ ├── NSInvocation+OCMAdditions.h
│ │ │ ├── NSMethodSignature+KiwiAdditions.h
│ │ │ ├── NSNumber+KiwiAdditions.h
│ │ │ ├── NSObject+KiwiMockAdditions.h
│ │ │ ├── NSObject+KiwiSpyAdditions.h
│ │ │ ├── NSObject+KiwiStubAdditions.h
│ │ │ ├── NSObject+KiwiVerifierAdditions.h
│ │ │ ├── NSProxy+KiwiVerifierAdditions.h
│ │ │ └── NSValue+KiwiAdditions.h
│ ├── Headers
│ │ ├── DSNestedAccordion
│ │ │ ├── DSCellLevel.h
│ │ │ ├── DSCellPath.h
│ │ │ ├── DSCellPathTracker.h
│ │ │ ├── DSNestedAccordionHandler.h
│ │ │ └── NSException+DSException.h
│ │ └── Kiwi
│ │ │ ├── KWAfterAllNode.h
│ │ │ ├── KWAfterEachNode.h
│ │ │ ├── KWAny.h
│ │ │ ├── KWAsyncVerifier.h
│ │ │ ├── KWBeBetweenMatcher.h
│ │ │ ├── KWBeEmptyMatcher.h
│ │ │ ├── KWBeIdenticalToMatcher.h
│ │ │ ├── KWBeKindOfClassMatcher.h
│ │ │ ├── KWBeMemberOfClassMatcher.h
│ │ │ ├── KWBeSubclassOfClassMatcher.h
│ │ │ ├── KWBeTrueMatcher.h
│ │ │ ├── KWBeWithinMatcher.h
│ │ │ ├── KWBeZeroMatcher.h
│ │ │ ├── KWBeforeAllNode.h
│ │ │ ├── KWBeforeEachNode.h
│ │ │ ├── KWBlock.h
│ │ │ ├── KWBlockNode.h
│ │ │ ├── KWBlockRaiseMatcher.h
│ │ │ ├── KWCallSite.h
│ │ │ ├── KWCaptureSpy.h
│ │ │ ├── KWChangeMatcher.h
│ │ │ ├── KWConformToProtocolMatcher.h
│ │ │ ├── KWContainMatcher.h
│ │ │ ├── KWContainStringMatcher.h
│ │ │ ├── KWContextNode.h
│ │ │ ├── KWCountType.h
│ │ │ ├── KWDeviceInfo.h
│ │ │ ├── KWEqualMatcher.h
│ │ │ ├── KWExample.h
│ │ │ ├── KWExampleDelegate.h
│ │ │ ├── KWExampleNode.h
│ │ │ ├── KWExampleNodeVisitor.h
│ │ │ ├── KWExampleSuite.h
│ │ │ ├── KWExampleSuiteBuilder.h
│ │ │ ├── KWExistVerifier.h
│ │ │ ├── KWExpectationType.h
│ │ │ ├── KWFailure.h
│ │ │ ├── KWFormatter.h
│ │ │ ├── KWFutureObject.h
│ │ │ ├── KWGenericMatchEvaluator.h
│ │ │ ├── KWGenericMatcher.h
│ │ │ ├── KWGenericMatchingAdditions.h
│ │ │ ├── KWHaveMatcher.h
│ │ │ ├── KWHaveValueMatcher.h
│ │ │ ├── KWInequalityMatcher.h
│ │ │ ├── KWIntercept.h
│ │ │ ├── KWInvocationCapturer.h
│ │ │ ├── KWItNode.h
│ │ │ ├── KWLet.h
│ │ │ ├── KWLetNode.h
│ │ │ ├── KWMatchVerifier.h
│ │ │ ├── KWMatcher.h
│ │ │ ├── KWMatcherFactory.h
│ │ │ ├── KWMatchers.h
│ │ │ ├── KWMatching.h
│ │ │ ├── KWMessagePattern.h
│ │ │ ├── KWMessageSpying.h
│ │ │ ├── KWMessageTracker.h
│ │ │ ├── KWMock.h
│ │ │ ├── KWNilMatcher.h
│ │ │ ├── KWNotificationMatcher.h
│ │ │ ├── KWNull.h
│ │ │ ├── KWObjCUtilities.h
│ │ │ ├── KWPendingNode.h
│ │ │ ├── KWProbe.h
│ │ │ ├── KWProbePoller.h
│ │ │ ├── KWRaiseMatcher.h
│ │ │ ├── KWReceiveMatcher.h
│ │ │ ├── KWRegisterMatchersNode.h
│ │ │ ├── KWRegularExpressionPatternMatcher.h
│ │ │ ├── KWReporting.h
│ │ │ ├── KWRespondToSelectorMatcher.h
│ │ │ ├── KWSpec.h
│ │ │ ├── KWStringContainsMatcher.h
│ │ │ ├── KWStringPrefixMatcher.h
│ │ │ ├── KWStringUtilities.h
│ │ │ ├── KWStub.h
│ │ │ ├── KWSymbolicator.h
│ │ │ ├── KWUserDefinedMatcher.h
│ │ │ ├── KWValue.h
│ │ │ ├── KWVerifying.h
│ │ │ ├── KWWorkarounds.h
│ │ │ ├── Kiwi.h
│ │ │ ├── KiwiBlockMacros.h
│ │ │ ├── KiwiConfiguration.h
│ │ │ ├── KiwiMacros.h
│ │ │ ├── NSInvocation+KiwiAdditions.h
│ │ │ ├── NSInvocation+OCMAdditions.h
│ │ │ ├── NSMethodSignature+KiwiAdditions.h
│ │ │ ├── NSNumber+KiwiAdditions.h
│ │ │ ├── NSObject+KiwiMockAdditions.h
│ │ │ ├── NSObject+KiwiSpyAdditions.h
│ │ │ ├── NSObject+KiwiStubAdditions.h
│ │ │ ├── NSObject+KiwiVerifierAdditions.h
│ │ │ ├── NSProxy+KiwiVerifierAdditions.h
│ │ │ └── NSValue+KiwiAdditions.h
│ ├── Kiwi
│ │ ├── Classes
│ │ │ ├── Core
│ │ │ │ ├── KWAny.h
│ │ │ │ ├── KWAny.m
│ │ │ │ ├── KWBlock.h
│ │ │ │ ├── KWBlock.m
│ │ │ │ ├── KWCallSite.h
│ │ │ │ ├── KWCallSite.m
│ │ │ │ ├── KWCaptureSpy.h
│ │ │ │ ├── KWCaptureSpy.m
│ │ │ │ ├── KWCountType.h
│ │ │ │ ├── KWDeviceInfo.h
│ │ │ │ ├── KWDeviceInfo.m
│ │ │ │ ├── KWExample.h
│ │ │ │ ├── KWExample.m
│ │ │ │ ├── KWExampleDelegate.h
│ │ │ │ ├── KWExampleNodeVisitor.h
│ │ │ │ ├── KWExampleSuite.h
│ │ │ │ ├── KWExampleSuite.m
│ │ │ │ ├── KWExampleSuiteBuilder.h
│ │ │ │ ├── KWExampleSuiteBuilder.m
│ │ │ │ ├── KWExpectationType.h
│ │ │ │ ├── KWFailure.h
│ │ │ │ ├── KWFailure.m
│ │ │ │ ├── KWFormatter.h
│ │ │ │ ├── KWFormatter.m
│ │ │ │ ├── KWFutureObject.h
│ │ │ │ ├── KWFutureObject.m
│ │ │ │ ├── KWInvocationCapturer.h
│ │ │ │ ├── KWInvocationCapturer.m
│ │ │ │ ├── KWLet.h
│ │ │ │ ├── KWMatcher.h
│ │ │ │ ├── KWMatcher.m
│ │ │ │ ├── KWMatcherFactory.h
│ │ │ │ ├── KWMatcherFactory.m
│ │ │ │ ├── KWMatchers.h
│ │ │ │ ├── KWMatchers.m
│ │ │ │ ├── KWMatching.h
│ │ │ │ ├── KWMessageSpying.h
│ │ │ │ ├── KWMessageTracker.h
│ │ │ │ ├── KWMessageTracker.m
│ │ │ │ ├── KWNull.h
│ │ │ │ ├── KWNull.m
│ │ │ │ ├── KWObjCUtilities.h
│ │ │ │ ├── KWObjCUtilities.m
│ │ │ │ ├── KWProbe.h
│ │ │ │ ├── KWProbePoller.h
│ │ │ │ ├── KWProbePoller.m
│ │ │ │ ├── KWReporting.h
│ │ │ │ ├── KWSpec.h
│ │ │ │ ├── KWSpec.m
│ │ │ │ ├── KWStringUtilities.h
│ │ │ │ ├── KWStringUtilities.m
│ │ │ │ ├── KWSymbolicator.h
│ │ │ │ ├── KWSymbolicator.m
│ │ │ │ ├── KWValue.h
│ │ │ │ ├── KWValue.m
│ │ │ │ ├── KWWorkarounds.h
│ │ │ │ ├── KWWorkarounds.m
│ │ │ │ ├── Kiwi.h
│ │ │ │ ├── KiwiBlockMacros.h
│ │ │ │ ├── KiwiConfiguration.h
│ │ │ │ ├── KiwiMacros.h
│ │ │ │ ├── NSInvocation+KiwiAdditions.h
│ │ │ │ ├── NSInvocation+KiwiAdditions.m
│ │ │ │ ├── NSInvocation+OCMAdditions.h
│ │ │ │ ├── NSInvocation+OCMAdditions.m
│ │ │ │ ├── NSMethodSignature+KiwiAdditions.h
│ │ │ │ ├── NSMethodSignature+KiwiAdditions.m
│ │ │ │ ├── NSNumber+KiwiAdditions.h
│ │ │ │ ├── NSNumber+KiwiAdditions.m
│ │ │ │ ├── NSObject+KiwiSpyAdditions.h
│ │ │ │ ├── NSObject+KiwiSpyAdditions.m
│ │ │ │ ├── NSObject+KiwiVerifierAdditions.h
│ │ │ │ ├── NSObject+KiwiVerifierAdditions.m
│ │ │ │ ├── NSProxy+KiwiVerifierAdditions.h
│ │ │ │ ├── NSProxy+KiwiVerifierAdditions.m
│ │ │ │ ├── NSValue+KiwiAdditions.h
│ │ │ │ └── NSValue+KiwiAdditions.m
│ │ │ ├── Matchers
│ │ │ │ ├── KWBeBetweenMatcher.h
│ │ │ │ ├── KWBeBetweenMatcher.m
│ │ │ │ ├── KWBeEmptyMatcher.h
│ │ │ │ ├── KWBeEmptyMatcher.m
│ │ │ │ ├── KWBeIdenticalToMatcher.h
│ │ │ │ ├── KWBeIdenticalToMatcher.m
│ │ │ │ ├── KWBeKindOfClassMatcher.h
│ │ │ │ ├── KWBeKindOfClassMatcher.m
│ │ │ │ ├── KWBeMemberOfClassMatcher.h
│ │ │ │ ├── KWBeMemberOfClassMatcher.m
│ │ │ │ ├── KWBeSubclassOfClassMatcher.h
│ │ │ │ ├── KWBeSubclassOfClassMatcher.m
│ │ │ │ ├── KWBeTrueMatcher.h
│ │ │ │ ├── KWBeTrueMatcher.m
│ │ │ │ ├── KWBeWithinMatcher.h
│ │ │ │ ├── KWBeWithinMatcher.m
│ │ │ │ ├── KWBeZeroMatcher.h
│ │ │ │ ├── KWBeZeroMatcher.m
│ │ │ │ ├── KWBlockRaiseMatcher.h
│ │ │ │ ├── KWBlockRaiseMatcher.m
│ │ │ │ ├── KWChangeMatcher.h
│ │ │ │ ├── KWChangeMatcher.m
│ │ │ │ ├── KWConformToProtocolMatcher.h
│ │ │ │ ├── KWConformToProtocolMatcher.m
│ │ │ │ ├── KWContainMatcher.h
│ │ │ │ ├── KWContainMatcher.m
│ │ │ │ ├── KWContainStringMatcher.h
│ │ │ │ ├── KWContainStringMatcher.m
│ │ │ │ ├── KWEqualMatcher.h
│ │ │ │ ├── KWEqualMatcher.m
│ │ │ │ ├── KWGenericMatchEvaluator.h
│ │ │ │ ├── KWGenericMatchEvaluator.m
│ │ │ │ ├── KWGenericMatcher.h
│ │ │ │ ├── KWGenericMatcher.m
│ │ │ │ ├── KWGenericMatchingAdditions.h
│ │ │ │ ├── KWGenericMatchingAdditions.m
│ │ │ │ ├── KWHaveMatcher.h
│ │ │ │ ├── KWHaveMatcher.m
│ │ │ │ ├── KWHaveValueMatcher.h
│ │ │ │ ├── KWHaveValueMatcher.m
│ │ │ │ ├── KWInequalityMatcher.h
│ │ │ │ ├── KWInequalityMatcher.m
│ │ │ │ ├── KWNilMatcher.h
│ │ │ │ ├── KWNilMatcher.m
│ │ │ │ ├── KWNotificationMatcher.h
│ │ │ │ ├── KWNotificationMatcher.m
│ │ │ │ ├── KWRaiseMatcher.h
│ │ │ │ ├── KWRaiseMatcher.m
│ │ │ │ ├── KWReceiveMatcher.h
│ │ │ │ ├── KWReceiveMatcher.m
│ │ │ │ ├── KWRegularExpressionPatternMatcher.h
│ │ │ │ ├── KWRegularExpressionPatternMatcher.m
│ │ │ │ ├── KWRespondToSelectorMatcher.h
│ │ │ │ ├── KWRespondToSelectorMatcher.m
│ │ │ │ ├── KWStringContainsMatcher.h
│ │ │ │ ├── KWStringContainsMatcher.m
│ │ │ │ ├── KWStringPrefixMatcher.h
│ │ │ │ ├── KWStringPrefixMatcher.m
│ │ │ │ ├── KWUserDefinedMatcher.h
│ │ │ │ └── KWUserDefinedMatcher.m
│ │ │ ├── Mocking
│ │ │ │ ├── KWMock.h
│ │ │ │ ├── KWMock.m
│ │ │ │ ├── NSObject+KiwiMockAdditions.h
│ │ │ │ └── NSObject+KiwiMockAdditions.m
│ │ │ ├── Nodes
│ │ │ │ ├── KWAfterAllNode.h
│ │ │ │ ├── KWAfterAllNode.m
│ │ │ │ ├── KWAfterEachNode.h
│ │ │ │ ├── KWAfterEachNode.m
│ │ │ │ ├── KWBeforeAllNode.h
│ │ │ │ ├── KWBeforeAllNode.m
│ │ │ │ ├── KWBeforeEachNode.h
│ │ │ │ ├── KWBeforeEachNode.m
│ │ │ │ ├── KWBlockNode.h
│ │ │ │ ├── KWBlockNode.m
│ │ │ │ ├── KWContextNode.h
│ │ │ │ ├── KWContextNode.m
│ │ │ │ ├── KWExampleNode.h
│ │ │ │ ├── KWItNode.h
│ │ │ │ ├── KWItNode.m
│ │ │ │ ├── KWLetNode.h
│ │ │ │ ├── KWLetNode.m
│ │ │ │ ├── KWPendingNode.h
│ │ │ │ ├── KWPendingNode.m
│ │ │ │ ├── KWRegisterMatchersNode.h
│ │ │ │ └── KWRegisterMatchersNode.m
│ │ │ ├── Stubbing
│ │ │ │ ├── KWIntercept.h
│ │ │ │ ├── KWIntercept.m
│ │ │ │ ├── KWStub.h
│ │ │ │ ├── KWStub.m
│ │ │ │ ├── NSObject+KiwiStubAdditions.h
│ │ │ │ └── NSObject+KiwiStubAdditions.m
│ │ │ └── Verifiers
│ │ │ │ ├── KWAsyncVerifier.h
│ │ │ │ ├── KWAsyncVerifier.m
│ │ │ │ ├── KWExistVerifier.h
│ │ │ │ ├── KWExistVerifier.m
│ │ │ │ ├── KWMatchVerifier.h
│ │ │ │ ├── KWMatchVerifier.m
│ │ │ │ └── KWVerifying.h
│ │ ├── License.txt
│ │ ├── NonARC
│ │ │ ├── KWMessagePattern.h
│ │ │ └── KWMessagePattern.m
│ │ └── Readme.md
│ ├── Local Podspecs
│ │ └── DSNestedAccordion.podspec
│ ├── Manifest.lock
│ ├── Pods-DSNestedAccordion-DSNestedAccordion-Private.xcconfig
│ ├── Pods-DSNestedAccordion-DSNestedAccordion-dummy.m
│ ├── Pods-DSNestedAccordion-DSNestedAccordion-prefix.pch
│ ├── Pods-DSNestedAccordion-DSNestedAccordion.xcconfig
│ ├── Pods-DSNestedAccordion-acknowledgements.markdown
│ ├── Pods-DSNestedAccordion-acknowledgements.plist
│ ├── Pods-DSNestedAccordion-dummy.m
│ ├── Pods-DSNestedAccordion-environment.h
│ ├── Pods-DSNestedAccordion-resources.sh
│ ├── Pods-DSNestedAccordion.xcconfig
│ ├── Pods-Tests-DSNestedAccordion-Private.xcconfig
│ ├── Pods-Tests-DSNestedAccordion-dummy.m
│ ├── Pods-Tests-DSNestedAccordion-prefix.pch
│ ├── Pods-Tests-DSNestedAccordion.xcconfig
│ ├── Pods-Tests-Kiwi-Private.xcconfig
│ ├── Pods-Tests-Kiwi-dummy.m
│ ├── Pods-Tests-Kiwi-prefix.pch
│ ├── Pods-Tests-Kiwi.xcconfig
│ ├── Pods-Tests-acknowledgements.markdown
│ ├── Pods-Tests-acknowledgements.plist
│ ├── Pods-Tests-dummy.m
│ ├── Pods-Tests-environment.h
│ ├── Pods-Tests-resources.sh
│ ├── Pods-Tests.xcconfig
│ └── Pods.xcodeproj
│ │ └── project.pbxproj
└── Tests
│ ├── DSCellLevelTest.m
│ ├── Tests-Info.plist
│ ├── Tests-Prefix.pch
│ └── en.lproj
│ └── InfoPlist.strings
├── LICENSE
├── Pod
├── Assets
│ └── .gitkeep
└── Classes
│ ├── .gitkeep
│ ├── DSCellLevel.h
│ ├── DSCellLevel.m
│ ├── DSCellPath.h
│ ├── DSCellPath.m
│ ├── DSCellPathTracker.h
│ ├── DSCellPathTracker.m
│ ├── DSNestedAccordionHandler.h
│ ├── DSNestedAccordionHandler.m
│ ├── NSException+DSException.h
│ └── NSException+DSException.m
└── README.md
/.gitignore:
--------------------------------------------------------------------------------
1 | # OS X
2 | .DS_Store
3 |
4 | # Xcode
5 | build/
6 | *.pbxuser
7 | !default.pbxuser
8 | *.mode1v3
9 | !default.mode1v3
10 | *.mode2v3
11 | !default.mode2v3
12 | *.perspectivev3
13 | !default.perspectivev3
14 | xcuserdata
15 | *.xccheckout
16 | profile
17 | *.moved-aside
18 | DerivedData
19 | *.hmap
20 | *.ipa
21 |
22 | # Bundler
23 | .bundle
24 |
25 | # We recommend against adding the Pods directory to your .gitignore. However
26 | # you should judge for yourself, the pros and cons are mentioned at:
27 | # http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control
28 | #
29 | # Pods/
30 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | # reference: http://www.objc.io/issue-6/travis-ci.html
2 |
3 | language: objective-c
4 | script:
5 | - xctool test -workspace Example/DSNestedAccordion.xcworkspace -scheme DSNestedAccordion -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO
6 |
--------------------------------------------------------------------------------
/DSNestedAccordion.podspec:
--------------------------------------------------------------------------------
1 | Pod::Spec.new do |s|
2 | s.name = "DSNestedAccordion"
3 | s.version = "0.1.0"
4 | s.summary = "A nested accordion view for Cocoa Touch"
5 | s.description = <<-DESC
6 | To use the library
7 |
8 | * Inherit DSNestedAccordionHandler to your table view handler.
9 | * Provide implementation to the below listed methods
10 | * - (NSInteger)noOfRowsInRootLevel;
11 | * - (NSInteger)tableView:(UITableView *)view noOfChildRowsForCellAtPath:(DSCellPath *)path;
12 | * - (UITableViewCell *)tableView:(UITableView *)view cellForPath:(DSCellPath *)path;
13 | DESC
14 | s.homepage = "https://github.com/deepan/DSNestedAccordion"
15 | s.license = 'MIT'
16 | s.author = { "deepan" => "emaildeepan@yahoo.co.in" }
17 | s.source = { :git => "https://github.com/deepan/DSNestedAccordion.git", :tag => s.version.to_s }
18 | s.social_media_url = 'https://twitter.com/s_deepan'
19 |
20 | s.platform = :ios, '6.0'
21 | s.requires_arc = true
22 |
23 | s.source_files = 'Pod/Classes'
24 | end
25 |
--------------------------------------------------------------------------------
/Example/DSNestedAccordion.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Example/DSNestedAccordion.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Example/DSNestedAccordion/DSAppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // DSAppDelegate.h
3 | // DSNestedAccordion
4 | //
5 | // Created by CocoaPods on 07/26/2014.
6 | // Copyright (c) 2014 deepan. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface DSAppDelegate : UIResponder
12 |
13 | @property (strong, nonatomic) UIWindow *window;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/Example/DSNestedAccordion/DSAppDelegate.m:
--------------------------------------------------------------------------------
1 | //
2 | // DSAppDelegate.m
3 | // DSNestedAccordion
4 | //
5 | // Created by CocoaPods on 07/26/2014.
6 | // Copyright (c) 2014 deepan. All rights reserved.
7 | //
8 |
9 | #import "DSAppDelegate.h"
10 |
11 | @implementation DSAppDelegate
12 |
13 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
14 | {
15 | // Override point for customization after application launch.
16 | return YES;
17 | }
18 |
19 | - (void)applicationWillResignActive:(UIApplication *)application
20 | {
21 | // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
22 | // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
23 | }
24 |
25 | - (void)applicationDidEnterBackground:(UIApplication *)application
26 | {
27 | // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
28 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
29 | }
30 |
31 | - (void)applicationWillEnterForeground:(UIApplication *)application
32 | {
33 | // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
34 | }
35 |
36 | - (void)applicationDidBecomeActive:(UIApplication *)application
37 | {
38 | // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
39 | }
40 |
41 | - (void)applicationWillTerminate:(UIApplication *)application
42 | {
43 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
44 | }
45 |
46 | @end
47 |
--------------------------------------------------------------------------------
/Example/DSNestedAccordion/DSBeerFlavor.h:
--------------------------------------------------------------------------------
1 | #import
2 | #import "DSBeerStyle.h"
3 |
4 | @interface DSBeerFlavor : NSObject
5 | @property (nonatomic, strong) NSString *name;
6 | @property (nonatomic, strong) NSArray *styles;
7 |
8 | - (instancetype)initWithName:(NSString *)name styles:(NSArray *)styles;
9 |
10 | + (instancetype)flavorWithName:(NSString *)name styles:(NSArray *)styles;
11 |
12 | - (DSBeerStyle *)styleAtIndex:(NSInteger)index;
13 |
14 | @end
--------------------------------------------------------------------------------
/Example/DSNestedAccordion/DSBeerFlavor.m:
--------------------------------------------------------------------------------
1 | #import "DSBeerFlavor.h"
2 |
3 | @implementation DSBeerFlavor
4 | - (instancetype)initWithName:(NSString *)name styles:(NSArray *)styles {
5 | self = [super init];
6 | if (self) {
7 | self.name = name;
8 | self.styles = styles;
9 | }
10 |
11 | return self;
12 | }
13 |
14 | + (instancetype)flavorWithName:(NSString *)name styles:(NSArray *)styles {
15 | return [[self alloc] initWithName:name styles:styles];
16 | }
17 |
18 | - (DSBeerStyle *)styleAtIndex:(NSInteger)index {
19 | return self.styles[(NSUInteger) index];
20 | }
21 |
22 | @end
--------------------------------------------------------------------------------
/Example/DSNestedAccordion/DSBeerStyle.h:
--------------------------------------------------------------------------------
1 | #import
2 |
3 | @class DSNotableBeerStyle;
4 |
5 | @interface DSBeerStyle : NSObject
6 | @property (nonatomic, strong) NSString *name;
7 | @property (nonatomic, strong) NSArray *notableStyles;
8 |
9 | - (instancetype)initWithName:(NSString *)name notableStyles:(NSArray *)notableStyles;
10 |
11 | + (instancetype)styleWithName:(NSString *)name notableStyles:(NSArray *)notableStyles;
12 |
13 | - (DSNotableBeerStyle *)notableStyleAtIndex:(NSInteger)index;
14 |
15 | @end
--------------------------------------------------------------------------------
/Example/DSNestedAccordion/DSBeerStyle.m:
--------------------------------------------------------------------------------
1 | #import "DSBeerStyle.h"
2 | #import "DSNotableBeerStyle.h"
3 |
4 | @implementation DSBeerStyle
5 | - (instancetype)initWithName:(NSString *)name notableStyles:(NSArray *)notableStyles {
6 | self = [super init];
7 | if (self) {
8 | self.name = name;
9 | self.notableStyles = notableStyles;
10 | }
11 |
12 | return self;
13 | }
14 |
15 | + (instancetype)styleWithName:(NSString *)name notableStyles:(NSArray *)notableStyles {
16 | return [[self alloc] initWithName:name notableStyles:notableStyles];
17 | }
18 |
19 | - (DSNotableBeerStyle *)notableStyleAtIndex:(NSInteger)index {
20 | return self.notableStyles[(NSUInteger) index];
21 | }
22 |
23 | @end
--------------------------------------------------------------------------------
/Example/DSNestedAccordion/DSBeerTableViewHandler.h:
--------------------------------------------------------------------------------
1 | #import
2 | #import "DSNestedAccordionHandler.h"
3 | #import "DSBeers.h"
4 |
5 | @interface DSBeerTableViewHandler : DSNestedAccordionHandler
6 | - (id)initWithBeers:(DSBeers *)beers;
7 | @end
--------------------------------------------------------------------------------
/Example/DSNestedAccordion/DSBeerViewController.h:
--------------------------------------------------------------------------------
1 | #import
2 | #import "DSNestedAccordionHandler.h"
3 |
4 | @interface DSBeerViewController : UIViewController
5 | @property (weak, nonatomic) IBOutlet UITableView *beerTableView;
6 | @end
7 |
--------------------------------------------------------------------------------
/Example/DSNestedAccordion/DSBeerViewController.m:
--------------------------------------------------------------------------------
1 | #import "DSBeerViewController.h"
2 | #import "DSBeers.h"
3 | #import "DSBeerTableViewHandler.h"
4 |
5 | @implementation DSBeerViewController {
6 | DSNestedAccordionHandler *_beerTableViewHandler;
7 | }
8 |
9 | - (void)viewDidLoad
10 | {
11 | [super viewDidLoad];
12 | [self initializeBeerTableView];
13 | [_beerTableViewHandler reload];
14 | }
15 |
16 | - (void)initializeBeerTableView {
17 | _beerTableViewHandler = [[DSBeerTableViewHandler alloc] initWithBeers: [[DSBeers alloc] init]];
18 | self.beerTableView.dataSource = _beerTableViewHandler;
19 | self.beerTableView.delegate = _beerTableViewHandler;
20 | [self hideEmptyTableViewRows];
21 | }
22 |
23 | - (void)hideEmptyTableViewRows {
24 | self.beerTableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
25 | }
26 |
27 | @end
28 |
--------------------------------------------------------------------------------
/Example/DSNestedAccordion/DSBeers.h:
--------------------------------------------------------------------------------
1 | #import
2 |
3 | @class DSBeerFlavor;
4 | @class DSBeerStyle;
5 | @class DSNotableBeerStyle;
6 |
7 | @interface DSBeers : NSObject
8 | @property (nonatomic, strong) NSArray *allFlavors;
9 |
10 | - (DSBeerFlavor *)flavorAtIndex:(NSInteger)index;
11 |
12 | - (DSBeerStyle *)styleAtIndex:(NSInteger)styleIndex withFlavorAtIndex:(NSInteger)flavorIndex;
13 |
14 | - (DSNotableBeerStyle *)notableStyleAtIndex:(NSInteger)notableStyleIndex withStyleAtIndex:(NSInteger)styleIndex withFlavorAtIndex:(NSInteger)flavorIndex;
15 | @end
--------------------------------------------------------------------------------
/Example/DSNestedAccordion/DSCellWithLabel.h:
--------------------------------------------------------------------------------
1 | #import
2 |
3 | @interface DSCellWithLabel : UITableViewCell
4 | @property (weak, nonatomic) IBOutlet UILabel *label;
5 |
6 | - (void)render:(NSString *)text;
7 | @end
8 |
--------------------------------------------------------------------------------
/Example/DSNestedAccordion/DSCellWithLabel.m:
--------------------------------------------------------------------------------
1 | #import "DSCellWithLabel.h"
2 |
3 | @implementation DSCellWithLabel
4 |
5 | - (void)setSelected:(BOOL)selected animated:(BOOL)animated
6 | {
7 | [super setSelected:selected animated:animated];
8 | }
9 |
10 | -(void) render:(NSString *) text{
11 | self.label.text = text;
12 | }
13 |
14 | @end
15 |
--------------------------------------------------------------------------------
/Example/DSNestedAccordion/DSNestedAccordion-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleDisplayName
8 | ${PRODUCT_NAME}
9 | CFBundleExecutable
10 | ${EXECUTABLE_NAME}
11 | CFBundleIdentifier
12 | org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier}
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | ${PRODUCT_NAME}
17 | CFBundlePackageType
18 | APPL
19 | CFBundleShortVersionString
20 | 1.0
21 | CFBundleSignature
22 | ????
23 | CFBundleVersion
24 | 1.0
25 | LSRequiresIPhoneOS
26 |
27 | UIMainStoryboardFile
28 | Main_iPhone
29 | UIMainStoryboardFile~ipad
30 | Main_iPad
31 | UIRequiredDeviceCapabilities
32 |
33 | armv7
34 |
35 | UISupportedInterfaceOrientations
36 |
37 | UIInterfaceOrientationPortrait
38 |
39 | UISupportedInterfaceOrientations~ipad
40 |
41 | UIInterfaceOrientationPortrait
42 |
43 |
44 |
45 |
--------------------------------------------------------------------------------
/Example/DSNestedAccordion/DSNestedAccordion-Prefix.pch:
--------------------------------------------------------------------------------
1 | //
2 | // Prefix header
3 | //
4 | // The contents of this file are implicitly included at the beginning of every source file.
5 | //
6 |
7 | #import
8 |
9 | #ifndef __IPHONE_5_0
10 | #warning "This project uses features only available in iOS SDK 5.0 and later."
11 | #endif
12 |
13 | #ifdef __OBJC__
14 | #import
15 | #import
16 | #endif
17 |
--------------------------------------------------------------------------------
/Example/DSNestedAccordion/DSNotableBeerStyle.h:
--------------------------------------------------------------------------------
1 | #import
2 |
3 | @interface DSNotableBeerStyle : NSObject
4 | @property (nonatomic, strong) NSString *name;
5 |
6 | - (instancetype)initWithName:(NSString *)name;
7 |
8 | + (instancetype)styleWithName:(NSString *)name;
9 |
10 | @end
--------------------------------------------------------------------------------
/Example/DSNestedAccordion/DSNotableBeerStyle.m:
--------------------------------------------------------------------------------
1 | #import "DSNotableBeerStyle.h"
2 |
3 | @implementation DSNotableBeerStyle
4 | - (instancetype)initWithName:(NSString *)name {
5 | self = [super init];
6 | if (self) {
7 | self.name = name;
8 | }
9 |
10 | return self;
11 | }
12 |
13 | + (instancetype)styleWithName:(NSString *)name {
14 | return [[self alloc] initWithName:name];
15 | }
16 |
17 | @end
--------------------------------------------------------------------------------
/Example/DSNestedAccordion/Images.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "40x40",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "60x60",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "ipad",
20 | "size" : "29x29",
21 | "scale" : "1x"
22 | },
23 | {
24 | "idiom" : "ipad",
25 | "size" : "29x29",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "ipad",
30 | "size" : "40x40",
31 | "scale" : "1x"
32 | },
33 | {
34 | "idiom" : "ipad",
35 | "size" : "40x40",
36 | "scale" : "2x"
37 | },
38 | {
39 | "idiom" : "ipad",
40 | "size" : "76x76",
41 | "scale" : "1x"
42 | },
43 | {
44 | "idiom" : "ipad",
45 | "size" : "76x76",
46 | "scale" : "2x"
47 | }
48 | ],
49 | "info" : {
50 | "version" : 1,
51 | "author" : "xcode"
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/Example/DSNestedAccordion/Images.xcassets/LaunchImage.launchimage/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "orientation" : "portrait",
5 | "idiom" : "iphone",
6 | "extent" : "full-screen",
7 | "minimum-system-version" : "7.0",
8 | "scale" : "2x"
9 | },
10 | {
11 | "orientation" : "portrait",
12 | "idiom" : "iphone",
13 | "subtype" : "retina4",
14 | "extent" : "full-screen",
15 | "minimum-system-version" : "7.0",
16 | "scale" : "2x"
17 | },
18 | {
19 | "orientation" : "portrait",
20 | "idiom" : "ipad",
21 | "extent" : "full-screen",
22 | "minimum-system-version" : "7.0",
23 | "scale" : "1x"
24 | },
25 | {
26 | "orientation" : "landscape",
27 | "idiom" : "ipad",
28 | "extent" : "full-screen",
29 | "minimum-system-version" : "7.0",
30 | "scale" : "1x"
31 | },
32 | {
33 | "orientation" : "portrait",
34 | "idiom" : "ipad",
35 | "extent" : "full-screen",
36 | "minimum-system-version" : "7.0",
37 | "scale" : "2x"
38 | },
39 | {
40 | "orientation" : "landscape",
41 | "idiom" : "ipad",
42 | "extent" : "full-screen",
43 | "minimum-system-version" : "7.0",
44 | "scale" : "2x"
45 | }
46 | ],
47 | "info" : {
48 | "version" : 1,
49 | "author" : "xcode"
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/Example/DSNestedAccordion/en.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | /* Localized versions of Info.plist keys */
2 |
3 |
--------------------------------------------------------------------------------
/Example/DSNestedAccordion/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // DSNestedAccordion
4 | //
5 | // Created by deepan on 07/26/2014.
6 | // Copyright (c) 2014 deepan. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | #import "DSAppDelegate.h"
12 |
13 | int main(int argc, char * argv[])
14 | {
15 | @autoreleasepool {
16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([DSAppDelegate class]));
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Example/Podfile:
--------------------------------------------------------------------------------
1 | target 'DSNestedAccordion', :exclusive => true do
2 | pod "DSNestedAccordion", :path => "../"
3 | end
4 |
5 | target 'Tests', :exclusive => true do
6 | pod "DSNestedAccordion", :path => "../"
7 | pod 'Kiwi/XCTest', "~> 2.2.4"
8 | end
9 |
--------------------------------------------------------------------------------
/Example/Podfile.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - DSNestedAccordion (0.1.0)
3 | - Kiwi/ARC (2.2.4)
4 | - Kiwi/NonARC (2.2.4)
5 | - Kiwi/XCTest (2.2.4):
6 | - Kiwi/ARC
7 | - Kiwi/NonARC
8 |
9 | DEPENDENCIES:
10 | - DSNestedAccordion (from `../`)
11 | - Kiwi/XCTest (~> 2.2.4)
12 |
13 | EXTERNAL SOURCES:
14 | DSNestedAccordion:
15 | :path: ../
16 |
17 | SPEC CHECKSUMS:
18 | DSNestedAccordion: f2f0feaf7b10f0c30abefe62101d355e4a31105f
19 | Kiwi: c73667f2b84cbf36f1a3830267c5a4ae8dcbd8ba
20 |
21 | COCOAPODS: 0.33.1
22 |
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/DSNestedAccordion/DSCellLevel.h:
--------------------------------------------------------------------------------
1 | ../../../../Pod/Classes/DSCellLevel.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/DSNestedAccordion/DSCellPath.h:
--------------------------------------------------------------------------------
1 | ../../../../Pod/Classes/DSCellPath.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/DSNestedAccordion/DSCellPathTracker.h:
--------------------------------------------------------------------------------
1 | ../../../../Pod/Classes/DSCellPathTracker.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/DSNestedAccordion/DSNestedAccordionHandler.h:
--------------------------------------------------------------------------------
1 | ../../../../Pod/Classes/DSNestedAccordionHandler.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/DSNestedAccordion/NSException+DSException.h:
--------------------------------------------------------------------------------
1 | ../../../../Pod/Classes/NSException+DSException.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWAfterAllNode.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Nodes/KWAfterAllNode.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWAfterEachNode.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Nodes/KWAfterEachNode.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWAny.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWAny.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWAsyncVerifier.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Verifiers/KWAsyncVerifier.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWBeBetweenMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWBeBetweenMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWBeEmptyMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWBeEmptyMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWBeIdenticalToMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWBeIdenticalToMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWBeKindOfClassMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWBeKindOfClassMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWBeMemberOfClassMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWBeMemberOfClassMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWBeSubclassOfClassMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWBeSubclassOfClassMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWBeTrueMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWBeTrueMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWBeWithinMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWBeWithinMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWBeZeroMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWBeZeroMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWBeforeAllNode.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Nodes/KWBeforeAllNode.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWBeforeEachNode.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Nodes/KWBeforeEachNode.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWBlock.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWBlock.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWBlockNode.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Nodes/KWBlockNode.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWBlockRaiseMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWBlockRaiseMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWCallSite.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWCallSite.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWCaptureSpy.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWCaptureSpy.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWChangeMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWChangeMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWConformToProtocolMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWConformToProtocolMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWContainMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWContainMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWContainStringMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWContainStringMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWContextNode.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Nodes/KWContextNode.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWCountType.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWCountType.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWDeviceInfo.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWDeviceInfo.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWEqualMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWEqualMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWExample.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWExample.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWExampleDelegate.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWExampleDelegate.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWExampleNode.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Nodes/KWExampleNode.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWExampleNodeVisitor.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWExampleNodeVisitor.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWExampleSuite.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWExampleSuite.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWExampleSuiteBuilder.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWExampleSuiteBuilder.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWExistVerifier.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Verifiers/KWExistVerifier.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWExpectationType.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWExpectationType.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWFailure.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWFailure.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWFormatter.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWFormatter.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWFutureObject.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWFutureObject.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWGenericMatchEvaluator.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWGenericMatchEvaluator.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWGenericMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWGenericMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWGenericMatchingAdditions.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWGenericMatchingAdditions.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWHaveMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWHaveMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWHaveValueMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWHaveValueMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWInequalityMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWInequalityMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWIntercept.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Stubbing/KWIntercept.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWInvocationCapturer.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWInvocationCapturer.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWItNode.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Nodes/KWItNode.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWLet.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWLet.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWLetNode.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Nodes/KWLetNode.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWMatchVerifier.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Verifiers/KWMatchVerifier.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWMatcherFactory.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWMatcherFactory.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWMatchers.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWMatchers.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWMatching.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWMatching.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWMessagePattern.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/NonARC/KWMessagePattern.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWMessageSpying.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWMessageSpying.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWMessageTracker.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWMessageTracker.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWMock.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Mocking/KWMock.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWNilMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWNilMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWNotificationMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWNotificationMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWNull.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWNull.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWObjCUtilities.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWObjCUtilities.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWPendingNode.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Nodes/KWPendingNode.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWProbe.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWProbe.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWProbePoller.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWProbePoller.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWRaiseMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWRaiseMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWReceiveMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWReceiveMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWRegisterMatchersNode.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Nodes/KWRegisterMatchersNode.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWRegularExpressionPatternMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWRegularExpressionPatternMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWReporting.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWReporting.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWRespondToSelectorMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWRespondToSelectorMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWSpec.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWSpec.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWStringContainsMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWStringContainsMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWStringPrefixMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWStringPrefixMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWStringUtilities.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWStringUtilities.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWStub.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Stubbing/KWStub.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWSymbolicator.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWSymbolicator.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWUserDefinedMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWUserDefinedMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWValue.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWValue.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWVerifying.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Verifiers/KWVerifying.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KWWorkarounds.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWWorkarounds.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/Kiwi.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/Kiwi.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KiwiBlockMacros.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KiwiBlockMacros.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KiwiConfiguration.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KiwiConfiguration.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/KiwiMacros.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KiwiMacros.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/NSInvocation+KiwiAdditions.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/NSInvocation+KiwiAdditions.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/NSInvocation+OCMAdditions.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/NSInvocation+OCMAdditions.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/NSMethodSignature+KiwiAdditions.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/NSMethodSignature+KiwiAdditions.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/NSNumber+KiwiAdditions.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/NSNumber+KiwiAdditions.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/NSObject+KiwiMockAdditions.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Mocking/NSObject+KiwiMockAdditions.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/NSObject+KiwiSpyAdditions.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/NSObject+KiwiSpyAdditions.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/NSObject+KiwiStubAdditions.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Stubbing/NSObject+KiwiStubAdditions.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/NSObject+KiwiVerifierAdditions.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/NSObject+KiwiVerifierAdditions.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/NSProxy+KiwiVerifierAdditions.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/NSProxy+KiwiVerifierAdditions.h
--------------------------------------------------------------------------------
/Example/Pods/BuildHeaders/Kiwi/NSValue+KiwiAdditions.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/NSValue+KiwiAdditions.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/DSNestedAccordion/DSCellLevel.h:
--------------------------------------------------------------------------------
1 | ../../../../Pod/Classes/DSCellLevel.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/DSNestedAccordion/DSCellPath.h:
--------------------------------------------------------------------------------
1 | ../../../../Pod/Classes/DSCellPath.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/DSNestedAccordion/DSCellPathTracker.h:
--------------------------------------------------------------------------------
1 | ../../../../Pod/Classes/DSCellPathTracker.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/DSNestedAccordion/DSNestedAccordionHandler.h:
--------------------------------------------------------------------------------
1 | ../../../../Pod/Classes/DSNestedAccordionHandler.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/DSNestedAccordion/NSException+DSException.h:
--------------------------------------------------------------------------------
1 | ../../../../Pod/Classes/NSException+DSException.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWAfterAllNode.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Nodes/KWAfterAllNode.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWAfterEachNode.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Nodes/KWAfterEachNode.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWAny.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWAny.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWAsyncVerifier.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Verifiers/KWAsyncVerifier.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWBeBetweenMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWBeBetweenMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWBeEmptyMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWBeEmptyMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWBeIdenticalToMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWBeIdenticalToMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWBeKindOfClassMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWBeKindOfClassMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWBeMemberOfClassMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWBeMemberOfClassMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWBeSubclassOfClassMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWBeSubclassOfClassMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWBeTrueMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWBeTrueMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWBeWithinMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWBeWithinMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWBeZeroMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWBeZeroMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWBeforeAllNode.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Nodes/KWBeforeAllNode.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWBeforeEachNode.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Nodes/KWBeforeEachNode.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWBlock.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWBlock.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWBlockNode.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Nodes/KWBlockNode.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWBlockRaiseMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWBlockRaiseMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWCallSite.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWCallSite.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWCaptureSpy.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWCaptureSpy.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWChangeMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWChangeMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWConformToProtocolMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWConformToProtocolMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWContainMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWContainMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWContainStringMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWContainStringMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWContextNode.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Nodes/KWContextNode.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWCountType.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWCountType.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWDeviceInfo.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWDeviceInfo.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWEqualMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWEqualMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWExample.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWExample.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWExampleDelegate.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWExampleDelegate.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWExampleNode.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Nodes/KWExampleNode.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWExampleNodeVisitor.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWExampleNodeVisitor.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWExampleSuite.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWExampleSuite.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWExampleSuiteBuilder.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWExampleSuiteBuilder.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWExistVerifier.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Verifiers/KWExistVerifier.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWExpectationType.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWExpectationType.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWFailure.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWFailure.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWFormatter.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWFormatter.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWFutureObject.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWFutureObject.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWGenericMatchEvaluator.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWGenericMatchEvaluator.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWGenericMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWGenericMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWGenericMatchingAdditions.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWGenericMatchingAdditions.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWHaveMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWHaveMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWHaveValueMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWHaveValueMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWInequalityMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWInequalityMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWIntercept.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Stubbing/KWIntercept.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWInvocationCapturer.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWInvocationCapturer.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWItNode.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Nodes/KWItNode.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWLet.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWLet.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWLetNode.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Nodes/KWLetNode.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWMatchVerifier.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Verifiers/KWMatchVerifier.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWMatcherFactory.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWMatcherFactory.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWMatchers.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWMatchers.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWMatching.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWMatching.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWMessagePattern.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/NonARC/KWMessagePattern.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWMessageSpying.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWMessageSpying.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWMessageTracker.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWMessageTracker.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWMock.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Mocking/KWMock.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWNilMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWNilMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWNotificationMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWNotificationMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWNull.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWNull.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWObjCUtilities.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWObjCUtilities.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWPendingNode.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Nodes/KWPendingNode.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWProbe.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWProbe.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWProbePoller.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWProbePoller.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWRaiseMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWRaiseMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWReceiveMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWReceiveMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWRegisterMatchersNode.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Nodes/KWRegisterMatchersNode.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWRegularExpressionPatternMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWRegularExpressionPatternMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWReporting.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWReporting.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWRespondToSelectorMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWRespondToSelectorMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWSpec.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWSpec.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWStringContainsMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWStringContainsMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWStringPrefixMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWStringPrefixMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWStringUtilities.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWStringUtilities.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWStub.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Stubbing/KWStub.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWSymbolicator.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWSymbolicator.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWUserDefinedMatcher.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Matchers/KWUserDefinedMatcher.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWValue.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWValue.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWVerifying.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Verifiers/KWVerifying.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KWWorkarounds.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KWWorkarounds.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/Kiwi.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/Kiwi.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KiwiBlockMacros.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KiwiBlockMacros.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KiwiConfiguration.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KiwiConfiguration.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/KiwiMacros.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/KiwiMacros.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/NSInvocation+KiwiAdditions.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/NSInvocation+KiwiAdditions.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/NSInvocation+OCMAdditions.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/NSInvocation+OCMAdditions.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/NSMethodSignature+KiwiAdditions.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/NSMethodSignature+KiwiAdditions.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/NSNumber+KiwiAdditions.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/NSNumber+KiwiAdditions.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/NSObject+KiwiMockAdditions.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Mocking/NSObject+KiwiMockAdditions.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/NSObject+KiwiSpyAdditions.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/NSObject+KiwiSpyAdditions.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/NSObject+KiwiStubAdditions.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Stubbing/NSObject+KiwiStubAdditions.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/NSObject+KiwiVerifierAdditions.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/NSObject+KiwiVerifierAdditions.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/NSProxy+KiwiVerifierAdditions.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/NSProxy+KiwiVerifierAdditions.h
--------------------------------------------------------------------------------
/Example/Pods/Headers/Kiwi/NSValue+KiwiAdditions.h:
--------------------------------------------------------------------------------
1 | ../../Kiwi/Classes/Core/NSValue+KiwiAdditions.h
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/KWAny.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 |
9 | // KWAny exists to determine arguments in a message pattern that should
10 | // match any value. Used for pointers as well as for scalar values.
11 | @interface KWAny : NSObject
12 |
13 | #pragma mark - Initializing
14 |
15 | + (id)any;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/KWAny.m:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KWAny.h"
8 |
9 | @implementation KWAny
10 |
11 | #pragma mark - Initializing
12 |
13 | + (id)any {
14 | static KWAny *sharedAny = nil;
15 | static dispatch_once_t onceToken;
16 | dispatch_once(&onceToken, ^{
17 | sharedAny = [self new];
18 |
19 | });
20 | return sharedAny;
21 | }
22 |
23 | @end
24 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/KWBlock.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 |
9 | @interface KWBlock : NSObject
10 |
11 | #pragma mark - Initializing
12 | - (id)initWithBlock:(void (^)(void))block;
13 |
14 | + (id)blockWithBlock:(void (^)(void))block;
15 |
16 | #pragma mark - Calling Blocks
17 |
18 | - (void)call;
19 |
20 | @end
21 |
22 | #pragma mark - Creating Blocks
23 |
24 | KWBlock *theBlock(void (^block)(void));
25 | KWBlock *lambda(void (^block)(void));
26 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/KWBlock.m:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KWBlock.h"
8 |
9 | @interface KWBlock()
10 |
11 | #pragma mark - Properties
12 |
13 | @property (nonatomic, readonly, copy) void (^block)(void);
14 |
15 | @end
16 |
17 | @implementation KWBlock
18 |
19 | #pragma mark - Initializing
20 |
21 | - (id)initWithBlock:(void (^)(void))block {
22 | self = [super init];
23 | if (self) {
24 | _block = [block copy];
25 | }
26 |
27 | return self;
28 | }
29 |
30 | + (id)blockWithBlock:(void (^)(void))aBlock {
31 | return [[self alloc] initWithBlock:aBlock];
32 | }
33 |
34 | #pragma mark - Calling Blocks
35 |
36 | - (void)call {
37 | self.block();
38 | }
39 |
40 | @end
41 |
42 | #pragma mark - Creating Blocks
43 |
44 | KWBlock *theBlock(void (^block)(void)) {
45 | return lambda(block);
46 | }
47 |
48 | KWBlock *lambda(void (^block)(void)) {
49 | return [KWBlock blockWithBlock:block];
50 | }
51 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/KWCallSite.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 |
9 | @interface KWCallSite : NSObject
10 |
11 | #pragma mark - Initializing
12 |
13 | - (id)initWithFilename:(NSString *)aFilename lineNumber:(NSUInteger)aLineNumber;
14 |
15 | + (id)callSiteWithFilename:(NSString *)aFilename lineNumber:(NSUInteger)aLineNumber;
16 |
17 | #pragma mark - Properties
18 |
19 | @property (nonatomic, readonly, copy) NSString *filename;
20 | @property (nonatomic, readonly) NSUInteger lineNumber;
21 |
22 | #pragma mark - Identifying and Comparing
23 |
24 | - (BOOL)isEqualToCallSite:(KWCallSite *)aCallSite;
25 |
26 | @end
27 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/KWCallSite.m:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KWCallSite.h"
8 |
9 | @implementation KWCallSite
10 |
11 | #pragma mark - Initializing
12 |
13 | - (id)initWithFilename:(NSString *)aFilename lineNumber:(NSUInteger)aLineNumber {
14 | self = [super init];
15 | if (self) {
16 | _filename = [aFilename copy];
17 | _lineNumber = aLineNumber;
18 | }
19 |
20 | return self;
21 | }
22 |
23 | + (id)callSiteWithFilename:(NSString *)aFilename lineNumber:(NSUInteger)aLineNumber {
24 | return [[self alloc] initWithFilename:aFilename lineNumber:aLineNumber];
25 | }
26 |
27 | #pragma mark - Identifying and Comparing
28 |
29 | - (NSUInteger)hash {
30 | return [[NSString stringWithFormat:@"%@%u", self.filename, (unsigned)self.lineNumber] hash];
31 | }
32 |
33 | - (BOOL)isEqual:(id)anObject {
34 | if (![anObject isKindOfClass:[KWCallSite class]])
35 | return NO;
36 |
37 | return [self isEqualToCallSite:anObject];
38 | }
39 |
40 | - (BOOL)isEqualToCallSite:(KWCallSite *)aCallSite {
41 | return [self.filename isEqualToString:aCallSite.filename] && (self.lineNumber == aCallSite.lineNumber);
42 | }
43 |
44 | @end
45 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/KWCaptureSpy.h:
--------------------------------------------------------------------------------
1 | #import "KWMessageSpying.h"
2 |
3 | @interface KWCaptureSpy : NSObject
4 |
5 | @property (nonatomic, strong, readonly) id argument;
6 |
7 | - (id)initWithArgumentIndex:(NSUInteger)index;
8 |
9 | @end
10 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/KWCaptureSpy.m:
--------------------------------------------------------------------------------
1 | #import "KWCaptureSpy.h"
2 |
3 | #import "KWObjCUtilities.h"
4 | #import "KWNull.h"
5 | #import "KWValue.h"
6 | #import "NSInvocation+KiwiAdditions.h"
7 | #import "NSMethodSignature+KiwiAdditions.h"
8 |
9 | @interface KWCaptureSpy()
10 |
11 | @property (nonatomic, strong) id argument;
12 |
13 | @end
14 |
15 | @implementation KWCaptureSpy {
16 | NSUInteger _argumentIndex;
17 | }
18 |
19 | - (id)initWithArgumentIndex:(NSUInteger)index {
20 | self = [super init];
21 | if (self) {
22 | _argumentIndex = index;
23 | }
24 | return self;
25 | }
26 |
27 | - (id)argument {
28 | if (!_argument) {
29 | @throw [NSException exceptionWithName:NSInternalInconsistencyException reason:@"Argument requested has yet to be captured." userInfo:nil];
30 | }
31 |
32 | if(_argument == [KWNull null]) {
33 | return nil;
34 | }
35 | else {
36 | return _argument;
37 | }
38 | }
39 |
40 | - (void)object:(id)anObject didReceiveInvocation:(NSInvocation *)anInvocation {
41 | if (!_argument) {
42 | NSMethodSignature *signature = [anInvocation methodSignature];
43 | const char *objCType = [signature messageArgumentTypeAtIndex:_argumentIndex];
44 | if (KWObjCTypeIsObject(objCType) || KWObjCTypeIsClass(objCType)) {
45 | void* argumentBuffer = NULL;
46 | [anInvocation getMessageArgument:&argumentBuffer atIndex:_argumentIndex];
47 | id argument = (__bridge id)argumentBuffer;
48 | if (KWObjCTypeIsBlock(objCType)) {
49 | _argument = [argument copy];
50 | } else {
51 | if(argument == nil) {
52 | _argument = [KWNull null];
53 | } else {
54 | _argument = argument;
55 | }
56 | }
57 | } else {
58 | NSData *data = [anInvocation messageArgumentDataAtIndex:_argumentIndex];
59 | _argument = [KWValue valueWithBytes:[data bytes] objCType:objCType];
60 | }
61 | }
62 | }
63 |
64 | @end
65 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/KWCountType.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 |
9 | enum {
10 | KWCountTypeExact,
11 | KWCountTypeAtLeast,
12 | KWCountTypeAtMost
13 | };
14 |
15 | typedef NSUInteger KWCountType;
16 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/KWDeviceInfo.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 |
9 | @interface KWDeviceInfo : NSObject
10 |
11 | #pragma mark - Getting the Device Type
12 |
13 | + (BOOL)isSimulator;
14 | + (BOOL)isPhysical;
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/KWDeviceInfo.m:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KWDeviceInfo.h"
8 |
9 | #if TARGET_IPHONE_SIMULATOR
10 |
11 | #import
12 |
13 | #endif // #if TARGET_IPHONE_SIMULATOR
14 |
15 | @implementation KWDeviceInfo
16 |
17 | #pragma mark - Getting the Device Type
18 |
19 | + (BOOL)isSimulator {
20 | #if TARGET_IPHONE_SIMULATOR
21 | return YES;
22 | #else
23 | return NO;
24 | #endif // #if TARGET_IPHONE_SIMULATOR
25 | }
26 |
27 | + (BOOL)isPhysical {
28 | return ![self isSimulator];
29 | }
30 |
31 | @end
32 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/KWExampleDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // KWExampleGroupDelegate.h
3 | // Kiwi
4 | //
5 | // Created by Luke Redpath on 08/09/2011.
6 | // Copyright 2011 Allen Ding. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @class KWExample;
12 | @class KWFailure;
13 |
14 | @protocol KWExampleDelegate
15 |
16 | - (void)example:(KWExample *)example didFailWithFailure:(KWFailure *)failure;
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/KWExampleNodeVisitor.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 |
9 | @class KWAfterAllNode;
10 | @class KWAfterEachNode;
11 | @class KWBeforeAllNode;
12 | @class KWBeforeEachNode;
13 | @class KWContextNode;
14 | @class KWLetNode;
15 | @class KWItNode;
16 | @class KWPendingNode;
17 | @class KWRegisterMatchersNode;
18 |
19 | @protocol KWExampleNodeVisitor
20 |
21 | #pragma mark - Visiting Nodes
22 |
23 | @optional
24 |
25 | - (void)visitContextNode:(KWContextNode *)aNode;
26 | - (void)visitRegisterMatchersNode:(KWRegisterMatchersNode *)aNode;
27 | - (void)visitBeforeAllNode:(KWBeforeAllNode *)aNode;
28 | - (void)visitAfterAllNode:(KWAfterAllNode *)aNode;
29 | - (void)visitBeforeEachNode:(KWBeforeEachNode *)aNode;
30 | - (void)visitAfterEachNode:(KWAfterEachNode *)aNode;
31 | - (void)visitLetNode:(KWLetNode *)aNode;
32 | - (void)visitItNode:(KWItNode *)aNode;
33 | - (void)visitPendingNode:(KWPendingNode *)aNode;
34 |
35 | @end
36 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/KWExampleSuite.h:
--------------------------------------------------------------------------------
1 | //
2 | // KWExampleSuite.h
3 | // Kiwi
4 | //
5 | // Created by Luke Redpath on 17/10/2011.
6 | // Copyright (c) 2011 Allen Ding. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "KWExampleNodeVisitor.h"
11 |
12 | @class KWContextNode;
13 | @class KWExample;
14 | @class SenTestCase;
15 |
16 | @interface KWExampleSuite : NSObject
17 |
18 | - (id)initWithRootNode:(KWContextNode *)contextNode;
19 | - (void)addExample:(KWExample *)example;
20 | - (void)markLastExampleAsLastInContext:(KWContextNode *)context;
21 | - (NSArray *)invocationsForTestCase;
22 | @end
23 |
24 | @interface NSInvocation (KWExampleGroup)
25 | - (void)kw_setExample:(KWExample *)exampleGroup;
26 | - (KWExample *)kw_example;
27 | @end
28 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/KWExampleSuiteBuilder.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 | #import "KWBlock.h"
9 |
10 | @class KWCallSite;
11 | @class KWExample;
12 | @class KWExampleSuite;
13 | @class KWContextNode;
14 |
15 | @interface KWExampleSuiteBuilder : NSObject
16 |
17 | #pragma mark - Initializing
18 |
19 | + (id)sharedExampleSuiteBuilder;
20 |
21 | #pragma mark - Building Example Groups
22 |
23 | @property (nonatomic, readonly) BOOL isBuildingExampleSuite;
24 | @property (nonatomic, strong, readonly) KWExampleSuite *currentExampleSuite;
25 | @property (nonatomic, strong) KWExample *currentExample;
26 | @property (nonatomic, strong) KWCallSite *focusedCallSite;
27 |
28 | //spec file name:line number of callsite
29 | - (void)focusWithURI:(NSString *)nodeUrl;
30 | - (KWExampleSuite *)buildExampleSuite:(void (^)(void))buildingBlock;
31 |
32 | - (void)pushContextNodeWithCallSite:(KWCallSite *)aCallSite description:(NSString *)aDescription;
33 | - (void)popContextNode;
34 | - (void)setRegisterMatchersNodeWithCallSite:(KWCallSite *)aCallSite namespacePrefix:(NSString *)aNamespacePrefix;
35 | - (void)setBeforeAllNodeWithCallSite:(KWCallSite *)aCallSite block:(void (^)(void))block;
36 | - (void)setAfterAllNodeWithCallSite:(KWCallSite *)aCallSite block:(void (^)(void))block;
37 | - (void)setBeforeEachNodeWithCallSite:(KWCallSite *)aCallSite block:(void (^)(void))block;
38 | - (void)setAfterEachNodeWithCallSite:(KWCallSite *)aCallSite block:(void (^)(void))block;
39 | - (void)addLetNodeWithCallSite:(KWCallSite *)aCallSite objectRef:(id *)anObjectRef symbolName:(NSString *)aSymbolName block:(id (^)(void))block;
40 | - (void)addItNodeWithCallSite:(KWCallSite *)aCallSite description:(NSString *)aDescription block:(void (^)(void))block;
41 | - (void)addPendingNodeWithCallSite:(KWCallSite *)aCallSite description:(NSString *)aDescription;
42 |
43 | - (BOOL)isFocused;
44 | - (BOOL)foundFocus;
45 |
46 | @end
47 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/KWExpectationType.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 |
9 | enum {
10 | KWExpectationTypeShould,
11 | KWExpectationTypeShouldNot,
12 | KWExpectationTypeMaybe
13 | };
14 |
15 | typedef NSUInteger KWExpectationType;
16 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/KWFailure.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 |
9 | @class KWCallSite;
10 |
11 | @interface KWFailure : NSObject
12 |
13 | #pragma mark - Initializing
14 |
15 | - (id)initWithCallSite:(KWCallSite *)aCallSite message:(NSString *)aMessage;
16 | - (id)initWithCallSite:(KWCallSite *)aCallSite format:(NSString *)format, ...;
17 |
18 | + (id)failureWithCallSite:(KWCallSite *)aCallSite message:(NSString *)aMessage;
19 | + (id)failureWithCallSite:(KWCallSite *)aCallSite format:(NSString *)format, ...;
20 |
21 | #pragma mark - Properties
22 |
23 | @property (nonatomic, readonly) NSString *message;
24 | @property (nonatomic, weak, readonly) KWCallSite *callSite;
25 |
26 | #pragma mark - Getting Exception Representations
27 |
28 | - (NSException *)exceptionValue;
29 |
30 | @end
31 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/KWFailure.m:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KWFailure.h"
8 | #import
9 | #import "KWCallSite.h"
10 |
11 | @implementation KWFailure
12 |
13 | #pragma mark - Initializing
14 |
15 | - (id)initWithCallSite:(KWCallSite *)aCallSite message:(NSString *)aMessage {
16 | self = [super init];
17 | if (self) {
18 | _callSite = aCallSite;
19 | _message = [aMessage copy];
20 | }
21 |
22 | return self;
23 | }
24 |
25 | - (id)initWithCallSite:(KWCallSite *)aCallSite format:(NSString *)format, ... {
26 | va_list argumentList;
27 | va_start(argumentList, format);
28 | NSString *aMessage = [[NSString alloc] initWithFormat:format arguments:argumentList];
29 | return [self initWithCallSite:aCallSite message:aMessage];
30 | }
31 |
32 | + (id)failureWithCallSite:(KWCallSite *)aCallSite message:(NSString *)aMessage {
33 | return [[self alloc] initWithCallSite:aCallSite message:aMessage];
34 | }
35 |
36 | + (id)failureWithCallSite:(KWCallSite *)aCallSite format:(NSString *)format, ... {
37 | va_list argumentList;
38 | va_start(argumentList, format);
39 | NSString *message = [[NSString alloc] initWithFormat:format arguments:argumentList];
40 | return [self failureWithCallSite:aCallSite message:message];
41 | }
42 |
43 | #pragma mark - Getting Exception Representations
44 |
45 | - (NSException *)exceptionValue {
46 | NSDictionary *userInfo = nil;
47 | if (self.callSite) {
48 | NSNumber *lineNumber = @(self.callSite.lineNumber);
49 | userInfo = @{
50 | @"SenTestFilenameKey": self.callSite.filename,
51 | @"SenTestLineNumberKey": lineNumber
52 | };
53 | }
54 | return [NSException exceptionWithName:@"KWFailureException" reason:self.message userInfo:userInfo];
55 | }
56 |
57 | @end
58 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/KWFormatter.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 |
9 | @interface KWFormatter : NSObject
10 |
11 | #pragma mark - Getting Descriptions
12 |
13 | + (NSString *)formatObject:(id)anObject;
14 | + (NSString *)formatObjectIncludingClass:(id)anObject;
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/KWFormatter.m:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KWFormatter.h"
8 |
9 | @implementation KWFormatter
10 |
11 |
12 | #pragma mark - Getting Descriptions
13 |
14 | + (NSString *)formatObject:(id)anObject {
15 | if ([anObject isKindOfClass:[NSString class]])
16 | return [NSString stringWithFormat:@"\"%@\"", anObject];
17 |
18 | else if ([anObject isKindOfClass:[NSDictionary class]])
19 | return [anObject description]; // NSDictionary conforms to NSFastEnumeration
20 |
21 | else if ([anObject conformsToProtocol:@protocol(NSFastEnumeration)])
22 | return [self formattedCollection:anObject];
23 |
24 | return [anObject description];
25 | }
26 |
27 | + (NSString *)formatObjectIncludingClass:(id)anObject {
28 | NSString *classString = [[anObject class] description];
29 |
30 | if ([anObject isKindOfClass:[NSString class]])
31 | classString = @"NSString";
32 |
33 | return [NSString stringWithFormat:@"(%@) %@", classString, [self formatObject:anObject]];
34 | }
35 |
36 |
37 | #pragma mark - Private
38 |
39 | + (NSString *)formattedCollection:(id)collection {
40 |
41 | NSMutableString *description = [[NSMutableString alloc] initWithString:@"("];
42 | NSUInteger index = 0;
43 |
44 | for (id object in collection) {
45 | if (index == 0)
46 | [description appendFormat:@"%@", [self formatObject:object]];
47 | else
48 | [description appendFormat:@", %@", [self formatObject:object]];
49 |
50 | ++index;
51 | }
52 |
53 | [description appendString:@")"];
54 | return description;
55 | }
56 |
57 |
58 |
59 | @end
60 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/KWFutureObject.h:
--------------------------------------------------------------------------------
1 | //
2 | // KWFutureObject.h
3 | // iOSFalconCore
4 | //
5 | // Created by Luke Redpath on 13/01/2011.
6 | // Copyright 2011 LJR Software Limited. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | typedef id (^KWFutureObjectBlock)(void);
12 |
13 | @interface KWFutureObject : NSObject
14 |
15 | + (id)objectWithObjectPointer:(id *)pointer;
16 | + (id)futureObjectWithBlock:(KWFutureObjectBlock)block;
17 | - (id)initWithBlock:(KWFutureObjectBlock)aBlock;
18 | - (id)object;
19 |
20 | @end
21 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/KWFutureObject.m:
--------------------------------------------------------------------------------
1 | //
2 | // KWFutureObject.m
3 | // iOSFalconCore
4 | //
5 | // Created by Luke Redpath on 13/01/2011.
6 | // Copyright 2011 LJR Software Limited. All rights reserved.
7 | //
8 |
9 | #import "KWFutureObject.h"
10 |
11 | @interface KWFutureObject()
12 |
13 | @property (nonatomic, strong) KWFutureObjectBlock block;
14 |
15 | @end
16 |
17 | @implementation KWFutureObject
18 |
19 | + (id)objectWithObjectPointer:(id *)pointer {
20 | return [self futureObjectWithBlock:^{ return *pointer; }];
21 | }
22 |
23 | + (id)futureObjectWithBlock:(KWFutureObjectBlock)block {
24 | return [[self alloc] initWithBlock:block];
25 | }
26 |
27 | - (id)initWithBlock:(KWFutureObjectBlock)aBlock {
28 | self = [super init];
29 | if (self) {
30 | _block = [aBlock copy];
31 | }
32 | return self;
33 | }
34 |
35 | - (id)object; {
36 | return self.block();
37 | }
38 |
39 |
40 | @end
41 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/KWInvocationCapturer.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 |
9 | @protocol KWInvocationCapturerDelegate;
10 |
11 | @interface KWInvocationCapturer : NSProxy
12 |
13 | #pragma mark - Initializing
14 |
15 | - (id)initWithDelegate:(id)aDelegate;
16 | - (id)initWithDelegate:(id)aDelegate userInfo:(NSDictionary *)aUserInfo;
17 |
18 | + (id)invocationCapturerWithDelegate:(id)aDelegate;
19 | + (id)invocationCapturerWithDelegate:(id)aDelegate userInfo:(NSDictionary *)aUserInfo;
20 |
21 | #pragma mark - Properties
22 |
23 | @property (nonatomic, weak, readonly) id delegate;
24 | @property (nonatomic, strong, readonly) NSDictionary *userInfo;
25 |
26 | @end
27 |
28 | @protocol KWInvocationCapturerDelegate
29 |
30 | #pragma mark - Capturing Invocations
31 |
32 | - (NSMethodSignature *)invocationCapturer:(KWInvocationCapturer *)anInvocationCapturer methodSignatureForSelector:(SEL)aSelector;
33 | - (void)invocationCapturer:(KWInvocationCapturer *)anInvocationCapturer didCaptureInvocation:(NSInvocation *)anInvocation;
34 |
35 | @end
36 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/KWLet.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #if __has_feature(objc_arr)
8 | # define KW_ARC_AUTORELEASE(obj) obj
9 | #else
10 | # define KW_ARC_AUTORELEASE(obj) [obj autorelease]
11 | #endif
12 |
13 | #define KW_LET_REF(var) \
14 | (__autoreleasing id *) \
15 | ( (void *(^)(void)) KW_ARC_AUTORELEASE([^{ void *ref = &var; return ref; } copy]) )()
16 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/KWMatcher.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 | #import "KWMatching.h"
9 |
10 | @interface KWMatcher : NSObject
11 |
12 | #pragma mark - Initializing
13 |
14 | - (id)initWithSubject:(id)anObject;
15 |
16 | + (id)matcherWithSubject:(id)anObject;
17 |
18 | #pragma mark - Properties
19 |
20 | @property (nonatomic, strong) id subject;
21 |
22 | #pragma mark - Getting Matcher Strings
23 |
24 | + (NSArray *)matcherStrings;
25 |
26 | #pragma mark - Getting Matcher Compatability
27 |
28 | + (BOOL)canMatchSubject:(id)anObject;
29 |
30 | #pragma mark - Matching
31 |
32 | - (BOOL)evaluate;
33 |
34 | #pragma mark - Getting Failure Messages
35 |
36 | - (NSString *)failureMessageForShould;
37 | - (NSString *)failureMessageForShouldNot;
38 |
39 | @end
40 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/KWMatcherFactory.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 | #import "KWMatching.h"
9 |
10 | @class KWFailure;
11 | @class KWMatcher;
12 | @class KWUserDefinedMatcherBuilder;
13 |
14 | @interface KWMatcherFactory : NSObject
15 |
16 | #pragma mark - Initializing
17 |
18 | - (id)init;
19 |
20 | #pragma mark - Properties
21 |
22 | @property (nonatomic, readonly) NSArray *registeredMatcherClasses;
23 |
24 | #pragma mark - Registering Matcher Classes
25 |
26 | - (void)registerMatcherClass:(Class)aClass;
27 | - (void)registerMatcherClassesWithNamespacePrefix:(NSString *)aNamespacePrefix;
28 |
29 | #pragma mark - Getting Method Signatures
30 |
31 | - (NSMethodSignature *)methodSignatureForMatcherSelector:(SEL)aSelector;
32 |
33 | #pragma mark - Getting Matchers
34 |
35 | - (KWMatcher *)matcherFromInvocation:(NSInvocation *)anInvocation subject:(id)subject;
36 |
37 | @end
38 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/KWMatchers.h:
--------------------------------------------------------------------------------
1 | //
2 | // KWMatchers.h
3 | // Kiwi
4 | //
5 | // Created by Luke Redpath on 17/06/2011.
6 | // Copyright 2011 Allen Ding. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @class KWUserDefinedMatcherBuilder;
12 |
13 | typedef void (^KWMatchersBuildingBlock)(KWUserDefinedMatcherBuilder *matcherBuilder);
14 |
15 | @class KWUserDefinedMatcher;
16 |
17 | @interface KWMatchers : NSObject
18 |
19 | + (id)matchers;
20 |
21 | #pragma mark - Defining Matchers
22 |
23 | + (void)defineMatcher:(NSString *)selectorString as:(KWMatchersBuildingBlock)block;
24 | - (void)defineMatcher:(NSString *)selectorString as:(KWMatchersBuildingBlock)block;
25 | - (void)addUserDefinedMatcherBuilder:(KWUserDefinedMatcherBuilder *)builder;
26 |
27 | #pragma mark - Building Matchers
28 |
29 | - (KWUserDefinedMatcher *)matcherForSelector:(SEL)selector subject:(id)subject;
30 | @end
31 |
32 | void KWDefineMatchers(NSString *selectorString, KWMatchersBuildingBlock block);
33 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/KWMatchers.m:
--------------------------------------------------------------------------------
1 | //
2 | // KWMatchers.m
3 | // Kiwi
4 | //
5 | // Created by Luke Redpath on 17/06/2011.
6 | // Copyright 2011 Allen Ding. All rights reserved.
7 | //
8 |
9 | #import "KWMatchers.h"
10 | #import "KWUserDefinedMatcher.h"
11 |
12 | @interface KWMatchers() {
13 | NSMutableDictionary *userDefinedMatchers;
14 | }
15 | @end
16 |
17 | @implementation KWMatchers
18 |
19 | #pragma mark - Singleton implementation
20 |
21 | static id sharedMatchers = nil;
22 |
23 | + (void)initialize {
24 | if (self == [KWMatchers class]) {
25 | sharedMatchers = [[self alloc] init];
26 | }
27 | }
28 |
29 | + (id)matchers {
30 | return sharedMatchers;
31 | }
32 |
33 | - (id)init {
34 | self = [super init];
35 | if (self) {
36 | userDefinedMatchers = [[NSMutableDictionary alloc] init];
37 | }
38 | return self;
39 | }
40 |
41 | #pragma mark - Defining Matchers
42 |
43 | + (void)defineMatcher:(NSString *)selectorString as:(KWMatchersBuildingBlock)block {
44 | [[self matchers] defineMatcher:selectorString as:block];
45 | }
46 |
47 | - (void)defineMatcher:(NSString *)selectorString as:(KWMatchersBuildingBlock)block {
48 | KWUserDefinedMatcherBuilder *builder = [KWUserDefinedMatcherBuilder builderForSelector:NSSelectorFromString(selectorString)];
49 | block(builder);
50 | userDefinedMatchers[builder.key] = builder;
51 | }
52 |
53 | - (void)addUserDefinedMatcherBuilder:(KWUserDefinedMatcherBuilder *)builder {
54 | userDefinedMatchers[builder.key] = builder;
55 | }
56 |
57 | #pragma mark - Building Matchers
58 |
59 | - (KWUserDefinedMatcher *)matcherForSelector:(SEL)selector subject:(id)subject {
60 | KWUserDefinedMatcherBuilder *builder = userDefinedMatchers[NSStringFromSelector(selector)];
61 |
62 | if (builder == nil)
63 | return nil;
64 |
65 | return [builder buildMatcherWithSubject:subject];
66 | }
67 |
68 |
69 | @end
70 |
71 | void KWDefineMatchers(NSString *selectorString, KWMatchersBuildingBlock block)
72 | {
73 | [KWMatchers defineMatcher:selectorString as:block];
74 | }
75 |
76 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/KWMatching.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 |
9 | @protocol KWMatching
10 |
11 | #pragma mark - Initializing
12 |
13 | - (id)initWithSubject:(id)anObject;
14 |
15 | #pragma mark - Getting Matcher Strings
16 |
17 | + (NSArray *)matcherStrings;
18 |
19 | #pragma mark - Getting Matcher Compatability
20 |
21 | + (BOOL)canMatchSubject:(id)anObject;
22 |
23 | #pragma mark - Matching
24 |
25 | @optional
26 |
27 | - (BOOL)isNilMatcher;
28 | - (BOOL)shouldBeEvaluatedAtEndOfExample;
29 | - (BOOL)willEvaluateMultipleTimes;
30 | - (void)setWillEvaluateMultipleTimes:(BOOL)shouldEvaluateMultipleTimes;
31 |
32 | @required
33 |
34 | - (BOOL)evaluate;
35 |
36 | #pragma mark - Getting Failure Messages
37 |
38 | - (NSString *)failureMessageForShould;
39 | - (NSString *)failureMessageForShouldNot;
40 |
41 | @end
42 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/KWMessageSpying.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 |
9 | @protocol KWMessageSpying
10 |
11 | #pragma mark - Spying on Messages
12 |
13 | - (void)object:(id)anObject didReceiveInvocation:(NSInvocation *)anInvocation;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/KWMessageTracker.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 | #import "KWCountType.h"
9 | #import "KWMessageSpying.h"
10 |
11 | @class KWMessagePattern;
12 |
13 | @interface KWMessageTracker : NSObject
14 |
15 | #pragma mark - Initializing
16 |
17 | - (id)initWithSubject:(id)anObject messagePattern:(KWMessagePattern *)aMessagePattern countType:(KWCountType)aCountType count:(NSUInteger)aCount;
18 |
19 | + (id)messageTrackerWithSubject:(id)anObject messagePattern:(KWMessagePattern *)aMessagePattern countType:(KWCountType)aCountType count:(NSUInteger)aCount;
20 |
21 | #pragma mark - Properties
22 |
23 | @property (nonatomic, readonly) id subject;
24 | @property (nonatomic, readonly) KWMessagePattern *messagePattern;
25 | @property (nonatomic, readonly) KWCountType countType;
26 | @property (nonatomic, readonly) NSUInteger count;
27 |
28 | #pragma mark - Stopping Tracking
29 |
30 | - (void)stopTracking;
31 |
32 | #pragma mark - Getting Message Tracker Status
33 |
34 | - (BOOL)succeeded;
35 |
36 | #pragma mark - Getting Phrases
37 |
38 | - (NSString *)expectedCountPhrase;
39 | - (NSString *)receivedCountPhrase;
40 |
41 | @end
42 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/KWNull.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 |
9 | // KWNull exists to represent the same thing as NSNull, except that Kiwi needs
10 | // to distinguish between null singletons used internally and those a user
11 | // is using as an object parameter.
12 | @interface KWNull : NSObject
13 |
14 | #pragma mark - Initializing
15 |
16 | + (id)null;
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/KWNull.m:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KWNull.h"
8 |
9 | @implementation KWNull
10 |
11 | #pragma mark - Initializing
12 |
13 |
14 | + (id)null {
15 | static KWNull *sharedNull = nil;
16 | static dispatch_once_t onceToken;
17 | dispatch_once(&onceToken, ^{
18 | sharedNull = [self new];
19 |
20 | });
21 |
22 | return sharedNull;
23 | }
24 |
25 | @end
26 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/KWObjCUtilities.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 |
9 | #pragma mark - Objective-C Type Utilities
10 |
11 | BOOL KWObjCTypeEqualToObjCType(const char *firstObjCType, const char *secondObjCType);
12 | BOOL KWObjCTypeIsNumeric(const char *objCType);
13 | BOOL KWObjCTypeIsFloatingPoint(const char *objCType);
14 | BOOL KWObjCTypeIsIntegral(const char *objCType);
15 | BOOL KWObjCTypeIsSignedIntegral(const char *objCType);
16 | BOOL KWObjCTypeIsUnsignedIntegral(const char *objCType);
17 | BOOL KWObjCTypeIsBool(const char *objCType);
18 | BOOL KWObjCTypeIsObject(const char *objCType);
19 | BOOL KWObjCTypeIsCharString(const char *objCType);
20 | BOOL KWObjCTypeIsClass(const char *objCType);
21 | BOOL KWObjCTypeIsSelector(const char *objCType);
22 | BOOL KWObjCTypeIsPointerToType(const char *objCType);
23 | BOOL KWObjCTypeIsPointerLike(const char *objCType);
24 | BOOL KWObjCTypeIsUnknown(const char *objCType);
25 | BOOL KWObjCTypeIsBlock(const char *objCType);
26 |
27 | NSUInteger KWObjCTypeLength(const char *objCType);
28 |
29 | #pragma mark - Selector Utlities
30 |
31 | NSUInteger KWSelectorParameterCount(SEL selector);
32 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/KWProbe.h:
--------------------------------------------------------------------------------
1 | //
2 | // KWProbe.h
3 | // iOSFalconCore
4 | //
5 | // Created by Luke Redpath on 13/01/2011.
6 | // Copyright 2011 LJR Software Limited. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @protocol KWProbe
12 | - (BOOL)isSatisfied;
13 | - (void)sample;
14 | @end
15 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/KWProbePoller.h:
--------------------------------------------------------------------------------
1 | //
2 | // KWProbePoller.h
3 | // iOSFalconCore
4 | //
5 | // Created by Luke Redpath on 13/01/2011.
6 | // Copyright 2011 LJR Software Limited. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "KWProbe.h"
11 |
12 | #define kKW_DEFAULT_PROBE_DELAY 0.1
13 |
14 | @interface KWProbePoller : NSObject
15 |
16 | - (id)initWithTimeout:(NSTimeInterval)theTimeout delay:(NSTimeInterval)theDelay shouldWait:(BOOL)wait;
17 | - (BOOL)check:(id)probe;
18 |
19 | @end
20 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/KWProbePoller.m:
--------------------------------------------------------------------------------
1 | //
2 | // KWProbePoller.m
3 | // iOSFalconCore
4 | //
5 | // Created by Luke Redpath on 13/01/2011.
6 | // Copyright 2011 LJR Software Limited. All rights reserved.
7 | //
8 |
9 | #import "KWProbePoller.h"
10 |
11 | @interface KWTimeout : NSObject
12 |
13 | @property (nonatomic) CFTimeInterval timeoutDateStamp;
14 |
15 | @end
16 |
17 | @implementation KWTimeout
18 |
19 | - (id)initWithTimeout:(NSTimeInterval)timeout
20 | {
21 | self = [super init];
22 | if (self) {
23 | _timeoutDateStamp = CFAbsoluteTimeGetCurrent() + timeout;
24 | }
25 | return self;
26 | }
27 |
28 |
29 | - (BOOL)hasTimedOut {
30 | return (_timeoutDateStamp - CFAbsoluteTimeGetCurrent()) < 0;
31 | }
32 |
33 | @end
34 |
35 |
36 | @interface KWProbePoller()
37 |
38 | @property (nonatomic, assign) NSTimeInterval timeoutInterval;
39 | @property (nonatomic, assign) NSTimeInterval delayInterval;
40 | @property (nonatomic, assign) BOOL shouldWait;
41 |
42 | @end
43 |
44 | @implementation KWProbePoller
45 |
46 | - (id)initWithTimeout:(NSTimeInterval)theTimeout
47 | delay:(NSTimeInterval)theDelay
48 | shouldWait:(BOOL)wait {
49 | self = [super init];
50 | if (self) {
51 | _timeoutInterval = theTimeout;
52 | _delayInterval = theDelay;
53 | _shouldWait = wait;
54 | }
55 | return self;
56 | }
57 |
58 | - (BOOL)check:(id)probe; {
59 | KWTimeout *timeout = [[KWTimeout alloc] initWithTimeout:self.timeoutInterval];
60 |
61 | while (self.shouldWait || ![probe isSatisfied]) {
62 | if ([timeout hasTimedOut]) {
63 | return [probe isSatisfied];
64 | }
65 | CFRunLoopRunInMode(kCFRunLoopDefaultMode, _delayInterval, false);
66 | [probe sample];
67 | }
68 |
69 | return YES;
70 | }
71 |
72 | @end
73 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/KWReporting.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 |
9 | @class KWFailure;
10 |
11 | @protocol KWReporting
12 |
13 | #pragma mark - Reporting Failures
14 |
15 | - (void)reportFailure:(KWFailure *)failure;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/KWSpec.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 | #import
9 | #import "KWExpectationType.h"
10 | #import "KWVerifying.h"
11 | #import "KWExampleDelegate.h"
12 |
13 |
14 | @class KWCallSite;
15 |
16 | #ifdef XCT_EXPORT
17 | @interface KWSpec : XCTestCase
18 | #else
19 | @interface KWSpec : SenTestCase
20 | #endif
21 |
22 | #pragma mark - Adding Verifiers
23 |
24 | + (id)addVerifier:(id)aVerifier;
25 | + (id)addExistVerifierWithExpectationType:(KWExpectationType)anExpectationType callSite:(KWCallSite *)aCallSite;
26 | + (id)addMatchVerifierWithExpectationType:(KWExpectationType)anExpectationType callSite:(KWCallSite *)aCallSite;
27 | + (id)addAsyncVerifierWithExpectationType:(KWExpectationType)anExpectationType callSite:(KWCallSite *)aCallSite timeout:(NSTimeInterval)timeout shouldWait:(BOOL)shouldWait;
28 |
29 | #pragma mark - Building Example Groups
30 |
31 | + (NSString *)file;
32 | + (void)buildExampleGroups;
33 |
34 | @end
35 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/KWStringUtilities.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 |
9 | #pragma mark - Checking for Case Separated Words
10 |
11 | BOOL KWStringHasWordPrefix(NSString *string, NSString *prefix);
12 | BOOL KWStringHasStrictWordPrefix(NSString *string, NSString *prefix);
13 | BOOL KWStringHasWord(NSString *string, NSString *word);
14 |
15 | #pragma mark - Getting Type Encodings
16 |
17 | NSString *KWEncodingWithObjCTypes(const char *firstType, ...) NS_REQUIRES_NIL_TERMINATION;
18 | NSString *KWEncodingForVoidMethod(void);
19 | NSString *KWEncodingForDefaultMethod(void);
20 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/KWSymbolicator.h:
--------------------------------------------------------------------------------
1 | //
2 | // KWSymbolicator.h
3 | // Kiwi
4 | //
5 | // Created by Jerry Marino on 4/28/13.
6 | // Copyright (c) 2013 Allen Ding. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | long kwCallerAddress(void);
12 |
13 | @interface NSString (KWShellCommand)
14 |
15 | + (NSString *)stringWithShellCommand:(NSString *)command arguments:(NSArray *)arguments;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/KWSymbolicator.m:
--------------------------------------------------------------------------------
1 | //
2 | // KWSymbolicator.m
3 | // Kiwi
4 | //
5 | // Created by Jerry Marino on 4/28/13.
6 | // Copyright (c) 2013 Allen Ding. All rights reserved.
7 | //
8 |
9 | #import "KWSymbolicator.h"
10 | #import
11 | #import
12 |
13 | long kwCallerAddress (void){
14 | #if !__arm__
15 | unw_cursor_t cursor; unw_context_t uc;
16 | unw_word_t ip;
17 |
18 | unw_getcontext(&uc);
19 | unw_init_local(&cursor, &uc);
20 |
21 | int pos = 2;
22 | while (unw_step(&cursor) && pos--){
23 | unw_get_reg (&cursor, UNW_REG_IP, &ip);
24 | if(pos == 0) return (NSUInteger)(ip - 4);
25 | }
26 | #endif
27 | return 0;
28 | }
29 |
30 | // Used to suppress compiler warnings by
31 | // casting receivers to this protocol
32 | @protocol NSTask_KWWarningSuppressor
33 |
34 | - (void)setLaunchPath:(NSString *)path;
35 | - (void)setArguments:(NSArray *)arguments;
36 | - (void)setEnvironment:(NSDictionary *)dict;
37 | - (void)setStandardOutput:(id)output;
38 | - (void)launch;
39 | - (void)waitUntilExit;
40 |
41 | @end
42 |
43 | @implementation NSString (KWShellCommand)
44 |
45 | + (NSString *)stringWithShellCommand:(NSString *)command arguments:(NSArray *)arguments {
46 | id task = [[NSClassFromString(@"NSTask") alloc] init];
47 | [task setEnvironment:[NSDictionary dictionary]];
48 | [task setLaunchPath:command];
49 | [task setArguments:arguments];
50 |
51 | NSPipe *pipe = [NSPipe pipe];
52 | [task setStandardOutput:pipe];
53 | [task launch];
54 |
55 | [task waitUntilExit];
56 |
57 | NSData *data = [[pipe fileHandleForReading] readDataToEndOfFile];
58 | NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
59 | return string;
60 | }
61 |
62 | @end
63 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/KWWorkarounds.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 |
9 | #if KW_TARGET_HAS_INVOCATION_EXCEPTION_BUG
10 |
11 | #pragma mark - Invocation Exception Bug Workaround
12 |
13 | // See KiwiConfiguration.h for notes.
14 | void KWSetExceptionFromAcrossInvocationBoundary(NSException *anException);
15 | NSException *KWGetAndClearExceptionFromAcrossInvocationBoundary(void);
16 |
17 | #endif // #if KW_TARGET_HAS_INVOCATION_EXCEPTION_BUG
18 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/KWWorkarounds.m:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KWWorkarounds.h"
8 |
9 | #if KW_TARGET_HAS_INVOCATION_EXCEPTION_BUG
10 |
11 | static NSException *KWExceptionAcrossInvokeBoundary = nil;
12 |
13 | void KWSetExceptionFromAcrossInvocationBoundary(NSException *anException) {
14 | if (KWExceptionAcrossInvokeBoundary != nil)
15 | return;
16 |
17 | KWExceptionAcrossInvokeBoundary = anException;
18 | }
19 |
20 | NSException *KWGetAndClearExceptionFromAcrossInvocationBoundary(void) {
21 | NSException *exception = KWExceptionAcrossInvokeBoundary;
22 | KWExceptionAcrossInvokeBoundary = nil;
23 | return exception;
24 | }
25 |
26 | #endif // #if KW_TARGET_HAS_INVOCATION_EXCEPTION_BUG
27 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/KiwiBlockMacros.h:
--------------------------------------------------------------------------------
1 | //
2 | // KiwiBlockMacros.h
3 | // Kiwi
4 | //
5 | // Created by Luke Redpath on 11/07/2011.
6 | // Copyright 2011 Allen Ding. All rights reserved.
7 | //
8 |
9 | // user defined matchers
10 | #define registerMatcher(name) \
11 | \
12 | @interface NSObject (KWUserDefinedMatchersDefinitions) \
13 | - (void)name; \
14 | @end \
15 |
16 | #define defineMatcher(...) KWDefineMatchers(__VA_ARGS__)
17 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/KiwiConfiguration.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | // As of iPhone SDK 4 GM, exceptions thrown across an NSInvocation -invoke or
8 | // forwardInvocation: boundary in the simulator will terminate the app instead
9 | // of being caught in @catch blocks from the caller side of the -invoke. Kiwi
10 | // tries to handle this by storing the first exception that it would have
11 | // otherwise thrown in a nasty global that callers can look for and handle.
12 | // (Buggy termination is less desirable than global variables).
13 | //
14 | // Obviously, this can only handles cases where Kiwi itself would have raised
15 | // an exception.
16 | #if TARGET_IPHONE_SIMULATOR
17 | #define KW_TARGET_HAS_INVOCATION_EXCEPTION_BUG 1
18 | #endif
19 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/NSInvocation+KiwiAdditions.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 |
9 | @interface NSInvocation(KiwiAdditions)
10 |
11 | #pragma mark - Creating NSInvocation Objects
12 |
13 | + (NSInvocation *)invocationWithTarget:(id)anObject selector:(SEL)aSelector;
14 | + (NSInvocation *)invocationWithTarget:(id)anObject selector:(SEL)aSelector messageArguments:(const void *)firstBytes, ...;
15 |
16 | #pragma mark - Accessing Message Arguments
17 |
18 | // Message arguments are invocation arguments that begin after the target and selector arguments. These methods provide
19 | // convenient ways to access them.
20 |
21 | - (NSData *)messageArgumentDataAtIndex:(NSUInteger)anIndex;
22 | - (void)getMessageArgument:(void *)buffer atIndex:(NSUInteger)anIndex;
23 | - (void)setMessageArgument:(const void *)bytes atIndex:(NSUInteger)anIndex;
24 | - (void)setMessageArguments:(const void *)firstBytes, ...;
25 |
26 | @end
27 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/NSInvocation+OCMAdditions.h:
--------------------------------------------------------------------------------
1 | //---------------------------------------------------------------------------------------
2 | // $Id$
3 | // Copyright (c) 2006-2009 by Mulle Kybernetik. See License file for details.
4 | //---------------------------------------------------------------------------------------
5 |
6 | #import
7 |
8 | @interface NSInvocation(OCMAdditions)
9 |
10 | - (id)getArgumentAtIndexAsObject:(int)argIndex;
11 |
12 | - (NSString *)invocationDescription;
13 |
14 | - (NSString *)argumentDescriptionAtIndex:(int)argIndex;
15 |
16 | - (NSString *)objectDescriptionAtIndex:(int)anInt;
17 | - (NSString *)charDescriptionAtIndex:(int)anInt;
18 | - (NSString *)unsignedCharDescriptionAtIndex:(int)anInt;
19 | - (NSString *)intDescriptionAtIndex:(int)anInt;
20 | - (NSString *)unsignedIntDescriptionAtIndex:(int)anInt;
21 | - (NSString *)shortDescriptionAtIndex:(int)anInt;
22 | - (NSString *)unsignedShortDescriptionAtIndex:(int)anInt;
23 | - (NSString *)longDescriptionAtIndex:(int)anInt;
24 | - (NSString *)unsignedLongDescriptionAtIndex:(int)anInt;
25 | - (NSString *)longLongDescriptionAtIndex:(int)anInt;
26 | - (NSString *)unsignedLongLongDescriptionAtIndex:(int)anInt;
27 | - (NSString *)doubleDescriptionAtIndex:(int)anInt;
28 | - (NSString *)floatDescriptionAtIndex:(int)anInt;
29 | - (NSString *)structDescriptionAtIndex:(int)anInt;
30 | - (NSString *)pointerDescriptionAtIndex:(int)anInt;
31 | - (NSString *)cStringDescriptionAtIndex:(int)anInt;
32 | - (NSString *)selectorDescriptionAtIndex:(int)anInt;
33 |
34 | @end
35 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/NSMethodSignature+KiwiAdditions.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 |
9 | @interface NSMethodSignature(KiwiAdditions)
10 |
11 | #pragma mark - Getting Information on Message Arguments
12 |
13 | - (NSUInteger)numberOfMessageArguments;
14 | - (const char *)messageArgumentTypeAtIndex:(NSUInteger)anIndex;
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/NSMethodSignature+KiwiAdditions.m:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "NSMethodSignature+KiwiAdditions.h"
8 |
9 | @implementation NSMethodSignature(KiwiAdditions)
10 |
11 | #pragma mark - Getting Information on Message Arguments
12 |
13 | - (NSUInteger)numberOfMessageArguments {
14 | return [self numberOfArguments] - 2;
15 | }
16 |
17 | - (const char *)messageArgumentTypeAtIndex:(NSUInteger)anIndex {
18 | return [self getArgumentTypeAtIndex:anIndex + 2];
19 | }
20 |
21 | @end
22 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/NSNumber+KiwiAdditions.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 |
9 | @interface NSNumber(KiwiAdditions)
10 |
11 | #pragma mark - Creating Numbers
12 |
13 | + (id)numberWithBytes:(const void *)bytes objCType:(const char *)anObjCType;
14 | + (id)numberWithBoolBytes:(const void *)bytes;
15 | + (id)numberWithCharBytes:(const void *)bytes;
16 | + (id)numberWithDoubleBytes:(const void *)bytes;
17 | + (id)numberWithFloatBytes:(const void *)bytes;
18 | + (id)numberWithIntBytes:(const void *)bytes;
19 | + (id)numberWithIntegerBytes:(const void *)bytes;
20 | + (id)numberWithLongBytes:(const void *)bytes;
21 | + (id)numberWithLongLongBytes:(const void *)bytes;
22 | + (id)numberWithShortBytes:(const void *)bytes;
23 | + (id)numberWithUnsignedCharBytes:(const void *)bytes;
24 | + (id)numberWithUnsignedIntBytes:(const void *)bytes;
25 | + (id)numberWithUnsignedIntegerBytes:(const void *)bytes;
26 | + (id)numberWithUnsignedLongBytes:(const void *)bytes;
27 | + (id)numberWithUnsignedLongLongBytes:(const void *)bytes;
28 | + (id)numberWithUnsignedShortBytes:(const void *)bytes;
29 |
30 | @end
31 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/NSObject+KiwiSpyAdditions.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 |
9 | @class KWCaptureSpy;
10 |
11 | @protocol KiwiSpyAdditions
12 |
13 | - (KWCaptureSpy *)captureArgument:(SEL)selector atIndex:(NSUInteger)index;
14 | + (KWCaptureSpy *)captureArgument:(SEL)selector atIndex:(NSUInteger)index;
15 |
16 | @end
17 |
18 | @interface NSObject (KiwiSpyAdditions)
19 |
20 | @end
21 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/NSObject+KiwiSpyAdditions.m:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "NSObject+KiwiSpyAdditions.h"
8 |
9 | #import "KWCaptureSpy.h"
10 | #import "KWMessagePattern.h"
11 | #import "NSObject+KiwiStubAdditions.h"
12 |
13 | @implementation NSObject (KiwiSpyAdditions)
14 |
15 | - (KWCaptureSpy *)captureArgument:(SEL)selector atIndex:(NSUInteger)index {
16 | KWCaptureSpy *spy = [[KWCaptureSpy alloc] initWithArgumentIndex:index];
17 | KWMessagePattern *pattern = [[KWMessagePattern alloc] initWithSelector:selector];
18 | [self addMessageSpy:spy forMessagePattern:pattern];
19 | return spy;
20 | }
21 |
22 | + (KWCaptureSpy *)captureArgument:(SEL)selector atIndex:(NSUInteger)index {
23 | KWCaptureSpy *spy = [[KWCaptureSpy alloc] initWithArgumentIndex:index];
24 | KWMessagePattern *pattern = [[KWMessagePattern alloc] initWithSelector:selector];
25 | [self addMessageSpy:spy forMessagePattern:pattern];
26 | return spy;
27 | }
28 |
29 | @end
30 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/NSObject+KiwiVerifierAdditions.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 |
9 | @protocol KWVerifying;
10 |
11 | @interface NSObject(KiwiVerifierAdditions)
12 |
13 | #pragma mark - Attaching to Verifiers
14 |
15 | - (id)attachToVerifier:(id)aVerifier;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/NSObject+KiwiVerifierAdditions.m:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "NSObject+KiwiVerifierAdditions.h"
8 | #import "KWVerifying.h"
9 |
10 | @implementation NSObject(KiwiVerifierAdditions)
11 |
12 | #pragma mark - Attaching to Verifiers
13 |
14 | - (id)attachToVerifier:(id)aVerifier {
15 | [aVerifier setSubject:self];
16 | return aVerifier;
17 | }
18 |
19 | @end
20 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/NSProxy+KiwiVerifierAdditions.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2013 Allen Ding. All rights reserved.
5 | //
6 | // Contributed by https://github.com/dwlnetnl
7 | //
8 |
9 | #import "KiwiConfiguration.h"
10 |
11 | @protocol KWVerifying;
12 |
13 | @interface NSProxy (KiwiVerifierAdditions)
14 |
15 | #pragma mark - Attaching to Verifiers
16 |
17 | - (id)attachToVerifier:(id)aVerifier;
18 | - (id)attachToVerifier:(id)firstVerifier verifier:(id)secondVerifier;
19 |
20 | @end
21 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/NSProxy+KiwiVerifierAdditions.m:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2013 Allen Ding. All rights reserved.
5 | //
6 | // Contributed by https://github.com/dwlnetnl
7 | //
8 |
9 | #import "NSProxy+KiwiVerifierAdditions.h"
10 | #import "KWVerifying.h"
11 |
12 | @implementation NSProxy (KiwiVerifierAdditions)
13 |
14 | #pragma mark - Attaching to Verifiers
15 |
16 | - (id)attachToVerifier:(id)aVerifier {
17 | [aVerifier setSubject:self];
18 | return aVerifier;
19 | }
20 |
21 | - (id)attachToVerifier:(id)firstVerifier verifier:(id)secondVerifier {
22 | [firstVerifier setSubject:self];
23 | [secondVerifier setSubject:self];
24 | return firstVerifier;
25 | }
26 |
27 | @end
28 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/NSValue+KiwiAdditions.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 |
9 | @interface NSValue(KiwiAdditions)
10 |
11 | #pragma mark - Accessing Data
12 |
13 | - (NSData *)dataValue;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Core/NSValue+KiwiAdditions.m:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "NSValue+KiwiAdditions.h"
8 | #import "KWObjCUtilities.h"
9 |
10 | @implementation NSValue(KiwiAdditions)
11 |
12 | #pragma mark - Accessing Data
13 |
14 | - (NSData *)dataValue {
15 | NSUInteger length = KWObjCTypeLength([self objCType]);
16 | void *buffer = malloc(length);
17 | [self getValue:buffer];
18 | NSData *data = [NSData dataWithBytes:buffer length:length];
19 | free(buffer);
20 | return data;
21 | }
22 |
23 | @end
24 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Matchers/KWBeBetweenMatcher.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 | #import "KWMatcher.h"
9 |
10 | @interface KWBeBetweenMatcher : KWMatcher
11 |
12 | #pragma mark - Configuring Matchers
13 |
14 | // TODO: 'and' below is a reserved word in C++
15 | - (void)beBetween:(id)aLowerEndpoint and:(id)anUpperEndpoint;
16 | - (void)beInTheIntervalFrom:(id)aLowerEndpoint to:(id)anUpperEndpoint;
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Matchers/KWBeEmptyMatcher.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 | #import "KWMatcher.h"
9 |
10 | @interface KWBeEmptyMatcher : KWMatcher
11 |
12 | #pragma mark - Configuring Matchers
13 |
14 | - (void)beEmpty;
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Matchers/KWBeEmptyMatcher.m:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KWBeEmptyMatcher.h"
8 | #import "KWFormatter.h"
9 |
10 | @interface KWBeEmptyMatcher()
11 |
12 | #pragma mark - Properties
13 |
14 | @property (nonatomic, readwrite) NSUInteger count;
15 |
16 | @end
17 |
18 | @implementation KWBeEmptyMatcher
19 |
20 | #pragma mark - Getting Matcher Strings
21 |
22 | + (NSArray *)matcherStrings {
23 | return @[@"beEmpty"];
24 | }
25 |
26 | #pragma mark - Matching
27 |
28 | - (BOOL)evaluate {
29 | if ([self.subject respondsToSelector:@selector(count)]) {
30 | self.count = [self.subject count];
31 | return self.count == 0;
32 | }
33 | else if ([self.subject respondsToSelector:@selector(length)]) {
34 | self.count = [self.subject length];
35 | return self.count == 0;
36 | }
37 |
38 | [NSException raise:@"KWMatcherException" format:@"subject does not respond to -count or -length"];
39 | return NO;
40 | }
41 |
42 | #pragma mark - Getting Failure Messages
43 |
44 | - (NSString *)countPhrase {
45 | if (self.count == 1)
46 | return @"1 item";
47 | else
48 | return [NSString stringWithFormat:@"%u items", (unsigned)self.count];
49 | }
50 |
51 | - (NSString *)failureMessageForShould {
52 | return [NSString stringWithFormat:@"expected subject to be empty, got %@", [self countPhrase]];
53 | }
54 |
55 | - (NSString *)failureMessageForShouldNot {
56 | return @"expected subject not to be empty";
57 | }
58 |
59 | - (NSString *)description {
60 | return @"be empty";
61 | }
62 |
63 | #pragma mark - Configuring Matchers
64 |
65 | - (void)beEmpty {
66 | }
67 |
68 | @end
69 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Matchers/KWBeIdenticalToMatcher.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 | #import "KWMatcher.h"
9 |
10 | @interface KWBeIdenticalToMatcher : KWMatcher
11 |
12 | #pragma mark - Configuring Matchers
13 |
14 | - (void)beIdenticalTo:(id)anObject;
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Matchers/KWBeIdenticalToMatcher.m:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KWBeIdenticalToMatcher.h"
8 | #import "KWFormatter.h"
9 |
10 | @interface KWBeIdenticalToMatcher()
11 |
12 | #pragma mark - Properties
13 |
14 | @property (nonatomic, readwrite, strong) id otherSubject;
15 |
16 | @end
17 |
18 | @implementation KWBeIdenticalToMatcher
19 |
20 | #pragma mark - Getting Matcher Strings
21 |
22 | + (NSArray *)matcherStrings {
23 | return @[@"beIdenticalTo:"];
24 | }
25 |
26 | #pragma mark - Matching
27 |
28 | - (BOOL)evaluate {
29 | return self.subject == self.otherSubject;
30 | }
31 |
32 | #pragma mark - Getting Failure Messages
33 |
34 | - (NSString *)failureMessageForShould {
35 | return [NSString stringWithFormat:@"expected subject to be identical to %@ (%p), got %@ (%p)",
36 | [KWFormatter formatObject:self.otherSubject],
37 | self.otherSubject,
38 | [KWFormatter formatObject:self.subject],
39 | self.subject];
40 | }
41 |
42 | - (NSString *)failureMessageForShouldNot {
43 | return [NSString stringWithFormat:@"expected subject not to be identical to %@ (%p)",
44 | [KWFormatter formatObject:self.otherSubject],
45 | self.otherSubject];
46 | }
47 |
48 | - (NSString *)description {
49 | return [NSString stringWithFormat:@"be identical to %@", self.otherSubject];
50 | }
51 |
52 | #pragma mark - Configuring Matchers
53 |
54 | - (void)beIdenticalTo:(id)anObject {
55 | self.otherSubject = anObject;
56 | }
57 |
58 | @end
59 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Matchers/KWBeKindOfClassMatcher.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 | #import "KWMatcher.h"
9 |
10 | @interface KWBeKindOfClassMatcher : KWMatcher
11 |
12 | #pragma mark - Configuring Matchers
13 |
14 | - (void)beKindOfClass:(Class)aClass;
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Matchers/KWBeKindOfClassMatcher.m:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KWBeKindOfClassMatcher.h"
8 | #import "KWFormatter.h"
9 |
10 | @interface KWBeKindOfClassMatcher()
11 |
12 | @property (nonatomic, assign) Class targetClass;
13 |
14 | @end
15 |
16 | @implementation KWBeKindOfClassMatcher
17 |
18 | #pragma mark - Getting Matcher Strings
19 |
20 | + (NSArray *)matcherStrings {
21 | return @[@"beKindOfClass:"];
22 | }
23 |
24 | #pragma mark - Matching
25 |
26 | - (BOOL)evaluate {
27 | return [self.subject isKindOfClass:self.targetClass];
28 | }
29 |
30 | #pragma mark - Getting Failure Messages
31 |
32 | - (NSString *)failureMessageForShould {
33 | return [NSString stringWithFormat:@"expected subject to be kind of %@, got %@",
34 | NSStringFromClass(self.targetClass),
35 | NSStringFromClass([self.subject class])];
36 | }
37 |
38 | - (NSString *)description {
39 | return [NSString stringWithFormat:@"be kind of %@", NSStringFromClass(self.targetClass)];
40 | }
41 |
42 | #pragma mark - Configuring Matchers
43 |
44 | - (void)beKindOfClass:(Class)aClass {
45 | self.targetClass = aClass;
46 | }
47 |
48 | @end
49 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Matchers/KWBeMemberOfClassMatcher.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 | #import "KWMatcher.h"
9 |
10 | @interface KWBeMemberOfClassMatcher : KWMatcher
11 |
12 | #pragma mark - Configuring Matchers
13 |
14 | - (void)beMemberOfClass:(Class)aClass;
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Matchers/KWBeMemberOfClassMatcher.m:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KWBeMemberOfClassMatcher.h"
8 | #import "KWFormatter.h"
9 |
10 | @interface KWBeMemberOfClassMatcher()
11 |
12 | @property (nonatomic, assign) Class targetClass;
13 |
14 | @end
15 |
16 | @implementation KWBeMemberOfClassMatcher
17 |
18 | #pragma mark - Getting Matcher Strings
19 |
20 | + (NSArray *)matcherStrings {
21 | return @[@"beMemberOfClass:"];
22 | }
23 |
24 | #pragma mark - Matching
25 |
26 | - (BOOL)evaluate {
27 | return [self.subject isMemberOfClass:self.targetClass];
28 | }
29 |
30 | #pragma mark - Getting Failure Messages
31 |
32 | - (NSString *)failureMessageForShould {
33 | return [NSString stringWithFormat:@"expected subject to be member of %@, got %@",
34 | NSStringFromClass(self.targetClass),
35 | NSStringFromClass([self.subject class])];
36 | }
37 |
38 | - (NSString *)description {
39 | return [NSString stringWithFormat:@"be member of %@",
40 | NSStringFromClass(self.targetClass)];
41 | }
42 |
43 | #pragma mark - Configuring Matchers
44 |
45 | - (void)beMemberOfClass:(Class)aClass {
46 | self.targetClass = aClass;
47 | }
48 |
49 | @end
50 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Matchers/KWBeSubclassOfClassMatcher.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 | #import "KWMatcher.h"
9 |
10 | @interface KWBeSubclassOfClassMatcher : KWMatcher
11 |
12 | #pragma mark - Configuring Matchers
13 |
14 | - (void)beSubclassOfClass:(Class)aClass;
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Matchers/KWBeSubclassOfClassMatcher.m:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KWBeSubclassOfClassMatcher.h"
8 | #import "KWFormatter.h"
9 |
10 | @interface KWBeSubclassOfClassMatcher()
11 |
12 | #pragma mark - Properties
13 |
14 | @property (nonatomic, assign) Class targetClass;
15 |
16 | @end
17 |
18 | @implementation KWBeSubclassOfClassMatcher
19 |
20 | #pragma mark - Getting Matcher Strings
21 |
22 | + (NSArray *)matcherStrings {
23 | return @[@"beSubclassOfClass:"];
24 | }
25 |
26 | #pragma mark - Matching
27 |
28 | - (BOOL)evaluate {
29 | return [self.subject isSubclassOfClass:self.targetClass];
30 | }
31 |
32 | #pragma mark - Getting Failure Messages
33 |
34 | - (NSString *)failureMessageForShould {
35 | return [NSString stringWithFormat:@"expected subject to be subclass of %@, got %@",
36 | NSStringFromClass(self.targetClass),
37 | NSStringFromClass([self.subject class])];
38 | }
39 |
40 | - (NSString *)description {
41 | return [NSString stringWithFormat:@"be subclass of %@",
42 | NSStringFromClass(self.targetClass)];
43 | }
44 |
45 | #pragma mark - Configuring Matchers
46 |
47 | - (void)beSubclassOfClass:(Class)aClass {
48 | self.targetClass = aClass;
49 | }
50 |
51 | @end
52 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Matchers/KWBeTrueMatcher.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 | #import "KWMatcher.h"
9 |
10 | @interface KWBeTrueMatcher : KWMatcher
11 |
12 | #pragma mark - Configuring Matchers
13 |
14 | - (void)beTrue;
15 | - (void)beFalse;
16 | - (void)beYes;
17 | - (void)beNo;
18 |
19 | @end
20 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Matchers/KWBeTrueMatcher.m:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KWBeTrueMatcher.h"
8 |
9 | @interface KWBeTrueMatcher()
10 |
11 | @property (nonatomic, readwrite) BOOL expectedValue;
12 |
13 | @end
14 |
15 | @implementation KWBeTrueMatcher
16 |
17 | #pragma mark - Getting Matcher Strings
18 |
19 | + (NSArray *)matcherStrings {
20 | return @[@"beTrue", @"beFalse", @"beYes", @"beNo"];
21 | }
22 |
23 | #pragma mark - Matching
24 |
25 | - (BOOL)evaluate {
26 | if (![self.subject respondsToSelector:@selector(boolValue)])
27 | [NSException raise:@"KWMatcherException" format:@"subject does not respond to -boolValue"];
28 |
29 | return [self.subject boolValue] == self.expectedValue;
30 | }
31 |
32 | #pragma mark - Getting Failure Messages
33 |
34 | - (NSString *)failureMessageForShould {
35 | return [NSString stringWithFormat:@"expected subject to be %@",
36 | self.expectedValue ? @"true" : @"false"];
37 | }
38 |
39 | - (NSString *)description {
40 | if (self.expectedValue == YES) {
41 | return @"be true";
42 | }
43 | return @"be false";
44 | }
45 |
46 | #pragma mark - Configuring Matchers
47 |
48 | - (void)beTrue {
49 | self.expectedValue = YES;
50 | }
51 |
52 | - (void)beFalse {
53 | self.expectedValue = NO;
54 | }
55 |
56 | - (void)beYes {
57 | self.expectedValue = YES;
58 | }
59 |
60 | - (void)beNo {
61 | self.expectedValue = NO;
62 | }
63 |
64 | @end
65 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Matchers/KWBeWithinMatcher.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 | #import "KWMatcher.h"
9 |
10 | @interface KWBeWithinMatcher : KWMatcher
11 |
12 | #pragma mark - Configuring Matchers
13 |
14 | - (void)beWithin:(id)aDistance of:(id)aValue;
15 | - (void)equal:(double)aValue withDelta:(double)aDelta;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Matchers/KWBeZeroMatcher.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 | #import "KWMatcher.h"
9 |
10 | @interface KWBeZeroMatcher : KWMatcher
11 |
12 | #pragma mark - Configuring Matchers
13 |
14 | - (void)beZero;
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Matchers/KWBeZeroMatcher.m:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KWBeZeroMatcher.h"
8 | #import "KWFormatter.h"
9 | #import "KWValue.h"
10 |
11 | @implementation KWBeZeroMatcher
12 |
13 | #pragma mark - Getting Matcher Strings
14 |
15 | + (NSArray *)matcherStrings {
16 | return @[@"beZero"];
17 | }
18 |
19 | #pragma mark - Matching
20 |
21 | - (BOOL)evaluate {
22 | if ([self.subject isKindOfClass:[NSNumber class]]) {
23 | return [self.subject isEqualToNumber:@0];
24 | }
25 |
26 | if ([self.subject respondsToSelector:@selector(numberValue)]) {
27 | return [[self.subject numberValue] isEqualToNumber:@0];
28 | }
29 |
30 | return NO;
31 | }
32 |
33 | #pragma mark - Getting Failure Messages
34 |
35 | - (NSString *)failureMessageForShould {
36 | return [NSString stringWithFormat:@"expected subject to be zero, got %@",
37 | [KWFormatter formatObject:self.subject]];
38 | }
39 |
40 | - (NSString *)failureMessageForShouldNot {
41 | return [NSString stringWithFormat:@"expected subject not to be zero"];
42 | }
43 |
44 | - (NSString *)description {
45 | return @"be zero";
46 | }
47 |
48 | #pragma mark - Configuring Matchers
49 |
50 | - (void)beZero {
51 | }
52 |
53 | @end
54 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Matchers/KWBlockRaiseMatcher.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 | #import "KWMatcher.h"
9 |
10 | @interface KWBlockRaiseMatcher : KWMatcher
11 |
12 | #pragma mark - Configuring Matchers
13 |
14 | - (void)raise;
15 | - (void)raiseWithName:(NSString *)aName;
16 | - (void)raiseWithReason:(NSString *)aReason;
17 | - (void)raiseWithName:(NSString *)aName reason:(NSString *)aReason;
18 |
19 | @end
20 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Matchers/KWChangeMatcher.h:
--------------------------------------------------------------------------------
1 | //
2 | // KWChangeMatcher.h
3 | // Kiwi
4 | //
5 | // Copyright (c) 2013 Eloy Durán .
6 | // All rights reserved.
7 | //
8 |
9 | #import "KWMatcher.h"
10 |
11 | typedef NSInteger (^KWChangeMatcherCountBlock)();
12 |
13 | @interface KWChangeMatcher : KWMatcher
14 |
15 | // Expect _any_ change.
16 | - (void)change:(KWChangeMatcherCountBlock)countBlock;
17 |
18 | // Expect changes by a specific amount.
19 | - (void)change:(KWChangeMatcherCountBlock)countBlock by:(NSInteger)expectedDifference;
20 |
21 | @end
22 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Matchers/KWConformToProtocolMatcher.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 | #import "KWMatcher.h"
9 |
10 | @interface KWConformToProtocolMatcher : KWMatcher
11 |
12 | #pragma mark - Configuring Matchers
13 |
14 | - (void)conformToProtocol:(Protocol *)aProtocol;
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Matchers/KWConformToProtocolMatcher.m:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KWConformToProtocolMatcher.h"
8 | #import "KWFormatter.h"
9 |
10 | @interface KWConformToProtocolMatcher()
11 |
12 | @property (nonatomic, assign) Protocol *protocol;
13 |
14 | @end
15 |
16 | @implementation KWConformToProtocolMatcher
17 |
18 | #pragma mark - Getting Matcher Strings
19 |
20 | + (NSArray *)matcherStrings {
21 | return @[@"conformToProtocol:"];
22 | }
23 |
24 | #pragma mark - Matching
25 |
26 | - (BOOL)evaluate {
27 | return [self.subject conformsToProtocol:self.protocol];
28 | }
29 |
30 | #pragma mark - Getting Failure Messages
31 |
32 | - (NSString *)failureMessageForShould {
33 | return [NSString stringWithFormat:@"expected subject to conform to %@ protocol",
34 | NSStringFromProtocol(self.protocol)];
35 | }
36 |
37 | - (NSString *)description {
38 | return [NSString stringWithFormat:@"conform to %@ protocol", NSStringFromProtocol(self.protocol)];
39 | }
40 |
41 | #pragma mark - Configuring Matchers
42 |
43 | - (void)conformToProtocol:(Protocol *)aProtocol {
44 | self.protocol = aProtocol;
45 | }
46 |
47 | @end
48 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Matchers/KWContainMatcher.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 | #import "KWMatcher.h"
9 | #import "KWMatchVerifier.h"
10 |
11 | @interface KWContainMatcher : KWMatcher
12 |
13 | #pragma mark - Configuring Matchers
14 |
15 | - (void)contain:(id)anObject;
16 | - (void)containObjectsInArray:(NSArray *)anArray;
17 |
18 | @end
19 |
20 | @interface KWMatchVerifier(KWContainMatcherAdditions)
21 |
22 | #pragma mark - Verifying
23 |
24 | - (void)containObjects:(id)firstObject, ... NS_REQUIRES_NIL_TERMINATION;
25 |
26 | @end
27 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Matchers/KWContainStringMatcher.h:
--------------------------------------------------------------------------------
1 | //
2 | // KWContainStringMatcher.h
3 | // Kiwi
4 | //
5 | // Created by Kristopher Johnson on 4/28/13.
6 | // Copyright (c) 2013 Allen Ding. All rights reserved.
7 | //
8 |
9 | #import "KiwiConfiguration.h"
10 | #import "KWMatcher.h"
11 |
12 | // Kiwi matcher for determining whether a string contains an expected substring
13 | //
14 | // Examples:
15 | //
16 | // [[@"Hello, world!" should] containString:@"world"];
17 | // [[@"Hello, world!" shouldNot] containString:@"xyzzy"];
18 | //
19 | // [[@"Hello, world!" should] containString:@"WORLD"
20 | // options:NSCaseInsensitiveSearch];
21 | //
22 | // [[@"Hello, world!" should] startWithString:@"Hello,"];
23 | // [[@"Hello, world!" should] endWithString:@"world!"];
24 |
25 | @interface KWContainStringMatcher : KWMatcher
26 |
27 | // Match if subject contains specified substring
28 | - (void)containString:(NSString *)string;
29 |
30 | // Match if subject contains specified substring, using specified comparison options
31 | - (void)containString:(NSString *)string options:(NSStringCompareOptions)options;
32 |
33 | // Match if subject starts with the specified prefix
34 | - (void)startWithString:(NSString *)prefix;
35 |
36 | // Match if subject ends with the specified prefix
37 | - (void)endWithString:(NSString *)suffix;
38 |
39 | @end
40 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Matchers/KWEqualMatcher.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 | #import "KWMatcher.h"
9 |
10 | @interface KWEqualMatcher : KWMatcher
11 |
12 | #pragma mark - Configuring Matchers
13 |
14 | - (void)equal:(id)anObject;
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Matchers/KWEqualMatcher.m:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KWEqualMatcher.h"
8 | #import "KWFormatter.h"
9 | #import "KWValue.h"
10 |
11 | @interface KWEqualMatcher()
12 |
13 | #pragma mark - Properties
14 |
15 | @property (nonatomic, readwrite, strong) id otherSubject;
16 |
17 | @end
18 |
19 | @implementation KWEqualMatcher
20 |
21 | #pragma mark - Initializing
22 |
23 |
24 | #pragma mark - Properties
25 |
26 | @synthesize otherSubject;
27 |
28 | #pragma mark - Getting Matcher Strings
29 |
30 | + (NSArray *)matcherStrings {
31 | return @[@"equal:"];
32 | }
33 |
34 | #pragma mark - Matching
35 |
36 | - (BOOL)evaluate {
37 | /** handle this as a special case; KWValue supports NSNumber equality but not vice-versa **/
38 | if ([self.subject isKindOfClass:[NSNumber class]] && [self.otherSubject isKindOfClass:[KWValue class]]) {
39 | return [self.otherSubject isEqual:self.subject];
40 | }
41 | return [self.subject isEqual:self.otherSubject];
42 | }
43 |
44 | #pragma mark - Getting Failure Messages
45 |
46 | - (NSString *)failureMessageForShould {
47 | return [NSString stringWithFormat:@"expected subject to equal %@, got %@",
48 | [KWFormatter formatObjectIncludingClass:self.otherSubject],
49 | [KWFormatter formatObjectIncludingClass:self.subject]];
50 | }
51 |
52 | - (NSString *)failureMessageForShouldNot {
53 | return [NSString stringWithFormat:@"expected subject not to equal %@",
54 | [KWFormatter formatObjectIncludingClass:self.otherSubject]];
55 | }
56 |
57 | - (NSString *)description
58 | {
59 | return [NSString stringWithFormat:@"equal %@", [KWFormatter formatObjectIncludingClass:self.otherSubject]];
60 | }
61 |
62 | #pragma mark - Configuring Matchers
63 |
64 | - (void)equal:(id)anObject {
65 | self.otherSubject = anObject;
66 | }
67 |
68 | @end
69 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Matchers/KWGenericMatchEvaluator.h:
--------------------------------------------------------------------------------
1 | //
2 | // KWGenericMatcher.h
3 | // Kiwi
4 | //
5 | // Created by Allen Ding on 1/31/13.
6 | // Copyright (c) 2013 Allen Ding. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface KWGenericMatchEvaluator : NSObject
12 |
13 | + (BOOL)isGenericMatcher:(id)object;
14 |
15 | + (BOOL)genericMatcher:(id)matcher matches:(id)object;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Matchers/KWGenericMatchEvaluator.m:
--------------------------------------------------------------------------------
1 | //
2 | // KWGenericMatcher.m
3 | // Kiwi
4 | //
5 | // Created by Allen Ding on 1/31/13.
6 | // Copyright (c) 2013 Allen Ding. All rights reserved.
7 | //
8 |
9 | #import "KWGenericMatchEvaluator.h"
10 | #import "KWStringUtilities.h"
11 | #import "KWObjCUtilities.h"
12 | #import
13 | #import "KWGenericMatcher.h"
14 |
15 | @implementation KWGenericMatchEvaluator
16 |
17 | // Returns true only if the object has a method with the signature "- (BOOL)matches:(id)object"
18 | + (BOOL)isGenericMatcher:(id)object {
19 | Class theClass = object_getClass(object);
20 |
21 | if (theClass == NULL) {
22 | return NO;
23 | }
24 | Method method = class_getInstanceMethod(theClass, @selector(matches:));
25 |
26 | if (method == NULL) {
27 | return NO;
28 | }
29 |
30 | const char *cEncoding = method_getTypeEncoding(method);
31 |
32 | if (cEncoding == NULL) {
33 | return NO;
34 | }
35 |
36 | NSMethodSignature *signature = [NSMethodSignature signatureWithObjCTypes:cEncoding];
37 |
38 | if (!KWObjCTypeEqualToObjCType(@encode(BOOL), [signature methodReturnType])) {
39 | return NO;
40 | }
41 |
42 | if ([signature numberOfArguments] != 3) {
43 | return NO;
44 | }
45 |
46 | if (!KWObjCTypeEqualToObjCType(@encode(id), [signature getArgumentTypeAtIndex:2])) {
47 | return NO;
48 | }
49 |
50 | return YES;
51 | }
52 |
53 | + (BOOL)genericMatcher:(id)matcher matches:(id)object {
54 | NSString *targetEncoding = KWEncodingWithObjCTypes(@encode(BOOL), @encode(id), @encode(SEL), @encode(id), nil);
55 | NSMethodSignature *signature = [NSMethodSignature signatureWithObjCTypes:[targetEncoding UTF8String]];
56 | NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature];
57 | [invocation setSelector:@selector(matches:)];
58 | [invocation setArgument:&object atIndex:2];
59 | [invocation invokeWithTarget:matcher];
60 | BOOL result = NO;
61 | [invocation getReturnValue:&result];
62 | return result;
63 | }
64 |
65 | @end
66 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Matchers/KWGenericMatcher.h:
--------------------------------------------------------------------------------
1 | //
2 | // KWGenericMatcher.h
3 | // Kiwi
4 | //
5 | // Created by Luke Redpath on 24/01/2011.
6 | // Copyright 2011 Allen Ding. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "KWMatcher.h"
11 |
12 | @protocol KWGenericMatching
13 |
14 | - (BOOL)matches:(id)object;
15 |
16 | @end
17 |
18 | @interface KWGenericMatcher : KWMatcher
19 |
20 | #pragma mark - Configuring Matchers
21 |
22 | - (void)match:(id)aMatcher;
23 |
24 | @end
25 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Matchers/KWGenericMatcher.m:
--------------------------------------------------------------------------------
1 | //
2 | // KWGenericMatcher.m
3 | // Kiwi
4 | //
5 | // Created by Luke Redpath on 24/01/2011.
6 | // Copyright 2011 Allen Ding. All rights reserved.
7 | //
8 |
9 | #import "KWGenericMatcher.h"
10 | #import "KWGenericMatchEvaluator.h"
11 |
12 | @interface KWGenericMatcher ()
13 |
14 | @property (nonatomic, strong) id matcher;
15 |
16 | @end
17 |
18 | @implementation KWGenericMatcher
19 |
20 | #pragma mark - Matching
21 |
22 | - (BOOL)evaluate {
23 | return [KWGenericMatchEvaluator genericMatcher:self.matcher matches:self.subject];
24 | }
25 |
26 | - (NSString *)failureMessageForShould {
27 | return [NSString stringWithFormat:@"expected subject to match %@", self.matcher];
28 | }
29 |
30 | - (NSString *)description
31 | {
32 | return [NSString stringWithFormat:@"match %@", [self.matcher description]];
33 | }
34 |
35 | #pragma mark - Getting Matcher Strings
36 |
37 | + (NSArray *)matcherStrings {
38 | return @[@"match:"];
39 | }
40 |
41 | #pragma mark - Configuring Matchers
42 |
43 | - (void)match:(id)aMatcher;
44 | {
45 | self.matcher = aMatcher;
46 | }
47 |
48 | @end
49 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Matchers/KWGenericMatchingAdditions.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSObject+KiwiAdditions.h
3 | // Kiwi
4 | //
5 | // Created by Luke Redpath on 24/01/2011.
6 | // Copyright 2011 Allen Ding. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface NSObject (KiwiGenericMatchingAdditions)
12 |
13 | - (BOOL)isEqualOrMatches:(id)object DEPRECATED_ATTRIBUTE;
14 |
15 | @end
16 |
17 | @interface NSArray (KiwiGenericMatchingAdditions)
18 |
19 | - (BOOL)containsObjectEqualToOrMatching:(id)object DEPRECATED_ATTRIBUTE;
20 | - (BOOL)containsObjectMatching:(id)matcher DEPRECATED_ATTRIBUTE;
21 |
22 | @end
23 |
24 | @interface NSSet (KiwiGenericMatchingAdditions)
25 |
26 | - (BOOL)containsObjectEqualToOrMatching:(id)object DEPRECATED_ATTRIBUTE;
27 |
28 | @end
29 |
30 | @interface NSOrderedSet (KiwiGenericMatchingAdditions)
31 |
32 | - (BOOL)containsObjectEqualToOrMatching:(id)object DEPRECATED_ATTRIBUTE;
33 |
34 | @end
35 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Matchers/KWGenericMatchingAdditions.m:
--------------------------------------------------------------------------------
1 | //
2 | // NSObject+KiwiAdditions.m
3 | // Kiwi
4 | //
5 | // Created by Luke Redpath on 24/01/2011.
6 | // Copyright 2011 Allen Ding. All rights reserved.
7 | //
8 |
9 | #import "KWGenericMatchingAdditions.h"
10 | #import "KWGenericMatcher.h"
11 | #import "KWGenericMatchEvaluator.h"
12 |
13 | @implementation NSObject (KiwiGenericMatchingAdditions)
14 |
15 | - (BOOL)isEqualOrMatches:(id)object {
16 | if ([KWGenericMatchEvaluator isGenericMatcher:self]) {
17 | return [KWGenericMatchEvaluator genericMatcher:self matches:object];
18 | }
19 | return [self isEqual:object];
20 | }
21 |
22 | @end
23 |
24 | @implementation NSArray (KiwiGenericMatchingAdditions)
25 |
26 | - (BOOL)containsObjectEqualToOrMatching:(id)object {
27 | if ([KWGenericMatchEvaluator isGenericMatcher:object]) {
28 | return [self containsObjectMatching:object];
29 | }
30 | return [self containsObject:object];
31 | }
32 |
33 | - (BOOL)containsObjectMatching:(id)matcher {
34 | NSIndexSet *indexSet = [self indexesOfObjectsPassingTest:^(id obj, NSUInteger idx, BOOL *stop) {
35 | BOOL matches = [KWGenericMatchEvaluator genericMatcher:matcher matches:obj];
36 | if (matches) {
37 | *stop = YES;
38 | }
39 | return matches;
40 | }];
41 |
42 | return (indexSet.count > 0);
43 | }
44 |
45 | @end
46 |
47 | @implementation NSSet (KiwiGenericMatchingAdditions)
48 |
49 | - (BOOL)containsObjectEqualToOrMatching:(id)object {
50 | if ([KWGenericMatchEvaluator isGenericMatcher:object]) {
51 | return [[self allObjects] containsObjectMatching:object];
52 | }
53 | return [self containsObject:object];
54 | }
55 |
56 | @end
57 |
58 | @implementation NSOrderedSet (KiwiGenericMatchingAdditions)
59 |
60 | - (BOOL)containsObjectEqualToOrMatching:(id)object {
61 | if ([KWGenericMatchEvaluator isGenericMatcher:object]) {
62 | return [[self array] containsObjectMatching:object];
63 | }
64 | return [self containsObject:object];
65 | }
66 |
67 | @end
68 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Matchers/KWHaveMatcher.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 | #import "KWCountType.h"
9 | #import "KWMatcher.h"
10 | #import "KWMatchVerifier.h"
11 |
12 | @interface KWHaveMatcher : KWMatcher
13 |
14 | #pragma mark - Configuring Matchers
15 |
16 | - (void)haveCountOf:(NSUInteger)aCount;
17 | - (void)haveCountOfAtLeast:(NSUInteger)aCount;
18 | - (void)haveCountOfAtMost:(NSUInteger)aCount;
19 | - (void)haveLengthOf:(NSUInteger)aCount;
20 | - (void)haveLengthOfAtLeast:(NSUInteger)aCount;
21 | - (void)haveLengthOfAtMost:(NSUInteger)aCount;
22 | - (void)have:(NSUInteger)aCount itemsForInvocation:(NSInvocation *)anInvocation;
23 | - (void)haveAtLeast:(NSUInteger)aCount itemsForInvocation:(NSInvocation *)anInvocation;
24 | - (void)haveAtMost:(NSUInteger)aCount itemsForInvocation:(NSInvocation *)anInvocation;
25 |
26 | @end
27 |
28 | @protocol KWContainmentCountMatcherTerminals
29 |
30 | #pragma mark - Terminals
31 |
32 | - (id)objects;
33 | - (id)items;
34 | - (id)elements;
35 |
36 | @end
37 |
38 | #pragma mark - Verifying
39 |
40 | @interface KWMatchVerifier(KWHaveMatcherAdditions)
41 |
42 | #pragma mark - Invocation Capturing Methods
43 |
44 | - (id)have:(NSUInteger)aCount;
45 | - (id)haveAtLeast:(NSUInteger)aCount;
46 | - (id)haveAtMost:(NSUInteger)aCount;
47 |
48 | @end
49 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Matchers/KWHaveValueMatcher.h:
--------------------------------------------------------------------------------
1 | //
2 | // KWHaveValueMatcher.h
3 | // Kiwi
4 | //
5 | // Created by Luke Redpath on 24/01/2011.
6 | // Copyright 2011 Allen Ding. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "KWMatcher.h"
11 |
12 | @interface KWHaveValueMatcher : KWMatcher
13 |
14 | #pragma mark - Configuring Matchers
15 |
16 | - (void)haveValue:(id)value forKey:(NSString *)key;
17 | - (void)haveValue:(id)value forKeyPath:(NSString *)keyPath;
18 | - (void)haveValueForKey:(NSString *)key;
19 | - (void)haveValueForKeyPath:(NSString *)keyPath;
20 |
21 | @end
22 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Matchers/KWInequalityMatcher.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 | #import "KWMatcher.h"
9 |
10 | @interface KWInequalityMatcher : KWMatcher
11 |
12 | #pragma mark - Configuring Matchers
13 |
14 | - (void)beLessThan:(id)aValue;
15 | - (void)beLessThanOrEqualTo:(id)aValue;
16 | - (void)beGreaterThan:(id)aValue;
17 | - (void)beGreaterThanOrEqualTo:(id)aValue;
18 |
19 | @end
20 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Matchers/KWNilMatcher.h:
--------------------------------------------------------------------------------
1 | //
2 | // KWBeNilMatcher.h
3 | // iOSFalconCore
4 | //
5 | // Created by Luke Redpath on 14/01/2011.
6 | // Copyright 2011 LJR Software Limited. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "KWMatcher.h"
11 |
12 | @interface KWNilMatcher : KWMatcher
13 |
14 | - (void)beNil;
15 | - (void)beNonNil;
16 |
17 | - (void)beNil:(BOOL)workaroundArgument;
18 | - (void)beNonNil:(BOOL)workaroundArgument;
19 |
20 | + (BOOL)verifyNilSubject;
21 | + (BOOL)verifyNonNilSubject;
22 |
23 | @end
24 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Matchers/KWNotificationMatcher.h:
--------------------------------------------------------------------------------
1 | //
2 | // KWNotificationMatcher.h
3 | //
4 | // Created by Paul Zabelin on 7/12/12.
5 | // Copyright (c) 2012 Blazing Cloud, Inc. All rights reserved.
6 | //
7 |
8 | #import "KWMatcher.h"
9 |
10 | typedef void (^PostedNotificationBlock)(NSNotification* note);
11 |
12 | @interface KWNotificationMatcher : KWMatcher
13 |
14 | - (void)bePosted;
15 | - (void)bePostedWithObject:(id)object;
16 | - (void)bePostedWithUserInfo:(NSDictionary *)userInfo;
17 | - (void)bePostedWithObject:(id)object andUserInfo:(NSDictionary *)userInfo;
18 | - (void)bePostedEvaluatingBlock:(PostedNotificationBlock)block;
19 |
20 | @end
21 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Matchers/KWRaiseMatcher.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 | #import "KWMatcher.h"
9 |
10 | @interface KWRaiseMatcher : KWMatcher
11 |
12 | #pragma mark - Configuring Matchers
13 |
14 | - (void)raiseWhenSent:(SEL)aSelector DEPRECATED_ATTRIBUTE;
15 | - (void)raiseWithName:(NSString *)aName whenSent:(SEL)aSelector DEPRECATED_ATTRIBUTE;
16 | - (void)raiseWithReason:(NSString *)aReason whenSent:(SEL)aSelector DEPRECATED_ATTRIBUTE;
17 | - (void)raiseWithName:(NSString *)aName reason:(NSString *)aReason whenSent:(SEL)aSelector DEPRECATED_ATTRIBUTE;
18 |
19 | @end
20 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Matchers/KWRegularExpressionPatternMatcher.h:
--------------------------------------------------------------------------------
1 | //
2 | // KWRegularExpressionPatternMatcher.h
3 | // Kiwi
4 | //
5 | // Created by Kristopher Johnson on 4/11/13.
6 | // Copyright (c) 2013 Allen Ding. All rights reserved.
7 | //
8 |
9 | #import "KiwiConfiguration.h"
10 | #import "KWMatcher.h"
11 |
12 | @interface KWRegularExpressionPatternMatcher : KWMatcher
13 |
14 | - (void)matchPattern:(NSString *)pattern;
15 |
16 | - (void)matchPattern:(NSString *)pattern options:(NSRegularExpressionOptions)options;
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Matchers/KWRespondToSelectorMatcher.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 | #import "KWMatcher.h"
9 |
10 | @interface KWRespondToSelectorMatcher : KWMatcher
11 |
12 | #pragma mark - Configuring Matchers
13 |
14 | - (void)respondToSelector:(SEL)aSelector;
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Matchers/KWRespondToSelectorMatcher.m:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KWRespondToSelectorMatcher.h"
8 | #import "KWFormatter.h"
9 |
10 | @interface KWRespondToSelectorMatcher()
11 |
12 | #pragma mark - Properties
13 |
14 | @property (nonatomic, assign) SEL selector;
15 |
16 | @end
17 |
18 | @implementation KWRespondToSelectorMatcher
19 |
20 | #pragma mark - Getting Matcher Strings
21 |
22 | + (NSArray *)matcherStrings {
23 | return @[@"respondToSelector:"];
24 | }
25 |
26 | #pragma mark - Matching
27 |
28 | - (BOOL)evaluate {
29 | return [self.subject respondsToSelector:self.selector];
30 | }
31 |
32 | #pragma mark - Getting Failure Messages
33 |
34 | - (NSString *)failureMessageForShould {
35 | return [NSString stringWithFormat:@"expected subject to respond to -%@",
36 | NSStringFromSelector(self.selector)];
37 | }
38 |
39 | - (NSString *)description {
40 | return [NSString stringWithFormat:@"respond to -%@", NSStringFromSelector(self.selector)];
41 | }
42 |
43 | #pragma mark - Configuring Matchers
44 |
45 | - (void)respondToSelector:(SEL)aSelector {
46 | self.selector = aSelector;
47 | }
48 |
49 | @end
50 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Matchers/KWStringContainsMatcher.h:
--------------------------------------------------------------------------------
1 | //
2 | // KWStringContainsMatcher.h
3 | // Kiwi
4 | //
5 | // Created by Stewart Gleadow on 7/06/12.
6 | // Copyright (c) 2012 Allen Ding. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "KWGenericMatcher.h"
11 |
12 | @interface KWStringContainsMatcher : NSObject
13 |
14 | + (id)matcherWithSubstring:(NSString *)aSubstring DEPRECATED_ATTRIBUTE;
15 | - (id)initWithSubstring:(NSString *)aSubstring DEPRECATED_ATTRIBUTE;
16 |
17 | @end
18 |
19 | #define hasSubstring(substring) [KWStringContainsMatcher matcherWithSubstring:substring]
20 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Matchers/KWStringContainsMatcher.m:
--------------------------------------------------------------------------------
1 | //
2 | // StringContainsMatcher.m
3 | // Kiwi
4 | //
5 | // Created by Stewart Gleadow on 7/06/12.
6 | // Copyright (c) 2012 Allen Ding. All rights reserved.
7 | //
8 |
9 | #import "KWStringContainsMatcher.h"
10 |
11 | @interface KWStringContainsMatcher(){}
12 | @property (nonatomic, copy) NSString *substring;
13 | @end
14 |
15 | @implementation KWStringContainsMatcher
16 |
17 | + (id)matcherWithSubstring:(NSString *)aSubstring {
18 | return [[self alloc] initWithSubstring:aSubstring];
19 | }
20 |
21 | - (id)initWithSubstring:(NSString *)aSubstring {
22 | self = [super init];
23 | if (self) {
24 | _substring = [aSubstring copy];
25 | }
26 | return self;
27 | }
28 |
29 |
30 | - (BOOL)matches:(id)item {
31 | if (![item respondsToSelector:@selector(rangeOfString:)]) {
32 | return NO;
33 | }
34 |
35 | return [item rangeOfString:self.substring].location != NSNotFound;
36 | }
37 |
38 | - (NSString *)description {
39 | return [NSString stringWithFormat:@"a string with substring '%@'", self.substring];
40 | }
41 |
42 | @end
43 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Matchers/KWStringPrefixMatcher.h:
--------------------------------------------------------------------------------
1 | //
2 | // StringPrefixMatcher.h
3 | // Kiwi
4 | //
5 | // Created by Luke Redpath on 17/01/2011.
6 | // Copyright 2011 Allen Ding. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface KWStringPrefixMatcher : NSObject
12 |
13 | + (id)matcherWithPrefix:(NSString *)aPrefix;
14 | - (id)initWithPrefix:(NSString *)aPrefix;
15 |
16 | @end
17 |
18 | #define hasPrefix(prefix) [KWStringPrefixMatcher matcherWithPrefix:prefix]
19 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Matchers/KWStringPrefixMatcher.m:
--------------------------------------------------------------------------------
1 | //
2 | // StringPrefixMatcher.m
3 | // Kiwi
4 | //
5 | // Created by Luke Redpath on 17/01/2011.
6 | // Copyright 2011 Allen Ding. All rights reserved.
7 | //
8 |
9 | #import "KWStringPrefixMatcher.h"
10 |
11 | @interface KWStringPrefixMatcher(){}
12 | @property (nonatomic, copy) NSString *prefix;
13 | @end
14 |
15 | @implementation KWStringPrefixMatcher
16 |
17 | + (id)matcherWithPrefix:(NSString *)aPrefix {
18 | return [[self alloc] initWithPrefix:aPrefix];
19 | }
20 |
21 | - (id)initWithPrefix:(NSString *)aPrefix {
22 | self = [super init];
23 | if (self) {
24 | _prefix = [aPrefix copy];
25 | }
26 | return self;
27 | }
28 |
29 |
30 | - (BOOL)matches:(id)item {
31 | if (![item respondsToSelector:@selector(hasPrefix:)])
32 | return NO;
33 |
34 | return [item hasPrefix:self.prefix];
35 | }
36 |
37 | - (NSString *)description {
38 | return [NSString stringWithFormat:@"a string with prefix '%@'", self.prefix];
39 | }
40 |
41 | @end
42 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Matchers/KWUserDefinedMatcher.h:
--------------------------------------------------------------------------------
1 | //
2 | // KWUserDefinedMatcher.h
3 | // Kiwi
4 | //
5 | // Created by Luke Redpath on 16/06/2011.
6 | // Copyright 2011 Allen Ding. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "KWMatcher.h"
11 |
12 | typedef BOOL (^KWUserDefinedMatcherBlock)();
13 |
14 | @interface KWUserDefinedMatcher : KWMatcher
15 |
16 | @property (nonatomic, assign) SEL selector;
17 | @property (nonatomic, copy) NSString *failureMessageForShould;
18 | @property (nonatomic, copy) NSString *failureMessageForShouldNot;
19 | @property (nonatomic, copy) KWUserDefinedMatcherBlock matcherBlock;
20 | @property (nonatomic, copy) NSString *description;
21 |
22 | + (id)matcherWithSubject:(id)aSubject block:(KWUserDefinedMatcherBlock)aBlock;
23 | - (id)initWithSubject:(id)aSubject block:(KWUserDefinedMatcherBlock)aBlock;
24 | @end
25 |
26 | #pragma mark -
27 |
28 | typedef NSString * (^KWUserDefinedMatcherMessageBlock)(id);
29 |
30 | @interface KWUserDefinedMatcherBuilder : NSObject
31 | {
32 | KWUserDefinedMatcher *matcher;
33 | KWUserDefinedMatcherMessageBlock failureMessageForShouldBlock;
34 | KWUserDefinedMatcherMessageBlock failureMessageForShouldNotBlock;
35 | NSString *description;
36 | }
37 | @property (nonatomic, copy, readonly) NSString *key;
38 |
39 | + (id)builder;
40 | + (id)builderForSelector:(SEL)aSelector;
41 | - (id)initWithSelector:(SEL)aSelector;
42 |
43 | #pragma mark - Configuring The Matcher
44 |
45 | - (void)match:(KWUserDefinedMatcherBlock)block;
46 | - (void)failureMessageForShould:(KWUserDefinedMatcherMessageBlock)block;
47 | - (void)failureMessageForShouldNot:(KWUserDefinedMatcherMessageBlock)block;
48 | - (void)description:(NSString *)description;
49 |
50 | #pragma mark - Buiding The Matcher
51 |
52 | - (KWUserDefinedMatcher *)buildMatcherWithSubject:(id)subject;
53 | @end
54 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Mocking/NSObject+KiwiMockAdditions.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 |
9 | @protocol KiwiMockAdditions
10 |
11 | #pragma mark - Creating Mocks
12 |
13 | + (id)mock;
14 | + (id)mockWithName:(NSString *)aName;
15 |
16 | + (id)nullMock;
17 | + (id)nullMockWithName:(NSString *)aName;
18 |
19 | @end
20 |
21 | @interface NSObject(KiwiMockAdditions)
22 |
23 | @end
24 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Mocking/NSObject+KiwiMockAdditions.m:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "NSObject+KiwiMockAdditions.h"
8 | #import "KWMock.h"
9 |
10 | @implementation NSObject(KiwiMockAdditions)
11 |
12 | #pragma mark - Creating Mocks
13 |
14 | + (id)mock {
15 | return [KWMock mockForClass:[self class]];
16 | }
17 |
18 | + (id)mockWithName:(NSString *)aName {
19 | return [KWMock mockWithName:aName forClass:[self class]];
20 | }
21 |
22 | + (id)nullMock {
23 | return [KWMock nullMockForClass:[self class]];
24 | }
25 |
26 | + (id)nullMockWithName:(NSString *)aName {
27 | return [KWMock nullMockWithName:aName forClass:[self class]];
28 | }
29 |
30 | @end
31 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Nodes/KWAfterAllNode.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 | #import "KWBlockNode.h"
9 | #import "KWExampleNode.h"
10 |
11 | @interface KWAfterAllNode : KWBlockNode
12 |
13 | #pragma mark - Initializing
14 |
15 | + (id)afterAllNodeWithCallSite:(KWCallSite *)aCallSite block:(void (^)(void))block;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Nodes/KWAfterAllNode.m:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KWAfterAllNode.h"
8 | #import "KWExampleNodeVisitor.h"
9 |
10 | @implementation KWAfterAllNode
11 |
12 | #pragma mark - Initializing
13 |
14 | + (id)afterAllNodeWithCallSite:(KWCallSite *)aCallSite block:(void (^)(void))block {
15 | return [[self alloc] initWithCallSite:aCallSite description:nil block:block];
16 | }
17 |
18 | #pragma mark - Accepting Visitors
19 |
20 | - (void)acceptExampleNodeVisitor:(id)aVisitor {
21 | [aVisitor visitAfterAllNode:self];
22 | }
23 |
24 | @end
25 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Nodes/KWAfterEachNode.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 | #import "KWBlockNode.h"
9 | #import "KWExampleNode.h"
10 |
11 | @interface KWAfterEachNode : KWBlockNode
12 |
13 | #pragma mark - Initializing
14 |
15 | + (id)afterEachNodeWithCallSite:(KWCallSite *)aCallSite block:(void (^)(void))block;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Nodes/KWAfterEachNode.m:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KWAfterEachNode.h"
8 | #import "KWExampleNodeVisitor.h"
9 |
10 | @implementation KWAfterEachNode
11 |
12 | #pragma mark - Initializing
13 |
14 | + (id)afterEachNodeWithCallSite:(KWCallSite *)aCallSite block:(void (^)(void))block {
15 | return [[self alloc] initWithCallSite:aCallSite description:nil block:block];
16 | }
17 |
18 | #pragma mark - Accepting Visitors
19 |
20 | - (void)acceptExampleNodeVisitor:(id)aVisitor {
21 | [aVisitor visitAfterEachNode:self];
22 | }
23 |
24 | @end
25 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Nodes/KWBeforeAllNode.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 | #import "KWBlockNode.h"
9 | #import "KWExampleNode.h"
10 |
11 | @interface KWBeforeAllNode : KWBlockNode
12 |
13 | #pragma mark - Initializing
14 |
15 | + (id)beforeAllNodeWithCallSite:(KWCallSite *)aCallSite block:(void (^)(void))block;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Nodes/KWBeforeAllNode.m:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KWBeforeAllNode.h"
8 | #import "KWExampleNodeVisitor.h"
9 |
10 | @implementation KWBeforeAllNode
11 |
12 | #pragma mark - Initializing
13 |
14 | + (id)beforeAllNodeWithCallSite:(KWCallSite *)aCallSite block:(void (^)(void))block {
15 | return [[self alloc] initWithCallSite:aCallSite description:nil block:block];
16 | }
17 |
18 | #pragma mark - Accepting Visitors
19 |
20 | - (void)acceptExampleNodeVisitor:(id)aVisitor {
21 | [aVisitor visitBeforeAllNode:self];
22 | }
23 |
24 | @end
25 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Nodes/KWBeforeEachNode.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 | #import "KWBlockNode.h"
9 | #import "KWExampleNode.h"
10 |
11 | @interface KWBeforeEachNode : KWBlockNode
12 |
13 | #pragma mark - Initializing
14 |
15 | + (id)beforeEachNodeWithCallSite:(KWCallSite *)aCallSite block:(void (^)(void))block;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Nodes/KWBeforeEachNode.m:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KWBeforeEachNode.h"
8 | #import "KWExampleNodeVisitor.h"
9 |
10 | @implementation KWBeforeEachNode
11 |
12 | #pragma mark - Initializing
13 |
14 | + (id)beforeEachNodeWithCallSite:(KWCallSite *)aCallSite block:(void (^)(void))block {
15 | return [[self alloc] initWithCallSite:aCallSite description:nil block:block];
16 | }
17 |
18 | #pragma mark - Accepting Visitors
19 |
20 | - (void)acceptExampleNodeVisitor:(id)aVisitor {
21 | [aVisitor visitBeforeEachNode:self];
22 | }
23 |
24 | @end
25 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Nodes/KWBlockNode.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 | #import "KWBlock.h"
9 |
10 | @class KWCallSite;
11 |
12 | @interface KWBlockNode : NSObject
13 |
14 | #pragma mark - Initializing
15 |
16 | - (id)initWithCallSite:(KWCallSite *)aCallSite description:(NSString *)aDescription block:(void (^)(void))block;
17 |
18 | #pragma mark - Getting Call Sites
19 |
20 | @property (nonatomic, strong, readonly) KWCallSite *callSite;
21 |
22 | #pragma mark - Getting Descriptions
23 |
24 | @property (nonatomic, copy) NSString *description;
25 |
26 | #pragma mark - Getting Blocks
27 |
28 | @property (nonatomic, copy, readonly) void (^block)(void);
29 |
30 | #pragma mark - Performing blocks
31 |
32 | - (void)performBlock;
33 |
34 | @end
35 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Nodes/KWBlockNode.m:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KWBlockNode.h"
8 |
9 | @implementation KWBlockNode
10 |
11 | #pragma mark - Initializing
12 |
13 | - (id)initWithCallSite:(KWCallSite *)aCallSite description:(NSString *)aDescription block:(void (^)(void))block {
14 | self = [super init];
15 | if (self) {
16 | _callSite = aCallSite;
17 | _description = aDescription;
18 | _block = [block copy];
19 | }
20 |
21 | return self;
22 | }
23 |
24 | - (void)performBlock {
25 | if (self.block != nil) { self.block(); }
26 | }
27 |
28 | @end
29 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Nodes/KWExampleNode.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 |
9 | @class KWContextNode;
10 | @protocol KWExampleNodeVisitor;
11 |
12 | @protocol KWExampleNode
13 |
14 | #pragma mark - Accepting Visitors
15 |
16 | - (void)acceptExampleNodeVisitor:(id)aVisitor;
17 |
18 | @optional
19 |
20 | - (NSArray *)contextStack;
21 |
22 | @end
23 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Nodes/KWItNode.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 | #import "KWBlockNode.h"
9 | #import "KWExampleNode.h"
10 |
11 | @class KWPendingNode;
12 | @class KWExample;
13 | @class KWContextNode;
14 |
15 | @interface KWItNode : KWBlockNode
16 |
17 | @property (nonatomic, strong) KWExample *example;
18 | @property (nonatomic, weak, readonly) KWContextNode *context;
19 |
20 | #pragma mark - Initializing
21 |
22 | + (id)itNodeWithCallSite:(KWCallSite *)aCallSite
23 | description:(NSString *)aDescription
24 | context:(KWContextNode *)context
25 | block:(void (^)(void))block;
26 |
27 | @end
28 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Nodes/KWItNode.m:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KWItNode.h"
8 | #import "KWExampleNodeVisitor.h"
9 | #import "KWExample.h"
10 | #import "KWVerifying.h"
11 | #import "KWContextNode.h"
12 |
13 | @interface KWItNode ()
14 |
15 | @property (nonatomic, weak) KWContextNode *context;
16 |
17 | @end
18 |
19 | @implementation KWItNode
20 |
21 | #pragma mark - Initializing
22 |
23 | + (id)itNodeWithCallSite:(KWCallSite *)aCallSite
24 | description:(NSString *)aDescription
25 | context:(KWContextNode *)context
26 | block:(void (^)(void))block {
27 | KWItNode *itNode = [[self alloc] initWithCallSite:aCallSite description:aDescription block:block];
28 | itNode.context = context;
29 | return itNode;
30 | }
31 |
32 | #pragma mark - Accepting Visitors
33 |
34 | - (void)acceptExampleNodeVisitor:(id)aVisitor {
35 | [aVisitor visitItNode:self];
36 | }
37 |
38 | #pragma mark - Runtime Description support
39 |
40 | - (NSString *)description {
41 | NSString *description = [super description];
42 | if (description == nil) {
43 | description = [self.example generateDescriptionForAnonymousItNode];
44 | }
45 | return description;
46 | }
47 |
48 | #pragma mark - Accessing the context stack
49 |
50 | - (NSArray *)contextStack {
51 | NSMutableArray *contextStack = [NSMutableArray array];
52 |
53 | KWContextNode *currentContext = _context;
54 |
55 | while (currentContext) {
56 | [contextStack addObject:currentContext];
57 | currentContext = currentContext.parentContext;
58 | }
59 | return contextStack;
60 | }
61 |
62 | @end
63 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Nodes/KWLetNode.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 | #import "KWExampleNode.h"
9 |
10 | @interface KWLetNode : NSObject
11 |
12 | - (instancetype)initWithSymbolName:(NSString *)aSymbolName objectRef:(id *)anObjectRef block:(id (^)(void))block;
13 | + (instancetype)letNodeWithSymbolName:(NSString *)aSymbolName objectRef:(id *)anObjectRef block:(id (^)(void))block;
14 |
15 | @property (nonatomic, copy) NSString *symbolName;
16 | @property (nonatomic, copy) id (^block)(void);
17 | @property (nonatomic, readonly) __autoreleasing id *objectRef;
18 |
19 | - (id)evaluate;
20 | - (void)evaluateTree;
21 |
22 | - (void)addLetNode:(KWLetNode *)aNode;
23 | - (void)unlink;
24 |
25 | // The parent/child relationship describes let nodes declared in nested
26 | // contexts -- evaluating a node returns the value of the deepest
27 | // evaluated child.
28 | @property (nonatomic, readonly, weak) KWLetNode *parent;
29 | @property (nonatomic, readonly, strong) KWLetNode *child;
30 |
31 | // The next/previous relationship describes the order in which nodes
32 | // of different symbols were declared.
33 | @property (nonatomic, readonly, strong) KWLetNode *next;
34 | @property (nonatomic, readonly, weak) KWLetNode *previous;
35 |
36 | @end
37 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Nodes/KWPendingNode.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 | #import "KWExampleNode.h"
9 |
10 | @class KWContextNode;
11 | @class KWCallSite;
12 |
13 | @interface KWPendingNode : NSObject
14 |
15 | @property (nonatomic, readonly, strong) KWContextNode *context;
16 |
17 | #pragma mark - Initializing
18 |
19 | - (id)initWithCallSite:(KWCallSite *)aCallSite context:(KWContextNode *)context description:(NSString *)aDescription;
20 |
21 | + (id)pendingNodeWithCallSite:(KWCallSite *)aCallSite context:(KWContextNode *)context description:(NSString *)aDescription;
22 |
23 | #pragma mark - Getting Call Sites
24 |
25 | @property (nonatomic, readonly) KWCallSite *callSite;
26 |
27 | #pragma mark - Getting Descriptions
28 |
29 | @property (nonatomic, readonly) NSString *description;
30 |
31 | @end
32 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Nodes/KWPendingNode.m:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KWPendingNode.h"
8 |
9 | #import "KWCallSite.h"
10 | #import "KWContextNode.h"
11 | #import "KWExampleNodeVisitor.h"
12 |
13 | @implementation KWPendingNode
14 |
15 | #pragma mark - Initializing
16 |
17 | - (id)initWithCallSite:(KWCallSite *)aCallSite context:(KWContextNode *)context description:(NSString *)aDescription {
18 | self = [super init];
19 | if (self) {
20 | _callSite = aCallSite;
21 | _description = [aDescription copy];
22 | _context = context;
23 | }
24 |
25 | return self;
26 | }
27 |
28 | + (id)pendingNodeWithCallSite:(KWCallSite *)aCallSite context:(KWContextNode *)context description:(NSString *)aDescription {
29 | return [[self alloc] initWithCallSite:aCallSite context:context description:aDescription];
30 | }
31 |
32 | #pragma mark - Accepting Visitors
33 |
34 | - (void)acceptExampleNodeVisitor:(id)aVisitor {
35 | [aVisitor visitPendingNode:self];
36 | }
37 |
38 | #pragma mark - Accessing the context stack
39 |
40 | - (NSArray *)contextStack
41 | {
42 | NSMutableArray *contextStack = [NSMutableArray array];
43 |
44 | KWContextNode *currentContext = _context;
45 |
46 | while (currentContext) {
47 | [contextStack addObject:currentContext];
48 | currentContext = currentContext.parentContext;
49 | }
50 | return contextStack;
51 | }
52 |
53 | @end
54 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Nodes/KWRegisterMatchersNode.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 | #import "KWExampleNode.h"
9 |
10 | @class KWCallSite;
11 |
12 | @interface KWRegisterMatchersNode : NSObject
13 |
14 | #pragma mark - Initializing
15 |
16 | - (id)initWithCallSite:(KWCallSite *)aCallSite namespacePrefix:(NSString *)aNamespacePrefix;
17 |
18 | + (id)registerMatchersNodeWithCallSite:(KWCallSite *)aCallSite namespacePrefix:(NSString *)aNamespacePrefix;
19 |
20 | #pragma mark - Getting Call Sites
21 |
22 | @property (nonatomic, readonly) KWCallSite *callSite;
23 |
24 | #pragma mark - Getting Namespace Prefixes
25 |
26 | @property (nonatomic, readonly) NSString *namespacePrefix;
27 |
28 | @end
29 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Nodes/KWRegisterMatchersNode.m:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KWRegisterMatchersNode.h"
8 |
9 | #import "KWCallSite.h"
10 | #import "KWExampleNodeVisitor.h"
11 |
12 | @implementation KWRegisterMatchersNode
13 |
14 | #pragma mark - Initializing
15 |
16 | - (id)initWithCallSite:(KWCallSite *)aCallSite namespacePrefix:(NSString *)aNamespacePrefix {
17 | self = [super init];
18 | if (self) {
19 | _callSite = aCallSite;
20 | _namespacePrefix = [aNamespacePrefix copy];
21 | }
22 |
23 | return self;
24 | }
25 |
26 | + (id)registerMatchersNodeWithCallSite:(KWCallSite *)aCallSite namespacePrefix:(NSString *)aNamespacePrefix {
27 | return [[self alloc] initWithCallSite:aCallSite namespacePrefix:aNamespacePrefix];
28 | }
29 |
30 | #pragma mark - Accepting Visitors
31 |
32 | - (void)acceptExampleNodeVisitor:(id)aVisitor {
33 | [aVisitor visitRegisterMatchersNode:self];
34 | }
35 |
36 | @end
37 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Stubbing/KWIntercept.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 | #import
9 |
10 | @class KWMessagePattern;
11 | @class KWStub;
12 |
13 | #pragma mark - Getting Forwarding Implementations
14 |
15 | IMP KWRegularForwardingImplementation(void);
16 | IMP KWStretForwardingImplementation(void);
17 | IMP KWForwardingImplementationForMethodEncoding(const char* encoding);
18 |
19 | #pragma mark - Getting Intercept Class Information
20 |
21 | BOOL KWObjectIsClass(id anObject);
22 | BOOL KWClassIsInterceptClass(Class aClass);
23 | NSString *KWInterceptClassNameForClass(Class aClass);
24 | Class KWInterceptClassForCanonicalClass(Class canonicalClass);
25 | Class KWRealClassForClass(Class aClass);
26 |
27 | #pragma mark - Enabling Intercepting
28 |
29 | Class KWSetupObjectInterceptSupport(id anObject);
30 | void KWSetupMethodInterceptSupport(Class interceptClass, SEL aSelector);
31 |
32 | #pragma mark - Managing Stubs & Spies
33 | void KWClearStubsAndSpies(void);
34 |
35 | #pragma mark - Managing Objects Stubs
36 |
37 | void KWAssociateObjectStub(id anObject, KWStub *aStub, BOOL overrideExisting);
38 | void KWClearObjectStubs(id anObject);
39 | void KWClearAllObjectStubs(void);
40 |
41 | #pragma mark - Managing Message Spies
42 |
43 | void KWAssociateMessageSpy(id anObject, id aSpy, KWMessagePattern *aMessagePattern);
44 | void KWClearObjectSpy(id anObject, id aSpy, KWMessagePattern *aMessagePattern);
45 | void KWClearAllMessageSpies(void);
46 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Stubbing/KWStub.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 |
9 | @class KWMessagePattern;
10 |
11 | @interface KWStub : NSObject
12 |
13 | #pragma mark - Initializing
14 |
15 | - (id)initWithMessagePattern:(KWMessagePattern *)aMessagePattern;
16 | - (id)initWithMessagePattern:(KWMessagePattern *)aMessagePattern value:(id)aValue;
17 | - (id)initWithMessagePattern:(KWMessagePattern *)aMessagePattern block:(id (^)(NSArray *params))aBlock;
18 | - (id)initWithMessagePattern:(KWMessagePattern *)aMessagePattern value:(id)aValue times:(id)times afterThatReturn:(id)aSecondValue;
19 |
20 | + (id)stubWithMessagePattern:(KWMessagePattern *)aMessagePattern;
21 | + (id)stubWithMessagePattern:(KWMessagePattern *)aMessagePattern value:(id)aValue;
22 | + (id)stubWithMessagePattern:(KWMessagePattern *)aMessagePattern block:(id (^)(NSArray *params))aBlock;
23 | + (id)stubWithMessagePattern:(KWMessagePattern *)aMessagePattern value:(id)aValue times:(id)times afterThatReturn:(id)aSecondValue;
24 |
25 | #pragma mark - Properties
26 |
27 | @property (nonatomic, readonly) KWMessagePattern *messagePattern;
28 | @property (nonatomic, readonly) id value;
29 | @property (nonatomic, readonly) id returnValueTimes;
30 | @property (nonatomic, readonly) int returnedValueTimes;
31 | @property (nonatomic, readonly) id secondValue;
32 |
33 | #pragma mark - Processing Invocations
34 |
35 | - (BOOL)processInvocation:(NSInvocation *)anInvocation;
36 |
37 | @end
38 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Verifiers/KWAsyncVerifier.h:
--------------------------------------------------------------------------------
1 | //
2 | // KWAsyncVerifier.h
3 | // iOSFalconCore
4 | //
5 | // Created by Luke Redpath on 13/01/2011.
6 | // Copyright 2011 LJR Software Limited. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "KWMatchVerifier.h"
11 | #import "KWProbe.h"
12 |
13 | #define kKW_DEFAULT_PROBE_TIMEOUT 1.0
14 |
15 | @class KWAsyncMatcherProbe;
16 |
17 |
18 | @interface KWAsyncVerifier : KWMatchVerifier
19 |
20 | @property (nonatomic, assign) NSTimeInterval timeout;
21 | @property (nonatomic, assign) BOOL shouldWait;
22 |
23 | + (id)asyncVerifierWithExpectationType:(KWExpectationType)anExpectationType callSite:(KWCallSite *)aCallSite matcherFactory:(KWMatcherFactory *)aMatcherFactory reporter:(id)aReporter probeTimeout:(NSTimeInterval)probeTimeout shouldWait:(BOOL)shouldWait;
24 | - (void)verifyWithProbe:(KWAsyncMatcherProbe *)aProbe;
25 |
26 | @end
27 |
28 |
29 | @interface KWAsyncMatcherProbe : NSObject
30 |
31 | @property (nonatomic, assign) BOOL matchResult;
32 | @property (nonatomic, readonly) id matcher;
33 |
34 | - (id)initWithMatcher:(id)aMatcher;
35 |
36 | @end
37 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Verifiers/KWExistVerifier.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 | #import "KWExpectationType.h"
9 | #import "KWVerifying.h"
10 |
11 | @class KWCallSite;
12 |
13 | @protocol KWReporting;
14 |
15 | @interface KWExistVerifier : NSObject
16 |
17 | #pragma mark - Initializing
18 |
19 | - (id)initWithExpectationType:(KWExpectationType)anExpectationType callSite:(KWCallSite *)aCallSite reporter:(id)aReporter;
20 |
21 | + (id)existVerifierWithExpectationType:(KWExpectationType)anExpectationType callSite:(KWCallSite *)aCallSite reporter:(id)aReporter;
22 |
23 | #pragma mark - Properties
24 |
25 | @property (nonatomic, strong) id subject;
26 |
27 | @end
28 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Verifiers/KWMatchVerifier.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 | #import "KWExpectationType.h"
9 | #import "KWVerifying.h"
10 |
11 | @class KWCallSite;
12 | @class KWMatcherFactory;
13 |
14 | @protocol KWMatching;
15 | @protocol KWReporting;
16 |
17 | @interface KWMatchVerifier : NSObject
18 |
19 | #pragma mark - Properties
20 |
21 | @property (nonatomic, readonly) KWExpectationType expectationType;
22 |
23 | @property (nonatomic, readonly) KWMatcherFactory *matcherFactory;
24 | @property (nonatomic, readonly) id reporter;
25 |
26 | @property (nonatomic, strong) id subject;
27 |
28 |
29 | #pragma mark - Initializing
30 |
31 | - (id)initForShouldWithCallSite:(KWCallSite *)aCallSite matcherFactory:(KWMatcherFactory *)aMatcherFactory reporter:(id)aReporter;
32 | - (id)initForShouldNotWithCallSite:(KWCallSite *)aCallSite matcherFactory:(KWMatcherFactory *)aMatcherFactory reporter:(id)aReporter;
33 | - (id)initWithExpectationType:(KWExpectationType)anExpectationType callSite:(KWCallSite *)aCallSite matcherFactory:(KWMatcherFactory *)aMatcherFactory reporter:(id)aReporter;
34 |
35 | + (id)matchVerifierWithExpectationType:(KWExpectationType)anExpectationType callSite:(KWCallSite *)aCallSite matcherFactory:(KWMatcherFactory *)aMatcherFactory reporter:(id)aReporter;
36 |
37 | - (void)verifyWithMatcher:(id)aMatcher;
38 |
39 | @end
40 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Classes/Verifiers/KWVerifying.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 |
9 | @class KWCallSite;
10 |
11 | @protocol KWVerifying
12 |
13 | @property (nonatomic, readonly) KWCallSite *callSite;
14 |
15 | - (NSString *)descriptionForAnonymousItNode;
16 |
17 | #pragma mark - Subjects
18 |
19 | @property (nonatomic, strong) id subject;
20 |
21 | #pragma mark - Ending Examples
22 |
23 | - (void)exampleWillEnd;
24 |
25 | @end
26 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/License.txt:
--------------------------------------------------------------------------------
1 | Copyright (c) 2010, Allen Ding
2 | All rights reserved.
3 |
4 | Redistribution and use in source and binary forms, with or without
5 | modification, are permitted provided that the following conditions are met:
6 |
7 | 1. Redistributions of source code must retain the above copyright notice, this
8 | list of conditions and the following disclaimer.
9 |
10 | 2. Redistributions in binary form must reproduce the above copyright notice,
11 | this list of conditions and the following disclaimer in the documentation
12 | and/or other materials provided with the distribution.
13 |
14 | 3. Neither the name of Allen Ding nor the names of any contributors may be
15 | used to endorse or promote products derived from this software without specific
16 | prior written permission.
17 |
18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
19 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
20 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
22 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
24 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
25 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
26 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/NonARC/KWMessagePattern.h:
--------------------------------------------------------------------------------
1 | //
2 | // Licensed under the terms in License.txt
3 | //
4 | // Copyright 2010 Allen Ding. All rights reserved.
5 | //
6 |
7 | #import "KiwiConfiguration.h"
8 |
9 | @interface KWMessagePattern : NSObject
10 |
11 | #pragma mark - Initializing
12 |
13 | - (id)initWithSelector:(SEL)aSelector;
14 | - (id)initWithSelector:(SEL)aSelector argumentFilters:(NSArray *)anArray;
15 | - (id)initWithSelector:(SEL)aSelector firstArgumentFilter:(id)firstArgumentFilter argumentList:(va_list)argumentList;
16 |
17 | + (id)messagePatternWithSelector:(SEL)aSelector;
18 | + (id)messagePatternWithSelector:(SEL)aSelector argumentFilters:(NSArray *)anArray;
19 | + (id)messagePatternWithSelector:(SEL)aSelector firstArgumentFilter:(id)firstArgumentFilter argumentList:(va_list)argumentList;
20 |
21 | + (id)messagePatternFromInvocation:(NSInvocation *)anInvocation;
22 |
23 | #pragma mark - Properties
24 |
25 | @property (nonatomic, readonly) SEL selector;
26 | @property (nonatomic, readonly) NSArray *argumentFilters;
27 |
28 | #pragma mark - Matching Invocations
29 |
30 | - (BOOL)matchesInvocation:(NSInvocation *)anInvocation;
31 |
32 | #pragma mark - Comparing Message Patterns
33 |
34 | - (BOOL)isEqualToMessagePattern:(KWMessagePattern *)aMessagePattern;
35 |
36 | #pragma mark - Retrieving String Representations
37 |
38 | - (NSString *)stringValue;
39 |
40 | @end
41 |
--------------------------------------------------------------------------------
/Example/Pods/Kiwi/Readme.md:
--------------------------------------------------------------------------------
1 | # Simple BDD for iOS #
2 | [](https://travis-ci.org/allending/Kiwi)
3 |
4 | Kiwi is a Behavior Driven Development library for iOS development.
5 | The goal is to provide a BDD library that is exquisitely simple to setup and use.
6 |
7 | # Why? #
8 | The idea behind Kiwi is to have tests that are more readable than what is possible with the bundled test framework.
9 |
10 | Tests (or rather specs) are written in Objective-C and run within the comfort of Xcode to provide a test environment that is as unobtrusive and seamless as possible in terms of running tests and error reporting.
11 |
12 | Specs look like this:
13 |
14 | ```objective-c
15 | describe(@"Team", ^{
16 | context(@"when newly created", ^{
17 | it(@"should have a name", ^{
18 | id team = [Team team];
19 | [[team.name should] equal:@"Black Hawks"];
20 | });
21 |
22 | it(@"should have 11 players", ^{
23 | id team = [Team team];
24 | [[[team should] have:11] players];
25 | });
26 | });
27 | });
28 | ```
29 |
30 | # Documentation #
31 | The [Kiwi Wiki](https://github.com/allending/Kiwi/wiki) is the official documentation source.
32 |
33 | # Getting it #
34 | The best way to get Kiwi is by using [CocoaPods](https://github.com/cocoapods/cocoapods).
35 | For all the installation details, check out the [Wiki](https://github.com/allending/kiwi/wiki)
36 |
37 | # Support #
38 | For all the questions / suggestions you have, that aren't bug reports please use our [Google Group](https://groups.google.com/forum/#!forum/kiwi-bdd)
39 |
--------------------------------------------------------------------------------
/Example/Pods/Local Podspecs/DSNestedAccordion.podspec:
--------------------------------------------------------------------------------
1 | Pod::Spec.new do |s|
2 | s.name = "DSNestedAccordion"
3 | s.version = "0.1.0"
4 | s.summary = "A nested accordion view for Cocoa Touch"
5 | s.description = <<-DESC
6 | To use the library
7 |
8 | * Inherit DSNestedAccordionHandler to your table view handler.
9 | * Provide implementation to the below listed methods
10 | * - (NSInteger)noOfRowsInRootLevel;
11 | * - (NSInteger)tableView:(UITableView *)view noOfChildRowsForCellAtPath:(DSCellPath *)path;
12 | * - (UITableViewCell *)tableView:(UITableView *)view cellForPath:(DSCellPath *)path;
13 | DESC
14 | s.homepage = "https://github.com/deepan/DSNestedAccordion"
15 | s.license = 'MIT'
16 | s.author = { "deepan" => "emaildeepan@yahoo.co.in" }
17 | s.source = { :git => "https://github.com/deepan/DSNestedAccordion.git", :tag => s.version.to_s }
18 | s.social_media_url = 'https://twitter.com/s_deepan'
19 |
20 | s.platform = :ios, '6.0'
21 | s.requires_arc = true
22 |
23 | s.source_files = 'Pod/Classes'
24 | end
25 |
--------------------------------------------------------------------------------
/Example/Pods/Manifest.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - DSNestedAccordion (0.1.0)
3 | - Kiwi/ARC (2.2.4)
4 | - Kiwi/NonARC (2.2.4)
5 | - Kiwi/XCTest (2.2.4):
6 | - Kiwi/ARC
7 | - Kiwi/NonARC
8 |
9 | DEPENDENCIES:
10 | - DSNestedAccordion (from `../`)
11 | - Kiwi/XCTest (~> 2.2.4)
12 |
13 | EXTERNAL SOURCES:
14 | DSNestedAccordion:
15 | :path: ../
16 |
17 | SPEC CHECKSUMS:
18 | DSNestedAccordion: f2f0feaf7b10f0c30abefe62101d355e4a31105f
19 | Kiwi: c73667f2b84cbf36f1a3830267c5a4ae8dcbd8ba
20 |
21 | COCOAPODS: 0.33.1
22 |
--------------------------------------------------------------------------------
/Example/Pods/Pods-DSNestedAccordion-DSNestedAccordion-Private.xcconfig:
--------------------------------------------------------------------------------
1 | #include "Pods-DSNestedAccordion-DSNestedAccordion.xcconfig"
2 | GCC_PREPROCESSOR_DEFINITIONS = COCOAPODS=1
3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/BuildHeaders" "${PODS_ROOT}/BuildHeaders/DSNestedAccordion" "${PODS_ROOT}/Headers" "${PODS_ROOT}/Headers/DSNestedAccordion" "${PODS_ROOT}/Headers/Kiwi"
4 | OTHER_LDFLAGS = -ObjC
5 | PODS_ROOT = ${SRCROOT}
--------------------------------------------------------------------------------
/Example/Pods/Pods-DSNestedAccordion-DSNestedAccordion-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Pods_DSNestedAccordion_DSNestedAccordion : NSObject
3 | @end
4 | @implementation PodsDummy_Pods_DSNestedAccordion_DSNestedAccordion
5 | @end
6 |
--------------------------------------------------------------------------------
/Example/Pods/Pods-DSNestedAccordion-DSNestedAccordion-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #endif
4 |
5 | #import "Pods-DSNestedAccordion-environment.h"
6 |
--------------------------------------------------------------------------------
/Example/Pods/Pods-DSNestedAccordion-DSNestedAccordion.xcconfig:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/deepan/DSNestedAccordion/6eec71d646bd4bc39ef90d420939cee07d331cf1/Example/Pods/Pods-DSNestedAccordion-DSNestedAccordion.xcconfig
--------------------------------------------------------------------------------
/Example/Pods/Pods-DSNestedAccordion-acknowledgements.markdown:
--------------------------------------------------------------------------------
1 | # Acknowledgements
2 | This application makes use of the following third party libraries:
3 |
4 | ## DSNestedAccordion
5 |
6 | Copyright (c) 2014 deepan
7 |
8 | Permission is hereby granted, free of charge, to any person obtaining a copy
9 | of this software and associated documentation files (the "Software"), to deal
10 | in the Software without restriction, including without limitation the rights
11 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12 | copies of the Software, and to permit persons to whom the Software is
13 | furnished to do so, subject to the following conditions:
14 |
15 | The above copyright notice and this permission notice shall be included in
16 | all copies or substantial portions of the Software.
17 |
18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24 | THE SOFTWARE.
25 |
26 | Generated by CocoaPods - http://cocoapods.org
27 |
--------------------------------------------------------------------------------
/Example/Pods/Pods-DSNestedAccordion-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Pods_DSNestedAccordion : NSObject
3 | @end
4 | @implementation PodsDummy_Pods_DSNestedAccordion
5 | @end
6 |
--------------------------------------------------------------------------------
/Example/Pods/Pods-DSNestedAccordion-environment.h:
--------------------------------------------------------------------------------
1 |
2 | // To check if a library is compiled with CocoaPods you
3 | // can use the `COCOAPODS` macro definition which is
4 | // defined in the xcconfigs so it is available in
5 | // headers also when they are imported in the client
6 | // project.
7 |
8 |
9 | // DSNestedAccordion
10 | #define COCOAPODS_POD_AVAILABLE_DSNestedAccordion
11 | #define COCOAPODS_VERSION_MAJOR_DSNestedAccordion 0
12 | #define COCOAPODS_VERSION_MINOR_DSNestedAccordion 1
13 | #define COCOAPODS_VERSION_PATCH_DSNestedAccordion 0
14 |
15 |
--------------------------------------------------------------------------------
/Example/Pods/Pods-DSNestedAccordion.xcconfig:
--------------------------------------------------------------------------------
1 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
2 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers" "${PODS_ROOT}/Headers/DSNestedAccordion" "${PODS_ROOT}/Headers/Kiwi"
3 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers" -isystem "${PODS_ROOT}/Headers/DSNestedAccordion" -isystem "${PODS_ROOT}/Headers/Kiwi"
4 | OTHER_LDFLAGS = -ObjC
5 | PODS_ROOT = ${SRCROOT}/Pods
--------------------------------------------------------------------------------
/Example/Pods/Pods-Tests-DSNestedAccordion-Private.xcconfig:
--------------------------------------------------------------------------------
1 | #include "Pods-Tests-DSNestedAccordion.xcconfig"
2 | GCC_PREPROCESSOR_DEFINITIONS = COCOAPODS=1
3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/BuildHeaders" "${PODS_ROOT}/BuildHeaders/DSNestedAccordion" "${PODS_ROOT}/Headers" "${PODS_ROOT}/Headers/DSNestedAccordion" "${PODS_ROOT}/Headers/Kiwi"
4 | OTHER_LDFLAGS = -ObjC
5 | PODS_ROOT = ${SRCROOT}
--------------------------------------------------------------------------------
/Example/Pods/Pods-Tests-DSNestedAccordion-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Pods_Tests_DSNestedAccordion : NSObject
3 | @end
4 | @implementation PodsDummy_Pods_Tests_DSNestedAccordion
5 | @end
6 |
--------------------------------------------------------------------------------
/Example/Pods/Pods-Tests-DSNestedAccordion-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #endif
4 |
5 | #import "Pods-Tests-environment.h"
6 |
--------------------------------------------------------------------------------
/Example/Pods/Pods-Tests-DSNestedAccordion.xcconfig:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/deepan/DSNestedAccordion/6eec71d646bd4bc39ef90d420939cee07d331cf1/Example/Pods/Pods-Tests-DSNestedAccordion.xcconfig
--------------------------------------------------------------------------------
/Example/Pods/Pods-Tests-Kiwi-Private.xcconfig:
--------------------------------------------------------------------------------
1 | #include "Pods-Tests-Kiwi.xcconfig"
2 | FRAMEWORK_SEARCH_PATHS = ${PODS_TESTS_KIWI_FRAMEWORK_SEARCH_PATHS}
3 | GCC_PREPROCESSOR_DEFINITIONS = COCOAPODS=1
4 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/BuildHeaders" "${PODS_ROOT}/BuildHeaders/Kiwi" "${PODS_ROOT}/Headers" "${PODS_ROOT}/Headers/DSNestedAccordion" "${PODS_ROOT}/Headers/Kiwi"
5 | OTHER_LDFLAGS = -ObjC ${PODS_TESTS_KIWI_OTHER_LDFLAGS}
6 | PODS_ROOT = ${SRCROOT}
--------------------------------------------------------------------------------
/Example/Pods/Pods-Tests-Kiwi-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Pods_Tests_Kiwi : NSObject
3 | @end
4 | @implementation PodsDummy_Pods_Tests_Kiwi
5 | @end
6 |
--------------------------------------------------------------------------------
/Example/Pods/Pods-Tests-Kiwi-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #endif
4 |
5 | #import "Pods-Tests-environment.h"
6 | #import
7 |
--------------------------------------------------------------------------------
/Example/Pods/Pods-Tests-Kiwi.xcconfig:
--------------------------------------------------------------------------------
1 | PODS_TESTS_KIWI_FRAMEWORK_SEARCH_PATHS = $(inherited) "$(SDKROOT)/Developer/Library/Frameworks" "$(DEVELOPER_LIBRARY_DIR)/Frameworks" $(inherited) "$(SDKROOT)/Developer/Library/Frameworks" "$(DEVELOPER_LIBRARY_DIR)/Frameworks" $(inherited) "$(SDKROOT)/Developer/Library/Frameworks" "$(DEVELOPER_LIBRARY_DIR)/Frameworks"
2 | PODS_TESTS_KIWI_OTHER_LDFLAGS = -framework XCTest
--------------------------------------------------------------------------------
/Example/Pods/Pods-Tests-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Pods_Tests : NSObject
3 | @end
4 | @implementation PodsDummy_Pods_Tests
5 | @end
6 |
--------------------------------------------------------------------------------
/Example/Pods/Pods-Tests-environment.h:
--------------------------------------------------------------------------------
1 |
2 | // To check if a library is compiled with CocoaPods you
3 | // can use the `COCOAPODS` macro definition which is
4 | // defined in the xcconfigs so it is available in
5 | // headers also when they are imported in the client
6 | // project.
7 |
8 |
9 | // DSNestedAccordion
10 | #define COCOAPODS_POD_AVAILABLE_DSNestedAccordion
11 | #define COCOAPODS_VERSION_MAJOR_DSNestedAccordion 0
12 | #define COCOAPODS_VERSION_MINOR_DSNestedAccordion 1
13 | #define COCOAPODS_VERSION_PATCH_DSNestedAccordion 0
14 |
15 | // Kiwi/ARC
16 | #define COCOAPODS_POD_AVAILABLE_Kiwi_ARC
17 | #define COCOAPODS_VERSION_MAJOR_Kiwi_ARC 2
18 | #define COCOAPODS_VERSION_MINOR_Kiwi_ARC 2
19 | #define COCOAPODS_VERSION_PATCH_Kiwi_ARC 4
20 |
21 | // Kiwi/NonARC
22 | #define COCOAPODS_POD_AVAILABLE_Kiwi_NonARC
23 | #define COCOAPODS_VERSION_MAJOR_Kiwi_NonARC 2
24 | #define COCOAPODS_VERSION_MINOR_Kiwi_NonARC 2
25 | #define COCOAPODS_VERSION_PATCH_Kiwi_NonARC 4
26 |
27 | // Kiwi/XCTest
28 | #define COCOAPODS_POD_AVAILABLE_Kiwi_XCTest
29 | #define COCOAPODS_VERSION_MAJOR_Kiwi_XCTest 2
30 | #define COCOAPODS_VERSION_MINOR_Kiwi_XCTest 2
31 | #define COCOAPODS_VERSION_PATCH_Kiwi_XCTest 4
32 |
33 |
--------------------------------------------------------------------------------
/Example/Pods/Pods-Tests.xcconfig:
--------------------------------------------------------------------------------
1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$(SDKROOT)/Developer/Library/Frameworks" "$(DEVELOPER_LIBRARY_DIR)/Frameworks" $(inherited) "$(SDKROOT)/Developer/Library/Frameworks" "$(DEVELOPER_LIBRARY_DIR)/Frameworks" $(inherited) "$(SDKROOT)/Developer/Library/Frameworks" "$(DEVELOPER_LIBRARY_DIR)/Frameworks"
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers" "${PODS_ROOT}/Headers/DSNestedAccordion" "${PODS_ROOT}/Headers/Kiwi"
4 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers" -isystem "${PODS_ROOT}/Headers/DSNestedAccordion" -isystem "${PODS_ROOT}/Headers/Kiwi"
5 | OTHER_LDFLAGS = -ObjC -framework XCTest
6 | PODS_ROOT = ${SRCROOT}/Pods
--------------------------------------------------------------------------------
/Example/Tests/DSCellLevelTest.m:
--------------------------------------------------------------------------------
1 | #import
2 | #import "DSCellLevel.h"
3 |
4 | SPEC_BEGIN(DSNestedAccordionSpec)
5 |
6 | describe(@"Nested accordion cell", ^{
7 | it(@"should return level information given the index of cell", ^{
8 |
9 | DSCellLevel *cellLevel1 = [[DSCellLevel alloc] initWithCellCount:6 openCellIndex:-1 childLevel:nil];
10 | [[[cellLevel1 pathToCellAtIndex:5].levelIndexes should] equal:[NSArray arrayWithObjects:@5, nil]];
11 |
12 |
13 | DSCellLevel *cellLevel3 = [[DSCellLevel alloc] initWithCellCount:2 openCellIndex:-1 childLevel:nil];
14 | DSCellLevel *cellLevel2 = [[DSCellLevel alloc] initWithCellCount:4 openCellIndex:2 childLevel:cellLevel3];
15 | cellLevel1 = [[DSCellLevel alloc] initWithCellCount:6 openCellIndex:1 childLevel:cellLevel2];
16 |
17 | [[[cellLevel1 pathToCellAtIndex: 7].levelIndexes should] equal:[NSArray arrayWithObjects:@1, @3, nil]];
18 |
19 | [[[cellLevel1 pathToCellAtIndex: 6].levelIndexes should] equal:[NSArray arrayWithObjects:@1, @2, @1, nil]];
20 |
21 | });
22 |
23 | it(@"should return number of cells the levels have", ^{
24 | DSCellLevel *cellLevel3 = [[DSCellLevel alloc] initWithCellCount:2 openCellIndex:-1 childLevel:nil];
25 | DSCellLevel *cellLevel2 = [[DSCellLevel alloc] initWithCellCount:4 openCellIndex:2 childLevel:cellLevel3];
26 | DSCellLevel *cellLevel1 = [[DSCellLevel alloc] initWithCellCount:6 openCellIndex:1 childLevel:cellLevel2];
27 |
28 | [[@([cellLevel1 nestedCellCount]) should] equal:@12];
29 | [[@([cellLevel2 nestedCellCount]) should] equal:@6];
30 | [[@([cellLevel3 nestedCellCount]) should] equal:@2];
31 |
32 | });
33 | });
34 |
35 | SPEC_END
--------------------------------------------------------------------------------
/Example/Tests/Tests-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundlePackageType
14 | BNDL
15 | CFBundleShortVersionString
16 | 1.0
17 | CFBundleSignature
18 | ????
19 | CFBundleVersion
20 | 1
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Example/Tests/Tests-Prefix.pch:
--------------------------------------------------------------------------------
1 | //
2 | // Prefix header
3 | //
4 | // The contents of this file are implicitly included at the beginning of every test case source file.
5 | //
6 |
7 | #ifdef __OBJC__
8 |
9 | #import
10 |
11 | #endif
12 |
--------------------------------------------------------------------------------
/Example/Tests/en.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | /* Localized versions of Info.plist keys */
2 |
3 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2014 deepan
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy
4 | of this software and associated documentation files (the "Software"), to deal
5 | in the Software without restriction, including without limitation the rights
6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 | copies of the Software, and to permit persons to whom the Software is
8 | furnished to do so, subject to the following conditions:
9 |
10 | The above copyright notice and this permission notice shall be included in
11 | all copies or substantial portions of the Software.
12 |
13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 | THE SOFTWARE.
20 |
--------------------------------------------------------------------------------
/Pod/Assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/deepan/DSNestedAccordion/6eec71d646bd4bc39ef90d420939cee07d331cf1/Pod/Assets/.gitkeep
--------------------------------------------------------------------------------
/Pod/Classes/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/deepan/DSNestedAccordion/6eec71d646bd4bc39ef90d420939cee07d331cf1/Pod/Classes/.gitkeep
--------------------------------------------------------------------------------
/Pod/Classes/DSCellLevel.h:
--------------------------------------------------------------------------------
1 | #import
2 |
3 | @class DSCellPath;
4 |
5 | @interface DSCellLevel : NSObject
6 |
7 | @property(nonatomic) NSInteger cellCount;
8 |
9 | @property(nonatomic, strong) DSCellLevel *childLevel;
10 |
11 | @property(nonatomic) NSInteger openCellIndex;
12 |
13 | - (id)initWithCellCount:(NSInteger)cellCount openCellIndex:(NSInteger)openCellIndex childLevel:(DSCellLevel *)childLevel;
14 |
15 | - (DSCellPath *)pathToCellAtIndex:(NSInteger)cellIndex;
16 |
17 | - (NSInteger)nestedCellCount;
18 |
19 | - (DSCellLevel *)getLeafLevel:(DSCellPath *)path;
20 |
21 | - (void)addChildLevelWithCellCount:(NSInteger)cellCount atIndex:(NSInteger)index;
22 |
23 | - (void)reset;
24 |
25 | - (bool)hasOpenCell;
26 |
27 | - (NSInteger)removeChildLevel;
28 |
29 | - (BOOL)hasOpenChildLevelAtIndex:(NSInteger)cellIndex;
30 |
31 | - (BOOL)hasOpenChildLevelButAtDifferentIndex:(NSInteger)cellIndex;
32 |
33 | - (NSInteger)flattenedIndexOfExpandedCellInLevel:(DSCellLevel *)level;
34 |
35 | - (NSInteger)flattenedIndexOfCellInLevel:(DSCellLevel *)level atIndex:(NSInteger)cellIndex;
36 |
37 | @end
--------------------------------------------------------------------------------
/Pod/Classes/DSCellPath.h:
--------------------------------------------------------------------------------
1 | #import
2 |
3 | @interface DSCellPath : NSObject
4 |
5 | @property(nonatomic, strong) NSMutableArray *levelIndexes;
6 |
7 | - (id)init;
8 |
9 | - (void)addToPath:(NSInteger)path;
10 |
11 | - (void)removeLastPath;
12 |
13 | - (void)addToLastPath:(NSInteger)noOfCells;
14 |
15 | @end
--------------------------------------------------------------------------------
/Pod/Classes/DSCellPath.m:
--------------------------------------------------------------------------------
1 | #import "DSCellPath.h"
2 |
3 | @implementation DSCellPath
4 |
5 | - (id)init{
6 | self = [super init];
7 | if(self){
8 | _levelIndexes = [[NSMutableArray alloc] init];
9 | }
10 | return self;
11 | }
12 |
13 | -(void) addToPath:(NSInteger) path{
14 | [_levelIndexes addObject:@(path)];
15 | }
16 |
17 | - (void)removeLastPath {
18 | [_levelIndexes removeLastObject];
19 | }
20 |
21 | - (void)addToLastPath:(NSInteger)noOfCells {
22 | _levelIndexes[_levelIndexes.count - 1] = @([_levelIndexes[_levelIndexes.count - 1] intValue] + noOfCells);
23 | }
24 |
25 | @end
--------------------------------------------------------------------------------
/Pod/Classes/DSCellPathTracker.h:
--------------------------------------------------------------------------------
1 | #import
2 |
3 | @class DSCellPath;
4 |
5 | @interface DSCellPathTracker : NSObject
6 |
7 | @property(nonatomic) NSInteger flattenedCellIndex;
8 |
9 | @property(nonatomic, strong) DSCellPath *cellPath;
10 |
11 | - (id)initWithFlattenedCellIndex:(NSInteger)flattenedCellIndex;
12 |
13 | - (void)visitedCellsInLeafLevel:(NSInteger)cellCount;
14 |
15 | - (BOOL)haveNotFoundPathYet;
16 |
17 | - (void)visitedCellsInNewLevel:(NSInteger)cellCount;
18 |
19 | - (void)removeLastPath;
20 |
21 | @end
22 |
--------------------------------------------------------------------------------
/Pod/Classes/DSCellPathTracker.m:
--------------------------------------------------------------------------------
1 | #import "DSCellPathTracker.h"
2 | #import "DSCellPath.h"
3 |
4 | @implementation DSCellPathTracker
5 |
6 | - (id)initWithFlattenedCellIndex:(NSInteger)flattenedCellIndex {
7 | self = [super init];
8 | if (self) {
9 | _flattenedCellIndex = flattenedCellIndex;
10 | _cellPath = [[DSCellPath alloc] init];
11 | }
12 | return self;
13 | }
14 |
15 | - (void)visitedCellsInLeafLevel:(NSInteger)cellCount {
16 | _flattenedCellIndex = _flattenedCellIndex - cellCount;
17 | [_cellPath addToLastPath:cellCount];
18 | }
19 |
20 | - (BOOL)haveNotFoundPathYet {
21 | return _flattenedCellIndex != -1;
22 | }
23 |
24 | - (void)visitedCellsInNewLevel:(NSInteger)cellCount {
25 | _flattenedCellIndex = _flattenedCellIndex - cellCount;
26 | [_cellPath addToPath:cellCount - 1];
27 | }
28 |
29 | - (void)removeLastPath {
30 | [_cellPath removeLastPath];
31 | }
32 |
33 | @end
--------------------------------------------------------------------------------
/Pod/Classes/DSNestedAccordionHandler.h:
--------------------------------------------------------------------------------
1 | #import
2 |
3 | @class DSCellPath;
4 |
5 | @interface DSNestedAccordionHandler : NSObject
6 |
7 | @property(nonatomic, weak) UITableView *tableView;
8 |
9 | - (void)reload;
10 |
11 | - (void)closeOpenCells;
12 |
13 | - (void)tableView:(UITableView *)tableView toggleAtIndexPath:(NSIndexPath *)indexPath;
14 |
15 | - (NSInteger)noOfRowsInRootLevel;
16 |
17 | - (NSInteger)tableView:(UITableView *)view noOfChildRowsForCellAtPath:(DSCellPath *)path;
18 |
19 | - (UITableViewCell *)tableView:(UITableView *)view cellForPath:(DSCellPath *)path;
20 |
21 | @end
22 |
--------------------------------------------------------------------------------
/Pod/Classes/NSException+DSException.h:
--------------------------------------------------------------------------------
1 | #import
2 |
3 | @interface NSException (DSException)
4 |
5 | + (NSException *)dsMethodNotOverridden:(NSString *)methodName;
6 |
7 | @end
--------------------------------------------------------------------------------
/Pod/Classes/NSException+DSException.m:
--------------------------------------------------------------------------------
1 | #import "NSException+DSException.h"
2 |
3 | @implementation NSException (DSException)
4 |
5 | + (NSException *)dsMethodNotOverridden:(NSString *)methodName {
6 | return [NSException exceptionWithName:NSInternalInconsistencyException
7 | reason:[NSString stringWithFormat:@"You must override %@ in a subclass", methodName]
8 | userInfo:nil];
9 | }
10 |
11 | @end
--------------------------------------------------------------------------------