- Update
This commit is contained in:
1 parent
d281d765ea
commit
5b074a5176
1261 files changed
+199158
-7303
No files matched your search
@@ -0,0 +1,5 @@
|
||||
.DS_Store
|
||||
xcuserdata
|
||||
*.xcworkspace
|
||||
.idea
|
||||
build
|
||||
Vendored
+244
@@ -0,0 +1,244 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 46;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
0351A22A152F65DA005B52FE /* OCMock.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0351A229152F65DA005B52FE /* OCMock.framework */; };
|
||||
035F7F1E14CDBBBC00D21121 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 035F7F1D14CDBBBC00D21121 /* Foundation.framework */; };
|
||||
035F7F2114CDBBBC00D21121 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 035F7F2014CDBBBC00D21121 /* main.m */; };
|
||||
035F7F2514CDBBBC00D21121 /* ArcExample.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = 035F7F2414CDBBBC00D21121 /* ArcExample.1 */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
035F7F1714CDBBBC00D21121 /* CopyFiles */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = /usr/share/man/man1/;
|
||||
dstSubfolderSpec = 0;
|
||||
files = (
|
||||
035F7F2514CDBBBC00D21121 /* ArcExample.1 in CopyFiles */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 1;
|
||||
};
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
0351A229152F65DA005B52FE /* OCMock.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OCMock.framework; path = /Library/Frameworks/OCMock.framework; sourceTree = "<absolute>"; };
|
||||
035F7F1914CDBBBC00D21121 /* ArcExample */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = ArcExample; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
035F7F1D14CDBBBC00D21121 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
|
||||
035F7F2014CDBBBC00D21121 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
||||
035F7F2314CDBBBC00D21121 /* ArcExample-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "ArcExample-Prefix.pch"; sourceTree = "<group>"; };
|
||||
035F7F2414CDBBBC00D21121 /* ArcExample.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = ArcExample.1; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
035F7F1614CDBBBC00D21121 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
035F7F1E14CDBBBC00D21121 /* Foundation.framework in Frameworks */,
|
||||
0351A22A152F65DA005B52FE /* OCMock.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
035F7F0E14CDBBBC00D21121 = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
035F7F1F14CDBBBC00D21121 /* ArcExample */,
|
||||
035F7F1C14CDBBBC00D21121 /* Frameworks */,
|
||||
035F7F1A14CDBBBC00D21121 /* Products */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
035F7F1A14CDBBBC00D21121 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
035F7F1914CDBBBC00D21121 /* ArcExample */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
035F7F1C14CDBBBC00D21121 /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0351A229152F65DA005B52FE /* OCMock.framework */,
|
||||
035F7F1D14CDBBBC00D21121 /* Foundation.framework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
035F7F1F14CDBBBC00D21121 /* ArcExample */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
035F7F2014CDBBBC00D21121 /* main.m */,
|
||||
035F7F2414CDBBBC00D21121 /* ArcExample.1 */,
|
||||
035F7F2214CDBBBC00D21121 /* Supporting Files */,
|
||||
);
|
||||
path = ArcExample;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
035F7F2214CDBBBC00D21121 /* Supporting Files */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
035F7F2314CDBBBC00D21121 /* ArcExample-Prefix.pch */,
|
||||
);
|
||||
name = "Supporting Files";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
035F7F1814CDBBBC00D21121 /* ArcExample */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 035F7F2814CDBBBC00D21121 /* Build configuration list for PBXNativeTarget "ArcExample" */;
|
||||
buildPhases = (
|
||||
035F7F1514CDBBBC00D21121 /* Sources */,
|
||||
035F7F1614CDBBBC00D21121 /* Frameworks */,
|
||||
035F7F1714CDBBBC00D21121 /* CopyFiles */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = ArcExample;
|
||||
productName = ArcExample;
|
||||
productReference = 035F7F1914CDBBBC00D21121 /* ArcExample */;
|
||||
productType = "com.apple.product-type.tool";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
035F7F1014CDBBBC00D21121 /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 0430;
|
||||
ORGANIZATIONNAME = ThoughtWorks;
|
||||
};
|
||||
buildConfigurationList = 035F7F1314CDBBBC00D21121 /* Build configuration list for PBXProject "ArcExample" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
);
|
||||
mainGroup = 035F7F0E14CDBBBC00D21121;
|
||||
productRefGroup = 035F7F1A14CDBBBC00D21121 /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
035F7F1814CDBBBC00D21121 /* ArcExample */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
035F7F1514CDBBBC00D21121 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
035F7F2114CDBBBC00D21121 /* main.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
035F7F2614CDBBBC00D21121 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
ARCHS = "$(ARCHS_STANDARD_64_BIT)";
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_OBJCPP_ARC_ABI = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
||||
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.7;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = macosx10.7;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
035F7F2714CDBBBC00D21121 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
ARCHS = "$(ARCHS_STANDARD_64_BIT)";
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_OBJCPP_ARC_ABI = YES;
|
||||
COPY_PHASE_STRIP = YES;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
|
||||
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.7;
|
||||
SDKROOT = macosx10.7;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
035F7F2914CDBBBC00D21121 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "ArcExample/ArcExample-Prefix.pch";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
035F7F2A14CDBBBC00D21121 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "ArcExample/ArcExample-Prefix.pch";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
035F7F1314CDBBBC00D21121 /* Build configuration list for PBXProject "ArcExample" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
035F7F2614CDBBBC00D21121 /* Debug */,
|
||||
035F7F2714CDBBBC00D21121 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
035F7F2814CDBBBC00D21121 /* Build configuration list for PBXNativeTarget "ArcExample" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
035F7F2914CDBBBC00D21121 /* Debug */,
|
||||
035F7F2A14CDBBBC00D21121 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 035F7F1014CDBBBC00D21121 /* Project object */;
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
//
|
||||
// Prefix header for all source files of the 'ArcExample' target in the 'ArcExample' project
|
||||
//
|
||||
|
||||
#ifdef __OBJC__
|
||||
#import <Foundation/Foundation.h>
|
||||
#endif
|
||||
+79
@@ -0,0 +1,79 @@
|
||||
.\"Modified from man(1) of FreeBSD, the NetBSD mdoc.template, and mdoc.samples.
|
||||
.\"See Also:
|
||||
.\"man mdoc.samples for a complete listing of options
|
||||
.\"man mdoc for the short list of editing options
|
||||
.\"/usr/share/misc/mdoc.template
|
||||
.Dd 23/01/12 \" DATE
|
||||
.Dt ArcExample 1 \" Program name and manual section number
|
||||
.Os Darwin
|
||||
.Sh NAME \" Section Header - required - don't modify
|
||||
.Nm ArcExample,
|
||||
.\" The following lines are read in generating the apropos(man -k) database. Use only key
|
||||
.\" words here as the database is built based on the words here and in the .ND line.
|
||||
.Nm Other_name_for_same_program(),
|
||||
.Nm Yet another name for the same program.
|
||||
.\" Use .Nm macro to designate other names for the documented program.
|
||||
.Nd This line parsed for whatis database.
|
||||
.Sh SYNOPSIS \" Section Header - required - don't modify
|
||||
.Nm
|
||||
.Op Fl abcd \" [-abcd]
|
||||
.Op Fl a Ar path \" [-a path]
|
||||
.Op Ar file \" [file]
|
||||
.Op Ar \" [file ...]
|
||||
.Ar arg0 \" Underlined argument - use .Ar anywhere to underline
|
||||
arg2 ... \" Arguments
|
||||
.Sh DESCRIPTION \" Section Header - required - don't modify
|
||||
Use the .Nm macro to refer to your program throughout the man page like such:
|
||||
.Nm
|
||||
Underlining is accomplished with the .Ar macro like this:
|
||||
.Ar underlined text .
|
||||
.Pp \" Inserts a space
|
||||
A list of items with descriptions:
|
||||
.Bl -tag -width -indent \" Begins a tagged list
|
||||
.It item a \" Each item preceded by .It macro
|
||||
Description of item a
|
||||
.It item b
|
||||
Description of item b
|
||||
.El \" Ends the list
|
||||
.Pp
|
||||
A list of flags and their descriptions:
|
||||
.Bl -tag -width -indent \" Differs from above in tag removed
|
||||
.It Fl a \"-a flag as a list item
|
||||
Description of -a flag
|
||||
.It Fl b
|
||||
Description of -b flag
|
||||
.El \" Ends the list
|
||||
.Pp
|
||||
.\" .Sh ENVIRONMENT \" May not be needed
|
||||
.\" .Bl -tag -width "ENV_VAR_1" -indent \" ENV_VAR_1 is width of the string ENV_VAR_1
|
||||
.\" .It Ev ENV_VAR_1
|
||||
.\" Description of ENV_VAR_1
|
||||
.\" .It Ev ENV_VAR_2
|
||||
.\" Description of ENV_VAR_2
|
||||
.\" .El
|
||||
.Sh FILES \" File used or created by the topic of the man page
|
||||
.Bl -tag -width "/Users/joeuser/Library/really_long_file_name" -compact
|
||||
.It Pa /usr/share/file_name
|
||||
FILE_1 description
|
||||
.It Pa /Users/joeuser/Library/really_long_file_name
|
||||
FILE_2 description
|
||||
.El \" Ends the list
|
||||
.\" .Sh DIAGNOSTICS \" May not be needed
|
||||
.\" .Bl -diag
|
||||
.\" .It Diagnostic Tag
|
||||
.\" Diagnostic informtion here.
|
||||
.\" .It Diagnostic Tag
|
||||
.\" Diagnostic informtion here.
|
||||
.\" .El
|
||||
.Sh SEE ALSO
|
||||
.\" List links in ascending order by section, alphabetically within a section.
|
||||
.\" Please do not reference files that do not exist without filing a bug report
|
||||
.Xr a 1 ,
|
||||
.Xr b 1 ,
|
||||
.Xr c 1 ,
|
||||
.Xr a 2 ,
|
||||
.Xr b 2 ,
|
||||
.Xr a 3 ,
|
||||
.Xr b 3
|
||||
.\" .Sh BUGS \" Document known, unremedied bugs
|
||||
.\" .Sh HISTORY \" Document history if command behaves in a unique manner
|
||||
@@ -0,0 +1,34 @@
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <OCMock/OCMock.h>
|
||||
|
||||
@protocol SomeDelegateProtocol
|
||||
- (void)doStuff;
|
||||
@end
|
||||
|
||||
@interface SomeClass : NSObject
|
||||
@property (nonatomic, weak) id<SomeDelegateProtocol> delegate;
|
||||
@end
|
||||
|
||||
@implementation SomeClass
|
||||
|
||||
@synthesize delegate;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
int main (int argc, const char * argv[])
|
||||
{
|
||||
|
||||
@autoreleasepool {
|
||||
|
||||
SomeClass *someObject = [[SomeClass alloc] init];
|
||||
id delegate = [OCMockObject mockForProtocol:@protocol(SomeDelegateProtocol)];
|
||||
someObject.delegate = delegate;
|
||||
NSLog(@"delegate = %@", delegate);
|
||||
NSLog(@"someObject = %@", someObject.delegate);
|
||||
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
Vendored
+505
@@ -0,0 +1,505 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 46;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
0395293E15043C7A00D25639 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0395293D15043C7A00D25639 /* UIKit.framework */; };
|
||||
0395294015043C7A00D25639 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0395293F15043C7A00D25639 /* Foundation.framework */; };
|
||||
0395294215043C7A00D25639 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0395294115043C7A00D25639 /* CoreGraphics.framework */; };
|
||||
0395294815043C7A00D25639 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 0395294615043C7A00D25639 /* InfoPlist.strings */; };
|
||||
0395294A15043C7A00D25639 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 0395294915043C7A00D25639 /* main.m */; };
|
||||
0395294E15043C7A00D25639 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 0395294D15043C7A00D25639 /* AppDelegate.m */; };
|
||||
0395295115043C7A00D25639 /* MainStoryboard_iPhone.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 0395294F15043C7A00D25639 /* MainStoryboard_iPhone.storyboard */; };
|
||||
0395295415043C7A00D25639 /* MainStoryboard_iPad.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 0395295215043C7A00D25639 /* MainStoryboard_iPad.storyboard */; };
|
||||
0395295715043C7A00D25639 /* MasterViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 0395295615043C7A00D25639 /* MasterViewController.m */; };
|
||||
0395295A15043C7A00D25639 /* DetailViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 0395295915043C7A00D25639 /* DetailViewController.m */; };
|
||||
0395296215043C7A00D25639 /* SenTestingKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0395296115043C7A00D25639 /* SenTestingKit.framework */; };
|
||||
0395296315043C7A00D25639 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0395293D15043C7A00D25639 /* UIKit.framework */; };
|
||||
0395296415043C7A00D25639 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0395293F15043C7A00D25639 /* Foundation.framework */; };
|
||||
0395296C15043C7A00D25639 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 0395296A15043C7A00D25639 /* InfoPlist.strings */; };
|
||||
0395296F15043C7A00D25639 /* iOS5ExampleTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 0395296E15043C7A00D25639 /* iOS5ExampleTests.m */; };
|
||||
0395297915043CF000D25639 /* libOCMock.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0395297815043CF000D25639 /* libOCMock.a */; };
|
||||
03FA415E1614FCFD00F9324F /* ProtocolTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 03FA415D1614FCFD00F9324F /* ProtocolTests.m */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
0395296515043C7A00D25639 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 0395293015043C7A00D25639 /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 0395293815043C7A00D25639;
|
||||
remoteInfo = iOS5Example;
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
0395293915043C7A00D25639 /* iOS5Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iOS5Example.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
0395293D15043C7A00D25639 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
|
||||
0395293F15043C7A00D25639 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
|
||||
0395294115043C7A00D25639 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
|
||||
0395294515043C7A00D25639 /* iOS5Example-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "iOS5Example-Info.plist"; sourceTree = "<group>"; };
|
||||
0395294715043C7A00D25639 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
||||
0395294915043C7A00D25639 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
||||
0395294B15043C7A00D25639 /* iOS5Example-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "iOS5Example-Prefix.pch"; sourceTree = "<group>"; };
|
||||
0395294C15043C7A00D25639 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
|
||||
0395294D15043C7A00D25639 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
|
||||
0395295015043C7A00D25639 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = en; path = en.lproj/MainStoryboard_iPhone.storyboard; sourceTree = "<group>"; };
|
||||
0395295315043C7A00D25639 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = en; path = en.lproj/MainStoryboard_iPad.storyboard; sourceTree = "<group>"; };
|
||||
0395295515043C7A00D25639 /* MasterViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MasterViewController.h; sourceTree = "<group>"; };
|
||||
0395295615043C7A00D25639 /* MasterViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MasterViewController.m; sourceTree = "<group>"; };
|
||||
0395295815043C7A00D25639 /* DetailViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DetailViewController.h; sourceTree = "<group>"; };
|
||||
0395295915043C7A00D25639 /* DetailViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DetailViewController.m; sourceTree = "<group>"; };
|
||||
0395296015043C7A00D25639 /* iOS5ExampleTests.octest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = iOS5ExampleTests.octest; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
0395296115043C7A00D25639 /* SenTestingKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SenTestingKit.framework; path = Library/Frameworks/SenTestingKit.framework; sourceTree = DEVELOPER_DIR; };
|
||||
0395296915043C7A00D25639 /* iOS5ExampleTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "iOS5ExampleTests-Info.plist"; sourceTree = "<group>"; };
|
||||
0395296B15043C7A00D25639 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
||||
0395296D15043C7A00D25639 /* iOS5ExampleTests.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = iOS5ExampleTests.h; sourceTree = "<group>"; };
|
||||
0395296E15043C7A00D25639 /* iOS5ExampleTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = iOS5ExampleTests.m; sourceTree = "<group>"; };
|
||||
0395297815043CF000D25639 /* libOCMock.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libOCMock.a; path = usr/lib/libOCMock.a; sourceTree = "<group>"; };
|
||||
03FA415C1614FCFD00F9324F /* ProtocolTests.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ProtocolTests.h; sourceTree = "<group>"; };
|
||||
03FA415D1614FCFD00F9324F /* ProtocolTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ProtocolTests.m; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
0395293615043C7A00D25639 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
0395293E15043C7A00D25639 /* UIKit.framework in Frameworks */,
|
||||
0395294015043C7A00D25639 /* Foundation.framework in Frameworks */,
|
||||
0395294215043C7A00D25639 /* CoreGraphics.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
0395295C15043C7A00D25639 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
0395297915043CF000D25639 /* libOCMock.a in Frameworks */,
|
||||
0395296215043C7A00D25639 /* SenTestingKit.framework in Frameworks */,
|
||||
0395296315043C7A00D25639 /* UIKit.framework in Frameworks */,
|
||||
0395296415043C7A00D25639 /* Foundation.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
0395292E15043C7A00D25639 = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0395294315043C7A00D25639 /* iOS5Example */,
|
||||
0395296715043C7A00D25639 /* iOS5ExampleTests */,
|
||||
0395297A15043D8600D25639 /* Libraries */,
|
||||
0395293C15043C7A00D25639 /* Frameworks */,
|
||||
0395293A15043C7A00D25639 /* Products */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
0395293A15043C7A00D25639 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0395293915043C7A00D25639 /* iOS5Example.app */,
|
||||
0395296015043C7A00D25639 /* iOS5ExampleTests.octest */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
0395293C15043C7A00D25639 /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0395293D15043C7A00D25639 /* UIKit.framework */,
|
||||
0395293F15043C7A00D25639 /* Foundation.framework */,
|
||||
0395294115043C7A00D25639 /* CoreGraphics.framework */,
|
||||
0395296115043C7A00D25639 /* SenTestingKit.framework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
0395294315043C7A00D25639 /* iOS5Example */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0395294C15043C7A00D25639 /* AppDelegate.h */,
|
||||
0395294D15043C7A00D25639 /* AppDelegate.m */,
|
||||
0395294F15043C7A00D25639 /* MainStoryboard_iPhone.storyboard */,
|
||||
0395295215043C7A00D25639 /* MainStoryboard_iPad.storyboard */,
|
||||
0395295515043C7A00D25639 /* MasterViewController.h */,
|
||||
0395295615043C7A00D25639 /* MasterViewController.m */,
|
||||
0395295815043C7A00D25639 /* DetailViewController.h */,
|
||||
0395295915043C7A00D25639 /* DetailViewController.m */,
|
||||
0395294415043C7A00D25639 /* Supporting Files */,
|
||||
);
|
||||
path = iOS5Example;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
0395294415043C7A00D25639 /* Supporting Files */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0395294515043C7A00D25639 /* iOS5Example-Info.plist */,
|
||||
0395294615043C7A00D25639 /* InfoPlist.strings */,
|
||||
0395294915043C7A00D25639 /* main.m */,
|
||||
0395294B15043C7A00D25639 /* iOS5Example-Prefix.pch */,
|
||||
);
|
||||
name = "Supporting Files";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
0395296715043C7A00D25639 /* iOS5ExampleTests */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0395296D15043C7A00D25639 /* iOS5ExampleTests.h */,
|
||||
0395296E15043C7A00D25639 /* iOS5ExampleTests.m */,
|
||||
03FA415C1614FCFD00F9324F /* ProtocolTests.h */,
|
||||
03FA415D1614FCFD00F9324F /* ProtocolTests.m */,
|
||||
0395296815043C7A00D25639 /* Supporting Files */,
|
||||
);
|
||||
path = iOS5ExampleTests;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
0395296815043C7A00D25639 /* Supporting Files */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0395296915043C7A00D25639 /* iOS5ExampleTests-Info.plist */,
|
||||
0395296A15043C7A00D25639 /* InfoPlist.strings */,
|
||||
);
|
||||
name = "Supporting Files";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
0395297A15043D8600D25639 /* Libraries */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0395297815043CF000D25639 /* libOCMock.a */,
|
||||
);
|
||||
name = Libraries;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
0395293815043C7A00D25639 /* iOS5Example */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 0395297215043C7A00D25639 /* Build configuration list for PBXNativeTarget "iOS5Example" */;
|
||||
buildPhases = (
|
||||
0395293515043C7A00D25639 /* Sources */,
|
||||
0395293615043C7A00D25639 /* Frameworks */,
|
||||
0395293715043C7A00D25639 /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = iOS5Example;
|
||||
productName = iOS5Example;
|
||||
productReference = 0395293915043C7A00D25639 /* iOS5Example.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
0395295F15043C7A00D25639 /* iOS5ExampleTests */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 0395297515043C7A00D25639 /* Build configuration list for PBXNativeTarget "iOS5ExampleTests" */;
|
||||
buildPhases = (
|
||||
0395295B15043C7A00D25639 /* Sources */,
|
||||
0395295C15043C7A00D25639 /* Frameworks */,
|
||||
0395295D15043C7A00D25639 /* Resources */,
|
||||
0395295E15043C7A00D25639 /* ShellScript */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
0395296615043C7A00D25639 /* PBXTargetDependency */,
|
||||
);
|
||||
name = iOS5ExampleTests;
|
||||
productName = iOS5ExampleTests;
|
||||
productReference = 0395296015043C7A00D25639 /* iOS5ExampleTests.octest */;
|
||||
productType = "com.apple.product-type.bundle";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
0395293015043C7A00D25639 /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 0420;
|
||||
ORGANIZATIONNAME = ThoughtWorks;
|
||||
};
|
||||
buildConfigurationList = 0395293315043C7A00D25639 /* Build configuration list for PBXProject "iOS5Example" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
);
|
||||
mainGroup = 0395292E15043C7A00D25639;
|
||||
productRefGroup = 0395293A15043C7A00D25639 /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
0395293815043C7A00D25639 /* iOS5Example */,
|
||||
0395295F15043C7A00D25639 /* iOS5ExampleTests */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
0395293715043C7A00D25639 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
0395294815043C7A00D25639 /* InfoPlist.strings in Resources */,
|
||||
0395295115043C7A00D25639 /* MainStoryboard_iPhone.storyboard in Resources */,
|
||||
0395295415043C7A00D25639 /* MainStoryboard_iPad.storyboard in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
0395295D15043C7A00D25639 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
0395296C15043C7A00D25639 /* InfoPlist.strings in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXShellScriptBuildPhase section */
|
||||
0395295E15043C7A00D25639 /* ShellScript */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "# Run the unit tests in this test bundle.\n\"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests\"\n";
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
0395293515043C7A00D25639 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
0395294A15043C7A00D25639 /* main.m in Sources */,
|
||||
0395294E15043C7A00D25639 /* AppDelegate.m in Sources */,
|
||||
0395295715043C7A00D25639 /* MasterViewController.m in Sources */,
|
||||
0395295A15043C7A00D25639 /* DetailViewController.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
0395295B15043C7A00D25639 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
0395296F15043C7A00D25639 /* iOS5ExampleTests.m in Sources */,
|
||||
03FA415E1614FCFD00F9324F /* ProtocolTests.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXTargetDependency section */
|
||||
0395296615043C7A00D25639 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = 0395293815043C7A00D25639 /* iOS5Example */;
|
||||
targetProxy = 0395296515043C7A00D25639 /* PBXContainerItemProxy */;
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
|
||||
/* Begin PBXVariantGroup section */
|
||||
0395294615043C7A00D25639 /* InfoPlist.strings */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
0395294715043C7A00D25639 /* en */,
|
||||
);
|
||||
name = InfoPlist.strings;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
0395294F15043C7A00D25639 /* MainStoryboard_iPhone.storyboard */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
0395295015043C7A00D25639 /* en */,
|
||||
);
|
||||
name = MainStoryboard_iPhone.storyboard;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
0395295215043C7A00D25639 /* MainStoryboard_iPad.storyboard */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
0395295315043C7A00D25639 /* en */,
|
||||
);
|
||||
name = MainStoryboard_iPad.storyboard;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
0395296A15043C7A00D25639 /* InfoPlist.strings */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
0395296B15043C7A00D25639 /* en */,
|
||||
);
|
||||
name = InfoPlist.strings;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXVariantGroup section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
0395297015043C7A00D25639 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
||||
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
|
||||
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 5.0;
|
||||
SDKROOT = iphoneos;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
0395297115043C7A00D25639 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
|
||||
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 5.0;
|
||||
OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
|
||||
SDKROOT = iphoneos;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VALIDATE_PRODUCT = YES;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
0395297315043C7A00D25639 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "iOS5Example/iOS5Example-Prefix.pch";
|
||||
INFOPLIST_FILE = "iOS5Example/iOS5Example-Info.plist";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
WRAPPER_EXTENSION = app;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
0395297415043C7A00D25639 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "iOS5Example/iOS5Example-Prefix.pch";
|
||||
INFOPLIST_FILE = "iOS5Example/iOS5Example-Info.plist";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
WRAPPER_EXTENSION = app;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
0395297615043C7A00D25639 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/iOS5Example.app/iOS5Example";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(SDKROOT)/Developer/Library/Frameworks",
|
||||
"$(DEVELOPER_LIBRARY_DIR)/Frameworks",
|
||||
);
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "iOS5Example/iOS5Example-Prefix.pch";
|
||||
HEADER_SEARCH_PATHS = "\"$(SRCROOT)/usr/include\"";
|
||||
INFOPLIST_FILE = "iOS5ExampleTests/iOS5ExampleTests-Info.plist";
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"$(SRCROOT)/usr/lib\"",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-force_load",
|
||||
"\"$(SRCROOT)/usr/lib/libOCMock.a\"",
|
||||
"-ObjC",
|
||||
);
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
TEST_HOST = "$(BUNDLE_LOADER)";
|
||||
WRAPPER_EXTENSION = octest;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
0395297715043C7A00D25639 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/iOS5Example.app/iOS5Example";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(SDKROOT)/Developer/Library/Frameworks",
|
||||
"$(DEVELOPER_LIBRARY_DIR)/Frameworks",
|
||||
);
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "iOS5Example/iOS5Example-Prefix.pch";
|
||||
HEADER_SEARCH_PATHS = "\"$(SRCROOT)/usr/include\"";
|
||||
INFOPLIST_FILE = "iOS5ExampleTests/iOS5ExampleTests-Info.plist";
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"$(SRCROOT)/usr/lib\"",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-force_load",
|
||||
"\"$(SRCROOT)/usr/lib/libOCMock.a\"",
|
||||
"-ObjC",
|
||||
);
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
TEST_HOST = "$(BUNDLE_LOADER)";
|
||||
WRAPPER_EXTENSION = octest;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
0395293315043C7A00D25639 /* Build configuration list for PBXProject "iOS5Example" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
0395297015043C7A00D25639 /* Debug */,
|
||||
0395297115043C7A00D25639 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
0395297215043C7A00D25639 /* Build configuration list for PBXNativeTarget "iOS5Example" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
0395297315043C7A00D25639 /* Debug */,
|
||||
0395297415043C7A00D25639 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
0395297515043C7A00D25639 /* Build configuration list for PBXNativeTarget "iOS5ExampleTests" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
0395297615043C7A00D25639 /* Debug */,
|
||||
0395297715043C7A00D25639 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 0395293015043C7A00D25639 /* Project object */;
|
||||
}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
//
|
||||
// AppDelegate.h
|
||||
// iOS5Example
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@interface AppDelegate : UIResponder <UIApplicationDelegate>
|
||||
|
||||
@property (strong, nonatomic) UIWindow *window;
|
||||
|
||||
@end
|
||||
+62
@@ -0,0 +1,62 @@
|
||||
//
|
||||
// AppDelegate.m
|
||||
// iOS5Example
|
||||
//
|
||||
|
||||
#import "AppDelegate.h"
|
||||
|
||||
@implementation AppDelegate
|
||||
|
||||
@synthesize window = _window;
|
||||
|
||||
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
|
||||
{
|
||||
// Override point for customization after application launch.
|
||||
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
|
||||
UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController;
|
||||
UINavigationController *navigationController = [splitViewController.viewControllers lastObject];
|
||||
splitViewController.delegate = (id)navigationController.topViewController;
|
||||
}
|
||||
return YES;
|
||||
}
|
||||
|
||||
- (void)applicationWillResignActive:(UIApplication *)application
|
||||
{
|
||||
/*
|
||||
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.
|
||||
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.
|
||||
*/
|
||||
}
|
||||
|
||||
- (void)applicationDidEnterBackground:(UIApplication *)application
|
||||
{
|
||||
/*
|
||||
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.
|
||||
If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
|
||||
*/
|
||||
}
|
||||
|
||||
- (void)applicationWillEnterForeground:(UIApplication *)application
|
||||
{
|
||||
/*
|
||||
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.
|
||||
*/
|
||||
}
|
||||
|
||||
- (void)applicationDidBecomeActive:(UIApplication *)application
|
||||
{
|
||||
/*
|
||||
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.
|
||||
*/
|
||||
}
|
||||
|
||||
- (void)applicationWillTerminate:(UIApplication *)application
|
||||
{
|
||||
/*
|
||||
Called when the application is about to terminate.
|
||||
Save data if appropriate.
|
||||
See also applicationDidEnterBackground:.
|
||||
*/
|
||||
}
|
||||
|
||||
@end
|
||||
Vendored
+14
@@ -0,0 +1,14 @@
|
||||
//
|
||||
// DetailViewController.h
|
||||
// iOS5Example
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@interface DetailViewController : UIViewController <UISplitViewControllerDelegate>
|
||||
|
||||
@property (strong, nonatomic) id detailItem;
|
||||
|
||||
@property (strong, nonatomic) IBOutlet UILabel *detailDescriptionLabel;
|
||||
|
||||
@end
|
||||
Vendored
+112
@@ -0,0 +1,112 @@
|
||||
//
|
||||
// DetailViewController.m
|
||||
// iOS5Example
|
||||
//
|
||||
|
||||
#import "DetailViewController.h"
|
||||
|
||||
@interface DetailViewController ()
|
||||
@property (strong, nonatomic) UIPopoverController *masterPopoverController;
|
||||
- (void)configureView;
|
||||
@end
|
||||
|
||||
@implementation DetailViewController
|
||||
|
||||
@synthesize detailItem = _detailItem;
|
||||
@synthesize detailDescriptionLabel = _detailDescriptionLabel;
|
||||
@synthesize masterPopoverController = _masterPopoverController;
|
||||
|
||||
#pragma mark - Managing the detail item
|
||||
|
||||
- (void)setDetailItem:(id)newDetailItem
|
||||
{
|
||||
if (_detailItem != newDetailItem) {
|
||||
_detailItem = newDetailItem;
|
||||
|
||||
// Update the view.
|
||||
[self configureView];
|
||||
}
|
||||
|
||||
if (self.masterPopoverController != nil) {
|
||||
[self.masterPopoverController dismissPopoverAnimated:YES];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)configureView
|
||||
{
|
||||
// Update the user interface for the detail item.
|
||||
|
||||
if (self.detailItem) {
|
||||
self.detailDescriptionLabel.text = [self.detailItem description];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)didReceiveMemoryWarning
|
||||
{
|
||||
[super didReceiveMemoryWarning];
|
||||
// Release any cached data, images, etc that aren't in use.
|
||||
}
|
||||
|
||||
#pragma mark - View lifecycle
|
||||
|
||||
- (void)viewDidLoad
|
||||
{
|
||||
[super viewDidLoad];
|
||||
// Do any additional setup after loading the view, typically from a nib.
|
||||
[self configureView];
|
||||
}
|
||||
|
||||
- (void)viewDidUnload
|
||||
{
|
||||
[super viewDidUnload];
|
||||
// Release any retained subviews of the main view.
|
||||
// e.g. self.myOutlet = nil;
|
||||
}
|
||||
|
||||
- (void)viewWillAppear:(BOOL)animated
|
||||
{
|
||||
[super viewWillAppear:animated];
|
||||
}
|
||||
|
||||
- (void)viewDidAppear:(BOOL)animated
|
||||
{
|
||||
[super viewDidAppear:animated];
|
||||
}
|
||||
|
||||
- (void)viewWillDisappear:(BOOL)animated
|
||||
{
|
||||
[super viewWillDisappear:animated];
|
||||
}
|
||||
|
||||
- (void)viewDidDisappear:(BOOL)animated
|
||||
{
|
||||
[super viewDidDisappear:animated];
|
||||
}
|
||||
|
||||
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
|
||||
{
|
||||
// Return YES for supported orientations
|
||||
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
|
||||
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
|
||||
} else {
|
||||
return YES;
|
||||
}
|
||||
}
|
||||
|
||||
#pragma mark - Split view
|
||||
|
||||
- (void)splitViewController:(UISplitViewController *)splitController willHideViewController:(UIViewController *)viewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)popoverController
|
||||
{
|
||||
barButtonItem.title = NSLocalizedString(@"Master", @"Master");
|
||||
[self.navigationItem setLeftBarButtonItem:barButtonItem animated:YES];
|
||||
self.masterPopoverController = popoverController;
|
||||
}
|
||||
|
||||
- (void)splitViewController:(UISplitViewController *)splitController willShowViewController:(UIViewController *)viewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem
|
||||
{
|
||||
// Called when the view is shown again in the split view, invalidating the button and popover controller.
|
||||
[self.navigationItem setLeftBarButtonItem:nil animated:YES];
|
||||
self.masterPopoverController = nil;
|
||||
}
|
||||
|
||||
@end
|
||||
Vendored
+14
@@ -0,0 +1,14 @@
|
||||
//
|
||||
// MasterViewController.h
|
||||
// iOS5Example
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@class DetailViewController;
|
||||
|
||||
@interface MasterViewController : UITableViewController
|
||||
|
||||
@property (strong, nonatomic) DetailViewController *detailViewController;
|
||||
|
||||
@end
|
||||
Vendored
+116
@@ -0,0 +1,116 @@
|
||||
//
|
||||
// MasterViewController.m
|
||||
// iOS5Example
|
||||
//
|
||||
|
||||
#import "MasterViewController.h"
|
||||
|
||||
#import "DetailViewController.h"
|
||||
|
||||
@implementation MasterViewController
|
||||
|
||||
@synthesize detailViewController = _detailViewController;
|
||||
|
||||
- (void)awakeFromNib
|
||||
{
|
||||
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
|
||||
self.clearsSelectionOnViewWillAppear = NO;
|
||||
self.contentSizeForViewInPopover = CGSizeMake(320.0, 600.0);
|
||||
}
|
||||
[super awakeFromNib];
|
||||
}
|
||||
|
||||
- (void)didReceiveMemoryWarning
|
||||
{
|
||||
[super didReceiveMemoryWarning];
|
||||
// Release any cached data, images, etc that aren't in use.
|
||||
}
|
||||
|
||||
#pragma mark - View lifecycle
|
||||
|
||||
- (void)viewDidLoad
|
||||
{
|
||||
[super viewDidLoad];
|
||||
// Do any additional setup after loading the view, typically from a nib.
|
||||
self.detailViewController = (DetailViewController *)[[self.splitViewController.viewControllers lastObject] topViewController];
|
||||
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
|
||||
[self.tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:NO scrollPosition:UITableViewScrollPositionMiddle];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)viewDidUnload
|
||||
{
|
||||
[super viewDidUnload];
|
||||
// Release any retained subviews of the main view.
|
||||
// e.g. self.myOutlet = nil;
|
||||
}
|
||||
|
||||
- (void)viewWillAppear:(BOOL)animated
|
||||
{
|
||||
[super viewWillAppear:animated];
|
||||
}
|
||||
|
||||
- (void)viewDidAppear:(BOOL)animated
|
||||
{
|
||||
[super viewDidAppear:animated];
|
||||
}
|
||||
|
||||
- (void)viewWillDisappear:(BOOL)animated
|
||||
{
|
||||
[super viewWillDisappear:animated];
|
||||
}
|
||||
|
||||
- (void)viewDidDisappear:(BOOL)animated
|
||||
{
|
||||
[super viewDidDisappear:animated];
|
||||
}
|
||||
|
||||
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
|
||||
{
|
||||
// Return YES for supported orientations
|
||||
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
|
||||
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
|
||||
} else {
|
||||
return YES;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
// Override to support conditional editing of the table view.
|
||||
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
|
||||
{
|
||||
// Return NO if you do not want the specified item to be editable.
|
||||
return YES;
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
// Override to support editing the table view.
|
||||
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
|
||||
{
|
||||
if (editingStyle == UITableViewCellEditingStyleDelete) {
|
||||
// Delete the row from the data source.
|
||||
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
|
||||
} else if (editingStyle == UITableViewCellEditingStyleInsert) {
|
||||
// Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view.
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
// Override to support rearranging the table view.
|
||||
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath
|
||||
{
|
||||
}
|
||||
*/
|
||||
|
||||
/*
|
||||
// Override to support conditional rearranging of the table view.
|
||||
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath
|
||||
{
|
||||
// Return NO if you do not want the item to be re-orderable.
|
||||
return YES;
|
||||
}
|
||||
*/
|
||||
|
||||
@end
|
||||
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
/* Localized versions of Info.plist keys */
|
||||
|
||||
+130
@@ -0,0 +1,130 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="1.0" toolsVersion="1926" systemVersion="11C36" targetRuntime="iOS.CocoaTouch.iPad" propertyAccessControl="none" initialViewController="5">
|
||||
<dependencies>
|
||||
<development defaultVersion="4200" identifier="xcode"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="922"/>
|
||||
</dependencies>
|
||||
<scenes>
|
||||
<scene sceneID="14">
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="13" sceneMemberID="firstResponder"/>
|
||||
<navigationController id="3" sceneMemberID="viewController">
|
||||
<navigationBar key="navigationBar" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" id="6">
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</navigationBar>
|
||||
<connections>
|
||||
<segue destination="19" kind="relationship" relationship="rootViewController" id="25"/>
|
||||
</connections>
|
||||
</navigationController>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="432" y="-178"/>
|
||||
</scene>
|
||||
<scene sceneID="16">
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="15" sceneMemberID="firstResponder"/>
|
||||
<viewController storyboardIdentifier="" title="Detail" id="4" customClass="DetailViewController" sceneMemberID="viewController">
|
||||
<view key="view" contentMode="scaleToFill" id="26">
|
||||
<rect key="frame" x="0.0" y="64" width="703" height="704"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<label clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" text="Detail view content goes here" textAlignment="center" lineBreakMode="tailTruncation" minimumFontSize="10" id="27">
|
||||
<rect key="frame" x="20" y="341" width="663" height="21"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<fontDescription key="fontDescription" type="system" size="system"/>
|
||||
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
|
||||
<simulatedOrientationMetrics key="simulatedOrientationMetrics" orientation="landscapeRight"/>
|
||||
</view>
|
||||
<toolbarItems/>
|
||||
<navigationItem key="navigationItem" title="Detail" id="52"/>
|
||||
<connections>
|
||||
<outlet property="detailDescriptionLabel" destination="27" id="29"/>
|
||||
</connections>
|
||||
</viewController>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="432" y="686"/>
|
||||
</scene>
|
||||
<scene sceneID="18">
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="17" sceneMemberID="firstResponder"/>
|
||||
<splitViewController id="5" sceneMemberID="viewController">
|
||||
<toolbarItems/>
|
||||
<simulatedStatusBarMetrics key="simulatedStatusBarMetrics" statusBarStyle="blackTranslucent"/>
|
||||
<simulatedOrientationMetrics key="simulatedOrientationMetrics" orientation="landscapeRight"/>
|
||||
<connections>
|
||||
<segue destination="3" kind="relationship" relationship="masterViewController" id="9"/>
|
||||
<segue destination="42" kind="relationship" relationship="detailViewController" id="53"/>
|
||||
</connections>
|
||||
</splitViewController>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="-711" y="-178"/>
|
||||
</scene>
|
||||
<scene sceneID="24">
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="23" sceneMemberID="firstResponder"/>
|
||||
<tableViewController storyboardIdentifier="" title="Master" clearsSelectionOnViewWillAppear="NO" id="19" customClass="MasterViewController" sceneMemberID="viewController">
|
||||
<tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="static" style="plain" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" id="20">
|
||||
<rect key="frame" x="0.0" y="64" width="320" height="704"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<simulatedOrientationMetrics key="simulatedOrientationMetrics" orientation="landscapeRight"/>
|
||||
<sections>
|
||||
<tableViewSection id="33">
|
||||
<cells>
|
||||
<tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="Cell" textLabel="z13-93-fbN" style="IBUITableViewCellStyleDefault" id="34">
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
|
||||
<rect key="frame" x="0.0" y="0.0" width="768" height="43"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" text="Detail" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="z13-93-fbN">
|
||||
<rect key="frame" x="10" y="0.0" width="748" height="43"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="20"/>
|
||||
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
|
||||
<color key="highlightedColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
|
||||
</label>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||
</view>
|
||||
</tableViewCell>
|
||||
</cells>
|
||||
</tableViewSection>
|
||||
</sections>
|
||||
<connections>
|
||||
<outlet property="dataSource" destination="19" id="22"/>
|
||||
<outlet property="delegate" destination="19" id="21"/>
|
||||
</connections>
|
||||
</tableView>
|
||||
<navigationItem key="navigationItem" title="Master" id="39"/>
|
||||
</tableViewController>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="843" y="-179"/>
|
||||
</scene>
|
||||
<scene sceneID="50">
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="49" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
<navigationController id="42" sceneMemberID="viewController">
|
||||
<navigationBar key="navigationBar" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" id="43">
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</navigationBar>
|
||||
<connections>
|
||||
<segue destination="4" kind="relationship" relationship="rootViewController" id="51"/>
|
||||
</connections>
|
||||
</navigationController>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="-390" y="686"/>
|
||||
</scene>
|
||||
</scenes>
|
||||
<simulatedMetricsContainer key="defaultSimulatedMetrics">
|
||||
<simulatedStatusBarMetrics key="statusBar" statusBarStyle="blackTranslucent"/>
|
||||
<simulatedOrientationMetrics key="orientation"/>
|
||||
<simulatedScreenMetrics key="destination"/>
|
||||
</simulatedMetricsContainer>
|
||||
</document>
|
||||
+101
@@ -0,0 +1,101 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="1.0" toolsVersion="1926" systemVersion="11C36" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" initialViewController="3">
|
||||
<dependencies>
|
||||
<development defaultVersion="4200" identifier="xcode"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="922"/>
|
||||
</dependencies>
|
||||
<scenes>
|
||||
<scene sceneID="11">
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="10" sceneMemberID="firstResponder"/>
|
||||
<navigationController id="3" sceneMemberID="viewController">
|
||||
<navigationBar key="navigationBar" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" id="4">
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</navigationBar>
|
||||
<connections>
|
||||
<segue destination="12" kind="relationship" relationship="rootViewController" id="19"/>
|
||||
</connections>
|
||||
</navigationController>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="-1" y="64"/>
|
||||
</scene>
|
||||
<scene sceneID="18">
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="17" sceneMemberID="firstResponder"/>
|
||||
<tableViewController storyboardIdentifier="" title="Master" id="12" customClass="MasterViewController" sceneMemberID="viewController">
|
||||
<tableView key="view" opaque="NO" clipsSubviews="YES" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="static" style="plain" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" id="13">
|
||||
<rect key="frame" x="0.0" y="64" width="320" height="416"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<sections>
|
||||
<tableViewSection id="29">
|
||||
<cells>
|
||||
<tableViewCell contentMode="scaleToFill" selectionStyle="blue" accessoryType="disclosureIndicator" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="Cell" textLabel="CZe-l0-5K6" style="IBUITableViewCellStyleDefault" id="30">
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
|
||||
<rect key="frame" x="0.0" y="0.0" width="300" height="43"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" text="Detail" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="CZe-l0-5K6">
|
||||
<rect key="frame" x="10" y="0.0" width="280" height="43"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="20"/>
|
||||
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
|
||||
<color key="highlightedColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
|
||||
</label>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||
</view>
|
||||
<connections>
|
||||
<segue destination="21" kind="push" id="33"/>
|
||||
</connections>
|
||||
</tableViewCell>
|
||||
</cells>
|
||||
</tableViewSection>
|
||||
</sections>
|
||||
<connections>
|
||||
<outlet property="dataSource" destination="12" id="16"/>
|
||||
<outlet property="delegate" destination="12" id="15"/>
|
||||
</connections>
|
||||
</tableView>
|
||||
<navigationItem key="navigationItem" title="Master" id="35"/>
|
||||
</tableViewController>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="455" y="64"/>
|
||||
</scene>
|
||||
<scene sceneID="24">
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="23" sceneMemberID="firstResponder"/>
|
||||
<viewController storyboardIdentifier="" title="Detail" id="21" customClass="DetailViewController" sceneMemberID="viewController">
|
||||
<view key="view" contentMode="scaleToFill" id="22">
|
||||
<rect key="frame" x="0.0" y="64" width="320" height="416"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<subviews>
|
||||
<label clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" text="Detail view content goes here" textAlignment="center" lineBreakMode="tailTruncation" minimumFontSize="10" id="27">
|
||||
<rect key="frame" x="20" y="199" width="280" height="18"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<fontDescription key="fontDescription" type="system" size="system"/>
|
||||
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
|
||||
</view>
|
||||
<navigationItem key="navigationItem" title="Detail" id="26"/>
|
||||
<connections>
|
||||
<outlet property="detailDescriptionLabel" destination="27" id="28"/>
|
||||
</connections>
|
||||
</viewController>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="924" y="64"/>
|
||||
</scene>
|
||||
</scenes>
|
||||
<simulatedMetricsContainer key="defaultSimulatedMetrics">
|
||||
<simulatedStatusBarMetrics key="statusBar"/>
|
||||
<simulatedOrientationMetrics key="orientation"/>
|
||||
<simulatedScreenMetrics key="destination"/>
|
||||
</simulatedMetricsContainer>
|
||||
</document>
|
||||
Vendored
+51
@@ -0,0 +1,51 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleDisplayName</key>
|
||||
<string>${PRODUCT_NAME}</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIconFiles</key>
|
||||
<array/>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.mulle-kybernetik.ocmock.${PRODUCT_NAME:rfc1034identifier}</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>${PRODUCT_NAME}</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1.0</string>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
<true/>
|
||||
<key>UIMainStoryboardFile</key>
|
||||
<string>MainStoryboard_iPhone</string>
|
||||
<key>UIMainStoryboardFile~ipad</key>
|
||||
<string>MainStoryboard_iPad</string>
|
||||
<key>UIRequiredDeviceCapabilities</key>
|
||||
<array>
|
||||
<string>armv7</string>
|
||||
</array>
|
||||
<key>UISupportedInterfaceOrientations</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
</array>
|
||||
<key>UISupportedInterfaceOrientations~ipad</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
<string>UIInterfaceOrientationPortraitUpsideDown</string>
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
Vendored
+14
@@ -0,0 +1,14 @@
|
||||
//
|
||||
// Prefix header for all source files of the 'iOS5Example' target in the 'iOS5Example' project
|
||||
//
|
||||
|
||||
#import <Availability.h>
|
||||
|
||||
#ifndef __IPHONE_5_0
|
||||
#warning "This project uses features only available in iOS SDK 5.0 and later."
|
||||
#endif
|
||||
|
||||
#ifdef __OBJC__
|
||||
#import <UIKit/UIKit.h>
|
||||
#import <Foundation/Foundation.h>
|
||||
#endif
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
//
|
||||
// main.m
|
||||
// iOS5Example
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
#import "AppDelegate.h"
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
@autoreleasepool {
|
||||
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
|
||||
}
|
||||
}
|
||||
Vendored
+10
@@ -0,0 +1,10 @@
|
||||
//
|
||||
// ProtocolTests.h
|
||||
// iOS5Example
|
||||
//
|
||||
|
||||
#import <SenTestingKit/SenTestingKit.h>
|
||||
|
||||
@interface ProtocolTests : SenTestCase
|
||||
|
||||
@end
|
||||
Vendored
+56
@@ -0,0 +1,56 @@
|
||||
//
|
||||
// ProtocolTests.m
|
||||
// iOS5Example
|
||||
//
|
||||
|
||||
#import <OCMock/OCMock.h>
|
||||
#import "ProtocolTests.h"
|
||||
|
||||
|
||||
@protocol AuthenticationServiceProtocol
|
||||
|
||||
- (void)loginWithEmail:(NSString *)email andPassword:(NSString *)password;
|
||||
|
||||
@end
|
||||
|
||||
@interface Foo : NSObject
|
||||
{
|
||||
id<AuthenticationServiceProtocol> authService;
|
||||
}
|
||||
|
||||
- (id)initWithAuthenticationService:(id<AuthenticationServiceProtocol>)anAuthService;
|
||||
- (void)doStuff;
|
||||
|
||||
@end
|
||||
|
||||
@implementation Foo
|
||||
|
||||
- (id)initWithAuthenticationService:(id<AuthenticationServiceProtocol>)anAuthService
|
||||
{
|
||||
self = [super init];
|
||||
authService = anAuthService;
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)doStuff
|
||||
{
|
||||
[authService loginWithEmail:@"x" andPassword:@"y"];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation ProtocolTests
|
||||
|
||||
- (void)testTheProtocol
|
||||
{
|
||||
id authService = [OCMockObject mockForProtocol:@protocol(AuthenticationServiceProtocol)];
|
||||
id foo = [[Foo alloc] initWithAuthenticationService:authService];
|
||||
|
||||
[[authService expect] loginWithEmail:[OCMArg any] andPassword:[OCMArg any]];
|
||||
|
||||
[foo doStuff];
|
||||
|
||||
[authService verify];
|
||||
}
|
||||
|
||||
@end
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
/* Localized versions of Info.plist keys */
|
||||
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.mulle-kybernetik.ocmock.${PRODUCT_NAME:rfc1034identifier}</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>BNDL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
</dict>
|
||||
</plist>
|
||||
Vendored
+10
@@ -0,0 +1,10 @@
|
||||
//
|
||||
// iOS5ExampleTests.h
|
||||
// iOS5ExampleTests
|
||||
//
|
||||
|
||||
#import <SenTestingKit/SenTestingKit.h>
|
||||
|
||||
@interface iOS5ExampleTests : SenTestCase
|
||||
|
||||
@end
|
||||
Vendored
+47
@@ -0,0 +1,47 @@
|
||||
//
|
||||
// iOS5ExampleTests.m
|
||||
// iOS5ExampleTests
|
||||
//
|
||||
|
||||
#import <OCMock/OCMock.h>
|
||||
#import "MasterViewController.h"
|
||||
#import "iOS5ExampleTests.h"
|
||||
|
||||
@implementation iOS5ExampleTests
|
||||
|
||||
- (void)setUp
|
||||
{
|
||||
[super setUp];
|
||||
|
||||
// Set-up code here.
|
||||
}
|
||||
|
||||
- (void)tearDown
|
||||
{
|
||||
// Tear-down code here.
|
||||
|
||||
[super tearDown];
|
||||
}
|
||||
|
||||
- (void)testMasterViewControllerDeletesItemsFromTableView
|
||||
{
|
||||
// Test set-up
|
||||
|
||||
MasterViewController *controller = [[MasterViewController alloc] init];
|
||||
NSIndexPath *dummyIndexPath = [NSIndexPath indexPathWithIndex:3];
|
||||
id tableViewMock = [OCMockObject mockForClass:[UITableView class]];
|
||||
[[tableViewMock expect] deleteRowsAtIndexPaths:[NSArray arrayWithObject:dummyIndexPath] withRowAnimation:UITableViewRowAnimationFade];
|
||||
|
||||
// Invoke functionality to be tested
|
||||
// If you want to see the test fail you can, for example, change the editing style to UITableViewCellEditingStyleNone. In
|
||||
// that case the method in the controller does not make a call to the table view and the mock will raise an exception when
|
||||
// verify is called further down.
|
||||
|
||||
[controller tableView:tableViewMock commitEditingStyle:UITableViewCellEditingStyleDelete forRowAtIndexPath:dummyIndexPath];
|
||||
|
||||
// Verify that expectations were met
|
||||
|
||||
[tableViewMock verify];
|
||||
}
|
||||
|
||||
@end
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
//---------------------------------------------------------------------------------------
|
||||
// $Id$
|
||||
// Copyright (c) 2009 by Mulle Kybernetik. See License file for details.
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@class OCMockObserver;
|
||||
|
||||
|
||||
@interface NSNotificationCenter(OCMAdditions)
|
||||
|
||||
- (void)addMockObserver:(OCMockObserver *)notificationObserver name:(NSString *)notificationName object:(id)notificationSender;
|
||||
|
||||
@end
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
//---------------------------------------------------------------------------------------
|
||||
// $Id$
|
||||
// Copyright (c) 2009-2010 by Mulle Kybernetik. See License file for details.
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@interface OCMArg : NSObject
|
||||
|
||||
// constraining arguments
|
||||
|
||||
+ (id)any;
|
||||
+ (void *)anyPointer;
|
||||
+ (id)isNil;
|
||||
+ (id)isNotNil;
|
||||
+ (id)isNotEqual:(id)value;
|
||||
+ (id)checkWithSelector:(SEL)selector onObject:(id)anObject;
|
||||
#if NS_BLOCKS_AVAILABLE
|
||||
+ (id)checkWithBlock:(BOOL (^)(id))block;
|
||||
#endif
|
||||
|
||||
// manipulating arguments
|
||||
|
||||
+ (id *)setTo:(id)value;
|
||||
|
||||
// internal use only
|
||||
|
||||
+ (id)resolveSpecialValues:(NSValue *)value;
|
||||
|
||||
@end
|
||||
|
||||
#define OCMOCK_ANY [OCMArg any]
|
||||
#define OCMOCK_VALUE(variable) [NSValue value:&variable withObjCType:@encode(__typeof__(variable))]
|
||||
Vendored
+64
@@ -0,0 +1,64 @@
|
||||
//---------------------------------------------------------------------------------------
|
||||
// $Id$
|
||||
// Copyright (c) 2007-2010 by Mulle Kybernetik. See License file for details.
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
|
||||
@interface OCMConstraint : NSObject
|
||||
|
||||
+ (id)constraint;
|
||||
- (BOOL)evaluate:(id)value;
|
||||
|
||||
// if you are looking for any, isNil, etc, they have moved to OCMArg
|
||||
|
||||
// try to use [OCMArg checkWith...] instead of the constraintWith... methods below
|
||||
|
||||
+ (id)constraintWithSelector:(SEL)aSelector onObject:(id)anObject;
|
||||
+ (id)constraintWithSelector:(SEL)aSelector onObject:(id)anObject withValue:(id)aValue;
|
||||
|
||||
|
||||
@end
|
||||
|
||||
@interface OCMAnyConstraint : OCMConstraint
|
||||
@end
|
||||
|
||||
@interface OCMIsNilConstraint : OCMConstraint
|
||||
@end
|
||||
|
||||
@interface OCMIsNotNilConstraint : OCMConstraint
|
||||
@end
|
||||
|
||||
@interface OCMIsNotEqualConstraint : OCMConstraint
|
||||
{
|
||||
@public
|
||||
id testValue;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@interface OCMInvocationConstraint : OCMConstraint
|
||||
{
|
||||
@public
|
||||
NSInvocation *invocation;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
#if NS_BLOCKS_AVAILABLE
|
||||
|
||||
@interface OCMBlockConstraint : OCMConstraint
|
||||
{
|
||||
BOOL (^block)(id);
|
||||
}
|
||||
|
||||
- (id)initWithConstraintBlock:(BOOL (^)(id))block;
|
||||
|
||||
@end
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#define CONSTRAINT(aSelector) [OCMConstraint constraintWithSelector:aSelector onObject:self]
|
||||
#define CONSTRAINTV(aSelector, aValue) [OCMConstraint constraintWithSelector:aSelector onObject:self withValue:(aValue)]
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
//---------------------------------------------------------------------------------------
|
||||
// $Id$
|
||||
// Copyright (c) 2004-2008 by Mulle Kybernetik. See License file for details.
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#import <OCMock/OCMockObject.h>
|
||||
#import <OCMock/OCMockRecorder.h>
|
||||
#import <OCMock/OCMConstraint.h>
|
||||
#import <OCMock/OCMArg.h>
|
||||
#import <OCMock/NSNotificationCenter+OCMAdditions.h>
|
||||
Vendored
+43
@@ -0,0 +1,43 @@
|
||||
//---------------------------------------------------------------------------------------
|
||||
// $Id$
|
||||
// Copyright (c) 2004-2008 by Mulle Kybernetik. See License file for details.
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@interface OCMockObject : NSProxy
|
||||
{
|
||||
BOOL isNice;
|
||||
BOOL expectationOrderMatters;
|
||||
NSMutableArray *recorders;
|
||||
NSMutableArray *expectations;
|
||||
NSMutableArray *rejections;
|
||||
NSMutableArray *exceptions;
|
||||
}
|
||||
|
||||
+ (id)mockForClass:(Class)aClass;
|
||||
+ (id)mockForProtocol:(Protocol *)aProtocol;
|
||||
+ (id)partialMockForObject:(NSObject *)anObject;
|
||||
|
||||
+ (id)niceMockForClass:(Class)aClass;
|
||||
+ (id)niceMockForProtocol:(Protocol *)aProtocol;
|
||||
|
||||
+ (id)observerMock;
|
||||
|
||||
- (id)init;
|
||||
|
||||
- (void)setExpectationOrderMatters:(BOOL)flag;
|
||||
|
||||
- (id)stub;
|
||||
- (id)expect;
|
||||
- (id)reject;
|
||||
|
||||
- (void)verify;
|
||||
|
||||
// internal use only
|
||||
|
||||
- (id)getNewRecorder;
|
||||
- (BOOL)handleInvocation:(NSInvocation *)anInvocation;
|
||||
- (void)handleUnRecordedInvocation:(NSInvocation *)anInvocation;
|
||||
|
||||
@end
|
||||
Vendored
+32
@@ -0,0 +1,32 @@
|
||||
//---------------------------------------------------------------------------------------
|
||||
// $Id$
|
||||
// Copyright (c) 2004-2010 by Mulle Kybernetik. See License file for details.
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@interface OCMockRecorder : NSProxy
|
||||
{
|
||||
id signatureResolver;
|
||||
NSInvocation *recordedInvocation;
|
||||
NSMutableArray *invocationHandlers;
|
||||
}
|
||||
|
||||
- (id)initWithSignatureResolver:(id)anObject;
|
||||
|
||||
- (BOOL)matchesInvocation:(NSInvocation *)anInvocation;
|
||||
- (void)releaseInvocation;
|
||||
|
||||
- (id)andReturn:(id)anObject;
|
||||
- (id)andReturnValue:(NSValue *)aValue;
|
||||
- (id)andThrow:(NSException *)anException;
|
||||
- (id)andPost:(NSNotification *)aNotification;
|
||||
- (id)andCall:(SEL)selector onObject:(id)anObject;
|
||||
#if NS_BLOCKS_AVAILABLE
|
||||
- (id)andDo:(void (^)(NSInvocation *))block;
|
||||
#endif
|
||||
- (id)andForwardToRealObject;
|
||||
|
||||
- (NSArray *)invocationHandlers;
|
||||
|
||||
@end
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
//
|
||||
// RootViewController.h
|
||||
// iPhoneExample
|
||||
//
|
||||
// Created by Erik Doernenburg on 20/07/10.
|
||||
// Copyright Mulle Kybernetik 2010. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@interface RootViewController : UITableViewController {
|
||||
}
|
||||
|
||||
@end
|
||||
+62
@@ -0,0 +1,62 @@
|
||||
//
|
||||
// RootViewController.m
|
||||
// iPhoneExample
|
||||
//
|
||||
// Created by Erik Doernenburg on 20/07/10.
|
||||
// Copyright Mulle Kybernetik 2010. All rights reserved.
|
||||
//
|
||||
|
||||
#import "RootViewController.h"
|
||||
|
||||
|
||||
@implementation RootViewController
|
||||
|
||||
|
||||
#pragma mark -
|
||||
#pragma mark Table view data source
|
||||
|
||||
// Customize the number of sections in the table view.
|
||||
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
// Customize the number of rows in the table view.
|
||||
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
// Customize the appearance of table view cells.
|
||||
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
|
||||
|
||||
static NSString *CellIdentifier = @"HelloWorldCell";
|
||||
|
||||
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
|
||||
if (cell == nil) {
|
||||
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
|
||||
}
|
||||
|
||||
cell.textLabel.text = @"Hello World!";
|
||||
|
||||
return cell;
|
||||
}
|
||||
|
||||
|
||||
#pragma mark -
|
||||
#pragma mark Table view delegate
|
||||
|
||||
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
|
||||
|
||||
/*
|
||||
<#DetailViewController#> *detailViewController = [[<#DetailViewController#> alloc] initWithNibName:@"<#Nib name#>" bundle:nil];
|
||||
// ...
|
||||
// Pass the selected object to the new view controller.
|
||||
[self.navigationController pushViewController:detailViewController animated:YES];
|
||||
[detailViewController release];
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
|
||||
Vendored
+21
@@ -0,0 +1,21 @@
|
||||
//
|
||||
// iPhoneExampleAppDelegate.h
|
||||
// iPhoneExample
|
||||
//
|
||||
// Created by Erik Doernenburg on 20/07/10.
|
||||
// Copyright Mulle Kybernetik 2010. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@interface iPhoneExampleAppDelegate : NSObject <UIApplicationDelegate> {
|
||||
|
||||
UIWindow *window;
|
||||
UINavigationController *navigationController;
|
||||
}
|
||||
|
||||
@property (nonatomic, retain) IBOutlet UIWindow *window;
|
||||
@property (nonatomic, retain) IBOutlet UINavigationController *navigationController;
|
||||
|
||||
@end
|
||||
|
||||
Vendored
+90
@@ -0,0 +1,90 @@
|
||||
//
|
||||
// iPhoneExampleAppDelegate.m
|
||||
// iPhoneExample
|
||||
//
|
||||
// Created by Erik Doernenburg on 20/07/10.
|
||||
// Copyright Mulle Kybernetik 2010. All rights reserved.
|
||||
//
|
||||
|
||||
#import "iPhoneExampleAppDelegate.h"
|
||||
#import "RootViewController.h"
|
||||
|
||||
|
||||
@implementation iPhoneExampleAppDelegate
|
||||
|
||||
@synthesize window;
|
||||
@synthesize navigationController;
|
||||
|
||||
|
||||
#pragma mark -
|
||||
#pragma mark Application lifecycle
|
||||
|
||||
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
|
||||
|
||||
// Override point for customization after application launch.
|
||||
|
||||
// Add the navigation controller's view to the window and display.
|
||||
[window addSubview:navigationController.view];
|
||||
[window makeKeyAndVisible];
|
||||
|
||||
return YES;
|
||||
}
|
||||
|
||||
|
||||
- (void)applicationWillResignActive:(UIApplication *)application {
|
||||
/*
|
||||
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.
|
||||
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.
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
- (void)applicationDidEnterBackground:(UIApplication *)application {
|
||||
/*
|
||||
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.
|
||||
If your application supports background execution, called instead of applicationWillTerminate: when the user quits.
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
- (void)applicationWillEnterForeground:(UIApplication *)application {
|
||||
/*
|
||||
Called as part of transition from the background to the inactive state: here you can undo many of the changes made on entering the background.
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
- (void)applicationDidBecomeActive:(UIApplication *)application {
|
||||
/*
|
||||
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.
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
- (void)applicationWillTerminate:(UIApplication *)application {
|
||||
/*
|
||||
Called when the application is about to terminate.
|
||||
See also applicationDidEnterBackground:.
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
#pragma mark -
|
||||
#pragma mark Memory management
|
||||
|
||||
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application {
|
||||
/*
|
||||
Free up as much memory as possible by purging cached data objects that can be recreated (or reloaded from disk) later.
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
- (void)dealloc {
|
||||
[navigationController release];
|
||||
[window release];
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
//---------------------------------------------------------------------------------------
|
||||
// $Id: NSNotificationCenter+OCMAdditions.h 57 2010-07-19 06:14:27Z erik $
|
||||
// Copyright (c) 2009 by Mulle Kybernetik. See License file for details.
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@class OCMockObserver;
|
||||
|
||||
|
||||
@interface NSNotificationCenter(OCMAdditions)
|
||||
|
||||
- (void)addMockObserver:(OCMockObserver *)notificationObserver name:(NSString *)notificationName object:(id)notificationSender;
|
||||
|
||||
@end
|
||||
Vendored
+33
@@ -0,0 +1,33 @@
|
||||
//---------------------------------------------------------------------------------------
|
||||
// $Id: OCMArg.h 57 2010-07-19 06:14:27Z erik $
|
||||
// Copyright (c) 2009-2010 by Mulle Kybernetik. See License file for details.
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@interface OCMArg : NSObject
|
||||
|
||||
// constraining arguments
|
||||
|
||||
+ (id)any;
|
||||
+ (void *)anyPointer;
|
||||
+ (id)isNil;
|
||||
+ (id)isNotNil;
|
||||
+ (id)isNotEqual:(id)value;
|
||||
+ (id)checkWithSelector:(SEL)selector onObject:(id)anObject;
|
||||
#if NS_BLOCKS_AVAILABLE
|
||||
+ (id)checkWithBlock:(BOOL (^)(id))block;
|
||||
#endif
|
||||
|
||||
// manipulating arguments
|
||||
|
||||
+ (id *)setTo:(id)value;
|
||||
|
||||
// internal use only
|
||||
|
||||
+ (id)resolveSpecialValues:(NSValue *)value;
|
||||
|
||||
@end
|
||||
|
||||
#define OCMOCK_ANY [OCMArg any]
|
||||
#define OCMOCK_VALUE(variable) [NSValue value:&variable withObjCType:@encode(typeof(variable))]
|
||||
+64
@@ -0,0 +1,64 @@
|
||||
//---------------------------------------------------------------------------------------
|
||||
// $Id: OCMConstraint.h 57 2010-07-19 06:14:27Z erik $
|
||||
// Copyright (c) 2007-2010 by Mulle Kybernetik. See License file for details.
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
|
||||
@interface OCMConstraint : NSObject
|
||||
|
||||
+ (id)constraint;
|
||||
- (BOOL)evaluate:(id)value;
|
||||
|
||||
// if you are looking for any, isNil, etc, they have moved to OCMArg
|
||||
|
||||
// try to use [OCMArg checkWith...] instead of the constraintWith... methods below
|
||||
|
||||
+ (id)constraintWithSelector:(SEL)aSelector onObject:(id)anObject;
|
||||
+ (id)constraintWithSelector:(SEL)aSelector onObject:(id)anObject withValue:(id)aValue;
|
||||
|
||||
|
||||
@end
|
||||
|
||||
@interface OCMAnyConstraint : OCMConstraint
|
||||
@end
|
||||
|
||||
@interface OCMIsNilConstraint : OCMConstraint
|
||||
@end
|
||||
|
||||
@interface OCMIsNotNilConstraint : OCMConstraint
|
||||
@end
|
||||
|
||||
@interface OCMIsNotEqualConstraint : OCMConstraint
|
||||
{
|
||||
@public
|
||||
id testValue;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@interface OCMInvocationConstraint : OCMConstraint
|
||||
{
|
||||
@public
|
||||
NSInvocation *invocation;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
#if NS_BLOCKS_AVAILABLE
|
||||
|
||||
@interface OCMBlockConstraint : OCMConstraint
|
||||
{
|
||||
BOOL (^block)(id);
|
||||
}
|
||||
|
||||
- (id)initWithConstraintBlock:(BOOL (^)(id))block;
|
||||
|
||||
@end
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#define CONSTRAINT(aSelector) [OCMConstraint constraintWithSelector:aSelector onObject:self]
|
||||
#define CONSTRAINTV(aSelector, aValue) [OCMConstraint constraintWithSelector:aSelector onObject:self withValue:(aValue)]
|
||||
Vendored
+10
@@ -0,0 +1,10 @@
|
||||
//---------------------------------------------------------------------------------------
|
||||
// $Id: OCMock.h 39 2009-04-09 05:31:28Z erik $
|
||||
// Copyright (c) 2004-2008 by Mulle Kybernetik. See License file for details.
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#import <OCMock/OCMockObject.h>
|
||||
#import <OCMock/OCMockRecorder.h>
|
||||
#import <OCMock/OCMConstraint.h>
|
||||
#import <OCMock/OCMArg.h>
|
||||
#import <OCMock/NSNotificationCenter+OCMAdditions.h>
|
||||
Vendor/facebook-ios-sdk/vendor/OCMock/Examples/iPhoneExample/Libraries/Headers/OCMock/OCMockObject.h
Vendored
+41
@@ -0,0 +1,41 @@
|
||||
//---------------------------------------------------------------------------------------
|
||||
// $Id: OCMockObject.h 52 2009-08-14 07:21:10Z erik $
|
||||
// Copyright (c) 2004-2008 by Mulle Kybernetik. See License file for details.
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@interface OCMockObject : NSProxy
|
||||
{
|
||||
BOOL isNice;
|
||||
BOOL expectationOrderMatters;
|
||||
NSMutableArray *recorders;
|
||||
NSMutableArray *expectations;
|
||||
NSMutableArray *exceptions;
|
||||
}
|
||||
|
||||
+ (id)mockForClass:(Class)aClass;
|
||||
+ (id)mockForProtocol:(Protocol *)aProtocol;
|
||||
+ (id)partialMockForObject:(NSObject *)anObject;
|
||||
|
||||
+ (id)niceMockForClass:(Class)aClass;
|
||||
+ (id)niceMockForProtocol:(Protocol *)aProtocol;
|
||||
|
||||
+ (id)observerMock;
|
||||
|
||||
- (id)init;
|
||||
|
||||
- (void)setExpectationOrderMatters:(BOOL)flag;
|
||||
|
||||
- (id)stub;
|
||||
- (id)expect;
|
||||
|
||||
- (void)verify;
|
||||
|
||||
// internal use only
|
||||
|
||||
- (id)getNewRecorder;
|
||||
- (BOOL)handleInvocation:(NSInvocation *)anInvocation;
|
||||
- (void)handleUnRecordedInvocation:(NSInvocation *)anInvocation;
|
||||
|
||||
@end
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
//---------------------------------------------------------------------------------------
|
||||
// $Id: OCMockRecorder.h 57 2010-07-19 06:14:27Z erik $
|
||||
// Copyright (c) 2004-2010 by Mulle Kybernetik. See License file for details.
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@interface OCMockRecorder : NSProxy
|
||||
{
|
||||
id signatureResolver;
|
||||
NSInvocation *recordedInvocation;
|
||||
NSMutableArray *invocationHandlers;
|
||||
}
|
||||
|
||||
- (id)initWithSignatureResolver:(id)anObject;
|
||||
|
||||
- (BOOL)matchesInvocation:(NSInvocation *)anInvocation;
|
||||
- (void)releaseInvocation;
|
||||
|
||||
- (id)andReturn:(id)anObject;
|
||||
- (id)andReturnValue:(NSValue *)aValue;
|
||||
- (id)andThrow:(NSException *)anException;
|
||||
- (id)andPost:(NSNotification *)aNotification;
|
||||
- (id)andCall:(SEL)selector onObject:(id)anObject;
|
||||
#if NS_BLOCKS_AVAILABLE
|
||||
- (id)andDo:(void (^)(NSInvocation *))block;
|
||||
#endif
|
||||
|
||||
- (NSArray *)invocationHandlers;
|
||||
|
||||
@end
|
||||
BIN
Binary file not shown.
@@ -0,0 +1,542 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">
|
||||
<data>
|
||||
<int key="IBDocument.SystemTarget">1024</int>
|
||||
<string key="IBDocument.SystemVersion">10D571</string>
|
||||
<string key="IBDocument.InterfaceBuilderVersion">786</string>
|
||||
<string key="IBDocument.AppKitVersion">1038.29</string>
|
||||
<string key="IBDocument.HIToolboxVersion">460.00</string>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string key="NS.object.0">112</string>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<integer value="13"/>
|
||||
</object>
|
||||
<object class="NSArray" key="IBDocument.PluginDependencies">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="IBDocument.Metadata">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSArray" key="dict.sortedKeys" id="0">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBProxyObject" id="841351856">
|
||||
<string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
</object>
|
||||
<object class="IBProxyObject" id="302016328">
|
||||
<string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
</object>
|
||||
<object class="IBUICustomObject" id="664661524">
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
</object>
|
||||
<object class="IBUIWindow" id="380026005">
|
||||
<nil key="NSNextResponder"/>
|
||||
<int key="NSvFlags">1316</int>
|
||||
<object class="NSPSMatrix" key="NSFrameMatrix"/>
|
||||
<string key="NSFrameSize">{320, 480}</string>
|
||||
<object class="NSColor" key="IBUIBackgroundColor">
|
||||
<int key="NSColorSpace">1</int>
|
||||
<bytes key="NSRGB">MSAxIDEAA</bytes>
|
||||
</object>
|
||||
<bool key="IBUIOpaque">NO</bool>
|
||||
<bool key="IBUIClearsContextBeforeDrawing">NO</bool>
|
||||
<object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
<bool key="IBUIResizesToFullScreen">YES</bool>
|
||||
</object>
|
||||
<object class="IBUINavigationController" id="701001926">
|
||||
<object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
|
||||
<object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
|
||||
<int key="interfaceOrientation">1</int>
|
||||
</object>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
<bool key="IBUIHorizontal">NO</bool>
|
||||
<object class="IBUINavigationBar" key="IBUINavigationBar" id="207850653">
|
||||
<nil key="NSNextResponder"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<string key="NSFrameSize">{0, 0}</string>
|
||||
<bool key="IBUIOpaque">NO</bool>
|
||||
<bool key="IBUIClipsSubviews">YES</bool>
|
||||
<bool key="IBUIMultipleTouchEnabled">YES</bool>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="IBUIViewControllers">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBUIViewController" id="619226028">
|
||||
<object class="IBUINavigationItem" key="IBUINavigationItem" id="394667715">
|
||||
<reference key="IBUINavigationBar"/>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
</object>
|
||||
<reference key="IBUIParentViewController" ref="701001926"/>
|
||||
<string key="IBUINibName">RootViewController</string>
|
||||
<object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
|
||||
<object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
|
||||
<int key="interfaceOrientation">1</int>
|
||||
</object>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
<bool key="IBUIHorizontal">NO</bool>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBObjectContainer" key="IBDocument.Objects">
|
||||
<object class="NSMutableArray" key="connectionRecords">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchOutletConnection" key="connection">
|
||||
<string key="label">delegate</string>
|
||||
<reference key="source" ref="841351856"/>
|
||||
<reference key="destination" ref="664661524"/>
|
||||
</object>
|
||||
<int key="connectionID">4</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchOutletConnection" key="connection">
|
||||
<string key="label">window</string>
|
||||
<reference key="source" ref="664661524"/>
|
||||
<reference key="destination" ref="380026005"/>
|
||||
</object>
|
||||
<int key="connectionID">5</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchOutletConnection" key="connection">
|
||||
<string key="label">navigationController</string>
|
||||
<reference key="source" ref="664661524"/>
|
||||
<reference key="destination" ref="701001926"/>
|
||||
</object>
|
||||
<int key="connectionID">15</int>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBMutableOrderedSet" key="objectRecords">
|
||||
<object class="NSArray" key="orderedObjects">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">0</int>
|
||||
<reference key="object" ref="0"/>
|
||||
<reference key="children" ref="1000"/>
|
||||
<nil key="parent"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">2</int>
|
||||
<reference key="object" ref="380026005"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
<reference key="parent" ref="0"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-1</int>
|
||||
<reference key="object" ref="841351856"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
<string key="objectName">File's Owner</string>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">3</int>
|
||||
<reference key="object" ref="664661524"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-2</int>
|
||||
<reference key="object" ref="302016328"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">9</int>
|
||||
<reference key="object" ref="701001926"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="207850653"/>
|
||||
<reference ref="619226028"/>
|
||||
</object>
|
||||
<reference key="parent" ref="0"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">11</int>
|
||||
<reference key="object" ref="207850653"/>
|
||||
<reference key="parent" ref="701001926"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">13</int>
|
||||
<reference key="object" ref="619226028"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="394667715"/>
|
||||
</object>
|
||||
<reference key="parent" ref="701001926"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">14</int>
|
||||
<reference key="object" ref="394667715"/>
|
||||
<reference key="parent" ref="619226028"/>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="flattenedProperties">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSArray" key="dict.sortedKeys">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>-1.CustomClassName</string>
|
||||
<string>-2.CustomClassName</string>
|
||||
<string>11.IBPluginDependency</string>
|
||||
<string>13.CustomClassName</string>
|
||||
<string>13.IBPluginDependency</string>
|
||||
<string>2.IBAttributePlaceholdersKey</string>
|
||||
<string>2.IBEditorWindowLastContentRect</string>
|
||||
<string>2.IBPluginDependency</string>
|
||||
<string>3.CustomClassName</string>
|
||||
<string>3.IBPluginDependency</string>
|
||||
<string>9.IBEditorWindowLastContentRect</string>
|
||||
<string>9.IBPluginDependency</string>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>UIApplication</string>
|
||||
<string>UIResponder</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string>RootViewController</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<object class="NSMutableDictionary">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference key="dict.sortedKeys" ref="0"/>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
</object>
|
||||
<string>{{673, 376}, {320, 480}}</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string>iPhoneExampleAppDelegate</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string>{{186, 376}, {320, 480}}</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="unlocalizedProperties">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference key="dict.sortedKeys" ref="0"/>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
</object>
|
||||
<nil key="activeLocalization"/>
|
||||
<object class="NSMutableDictionary" key="localizations">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference key="dict.sortedKeys" ref="0"/>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
</object>
|
||||
<nil key="sourceID"/>
|
||||
<int key="maxID">16</int>
|
||||
</object>
|
||||
<object class="IBClassDescriber" key="IBDocument.Classes">
|
||||
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">RootViewController</string>
|
||||
<string key="superclassName">UITableViewController</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBProjectSource</string>
|
||||
<string key="minorKey">Classes/RootViewController.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">UIWindow</string>
|
||||
<string key="superclassName">UIView</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBUserSource</string>
|
||||
<string key="minorKey"/>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">iPhoneExampleAppDelegate</string>
|
||||
<string key="superclassName">NSObject</string>
|
||||
<object class="NSMutableDictionary" key="outlets">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSArray" key="dict.sortedKeys">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>navigationController</string>
|
||||
<string>window</string>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>UINavigationController</string>
|
||||
<string>UIWindow</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSArray" key="dict.sortedKeys">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>navigationController</string>
|
||||
<string>window</string>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBToOneOutletInfo">
|
||||
<string key="name">navigationController</string>
|
||||
<string key="candidateClassName">UINavigationController</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo">
|
||||
<string key="name">window</string>
|
||||
<string key="candidateClassName">UIWindow</string>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBProjectSource</string>
|
||||
<string key="minorKey">Classes/iPhoneExampleAppDelegate.h</string>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSError.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">UIKit.framework/Headers/UIAccessibility.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">UIKit.framework/Headers/UINibLoading.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="48103097">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">UIKit.framework/Headers/UIResponder.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">UIApplication</string>
|
||||
<string key="superclassName">UIResponder</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">UIKit.framework/Headers/UIApplication.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">UIBarButtonItem</string>
|
||||
<string key="superclassName">UIBarItem</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">UIKit.framework/Headers/UIBarButtonItem.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">UIBarItem</string>
|
||||
<string key="superclassName">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">UIKit.framework/Headers/UIBarItem.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">UINavigationBar</string>
|
||||
<string key="superclassName">UIView</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="193736137">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">UIKit.framework/Headers/UINavigationBar.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">UINavigationController</string>
|
||||
<string key="superclassName">UIViewController</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="720195805">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">UIKit.framework/Headers/UINavigationController.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">UINavigationItem</string>
|
||||
<string key="superclassName">NSObject</string>
|
||||
<reference key="sourceIdentifier" ref="193736137"/>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">UIResponder</string>
|
||||
<string key="superclassName">NSObject</string>
|
||||
<reference key="sourceIdentifier" ref="48103097"/>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">UISearchBar</string>
|
||||
<string key="superclassName">UIView</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">UIKit.framework/Headers/UISearchBar.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">UISearchDisplayController</string>
|
||||
<string key="superclassName">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">UIKit.framework/Headers/UISearchDisplayController.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">UITableViewController</string>
|
||||
<string key="superclassName">UIViewController</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">UIKit.framework/Headers/UITableViewController.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">UIView</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">UIKit.framework/Headers/UITextField.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">UIView</string>
|
||||
<string key="superclassName">UIResponder</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">UIKit.framework/Headers/UIView.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">UIViewController</string>
|
||||
<reference key="sourceIdentifier" ref="720195805"/>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">UIViewController</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">UIKit.framework/Headers/UIPopoverController.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">UIViewController</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">UIKit.framework/Headers/UISplitViewController.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">UIViewController</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">UIKit.framework/Headers/UITabBarController.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">UIViewController</string>
|
||||
<string key="superclassName">UIResponder</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">UIKit.framework/Headers/UIViewController.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">UIWindow</string>
|
||||
<string key="superclassName">UIView</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">UIKit.framework/Headers/UIWindow.h</string>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<int key="IBDocument.localizationMode">0</int>
|
||||
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
|
||||
<integer value="1024" key="NS.object.0"/>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
|
||||
<integer value="3100" key="NS.object.0"/>
|
||||
</object>
|
||||
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
|
||||
<string key="IBDocument.LastKnownRelativeProjectPath">iPhoneExample.xcodeproj</string>
|
||||
<int key="IBDocument.defaultPropertyAccessControl">3</int>
|
||||
<string key="IBCocoaTouchPluginVersion">112</string>
|
||||
</data>
|
||||
</archive>
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 1.8 KiB |
+384
@@ -0,0 +1,384 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">
|
||||
<data>
|
||||
<int key="IBDocument.SystemTarget">784</int>
|
||||
<string key="IBDocument.SystemVersion">10D541</string>
|
||||
<string key="IBDocument.InterfaceBuilderVersion">760</string>
|
||||
<string key="IBDocument.AppKitVersion">1038.29</string>
|
||||
<string key="IBDocument.HIToolboxVersion">460.00</string>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string key="NS.object.0">81</string>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<integer value="2"/>
|
||||
</object>
|
||||
<object class="NSArray" key="IBDocument.PluginDependencies">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="IBDocument.Metadata">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSArray" key="dict.sortedKeys" id="0">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBProxyObject" id="841351856">
|
||||
<string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
</object>
|
||||
<object class="IBProxyObject" id="371349661">
|
||||
<string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
</object>
|
||||
<object class="IBUITableView" id="709618507">
|
||||
<reference key="NSNextResponder"/>
|
||||
<int key="NSvFlags">274</int>
|
||||
<string key="NSFrameSize">{320, 247}</string>
|
||||
<reference key="NSSuperview"/>
|
||||
<object class="NSColor" key="IBUIBackgroundColor">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MQA</bytes>
|
||||
</object>
|
||||
<bool key="IBUIOpaque">NO</bool>
|
||||
<bool key="IBUIClipsSubviews">YES</bool>
|
||||
<bool key="IBUIClearsContextBeforeDrawing">NO</bool>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
<bool key="IBUIBouncesZoom">NO</bool>
|
||||
<int key="IBUISeparatorStyle">1</int>
|
||||
<int key="IBUISectionIndexMinimumDisplayRowCount">0</int>
|
||||
<bool key="IBUIShowsSelectionImmediatelyOnTouchBegin">YES</bool>
|
||||
<float key="IBUIRowHeight">44</float>
|
||||
<float key="IBUISectionHeaderHeight">22</float>
|
||||
<float key="IBUISectionFooterHeight">22</float>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBObjectContainer" key="IBDocument.Objects">
|
||||
<object class="NSMutableArray" key="connectionRecords">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchOutletConnection" key="connection">
|
||||
<string key="label">view</string>
|
||||
<reference key="source" ref="841351856"/>
|
||||
<reference key="destination" ref="709618507"/>
|
||||
</object>
|
||||
<int key="connectionID">3</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchOutletConnection" key="connection">
|
||||
<string key="label">dataSource</string>
|
||||
<reference key="source" ref="709618507"/>
|
||||
<reference key="destination" ref="841351856"/>
|
||||
</object>
|
||||
<int key="connectionID">4</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchOutletConnection" key="connection">
|
||||
<string key="label">delegate</string>
|
||||
<reference key="source" ref="709618507"/>
|
||||
<reference key="destination" ref="841351856"/>
|
||||
</object>
|
||||
<int key="connectionID">5</int>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBMutableOrderedSet" key="objectRecords">
|
||||
<object class="NSArray" key="orderedObjects">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">0</int>
|
||||
<reference key="object" ref="0"/>
|
||||
<reference key="children" ref="1000"/>
|
||||
<nil key="parent"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-1</int>
|
||||
<reference key="object" ref="841351856"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
<string key="objectName">File's Owner</string>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-2</int>
|
||||
<reference key="object" ref="371349661"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">2</int>
|
||||
<reference key="object" ref="709618507"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="flattenedProperties">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSArray" key="dict.sortedKeys">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>-1.CustomClassName</string>
|
||||
<string>-2.CustomClassName</string>
|
||||
<string>2.IBEditorWindowLastContentRect</string>
|
||||
<string>2.IBPluginDependency</string>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>RootViewController</string>
|
||||
<string>UIResponder</string>
|
||||
<string>{{144, 609}, {320, 247}}</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="unlocalizedProperties">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference key="dict.sortedKeys" ref="0"/>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
</object>
|
||||
<nil key="activeLocalization"/>
|
||||
<object class="NSMutableDictionary" key="localizations">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference key="dict.sortedKeys" ref="0"/>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
</object>
|
||||
<nil key="sourceID"/>
|
||||
<int key="maxID">5</int>
|
||||
</object>
|
||||
<object class="IBClassDescriber" key="IBDocument.Classes">
|
||||
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">RootViewController</string>
|
||||
<string key="superclassName">UITableViewController</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBProjectSource</string>
|
||||
<string key="minorKey">Classes/RootViewController.h</string>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSError.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSNetServices.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSPort.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSStream.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSXMLParser.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">UIKit.framework/Headers/UIAccessibility.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">UIKit.framework/Headers/UINibLoading.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="654420027">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">UIKit.framework/Headers/UIResponder.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">UIResponder</string>
|
||||
<string key="superclassName">NSObject</string>
|
||||
<reference key="sourceIdentifier" ref="654420027"/>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">UIScrollView</string>
|
||||
<string key="superclassName">UIView</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">UIKit.framework/Headers/UIScrollView.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">UISearchBar</string>
|
||||
<string key="superclassName">UIView</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">UIKit.framework/Headers/UISearchBar.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">UISearchDisplayController</string>
|
||||
<string key="superclassName">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">UIKit.framework/Headers/UISearchDisplayController.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">UITableView</string>
|
||||
<string key="superclassName">UIScrollView</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">UIKit.framework/Headers/UITableView.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">UITableViewController</string>
|
||||
<string key="superclassName">UIViewController</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">UIKit.framework/Headers/UITableViewController.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">UIView</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">UIKit.framework/Headers/UITextField.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">UIView</string>
|
||||
<string key="superclassName">UIResponder</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">UIKit.framework/Headers/UIView.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">UIViewController</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">UIKit.framework/Headers/UINavigationController.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">UIViewController</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">UIKit.framework/Headers/UITabBarController.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">UIViewController</string>
|
||||
<string key="superclassName">UIResponder</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">UIKit.framework/Headers/UIViewController.h</string>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<int key="IBDocument.localizationMode">0</int>
|
||||
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
|
||||
<integer value="784" key="NS.object.0"/>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
|
||||
<integer value="3100" key="NS.object.0"/>
|
||||
</object>
|
||||
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
|
||||
<string key="IBDocument.LastKnownRelativeProjectPath">iPhoneExample.xcodeproj</string>
|
||||
<int key="IBDocument.defaultPropertyAccessControl">3</int>
|
||||
<string key="IBCocoaTouchPluginVersion">81</string>
|
||||
</data>
|
||||
</archive>
|
||||
Vendored
+17
@@ -0,0 +1,17 @@
|
||||
//
|
||||
// RootViewControllerTests.h
|
||||
// iPhoneExample
|
||||
//
|
||||
// Created by Erik Doernenburg on 20/07/10.
|
||||
// Copyright 2010 Mulle Kybernetik. All rights reserved.
|
||||
//
|
||||
// See Also: http://developer.apple.com/iphone/library/documentation/Xcode/Conceptual/iphone_development/135-Unit_Testing_Applications/unit_testing_applications.html
|
||||
|
||||
|
||||
#import <SenTestingKit/SenTestingKit.h>
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
|
||||
@interface RootViewControllerTests : SenTestCase
|
||||
|
||||
@end
|
||||
Vendored
+75
@@ -0,0 +1,75 @@
|
||||
//
|
||||
// RootViewControllerTests.m
|
||||
// iPhoneExample
|
||||
//
|
||||
// Created by Erik Doernenburg on 20/07/10.
|
||||
// Copyright 2010 Mulle Kybernetik. All rights reserved.
|
||||
//
|
||||
|
||||
#import <OCMock/OCMock.h>
|
||||
#import "RootViewControllerTests.h"
|
||||
#import "RootViewController.h"
|
||||
|
||||
/*
|
||||
|
||||
A simple test suite to test the RootViewController. It needs to be run as an "application test" as described
|
||||
in the following Apple document. This project is set up following the steps outlined in the document.
|
||||
|
||||
http://developer.apple.com/iphone/library/documentation/xcode/conceptual/iphone_development/135-Unit_Testing_Applications/unit_testing_applications.html
|
||||
|
||||
The first test could be run as a "logic test" but the second test invokes functionality that sets a cell
|
||||
label, which requires instantiation of a font, and that is not possible outside the device/simulator. The
|
||||
following discussion has a bit more detail:
|
||||
|
||||
http://stackoverflow.com/questions/1689586/why-does-instantiating-a-uifont-in-an-iphone-unit-test-cause-a-crash
|
||||
|
||||
As far as I am aware you cannot run the tests in the simulator; at least when I try to run the tests in the
|
||||
simulator, the app just launches but there is no output in the debugger window that would indicate the tests
|
||||
were run.
|
||||
|
||||
The first test should pass but the second test should fail, and you should be able to see something like the
|
||||
following in your device log:
|
||||
|
||||
Test Suite '/var/mobile/Applications/4CEA4E8D-069E-4363-A4B5-E01AF01176CE/iPhoneExample.app/iPhoneExampleTests.octest(Tests)' started at 2010-07-28 10:33:45 +1000
|
||||
Test Suite 'RootViewControllerTests' started at 2010-07-28 10:33:45 +1000
|
||||
Test Case '-[RootViewControllerTests testControllerReturnsCorrectNumberOfRows]' passed (0.000 seconds).
|
||||
Unknown.m:0: error: -[RootViewControllerTests testControllerSetsUpCellCorrectly] : OCMockObject[UITableView]: unexpected method invoked: dequeueReusableCellWithIdentifier:@"Cell"
|
||||
expected: dequeueReusableCellWithIdentifier:@"HelloWorldCell"
|
||||
Test Case '-[RootViewControllerTests testControllerSetsUpCellCorrectly]' failed (0.002 seconds).
|
||||
Test Suite 'RootViewControllerTests' finished at 2010-07-28 10:33:45 +1000.
|
||||
Executed 2 tests, with 1 failure (1 unexpected) in 0.002 (0.006) seconds
|
||||
|
||||
The failure occurs when then RootViewController sends the dequeueReusableCellWithIdentifier: method to the mock
|
||||
table view. The mock view is set up to expect that method call with the string "HelloWorldCell" as an argument,
|
||||
but the RootViewController calls the method with just "Cell" as an argument. When you change the identifier in
|
||||
line 75 of the RootViewController to "HelloWorldCell" and re-run the tests, they should both pass.
|
||||
|
||||
*/
|
||||
|
||||
|
||||
@implementation RootViewControllerTests
|
||||
|
||||
- (void)testControllerReturnsCorrectNumberOfRows
|
||||
{
|
||||
RootViewController *controller = [[[RootViewController alloc] initWithStyle:UITableViewStylePlain] autorelease];
|
||||
|
||||
STAssertEquals(1, [controller tableView:nil numberOfRowsInSection:0], @"Should have returned correct number of rows.");
|
||||
}
|
||||
|
||||
|
||||
- (void)testControllerSetsUpCellCorrectly
|
||||
{
|
||||
RootViewController *controller = [[[RootViewController alloc] initWithStyle:UITableViewStylePlain] autorelease];
|
||||
id mockTableView = [OCMockObject mockForClass:[UITableView class]];
|
||||
[[[mockTableView expect] andReturn:nil] dequeueReusableCellWithIdentifier:@"HelloWorldCell"];
|
||||
|
||||
UITableViewCell *cell = [controller tableView:mockTableView cellForRowAtIndexPath:nil];
|
||||
|
||||
STAssertNotNil(cell, @"Should have returned a cell");
|
||||
STAssertEqualObjects(@"Hello World!", cell.textLabel.text, @"Should have set label");
|
||||
[mockTableView verify];
|
||||
}
|
||||
|
||||
|
||||
|
||||
@end
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleDisplayName</key>
|
||||
<string>${PRODUCT_NAME}</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string>OCMockLogo.png</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.mulle-kybernetik.${PRODUCT_NAME:rfc1034identifier}</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>${PRODUCT_NAME}</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1.0</string>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
<true/>
|
||||
<key>NSMainNibFile</key>
|
||||
<string>MainWindow</string>
|
||||
</dict>
|
||||
</plist>
|
||||
Vendor/facebook-ios-sdk/vendor/OCMock/Examples/iPhoneExample/iPhoneExample.xcodeproj/project.pbxproj
Vendored
Executable
+536
@@ -0,0 +1,536 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 46;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
036EF43D11F5BE7700A41604 /* RootViewControllerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 03E41EB011F5B0D100147791 /* RootViewControllerTests.m */; };
|
||||
036EF43E11F5BE7900A41604 /* RootViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 28C286E00D94DF7D0034E888 /* RootViewController.m */; };
|
||||
036EF43F11F5BE7900A41604 /* iPhoneExampleAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D3623250D0F684500981E51 /* iPhoneExampleAppDelegate.m */; };
|
||||
036EF4CC11F5D67600A41604 /* libOCMock.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 03E41EBE11F5B13F00147791 /* libOCMock.a */; };
|
||||
03B85C4E11FFAF1100347AAD /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 28AD735F0D9D9599002E5188 /* MainWindow.xib */; };
|
||||
03B85C4F11FFAF1100347AAD /* RootViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 28F335F01007B36200424DE2 /* RootViewController.xib */; };
|
||||
03B85C5111FFAF1100347AAD /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; };
|
||||
03B85C6311FFB03900347AAD /* iPhoneExampleTests.octest in Resources */ = {isa = PBXBuildFile; fileRef = 03E41F0811F5BE2F00147791 /* iPhoneExampleTests.octest */; };
|
||||
03B85C6B11FFB04A00347AAD /* OCMockLogo.png in Resources */ = {isa = PBXBuildFile; fileRef = 03B85C6A11FFB04A00347AAD /* OCMockLogo.png */; };
|
||||
03B85C6C11FFB04A00347AAD /* OCMockLogo.png in Resources */ = {isa = PBXBuildFile; fileRef = 03B85C6A11FFB04A00347AAD /* OCMockLogo.png */; };
|
||||
03B85CCF11FFB88E00347AAD /* iPhoneExampleAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D3623250D0F684500981E51 /* iPhoneExampleAppDelegate.m */; };
|
||||
03B85CD011FFB89000347AAD /* RootViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 28C286E00D94DF7D0034E888 /* RootViewController.m */; };
|
||||
03DE954B12F2FFB0003852B7 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03DE954A12F2FFB0003852B7 /* CoreGraphics.framework */; };
|
||||
03DE954D12F2FFB0003852B7 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03DE954C12F2FFB0003852B7 /* Foundation.framework */; };
|
||||
03DE954F12F2FFB0003852B7 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03DE954E12F2FFB0003852B7 /* UIKit.framework */; };
|
||||
1D3623260D0F684500981E51 /* iPhoneExampleAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D3623250D0F684500981E51 /* iPhoneExampleAppDelegate.m */; };
|
||||
1D60589B0D05DD56006BFB54 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; };
|
||||
28AD73600D9D9599002E5188 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 28AD735F0D9D9599002E5188 /* MainWindow.xib */; };
|
||||
28C286E10D94DF7D0034E888 /* RootViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 28C286E00D94DF7D0034E888 /* RootViewController.m */; };
|
||||
28F335F11007B36200424DE2 /* RootViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 28F335F01007B36200424DE2 /* RootViewController.xib */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
03B85C5E11FFB03100347AAD /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 03E41F0711F5BE2F00147791;
|
||||
remoteInfo = iPhoneExampleTests;
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
03B85C5B11FFAF1100347AAD /* iPhoneExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iPhoneExample.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
03B85C6A11FFB04A00347AAD /* OCMockLogo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = OCMockLogo.png; sourceTree = "<group>"; };
|
||||
03DE954A12F2FFB0003852B7 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
|
||||
03DE954C12F2FFB0003852B7 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
|
||||
03DE954E12F2FFB0003852B7 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
|
||||
03E41EAF11F5B0D100147791 /* RootViewControllerTests.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RootViewControllerTests.h; sourceTree = "<group>"; };
|
||||
03E41EB011F5B0D100147791 /* RootViewControllerTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RootViewControllerTests.m; sourceTree = "<group>"; };
|
||||
03E41EBE11F5B13F00147791 /* libOCMock.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libOCMock.a; path = Libraries/libOCMock.a; sourceTree = "<group>"; };
|
||||
03E41F0811F5BE2F00147791 /* iPhoneExampleTests.octest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = iPhoneExampleTests.octest; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
03E41F0911F5BE2F00147791 /* iPhoneExampleTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "iPhoneExampleTests-Info.plist"; sourceTree = "<group>"; };
|
||||
1D3623240D0F684500981E51 /* iPhoneExampleAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iPhoneExampleAppDelegate.h; sourceTree = "<group>"; };
|
||||
1D3623250D0F684500981E51 /* iPhoneExampleAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = iPhoneExampleAppDelegate.m; sourceTree = "<group>"; };
|
||||
1D6058910D05DD3D006BFB54 /* iPhoneExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iPhoneExample.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
28A0AAE50D9B0CCF005BE974 /* iPhoneExample_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iPhoneExample_Prefix.pch; sourceTree = "<group>"; };
|
||||
28AD735F0D9D9599002E5188 /* MainWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MainWindow.xib; sourceTree = "<group>"; };
|
||||
28C286DF0D94DF7D0034E888 /* RootViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RootViewController.h; sourceTree = "<group>"; };
|
||||
28C286E00D94DF7D0034E888 /* RootViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RootViewController.m; sourceTree = "<group>"; };
|
||||
28F335F01007B36200424DE2 /* RootViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = RootViewController.xib; sourceTree = "<group>"; };
|
||||
29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
||||
8D1107310486CEB800E47090 /* iPhoneExample-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "iPhoneExample-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
03B85C5411FFAF1100347AAD /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
03DE954B12F2FFB0003852B7 /* CoreGraphics.framework in Frameworks */,
|
||||
03DE954D12F2FFB0003852B7 /* Foundation.framework in Frameworks */,
|
||||
03DE954F12F2FFB0003852B7 /* UIKit.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
03E41F0511F5BE2F00147791 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
036EF4CC11F5D67600A41604 /* libOCMock.a in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
1D60588F0D05DD3D006BFB54 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
03E41E8311F5AF0400147791 /* Tests */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
03E41EAF11F5B0D100147791 /* RootViewControllerTests.h */,
|
||||
03E41EB011F5B0D100147791 /* RootViewControllerTests.m */,
|
||||
);
|
||||
path = Tests;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
03E41EBC11F5B12100147791 /* Libraries */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
03E41EBE11F5B13F00147791 /* libOCMock.a */,
|
||||
);
|
||||
name = Libraries;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
080E96DDFE201D6D7F000001 /* Classes */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
28C286DF0D94DF7D0034E888 /* RootViewController.h */,
|
||||
28C286E00D94DF7D0034E888 /* RootViewController.m */,
|
||||
1D3623240D0F684500981E51 /* iPhoneExampleAppDelegate.h */,
|
||||
1D3623250D0F684500981E51 /* iPhoneExampleAppDelegate.m */,
|
||||
);
|
||||
path = Classes;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
19C28FACFE9D520D11CA2CBB /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1D6058910D05DD3D006BFB54 /* iPhoneExample.app */,
|
||||
03E41F0811F5BE2F00147791 /* iPhoneExampleTests.octest */,
|
||||
03B85C5B11FFAF1100347AAD /* iPhoneExample.app */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
29B97314FDCFA39411CA2CEA /* CustomTemplate */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
080E96DDFE201D6D7F000001 /* Classes */,
|
||||
03E41E8311F5AF0400147791 /* Tests */,
|
||||
29B97315FDCFA39411CA2CEA /* Other Sources */,
|
||||
29B97317FDCFA39411CA2CEA /* Resources */,
|
||||
03E41EBC11F5B12100147791 /* Libraries */,
|
||||
29B97323FDCFA39411CA2CEA /* Frameworks */,
|
||||
19C28FACFE9D520D11CA2CBB /* Products */,
|
||||
);
|
||||
name = CustomTemplate;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
29B97315FDCFA39411CA2CEA /* Other Sources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
28A0AAE50D9B0CCF005BE974 /* iPhoneExample_Prefix.pch */,
|
||||
29B97316FDCFA39411CA2CEA /* main.m */,
|
||||
);
|
||||
name = "Other Sources";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
29B97317FDCFA39411CA2CEA /* Resources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
28F335F01007B36200424DE2 /* RootViewController.xib */,
|
||||
28AD735F0D9D9599002E5188 /* MainWindow.xib */,
|
||||
8D1107310486CEB800E47090 /* iPhoneExample-Info.plist */,
|
||||
03E41F0911F5BE2F00147791 /* iPhoneExampleTests-Info.plist */,
|
||||
03B85C6A11FFB04A00347AAD /* OCMockLogo.png */,
|
||||
);
|
||||
name = Resources;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
29B97323FDCFA39411CA2CEA /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
03DE954A12F2FFB0003852B7 /* CoreGraphics.framework */,
|
||||
03DE954C12F2FFB0003852B7 /* Foundation.framework */,
|
||||
03DE954E12F2FFB0003852B7 /* UIKit.framework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
03B85C4C11FFAF1100347AAD /* iPhoneExampleTesting */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 03B85C5811FFAF1100347AAD /* Build configuration list for PBXNativeTarget "iPhoneExampleTesting" */;
|
||||
buildPhases = (
|
||||
03B85C4D11FFAF1100347AAD /* Resources */,
|
||||
03B85C5011FFAF1100347AAD /* Sources */,
|
||||
03B85C5411FFAF1100347AAD /* Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
03B85C5F11FFB03100347AAD /* PBXTargetDependency */,
|
||||
);
|
||||
name = iPhoneExampleTesting;
|
||||
productName = iPhoneExample;
|
||||
productReference = 03B85C5B11FFAF1100347AAD /* iPhoneExample.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
03E41F0711F5BE2F00147791 /* iPhoneExampleTests */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 03E41F0F11F5BE3000147791 /* Build configuration list for PBXNativeTarget "iPhoneExampleTests" */;
|
||||
buildPhases = (
|
||||
03E41F0311F5BE2F00147791 /* Resources */,
|
||||
03E41F0411F5BE2F00147791 /* Sources */,
|
||||
03E41F0511F5BE2F00147791 /* Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = iPhoneExampleTests;
|
||||
productName = iPhoneExampleTests;
|
||||
productReference = 03E41F0811F5BE2F00147791 /* iPhoneExampleTests.octest */;
|
||||
productType = "com.apple.product-type.bundle";
|
||||
};
|
||||
1D6058900D05DD3D006BFB54 /* iPhoneExample */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "iPhoneExample" */;
|
||||
buildPhases = (
|
||||
1D60588D0D05DD3D006BFB54 /* Resources */,
|
||||
1D60588E0D05DD3D006BFB54 /* Sources */,
|
||||
1D60588F0D05DD3D006BFB54 /* Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = iPhoneExample;
|
||||
productName = iPhoneExample;
|
||||
productReference = 1D6058910D05DD3D006BFB54 /* iPhoneExample.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
29B97313FDCFA39411CA2CEA /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
ORGANIZATIONNAME = "Mulle Kybernetik";
|
||||
};
|
||||
buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "iPhoneExample" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 1;
|
||||
knownRegions = (
|
||||
English,
|
||||
Japanese,
|
||||
French,
|
||||
German,
|
||||
en,
|
||||
);
|
||||
mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
1D6058900D05DD3D006BFB54 /* iPhoneExample */,
|
||||
03E41F0711F5BE2F00147791 /* iPhoneExampleTests */,
|
||||
03B85C4C11FFAF1100347AAD /* iPhoneExampleTesting */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
03B85C4D11FFAF1100347AAD /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
03B85C6C11FFB04A00347AAD /* OCMockLogo.png in Resources */,
|
||||
03B85C4E11FFAF1100347AAD /* MainWindow.xib in Resources */,
|
||||
03B85C4F11FFAF1100347AAD /* RootViewController.xib in Resources */,
|
||||
03B85C6311FFB03900347AAD /* iPhoneExampleTests.octest in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
03E41F0311F5BE2F00147791 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
1D60588D0D05DD3D006BFB54 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
28AD73600D9D9599002E5188 /* MainWindow.xib in Resources */,
|
||||
28F335F11007B36200424DE2 /* RootViewController.xib in Resources */,
|
||||
03B85C6B11FFB04A00347AAD /* OCMockLogo.png in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
03B85C5011FFAF1100347AAD /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
03B85C5111FFAF1100347AAD /* main.m in Sources */,
|
||||
03B85CCF11FFB88E00347AAD /* iPhoneExampleAppDelegate.m in Sources */,
|
||||
03B85CD011FFB89000347AAD /* RootViewController.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
03E41F0411F5BE2F00147791 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
036EF43D11F5BE7700A41604 /* RootViewControllerTests.m in Sources */,
|
||||
036EF43E11F5BE7900A41604 /* RootViewController.m in Sources */,
|
||||
036EF43F11F5BE7900A41604 /* iPhoneExampleAppDelegate.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
1D60588E0D05DD3D006BFB54 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
1D60589B0D05DD56006BFB54 /* main.m in Sources */,
|
||||
1D3623260D0F684500981E51 /* iPhoneExampleAppDelegate.m in Sources */,
|
||||
28C286E10D94DF7D0034E888 /* RootViewController.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXTargetDependency section */
|
||||
03B85C5F11FFB03100347AAD /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = 03E41F0711F5BE2F00147791 /* iPhoneExampleTests */;
|
||||
targetProxy = 03B85C5E11FFB03100347AAD /* PBXContainerItemProxy */;
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
03B85C5911FFAF1100347AAD /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = iPhoneExample_Prefix.pch;
|
||||
INFOPLIST_FILE = "iPhoneExample-Info.plist";
|
||||
PRODUCT_NAME = iPhoneExample;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
03B85C5A11FFAF1100347AAD /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
COPY_PHASE_STRIP = YES;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = iPhoneExample_Prefix.pch;
|
||||
INFOPLIST_FILE = "iPhoneExample-Info.plist";
|
||||
PRODUCT_NAME = iPhoneExample;
|
||||
VALIDATE_PRODUCT = YES;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
03E41F0D11F5BE3000147791 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"\"$(SDKROOT)/Developer/Library/Frameworks\"",
|
||||
"\"$(DEVELOPER_LIBRARY_DIR)/Frameworks\"",
|
||||
);
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_ENABLE_FIX_AND_CONTINUE = NO;
|
||||
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/Libraries/Headers";
|
||||
INFOPLIST_FILE = "iPhoneExampleTests-Info.plist";
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"$(PROJECT_DIR)/Libraries\"",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-ObjC",
|
||||
"-force_load",
|
||||
"$(PROJECT_DIR)/Libraries/libOCMock.a",
|
||||
"-framework",
|
||||
Foundation,
|
||||
"-framework",
|
||||
SenTestingKit,
|
||||
"-framework",
|
||||
UIKit,
|
||||
);
|
||||
PREBINDING = NO;
|
||||
PRODUCT_NAME = iPhoneExampleTests;
|
||||
WRAPPER_EXTENSION = octest;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
03E41F0E11F5BE3000147791 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
|
||||
COPY_PHASE_STRIP = YES;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"\"$(SDKROOT)/Developer/Library/Frameworks\"",
|
||||
"\"$(DEVELOPER_LIBRARY_DIR)/Frameworks\"",
|
||||
);
|
||||
GCC_ENABLE_FIX_AND_CONTINUE = NO;
|
||||
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
|
||||
HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/Libraries/Headers";
|
||||
INFOPLIST_FILE = "iPhoneExampleTests-Info.plist";
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"$(PROJECT_DIR)/Libraries\"",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"-ObjC",
|
||||
"-force_load",
|
||||
"$(PROJECT_DIR)/Libraries/libOCMock.a",
|
||||
"-framework",
|
||||
Foundation,
|
||||
"-framework",
|
||||
SenTestingKit,
|
||||
"-framework",
|
||||
UIKit,
|
||||
);
|
||||
PREBINDING = NO;
|
||||
PRODUCT_NAME = iPhoneExampleTests;
|
||||
WRAPPER_EXTENSION = octest;
|
||||
ZERO_LINK = NO;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
1D6058940D05DD3E006BFB54 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = iPhoneExample_Prefix.pch;
|
||||
INFOPLIST_FILE = "iPhoneExample-Info.plist";
|
||||
PRODUCT_NAME = iPhoneExample;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
1D6058950D05DD3E006BFB54 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
COPY_PHASE_STRIP = YES;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = iPhoneExample_Prefix.pch;
|
||||
INFOPLIST_FILE = "iPhoneExample-Info.plist";
|
||||
PRODUCT_NAME = iPhoneExample;
|
||||
VALIDATE_PRODUCT = YES;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
C01FCF4F08A954540054247B /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
GCC_C_LANGUAGE_STANDARD = c99;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 3.2;
|
||||
PREBINDING = NO;
|
||||
SDKROOT = iphoneos;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
C01FCF5008A954540054247B /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
GCC_C_LANGUAGE_STANDARD = c99;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 3.2;
|
||||
OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
|
||||
PREBINDING = NO;
|
||||
SDKROOT = iphoneos;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
03B85C5811FFAF1100347AAD /* Build configuration list for PBXNativeTarget "iPhoneExampleTesting" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
03B85C5911FFAF1100347AAD /* Debug */,
|
||||
03B85C5A11FFAF1100347AAD /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
03E41F0F11F5BE3000147791 /* Build configuration list for PBXNativeTarget "iPhoneExampleTests" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
03E41F0D11F5BE3000147791 /* Debug */,
|
||||
03E41F0E11F5BE3000147791 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "iPhoneExample" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
1D6058940D05DD3E006BFB54 /* Debug */,
|
||||
1D6058950D05DD3E006BFB54 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
C01FCF4E08A954540054247B /* Build configuration list for PBXProject "iPhoneExample" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
C01FCF4F08A954540054247B /* Debug */,
|
||||
C01FCF5008A954540054247B /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;
|
||||
}
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.yourcompany.${PRODUCT_NAME:rfc1034identifier}</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>BNDL</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1.0</string>
|
||||
</dict>
|
||||
</plist>
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
//
|
||||
// Prefix header for all source files of the 'iPhoneExample' target in the 'iPhoneExample' project
|
||||
//
|
||||
#import <Availability.h>
|
||||
|
||||
#ifndef __IPHONE_3_0
|
||||
#warning "This project uses features only available in iPhone SDK 3.0 and later."
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef __OBJC__
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <UIKit/UIKit.h>
|
||||
#endif
|
||||
@@ -0,0 +1,17 @@
|
||||
//
|
||||
// main.m
|
||||
// iPhoneExample
|
||||
//
|
||||
// Created by Erik Doernenburg on 20/07/10.
|
||||
// Copyright Mulle Kybernetik 2010. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
|
||||
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
|
||||
int retVal = UIApplicationMain(argc, argv, nil, nil);
|
||||
[pool release];
|
||||
return retVal;
|
||||
}
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
OCMock
|
||||
======
|
||||
|
||||
OCMock is an Objective-C implementation of mock objects.
|
||||
|
||||
Github is used to store and manage the source code.
|
||||
|
||||
For downloads, documentation, and support please visit [ocmock.org][].
|
||||
|
||||
[ocmock.org]: http://ocmock.org/
|
||||
@@ -0,0 +1,276 @@
|
||||
Chronological listing of changes. More detail is usually found in the Git commit messages
|
||||
and/or the pull requests.
|
||||
|
||||
2013-03-14
|
||||
|
||||
* Stubbing an object creation method now handles retain count correctly.
|
||||
* Added support for forwardingTagetForSelector: (thanks to Jeff Watkins)
|
||||
|
||||
|
||||
2013-03-12
|
||||
|
||||
* Added class method mocking capability to class mock objects
|
||||
* Added implementation of isKindOfClass: to class mock objects
|
||||
|
||||
|
||||
2013-02-20
|
||||
|
||||
* Allowing to set non-object pass-by-ref args (thanks to Glenn L. Austin)
|
||||
|
||||
|
||||
2012-08-23
|
||||
|
||||
* Calling a previously expected method on a partial mock is no longer an error.
|
||||
|
||||
|
||||
2012-01-23
|
||||
|
||||
* Avoiding deprecated method to convert to a C string (thanks to Kushal Pisavadia)
|
||||
|
||||
|
||||
2011-11-03
|
||||
|
||||
* Recreated project from scratch with new conventions in Xcode 4.2 (thanks to Matt Di Pasquale)
|
||||
|
||||
|
||||
2011-09-26
|
||||
|
||||
* Arguments only need to be equal, don't have to have same class
|
||||
|
||||
|
||||
|
||||
Chronological listing of changes in the original Subversion code repository. If a particular
|
||||
SVN revision has no entry, that check-in did not involve any code or feature changes.
|
||||
|
||||
2011-02-15 (r74)
|
||||
|
||||
* Added feature to explicitly disable a partial mock
|
||||
|
||||
|
||||
2011-01-28 (r71)
|
||||
|
||||
* Updated example to work with iOS 4.2.
|
||||
|
||||
|
||||
2010-08-21 (r69)
|
||||
|
||||
* Added feature to explicitly reject methods on nice mocks (thanks to Heath Borders)
|
||||
|
||||
|
||||
2010-08-20 (r68)
|
||||
|
||||
* Added feature to forward method to real object from partial mock (thanks to Marco Sandrini)
|
||||
|
||||
|
||||
2010-08-02 (r67)
|
||||
|
||||
* Fix to allow block arguments (thanks to Justin DeWind)
|
||||
|
||||
|
||||
2010-07-28 (r62-r65)
|
||||
|
||||
* Now building OCMock library for simulator (i386) and device (armv7)
|
||||
* Updated example to run tests on device
|
||||
* Changed OCMOCK_VALUE macro to be iOS compatible (thanks to Derek Clarkson)
|
||||
|
||||
|
||||
2010-07-21 (r61)
|
||||
|
||||
* Added a new target to build a static library for iOS use
|
||||
* Created an example showing how to use OCMock in an iOS project
|
||||
|
||||
|
||||
2010-05-19 (r57)
|
||||
|
||||
* Various small clean-ups; no change in functionality (thanks to Jonah Williams)
|
||||
|
||||
|
||||
2010-04-18 (r56)
|
||||
|
||||
* Added block constraints and invocation handler (thanks to Justin DeWind)
|
||||
|
||||
|
||||
2009-10-16 (r55)
|
||||
|
||||
* Fixed broken test for array argument descciptions (Craig Beck)
|
||||
* Disambiguated mock table method name to avoid compiler warning
|
||||
* Renamed some variables to avoid warnings when using -Wshadow
|
||||
* Partial mocks are now deallocated as they should
|
||||
* Fixed problems that occured when using mocks as arguments
|
||||
|
||||
|
||||
2009-08-18 (r54)
|
||||
|
||||
* OnCall methods now have same signature as replaced ones.
|
||||
|
||||
|
||||
2009-08-14 (r53)
|
||||
|
||||
* Fixed possible retain bug (Daniel Eggert)
|
||||
|
||||
|
||||
2009-08-14 (r52)
|
||||
|
||||
* Added feature that allows to verify expectations are called in sequence.
|
||||
* Improved detection of unqualified method return type.
|
||||
|
||||
|
||||
2009-08-13 (r51)
|
||||
|
||||
* Fixed bug that caused crash when using method swizzling with void return type.
|
||||
|
||||
|
||||
2009-07-14 (r49)
|
||||
|
||||
* Added support for calling arbitrary methods when stubbed methods are invoked.
|
||||
|
||||
|
||||
2009-07-14 (r48)
|
||||
|
||||
* Added support for posting notifications (based on Jean-Francois Dontigny's code)
|
||||
|
||||
|
||||
2009-07-14 (r46)
|
||||
|
||||
* Fixed bug around complex type encodings (Jean-Francois Dontigny)
|
||||
|
||||
|
||||
2009-05-26 (r45)
|
||||
|
||||
* Partial mocks now work on object reference and self (thanks to Mike Mangino)
|
||||
|
||||
|
||||
2009-04-24 (r43)
|
||||
|
||||
* Added partial mocks (calls to the original object reference cannot be mocked)
|
||||
|
||||
|
||||
2009-04-17 (r42)
|
||||
|
||||
* Mock observers now handle user infos on notifications.
|
||||
|
||||
|
||||
2009-04-09 (r39)
|
||||
|
||||
* Added inital support for mock observers (loosely based on Dave Dribbin's idea)
|
||||
|
||||
|
||||
2009-04-08 (r38)
|
||||
|
||||
* Moved factory methods from OCMConstraint to OCMArg
|
||||
|
||||
|
||||
2009-03-13 (r37)
|
||||
|
||||
* Added pass by ref argument setters
|
||||
|
||||
|
||||
2009-03-11 (r34)
|
||||
|
||||
* Linked install name now uses @rpath (Dave Dribbin)
|
||||
|
||||
|
||||
2009-02-22 (r32)
|
||||
|
||||
* Added support for respondsToSelector (Dave Dribin)
|
||||
* Added constraint for any pointer
|
||||
* Now comparing selectors as strings (Dado Colussi)
|
||||
|
||||
|
||||
2008-07-07 (r28)
|
||||
|
||||
* Resetting invocation target in recorder to avoid retain cycles.
|
||||
|
||||
|
||||
2008-06-19 (r27)
|
||||
|
||||
* Added optional integration with hamcrest for constraints
|
||||
|
||||
|
||||
2008-05-08 (r24)
|
||||
|
||||
* Now building quad-fat; the 64-bit versions are somewhat experimental though
|
||||
|
||||
|
||||
2008-02-28 (r22)
|
||||
|
||||
* Using new functions to deal with protocols (Evan Doll)
|
||||
|
||||
|
||||
2007-11-22 (r20)
|
||||
|
||||
* Added support for void* parameters (Tuukka Norri)
|
||||
* Fixed a bug that could caused crashes when non-char const pointers were described
|
||||
|
||||
|
||||
2007-11-22 (r19)
|
||||
|
||||
* Fixed bug to allow mocking of methods with type qualifieres (Nikita Zhuk)
|
||||
|
||||
|
||||
2007-10-22 (r18)
|
||||
|
||||
* Added a simple constraint implementation.
|
||||
|
||||
|
||||
2007-06-04 (r15)
|
||||
|
||||
* Now re-throwing fail-fast exceptions, for unexpected invocations for example, when
|
||||
verify is called; in case the first throw is ignored by a framework.
|
||||
|
||||
|
||||
2007-04-23 (r14)
|
||||
|
||||
* Added nice mocks, i.e. mocks that don't raise on unknown methods (Mark Thomas)
|
||||
|
||||
* Fixed bug that prevented expectations after invocations (M. Scott Ford)
|
||||
|
||||
|
||||
2006-06-11 (r12)
|
||||
|
||||
* Added possibility to throw an exception, based on code by Justin DeWind
|
||||
|
||||
* Added Evan Doll's bugfix, which forwards conformsToProtocol: methods when necessary
|
||||
|
||||
* Added the ability to match struct arguments, based on code contributed by Daniel Eggert
|
||||
|
||||
* Better description of arguments, based on code contributed by Jeremy Higgs
|
||||
|
||||
* Added the ability to create multiple identical expectations on the mock object (Jeremy Higgs)
|
||||
|
||||
* Added the ability to mock out nil arguments (Jeremy Higgs)
|
||||
|
||||
|
||||
2005-12-11 (r11)
|
||||
|
||||
* Added slightly modified version of Jon Reid's contribution, which adds the possibility to stub
|
||||
primitive return values.
|
||||
|
||||
* Added Jon Reid's bugfix that prevents a crash when trying to stub an unknown method on a
|
||||
protocol.
|
||||
|
||||
|
||||
2005-10-03 (r10)
|
||||
|
||||
* Upgraded to build and run tests using the OCUnit that is now part of XCode.
|
||||
|
||||
|
||||
2005-10-03 (r9)
|
||||
|
||||
* Added XCdoe 2.1 project
|
||||
|
||||
|
||||
2005-02-16 (r8)
|
||||
|
||||
* Added Richard Clark's contribution, which provides support for scalar arguments.
|
||||
|
||||
|
||||
2005-02-13 (r7)
|
||||
|
||||
* Added support for mocking formal protocols
|
||||
|
||||
|
||||
2004-08-26 (r6)
|
||||
|
||||
* MockObject and Recorder now inherit from NSProxy.
|
||||
|
||||
Binary file not shown.
@@ -0,0 +1,15 @@
|
||||
|
||||
Copyright (c) 2004-2013 by Mulle Kybernetik. All rights reserved.
|
||||
|
||||
Permission to use, copy, modify and distribute this software and its documentation
|
||||
is hereby granted, provided that both the copyright notice and this permission
|
||||
notice appear in all copies of the software, derivative works or modified versions,
|
||||
and any portions thereof, and that both notices appear in supporting documentation,
|
||||
and that credit is given to Mulle Kybernetik in all documents and publicity
|
||||
pertaining to direct or indirect use of this code or its derivatives.
|
||||
|
||||
THIS IS EXPERIMENTAL SOFTWARE AND IT IS KNOWN TO HAVE BUGS, SOME OF WHICH MAY HAVE
|
||||
SERIOUS CONSEQUENCES. THE COPYRIGHT HOLDER ALLOWS FREE USE OF THIS SOFTWARE IN ITS
|
||||
"AS IS" CONDITION. THE COPYRIGHT HOLDER DISCLAIMS ANY LIABILITY OF ANY KIND FOR ANY
|
||||
DAMAGES WHATSOEVER RESULTING DIRECTLY OR INDIRECTLY FROM THE USE OF THIS SOFTWARE
|
||||
OR OF ANY DERIVATIVE WORK.
|
||||
+989
@@ -0,0 +1,989 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 46;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
030EF0B614632FD000B04273 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 030EF0B414632FD000B04273 /* InfoPlist.strings */; };
|
||||
030EF0C214632FD000B04273 /* SenTestingKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 030EF0C114632FD000B04273 /* SenTestingKit.framework */; };
|
||||
030EF0C614632FD000B04273 /* OCMock.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 030EF0A814632FD000B04273 /* OCMock.framework */; };
|
||||
030EF0CC14632FD000B04273 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 030EF0CA14632FD000B04273 /* InfoPlist.strings */; };
|
||||
033E1FF414FEF5E0004456B0 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 033E1FF314FEF5E0004456B0 /* Foundation.framework */; };
|
||||
033E1FF514FEF5FC004456B0 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 033E1FF314FEF5E0004456B0 /* Foundation.framework */; };
|
||||
033E1FF714FEF60C004456B0 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 033E1FF614FEF60C004456B0 /* Foundation.framework */; };
|
||||
0354D72016F23AF5001766BB /* OCMockObjectForwardingTargetTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 0354D71F16F23AF5001766BB /* OCMockObjectForwardingTargetTests.m */; };
|
||||
039F91C616EFB493006C3D70 /* OCMockObjectClassMethodMockingTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 039F91C516EFB493006C3D70 /* OCMockObjectClassMethodMockingTests.m */; };
|
||||
03AC5C1516DF9FA500D82ECD /* OCMockObjectPartialMocksTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 03AC5C1416DF9FA500D82ECD /* OCMockObjectPartialMocksTests.m */; };
|
||||
03B315AF146333BF0052CD09 /* NSInvocation+OCMAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 03B31585146333BF0052CD09 /* NSInvocation+OCMAdditions.h */; };
|
||||
03B315B0146333BF0052CD09 /* NSInvocation+OCMAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 03B31585146333BF0052CD09 /* NSInvocation+OCMAdditions.h */; };
|
||||
03B315B1146333BF0052CD09 /* NSInvocation+OCMAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 03B31586146333BF0052CD09 /* NSInvocation+OCMAdditions.m */; };
|
||||
03B315B3146333BF0052CD09 /* NSInvocation+OCMAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 03B31586146333BF0052CD09 /* NSInvocation+OCMAdditions.m */; };
|
||||
03B315B4146333BF0052CD09 /* NSMethodSignature+OCMAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 03B31587146333BF0052CD09 /* NSMethodSignature+OCMAdditions.h */; };
|
||||
03B315B5146333BF0052CD09 /* NSMethodSignature+OCMAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 03B31587146333BF0052CD09 /* NSMethodSignature+OCMAdditions.h */; };
|
||||
03B315B6146333BF0052CD09 /* NSMethodSignature+OCMAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 03B31588146333BF0052CD09 /* NSMethodSignature+OCMAdditions.m */; };
|
||||
03B315B8146333BF0052CD09 /* NSMethodSignature+OCMAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 03B31588146333BF0052CD09 /* NSMethodSignature+OCMAdditions.m */; };
|
||||
03B315B9146333BF0052CD09 /* NSNotificationCenter+OCMAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 03B31589146333BF0052CD09 /* NSNotificationCenter+OCMAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
03B315BA146333BF0052CD09 /* NSNotificationCenter+OCMAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 03B31589146333BF0052CD09 /* NSNotificationCenter+OCMAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
03B315BB146333BF0052CD09 /* NSNotificationCenter+OCMAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 03B3158A146333BF0052CD09 /* NSNotificationCenter+OCMAdditions.m */; };
|
||||
03B315BD146333BF0052CD09 /* NSNotificationCenter+OCMAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 03B3158A146333BF0052CD09 /* NSNotificationCenter+OCMAdditions.m */; };
|
||||
03B315BE146333BF0052CD09 /* OCClassMockObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 03B3158B146333BF0052CD09 /* OCClassMockObject.h */; };
|
||||
03B315BF146333BF0052CD09 /* OCClassMockObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 03B3158B146333BF0052CD09 /* OCClassMockObject.h */; };
|
||||
03B315C0146333BF0052CD09 /* OCClassMockObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 03B3158C146333BF0052CD09 /* OCClassMockObject.m */; };
|
||||
03B315C2146333BF0052CD09 /* OCClassMockObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 03B3158C146333BF0052CD09 /* OCClassMockObject.m */; };
|
||||
03B315C3146333BF0052CD09 /* OCMArg.h in Headers */ = {isa = PBXBuildFile; fileRef = 03B3158D146333BF0052CD09 /* OCMArg.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
03B315C4146333BF0052CD09 /* OCMArg.h in Headers */ = {isa = PBXBuildFile; fileRef = 03B3158D146333BF0052CD09 /* OCMArg.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
03B315C5146333BF0052CD09 /* OCMArg.m in Sources */ = {isa = PBXBuildFile; fileRef = 03B3158E146333BF0052CD09 /* OCMArg.m */; };
|
||||
03B315C7146333BF0052CD09 /* OCMArg.m in Sources */ = {isa = PBXBuildFile; fileRef = 03B3158E146333BF0052CD09 /* OCMArg.m */; };
|
||||
03B315C8146333BF0052CD09 /* OCMBlockCaller.h in Headers */ = {isa = PBXBuildFile; fileRef = 03B3158F146333BF0052CD09 /* OCMBlockCaller.h */; };
|
||||
03B315C9146333BF0052CD09 /* OCMBlockCaller.h in Headers */ = {isa = PBXBuildFile; fileRef = 03B3158F146333BF0052CD09 /* OCMBlockCaller.h */; };
|
||||
03B315CA146333BF0052CD09 /* OCMBlockCaller.m in Sources */ = {isa = PBXBuildFile; fileRef = 03B31590146333BF0052CD09 /* OCMBlockCaller.m */; };
|
||||
03B315CC146333BF0052CD09 /* OCMBlockCaller.m in Sources */ = {isa = PBXBuildFile; fileRef = 03B31590146333BF0052CD09 /* OCMBlockCaller.m */; };
|
||||
03B315CD146333BF0052CD09 /* OCMBoxedReturnValueProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 03B31591146333BF0052CD09 /* OCMBoxedReturnValueProvider.h */; };
|
||||
03B315CE146333BF0052CD09 /* OCMBoxedReturnValueProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 03B31591146333BF0052CD09 /* OCMBoxedReturnValueProvider.h */; };
|
||||
03B315CF146333BF0052CD09 /* OCMBoxedReturnValueProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 03B31592146333BF0052CD09 /* OCMBoxedReturnValueProvider.m */; };
|
||||
03B315D1146333BF0052CD09 /* OCMBoxedReturnValueProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 03B31592146333BF0052CD09 /* OCMBoxedReturnValueProvider.m */; };
|
||||
03B315D2146333BF0052CD09 /* OCMConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 03B31593146333BF0052CD09 /* OCMConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
03B315D3146333BF0052CD09 /* OCMConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 03B31593146333BF0052CD09 /* OCMConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
03B315D4146333BF0052CD09 /* OCMConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 03B31594146333BF0052CD09 /* OCMConstraint.m */; };
|
||||
03B315D6146333BF0052CD09 /* OCMConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 03B31594146333BF0052CD09 /* OCMConstraint.m */; };
|
||||
03B315D7146333BF0052CD09 /* OCMExceptionReturnValueProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 03B31595146333BF0052CD09 /* OCMExceptionReturnValueProvider.h */; };
|
||||
03B315D8146333BF0052CD09 /* OCMExceptionReturnValueProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 03B31595146333BF0052CD09 /* OCMExceptionReturnValueProvider.h */; };
|
||||
03B315D9146333BF0052CD09 /* OCMExceptionReturnValueProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 03B31596146333BF0052CD09 /* OCMExceptionReturnValueProvider.m */; };
|
||||
03B315DB146333BF0052CD09 /* OCMExceptionReturnValueProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 03B31596146333BF0052CD09 /* OCMExceptionReturnValueProvider.m */; };
|
||||
03B315DC146333BF0052CD09 /* OCMIndirectReturnValueProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 03B31597146333BF0052CD09 /* OCMIndirectReturnValueProvider.h */; };
|
||||
03B315DD146333BF0052CD09 /* OCMIndirectReturnValueProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 03B31597146333BF0052CD09 /* OCMIndirectReturnValueProvider.h */; };
|
||||
03B315DE146333BF0052CD09 /* OCMIndirectReturnValueProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 03B31598146333BF0052CD09 /* OCMIndirectReturnValueProvider.m */; };
|
||||
03B315E0146333BF0052CD09 /* OCMIndirectReturnValueProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 03B31598146333BF0052CD09 /* OCMIndirectReturnValueProvider.m */; };
|
||||
03B315E1146333BF0052CD09 /* OCMNotificationPoster.h in Headers */ = {isa = PBXBuildFile; fileRef = 03B31599146333BF0052CD09 /* OCMNotificationPoster.h */; };
|
||||
03B315E2146333BF0052CD09 /* OCMNotificationPoster.h in Headers */ = {isa = PBXBuildFile; fileRef = 03B31599146333BF0052CD09 /* OCMNotificationPoster.h */; };
|
||||
03B315E3146333BF0052CD09 /* OCMNotificationPoster.m in Sources */ = {isa = PBXBuildFile; fileRef = 03B3159A146333BF0052CD09 /* OCMNotificationPoster.m */; };
|
||||
03B315E5146333BF0052CD09 /* OCMNotificationPoster.m in Sources */ = {isa = PBXBuildFile; fileRef = 03B3159A146333BF0052CD09 /* OCMNotificationPoster.m */; };
|
||||
03B315E6146333BF0052CD09 /* OCMObserverRecorder.h in Headers */ = {isa = PBXBuildFile; fileRef = 03B3159B146333BF0052CD09 /* OCMObserverRecorder.h */; };
|
||||
03B315E7146333BF0052CD09 /* OCMObserverRecorder.h in Headers */ = {isa = PBXBuildFile; fileRef = 03B3159B146333BF0052CD09 /* OCMObserverRecorder.h */; };
|
||||
03B315E8146333BF0052CD09 /* OCMObserverRecorder.m in Sources */ = {isa = PBXBuildFile; fileRef = 03B3159C146333BF0052CD09 /* OCMObserverRecorder.m */; };
|
||||
03B315EA146333BF0052CD09 /* OCMObserverRecorder.m in Sources */ = {isa = PBXBuildFile; fileRef = 03B3159C146333BF0052CD09 /* OCMObserverRecorder.m */; };
|
||||
03B315EB146333C00052CD09 /* OCMockObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 03B3159D146333BF0052CD09 /* OCMockObject.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
03B315EC146333C00052CD09 /* OCMockObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 03B3159D146333BF0052CD09 /* OCMockObject.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
03B315ED146333C00052CD09 /* OCMockObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 03B3159E146333BF0052CD09 /* OCMockObject.m */; };
|
||||
03B315EF146333C00052CD09 /* OCMockObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 03B3159E146333BF0052CD09 /* OCMockObject.m */; };
|
||||
03B315F0146333C00052CD09 /* OCMockRecorder.h in Headers */ = {isa = PBXBuildFile; fileRef = 03B3159F146333BF0052CD09 /* OCMockRecorder.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
03B315F1146333C00052CD09 /* OCMockRecorder.h in Headers */ = {isa = PBXBuildFile; fileRef = 03B3159F146333BF0052CD09 /* OCMockRecorder.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
03B315F2146333C00052CD09 /* OCMockRecorder.m in Sources */ = {isa = PBXBuildFile; fileRef = 03B315A0146333BF0052CD09 /* OCMockRecorder.m */; };
|
||||
03B315F4146333C00052CD09 /* OCMockRecorder.m in Sources */ = {isa = PBXBuildFile; fileRef = 03B315A0146333BF0052CD09 /* OCMockRecorder.m */; };
|
||||
03B315F5146333C00052CD09 /* OCMPassByRefSetter.h in Headers */ = {isa = PBXBuildFile; fileRef = 03B315A1146333BF0052CD09 /* OCMPassByRefSetter.h */; };
|
||||
03B315F6146333C00052CD09 /* OCMPassByRefSetter.h in Headers */ = {isa = PBXBuildFile; fileRef = 03B315A1146333BF0052CD09 /* OCMPassByRefSetter.h */; };
|
||||
03B315F7146333C00052CD09 /* OCMPassByRefSetter.m in Sources */ = {isa = PBXBuildFile; fileRef = 03B315A2146333BF0052CD09 /* OCMPassByRefSetter.m */; };
|
||||
03B315F9146333C00052CD09 /* OCMPassByRefSetter.m in Sources */ = {isa = PBXBuildFile; fileRef = 03B315A2146333BF0052CD09 /* OCMPassByRefSetter.m */; };
|
||||
03B315FA146333C00052CD09 /* OCMRealObjectForwarder.h in Headers */ = {isa = PBXBuildFile; fileRef = 03B315A3146333BF0052CD09 /* OCMRealObjectForwarder.h */; };
|
||||
03B315FB146333C00052CD09 /* OCMRealObjectForwarder.h in Headers */ = {isa = PBXBuildFile; fileRef = 03B315A3146333BF0052CD09 /* OCMRealObjectForwarder.h */; };
|
||||
03B315FC146333C00052CD09 /* OCMRealObjectForwarder.m in Sources */ = {isa = PBXBuildFile; fileRef = 03B315A4146333BF0052CD09 /* OCMRealObjectForwarder.m */; };
|
||||
03B315FE146333C00052CD09 /* OCMRealObjectForwarder.m in Sources */ = {isa = PBXBuildFile; fileRef = 03B315A4146333BF0052CD09 /* OCMRealObjectForwarder.m */; };
|
||||
03B315FF146333C00052CD09 /* OCMReturnValueProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 03B315A5146333BF0052CD09 /* OCMReturnValueProvider.h */; };
|
||||
03B31600146333C00052CD09 /* OCMReturnValueProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 03B315A5146333BF0052CD09 /* OCMReturnValueProvider.h */; };
|
||||
03B31601146333C00052CD09 /* OCMReturnValueProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 03B315A6146333BF0052CD09 /* OCMReturnValueProvider.m */; };
|
||||
03B31603146333C00052CD09 /* OCMReturnValueProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 03B315A6146333BF0052CD09 /* OCMReturnValueProvider.m */; };
|
||||
03B31604146333C00052CD09 /* OCObserverMockObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 03B315A7146333BF0052CD09 /* OCObserverMockObject.h */; };
|
||||
03B31605146333C00052CD09 /* OCObserverMockObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 03B315A7146333BF0052CD09 /* OCObserverMockObject.h */; };
|
||||
03B31606146333C00052CD09 /* OCObserverMockObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 03B315A8146333BF0052CD09 /* OCObserverMockObject.m */; };
|
||||
03B31608146333C00052CD09 /* OCObserverMockObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 03B315A8146333BF0052CD09 /* OCObserverMockObject.m */; };
|
||||
03B31609146333C00052CD09 /* OCPartialMockObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 03B315A9146333BF0052CD09 /* OCPartialMockObject.h */; };
|
||||
03B3160A146333C00052CD09 /* OCPartialMockObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 03B315A9146333BF0052CD09 /* OCPartialMockObject.h */; };
|
||||
03B3160B146333C00052CD09 /* OCPartialMockObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 03B315AA146333BF0052CD09 /* OCPartialMockObject.m */; };
|
||||
03B3160D146333C00052CD09 /* OCPartialMockObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 03B315AA146333BF0052CD09 /* OCPartialMockObject.m */; };
|
||||
03B3160E146333C00052CD09 /* OCPartialMockRecorder.h in Headers */ = {isa = PBXBuildFile; fileRef = 03B315AB146333BF0052CD09 /* OCPartialMockRecorder.h */; };
|
||||
03B3160F146333C00052CD09 /* OCPartialMockRecorder.h in Headers */ = {isa = PBXBuildFile; fileRef = 03B315AB146333BF0052CD09 /* OCPartialMockRecorder.h */; };
|
||||
03B31610146333C00052CD09 /* OCPartialMockRecorder.m in Sources */ = {isa = PBXBuildFile; fileRef = 03B315AC146333BF0052CD09 /* OCPartialMockRecorder.m */; };
|
||||
03B31612146333C00052CD09 /* OCPartialMockRecorder.m in Sources */ = {isa = PBXBuildFile; fileRef = 03B315AC146333BF0052CD09 /* OCPartialMockRecorder.m */; };
|
||||
03B31613146333C00052CD09 /* OCProtocolMockObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 03B315AD146333BF0052CD09 /* OCProtocolMockObject.h */; };
|
||||
03B31614146333C00052CD09 /* OCProtocolMockObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 03B315AD146333BF0052CD09 /* OCProtocolMockObject.h */; };
|
||||
03B31615146333C00052CD09 /* OCProtocolMockObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 03B315AE146333BF0052CD09 /* OCProtocolMockObject.m */; };
|
||||
03B31617146333C00052CD09 /* OCProtocolMockObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 03B315AE146333BF0052CD09 /* OCProtocolMockObject.m */; };
|
||||
03B3162B1463350E0052CD09 /* NSInvocationOCMAdditionsTests.h in Headers */ = {isa = PBXBuildFile; fileRef = 03B3161E1463350E0052CD09 /* NSInvocationOCMAdditionsTests.h */; };
|
||||
03B3162D1463350E0052CD09 /* NSInvocationOCMAdditionsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 03B3161F1463350E0052CD09 /* NSInvocationOCMAdditionsTests.m */; };
|
||||
03B316301463350E0052CD09 /* OCMConstraintTests.h in Headers */ = {isa = PBXBuildFile; fileRef = 03B316201463350E0052CD09 /* OCMConstraintTests.h */; };
|
||||
03B316321463350E0052CD09 /* OCMConstraintTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 03B316211463350E0052CD09 /* OCMConstraintTests.m */; };
|
||||
03B316351463350E0052CD09 /* OCMockObjectHamcrestTests.h in Headers */ = {isa = PBXBuildFile; fileRef = 03B316221463350E0052CD09 /* OCMockObjectHamcrestTests.h */; };
|
||||
03B316371463350E0052CD09 /* OCMockObjectHamcrestTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 03B316231463350E0052CD09 /* OCMockObjectHamcrestTests.mm */; };
|
||||
03B3163A1463350E0052CD09 /* OCMockObjectTests.h in Headers */ = {isa = PBXBuildFile; fileRef = 03B316241463350E0052CD09 /* OCMockObjectTests.h */; };
|
||||
03B3163C1463350E0052CD09 /* OCMockObjectTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 03B316251463350E0052CD09 /* OCMockObjectTests.m */; };
|
||||
03B3163F1463350E0052CD09 /* OCMockRecorderTests.h in Headers */ = {isa = PBXBuildFile; fileRef = 03B316261463350E0052CD09 /* OCMockRecorderTests.h */; };
|
||||
03B316411463350E0052CD09 /* OCMockRecorderTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 03B316271463350E0052CD09 /* OCMockRecorderTests.m */; };
|
||||
03B316441463350E0052CD09 /* OCObserverMockObjectTests.h in Headers */ = {isa = PBXBuildFile; fileRef = 03B316281463350E0052CD09 /* OCObserverMockObjectTests.h */; };
|
||||
03B316461463350E0052CD09 /* OCObserverMockObjectTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 03B316291463350E0052CD09 /* OCObserverMockObjectTests.m */; };
|
||||
03B3168B14633A4F0052CD09 /* OCMock.h in Headers */ = {isa = PBXBuildFile; fileRef = 030EF0B814632FD000B04273 /* OCMock.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
03B3168D14633B1D0052CD09 /* OCHamcrest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03B3168C14633B1D0052CD09 /* OCHamcrest.framework */; };
|
||||
03B3168E14633D9C0052CD09 /* OCMock.h in Headers */ = {isa = PBXBuildFile; fileRef = 030EF0B814632FD000B04273 /* OCMock.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
030EF0C414632FD000B04273 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 030EF09E14632FD000B04273 /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 030EF0A714632FD000B04273;
|
||||
remoteInfo = OCMock;
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
030EF0A814632FD000B04273 /* OCMock.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = OCMock.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
030EF0B314632FD000B04273 /* OCMock-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "OCMock-Info.plist"; sourceTree = "<group>"; };
|
||||
030EF0B514632FD000B04273 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
||||
030EF0B714632FD000B04273 /* OCMock-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "OCMock-Prefix.pch"; sourceTree = "<group>"; };
|
||||
030EF0B814632FD000B04273 /* OCMock.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = OCMock.h; sourceTree = "<group>"; };
|
||||
030EF0C014632FD000B04273 /* OCMockTests.octest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = OCMockTests.octest; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
030EF0C114632FD000B04273 /* SenTestingKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SenTestingKit.framework; path = Library/Frameworks/SenTestingKit.framework; sourceTree = DEVELOPER_DIR; };
|
||||
030EF0C914632FD000B04273 /* OCMockTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "OCMockTests-Info.plist"; sourceTree = "<group>"; };
|
||||
030EF0CB14632FD000B04273 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
||||
030EF0DC14632FF700B04273 /* libOCMock.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libOCMock.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
030EF0E114632FF700B04273 /* OCMockLib-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "OCMockLib-Prefix.pch"; sourceTree = "<group>"; };
|
||||
033E1FF314FEF5E0004456B0 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
|
||||
033E1FF614FEF60C004456B0 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; };
|
||||
0354D71E16F23AF5001766BB /* OCMockObjectForwardingTargetTests.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMockObjectForwardingTargetTests.h; sourceTree = "<group>"; };
|
||||
0354D71F16F23AF5001766BB /* OCMockObjectForwardingTargetTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCMockObjectForwardingTargetTests.m; sourceTree = "<group>"; };
|
||||
039F91C416EFB493006C3D70 /* OCMockObjectClassMethodMockingTests.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMockObjectClassMethodMockingTests.h; sourceTree = "<group>"; };
|
||||
039F91C516EFB493006C3D70 /* OCMockObjectClassMethodMockingTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCMockObjectClassMethodMockingTests.m; sourceTree = "<group>"; };
|
||||
03AC5C1316DF9FA500D82ECD /* OCMockObjectPartialMocksTests.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMockObjectPartialMocksTests.h; sourceTree = "<group>"; };
|
||||
03AC5C1416DF9FA500D82ECD /* OCMockObjectPartialMocksTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCMockObjectPartialMocksTests.m; sourceTree = "<group>"; };
|
||||
03B31585146333BF0052CD09 /* NSInvocation+OCMAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSInvocation+OCMAdditions.h"; sourceTree = "<group>"; };
|
||||
03B31586146333BF0052CD09 /* NSInvocation+OCMAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSInvocation+OCMAdditions.m"; sourceTree = "<group>"; };
|
||||
03B31587146333BF0052CD09 /* NSMethodSignature+OCMAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSMethodSignature+OCMAdditions.h"; sourceTree = "<group>"; };
|
||||
03B31588146333BF0052CD09 /* NSMethodSignature+OCMAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSMethodSignature+OCMAdditions.m"; sourceTree = "<group>"; };
|
||||
03B31589146333BF0052CD09 /* NSNotificationCenter+OCMAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSNotificationCenter+OCMAdditions.h"; sourceTree = "<group>"; };
|
||||
03B3158A146333BF0052CD09 /* NSNotificationCenter+OCMAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSNotificationCenter+OCMAdditions.m"; sourceTree = "<group>"; };
|
||||
03B3158B146333BF0052CD09 /* OCClassMockObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCClassMockObject.h; sourceTree = "<group>"; };
|
||||
03B3158C146333BF0052CD09 /* OCClassMockObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCClassMockObject.m; sourceTree = "<group>"; };
|
||||
03B3158D146333BF0052CD09 /* OCMArg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMArg.h; sourceTree = "<group>"; };
|
||||
03B3158E146333BF0052CD09 /* OCMArg.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCMArg.m; sourceTree = "<group>"; };
|
||||
03B3158F146333BF0052CD09 /* OCMBlockCaller.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMBlockCaller.h; sourceTree = "<group>"; };
|
||||
03B31590146333BF0052CD09 /* OCMBlockCaller.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCMBlockCaller.m; sourceTree = "<group>"; };
|
||||
03B31591146333BF0052CD09 /* OCMBoxedReturnValueProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMBoxedReturnValueProvider.h; sourceTree = "<group>"; };
|
||||
03B31592146333BF0052CD09 /* OCMBoxedReturnValueProvider.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCMBoxedReturnValueProvider.m; sourceTree = "<group>"; };
|
||||
03B31593146333BF0052CD09 /* OCMConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMConstraint.h; sourceTree = "<group>"; };
|
||||
03B31594146333BF0052CD09 /* OCMConstraint.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCMConstraint.m; sourceTree = "<group>"; };
|
||||
03B31595146333BF0052CD09 /* OCMExceptionReturnValueProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMExceptionReturnValueProvider.h; sourceTree = "<group>"; };
|
||||
03B31596146333BF0052CD09 /* OCMExceptionReturnValueProvider.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCMExceptionReturnValueProvider.m; sourceTree = "<group>"; };
|
||||
03B31597146333BF0052CD09 /* OCMIndirectReturnValueProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMIndirectReturnValueProvider.h; sourceTree = "<group>"; };
|
||||
03B31598146333BF0052CD09 /* OCMIndirectReturnValueProvider.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCMIndirectReturnValueProvider.m; sourceTree = "<group>"; };
|
||||
03B31599146333BF0052CD09 /* OCMNotificationPoster.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMNotificationPoster.h; sourceTree = "<group>"; };
|
||||
03B3159A146333BF0052CD09 /* OCMNotificationPoster.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCMNotificationPoster.m; sourceTree = "<group>"; };
|
||||
03B3159B146333BF0052CD09 /* OCMObserverRecorder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMObserverRecorder.h; sourceTree = "<group>"; };
|
||||
03B3159C146333BF0052CD09 /* OCMObserverRecorder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCMObserverRecorder.m; sourceTree = "<group>"; };
|
||||
03B3159D146333BF0052CD09 /* OCMockObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMockObject.h; sourceTree = "<group>"; };
|
||||
03B3159E146333BF0052CD09 /* OCMockObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCMockObject.m; sourceTree = "<group>"; };
|
||||
03B3159F146333BF0052CD09 /* OCMockRecorder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMockRecorder.h; sourceTree = "<group>"; };
|
||||
03B315A0146333BF0052CD09 /* OCMockRecorder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCMockRecorder.m; sourceTree = "<group>"; };
|
||||
03B315A1146333BF0052CD09 /* OCMPassByRefSetter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMPassByRefSetter.h; sourceTree = "<group>"; };
|
||||
03B315A2146333BF0052CD09 /* OCMPassByRefSetter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCMPassByRefSetter.m; sourceTree = "<group>"; };
|
||||
03B315A3146333BF0052CD09 /* OCMRealObjectForwarder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMRealObjectForwarder.h; sourceTree = "<group>"; };
|
||||
03B315A4146333BF0052CD09 /* OCMRealObjectForwarder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCMRealObjectForwarder.m; sourceTree = "<group>"; };
|
||||
03B315A5146333BF0052CD09 /* OCMReturnValueProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMReturnValueProvider.h; sourceTree = "<group>"; };
|
||||
03B315A6146333BF0052CD09 /* OCMReturnValueProvider.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCMReturnValueProvider.m; sourceTree = "<group>"; };
|
||||
03B315A7146333BF0052CD09 /* OCObserverMockObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCObserverMockObject.h; sourceTree = "<group>"; };
|
||||
03B315A8146333BF0052CD09 /* OCObserverMockObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCObserverMockObject.m; sourceTree = "<group>"; };
|
||||
03B315A9146333BF0052CD09 /* OCPartialMockObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCPartialMockObject.h; sourceTree = "<group>"; };
|
||||
03B315AA146333BF0052CD09 /* OCPartialMockObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCPartialMockObject.m; sourceTree = "<group>"; };
|
||||
03B315AB146333BF0052CD09 /* OCPartialMockRecorder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCPartialMockRecorder.h; sourceTree = "<group>"; };
|
||||
03B315AC146333BF0052CD09 /* OCPartialMockRecorder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCPartialMockRecorder.m; sourceTree = "<group>"; };
|
||||
03B315AD146333BF0052CD09 /* OCProtocolMockObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCProtocolMockObject.h; sourceTree = "<group>"; };
|
||||
03B315AE146333BF0052CD09 /* OCProtocolMockObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCProtocolMockObject.m; sourceTree = "<group>"; };
|
||||
03B3161E1463350E0052CD09 /* NSInvocationOCMAdditionsTests.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NSInvocationOCMAdditionsTests.h; sourceTree = "<group>"; };
|
||||
03B3161F1463350E0052CD09 /* NSInvocationOCMAdditionsTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NSInvocationOCMAdditionsTests.m; sourceTree = "<group>"; };
|
||||
03B316201463350E0052CD09 /* OCMConstraintTests.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMConstraintTests.h; sourceTree = "<group>"; };
|
||||
03B316211463350E0052CD09 /* OCMConstraintTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCMConstraintTests.m; sourceTree = "<group>"; };
|
||||
03B316221463350E0052CD09 /* OCMockObjectHamcrestTests.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMockObjectHamcrestTests.h; sourceTree = "<group>"; };
|
||||
03B316231463350E0052CD09 /* OCMockObjectHamcrestTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = OCMockObjectHamcrestTests.mm; sourceTree = "<group>"; };
|
||||
03B316241463350E0052CD09 /* OCMockObjectTests.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMockObjectTests.h; sourceTree = "<group>"; };
|
||||
03B316251463350E0052CD09 /* OCMockObjectTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCMockObjectTests.m; sourceTree = "<group>"; };
|
||||
03B316261463350E0052CD09 /* OCMockRecorderTests.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMockRecorderTests.h; sourceTree = "<group>"; };
|
||||
03B316271463350E0052CD09 /* OCMockRecorderTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCMockRecorderTests.m; sourceTree = "<group>"; };
|
||||
03B316281463350E0052CD09 /* OCObserverMockObjectTests.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCObserverMockObjectTests.h; sourceTree = "<group>"; };
|
||||
03B316291463350E0052CD09 /* OCObserverMockObjectTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCObserverMockObjectTests.m; sourceTree = "<group>"; };
|
||||
03B3168C14633B1D0052CD09 /* OCHamcrest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OCHamcrest.framework; path = "$(BUILT_PRODUCTS_DIR)/Debug/Frameworks/OCHamcrest.framework"; sourceTree = "<group>"; };
|
||||
03B3168F14633FAB0052CD09 /* Changes.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = Changes.txt; sourceTree = "<group>"; };
|
||||
03B3169014633FAB0052CD09 /* License.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = License.txt; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
030EF0A414632FD000B04273 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
033E1FF414FEF5E0004456B0 /* Foundation.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
030EF0BC14632FD000B04273 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
033E1FF514FEF5FC004456B0 /* Foundation.framework in Frameworks */,
|
||||
030EF0C214632FD000B04273 /* SenTestingKit.framework in Frameworks */,
|
||||
030EF0C614632FD000B04273 /* OCMock.framework in Frameworks */,
|
||||
03B3168D14633B1D0052CD09 /* OCHamcrest.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
030EF0D914632FF700B04273 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
033E1FF714FEF60C004456B0 /* Foundation.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
030EF09C14632FD000B04273 = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
03B3168F14633FAB0052CD09 /* Changes.txt */,
|
||||
03B3169014633FAB0052CD09 /* License.txt */,
|
||||
030EF0B114632FD000B04273 /* OCMock */,
|
||||
030EF0C714632FD000B04273 /* OCMockTests */,
|
||||
030EF0DF14632FF700B04273 /* OCMockLib */,
|
||||
030EF0A914632FD000B04273 /* Products */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
030EF0A914632FD000B04273 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
030EF0A814632FD000B04273 /* OCMock.framework */,
|
||||
030EF0C014632FD000B04273 /* OCMockTests.octest */,
|
||||
030EF0DC14632FF700B04273 /* libOCMock.a */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
030EF0AA14632FD000B04273 /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
030EF0C114632FD000B04273 /* SenTestingKit.framework */,
|
||||
03B3168C14633B1D0052CD09 /* OCHamcrest.framework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
path = ..;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
030EF0B114632FD000B04273 /* OCMock */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
030EF0B814632FD000B04273 /* OCMock.h */,
|
||||
03B315841463334E0052CD09 /* Core Mocks */,
|
||||
03B3161C1463348F0052CD09 /* Partial Mocks */,
|
||||
03B3161B146334530052CD09 /* Observer Mocks */,
|
||||
03B3161A146334320052CD09 /* Argument Handling */,
|
||||
03B31618146333CA0052CD09 /* Foundation Additions */,
|
||||
030EF0B214632FD000B04273 /* Supporting Files */,
|
||||
033E1FF914FEF724004456B0 /* Frameworks */,
|
||||
);
|
||||
path = OCMock;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
030EF0B214632FD000B04273 /* Supporting Files */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
030EF0B314632FD000B04273 /* OCMock-Info.plist */,
|
||||
030EF0B414632FD000B04273 /* InfoPlist.strings */,
|
||||
030EF0B714632FD000B04273 /* OCMock-Prefix.pch */,
|
||||
);
|
||||
name = "Supporting Files";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
030EF0C714632FD000B04273 /* OCMockTests */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
03B316241463350E0052CD09 /* OCMockObjectTests.h */,
|
||||
03B316251463350E0052CD09 /* OCMockObjectTests.m */,
|
||||
03AC5C1316DF9FA500D82ECD /* OCMockObjectPartialMocksTests.h */,
|
||||
03AC5C1416DF9FA500D82ECD /* OCMockObjectPartialMocksTests.m */,
|
||||
039F91C416EFB493006C3D70 /* OCMockObjectClassMethodMockingTests.h */,
|
||||
039F91C516EFB493006C3D70 /* OCMockObjectClassMethodMockingTests.m */,
|
||||
0354D71E16F23AF5001766BB /* OCMockObjectForwardingTargetTests.h */,
|
||||
0354D71F16F23AF5001766BB /* OCMockObjectForwardingTargetTests.m */,
|
||||
03B316221463350E0052CD09 /* OCMockObjectHamcrestTests.h */,
|
||||
03B316231463350E0052CD09 /* OCMockObjectHamcrestTests.mm */,
|
||||
03B316201463350E0052CD09 /* OCMConstraintTests.h */,
|
||||
03B316211463350E0052CD09 /* OCMConstraintTests.m */,
|
||||
03B316261463350E0052CD09 /* OCMockRecorderTests.h */,
|
||||
03B316271463350E0052CD09 /* OCMockRecorderTests.m */,
|
||||
03B316281463350E0052CD09 /* OCObserverMockObjectTests.h */,
|
||||
03B316291463350E0052CD09 /* OCObserverMockObjectTests.m */,
|
||||
03B3161E1463350E0052CD09 /* NSInvocationOCMAdditionsTests.h */,
|
||||
03B3161F1463350E0052CD09 /* NSInvocationOCMAdditionsTests.m */,
|
||||
030EF0C814632FD000B04273 /* Supporting Files */,
|
||||
030EF0AA14632FD000B04273 /* Frameworks */,
|
||||
);
|
||||
path = OCMockTests;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
030EF0C814632FD000B04273 /* Supporting Files */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
030EF0C914632FD000B04273 /* OCMockTests-Info.plist */,
|
||||
030EF0CA14632FD000B04273 /* InfoPlist.strings */,
|
||||
);
|
||||
name = "Supporting Files";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
030EF0DF14632FF700B04273 /* OCMockLib */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
030EF0E014632FF700B04273 /* Supporting Files */,
|
||||
033E1FF814FEF6F4004456B0 /* Frameworks */,
|
||||
);
|
||||
path = OCMockLib;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
030EF0E014632FF700B04273 /* Supporting Files */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
030EF0E114632FF700B04273 /* OCMockLib-Prefix.pch */,
|
||||
);
|
||||
name = "Supporting Files";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
033E1FF814FEF6F4004456B0 /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
033E1FF614FEF60C004456B0 /* Foundation.framework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
033E1FF914FEF724004456B0 /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
033E1FF314FEF5E0004456B0 /* Foundation.framework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
03B315841463334E0052CD09 /* Core Mocks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
03B3159D146333BF0052CD09 /* OCMockObject.h */,
|
||||
03B3159E146333BF0052CD09 /* OCMockObject.m */,
|
||||
03B3158B146333BF0052CD09 /* OCClassMockObject.h */,
|
||||
03B3158C146333BF0052CD09 /* OCClassMockObject.m */,
|
||||
03B315AD146333BF0052CD09 /* OCProtocolMockObject.h */,
|
||||
03B315AE146333BF0052CD09 /* OCProtocolMockObject.m */,
|
||||
03B3159F146333BF0052CD09 /* OCMockRecorder.h */,
|
||||
03B315A0146333BF0052CD09 /* OCMockRecorder.m */,
|
||||
03B31619146334040052CD09 /* Invocation Handler */,
|
||||
);
|
||||
name = "Core Mocks";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
03B31618146333CA0052CD09 /* Foundation Additions */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
03B31585146333BF0052CD09 /* NSInvocation+OCMAdditions.h */,
|
||||
03B31586146333BF0052CD09 /* NSInvocation+OCMAdditions.m */,
|
||||
03B31587146333BF0052CD09 /* NSMethodSignature+OCMAdditions.h */,
|
||||
03B31588146333BF0052CD09 /* NSMethodSignature+OCMAdditions.m */,
|
||||
03B31589146333BF0052CD09 /* NSNotificationCenter+OCMAdditions.h */,
|
||||
03B3158A146333BF0052CD09 /* NSNotificationCenter+OCMAdditions.m */,
|
||||
);
|
||||
name = "Foundation Additions";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
03B31619146334040052CD09 /* Invocation Handler */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
03B3158F146333BF0052CD09 /* OCMBlockCaller.h */,
|
||||
03B31590146333BF0052CD09 /* OCMBlockCaller.m */,
|
||||
03B31591146333BF0052CD09 /* OCMBoxedReturnValueProvider.h */,
|
||||
03B31592146333BF0052CD09 /* OCMBoxedReturnValueProvider.m */,
|
||||
03B31595146333BF0052CD09 /* OCMExceptionReturnValueProvider.h */,
|
||||
03B31596146333BF0052CD09 /* OCMExceptionReturnValueProvider.m */,
|
||||
03B31597146333BF0052CD09 /* OCMIndirectReturnValueProvider.h */,
|
||||
03B31598146333BF0052CD09 /* OCMIndirectReturnValueProvider.m */,
|
||||
03B31599146333BF0052CD09 /* OCMNotificationPoster.h */,
|
||||
03B3159A146333BF0052CD09 /* OCMNotificationPoster.m */,
|
||||
03B315A5146333BF0052CD09 /* OCMReturnValueProvider.h */,
|
||||
03B315A6146333BF0052CD09 /* OCMReturnValueProvider.m */,
|
||||
);
|
||||
name = "Invocation Handler";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
03B3161A146334320052CD09 /* Argument Handling */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
03B3158D146333BF0052CD09 /* OCMArg.h */,
|
||||
03B3158E146333BF0052CD09 /* OCMArg.m */,
|
||||
03B31593146333BF0052CD09 /* OCMConstraint.h */,
|
||||
03B31594146333BF0052CD09 /* OCMConstraint.m */,
|
||||
03B315A1146333BF0052CD09 /* OCMPassByRefSetter.h */,
|
||||
03B315A2146333BF0052CD09 /* OCMPassByRefSetter.m */,
|
||||
);
|
||||
name = "Argument Handling";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
03B3161B146334530052CD09 /* Observer Mocks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
03B315A7146333BF0052CD09 /* OCObserverMockObject.h */,
|
||||
03B315A8146333BF0052CD09 /* OCObserverMockObject.m */,
|
||||
03B3159B146333BF0052CD09 /* OCMObserverRecorder.h */,
|
||||
03B3159C146333BF0052CD09 /* OCMObserverRecorder.m */,
|
||||
);
|
||||
name = "Observer Mocks";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
03B3161C1463348F0052CD09 /* Partial Mocks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
03B315A9146333BF0052CD09 /* OCPartialMockObject.h */,
|
||||
03B315AA146333BF0052CD09 /* OCPartialMockObject.m */,
|
||||
03B315AB146333BF0052CD09 /* OCPartialMockRecorder.h */,
|
||||
03B315AC146333BF0052CD09 /* OCPartialMockRecorder.m */,
|
||||
03B3161D146334AD0052CD09 /* Invocation Handler */,
|
||||
);
|
||||
name = "Partial Mocks";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
03B3161D146334AD0052CD09 /* Invocation Handler */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
03B315A3146333BF0052CD09 /* OCMRealObjectForwarder.h */,
|
||||
03B315A4146333BF0052CD09 /* OCMRealObjectForwarder.m */,
|
||||
);
|
||||
name = "Invocation Handler";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXHeadersBuildPhase section */
|
||||
030EF0A514632FD000B04273 /* Headers */ = {
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
03B3168B14633A4F0052CD09 /* OCMock.h in Headers */,
|
||||
03B315EB146333C00052CD09 /* OCMockObject.h in Headers */,
|
||||
03B315F0146333C00052CD09 /* OCMockRecorder.h in Headers */,
|
||||
03B315C3146333BF0052CD09 /* OCMArg.h in Headers */,
|
||||
03B315D2146333BF0052CD09 /* OCMConstraint.h in Headers */,
|
||||
03B315B9146333BF0052CD09 /* NSNotificationCenter+OCMAdditions.h in Headers */,
|
||||
03B315AF146333BF0052CD09 /* NSInvocation+OCMAdditions.h in Headers */,
|
||||
03B315B4146333BF0052CD09 /* NSMethodSignature+OCMAdditions.h in Headers */,
|
||||
03B315BE146333BF0052CD09 /* OCClassMockObject.h in Headers */,
|
||||
03B315C8146333BF0052CD09 /* OCMBlockCaller.h in Headers */,
|
||||
03B315CD146333BF0052CD09 /* OCMBoxedReturnValueProvider.h in Headers */,
|
||||
03B315D7146333BF0052CD09 /* OCMExceptionReturnValueProvider.h in Headers */,
|
||||
03B315DC146333BF0052CD09 /* OCMIndirectReturnValueProvider.h in Headers */,
|
||||
03B315E1146333BF0052CD09 /* OCMNotificationPoster.h in Headers */,
|
||||
03B315E6146333BF0052CD09 /* OCMObserverRecorder.h in Headers */,
|
||||
03B315F5146333C00052CD09 /* OCMPassByRefSetter.h in Headers */,
|
||||
03B315FA146333C00052CD09 /* OCMRealObjectForwarder.h in Headers */,
|
||||
03B315FF146333C00052CD09 /* OCMReturnValueProvider.h in Headers */,
|
||||
03B31604146333C00052CD09 /* OCObserverMockObject.h in Headers */,
|
||||
03B31609146333C00052CD09 /* OCPartialMockObject.h in Headers */,
|
||||
03B3160E146333C00052CD09 /* OCPartialMockRecorder.h in Headers */,
|
||||
03B31613146333C00052CD09 /* OCProtocolMockObject.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
030EF0DA14632FF700B04273 /* Headers */ = {
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
03B3168E14633D9C0052CD09 /* OCMock.h in Headers */,
|
||||
03B315EC146333C00052CD09 /* OCMockObject.h in Headers */,
|
||||
03B315F1146333C00052CD09 /* OCMockRecorder.h in Headers */,
|
||||
03B315C4146333BF0052CD09 /* OCMArg.h in Headers */,
|
||||
03B315D3146333BF0052CD09 /* OCMConstraint.h in Headers */,
|
||||
03B315BA146333BF0052CD09 /* NSNotificationCenter+OCMAdditions.h in Headers */,
|
||||
03B315B0146333BF0052CD09 /* NSInvocation+OCMAdditions.h in Headers */,
|
||||
03B315B5146333BF0052CD09 /* NSMethodSignature+OCMAdditions.h in Headers */,
|
||||
03B315BF146333BF0052CD09 /* OCClassMockObject.h in Headers */,
|
||||
03B315C9146333BF0052CD09 /* OCMBlockCaller.h in Headers */,
|
||||
03B315CE146333BF0052CD09 /* OCMBoxedReturnValueProvider.h in Headers */,
|
||||
03B315D8146333BF0052CD09 /* OCMExceptionReturnValueProvider.h in Headers */,
|
||||
03B315DD146333BF0052CD09 /* OCMIndirectReturnValueProvider.h in Headers */,
|
||||
03B315E2146333BF0052CD09 /* OCMNotificationPoster.h in Headers */,
|
||||
03B315E7146333BF0052CD09 /* OCMObserverRecorder.h in Headers */,
|
||||
03B315F6146333C00052CD09 /* OCMPassByRefSetter.h in Headers */,
|
||||
03B315FB146333C00052CD09 /* OCMRealObjectForwarder.h in Headers */,
|
||||
03B31600146333C00052CD09 /* OCMReturnValueProvider.h in Headers */,
|
||||
03B31605146333C00052CD09 /* OCObserverMockObject.h in Headers */,
|
||||
03B3160A146333C00052CD09 /* OCPartialMockObject.h in Headers */,
|
||||
03B3160F146333C00052CD09 /* OCPartialMockRecorder.h in Headers */,
|
||||
03B31614146333C00052CD09 /* OCProtocolMockObject.h in Headers */,
|
||||
03B3162B1463350E0052CD09 /* NSInvocationOCMAdditionsTests.h in Headers */,
|
||||
03B316301463350E0052CD09 /* OCMConstraintTests.h in Headers */,
|
||||
03B316351463350E0052CD09 /* OCMockObjectHamcrestTests.h in Headers */,
|
||||
03B3163A1463350E0052CD09 /* OCMockObjectTests.h in Headers */,
|
||||
03B3163F1463350E0052CD09 /* OCMockRecorderTests.h in Headers */,
|
||||
03B316441463350E0052CD09 /* OCObserverMockObjectTests.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXHeadersBuildPhase section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
030EF0A714632FD000B04273 /* OCMock */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 030EF0D214632FD000B04273 /* Build configuration list for PBXNativeTarget "OCMock" */;
|
||||
buildPhases = (
|
||||
030EF0A314632FD000B04273 /* Sources */,
|
||||
030EF0A414632FD000B04273 /* Frameworks */,
|
||||
030EF0A514632FD000B04273 /* Headers */,
|
||||
030EF0A614632FD000B04273 /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = OCMock;
|
||||
productName = OCMock;
|
||||
productReference = 030EF0A814632FD000B04273 /* OCMock.framework */;
|
||||
productType = "com.apple.product-type.framework";
|
||||
};
|
||||
030EF0BF14632FD000B04273 /* OCMockTests */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 030EF0D514632FD000B04273 /* Build configuration list for PBXNativeTarget "OCMockTests" */;
|
||||
buildPhases = (
|
||||
03B3168A146338C10052CD09 /* ShellScript */,
|
||||
030EF0BB14632FD000B04273 /* Sources */,
|
||||
030EF0BC14632FD000B04273 /* Frameworks */,
|
||||
030EF0BD14632FD000B04273 /* Resources */,
|
||||
030EF0BE14632FD000B04273 /* ShellScript */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
030EF0C514632FD000B04273 /* PBXTargetDependency */,
|
||||
);
|
||||
name = OCMockTests;
|
||||
productName = OCMockTests;
|
||||
productReference = 030EF0C014632FD000B04273 /* OCMockTests.octest */;
|
||||
productType = "com.apple.product-type.bundle";
|
||||
};
|
||||
030EF0DB14632FF700B04273 /* OCMockLib */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 030EF0E514632FF700B04273 /* Build configuration list for PBXNativeTarget "OCMockLib" */;
|
||||
buildPhases = (
|
||||
030EF0D814632FF700B04273 /* Sources */,
|
||||
030EF0D914632FF700B04273 /* Frameworks */,
|
||||
030EF0DA14632FF700B04273 /* Headers */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = OCMockLib;
|
||||
productName = OCMockLib;
|
||||
productReference = 030EF0DC14632FF700B04273 /* libOCMock.a */;
|
||||
productType = "com.apple.product-type.library.static";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
030EF09E14632FD000B04273 /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 0460;
|
||||
ORGANIZATIONNAME = "Mulle Kybernetik";
|
||||
};
|
||||
buildConfigurationList = 030EF0A114632FD000B04273 /* Build configuration list for PBXProject "OCMock" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
);
|
||||
mainGroup = 030EF09C14632FD000B04273;
|
||||
productRefGroup = 030EF0A914632FD000B04273 /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
030EF0A714632FD000B04273 /* OCMock */,
|
||||
030EF0BF14632FD000B04273 /* OCMockTests */,
|
||||
030EF0DB14632FF700B04273 /* OCMockLib */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
030EF0A614632FD000B04273 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
030EF0B614632FD000B04273 /* InfoPlist.strings in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
030EF0BD14632FD000B04273 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
030EF0CC14632FD000B04273 /* InfoPlist.strings in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXShellScriptBuildPhase section */
|
||||
030EF0BE14632FD000B04273 /* ShellScript */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "# Run the unit tests in this test bundle.\nexport DYLD_FRAMEWORK_PATH=\"${TARGET_BUILD_DIR}/Frameworks\"\n\"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests\"\n";
|
||||
};
|
||||
03B3168A146338C10052CD09 /* ShellScript */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "# Unpack frameworks required for this target\npushd \"${TARGET_BUILD_DIR}\"\nif [ ! -d Frameworks ]; then\nmkdir Frameworks\nfi\ncd Frameworks\nif [ ! -d OCHamcrest.framework ]; then\ngnutar xjf \"${PROJECT_DIR}/Frameworks/OCHamcrest.tar.bz2\"\nfi\npopd\n";
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
030EF0A314632FD000B04273 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
03B315B1146333BF0052CD09 /* NSInvocation+OCMAdditions.m in Sources */,
|
||||
03B315B6146333BF0052CD09 /* NSMethodSignature+OCMAdditions.m in Sources */,
|
||||
03B315BB146333BF0052CD09 /* NSNotificationCenter+OCMAdditions.m in Sources */,
|
||||
03B315C0146333BF0052CD09 /* OCClassMockObject.m in Sources */,
|
||||
03B315C5146333BF0052CD09 /* OCMArg.m in Sources */,
|
||||
03B315CA146333BF0052CD09 /* OCMBlockCaller.m in Sources */,
|
||||
03B315CF146333BF0052CD09 /* OCMBoxedReturnValueProvider.m in Sources */,
|
||||
03B315D4146333BF0052CD09 /* OCMConstraint.m in Sources */,
|
||||
03B315D9146333BF0052CD09 /* OCMExceptionReturnValueProvider.m in Sources */,
|
||||
03B315DE146333BF0052CD09 /* OCMIndirectReturnValueProvider.m in Sources */,
|
||||
03B315E3146333BF0052CD09 /* OCMNotificationPoster.m in Sources */,
|
||||
03B315E8146333BF0052CD09 /* OCMObserverRecorder.m in Sources */,
|
||||
03B315ED146333C00052CD09 /* OCMockObject.m in Sources */,
|
||||
03B315F2146333C00052CD09 /* OCMockRecorder.m in Sources */,
|
||||
03B315F7146333C00052CD09 /* OCMPassByRefSetter.m in Sources */,
|
||||
03B315FC146333C00052CD09 /* OCMRealObjectForwarder.m in Sources */,
|
||||
03B31601146333C00052CD09 /* OCMReturnValueProvider.m in Sources */,
|
||||
03B31606146333C00052CD09 /* OCObserverMockObject.m in Sources */,
|
||||
03B3160B146333C00052CD09 /* OCPartialMockObject.m in Sources */,
|
||||
03B31610146333C00052CD09 /* OCPartialMockRecorder.m in Sources */,
|
||||
03B31615146333C00052CD09 /* OCProtocolMockObject.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
030EF0BB14632FD000B04273 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
03B3162D1463350E0052CD09 /* NSInvocationOCMAdditionsTests.m in Sources */,
|
||||
03B316321463350E0052CD09 /* OCMConstraintTests.m in Sources */,
|
||||
03B316371463350E0052CD09 /* OCMockObjectHamcrestTests.mm in Sources */,
|
||||
03B3163C1463350E0052CD09 /* OCMockObjectTests.m in Sources */,
|
||||
03B316411463350E0052CD09 /* OCMockRecorderTests.m in Sources */,
|
||||
03B316461463350E0052CD09 /* OCObserverMockObjectTests.m in Sources */,
|
||||
03AC5C1516DF9FA500D82ECD /* OCMockObjectPartialMocksTests.m in Sources */,
|
||||
039F91C616EFB493006C3D70 /* OCMockObjectClassMethodMockingTests.m in Sources */,
|
||||
0354D72016F23AF5001766BB /* OCMockObjectForwardingTargetTests.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
030EF0D814632FF700B04273 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
03B315B3146333BF0052CD09 /* NSInvocation+OCMAdditions.m in Sources */,
|
||||
03B315B8146333BF0052CD09 /* NSMethodSignature+OCMAdditions.m in Sources */,
|
||||
03B315BD146333BF0052CD09 /* NSNotificationCenter+OCMAdditions.m in Sources */,
|
||||
03B315C2146333BF0052CD09 /* OCClassMockObject.m in Sources */,
|
||||
03B315C7146333BF0052CD09 /* OCMArg.m in Sources */,
|
||||
03B315CC146333BF0052CD09 /* OCMBlockCaller.m in Sources */,
|
||||
03B315D1146333BF0052CD09 /* OCMBoxedReturnValueProvider.m in Sources */,
|
||||
03B315D6146333BF0052CD09 /* OCMConstraint.m in Sources */,
|
||||
03B315DB146333BF0052CD09 /* OCMExceptionReturnValueProvider.m in Sources */,
|
||||
03B315E0146333BF0052CD09 /* OCMIndirectReturnValueProvider.m in Sources */,
|
||||
03B315E5146333BF0052CD09 /* OCMNotificationPoster.m in Sources */,
|
||||
03B315EA146333BF0052CD09 /* OCMObserverRecorder.m in Sources */,
|
||||
03B315EF146333C00052CD09 /* OCMockObject.m in Sources */,
|
||||
03B315F4146333C00052CD09 /* OCMockRecorder.m in Sources */,
|
||||
03B315F9146333C00052CD09 /* OCMPassByRefSetter.m in Sources */,
|
||||
03B315FE146333C00052CD09 /* OCMRealObjectForwarder.m in Sources */,
|
||||
03B31603146333C00052CD09 /* OCMReturnValueProvider.m in Sources */,
|
||||
03B31608146333C00052CD09 /* OCObserverMockObject.m in Sources */,
|
||||
03B3160D146333C00052CD09 /* OCPartialMockObject.m in Sources */,
|
||||
03B31612146333C00052CD09 /* OCPartialMockRecorder.m in Sources */,
|
||||
03B31617146333C00052CD09 /* OCProtocolMockObject.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXTargetDependency section */
|
||||
030EF0C514632FD000B04273 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = 030EF0A714632FD000B04273 /* OCMock */;
|
||||
targetProxy = 030EF0C414632FD000B04273 /* PBXContainerItemProxy */;
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
|
||||
/* Begin PBXVariantGroup section */
|
||||
030EF0B414632FD000B04273 /* InfoPlist.strings */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
030EF0B514632FD000B04273 /* en */,
|
||||
);
|
||||
name = InfoPlist.strings;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
030EF0CA14632FD000B04273 /* InfoPlist.strings */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
030EF0CB14632FD000B04273 /* en */,
|
||||
);
|
||||
name = InfoPlist.strings;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXVariantGroup section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
030EF0D014632FD000B04273 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
ARCHS = "$(ARCHS_STANDARD_64_BIT)";
|
||||
CLANG_ENABLE_OBJC_ARC = NO;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
||||
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.6;
|
||||
SDKROOT = macosx;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
030EF0D114632FD000B04273 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
ARCHS = "$(ARCHS_STANDARD_64_BIT)";
|
||||
CLANG_ENABLE_OBJC_ARC = NO;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
COPY_PHASE_STRIP = YES;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
|
||||
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.6;
|
||||
SDKROOT = macosx;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
030EF0D314632FD000B04273 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
FRAMEWORK_VERSION = A;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "OCMock/OCMock-Prefix.pch";
|
||||
INFOPLIST_FILE = "OCMock/OCMock-Info.plist";
|
||||
LD_DYLIB_INSTALL_NAME = "@rpath/$(EXECUTABLE_PATH)";
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"$(SYSTEM_LIBRARY_DIR)/Frameworks/Foundation.framework/Versions/C\"",
|
||||
);
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
WRAPPER_EXTENSION = framework;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
030EF0D414632FD000B04273 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
FRAMEWORK_VERSION = A;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "OCMock/OCMock-Prefix.pch";
|
||||
INFOPLIST_FILE = "OCMock/OCMock-Info.plist";
|
||||
LD_DYLIB_INSTALL_NAME = "@rpath/$(EXECUTABLE_PATH)";
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"$(SYSTEM_LIBRARY_DIR)/Frameworks/Foundation.framework/Versions/C\"",
|
||||
);
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
WRAPPER_EXTENSION = framework;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
030EF0D614632FD000B04273 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"\"$(TARGET_BUILD_DIR)/Frameworks\"",
|
||||
"$(DEVELOPER_LIBRARY_DIR)/Frameworks",
|
||||
);
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "OCMock/OCMock-Prefix.pch";
|
||||
INFOPLIST_FILE = "OCMockTests/OCMockTests-Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = "@loader_path/../../../Frameworks";
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"${TARGET_BUILD_DIR}/Frameworks\"",
|
||||
"\"$(SYSTEM_LIBRARY_DIR)/Frameworks/Foundation.framework/Versions/C\"",
|
||||
);
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
WRAPPER_EXTENSION = octest;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
030EF0D714632FD000B04273 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"\"${TARGET_BUILD_DIR}/Frameworks\"",
|
||||
"$(DEVELOPER_LIBRARY_DIR)/Frameworks",
|
||||
);
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "OCMock/OCMock-Prefix.pch";
|
||||
INFOPLIST_FILE = "OCMockTests/OCMockTests-Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = "@loader_path/../../../Frameworks";
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"${TARGET_BUILD_DIR}/Frameworks",
|
||||
"\"$(SYSTEM_LIBRARY_DIR)/Frameworks/Foundation.framework/Versions/C\"",
|
||||
);
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
WRAPPER_EXTENSION = octest;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
030EF0E614632FF700B04273 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
|
||||
DSTROOT = /tmp/OCMockLib.dst;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "OCMockLib/OCMockLib-Prefix.pch";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 5.0;
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"$(SYSTEM_LIBRARY_DIR)/Frameworks/Foundation.framework/Versions/C\"",
|
||||
);
|
||||
OTHER_LDFLAGS = "-ObjC";
|
||||
PRODUCT_NAME = OCMock;
|
||||
PUBLIC_HEADERS_FOLDER_PATH = "$(PRODUCT_NAME)";
|
||||
SDKROOT = iphoneos;
|
||||
SKIP_INSTALL = YES;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
030EF0E714632FF700B04273 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
|
||||
DSTROOT = /tmp/OCMockLib.dst;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "OCMockLib/OCMockLib-Prefix.pch";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 5.0;
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"$(SYSTEM_LIBRARY_DIR)/Frameworks/Foundation.framework/Versions/C\"",
|
||||
);
|
||||
OTHER_LDFLAGS = "-ObjC";
|
||||
PRODUCT_NAME = OCMock;
|
||||
PUBLIC_HEADERS_FOLDER_PATH = "$(PRODUCT_NAME)";
|
||||
SDKROOT = iphoneos;
|
||||
SKIP_INSTALL = YES;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VALIDATE_PRODUCT = YES;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
030EF0A114632FD000B04273 /* Build configuration list for PBXProject "OCMock" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
030EF0D014632FD000B04273 /* Debug */,
|
||||
030EF0D114632FD000B04273 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
030EF0D214632FD000B04273 /* Build configuration list for PBXNativeTarget "OCMock" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
030EF0D314632FD000B04273 /* Debug */,
|
||||
030EF0D414632FD000B04273 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
030EF0D514632FD000B04273 /* Build configuration list for PBXNativeTarget "OCMockTests" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
030EF0D614632FD000B04273 /* Debug */,
|
||||
030EF0D714632FD000B04273 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
030EF0E514632FF700B04273 /* Build configuration list for PBXNativeTarget "OCMockLib" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
030EF0E614632FF700B04273 /* Debug */,
|
||||
030EF0E714632FF700B04273 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 030EF09E14632FD000B04273 /* Project object */;
|
||||
}
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
//---------------------------------------------------------------------------------------
|
||||
// $Id$
|
||||
// Copyright (c) 2006-2009 by Mulle Kybernetik. See License file for details.
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@interface NSInvocation(OCMAdditions)
|
||||
|
||||
- (id)getArgumentAtIndexAsObject:(int)argIndex;
|
||||
|
||||
- (NSString *)invocationDescription;
|
||||
|
||||
- (NSString *)argumentDescriptionAtIndex:(int)argIndex;
|
||||
|
||||
- (NSString *)objectDescriptionAtIndex:(int)anInt;
|
||||
- (NSString *)charDescriptionAtIndex:(int)anInt;
|
||||
- (NSString *)unsignedCharDescriptionAtIndex:(int)anInt;
|
||||
- (NSString *)intDescriptionAtIndex:(int)anInt;
|
||||
- (NSString *)unsignedIntDescriptionAtIndex:(int)anInt;
|
||||
- (NSString *)shortDescriptionAtIndex:(int)anInt;
|
||||
- (NSString *)unsignedShortDescriptionAtIndex:(int)anInt;
|
||||
- (NSString *)longDescriptionAtIndex:(int)anInt;
|
||||
- (NSString *)unsignedLongDescriptionAtIndex:(int)anInt;
|
||||
- (NSString *)longLongDescriptionAtIndex:(int)anInt;
|
||||
- (NSString *)unsignedLongLongDescriptionAtIndex:(int)anInt;
|
||||
- (NSString *)doubleDescriptionAtIndex:(int)anInt;
|
||||
- (NSString *)floatDescriptionAtIndex:(int)anInt;
|
||||
- (NSString *)structDescriptionAtIndex:(int)anInt;
|
||||
- (NSString *)pointerDescriptionAtIndex:(int)anInt;
|
||||
- (NSString *)cStringDescriptionAtIndex:(int)anInt;
|
||||
- (NSString *)selectorDescriptionAtIndex:(int)anInt;
|
||||
|
||||
@end
|
||||
+337
@@ -0,0 +1,337 @@
|
||||
//---------------------------------------------------------------------------------------
|
||||
// $Id$
|
||||
// Copyright (c) 2006-2009 by Mulle Kybernetik. See License file for details.
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#import "NSInvocation+OCMAdditions.h"
|
||||
|
||||
|
||||
@implementation NSInvocation(OCMAdditions)
|
||||
|
||||
- (id)getArgumentAtIndexAsObject:(int)argIndex
|
||||
{
|
||||
const char* argType;
|
||||
|
||||
argType = [[self methodSignature] getArgumentTypeAtIndex:argIndex];
|
||||
while(strchr("rnNoORV", argType[0]) != NULL)
|
||||
argType += 1;
|
||||
|
||||
if((strlen(argType) > 1) && (strchr("{^", argType[0]) == NULL) && (strcmp("@?", argType) != 0))
|
||||
[NSException raise:NSInvalidArgumentException format:@"Cannot handle argument type '%s'.", argType];
|
||||
|
||||
switch (argType[0])
|
||||
{
|
||||
case '#':
|
||||
case '@':
|
||||
{
|
||||
id value;
|
||||
[self getArgument:&value atIndex:argIndex];
|
||||
return value;
|
||||
}
|
||||
case ':':
|
||||
{
|
||||
SEL s = (SEL)0;
|
||||
[self getArgument:&s atIndex:argIndex];
|
||||
id value = NSStringFromSelector(s);
|
||||
return value;
|
||||
}
|
||||
case 'i':
|
||||
{
|
||||
int value;
|
||||
[self getArgument:&value atIndex:argIndex];
|
||||
return [NSNumber numberWithInt:value];
|
||||
}
|
||||
case 's':
|
||||
{
|
||||
short value;
|
||||
[self getArgument:&value atIndex:argIndex];
|
||||
return [NSNumber numberWithShort:value];
|
||||
}
|
||||
case 'l':
|
||||
{
|
||||
long value;
|
||||
[self getArgument:&value atIndex:argIndex];
|
||||
return [NSNumber numberWithLong:value];
|
||||
}
|
||||
case 'q':
|
||||
{
|
||||
long long value;
|
||||
[self getArgument:&value atIndex:argIndex];
|
||||
return [NSNumber numberWithLongLong:value];
|
||||
}
|
||||
case 'c':
|
||||
{
|
||||
char value;
|
||||
[self getArgument:&value atIndex:argIndex];
|
||||
return [NSNumber numberWithChar:value];
|
||||
}
|
||||
case 'C':
|
||||
{
|
||||
unsigned char value;
|
||||
[self getArgument:&value atIndex:argIndex];
|
||||
return [NSNumber numberWithUnsignedChar:value];
|
||||
}
|
||||
case 'I':
|
||||
{
|
||||
unsigned int value;
|
||||
[self getArgument:&value atIndex:argIndex];
|
||||
return [NSNumber numberWithUnsignedInt:value];
|
||||
}
|
||||
case 'S':
|
||||
{
|
||||
unsigned short value;
|
||||
[self getArgument:&value atIndex:argIndex];
|
||||
return [NSNumber numberWithUnsignedShort:value];
|
||||
}
|
||||
case 'L':
|
||||
{
|
||||
unsigned long value;
|
||||
[self getArgument:&value atIndex:argIndex];
|
||||
return [NSNumber numberWithUnsignedLong:value];
|
||||
}
|
||||
case 'Q':
|
||||
{
|
||||
unsigned long long value;
|
||||
[self getArgument:&value atIndex:argIndex];
|
||||
return [NSNumber numberWithUnsignedLongLong:value];
|
||||
}
|
||||
case 'f':
|
||||
{
|
||||
float value;
|
||||
[self getArgument:&value atIndex:argIndex];
|
||||
return [NSNumber numberWithFloat:value];
|
||||
}
|
||||
case 'd':
|
||||
{
|
||||
double value;
|
||||
[self getArgument:&value atIndex:argIndex];
|
||||
return [NSNumber numberWithDouble:value];
|
||||
}
|
||||
case 'B':
|
||||
{
|
||||
bool value;
|
||||
[self getArgument:&value atIndex:argIndex];
|
||||
return [NSNumber numberWithBool:value];
|
||||
}
|
||||
case '^':
|
||||
{
|
||||
void *value = NULL;
|
||||
[self getArgument:&value atIndex:argIndex];
|
||||
return [NSValue valueWithPointer:value];
|
||||
}
|
||||
case '{': // structure
|
||||
{
|
||||
NSUInteger maxArgSize = [[self methodSignature] frameLength];
|
||||
NSMutableData *argumentData = [[[NSMutableData alloc] initWithLength:maxArgSize] autorelease];
|
||||
[self getArgument:[argumentData mutableBytes] atIndex:argIndex];
|
||||
return [NSValue valueWithBytes:[argumentData bytes] objCType:argType];
|
||||
}
|
||||
|
||||
}
|
||||
[NSException raise:NSInvalidArgumentException format:@"Argument type '%s' not supported", argType];
|
||||
return nil;
|
||||
}
|
||||
|
||||
- (NSString *)invocationDescription
|
||||
{
|
||||
NSMethodSignature *methodSignature = [self methodSignature];
|
||||
NSUInteger numberOfArgs = [methodSignature numberOfArguments];
|
||||
|
||||
if (numberOfArgs == 2)
|
||||
return NSStringFromSelector([self selector]);
|
||||
|
||||
NSArray *selectorParts = [NSStringFromSelector([self selector]) componentsSeparatedByString:@":"];
|
||||
NSMutableString *description = [[NSMutableString alloc] init];
|
||||
unsigned int i;
|
||||
for(i = 2; i < numberOfArgs; i++)
|
||||
{
|
||||
[description appendFormat:@"%@%@:", (i > 2 ? @" " : @""), [selectorParts objectAtIndex:(i - 2)]];
|
||||
[description appendString:[self argumentDescriptionAtIndex:i]];
|
||||
}
|
||||
|
||||
return [description autorelease];
|
||||
}
|
||||
|
||||
- (NSString *)argumentDescriptionAtIndex:(int)argIndex
|
||||
{
|
||||
const char *argType = [[self methodSignature] getArgumentTypeAtIndex:argIndex];
|
||||
if(strchr("rnNoORV", argType[0]) != NULL)
|
||||
argType += 1;
|
||||
|
||||
switch(*argType)
|
||||
{
|
||||
case '@': return [self objectDescriptionAtIndex:argIndex];
|
||||
case 'c': return [self charDescriptionAtIndex:argIndex];
|
||||
case 'C': return [self unsignedCharDescriptionAtIndex:argIndex];
|
||||
case 'i': return [self intDescriptionAtIndex:argIndex];
|
||||
case 'I': return [self unsignedIntDescriptionAtIndex:argIndex];
|
||||
case 's': return [self shortDescriptionAtIndex:argIndex];
|
||||
case 'S': return [self unsignedShortDescriptionAtIndex:argIndex];
|
||||
case 'l': return [self longDescriptionAtIndex:argIndex];
|
||||
case 'L': return [self unsignedLongDescriptionAtIndex:argIndex];
|
||||
case 'q': return [self longLongDescriptionAtIndex:argIndex];
|
||||
case 'Q': return [self unsignedLongLongDescriptionAtIndex:argIndex];
|
||||
case 'd': return [self doubleDescriptionAtIndex:argIndex];
|
||||
case 'f': return [self floatDescriptionAtIndex:argIndex];
|
||||
// Why does this throw EXC_BAD_ACCESS when appending the string?
|
||||
// case NSObjCStructType: return [self structDescriptionAtIndex:index];
|
||||
case '^': return [self pointerDescriptionAtIndex:argIndex];
|
||||
case '*': return [self cStringDescriptionAtIndex:argIndex];
|
||||
case ':': return [self selectorDescriptionAtIndex:argIndex];
|
||||
default: return [@"<??" stringByAppendingString:@">"]; // avoid confusion with trigraphs...
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
- (NSString *)objectDescriptionAtIndex:(int)anInt
|
||||
{
|
||||
id object;
|
||||
|
||||
[self getArgument:&object atIndex:anInt];
|
||||
if (object == nil)
|
||||
return @"nil";
|
||||
else if(![object isProxy] && [object isKindOfClass:[NSString class]])
|
||||
return [NSString stringWithFormat:@"@\"%@\"", [object description]];
|
||||
else
|
||||
return [object description];
|
||||
}
|
||||
|
||||
- (NSString *)charDescriptionAtIndex:(int)anInt
|
||||
{
|
||||
unsigned char buffer[128];
|
||||
memset(buffer, 0x0, 128);
|
||||
|
||||
[self getArgument:&buffer atIndex:anInt];
|
||||
|
||||
// If there's only one character in the buffer, and it's 0 or 1, then we have a BOOL
|
||||
if (buffer[1] == '\0' && (buffer[0] == 0 || buffer[0] == 1))
|
||||
return [NSString stringWithFormat:@"%@", (buffer[0] == 1 ? @"YES" : @"NO")];
|
||||
else
|
||||
return [NSString stringWithFormat:@"'%c'", *buffer];
|
||||
}
|
||||
|
||||
- (NSString *)unsignedCharDescriptionAtIndex:(int)anInt
|
||||
{
|
||||
unsigned char buffer[128];
|
||||
memset(buffer, 0x0, 128);
|
||||
|
||||
[self getArgument:&buffer atIndex:anInt];
|
||||
return [NSString stringWithFormat:@"'%c'", *buffer];
|
||||
}
|
||||
|
||||
- (NSString *)intDescriptionAtIndex:(int)anInt
|
||||
{
|
||||
int intValue;
|
||||
|
||||
[self getArgument:&intValue atIndex:anInt];
|
||||
return [NSString stringWithFormat:@"%d", intValue];
|
||||
}
|
||||
|
||||
- (NSString *)unsignedIntDescriptionAtIndex:(int)anInt
|
||||
{
|
||||
unsigned int intValue;
|
||||
|
||||
[self getArgument:&intValue atIndex:anInt];
|
||||
return [NSString stringWithFormat:@"%d", intValue];
|
||||
}
|
||||
|
||||
- (NSString *)shortDescriptionAtIndex:(int)anInt
|
||||
{
|
||||
short shortValue;
|
||||
|
||||
[self getArgument:&shortValue atIndex:anInt];
|
||||
return [NSString stringWithFormat:@"%hi", shortValue];
|
||||
}
|
||||
|
||||
- (NSString *)unsignedShortDescriptionAtIndex:(int)anInt
|
||||
{
|
||||
unsigned short shortValue;
|
||||
|
||||
[self getArgument:&shortValue atIndex:anInt];
|
||||
return [NSString stringWithFormat:@"%hu", shortValue];
|
||||
}
|
||||
|
||||
- (NSString *)longDescriptionAtIndex:(int)anInt
|
||||
{
|
||||
long longValue;
|
||||
|
||||
[self getArgument:&longValue atIndex:anInt];
|
||||
return [NSString stringWithFormat:@"%ld", longValue];
|
||||
}
|
||||
|
||||
- (NSString *)unsignedLongDescriptionAtIndex:(int)anInt
|
||||
{
|
||||
unsigned long longValue;
|
||||
|
||||
[self getArgument:&longValue atIndex:anInt];
|
||||
return [NSString stringWithFormat:@"%lu", longValue];
|
||||
}
|
||||
|
||||
- (NSString *)longLongDescriptionAtIndex:(int)anInt
|
||||
{
|
||||
long long longLongValue;
|
||||
|
||||
[self getArgument:&longLongValue atIndex:anInt];
|
||||
return [NSString stringWithFormat:@"%qi", longLongValue];
|
||||
}
|
||||
|
||||
- (NSString *)unsignedLongLongDescriptionAtIndex:(int)anInt
|
||||
{
|
||||
unsigned long long longLongValue;
|
||||
|
||||
[self getArgument:&longLongValue atIndex:anInt];
|
||||
return [NSString stringWithFormat:@"%qu", longLongValue];
|
||||
}
|
||||
|
||||
- (NSString *)doubleDescriptionAtIndex:(int)anInt;
|
||||
{
|
||||
double doubleValue;
|
||||
|
||||
[self getArgument:&doubleValue atIndex:anInt];
|
||||
return [NSString stringWithFormat:@"%f", doubleValue];
|
||||
}
|
||||
|
||||
- (NSString *)floatDescriptionAtIndex:(int)anInt
|
||||
{
|
||||
float floatValue;
|
||||
|
||||
[self getArgument:&floatValue atIndex:anInt];
|
||||
return [NSString stringWithFormat:@"%f", floatValue];
|
||||
}
|
||||
|
||||
- (NSString *)structDescriptionAtIndex:(int)anInt;
|
||||
{
|
||||
void *buffer;
|
||||
|
||||
[self getArgument:&buffer atIndex:anInt];
|
||||
return [NSString stringWithFormat:@":(struct)%p", buffer];
|
||||
}
|
||||
|
||||
- (NSString *)pointerDescriptionAtIndex:(int)anInt
|
||||
{
|
||||
void *buffer;
|
||||
|
||||
[self getArgument:&buffer atIndex:anInt];
|
||||
return [NSString stringWithFormat:@"%p", buffer];
|
||||
}
|
||||
|
||||
- (NSString *)cStringDescriptionAtIndex:(int)anInt
|
||||
{
|
||||
char buffer[128];
|
||||
|
||||
memset(buffer, 0x0, 128);
|
||||
|
||||
[self getArgument:&buffer atIndex:anInt];
|
||||
return [NSString stringWithFormat:@"\"%s\"", buffer];
|
||||
}
|
||||
|
||||
- (NSString *)selectorDescriptionAtIndex:(int)anInt
|
||||
{
|
||||
SEL selectorValue;
|
||||
|
||||
[self getArgument:&selectorValue atIndex:anInt];
|
||||
return [NSString stringWithFormat:@"@selector(%@)", NSStringFromSelector(selectorValue)];
|
||||
}
|
||||
|
||||
@end
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
//---------------------------------------------------------------------------------------
|
||||
// $Id$
|
||||
// Copyright (c) 2009 by Mulle Kybernetik. See License file for details.
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@interface NSMethodSignature(PrivateAPI)
|
||||
|
||||
+ (id)signatureWithObjCTypes:(const char *)types;
|
||||
|
||||
@end
|
||||
|
||||
@interface NSMethodSignature(OCMAdditions)
|
||||
|
||||
- (const char *)methodReturnTypeWithoutQualifiers;
|
||||
|
||||
@end
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
//---------------------------------------------------------------------------------------
|
||||
// $Id$
|
||||
// Copyright (c) 2009 by Mulle Kybernetik. See License file for details.
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#import "NSMethodSignature+OCMAdditions.h"
|
||||
|
||||
|
||||
@implementation NSMethodSignature(OCMAdditions)
|
||||
|
||||
- (const char *)methodReturnTypeWithoutQualifiers
|
||||
{
|
||||
const char *returnType = [self methodReturnType];
|
||||
while(strchr("rnNoORV", returnType[0]) != NULL)
|
||||
returnType += 1;
|
||||
return returnType;
|
||||
}
|
||||
|
||||
@end
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
//---------------------------------------------------------------------------------------
|
||||
// $Id$
|
||||
// Copyright (c) 2009 by Mulle Kybernetik. See License file for details.
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@class OCMockObserver;
|
||||
|
||||
|
||||
@interface NSNotificationCenter(OCMAdditions)
|
||||
|
||||
- (void)addMockObserver:(OCMockObserver *)notificationObserver name:(NSString *)notificationName object:(id)notificationSender;
|
||||
|
||||
@end
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
//---------------------------------------------------------------------------------------
|
||||
// $Id$
|
||||
// Copyright (c) 2009 by Mulle Kybernetik. See License file for details.
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#import "NSNotificationCenter+OCMAdditions.h"
|
||||
#import "OCObserverMockObject.h"
|
||||
|
||||
|
||||
@implementation NSNotificationCenter(OCMAdditions)
|
||||
|
||||
- (void)addMockObserver:(OCMockObserver *)notificationObserver name:(NSString *)notificationName object:(id)notificationSender
|
||||
{
|
||||
[self addObserver:notificationObserver selector:@selector(handleNotification:) name:notificationName object:notificationSender];
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,21 @@
|
||||
//---------------------------------------------------------------------------------------
|
||||
// $Id$
|
||||
// Copyright (c) 2005-2013 by Mulle Kybernetik. See License file for details.
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#import <OCMock/OCMockObject.h>
|
||||
|
||||
@interface OCClassMockObject : OCMockObject
|
||||
{
|
||||
Class mockedClass;
|
||||
NSMutableDictionary *replacedClassMethods;
|
||||
}
|
||||
|
||||
- (id)initWithClass:(Class)aClass;
|
||||
|
||||
- (Class)mockedClass;
|
||||
|
||||
- (void)setupClassForClassMethodMocking;
|
||||
- (void)setupForwarderForClassMethodSelector:(SEL)selector;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,160 @@
|
||||
//---------------------------------------------------------------------------------------
|
||||
// $Id$
|
||||
// Copyright (c) 2005-2013 by Mulle Kybernetik. See License file for details.
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#import <objc/runtime.h>
|
||||
#import "OCClassMockObject.h"
|
||||
|
||||
|
||||
@implementation OCClassMockObject
|
||||
|
||||
#pragma mark Mock table
|
||||
|
||||
static NSMutableDictionary *mockTable;
|
||||
|
||||
+ (void)initialize
|
||||
{
|
||||
if(self == [OCClassMockObject class])
|
||||
mockTable = [[NSMutableDictionary alloc] init];
|
||||
}
|
||||
|
||||
+ (void)rememberMock:(OCClassMockObject *)mock forClass:(Class)aClass
|
||||
{
|
||||
@synchronized(mockTable)
|
||||
{
|
||||
[mockTable setObject:[NSValue valueWithNonretainedObject:mock] forKey:[NSValue valueWithNonretainedObject:aClass]];
|
||||
}
|
||||
}
|
||||
|
||||
+ (void)forgetMockForClass:(Class)aClass
|
||||
{
|
||||
@synchronized(mockTable)
|
||||
{
|
||||
[mockTable removeObjectForKey:[NSValue valueWithNonretainedObject:aClass]];
|
||||
}
|
||||
}
|
||||
|
||||
+ (OCClassMockObject *)existingMockForClass:(Class)aClass
|
||||
{
|
||||
@synchronized(mockTable)
|
||||
{
|
||||
OCClassMockObject *mock = [[mockTable objectForKey:[NSValue valueWithNonretainedObject:aClass]] nonretainedObjectValue];
|
||||
if(mock == nil)
|
||||
[NSException raise:NSInternalInconsistencyException format:@"No mock for class %p", aClass];
|
||||
return mock;
|
||||
}
|
||||
}
|
||||
|
||||
#pragma mark Initialisers, description, accessors, etc.
|
||||
|
||||
- (id)initWithClass:(Class)aClass
|
||||
{
|
||||
[super init];
|
||||
mockedClass = aClass;
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)dealloc
|
||||
{
|
||||
if(replacedClassMethods != nil)
|
||||
{
|
||||
[self stopMocking];
|
||||
[[self class] forgetMockForClass:mockedClass];
|
||||
[replacedClassMethods release];
|
||||
}
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
- (NSString *)description
|
||||
{
|
||||
return [NSString stringWithFormat:@"OCMockObject[%@]", NSStringFromClass(mockedClass)];
|
||||
}
|
||||
|
||||
- (Class)mockedClass
|
||||
{
|
||||
return mockedClass;
|
||||
}
|
||||
|
||||
|
||||
#pragma mark Class method mocking
|
||||
|
||||
- (void)setupClassForClassMethodMocking
|
||||
{
|
||||
if(replacedClassMethods != nil)
|
||||
return;
|
||||
|
||||
replacedClassMethods = [[NSMutableDictionary alloc] init];
|
||||
[[self class] rememberMock:self forClass:mockedClass];
|
||||
|
||||
Method myForwardInvocationMethod = class_getInstanceMethod([self class], @selector(forwardInvocationForClassObject:));
|
||||
IMP myForwardInvocationImp = method_getImplementation(myForwardInvocationMethod);
|
||||
const char *forwardInvocationTypes = method_getTypeEncoding(myForwardInvocationMethod);
|
||||
Class metaClass = objc_getMetaClass(class_getName(mockedClass));
|
||||
|
||||
IMP replacedForwardInvocationImp = class_replaceMethod(metaClass, @selector(forwardInvocation:), myForwardInvocationImp, forwardInvocationTypes);
|
||||
|
||||
[replacedClassMethods setObject:[NSValue valueWithPointer:replacedForwardInvocationImp] forKey:NSStringFromSelector(@selector(forwardInvocation:))];
|
||||
}
|
||||
|
||||
- (void)setupForwarderForClassMethodSelector:(SEL)selector
|
||||
{
|
||||
Method originalMethod = class_getClassMethod(mockedClass, selector);
|
||||
Class metaClass = objc_getMetaClass(class_getName(mockedClass));
|
||||
|
||||
IMP forwarderImp = [metaClass instanceMethodForSelector:@selector(aMethodThatMustNotExist)];
|
||||
IMP replacedMethod = class_replaceMethod(metaClass, method_getName(originalMethod), forwarderImp, method_getTypeEncoding(originalMethod));
|
||||
|
||||
[replacedClassMethods setObject:[NSValue valueWithPointer:replacedMethod] forKey:NSStringFromSelector(selector)];
|
||||
}
|
||||
|
||||
- (void)removeForwarderForClassMethodSelector:(SEL)selector
|
||||
{
|
||||
Class metaClass = objc_getMetaClass(class_getName(mockedClass));
|
||||
NSValue *originalMethodPointer = [replacedClassMethods objectForKey:NSStringFromSelector(selector)];
|
||||
IMP originalMethod = [originalMethodPointer pointerValue];
|
||||
if(originalMethod) {
|
||||
class_replaceMethod(metaClass, selector, originalMethod, 0);
|
||||
} else {
|
||||
IMP forwarderImp = [metaClass instanceMethodForSelector:@selector(aMethodThatMustNotExist)];
|
||||
class_replaceMethod(metaClass, selector, forwarderImp, 0);
|
||||
}
|
||||
}
|
||||
|
||||
- (void)forwardInvocationForClassObject:(NSInvocation *)anInvocation
|
||||
{
|
||||
// in here "self" is a reference to the real class, not the mock
|
||||
OCClassMockObject *mock = [OCClassMockObject existingMockForClass:(Class)self];
|
||||
if([mock handleInvocation:anInvocation] == NO)
|
||||
{
|
||||
// if mock doesn't want to handle the invocation, maybe all expects have occurred, we remove the forwarder and try again
|
||||
[mock removeForwarderForClassMethodSelector:[anInvocation selector]];
|
||||
[anInvocation invoke];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)stopMocking
|
||||
{
|
||||
for(NSString *replacedMethod in replacedClassMethods)
|
||||
[self removeForwarderForClassMethodSelector:NSSelectorFromString(replacedMethod)];
|
||||
}
|
||||
|
||||
|
||||
#pragma mark Proxy API
|
||||
|
||||
- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector
|
||||
{
|
||||
return [mockedClass instanceMethodSignatureForSelector:aSelector];
|
||||
}
|
||||
|
||||
- (BOOL)respondsToSelector:(SEL)selector
|
||||
{
|
||||
return [mockedClass instancesRespondToSelector:selector];
|
||||
}
|
||||
|
||||
- (BOOL)isKindOfClass:(Class)aClass
|
||||
{
|
||||
return [mockedClass isSubclassOfClass:aClass];
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,34 @@
|
||||
//---------------------------------------------------------------------------------------
|
||||
// $Id$
|
||||
// Copyright (c) 2009-2013 by Mulle Kybernetik. See License file for details.
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@interface OCMArg : NSObject
|
||||
|
||||
// constraining arguments
|
||||
|
||||
+ (id)any;
|
||||
+ (void *)anyPointer;
|
||||
+ (id)isNil;
|
||||
+ (id)isNotNil;
|
||||
+ (id)isNotEqual:(id)value;
|
||||
+ (id)checkWithSelector:(SEL)selector onObject:(id)anObject;
|
||||
#if NS_BLOCKS_AVAILABLE
|
||||
+ (id)checkWithBlock:(BOOL (^)(id obj))block;
|
||||
#endif
|
||||
|
||||
// manipulating arguments
|
||||
|
||||
+ (id *)setTo:(id)value;
|
||||
+ (void *)setToValue:(NSValue *)value;
|
||||
|
||||
// internal use only
|
||||
|
||||
+ (id)resolveSpecialValues:(NSValue *)value;
|
||||
|
||||
@end
|
||||
|
||||
#define OCMOCK_ANY [OCMArg any]
|
||||
#define OCMOCK_VALUE(variable) [NSValue value:&variable withObjCType:@encode(__typeof__(variable))]
|
||||
@@ -0,0 +1,79 @@
|
||||
//---------------------------------------------------------------------------------------
|
||||
// $Id$
|
||||
// Copyright (c) 2009-2013 by Mulle Kybernetik. See License file for details.
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#import <objc/runtime.h>
|
||||
#import <OCMock/OCMArg.h>
|
||||
#import <OCMock/OCMConstraint.h>
|
||||
#import "OCMPassByRefSetter.h"
|
||||
#import "OCMConstraint.h"
|
||||
|
||||
@implementation OCMArg
|
||||
|
||||
+ (id)any
|
||||
{
|
||||
return [OCMAnyConstraint constraint];
|
||||
}
|
||||
|
||||
+ (void *)anyPointer
|
||||
{
|
||||
return (void *)0x01234567;
|
||||
}
|
||||
|
||||
+ (id)isNil
|
||||
{
|
||||
return [OCMIsNilConstraint constraint];
|
||||
}
|
||||
|
||||
+ (id)isNotNil
|
||||
{
|
||||
return [OCMIsNotNilConstraint constraint];
|
||||
}
|
||||
|
||||
+ (id)isNotEqual:(id)value
|
||||
{
|
||||
OCMIsNotEqualConstraint *constraint = [OCMIsNotEqualConstraint constraint];
|
||||
constraint->testValue = value;
|
||||
return constraint;
|
||||
}
|
||||
|
||||
+ (id)checkWithSelector:(SEL)selector onObject:(id)anObject
|
||||
{
|
||||
return [OCMConstraint constraintWithSelector:selector onObject:anObject];
|
||||
}
|
||||
|
||||
#if NS_BLOCKS_AVAILABLE
|
||||
|
||||
+ (id)checkWithBlock:(BOOL (^)(id))block
|
||||
{
|
||||
return [[[OCMBlockConstraint alloc] initWithConstraintBlock:block] autorelease];
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
+ (id *)setTo:(id)value
|
||||
{
|
||||
return (id *)[[[OCMPassByRefSetter alloc] initWithValue:value] autorelease];
|
||||
}
|
||||
|
||||
+ (void *)setToValue:(NSValue *)value
|
||||
{
|
||||
return (id *)[[[OCMPassByRefSetter alloc] initWithValue:value] autorelease];
|
||||
}
|
||||
|
||||
+ (id)resolveSpecialValues:(NSValue *)value
|
||||
{
|
||||
const char *type = [value objCType];
|
||||
if(type[0] == '^')
|
||||
{
|
||||
void *pointer = [value pointerValue];
|
||||
if(pointer == (void *)0x01234567)
|
||||
return [OCMArg any];
|
||||
if((pointer != NULL) && (object_getClass((id)pointer) == [OCMPassByRefSetter class]))
|
||||
return (id)pointer;
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,21 @@
|
||||
//---------------------------------------------------------------------------------------
|
||||
// $Id$
|
||||
// Copyright (c) 2010 by Mulle Kybernetik. See License file for details.
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#if NS_BLOCKS_AVAILABLE
|
||||
|
||||
@interface OCMBlockCaller : NSObject
|
||||
{
|
||||
void (^block)(NSInvocation *);
|
||||
}
|
||||
|
||||
- (id)initWithCallBlock:(void (^)(NSInvocation *))theBlock;
|
||||
|
||||
- (void)handleInvocation:(NSInvocation *)anInvocation;
|
||||
|
||||
@end
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,32 @@
|
||||
//---------------------------------------------------------------------------------------
|
||||
// $Id$
|
||||
// Copyright (c) 2010 by Mulle Kybernetik. See License file for details.
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#import "OCMBlockCaller.h"
|
||||
|
||||
#if NS_BLOCKS_AVAILABLE
|
||||
|
||||
@implementation OCMBlockCaller
|
||||
|
||||
-(id)initWithCallBlock:(void (^)(NSInvocation *))theBlock
|
||||
{
|
||||
self = [super init];
|
||||
block = [theBlock copy];
|
||||
return self;
|
||||
}
|
||||
|
||||
-(void)dealloc
|
||||
{
|
||||
[block release];
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
- (void)handleInvocation:(NSInvocation *)anInvocation
|
||||
{
|
||||
block(anInvocation);
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
#endif
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
//---------------------------------------------------------------------------------------
|
||||
// $Id$
|
||||
// Copyright (c) 2009 by Mulle Kybernetik. See License file for details.
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#import "OCMReturnValueProvider.h"
|
||||
|
||||
@interface OCMBoxedReturnValueProvider : OCMReturnValueProvider
|
||||
{
|
||||
}
|
||||
|
||||
@end
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
//---------------------------------------------------------------------------------------
|
||||
// $Id$
|
||||
// Copyright (c) 2009 by Mulle Kybernetik. See License file for details.
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#import "OCMBoxedReturnValueProvider.h"
|
||||
|
||||
|
||||
@implementation OCMBoxedReturnValueProvider
|
||||
|
||||
- (void)handleInvocation:(NSInvocation *)anInvocation
|
||||
{
|
||||
if(strcmp([[anInvocation methodSignature] methodReturnType], [(NSValue *)returnValue objCType]) != 0)
|
||||
@throw [NSException exceptionWithName:NSInvalidArgumentException reason:[NSString stringWithFormat:@"Return value does not match method signature; signature declares '%s' but value is '%s'.", [[anInvocation methodSignature] methodReturnType], [(NSValue *)returnValue objCType]] userInfo:nil];
|
||||
void *buffer = malloc([[anInvocation methodSignature] methodReturnLength]);
|
||||
[returnValue getValue:buffer];
|
||||
[anInvocation setReturnValue:buffer];
|
||||
free(buffer);
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,64 @@
|
||||
//---------------------------------------------------------------------------------------
|
||||
// $Id$
|
||||
// Copyright (c) 2007-2010 by Mulle Kybernetik. See License file for details.
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
|
||||
@interface OCMConstraint : NSObject
|
||||
|
||||
+ (id)constraint;
|
||||
- (BOOL)evaluate:(id)value;
|
||||
|
||||
// if you are looking for any, isNil, etc, they have moved to OCMArg
|
||||
|
||||
// try to use [OCMArg checkWith...] instead of the constraintWith... methods below
|
||||
|
||||
+ (id)constraintWithSelector:(SEL)aSelector onObject:(id)anObject;
|
||||
+ (id)constraintWithSelector:(SEL)aSelector onObject:(id)anObject withValue:(id)aValue;
|
||||
|
||||
|
||||
@end
|
||||
|
||||
@interface OCMAnyConstraint : OCMConstraint
|
||||
@end
|
||||
|
||||
@interface OCMIsNilConstraint : OCMConstraint
|
||||
@end
|
||||
|
||||
@interface OCMIsNotNilConstraint : OCMConstraint
|
||||
@end
|
||||
|
||||
@interface OCMIsNotEqualConstraint : OCMConstraint
|
||||
{
|
||||
@public
|
||||
id testValue;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@interface OCMInvocationConstraint : OCMConstraint
|
||||
{
|
||||
@public
|
||||
NSInvocation *invocation;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
#if NS_BLOCKS_AVAILABLE
|
||||
|
||||
@interface OCMBlockConstraint : OCMConstraint
|
||||
{
|
||||
BOOL (^block)(id);
|
||||
}
|
||||
|
||||
- (id)initWithConstraintBlock:(BOOL (^)(id))block;
|
||||
|
||||
@end
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#define CONSTRAINT(aSelector) [OCMConstraint constraintWithSelector:aSelector onObject:self]
|
||||
#define CONSTRAINTV(aSelector, aValue) [OCMConstraint constraintWithSelector:aSelector onObject:self withValue:(aValue)]
|
||||
@@ -0,0 +1,142 @@
|
||||
//---------------------------------------------------------------------------------------
|
||||
// $Id$
|
||||
// Copyright (c) 2007-2010 by Mulle Kybernetik. See License file for details.
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#import <OCMock/OCMConstraint.h>
|
||||
|
||||
|
||||
@implementation OCMConstraint
|
||||
|
||||
+ (id)constraint
|
||||
{
|
||||
return [[[self alloc] init] autorelease];
|
||||
}
|
||||
|
||||
- (BOOL)evaluate:(id)value
|
||||
{
|
||||
return NO;
|
||||
}
|
||||
|
||||
|
||||
+ (id)constraintWithSelector:(SEL)aSelector onObject:(id)anObject
|
||||
{
|
||||
OCMInvocationConstraint *constraint = [OCMInvocationConstraint constraint];
|
||||
NSMethodSignature *signature = [anObject methodSignatureForSelector:aSelector];
|
||||
if(signature == nil)
|
||||
[NSException raise:NSInvalidArgumentException format:@"Unkown selector %@ used in constraint.", NSStringFromSelector(aSelector)];
|
||||
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature];
|
||||
[invocation setTarget:anObject];
|
||||
[invocation setSelector:aSelector];
|
||||
constraint->invocation = invocation;
|
||||
return constraint;
|
||||
}
|
||||
|
||||
+ (id)constraintWithSelector:(SEL)aSelector onObject:(id)anObject withValue:(id)aValue
|
||||
{
|
||||
OCMInvocationConstraint *constraint = [self constraintWithSelector:aSelector onObject:anObject];
|
||||
if([[constraint->invocation methodSignature] numberOfArguments] < 4)
|
||||
[NSException raise:NSInvalidArgumentException format:@"Constraint with value requires selector with two arguments."];
|
||||
[constraint->invocation setArgument:&aValue atIndex:3];
|
||||
return constraint;
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
|
||||
|
||||
|
||||
#pragma mark -
|
||||
|
||||
@implementation OCMAnyConstraint
|
||||
|
||||
- (BOOL)evaluate:(id)value
|
||||
{
|
||||
return YES;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
|
||||
|
||||
#pragma mark -
|
||||
|
||||
@implementation OCMIsNilConstraint
|
||||
|
||||
- (BOOL)evaluate:(id)value
|
||||
{
|
||||
return value == nil;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
|
||||
|
||||
#pragma mark -
|
||||
|
||||
@implementation OCMIsNotNilConstraint
|
||||
|
||||
- (BOOL)evaluate:(id)value
|
||||
{
|
||||
return value != nil;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
|
||||
|
||||
#pragma mark -
|
||||
|
||||
@implementation OCMIsNotEqualConstraint
|
||||
|
||||
- (BOOL)evaluate:(id)value
|
||||
{
|
||||
return ![value isEqual:testValue];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
|
||||
|
||||
#pragma mark -
|
||||
|
||||
@implementation OCMInvocationConstraint
|
||||
|
||||
- (BOOL)evaluate:(id)value
|
||||
{
|
||||
[invocation setArgument:&value atIndex:2]; // should test if constraint takes arg
|
||||
[invocation invoke];
|
||||
BOOL returnValue;
|
||||
[invocation getReturnValue:&returnValue];
|
||||
return returnValue;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
#pragma mark -
|
||||
|
||||
#if NS_BLOCKS_AVAILABLE
|
||||
|
||||
@implementation OCMBlockConstraint
|
||||
|
||||
- (id)initWithConstraintBlock:(BOOL (^)(id))aBlock;
|
||||
{
|
||||
self = [super init];
|
||||
block = [aBlock copy];
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)dealloc {
|
||||
[block release];
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
- (BOOL)evaluate:(id)value
|
||||
{
|
||||
return block(value);
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
|
||||
#endif
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
//---------------------------------------------------------------------------------------
|
||||
// $Id$
|
||||
// Copyright (c) 2009 by Mulle Kybernetik. See License file for details.
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#import "OCMReturnValueProvider.h"
|
||||
|
||||
@interface OCMExceptionReturnValueProvider : OCMReturnValueProvider
|
||||
{
|
||||
}
|
||||
|
||||
@end
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
//---------------------------------------------------------------------------------------
|
||||
// $Id$
|
||||
// Copyright (c) 2009 by Mulle Kybernetik. See License file for details.
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#import "OCMExceptionReturnValueProvider.h"
|
||||
|
||||
|
||||
@implementation OCMExceptionReturnValueProvider
|
||||
|
||||
- (void)handleInvocation:(NSInvocation *)anInvocation
|
||||
{
|
||||
@throw returnValue;
|
||||
}
|
||||
|
||||
@end
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
//---------------------------------------------------------------------------------------
|
||||
// $Id$
|
||||
// Copyright (c) 2009 by Mulle Kybernetik. See License file for details.
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@interface OCMIndirectReturnValueProvider : NSObject
|
||||
{
|
||||
id provider;
|
||||
SEL selector;
|
||||
}
|
||||
|
||||
- (id)initWithProvider:(id)aProvider andSelector:(SEL)aSelector;
|
||||
|
||||
- (void)handleInvocation:(NSInvocation *)anInvocation;
|
||||
|
||||
@end
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
//---------------------------------------------------------------------------------------
|
||||
// $Id$
|
||||
// Copyright (c) 2009 by Mulle Kybernetik. See License file for details.
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#import "NSMethodSignature+OCMAdditions.h"
|
||||
#import "OCMIndirectReturnValueProvider.h"
|
||||
|
||||
|
||||
@implementation OCMIndirectReturnValueProvider
|
||||
|
||||
- (id)initWithProvider:(id)aProvider andSelector:(SEL)aSelector
|
||||
{
|
||||
self = [super init];
|
||||
provider = [aProvider retain];
|
||||
selector = aSelector;
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)dealloc
|
||||
{
|
||||
[provider release];
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
- (void)handleInvocation:(NSInvocation *)anInvocation
|
||||
{
|
||||
[anInvocation setTarget:provider];
|
||||
[anInvocation setSelector:selector];
|
||||
[anInvocation invoke];
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,17 @@
|
||||
//---------------------------------------------------------------------------------------
|
||||
// $Id$
|
||||
// Copyright (c) 2009 by Mulle Kybernetik. See License file for details.
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@interface OCMNotificationPoster : NSObject
|
||||
{
|
||||
NSNotification *notification;
|
||||
}
|
||||
|
||||
- (id)initWithNotification:(id)aNotification;
|
||||
|
||||
- (void)handleInvocation:(NSInvocation *)anInvocation;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,30 @@
|
||||
//---------------------------------------------------------------------------------------
|
||||
// $Id$
|
||||
// Copyright (c) 2009 by Mulle Kybernetik. See License file for details.
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#import "OCMNotificationPoster.h"
|
||||
|
||||
|
||||
@implementation OCMNotificationPoster
|
||||
|
||||
- (id)initWithNotification:(id)aNotification
|
||||
{
|
||||
self = [super init];
|
||||
notification = [aNotification retain];
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)dealloc
|
||||
{
|
||||
[notification release];
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
- (void)handleInvocation:(NSInvocation *)anInvocation
|
||||
{
|
||||
[[NSNotificationCenter defaultCenter] postNotification:notification];
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,19 @@
|
||||
//---------------------------------------------------------------------------------------
|
||||
// $Id$
|
||||
// Copyright (c) 2009 by Mulle Kybernetik. See License file for details.
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@interface OCMObserverRecorder : NSObject
|
||||
{
|
||||
NSNotification *recordedNotification;
|
||||
}
|
||||
|
||||
- (void)notificationWithName:(NSString *)name object:(id)sender;
|
||||
|
||||
- (BOOL)matchesNotification:(NSNotification *)aNotification;
|
||||
|
||||
- (BOOL)argument:(id)expectedArg matchesArgument:(id)observedArg;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,75 @@
|
||||
//---------------------------------------------------------------------------------------
|
||||
// $Id$
|
||||
// Copyright (c) 2009 by Mulle Kybernetik. See License file for details.
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#import <objc/runtime.h>
|
||||
#import <OCMock/OCMConstraint.h>
|
||||
#import "NSInvocation+OCMAdditions.h"
|
||||
#import "OCMObserverRecorder.h"
|
||||
|
||||
@interface NSObject(HCMatcherDummy)
|
||||
- (BOOL)matches:(id)item;
|
||||
@end
|
||||
|
||||
#pragma mark -
|
||||
|
||||
|
||||
@implementation OCMObserverRecorder
|
||||
|
||||
#pragma mark Initialisers, description, accessors, etc.
|
||||
|
||||
- (void)dealloc
|
||||
{
|
||||
[recordedNotification release];
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
|
||||
#pragma mark Recording
|
||||
|
||||
- (void)notificationWithName:(NSString *)name object:(id)sender
|
||||
{
|
||||
recordedNotification = [[NSNotification notificationWithName:name object:sender] retain];
|
||||
}
|
||||
|
||||
- (void)notificationWithName:(NSString *)name object:(id)sender userInfo:(NSDictionary *)userInfo
|
||||
{
|
||||
recordedNotification = [[NSNotification notificationWithName:name object:sender userInfo:userInfo] retain];
|
||||
}
|
||||
|
||||
|
||||
#pragma mark Verification
|
||||
|
||||
- (BOOL)matchesNotification:(NSNotification *)aNotification
|
||||
{
|
||||
return [self argument:[recordedNotification name] matchesArgument:[aNotification name]] &&
|
||||
[self argument:[recordedNotification object] matchesArgument:[aNotification object]] &&
|
||||
[self argument:[recordedNotification userInfo] matchesArgument:[aNotification userInfo]];
|
||||
}
|
||||
|
||||
- (BOOL)argument:(id)expectedArg matchesArgument:(id)observedArg
|
||||
{
|
||||
if([expectedArg isKindOfClass:[OCMConstraint class]])
|
||||
{
|
||||
if([expectedArg evaluate:observedArg] == NO)
|
||||
return NO;
|
||||
}
|
||||
else if([expectedArg conformsToProtocol:objc_getProtocol("HCMatcher")])
|
||||
{
|
||||
if([expectedArg matches:observedArg] == NO)
|
||||
return NO;
|
||||
}
|
||||
else
|
||||
{
|
||||
if([expectedArg class] != [observedArg class])
|
||||
return NO;
|
||||
if(([expectedArg isEqual:observedArg] == NO) &&
|
||||
!((expectedArg == nil) && (observedArg == nil)))
|
||||
return NO;
|
||||
}
|
||||
return YES;
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,17 @@
|
||||
//---------------------------------------------------------------------------------------
|
||||
// $Id$
|
||||
// Copyright (c) 2009 by Mulle Kybernetik. See License file for details.
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@interface OCMPassByRefSetter : NSObject
|
||||
{
|
||||
id value;
|
||||
}
|
||||
|
||||
- (id)initWithValue:(id)value;
|
||||
|
||||
- (id)value;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,29 @@
|
||||
//---------------------------------------------------------------------------------------
|
||||
// $Id$
|
||||
// Copyright (c) 2009 by Mulle Kybernetik. See License file for details.
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#import "OCMPassByRefSetter.h"
|
||||
|
||||
|
||||
@implementation OCMPassByRefSetter
|
||||
|
||||
- (id)initWithValue:(id)aValue
|
||||
{
|
||||
self = [super init];
|
||||
value = [aValue retain];
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)dealloc
|
||||
{
|
||||
[value release];
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
- (id)value
|
||||
{
|
||||
return value;
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,14 @@
|
||||
//---------------------------------------------------------------------------------------
|
||||
// $Id$
|
||||
// Copyright (c) 2010 by Mulle Kybernetik. See License file for details.
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@interface OCMRealObjectForwarder : NSObject
|
||||
{
|
||||
}
|
||||
|
||||
- (void)handleInvocation:(NSInvocation *)anInvocation;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,29 @@
|
||||
//---------------------------------------------------------------------------------------
|
||||
// $Id$
|
||||
// Copyright (c) 2010 by Mulle Kybernetik. See License file for details.
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#import <objc/runtime.h>
|
||||
#import "OCPartialMockObject.h"
|
||||
#import "OCMRealObjectForwarder.h"
|
||||
|
||||
|
||||
@implementation OCMRealObjectForwarder
|
||||
|
||||
- (void)handleInvocation:(NSInvocation *)anInvocation
|
||||
{
|
||||
id invocationTarget = [anInvocation target];
|
||||
SEL invocationSelector = [anInvocation selector];
|
||||
SEL aliasedSelector = NSSelectorFromString([OCMRealMethodAliasPrefix stringByAppendingString:NSStringFromSelector(invocationSelector)]);
|
||||
|
||||
[anInvocation setSelector:aliasedSelector];
|
||||
if([invocationTarget isProxy] && (class_getInstanceMethod([invocationTarget class], @selector(realObject))))
|
||||
{
|
||||
// the method has been invoked on the mock, we need to change the target to the real object
|
||||
[anInvocation setTarget:[(OCPartialMockObject *)invocationTarget realObject]];
|
||||
}
|
||||
[anInvocation invoke];
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,17 @@
|
||||
//---------------------------------------------------------------------------------------
|
||||
// $Id$
|
||||
// Copyright (c) 2009 by Mulle Kybernetik. See License file for details.
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@interface OCMReturnValueProvider : NSObject
|
||||
{
|
||||
id returnValue;
|
||||
}
|
||||
|
||||
- (id)initWithValue:(id)aValue;
|
||||
|
||||
- (void)handleInvocation:(NSInvocation *)anInvocation;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,47 @@
|
||||
//---------------------------------------------------------------------------------------
|
||||
// $Id$
|
||||
// Copyright (c) 2009 by Mulle Kybernetik. See License file for details.
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#import "NSMethodSignature+OCMAdditions.h"
|
||||
#import "OCMReturnValueProvider.h"
|
||||
|
||||
|
||||
@implementation OCMReturnValueProvider
|
||||
|
||||
- (id)initWithValue:(id)aValue
|
||||
{
|
||||
self = [super init];
|
||||
returnValue = [aValue retain];
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)dealloc
|
||||
{
|
||||
[returnValue release];
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
- (void)handleInvocation:(NSInvocation *)anInvocation
|
||||
{
|
||||
const char *returnType = [[anInvocation methodSignature] methodReturnTypeWithoutQualifiers];
|
||||
if(strcmp(returnType, @encode(id)) != 0) {
|
||||
// if the returnType is a typedef to an object, it has the form ^{OriginalClass=#}
|
||||
NSString *regexString = @"^\\^\\{(.*)=#\\}";
|
||||
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:regexString options:0 error:NULL];
|
||||
NSString *type = [NSString stringWithCString:returnType encoding:NSASCIIStringEncoding];
|
||||
if([regex numberOfMatchesInString:type options:0 range:NSMakeRange(0, type.length)] == 0)
|
||||
{
|
||||
@throw [NSException exceptionWithName:NSInvalidArgumentException reason:@"Expected invocation with object return type. Did you mean to use andReturnValue: instead?" userInfo:nil];
|
||||
}
|
||||
}
|
||||
NSString *sel = NSStringFromSelector([anInvocation selector]);
|
||||
if([sel hasPrefix:@"alloc"] || [sel hasPrefix:@"new"] || [sel hasPrefix:@"copy"] || [sel hasPrefix:@"mutableCopy"])
|
||||
{
|
||||
// methods that "create" an object return it with an extra retain count
|
||||
[returnValue retain];
|
||||
}
|
||||
[anInvocation setReturnValue:&returnValue];
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string></string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.mulle-kybernetik.${PRODUCT_NAME:rfc1034identifier}</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>${PRODUCT_NAME}</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright © 2004-2013 Mulle Kybernetik.</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string></string>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,7 @@
|
||||
//
|
||||
// Prefix header for all source files of the 'OCMock' target in the 'OCMock' project
|
||||
//
|
||||
|
||||
#ifdef __OBJC__
|
||||
#import <Foundation/Foundation.h>
|
||||
#endif
|
||||
@@ -0,0 +1,10 @@
|
||||
//---------------------------------------------------------------------------------------
|
||||
// $Id$
|
||||
// Copyright (c) 2004-2008 by Mulle Kybernetik. See License file for details.
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#import <OCMock/OCMockObject.h>
|
||||
#import <OCMock/OCMockRecorder.h>
|
||||
#import <OCMock/OCMConstraint.h>
|
||||
#import <OCMock/OCMArg.h>
|
||||
#import <OCMock/NSNotificationCenter+OCMAdditions.h>
|
||||
@@ -0,0 +1,46 @@
|
||||
//---------------------------------------------------------------------------------------
|
||||
// $Id$
|
||||
// Copyright (c) 2004-2008 by Mulle Kybernetik. See License file for details.
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@interface OCMockObject : NSProxy
|
||||
{
|
||||
BOOL isNice;
|
||||
BOOL expectationOrderMatters;
|
||||
NSMutableArray *recorders;
|
||||
NSMutableArray *expectations;
|
||||
NSMutableArray *rejections;
|
||||
NSMutableArray *exceptions;
|
||||
}
|
||||
|
||||
+ (id)mockForClass:(Class)aClass;
|
||||
+ (id)mockForProtocol:(Protocol *)aProtocol;
|
||||
+ (id)partialMockForObject:(NSObject *)anObject;
|
||||
|
||||
+ (id)niceMockForClass:(Class)aClass;
|
||||
+ (id)niceMockForProtocol:(Protocol *)aProtocol;
|
||||
|
||||
+ (id)observerMock;
|
||||
|
||||
- (id)init;
|
||||
|
||||
- (void)setExpectationOrderMatters:(BOOL)flag;
|
||||
|
||||
- (id)stub;
|
||||
- (id)expect;
|
||||
- (id)reject;
|
||||
|
||||
- (void)verify;
|
||||
|
||||
- (void)stopMocking;
|
||||
|
||||
// internal use only
|
||||
|
||||
- (id)getNewRecorder;
|
||||
- (BOOL)handleInvocation:(NSInvocation *)anInvocation;
|
||||
- (void)handleUnRecordedInvocation:(NSInvocation *)anInvocation;
|
||||
- (BOOL)handleSelector:(SEL)sel;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,269 @@
|
||||
//---------------------------------------------------------------------------------------
|
||||
// $Id$
|
||||
// Copyright (c) 2004-2009 by Mulle Kybernetik. See License file for details.
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#import <OCMock/OCMockObject.h>
|
||||
#import "OCClassMockObject.h"
|
||||
#import "OCProtocolMockObject.h"
|
||||
#import "OCPartialMockObject.h"
|
||||
#import "OCObserverMockObject.h"
|
||||
#import <OCMock/OCMockRecorder.h>
|
||||
#import "NSInvocation+OCMAdditions.h"
|
||||
|
||||
@interface OCMockObject(Private)
|
||||
+ (id)_makeNice:(OCMockObject *)mock;
|
||||
- (NSString *)_recorderDescriptions:(BOOL)onlyExpectations;
|
||||
@end
|
||||
|
||||
#pragma mark -
|
||||
|
||||
|
||||
@implementation OCMockObject
|
||||
|
||||
#pragma mark Class initialisation
|
||||
|
||||
+ (void)initialize
|
||||
{
|
||||
if([[NSInvocation class] instanceMethodSignatureForSelector:@selector(getArgumentAtIndexAsObject:)] == NULL)
|
||||
[NSException raise:NSInternalInconsistencyException format:@"** Expected method not present; the method getArgumentAtIndexAsObject: is not implemented by NSInvocation. If you see this exception it is likely that you are using the static library version of OCMock and your project is not configured correctly to load categories from static libraries. Did you forget to add the -force_load linker flag?"];
|
||||
}
|
||||
|
||||
|
||||
#pragma mark Factory methods
|
||||
|
||||
+ (id)mockForClass:(Class)aClass
|
||||
{
|
||||
return [[[OCClassMockObject alloc] initWithClass:aClass] autorelease];
|
||||
}
|
||||
|
||||
+ (id)mockForProtocol:(Protocol *)aProtocol
|
||||
{
|
||||
return [[[OCProtocolMockObject alloc] initWithProtocol:aProtocol] autorelease];
|
||||
}
|
||||
|
||||
+ (id)partialMockForObject:(NSObject *)anObject
|
||||
{
|
||||
return [[[OCPartialMockObject alloc] initWithObject:anObject] autorelease];
|
||||
}
|
||||
|
||||
|
||||
+ (id)niceMockForClass:(Class)aClass
|
||||
{
|
||||
return [self _makeNice:[self mockForClass:aClass]];
|
||||
}
|
||||
|
||||
+ (id)niceMockForProtocol:(Protocol *)aProtocol
|
||||
{
|
||||
return [self _makeNice:[self mockForProtocol:aProtocol]];
|
||||
}
|
||||
|
||||
|
||||
+ (id)_makeNice:(OCMockObject *)mock
|
||||
{
|
||||
mock->isNice = YES;
|
||||
return mock;
|
||||
}
|
||||
|
||||
|
||||
+ (id)observerMock
|
||||
{
|
||||
return [[[OCObserverMockObject alloc] init] autorelease];
|
||||
}
|
||||
|
||||
|
||||
|
||||
#pragma mark Initialisers, description, accessors, etc.
|
||||
|
||||
- (id)init
|
||||
{
|
||||
// no [super init], we're inheriting from NSProxy
|
||||
expectationOrderMatters = NO;
|
||||
recorders = [[NSMutableArray alloc] init];
|
||||
expectations = [[NSMutableArray alloc] init];
|
||||
rejections = [[NSMutableArray alloc] init];
|
||||
exceptions = [[NSMutableArray alloc] init];
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)dealloc
|
||||
{
|
||||
[recorders release];
|
||||
[expectations release];
|
||||
[rejections release];
|
||||
[exceptions release];
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
- (NSString *)description
|
||||
{
|
||||
return @"OCMockObject";
|
||||
}
|
||||
|
||||
|
||||
- (void)setExpectationOrderMatters:(BOOL)flag
|
||||
{
|
||||
expectationOrderMatters = flag;
|
||||
}
|
||||
|
||||
|
||||
#pragma mark Public API
|
||||
|
||||
- (id)stub
|
||||
{
|
||||
OCMockRecorder *recorder = [self getNewRecorder];
|
||||
[recorders addObject:recorder];
|
||||
return recorder;
|
||||
}
|
||||
|
||||
|
||||
- (id)expect
|
||||
{
|
||||
OCMockRecorder *recorder = [self stub];
|
||||
[expectations addObject:recorder];
|
||||
return recorder;
|
||||
}
|
||||
|
||||
|
||||
- (id)reject
|
||||
{
|
||||
OCMockRecorder *recorder = [self stub];
|
||||
[rejections addObject:recorder];
|
||||
return recorder;
|
||||
}
|
||||
|
||||
|
||||
- (void)verify
|
||||
{
|
||||
if([expectations count] == 1)
|
||||
{
|
||||
[NSException raise:NSInternalInconsistencyException format:@"%@: expected method was not invoked: %@",
|
||||
[self description], [[expectations objectAtIndex:0] description]];
|
||||
}
|
||||
if([expectations count] > 0)
|
||||
{
|
||||
[NSException raise:NSInternalInconsistencyException format:@"%@ : %@ expected methods were not invoked: %@",
|
||||
[self description], @([expectations count]), [self _recorderDescriptions:YES]];
|
||||
}
|
||||
if([exceptions count] > 0)
|
||||
{
|
||||
[[exceptions objectAtIndex:0] raise];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)stopMocking
|
||||
{
|
||||
// no-op for mock objects that are not class object or partial mocks
|
||||
}
|
||||
|
||||
|
||||
#pragma mark Handling invocations
|
||||
|
||||
- (BOOL)handleSelector:(SEL)sel
|
||||
{
|
||||
for (OCMockRecorder *recorder in recorders)
|
||||
if ([recorder matchesSelector:sel])
|
||||
return YES;
|
||||
|
||||
return NO;
|
||||
}
|
||||
|
||||
- (void)forwardInvocation:(NSInvocation *)anInvocation
|
||||
{
|
||||
if([self handleInvocation:anInvocation] == NO)
|
||||
[self handleUnRecordedInvocation:anInvocation];
|
||||
}
|
||||
|
||||
- (BOOL)handleInvocation:(NSInvocation *)anInvocation
|
||||
{
|
||||
OCMockRecorder *recorder = nil;
|
||||
unsigned int i;
|
||||
|
||||
for(i = 0; i < [recorders count]; i++)
|
||||
{
|
||||
recorder = [recorders objectAtIndex:i];
|
||||
if([recorder matchesInvocation:anInvocation])
|
||||
break;
|
||||
}
|
||||
|
||||
if(i == [recorders count])
|
||||
return NO;
|
||||
|
||||
if([rejections containsObject:recorder])
|
||||
{
|
||||
NSException *exception = [NSException exceptionWithName:NSInternalInconsistencyException reason:
|
||||
[NSString stringWithFormat:@"%@: explicitly disallowed method invoked: %@", [self description],
|
||||
[anInvocation invocationDescription]] userInfo:nil];
|
||||
[exceptions addObject:exception];
|
||||
[exception raise];
|
||||
}
|
||||
|
||||
if([expectations containsObject:recorder])
|
||||
{
|
||||
if(expectationOrderMatters && ([expectations objectAtIndex:0] != recorder))
|
||||
{
|
||||
[NSException raise:NSInternalInconsistencyException format:@"%@: unexpected method invoked: %@\n\texpected:\t%@",
|
||||
[self description], [recorder description], [[expectations objectAtIndex:0] description]];
|
||||
|
||||
}
|
||||
[[recorder retain] autorelease];
|
||||
[expectations removeObject:recorder];
|
||||
[recorders removeObjectAtIndex:i];
|
||||
}
|
||||
[[recorder invocationHandlers] makeObjectsPerformSelector:@selector(handleInvocation:) withObject:anInvocation];
|
||||
|
||||
return YES;
|
||||
}
|
||||
|
||||
- (void)handleUnRecordedInvocation:(NSInvocation *)anInvocation
|
||||
{
|
||||
if(isNice == NO)
|
||||
{
|
||||
NSException *exception = [NSException exceptionWithName:NSInternalInconsistencyException reason:
|
||||
[NSString stringWithFormat:@"%@: unexpected method invoked: %@ %@", [self description],
|
||||
[anInvocation invocationDescription], [self _recorderDescriptions:NO]] userInfo:nil];
|
||||
[exceptions addObject:exception];
|
||||
[exception raise];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#pragma mark Helper methods
|
||||
|
||||
- (id)getNewRecorder
|
||||
{
|
||||
return [[[OCMockRecorder alloc] initWithSignatureResolver:self] autorelease];
|
||||
}
|
||||
|
||||
|
||||
- (NSString *)_recorderDescriptions:(BOOL)onlyExpectations
|
||||
{
|
||||
NSMutableString *outputString = [NSMutableString string];
|
||||
|
||||
OCMockRecorder *currentObject;
|
||||
NSEnumerator *recorderEnumerator = [recorders objectEnumerator];
|
||||
while((currentObject = [recorderEnumerator nextObject]) != nil)
|
||||
{
|
||||
NSString *prefix;
|
||||
|
||||
if(onlyExpectations)
|
||||
{
|
||||
if(![expectations containsObject:currentObject])
|
||||
continue;
|
||||
prefix = @" ";
|
||||
}
|
||||
else
|
||||
{
|
||||
if ([expectations containsObject:currentObject])
|
||||
prefix = @"expected: ";
|
||||
else
|
||||
prefix = @"stubbed: ";
|
||||
}
|
||||
[outputString appendFormat:@"\n\t%@\t%@", prefix, [currentObject description]];
|
||||
}
|
||||
|
||||
return outputString;
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,36 @@
|
||||
//---------------------------------------------------------------------------------------
|
||||
// $Id$
|
||||
// Copyright (c) 2004-2013 by Mulle Kybernetik. See License file for details.
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@interface OCMockRecorder : NSProxy
|
||||
{
|
||||
id signatureResolver;
|
||||
BOOL recordedAsClassMethod;
|
||||
NSInvocation *recordedInvocation;
|
||||
NSMutableArray *invocationHandlers;
|
||||
}
|
||||
|
||||
- (id)initWithSignatureResolver:(id)anObject;
|
||||
|
||||
- (BOOL)matchesSelector:(SEL)sel;
|
||||
- (BOOL)matchesInvocation:(NSInvocation *)anInvocation;
|
||||
- (void)releaseInvocation;
|
||||
|
||||
- (id)andReturn:(id)anObject;
|
||||
- (id)andReturnValue:(NSValue *)aValue;
|
||||
- (id)andThrow:(NSException *)anException;
|
||||
- (id)andPost:(NSNotification *)aNotification;
|
||||
- (id)andCall:(SEL)selector onObject:(id)anObject;
|
||||
#if NS_BLOCKS_AVAILABLE
|
||||
- (id)andDo:(void (^)(NSInvocation *))block;
|
||||
#endif
|
||||
- (id)andForwardToRealObject;
|
||||
|
||||
- (id)classMethod;
|
||||
|
||||
- (NSArray *)invocationHandlers;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,229 @@
|
||||
//---------------------------------------------------------------------------------------
|
||||
// $Id$
|
||||
// Copyright (c) 2004-2013 by Mulle Kybernetik. See License file for details.
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#import <objc/runtime.h>
|
||||
#import <OCMock/OCMockRecorder.h>
|
||||
#import <OCMock/OCMArg.h>
|
||||
#import <OCMock/OCMConstraint.h>
|
||||
#import "OCClassMockObject.h"
|
||||
#import "OCMPassByRefSetter.h"
|
||||
#import "OCMReturnValueProvider.h"
|
||||
#import "OCMBoxedReturnValueProvider.h"
|
||||
#import "OCMExceptionReturnValueProvider.h"
|
||||
#import "OCMIndirectReturnValueProvider.h"
|
||||
#import "OCMNotificationPoster.h"
|
||||
#import "OCMBlockCaller.h"
|
||||
#import "NSInvocation+OCMAdditions.h"
|
||||
|
||||
@interface NSObject(HCMatcherDummy)
|
||||
- (BOOL)matches:(id)item;
|
||||
@end
|
||||
|
||||
#pragma mark -
|
||||
|
||||
|
||||
@implementation OCMockRecorder
|
||||
|
||||
#pragma mark Initialisers, description, accessors, etc.
|
||||
|
||||
- (id)initWithSignatureResolver:(id)anObject
|
||||
{
|
||||
signatureResolver = anObject;
|
||||
invocationHandlers = [[NSMutableArray alloc] init];
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)dealloc
|
||||
{
|
||||
[recordedInvocation release];
|
||||
[invocationHandlers release];
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
- (NSString *)description
|
||||
{
|
||||
return [recordedInvocation invocationDescription];
|
||||
}
|
||||
|
||||
- (void)releaseInvocation
|
||||
{
|
||||
[recordedInvocation release];
|
||||
recordedInvocation = nil;
|
||||
}
|
||||
|
||||
|
||||
#pragma mark Recording invocation handlers
|
||||
|
||||
- (id)andReturn:(id)anObject
|
||||
{
|
||||
[invocationHandlers addObject:[[[OCMReturnValueProvider alloc] initWithValue:anObject] autorelease]];
|
||||
return self;
|
||||
}
|
||||
|
||||
- (id)andReturnValue:(NSValue *)aValue
|
||||
{
|
||||
[invocationHandlers addObject:[[[OCMBoxedReturnValueProvider alloc] initWithValue:aValue] autorelease]];
|
||||
return self;
|
||||
}
|
||||
|
||||
- (id)andThrow:(NSException *)anException
|
||||
{
|
||||
[invocationHandlers addObject:[[[OCMExceptionReturnValueProvider alloc] initWithValue:anException] autorelease]];
|
||||
return self;
|
||||
}
|
||||
|
||||
- (id)andPost:(NSNotification *)aNotification
|
||||
{
|
||||
[invocationHandlers addObject:[[[OCMNotificationPoster alloc] initWithNotification:aNotification] autorelease]];
|
||||
return self;
|
||||
}
|
||||
|
||||
- (id)andCall:(SEL)selector onObject:(id)anObject
|
||||
{
|
||||
[invocationHandlers addObject:[[[OCMIndirectReturnValueProvider alloc] initWithProvider:anObject andSelector:selector] autorelease]];
|
||||
return self;
|
||||
}
|
||||
|
||||
#if NS_BLOCKS_AVAILABLE
|
||||
|
||||
- (id)andDo:(void (^)(NSInvocation *))aBlock
|
||||
{
|
||||
[invocationHandlers addObject:[[[OCMBlockCaller alloc] initWithCallBlock:aBlock] autorelease]];
|
||||
return self;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
- (id)andForwardToRealObject
|
||||
{
|
||||
[NSException raise:NSInternalInconsistencyException format:@"Method %@ can only be used with partial mocks.",
|
||||
NSStringFromSelector(_cmd)];
|
||||
return self; // keep compiler happy
|
||||
}
|
||||
|
||||
|
||||
- (NSArray *)invocationHandlers
|
||||
{
|
||||
return invocationHandlers;
|
||||
}
|
||||
|
||||
|
||||
#pragma mark Switching to class methods
|
||||
|
||||
- (id)classMethod
|
||||
{
|
||||
recordedAsClassMethod = YES;
|
||||
[signatureResolver setupClassForClassMethodMocking];
|
||||
return self;
|
||||
}
|
||||
|
||||
|
||||
#pragma mark Recording the actual invocation
|
||||
|
||||
- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector
|
||||
{
|
||||
if(recordedAsClassMethod)
|
||||
return [[signatureResolver mockedClass] methodSignatureForSelector:aSelector];
|
||||
|
||||
NSMethodSignature *signature = [signatureResolver methodSignatureForSelector:aSelector];
|
||||
if(signature == nil)
|
||||
{
|
||||
// if we're a working with a class mock and there is a class method, auto-switch
|
||||
if(([[signatureResolver class] isSubclassOfClass:[OCClassMockObject class]]) &&
|
||||
([[signatureResolver mockedClass] respondsToSelector:aSelector]))
|
||||
{
|
||||
[self classMethod];
|
||||
signature = [self methodSignatureForSelector:aSelector];
|
||||
}
|
||||
}
|
||||
return signature;
|
||||
}
|
||||
|
||||
- (void)forwardInvocation:(NSInvocation *)anInvocation
|
||||
{
|
||||
if(recordedAsClassMethod)
|
||||
[signatureResolver setupForwarderForClassMethodSelector:[anInvocation selector]];
|
||||
if(recordedInvocation != nil)
|
||||
[NSException raise:NSInternalInconsistencyException format:@"Recorder received two methods to record."];
|
||||
[anInvocation setTarget:nil];
|
||||
[anInvocation retainArguments];
|
||||
recordedInvocation = [anInvocation retain];
|
||||
}
|
||||
|
||||
|
||||
|
||||
#pragma mark Checking the invocation
|
||||
|
||||
- (BOOL)matchesSelector:(SEL)sel
|
||||
{
|
||||
return (sel == [recordedInvocation selector]);
|
||||
}
|
||||
|
||||
- (BOOL)matchesInvocation:(NSInvocation *)anInvocation
|
||||
{
|
||||
id target, recordedArg, passedArg;
|
||||
int i, n;
|
||||
BOOL isClassMethodInvocation;
|
||||
|
||||
target = [anInvocation target];
|
||||
isClassMethodInvocation = (target != nil) && (target == [target class]);
|
||||
if(isClassMethodInvocation != recordedAsClassMethod)
|
||||
return NO;
|
||||
|
||||
if([anInvocation selector] != [recordedInvocation selector])
|
||||
return NO;
|
||||
|
||||
n = (int)[[recordedInvocation methodSignature] numberOfArguments];
|
||||
for(i = 2; i < n; i++)
|
||||
{
|
||||
recordedArg = [recordedInvocation getArgumentAtIndexAsObject:i];
|
||||
passedArg = [anInvocation getArgumentAtIndexAsObject:i];
|
||||
|
||||
if([recordedArg isProxy])
|
||||
{
|
||||
if(![recordedArg isEqual:passedArg])
|
||||
return NO;
|
||||
continue;
|
||||
}
|
||||
|
||||
if([recordedArg isKindOfClass:[NSValue class]])
|
||||
recordedArg = [OCMArg resolveSpecialValues:recordedArg];
|
||||
|
||||
if([recordedArg isKindOfClass:[OCMConstraint class]])
|
||||
{
|
||||
if([recordedArg evaluate:passedArg] == NO)
|
||||
return NO;
|
||||
}
|
||||
else if([recordedArg isKindOfClass:[OCMPassByRefSetter class]])
|
||||
{
|
||||
id valueToSet = [(OCMPassByRefSetter *)recordedArg value];
|
||||
// side effect but easier to do here than in handleInvocation
|
||||
if(![valueToSet isKindOfClass:[NSValue class]])
|
||||
*(id *)[passedArg pointerValue] = valueToSet;
|
||||
else
|
||||
[(NSValue *)valueToSet getValue:[passedArg pointerValue]];
|
||||
}
|
||||
else if([recordedArg conformsToProtocol:objc_getProtocol("HCMatcher")])
|
||||
{
|
||||
if([recordedArg matches:passedArg] == NO)
|
||||
return NO;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(([recordedArg class] == [NSNumber class]) &&
|
||||
([(NSNumber*)recordedArg compare:(NSNumber*)passedArg] != NSOrderedSame))
|
||||
return NO;
|
||||
if(([recordedArg isEqual:passedArg] == NO) &&
|
||||
!((recordedArg == nil) && (passedArg == nil)))
|
||||
return NO;
|
||||
}
|
||||
}
|
||||
return YES;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,22 @@
|
||||
//---------------------------------------------------------------------------------------
|
||||
// $Id$
|
||||
// Copyright (c) 2009 by Mulle Kybernetik. See License file for details.
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@interface OCObserverMockObject : NSObject
|
||||
{
|
||||
BOOL expectationOrderMatters;
|
||||
NSMutableArray *recorders;
|
||||
}
|
||||
|
||||
- (void)setExpectationOrderMatters:(BOOL)flag;
|
||||
|
||||
- (id)expect;
|
||||
|
||||
- (void)verify;
|
||||
|
||||
- (void)handleNotification:(NSNotification *)aNotification;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,83 @@
|
||||
//---------------------------------------------------------------------------------------
|
||||
// $Id$
|
||||
// Copyright (c) 2009 by Mulle Kybernetik. See License file for details.
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#import "OCObserverMockObject.h"
|
||||
#import "OCMObserverRecorder.h"
|
||||
|
||||
|
||||
@implementation OCObserverMockObject
|
||||
|
||||
#pragma mark Initialisers, description, accessors, etc.
|
||||
|
||||
- (id)init
|
||||
{
|
||||
self = [super init];
|
||||
recorders = [[NSMutableArray alloc] init];
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)dealloc
|
||||
{
|
||||
[recorders release];
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
- (NSString *)description
|
||||
{
|
||||
return @"OCMockObserver";
|
||||
}
|
||||
|
||||
- (void)setExpectationOrderMatters:(BOOL)flag
|
||||
{
|
||||
expectationOrderMatters = flag;
|
||||
}
|
||||
|
||||
|
||||
#pragma mark Public API
|
||||
|
||||
- (id)expect
|
||||
{
|
||||
OCMObserverRecorder *recorder = [[[OCMObserverRecorder alloc] init] autorelease];
|
||||
[recorders addObject:recorder];
|
||||
return recorder;
|
||||
}
|
||||
|
||||
- (void)verify
|
||||
{
|
||||
if([recorders count] == 1)
|
||||
{
|
||||
[NSException raise:NSInternalInconsistencyException format:@"%@: expected notification was not observed: %@",
|
||||
[self description], [[recorders lastObject] description]];
|
||||
}
|
||||
if([recorders count] > 0)
|
||||
{
|
||||
[NSException raise:NSInternalInconsistencyException format:@"%@ : %@ expected notifications were not observed.",
|
||||
[self description], @([recorders count])];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
#pragma mark Receiving notifications
|
||||
|
||||
- (void)handleNotification:(NSNotification *)aNotification
|
||||
{
|
||||
NSUInteger i, limit;
|
||||
|
||||
limit = expectationOrderMatters ? 1 : [recorders count];
|
||||
for(i = 0; i < limit; i++)
|
||||
{
|
||||
if([[recorders objectAtIndex:i] matchesNotification:aNotification])
|
||||
{
|
||||
[recorders removeObjectAtIndex:i];
|
||||
return;
|
||||
}
|
||||
}
|
||||
[NSException raise:NSInternalInconsistencyException format:@"%@: unexpected notification observed: %@", [self description],
|
||||
[aNotification description]];
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,25 @@
|
||||
//---------------------------------------------------------------------------------------
|
||||
// $Id$
|
||||
// Copyright (c) 2009 by Mulle Kybernetik. See License file for details.
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#import "OCClassMockObject.h"
|
||||
|
||||
@interface OCPartialMockObject : OCClassMockObject
|
||||
{
|
||||
NSObject *realObject;
|
||||
}
|
||||
|
||||
- (id)initWithObject:(NSObject *)anObject;
|
||||
|
||||
- (NSObject *)realObject;
|
||||
|
||||
- (void)stopMocking;
|
||||
|
||||
- (void)setupSubclassForObject:(id)anObject;
|
||||
- (void)setupForwarderForSelector:(SEL)selector;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
extern NSString *OCMRealMethodAliasPrefix;
|
||||
@@ -0,0 +1,190 @@
|
||||
//---------------------------------------------------------------------------------------
|
||||
// $Id$
|
||||
// Copyright (c) 2009 by Mulle Kybernetik. See License file for details.
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#import <objc/runtime.h>
|
||||
#import "OCPartialMockRecorder.h"
|
||||
#import "OCPartialMockObject.h"
|
||||
|
||||
|
||||
@interface OCPartialMockObject (Private)
|
||||
- (void)forwardInvocationForRealObject:(NSInvocation *)anInvocation;
|
||||
@end
|
||||
|
||||
|
||||
NSString *OCMRealMethodAliasPrefix = @"ocmock_replaced_";
|
||||
|
||||
@implementation OCPartialMockObject
|
||||
|
||||
|
||||
#pragma mark Mock table
|
||||
|
||||
static NSMutableDictionary *mockTable;
|
||||
|
||||
+ (void)initialize
|
||||
{
|
||||
if(self == [OCPartialMockObject class])
|
||||
mockTable = [[NSMutableDictionary alloc] init];
|
||||
}
|
||||
|
||||
+ (void)rememberPartialMock:(OCPartialMockObject *)mock forObject:(id)anObject
|
||||
{
|
||||
@synchronized(mockTable)
|
||||
{
|
||||
[mockTable setObject:[NSValue valueWithNonretainedObject:mock] forKey:[NSValue valueWithNonretainedObject:anObject]];
|
||||
}
|
||||
}
|
||||
|
||||
+ (void)forgetPartialMockForObject:(id)anObject
|
||||
{
|
||||
@synchronized(mockTable)
|
||||
{
|
||||
[mockTable removeObjectForKey:[NSValue valueWithNonretainedObject:anObject]];
|
||||
}
|
||||
}
|
||||
|
||||
+ (OCPartialMockObject *)existingPartialMockForObject:(id)anObject
|
||||
{
|
||||
@synchronized(mockTable)
|
||||
{
|
||||
OCPartialMockObject *mock = [[mockTable objectForKey:[NSValue valueWithNonretainedObject:anObject]] nonretainedObjectValue];
|
||||
if(mock == nil)
|
||||
[NSException raise:NSInternalInconsistencyException format:@"No partial mock for object %p", anObject];
|
||||
return mock;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
#pragma mark Initialisers, description, accessors, etc.
|
||||
|
||||
- (id)initWithObject:(NSObject *)anObject
|
||||
{
|
||||
[super initWithClass:[anObject class]];
|
||||
realObject = [anObject retain];
|
||||
[[self class] rememberPartialMock:self forObject:anObject];
|
||||
[self setupSubclassForObject:realObject];
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)dealloc
|
||||
{
|
||||
if(realObject != nil)
|
||||
[self stopMocking];
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
- (NSString *)description
|
||||
{
|
||||
return [NSString stringWithFormat:@"OCPartialMockObject[%@]", NSStringFromClass(mockedClass)];
|
||||
}
|
||||
|
||||
- (NSObject *)realObject
|
||||
{
|
||||
return realObject;
|
||||
}
|
||||
|
||||
- (void)stopMocking
|
||||
{
|
||||
object_setClass(realObject, [self mockedClass]);
|
||||
[realObject release];
|
||||
[[self class] forgetPartialMockForObject:realObject];
|
||||
realObject = nil;
|
||||
}
|
||||
|
||||
|
||||
#pragma mark Subclass management
|
||||
|
||||
- (void)setupSubclassForObject:(id)anObject
|
||||
{
|
||||
Class realClass = [anObject class];
|
||||
double timestamp = [NSDate timeIntervalSinceReferenceDate];
|
||||
const char *className = [[NSString stringWithFormat:@"%@-%p-%f", realClass, anObject, timestamp] UTF8String];
|
||||
Class subclass = objc_allocateClassPair(realClass, className, 0);
|
||||
objc_registerClassPair(subclass);
|
||||
object_setClass(anObject, subclass);
|
||||
|
||||
Method myForwardInvocationMethod = class_getInstanceMethod([self class], @selector(forwardInvocationForRealObject:));
|
||||
IMP myForwardInvocationImp = method_getImplementation(myForwardInvocationMethod);
|
||||
const char *forwardInvocationTypes = method_getTypeEncoding(myForwardInvocationMethod);
|
||||
class_addMethod(subclass, @selector(forwardInvocation:), myForwardInvocationImp, forwardInvocationTypes);
|
||||
|
||||
|
||||
Method myForwardingTargetForSelectorMethod = class_getInstanceMethod([self class], @selector(forwardingTargetForSelectorForRealObject:));
|
||||
IMP myForwardingTargetForSelectorImp = method_getImplementation(myForwardingTargetForSelectorMethod);
|
||||
const char *forwardingTargetForSelectorTypes = method_getTypeEncoding(myForwardingTargetForSelectorMethod);
|
||||
|
||||
IMP originalForwardingTargetForSelectorImp = [realClass instanceMethodForSelector:@selector(forwardingTargetForSelector:)];
|
||||
|
||||
class_addMethod(subclass, @selector(forwardingTargetForSelector:), myForwardingTargetForSelectorImp, forwardingTargetForSelectorTypes);
|
||||
class_addMethod(subclass, @selector(forwardingTargetForSelector_Original:), originalForwardingTargetForSelectorImp, forwardingTargetForSelectorTypes);
|
||||
}
|
||||
|
||||
- (void)setupForwarderForSelector:(SEL)selector
|
||||
{
|
||||
Class subclass = [[self realObject] class];
|
||||
Method originalMethod = class_getInstanceMethod([subclass superclass], selector);
|
||||
IMP originalImp = method_getImplementation(originalMethod);
|
||||
|
||||
IMP forwarderImp = [subclass instanceMethodForSelector:@selector(aMethodThatMustNotExist)];
|
||||
class_addMethod(subclass, method_getName(originalMethod), forwarderImp, method_getTypeEncoding(originalMethod));
|
||||
|
||||
SEL aliasSelector = NSSelectorFromString([OCMRealMethodAliasPrefix stringByAppendingString:NSStringFromSelector(selector)]);
|
||||
class_addMethod(subclass, aliasSelector, originalImp, method_getTypeEncoding(originalMethod));
|
||||
}
|
||||
|
||||
- (void)removeForwarderForSelector:(SEL)selector
|
||||
{
|
||||
Class subclass = [[self realObject] class];
|
||||
SEL aliasSelector = NSSelectorFromString([OCMRealMethodAliasPrefix stringByAppendingString:NSStringFromSelector(selector)]);
|
||||
Method originalMethod = class_getInstanceMethod([subclass superclass], aliasSelector);
|
||||
IMP originalImp = method_getImplementation(originalMethod);
|
||||
class_replaceMethod(subclass, selector, originalImp, method_getTypeEncoding(originalMethod));
|
||||
}
|
||||
|
||||
// Make the compiler happy in -forwardingTargetForSelectorForRealObject: because it can't find the message…
|
||||
- (id)forwardingTargetForSelector_Original:(SEL)sel
|
||||
{
|
||||
return nil;
|
||||
}
|
||||
|
||||
- (id)forwardingTargetForSelectorForRealObject:(SEL)sel
|
||||
{
|
||||
// in here "self" is a reference to the real object, not the mock
|
||||
OCPartialMockObject *mock = [OCPartialMockObject existingPartialMockForObject:self];
|
||||
if ([mock handleSelector:sel])
|
||||
return self;
|
||||
|
||||
return [self forwardingTargetForSelector_Original:sel];
|
||||
}
|
||||
|
||||
- (void)forwardInvocationForRealObject:(NSInvocation *)anInvocation
|
||||
{
|
||||
// in here "self" is a reference to the real object, not the mock
|
||||
OCPartialMockObject *mock = [OCPartialMockObject existingPartialMockForObject:self];
|
||||
if([mock handleInvocation:anInvocation] == NO)
|
||||
{
|
||||
// if mock doesn't want to handle the invocation, maybe all expects have occurred, we forward to real object
|
||||
SEL aliasSelector = NSSelectorFromString([OCMRealMethodAliasPrefix stringByAppendingString:NSStringFromSelector([anInvocation selector])]);
|
||||
[anInvocation setSelector:aliasSelector];
|
||||
[anInvocation invoke];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
#pragma mark Overrides
|
||||
|
||||
- (id)getNewRecorder
|
||||
{
|
||||
return [[[OCPartialMockRecorder alloc] initWithSignatureResolver:self] autorelease];
|
||||
}
|
||||
|
||||
- (void)handleUnRecordedInvocation:(NSInvocation *)anInvocation
|
||||
{
|
||||
[anInvocation invokeWithTarget:realObject];
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,12 @@
|
||||
//---------------------------------------------------------------------------------------
|
||||
// $Id$
|
||||
// Copyright (c) 2009 by Mulle Kybernetik. See License file for details.
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#import "OCMockRecorder.h"
|
||||
|
||||
@interface OCPartialMockRecorder : OCMockRecorder
|
||||
{
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,27 @@
|
||||
//---------------------------------------------------------------------------------------
|
||||
// $Id$
|
||||
// Copyright (c) 2009-2010 by Mulle Kybernetik. See License file for details.
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#import "OCPartialMockObject.h"
|
||||
#import "OCMRealObjectForwarder.h"
|
||||
#import "OCPartialMockRecorder.h"
|
||||
|
||||
|
||||
@implementation OCPartialMockRecorder
|
||||
|
||||
- (id)andForwardToRealObject
|
||||
{
|
||||
[invocationHandlers addObject:[[[OCMRealObjectForwarder alloc] init] autorelease]];
|
||||
return self;
|
||||
}
|
||||
|
||||
|
||||
- (void)forwardInvocation:(NSInvocation *)anInvocation
|
||||
{
|
||||
[super forwardInvocation:anInvocation];
|
||||
// not as clean as I'd wish...
|
||||
[(OCPartialMockObject *)signatureResolver setupForwarderForSelector:[anInvocation selector]];
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,16 @@
|
||||
//---------------------------------------------------------------------------------------
|
||||
// $Id$
|
||||
// Copyright (c) 2005-2008 by Mulle Kybernetik. See License file for details.
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
#import <OCMock/OCMockObject.h>
|
||||
|
||||
@interface OCProtocolMockObject : OCMockObject
|
||||
{
|
||||
Protocol *mockedProtocol;
|
||||
}
|
||||
|
||||
- (id)initWithProtocol:(Protocol *)aProtocol;
|
||||
|
||||
@end
|
||||
|
||||
Loaded 100 of 1261 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user