aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar dmaclach <dmaclach@google.com>2016-10-07 12:10:23 -0400
committerGravatar Thomas Van Lenten <thomasvl@google.com>2016-10-07 12:21:06 -0400
commit42124b3691197c3c4f52f069775fa0390a8ff942 (patch)
treeebd373d398ea64b45bdc1d196fa0a2c5f57cabfd
parent57eeab4193210df8ab0c81e9d3f1ee1ad3e24492 (diff)
First cut at pruning things/updating things.
Remove a bunch of code that Google stopped using/maintaining rather than trying to update it it. Some would be hard to update, some actually has system provided replacements; others are patterns that just don't seem as common now. Prune out the code related to macOS <= 10.5, start pruning some of the really old iOS support also. Get the projects mostly limping again with modern Xcodes so tests can be run. If someone ends up on this commit via history for something they still find as useful, feel free to do a pull request to bring the snippet of code back to life and update it for current SDKs.
-rw-r--r--AddressBook/GTMABAddressBook.m251
-rw-r--r--AddressBook/GTMABAddressBookTest.m498
-rw-r--r--AppKit/GTMCarbonEvent.m8
-rw-r--r--AppKit/GTMCarbonEventTest.m110
-rw-r--r--AppKit/GTMDelegatingTableColumn.h35
-rw-r--r--AppKit/GTMDelegatingTableColumn.m42
-rw-r--r--AppKit/GTMFadeTruncatingTextFieldCellTest.m33
-rw-r--r--AppKit/GTMGetURLHandler.m308
-rw-r--r--AppKit/GTMGetURLHandlerTest.m83
-rw-r--r--AppKit/GTMGoogleSearch.h144
-rw-r--r--AppKit/GTMGoogleSearch.m543
-rw-r--r--AppKit/GTMGoogleSearchTest.m208
-rw-r--r--AppKit/GTMHotKeyTextField.h116
-rw-r--r--AppKit/GTMHotKeyTextField.m781
-rw-r--r--AppKit/GTMHotKeyTextFieldLocalizations/da.lproj/GTMHotKeyTextField.strings65
-rw-r--r--AppKit/GTMHotKeyTextFieldLocalizations/de.lproj/GTMHotKeyTextField.strings65
-rw-r--r--AppKit/GTMHotKeyTextFieldLocalizations/en.lproj/GTMHotKeyTextField.strings65
-rw-r--r--AppKit/GTMHotKeyTextFieldLocalizations/es.lproj/GTMHotKeyTextField.strings65
-rw-r--r--AppKit/GTMHotKeyTextFieldLocalizations/fi.lproj/GTMHotKeyTextField.strings65
-rw-r--r--AppKit/GTMHotKeyTextFieldLocalizations/fr.lproj/GTMHotKeyTextField.strings65
-rw-r--r--AppKit/GTMHotKeyTextFieldLocalizations/it.lproj/GTMHotKeyTextField.strings65
-rw-r--r--AppKit/GTMHotKeyTextFieldLocalizations/ja.lproj/GTMHotKeyTextField.strings65
-rw-r--r--AppKit/GTMHotKeyTextFieldLocalizations/ko.lproj/GTMHotKeyTextField.strings65
-rw-r--r--AppKit/GTMHotKeyTextFieldLocalizations/nl.lproj/GTMHotKeyTextField.strings65
-rw-r--r--AppKit/GTMHotKeyTextFieldLocalizations/no.lproj/GTMHotKeyTextField.strings65
-rw-r--r--AppKit/GTMHotKeyTextFieldLocalizations/pl.lproj/GTMHotKeyTextField.strings65
-rw-r--r--AppKit/GTMHotKeyTextFieldLocalizations/pt.lproj/GTMHotKeyTextField.strings65
-rw-r--r--AppKit/GTMHotKeyTextFieldLocalizations/ru.lproj/GTMHotKeyTextField.strings65
-rw-r--r--AppKit/GTMHotKeyTextFieldLocalizations/sv.lproj/GTMHotKeyTextField.strings65
-rw-r--r--AppKit/GTMHotKeyTextFieldLocalizations/zh_CN.lproj/GTMHotKeyTextField.strings65
-rw-r--r--AppKit/GTMHotKeyTextFieldLocalizations/zh_TW.lproj/GTMHotKeyTextField.strings65
-rw-r--r--AppKit/GTMHotKeyTextFieldTest.h31
-rw-r--r--AppKit/GTMHotKeyTextFieldTest.m407
-rw-r--r--AppKit/GTMHotKeyTextFieldTest.xib401
-rw-r--r--AppKit/GTMIBArrayTest.m114
-rw-r--r--AppKit/GTMIBArrayTest.xib936
-rw-r--r--AppKit/GTMKeyValueAnimationTest.m4
-rw-r--r--AppKit/GTMLargeTypeWindow.h70
-rw-r--r--AppKit/GTMLargeTypeWindow.m412
-rw-r--r--AppKit/GTMLargeTypeWindowTest.m194
-rw-r--r--AppKit/GTMLinearRGBShading.h76
-rw-r--r--AppKit/GTMLinearRGBShading.m192
-rw-r--r--AppKit/GTMLinearRGBShadingTest.m132
-rw-r--r--AppKit/GTMLoginItems.m2
-rw-r--r--AppKit/GTMLoginItemsTest.m93
-rw-r--r--AppKit/GTMNSAnimatablePropertyContainer.h49
-rw-r--r--AppKit/GTMNSAnimatablePropertyContainer.m124
-rw-r--r--AppKit/GTMNSAnimatablePropertyContainerTest.h53
-rw-r--r--AppKit/GTMNSAnimatablePropertyContainerTest.m237
-rw-r--r--AppKit/GTMNSAnimatablePropertyContainerTest.xib426
-rw-r--r--AppKit/GTMNSBezierPath+CGPathTest.m50
-rw-r--r--AppKit/GTMNSBezierPath+RoundRectTest.m63
-rw-r--r--AppKit/GTMNSBezierPath+Shading.h121
-rw-r--r--AppKit/GTMNSBezierPath+Shading.m216
-rw-r--r--AppKit/GTMNSBezierPath+ShadingTest.m177
-rw-r--r--AppKit/GTMNSColor+LuminanceTest.m60
-rw-r--r--AppKit/GTMNSImage+Scaling.h53
-rw-r--r--AppKit/GTMNSImage+Scaling.m192
-rw-r--r--AppKit/GTMNSImage+ScalingTest.m83
-rw-r--r--AppKit/GTMNSImage+SearchCache.h41
-rw-r--r--AppKit/GTMNSImage+SearchCache.m90
-rw-r--r--AppKit/GTMNSImage+SearchCacheTest.m60
-rw-r--r--AppKit/GTMNSWorkspace+Running.h99
-rw-r--r--AppKit/GTMNSWorkspace+Running.m291
-rw-r--r--AppKit/GTMNSWorkspace+RunningTest.m84
-rw-r--r--AppKit/GTMShading.h41
-rw-r--r--AppKit/GTMUILocalizer.m14
-rw-r--r--AppKit/GTMUILocalizerAndLayoutTweaker.m14
-rw-r--r--AppKit/GTMUILocalizerAndLayoutTweakerTest.m83
-rw-r--r--AppKit/GTMUILocalizerAndLayoutTweakerTest1.xib2611
-rw-r--r--AppKit/GTMUILocalizerAndLayoutTweakerTest2.xib1002
-rw-r--r--AppKit/GTMUILocalizerAndLayoutTweakerTest3.xib422
-rw-r--r--AppKit/GTMUILocalizerAndLayoutTweakerTest4.xib2266
-rw-r--r--AppKit/GTMUILocalizerAndLayoutTweakerTest5.xib1553
-rw-r--r--AppKit/GTMUILocalizerAndLayoutTweakerTest6.xib1139
-rw-r--r--AppKit/GTMUILocalizerAndLayoutTweakerTest7.xib507
-rw-r--r--AppKit/GTMUILocalizerTest.h99
-rw-r--r--AppKit/GTMUILocalizerTest.m233
-rw-r--r--AppKit/GTMUILocalizerTestView.xib544
-rw-r--r--AppKit/GTMUILocalizerTestWindow.xib3512
-rw-r--r--AppKit/GTMUILocalizerTestWindow_10_4.xib2939
-rw-r--r--AppKit/GTMWindowSheetControllerTest.m107
-rw-r--r--AppKit/TestData/GTMFadeTruncatingTextFieldCellTest1.tiffbin2096 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMFadeTruncatingTextFieldCellTest2.tiffbin1898 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMFadeTruncatingTextFieldCellTest3.tiffbin2596 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMFadeTruncatingTextFieldCellTest4.tiffbin2086 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMFadeTruncatingTextFieldCellTest5.tiffbin2136 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMFadeTruncatingTextFieldCellTest6.tiffbin2048 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMFadeTruncatingTextFieldCellTest7.tiffbin2222 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMFadeTruncatingTextFieldCellTest8.tiffbin2896 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMLargeTypeWindowImageTest.gtmUTState49
-rw-r--r--AppKit/TestData/GTMLargeTypeWindowLongTextTest.10.6.gtmUTState1011
-rw-r--r--AppKit/TestData/GTMLargeTypeWindowLongTextTest.gtmUTState607
-rw-r--r--AppKit/TestData/GTMLargeTypeWindowMediumTextTest.10.6.gtmUTState1011
-rw-r--r--AppKit/TestData/GTMLargeTypeWindowMediumTextTest.gtmUTState607
-rw-r--r--AppKit/TestData/GTMLargeTypeWindowShortTextTest.10.6.gtmUTState1011
-rw-r--r--AppKit/TestData/GTMLargeTypeWindowShortTextTest.gtmUTState607
-rw-r--r--AppKit/TestData/GTMNSBezierPath+CGPathTest.ppc64.tiffbin2556 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMNSBezierPath+CGPathTest.tiffbin2558 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMNSBezierPath+CGPathTest.x86_64.tiffbin2556 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMNSBezierPath+RoundRectTest.10.6.tiffbin11660 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMNSBezierPath+RoundRectTest.10.6.x86_64.tiffbin11658 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMNSBezierPath+RoundRectTest.ppc64.tiffbin11788 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMNSBezierPath+RoundRectTest.tiffbin11788 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMNSBezierPath+RoundRectTest.x86_64.tiffbin11786 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMNSBezierPath+ShadingTest.10.6.tiffbin44950 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMNSBezierPath+ShadingTest.tiffbin45080 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest1-0.10.6.tiffbin30674 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest1-0.tiffbin29350 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest1-1.10.6.tiffbin26342 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest1-1.tiffbin25452 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest1-2.10.6.tiffbin26584 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest1-2.tiffbin25574 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest2-0.10.6.tiffbin15402 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest2-0.tiffbin14672 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest2-1.10.6.tiffbin12486 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest2-1.tiffbin11906 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest2-2.10.6.tiffbin12520 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest2-2.tiffbin11876 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-0.10.6.tiffbin8544 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-0.tiffbin8652 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-1.10.6.tiffbin9146 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-1.tiffbin9252 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-2.10.6.tiffbin15662 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-2.tiffbin15768 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-3.10.6.tiffbin16184 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-3.tiffbin16290 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-4.10.6.tiffbin19916 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-4.tiffbin20016 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-0.10.6.7.tiffbin31156 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-0.10.6.8.tiffbin31156 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-0.10.6.tiffbin31154 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-0.10_4_SDK.10.6.7.tiffbin30132 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-0.10_4_SDK.10.6.8.tiffbin30132 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-0.10_4_SDK.10.6.tiffbin30128 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-0.10_4_SDK.tiffbin29136 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-0.tiffbin30114 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-1.10.6.7.tiffbin43136 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-1.10.6.8.tiffbin43136 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-1.10.6.tiffbin43130 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-1.10_4_SDK.10.6.7.tiffbin42064 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-1.10_4_SDK.10.6.8.tiffbin42064 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-1.10_4_SDK.10.6.tiffbin42058 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-1.10_4_SDK.tiffbin39946 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-1.tiffbin40706 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-2.10.6.7.tiffbin29444 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-2.10.6.8.tiffbin29444 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-2.10.6.tiffbin29472 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-2.10_4_SDK.10.6.7.tiffbin28416 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-2.10_4_SDK.10.6.8.tiffbin28416 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-2.10_4_SDK.10.6.tiffbin28444 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-2.10_4_SDK.tiffbin27478 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-2.tiffbin28468 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest5-0.10.6.tiffbin20030 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest5-0.tiffbin20158 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest5-1.10.6.tiffbin22724 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest5-1.tiffbin22842 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest5-2.10.6.tiffbin40340 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest5-2.tiffbin40502 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest6-tab0-0.10.6.tiffbin14152 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest6-tab0-0.tiffbin13638 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest6-tab0-1.10.6.tiffbin13280 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest6-tab0-1.tiffbin12784 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest6-tab0-2.10.6.tiffbin13408 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest6-tab0-2.tiffbin12840 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest6-tab1-0.10.6.tiffbin16946 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest6-tab1-0.tiffbin16052 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest6-tab1-1.10.6.tiffbin16476 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest6-tab1-1.tiffbin15668 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest6-tab1-2.10.6.tiffbin16790 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest6-tab1-2.tiffbin15962 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-Min-0.10.6.tiffbin10532 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-Min-0.tiffbin10640 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-Min-1.10.6.tiffbin12070 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-Min-1.tiffbin12170 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-Min-2.10.6.tiffbin19518 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-Min-2.tiffbin19638 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-Min-3.10.6.tiffbin22452 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-Min-3.tiffbin22572 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-NoMin-0.10.6.tiffbin10782 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-NoMin-0.tiffbin10890 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-NoMin-1.10.6.tiffbin12982 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-NoMin-1.tiffbin13082 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-NoMin-2.10.6.tiffbin20460 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-NoMin-2.tiffbin20578 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-NoMin-3.10.6.tiffbin22760 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-NoMin-3.tiffbin22880 -> 0 bytes
-rw-r--r--AppKit/TestData/GTMUILocalizerWindow1State.10_4_SDK.gtmUTState405
-rw-r--r--AppKit/TestData/GTMUILocalizerWindow1State.gtmUTState426
-rw-r--r--AppKit/TestData/GTMUILocalizerWindow2State.gtmUTState21
-rw-r--r--AppKit/TestData/GTMUILocalizerWindow3State.10_4_SDK.gtmUTState344
-rw-r--r--AppKit/TestData/GTMUILocalizerWindow3State.gtmUTState376
-rw-r--r--AppKit/TestData/Resources/English.lproj/Localizable.strings1
-rw-r--r--DebugUtils/GTMDebugThreadValidationTest.m110
-rw-r--r--Foundation/GTMAbstractDOListener.h231
-rw-r--r--Foundation/GTMAbstractDOListener.m454
-rw-r--r--Foundation/GTMAbstractDOListenerTest.m365
-rw-r--r--Foundation/GTMCalculatedRange.h105
-rw-r--r--Foundation/GTMCalculatedRange.m148
-rw-r--r--Foundation/GTMCalculatedRangeTest.m101
-rw-r--r--Foundation/GTMExceptionalInlines.h56
-rw-r--r--Foundation/GTMExceptionalInlines.m56
-rw-r--r--Foundation/GTMExceptionalInlinesTest.m71
-rw-r--r--Foundation/GTMFileSystemKQueueTest.m197
-rw-r--r--Foundation/GTMFourCharCode.h51
-rw-r--r--Foundation/GTMFourCharCode.m97
-rw-r--r--Foundation/GTMFourCharCodeTest.m122
-rw-r--r--Foundation/GTMGeometryUtilsTest.m162
-rw-r--r--Foundation/GTMLightweightProxyTest.m60
-rw-r--r--Foundation/GTMLogger+ASLTest.m18
-rw-r--r--Foundation/GTMLogger.m2
-rw-r--r--Foundation/GTMLoggerRingBufferWriterTest.m123
-rw-r--r--Foundation/GTMLoggerTest.m332
-rw-r--r--Foundation/GTMNSAppleEvent+HandlerTest.applescript60
-rw-r--r--Foundation/GTMNSAppleEventDescriptor+Foundation.h102
-rw-r--r--Foundation/GTMNSAppleEventDescriptor+Foundation.m536
-rw-r--r--Foundation/GTMNSAppleEventDescriptor+FoundationTest.m643
-rw-r--r--Foundation/GTMNSAppleEventDescriptor+Handler.h45
-rw-r--r--Foundation/GTMNSAppleEventDescriptor+Handler.m130
-rw-r--r--Foundation/GTMNSAppleEventDescriptor+HandlerTest.m70
-rw-r--r--Foundation/GTMNSAppleScript+Handler.h132
-rw-r--r--Foundation/GTMNSAppleScript+Handler.m662
-rw-r--r--Foundation/GTMNSAppleScript+HandlerTest.m504
-rw-r--r--Foundation/GTMNSArray+Merge.m14
-rw-r--r--Foundation/GTMNSArray+MergeTest.m101
-rw-r--r--Foundation/GTMNSData+zlib.h93
-rw-r--r--Foundation/GTMNSData+zlib.m264
-rw-r--r--Foundation/GTMNSData+zlibTest.m689
-rw-r--r--Foundation/GTMNSDictionary+CaseInsensitive.h44
-rw-r--r--Foundation/GTMNSDictionary+CaseInsensitive.m116
-rw-r--r--Foundation/GTMNSDictionary+CaseInsensitiveTest.m119
-rw-r--r--Foundation/GTMNSDictionary+URLArguments.m4
-rw-r--r--Foundation/GTMNSDictionary+URLArgumentsTest.m68
-rw-r--r--Foundation/GTMNSEnumerator+Filter.h69
-rw-r--r--Foundation/GTMNSEnumerator+Filter.m221
-rw-r--r--Foundation/GTMNSEnumerator+FilterTest.m208
-rw-r--r--Foundation/GTMNSFileHandle+UniqueNameTest.m74
-rw-r--r--Foundation/GTMNSFileManager+CarbonTest.m60
-rw-r--r--Foundation/GTMNSFileManager+Path.h27
-rw-r--r--Foundation/GTMNSFileManager+Path.m40
-rw-r--r--Foundation/GTMNSFileManager+PathTest.m172
-rw-r--r--Foundation/GTMNSObject+KeyValueObserving.m14
-rw-r--r--Foundation/GTMNSObject+KeyValueObservingTest.m26
-rw-r--r--Foundation/GTMNSScanner+JSON.m17
-rw-r--r--Foundation/GTMNSScanner+JSONTest.m44
-rw-r--r--Foundation/GTMNSScanner+Unsigned.h32
-rw-r--r--Foundation/GTMNSScanner+Unsigned.m60
-rw-r--r--Foundation/GTMNSScanner+UnsignedTest.m116
-rw-r--r--Foundation/GTMNSString+FindFolderTest.m28
-rw-r--r--Foundation/GTMNSString+HTML.m513
-rw-r--r--Foundation/GTMNSString+HTMLTest.m249
-rw-r--r--Foundation/GTMNSString+URLArgumentsTest.m102
-rw-r--r--Foundation/GTMNSString+XML.m4
-rw-r--r--Foundation/GTMNSString+XMLTest.m38
-rw-r--r--Foundation/GTMNSThread+Blocks.h6
-rw-r--r--Foundation/GTMNSThread+Blocks.m32
-rw-r--r--Foundation/GTMNSThread+BlocksTest.m117
-rw-r--r--Foundation/GTMObjC2Runtime.h90
-rw-r--r--Foundation/GTMObjC2Runtime.m156
-rw-r--r--Foundation/GTMObjC2RuntimeTest.m445
-rw-r--r--Foundation/GTMPathTest.m1
-rw-r--r--Foundation/GTMRegex.m14
-rw-r--r--Foundation/GTMRegexTest.m1393
-rw-r--r--Foundation/GTMSQLite.h6
-rw-r--r--Foundation/GTMSQLite.m91
-rw-r--r--Foundation/GTMSQLiteTest.m767
-rw-r--r--Foundation/GTMScriptRunnerTest.m318
-rw-r--r--Foundation/GTMServiceManagement.c47
-rw-r--r--Foundation/GTMServiceManagement.h4
-rw-r--r--Foundation/GTMServiceManagementTest.m136
-rw-r--r--Foundation/GTMSignalHandlerTest.m43
-rw-r--r--Foundation/GTMStackTrace.h37
-rw-r--r--Foundation/GTMStackTrace.m94
-rw-r--r--Foundation/GTMStackTraceTest.m108
-rw-r--r--Foundation/GTMStringEncoding.h32
-rw-r--r--Foundation/GTMStringEncoding.m92
-rw-r--r--Foundation/GTMStringEncodingTest.m145
-rw-r--r--Foundation/GTMSystemVersion.m94
-rw-r--r--Foundation/GTMSystemVersionTest.m78
-rw-r--r--Foundation/GTMTransientRootPortProxy.h50
-rw-r--r--Foundation/GTMTransientRootPortProxy.m80
-rw-r--r--Foundation/GTMTransientRootPortProxyTest.m182
-rw-r--r--Foundation/GTMTransientRootProxy.h114
-rw-r--r--Foundation/GTMTransientRootProxy.m230
-rw-r--r--Foundation/GTMTransientRootProxyTest.m231
-rw-r--r--Foundation/GTMURITemplate.h44
-rw-r--r--Foundation/GTMURITemplate.m521
-rw-r--r--Foundation/GTMURITemplateTest.m133
-rw-r--r--Foundation/GTMURLBuilder.h4
-rw-r--r--Foundation/GTMURLBuilder.m11
-rw-r--r--Foundation/GTMURLBuilderTest.m44
-rw-r--r--Foundation/GTMValidatingContainers.h196
-rw-r--r--Foundation/GTMValidatingContainers.m491
-rw-r--r--Foundation/GTMValidatingContainersTest.m378
-rw-r--r--Foundation/TestData/GTMURITemplateExtraTests.json222
-rw-r--r--Foundation/TestData/GTMURITemplateRFCTests.json131
-rw-r--r--GTM.xcodeproj/project.pbxproj1530
-rw-r--r--GTMDefines.h137
-rw-r--r--GTM_Prefix.pch25
-rw-r--r--GTMiPhone.xcodeproj/project.pbxproj1200
-rw-r--r--GTMiPhoneUnitTestingOCUnit-Info.plist20
-rw-r--r--GoogleToolboxForMac.podspec21
-rw-r--r--UnitTesting/GTMAppKit+UnitTesting.h171
-rw-r--r--UnitTesting/GTMAppKit+UnitTesting.m583
-rw-r--r--UnitTesting/GTMAppKitUnitTestingUtilities.h15
-rw-r--r--UnitTesting/GTMAppKitUnitTestingUtilities.m158
-rw-r--r--UnitTesting/GTMCALayer+UnitTesting.h46
-rw-r--r--UnitTesting/GTMCALayer+UnitTesting.m89
-rw-r--r--UnitTesting/GTMDevLogUnitTestingBridge.m44
-rw-r--r--UnitTesting/GTMIPhoneSecurityLibraryTest.m75
-rw-r--r--UnitTesting/GTMIPhoneUnitTestDelegate.m2
-rw-r--r--UnitTesting/GTMIPhoneUnitTestMain.m28
-rw-r--r--UnitTesting/GTMNSObject+BindingUnitTesting.h120
-rw-r--r--UnitTesting/GTMNSObject+BindingUnitTesting.m577
-rw-r--r--UnitTesting/GTMNSObject+UnitTesting.h430
-rw-r--r--UnitTesting/GTMNSObject+UnitTesting.m1047
-rw-r--r--UnitTesting/GTMSenTestCase.h20
-rw-r--r--UnitTesting/GTMSenTestCase.m21
-rw-r--r--UnitTesting/GTMSenTestCaseTest.m22
-rw-r--r--UnitTesting/GTMTestTimerTest.m30
-rw-r--r--UnitTesting/GTMUIKit+UnitTesting.h128
-rw-r--r--UnitTesting/GTMUIKit+UnitTesting.m122
-rw-r--r--UnitTesting/GTMUIKit+UnitTestingTest.m67
-rw-r--r--UnitTesting/GTMUIUnitTestingHarness/English.lproj/MainMenu.xib2376
-rw-r--r--UnitTesting/GTMUIUnitTestingHarness/main.m3
-rw-r--r--UnitTesting/GTMUnitTestDevLog.h59
-rw-r--r--UnitTesting/GTMUnitTestDevLog.m253
-rw-r--r--UnitTesting/GTMUnitTestingBindingTest.m116
-rw-r--r--UnitTesting/GTMUnitTestingTest.h29
-rw-r--r--UnitTesting/GTMUnitTestingTest.m253
-rw-r--r--UnitTesting/TestData/GTMUIViewUnitTestingTest.gtmUTState33
-rw-r--r--UnitTesting/TestData/GTMUIViewUnitTestingTest.pngbin3214 -> 0 bytes
-rw-r--r--UnitTesting/TestData/GTMUnitTestingImage.10.6.tiffbin20174 -> 0 bytes
-rw-r--r--UnitTesting/TestData/GTMUnitTestingImage.gtmUTState30
-rw-r--r--UnitTesting/TestData/GTMUnitTestingImage.tiffbin67190 -> 0 bytes
-rw-r--r--UnitTesting/TestData/GTMUnitTestingTest.nib/classes.nib86
-rw-r--r--UnitTesting/TestData/GTMUnitTestingTest.nib/designable.nib1144
-rw-r--r--UnitTesting/TestData/GTMUnitTestingTest.nib/info.nib20
-rw-r--r--UnitTesting/TestData/GTMUnitTestingTest.nib/keyedobjects.nibbin15667 -> 15255 bytes
-rw-r--r--UnitTesting/TestData/GTMUnitTestingTestApp.10.6.gtmUTState2608
-rw-r--r--UnitTesting/TestData/GTMUnitTestingTestApp.gtmUTState2204
-rw-r--r--UnitTesting/TestData/GTMUnitTestingView.10.6.tiffbin2818 -> 0 bytes
-rw-r--r--UnitTesting/TestData/GTMUnitTestingView.tiffbin161670 -> 0 bytes
-rw-r--r--UnitTesting/TestData/GTMUnitTestingWindow.10.5.6.tiffbin21176 -> 0 bytes
-rw-r--r--UnitTesting/TestData/GTMUnitTestingWindow.10.5.7.tiffbin21176 -> 0 bytes
-rw-r--r--UnitTesting/TestData/GTMUnitTestingWindow.10.5.8.tiffbin21176 -> 0 bytes
-rw-r--r--UnitTesting/TestData/GTMUnitTestingWindow.10.6.gtmUTState1308
-rw-r--r--UnitTesting/TestData/GTMUnitTestingWindow.10.6.tiffbin21622 -> 0 bytes
-rw-r--r--UnitTesting/TestData/GTMUnitTestingWindow.gtmUTState904
-rw-r--r--UnitTesting/TestData/GTMUnitTestingWindow.tiffbin21226 -> 0 bytes
-rw-r--r--XcodeConfig/Project/DebugiPhone30.xcconfig41
-rw-r--r--XcodeConfig/Project/DebugiPhone31.xcconfig41
-rw-r--r--XcodeConfig/Project/DebugiPhone312.xcconfig41
-rw-r--r--XcodeConfig/Project/DebugiPhone313.xcconfig41
-rw-r--r--XcodeConfig/Project/DebugiPhone32.xcconfig41
-rw-r--r--XcodeConfig/Project/DebugiPhone40.xcconfig41
-rw-r--r--XcodeConfig/Project/DebugiPhone41.xcconfig41
-rw-r--r--XcodeConfig/Project/ReleaseiPhone30.xcconfig41
-rw-r--r--XcodeConfig/Project/ReleaseiPhone31.xcconfig41
-rw-r--r--XcodeConfig/Project/ReleaseiPhone312.xcconfig41
-rw-r--r--XcodeConfig/Project/ReleaseiPhone313.xcconfig41
-rw-r--r--XcodeConfig/Project/ReleaseiPhone32.xcconfig41
-rw-r--r--XcodeConfig/Project/ReleaseiPhone40.xcconfig41
-rw-r--r--XcodeConfig/Project/ReleaseiPhone41.xcconfig41
-rw-r--r--XcodeConfig/subconfig/Unittest.xcconfig7
-rw-r--r--iPhone/GTMFadeTruncatingLabelTest.m16
-rw-r--r--iPhone/GTMUIFont+LineHeight.m5
-rw-r--r--iPhone/GTMUIFont+LineHeightTest.m16
-rw-r--r--iPhone/GTMUIImage+ResizeTest.m164
-rw-r--r--iPhone/GTMUILocalizerTest.m26
-rw-r--r--iPhone/GTMUIView+SubtreeDescription.h60
-rw-r--r--iPhone/GTMUIView+SubtreeDescription.m145
-rw-r--r--iPhone/GTMUIView+SubtreeDescriptionTest.m150
-rw-r--r--iPhone/TestData/GTMFadeTruncatingLabelTest1.5.pngbin2540 -> 0 bytes
-rw-r--r--iPhone/TestData/GTMFadeTruncatingLabelTest1.6.pngbin2714 -> 0 bytes
-rw-r--r--iPhone/TestData/GTMFadeTruncatingLabelTest1.pngbin2788 -> 0 bytes
-rw-r--r--iPhone/TestData/GTMFadeTruncatingLabelTest2.5.pngbin1622 -> 0 bytes
-rw-r--r--iPhone/TestData/GTMFadeTruncatingLabelTest2.6.pngbin1735 -> 0 bytes
-rw-r--r--iPhone/TestData/GTMFadeTruncatingLabelTest2.pngbin1569 -> 0 bytes
-rw-r--r--iPhone/TestData/GTMFadeTruncatingLabelTest3.5.pngbin3043 -> 0 bytes
-rw-r--r--iPhone/TestData/GTMFadeTruncatingLabelTest3.6.pngbin3261 -> 0 bytes
-rw-r--r--iPhone/TestData/GTMFadeTruncatingLabelTest3.pngbin3289 -> 0 bytes
-rw-r--r--iPhone/TestData/GTMFadeTruncatingLabelTest4.5.pngbin2069 -> 0 bytes
-rw-r--r--iPhone/TestData/GTMFadeTruncatingLabelTest4.6.pngbin2122 -> 0 bytes
-rw-r--r--iPhone/TestData/GTMFadeTruncatingLabelTest4.pngbin1919 -> 0 bytes
-rw-r--r--iPhone/TestData/GTMFadeTruncatingLabelTest5.5.pngbin2559 -> 0 bytes
-rw-r--r--iPhone/TestData/GTMFadeTruncatingLabelTest5.6.pngbin2661 -> 0 bytes
-rw-r--r--iPhone/TestData/GTMFadeTruncatingLabelTest5.pngbin2665 -> 0 bytes
-rw-r--r--iPhone/TestData/GTMUIImage+Resize_100x100_to_40x60.pngbin234 -> 0 bytes
-rw-r--r--iPhone/TestData/GTMUIImage+Resize_100x100_to_50x50.pngbin261 -> 0 bytes
-rw-r--r--iPhone/TestData/GTMUIImage+Resize_100x100_to_60x40.pngbin237 -> 0 bytes
-rw-r--r--iPhone/TestData/GTMUIImage+Resize_100x50_flipped.pngbin1178 -> 0 bytes
-rw-r--r--iPhone/TestData/GTMUIImage+Resize_100x50_to_40x60_clip.pngbin184 -> 0 bytes
-rw-r--r--iPhone/TestData/GTMUIImage+Resize_100x50_to_40x60_noclip.pngbin126 -> 0 bytes
-rw-r--r--iPhone/TestData/GTMUIImage+Resize_100x50_to_50x50_clip.pngbin214 -> 0 bytes
-rw-r--r--iPhone/TestData/GTMUIImage+Resize_100x50_to_50x50_noclip.pngbin151 -> 0 bytes
-rw-r--r--iPhone/TestData/GTMUIImage+Resize_100x50_to_60x40_clip.pngbin196 -> 0 bytes
-rw-r--r--iPhone/TestData/GTMUIImage+Resize_100x50_to_60x40_noclip.pngbin163 -> 0 bytes
-rw-r--r--iPhone/TestData/GTMUIImage+Resize_50x100_flipped.pngbin1197 -> 0 bytes
-rw-r--r--iPhone/TestData/GTMUIImage+Resize_50x100_to_40x60_clip.pngbin196 -> 0 bytes
-rw-r--r--iPhone/TestData/GTMUIImage+Resize_50x100_to_40x60_noclip.pngbin196 -> 0 bytes
-rw-r--r--iPhone/TestData/GTMUIImage+Resize_50x100_to_50x50_clip.pngbin218 -> 0 bytes
-rw-r--r--iPhone/TestData/GTMUIImage+Resize_50x100_to_50x50_noclip.pngbin158 -> 0 bytes
-rw-r--r--iPhone/TestData/GTMUIImage+Resize_50x100_to_60x40_clip.pngbin196 -> 0 bytes
-rw-r--r--iPhone/TestData/GTMUIImage+Resize_50x100_to_60x40_noclip.pngbin145 -> 0 bytes
405 files changed, 8208 insertions, 61348 deletions
diff --git a/AddressBook/GTMABAddressBook.m b/AddressBook/GTMABAddressBook.m
index d71aa91..c6916f9 100644
--- a/AddressBook/GTMABAddressBook.m
+++ b/AddressBook/GTMABAddressBook.m
@@ -6,9 +6,9 @@
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy
// of the License at
-//
+//
// http://www.apache.org/licenses/LICENSE-2.0
-//
+//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
@@ -25,15 +25,6 @@
#import <Cocoa/Cocoa.h>
#endif // GTM_IPHONE_SDK
-#if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_5
-// Tiger does not have this functionality, so we just set them to 0
-// as they are "or'd" in. This does change the functionality slightly.
-enum {
- NSDiacriticInsensitiveSearch = 0,
- NSWidthInsensitiveSearch = 0
-};
-#endif
-
NSString *const kGTMABUnknownPropertyName = @"UNKNOWN_PROPERTY";
typedef struct {
@@ -62,11 +53,9 @@ typedef struct {
+ (id)valueEnumeratorFor:(GTMABMultiValue*)enumeree;
+ (id)labelEnumeratorFor:(GTMABMultiValue*)enumeree;
- (id)initWithEnumeree:(GTMABMultiValue*)enumeree useLabels:(BOOL)useLabels;
-#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
-- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state
- objects:(id *)stackbuf
+- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state
+ objects:(id *)stackbuf
count:(NSUInteger)len;
-#endif // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
@end
@implementation GTMABAddressBook
@@ -109,7 +98,7 @@ typedef struct {
CFErrorRef cfError = NULL;
bool wasGood = ABAddressBookSave(addressBook_, &cfError);
if (!wasGood) {
- _GTMDevLog(@"Error in [%@ %@]: %@",
+ _GTMDevLog(@"Error in [%@ %@]: %@",
[self class], NSStringFromSelector(_cmd), cfError);
CFRelease(cfError);
}
@@ -135,13 +124,13 @@ typedef struct {
if (!record) return NO;
#if GTM_IPHONE_SDK
CFErrorRef cfError = NULL;
- bool wasGood = ABAddressBookAddRecord(addressBook_,
+ bool wasGood = ABAddressBookAddRecord(addressBook_,
[record recordRef], &cfError);
if (cfError) {
// COV_NF_START
- _GTMDevLog(@"Error in [%@ %@]: %@",
+ _GTMDevLog(@"Error in [%@ %@]: %@",
[self class], NSStringFromSelector(_cmd), cfError);
- CFRelease(cfError);
+ CFRelease(cfError);
// COV_NF_END
}
#else // GTM_IPHONE_SDK
@@ -156,11 +145,11 @@ typedef struct {
if (!record) return NO;
#if GTM_IPHONE_SDK
CFErrorRef cfError = NULL;
- bool wasGood = ABAddressBookRemoveRecord(addressBook_,
+ bool wasGood = ABAddressBookRemoveRecord(addressBook_,
[record recordRef], &cfError);
if (cfError) {
// COV_NF_START
- _GTMDevLog(@"Error in [%@ %@]: %@",
+ _GTMDevLog(@"Error in [%@ %@]: %@",
[self class], NSStringFromSelector(_cmd), cfError);
CFRelease(cfError);
// COV_NF_END
@@ -175,19 +164,19 @@ typedef struct {
}
#endif // GTM_IPHONE_SDK
return wasGood ? YES : NO;
-}
+}
- (NSArray *)people {
#if GTM_IPHONE_SDK
- NSArray *people
+ NSArray *people
= GTMCFAutorelease(ABAddressBookCopyArrayOfAllPeople(addressBook_));
#else // GTM_IPHONE_SDK
- NSArray *people
+ NSArray *people
= GTMCFAutorelease(ABCopyArrayOfAllPeople(addressBook_));
-#endif // GTM_IPHONE_SDK
+#endif // GTM_IPHONE_SDK
NSMutableArray *result = [NSMutableArray arrayWithCapacity:[people count]];
id person;
- GTM_FOREACH_OBJECT(person, people) {
+ for (person in people) {
[result addObject:[GTMABPerson recordWithRecord:person]];
}
return result;
@@ -195,15 +184,15 @@ typedef struct {
- (NSArray *)groups {
#if GTM_IPHONE_SDK
- NSArray *groups
+ NSArray *groups
= GTMCFAutorelease(ABAddressBookCopyArrayOfAllGroups(addressBook_));
#else // GTM_IPHONE_SDK
- NSArray *groups
+ NSArray *groups
= GTMCFAutorelease(ABCopyArrayOfAllGroups(addressBook_));
-#endif // GTM_IPHONE_SDK
+#endif // GTM_IPHONE_SDK
NSMutableArray *result = [NSMutableArray arrayWithCapacity:[groups count]];
id group;
- GTM_FOREACH_OBJECT(group, groups) {
+ for (group in groups) {
[result addObject:[GTMABGroup recordWithRecord:group]];
}
return result;
@@ -218,7 +207,7 @@ typedef struct {
#if GTM_IPHONE_SDK
ABRecordRef ref = ABAddressBookGetPersonWithRecordID(addressBook_, uniqueId);
#else // GTM_IPHONE_SDK
- ABRecordRef ref = ABCopyRecordForUniqueId(addressBook_,
+ ABRecordRef ref = ABCopyRecordForUniqueId(addressBook_,
(CFStringRef)uniqueId);
#endif // GTM_IPHONE_SDK
if (ref) {
@@ -232,7 +221,7 @@ typedef struct {
#if GTM_IPHONE_SDK
ABRecordRef ref = ABAddressBookGetGroupWithRecordID(addressBook_, uniqueId);
#else // GTM_IPHONE_SDK
- ABRecordRef ref = ABCopyRecordForUniqueId(addressBook_,
+ ABRecordRef ref = ABCopyRecordForUniqueId(addressBook_,
(CFStringRef)uniqueId);
#endif // GTM_IPHONE_SDK
if (ref) {
@@ -241,16 +230,16 @@ typedef struct {
return group;
}
-// Performs a prefix search on the composite names of people in an address book
+// Performs a prefix search on the composite names of people in an address book
// and returns an array of persons that match the search criteria.
- (NSArray *)peopleWithCompositeNameWithPrefix:(NSString *)prefix {
#if GTM_IPHONE_SDK
- NSArray *people =
+ NSArray *people =
GTMCFAutorelease(ABAddressBookCopyPeopleWithName(addressBook_,
(CFStringRef)prefix));
NSMutableArray *gtmPeople = [NSMutableArray arrayWithCapacity:[people count]];
id person;
- GTM_FOREACH_OBJECT(person, people) {
+ for (person in people) {
GTMABPerson *gtmPerson = [GTMABPerson recordWithRecord:person];
[gtmPeople addObject:gtmPerson];
}
@@ -263,10 +252,10 @@ typedef struct {
NSArray *people = [self people];
NSMutableArray *foundPeople = [NSMutableArray array];
GTMABPerson *person;
- GTM_FOREACH_OBJECT(person, people) {
+ for (person in people) {
NSString *compositeName = [person compositeName];
NSRange range = [compositeName rangeOfString:prefix
- options:(NSCaseInsensitiveSearch
+ options:(NSCaseInsensitiveSearch
| NSDiacriticInsensitiveSearch
| NSWidthInsensitiveSearch
| NSAnchoredSearch)];
@@ -278,16 +267,16 @@ typedef struct {
#endif
}
-// Performs a prefix search on the composite names of groups in an address book
+// Performs a prefix search on the composite names of groups in an address book
// and returns an array of groups that match the search criteria.
- (NSArray *)groupsWithCompositeNameWithPrefix:(NSString *)prefix {
NSArray *groups = [self groups];
NSMutableArray *foundGroups = [NSMutableArray array];
GTMABGroup *group;
- GTM_FOREACH_OBJECT(group, groups) {
+ for (group in groups) {
NSString *compositeName = [group compositeName];
NSRange range = [compositeName rangeOfString:prefix
- options:(NSCaseInsensitiveSearch
+ options:(NSCaseInsensitiveSearch
| NSDiacriticInsensitiveSearch
| NSWidthInsensitiveSearch
| NSAnchoredSearch)];
@@ -296,7 +285,7 @@ typedef struct {
}
}
return foundGroups;
-}
+}
+ (NSString *)localizedLabel:(NSString *)label {
#if GTM_IPHONE_SDK
@@ -342,7 +331,7 @@ typedef struct {
// 6203836 ABRecords hash to their address
// but it's the best we can do without knowing what properties
// are in a record, and we don't have an API for that.
- return [object respondsToSelector:@selector(recordRef)]
+ return [object respondsToSelector:@selector(recordRef)]
&& CFEqual(record_, [object recordRef]);
}
@@ -368,12 +357,12 @@ typedef struct {
- (id)valueForProperty:(GTMABPropertyID)property {
#if GTM_IPHONE_SDK
id value = GTMCFAutorelease(ABRecordCopyValue(record_, property));
-#else // GTM_IPHONE_SDK
+#else // GTM_IPHONE_SDK
id value = GTMCFAutorelease(ABRecordCopyValue(record_, (CFStringRef)property));
#endif // GTM_IPHONE_SDK
if (value) {
if ([[self class] typeOfProperty:property] & kABMultiValueMask) {
- value = [[[GTMABMultiValue alloc]
+ value = [[[GTMABMultiValue alloc]
initWithMultiValue:(ABMultiValueRef)value] autorelease];
}
}
@@ -384,7 +373,7 @@ typedef struct {
if (!value) return NO;
// We check the type here because of
// Radar 6201046 ABRecordSetValue returns true even if you pass in a bad type
- // for a value
+ // for a value
TypeClassNameMap fullTypeMap[] = {
{ kGTMABStringPropertyType, [NSString class] },
{ kGTMABIntegerPropertyType, [NSNumber class] },
@@ -414,11 +403,11 @@ typedef struct {
}
#if GTM_IPHONE_SDK
CFErrorRef cfError = nil;
- bool wasGood = ABRecordSetValue(record_, property,
+ bool wasGood = ABRecordSetValue(record_, property,
(CFTypeRef)value, &cfError);
if (cfError) {
// COV_NF_START
- _GTMDevLog(@"Error in [%@ %@]: %@",
+ _GTMDevLog(@"Error in [%@ %@]: %@",
[self class], NSStringFromSelector(_cmd), cfError);
CFRelease(cfError);
// COV_NF_END
@@ -433,13 +422,13 @@ typedef struct {
#if GTM_IPHONE_SDK
CFErrorRef cfError = nil;
// We check to see if the value is in the property because of:
- // Radar 6201005 ABRecordRemoveValue returns true for value that aren't
+ // Radar 6201005 ABRecordRemoveValue returns true for value that aren't
// in the record
id value = [self valueForProperty:property];
bool wasGood = value && ABRecordRemoveValue(record_, property, &cfError);
if (cfError) {
// COV_NF_START
- _GTMDevLog(@"Error in [%@ %@]: %@",
+ _GTMDevLog(@"Error in [%@ %@]: %@",
[self class], NSStringFromSelector(_cmd), cfError);
CFRelease(cfError);
// COV_NF_END
@@ -466,20 +455,20 @@ typedef struct {
+ (NSString *)localizedPropertyName:(GTMABPropertyID)property {
[self doesNotRecognizeSelector:_cmd];
- return nil;
+ return nil;
}
// COV_NF_END
@end
@implementation GTMABPerson
-+ (GTMABPerson *)personWithFirstName:(NSString *)first
++ (GTMABPerson *)personWithFirstName:(NSString *)first
lastName:(NSString *)last {
GTMABPerson *person = [[[self alloc] init] autorelease];
if (person) {
BOOL isGood = YES;
if (first) {
- isGood = [person setValue:first
+ isGood = [person setValue:first
forProperty:kGTMABPersonFirstNameProperty];
}
if (isGood && last) {
@@ -500,7 +489,7 @@ typedef struct {
self = [super initWithRecord:person];
if (person) {
CFRelease(person);
- }
+ }
return self;
}
@@ -514,12 +503,12 @@ typedef struct {
// We verify that the data is good because of:
// Radar 6202868 ABPersonSetImageData should validate image data
UIImage *image = [UIImage imageWithData:data];
- wasGood = image && ABPersonSetImageData([self recordRef],
+ wasGood = image && ABPersonSetImageData([self recordRef],
(CFDataRef)data, &cfError);
}
if (cfError) {
// COV_NF_START
- _GTMDevLog(@"Error in [%@ %@]: %@",
+ _GTMDevLog(@"Error in [%@ %@]: %@",
[self class], NSStringFromSelector(_cmd), cfError);
CFRelease(cfError);
// COV_NF_END
@@ -569,7 +558,7 @@ typedef struct {
} else {
NSString *firstName = [self valueForProperty:kGTMABPersonFirstNameProperty];
NSString *lastName = [self valueForProperty:kGTMABPersonLastNameProperty];
-
+
if (firstName && lastName) {
GTMABPersonCompositeNameFormat format;
if (flags & kABFirstNameFirst) {
@@ -593,7 +582,7 @@ typedef struct {
compositeName = @"";
}
}
-
+
return compositeName;
#endif // GTM_IPHONE_SDK
}
@@ -601,13 +590,13 @@ typedef struct {
- (NSString *)description {
#if GTM_IPHONE_SDK
return [NSString stringWithFormat:@"%@ %@ %@ %d",
- [self class],
+ [self class],
[self valueForProperty:kGTMABPersonFirstNameProperty],
[self valueForProperty:kGTMABPersonLastNameProperty],
- [self recordID]];
+ [self recordID]];
#else // GTM_IPHONE_SDK
return [NSString stringWithFormat:@"%@ %@ %@ %@",
- [self class],
+ [self class],
[self valueForProperty:kGTMABPersonFirstNameProperty],
[self valueForProperty:kGTMABPersonLastNameProperty],
[self recordID]];
@@ -616,7 +605,7 @@ typedef struct {
+ (NSString *)localizedPropertyName:(GTMABPropertyID)property {
#if GTM_IPHONE_SDK
- return GTMCFAutorelease(ABPersonCopyLocalizedPropertyName(property));
+ return GTMCFAutorelease(ABPersonCopyLocalizedPropertyName(property));
#else // GTM_IPHONE_SDK
return ABLocalizedPropertyOrLabel(property);
#endif // GTM_IPHONE_SDK
@@ -630,9 +619,9 @@ typedef struct {
return ABPersonGetCompositeNameFormatForRecord(NULL);
#endif // __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_7_0
#else // GTM_IPHONE_SDK
- NSInteger nameOrdering
+ NSInteger nameOrdering
= [[ABAddressBook sharedAddressBook] defaultNameOrdering];
- return nameOrdering == kABFirstNameFirst ?
+ return nameOrdering == kABFirstNameFirst ?
kABPersonCompositeNameFormatFirstNameFirst :
kABPersonCompositeNameFormatLastNameFirst;
#endif // GTM_IPHONE_SDK
@@ -642,8 +631,8 @@ typedef struct {
#if GTM_IPHONE_SDK
return ABPersonGetTypeOfProperty(property);
#else // GTM_IPHONE_SDK
- return ABTypeOfProperty([[GTMABAddressBook addressBook] addressBookRef],
- (CFStringRef)kABPersonRecordType,
+ return ABTypeOfProperty([[GTMABAddressBook addressBook] addressBookRef],
+ (CFStringRef)kABPersonRecordType,
(CFStringRef)property);
#endif // GTM_IPHONE_SDK
}
@@ -669,41 +658,41 @@ typedef struct {
self = [super initWithRecord:group];
if (group) {
CFRelease(group);
- }
+ }
return self;
}
- (NSArray *)members {
- NSArray *people
+ NSArray *people
= GTMCFAutorelease(ABGroupCopyArrayOfAllMembers([self recordRef]));
NSMutableArray *gtmPeople = [NSMutableArray arrayWithCapacity:[people count]];
id person;
- GTM_FOREACH_OBJECT(person, people) {
+ for (person in people) {
[gtmPeople addObject:[GTMABPerson recordWithRecord:(ABRecordRef)person]];
}
return gtmPeople;
-}
+}
- (BOOL)addMember:(GTMABPerson *)person {
#if GTM_IPHONE_SDK
CFErrorRef cfError = nil;
// We check for person because of
// Radar 6202860 Passing nil person into ABGroupAddMember crashes
- bool wasGood = person && ABGroupAddMember([self recordRef],
+ bool wasGood = person && ABGroupAddMember([self recordRef],
[person recordRef], &cfError);
if (cfError) {
// COV_NF_START
- _GTMDevLog(@"Error in [%@ %@]: %@",
+ _GTMDevLog(@"Error in [%@ %@]: %@",
[self class], NSStringFromSelector(_cmd), cfError);
CFRelease(cfError);
// COV_NF_END
}
#else // GTM_IPHONE_SDK
- bool wasGood = person && ABGroupAddMember([self recordRef],
+ bool wasGood = person && ABGroupAddMember([self recordRef],
[person recordRef]);
#endif // GTM_IPHONE_SDK
return wasGood ? YES : NO;
-}
+}
- (BOOL)removeMember:(GTMABPerson *)person {
#if GTM_IPHONE_SDK
@@ -711,11 +700,11 @@ typedef struct {
// We check for person because of
// Radar 6202860 Passing nil person into ABGroupAddMember crashes
// (I know this is remove, but it crashes there too)
- bool wasGood = person && ABGroupRemoveMember([self recordRef],
+ bool wasGood = person && ABGroupRemoveMember([self recordRef],
[person recordRef], &cfError);
if (cfError) {
// COV_NF_START
- _GTMDevLog(@"Error in [%@ %@]: %@",
+ _GTMDevLog(@"Error in [%@ %@]: %@",
[self class], NSStringFromSelector(_cmd), cfError);
CFRelease(cfError);
// COV_NF_END
@@ -725,7 +714,7 @@ typedef struct {
if (wasGood) {
NSArray *array = GTMCFAutorelease(ABPersonCopyParentGroups([person recordRef]));
if ([array containsObject:[self recordRef]]) {
- wasGood = ABGroupRemoveMember([self recordRef],
+ wasGood = ABGroupRemoveMember([self recordRef],
[person recordRef]);
} else {
wasGood = NO;
@@ -733,7 +722,7 @@ typedef struct {
}
#endif // GTM_IPHONE_SDK
return wasGood ? YES : NO;
-}
+}
- (NSString *)compositeName {
#if GTM_IPHONE_SDK
@@ -747,7 +736,7 @@ typedef struct {
GTMABPropertyType type = kGTMABInvalidPropertyType;
if (property == kABGroupNameProperty) {
type = kGTMABStringPropertyType;
- }
+ }
return type;
}
@@ -755,7 +744,7 @@ typedef struct {
NSString *name = kGTMABUnknownPropertyName;
if (property == kABGroupNameProperty) {
name = NSLocalizedStringFromTable(@"Name",
- @"GTMABAddressBook",
+ @"GTMABAddressBook",
@"name property");
}
return name;
@@ -763,13 +752,13 @@ typedef struct {
- (NSString *)description {
#if GTM_IPHONE_SDK
- return [NSString stringWithFormat:@"%@ %@ %d",
- [self class],
+ return [NSString stringWithFormat:@"%@ %@ %d",
+ [self class],
[self valueForProperty:kABGroupNameProperty],
[self recordID]];
#else // GTM_IPHONE_SDK
- return [NSString stringWithFormat:@"%@ %@ %@",
- [self class],
+ return [NSString stringWithFormat:@"%@ %@ %@",
+ [self class],
[self valueForProperty:kABGroupNameProperty],
[self recordID]];
#endif // GTM_IPHONE_SDK
@@ -823,7 +812,7 @@ typedef struct {
// 6203854 ABMultiValues hash to their address
// and it appears CFEquals just calls through to hash to compare them.
BOOL isEqual = NO;
- if ([object respondsToSelector:@selector(multiValueRef)]) {
+ if ([object respondsToSelector:@selector(multiValueRef)]) {
isEqual = multiValue_ == [object multiValueRef];
if (!isEqual) {
NSUInteger count = [self count];
@@ -835,7 +824,7 @@ typedef struct {
isEqual = [label isEqual:objLabel];
if (isEqual) {
id value = [self valueAtIndex:i];
- GTMABMultiValue *multiValueObject
+ GTMABMultiValue *multiValueObject
= GTM_STATIC_CAST(GTMABMultiValue, object);
id objValue = [multiValueObject valueAtIndex:i];
isEqual = [value isEqual:objValue];
@@ -870,13 +859,13 @@ typedef struct {
if (idx < [self count]) {
value = GTMCFAutorelease(ABMultiValueCopyValueAtIndex(multiValue_, idx));
ABPropertyType type = [self propertyType];
- if (type == kGTMABIntegerPropertyType
+ if (type == kGTMABIntegerPropertyType
|| type == kGTMABRealPropertyType
|| type == kGTMABDictionaryPropertyType) {
// This is because of
// 6208390 Integer and real values don't work in ABMultiValueRefs
- // Apparently they forget to add a ref count on int, real and
- // dictionary values in ABMultiValueCopyValueAtIndex, although they do
+ // Apparently they forget to add a ref count on int, real and
+ // dictionary values in ABMultiValueCopyValueAtIndex, although they do
// remember them for all other types.
// Once they fix this, this will lead to a leak, but I figure the leak
// is better than the crash. Our unittests will test to make sure that
@@ -907,7 +896,7 @@ typedef struct {
#if GTM_IPHONE_SDK
identifier = ABMultiValueGetIdentifierAtIndex(multiValue_, idx);
#else // GTM_IPHONE_SDK
- identifier = GTMCFAutorelease(ABMultiValueCopyIdentifierAtIndex(multiValue_,
+ identifier = GTMCFAutorelease(ABMultiValueCopyIdentifierAtIndex(multiValue_,
idx));
#endif // GTM_IPHONE_SDK
}
@@ -918,7 +907,7 @@ typedef struct {
#if GTM_IPHONE_SDK
NSUInteger idx = ABMultiValueGetIndexForIdentifier(multiValue_, identifier);
#else // GTM_IPHONE_SDK
- NSUInteger idx = ABMultiValueIndexForIdentifier(multiValue_,
+ NSUInteger idx = ABMultiValueIndexForIdentifier(multiValue_,
(CFStringRef)identifier);
#endif // GTM_IPHONE_SDK
return idx == (NSUInteger)kCFNotFound ? (NSUInteger)NSNotFound : idx;
@@ -974,7 +963,7 @@ typedef struct {
self = [super initWithMultiValue:ref];
if (ref) {
CFRelease(ref);
- }
+ }
return self;
}
@@ -986,7 +975,7 @@ typedef struct {
self = [super initWithMultiValue:ref];
if (ref) {
CFRelease(ref);
- }
+ }
return self;
}
@@ -1006,11 +995,11 @@ typedef struct {
};
GTMABPropertyType type = [self propertyType] & ~kABMultiValueMask;
#if GTM_MACOS_SDK
- // Since on the desktop mutables don't have a type UNTIL they have
+ // Since on the desktop mutables don't have a type UNTIL they have
// something in them, return YES if it's empty.
if ((type == 0) && ([self count] == 0)) return YES;
#endif // GTM_MACOS_SDK
- for (size_t i = 0;
+ for (size_t i = 0;
i < sizeof(singleValueTypeMap) / sizeof(TypeClassNameMap); ++i) {
if (singleValueTypeMap[i].pType == type) {
if ([[value class] isSubclassOfClass:singleValueTypeMap[i].class]) {
@@ -1030,14 +1019,14 @@ typedef struct {
bool wasGood = label && [self checkValueType:value];
if (wasGood) {
#if GTM_IPHONE_SDK
- wasGood = ABMultiValueAddValueAndLabel(multiValue_,
- value,
- label,
+ wasGood = ABMultiValueAddValueAndLabel(multiValue_,
+ value,
+ label,
&identifier);
-#else // GTM_IPHONE_SDK
- wasGood = ABMultiValueAdd((ABMutableMultiValueRef)multiValue_,
- value,
- label,
+#else // GTM_IPHONE_SDK
+ wasGood = ABMultiValueAdd((ABMutableMultiValueRef)multiValue_,
+ value,
+ label,
(CFStringRef *)&identifier);
#endif // GTM_IPHONE_SDK
}
@@ -1049,12 +1038,12 @@ typedef struct {
return identifier;
}
-- (GTMABMultiValueIdentifier)insertValue:(id)value
- withLabel:(CFStringRef)label
+- (GTMABMultiValueIdentifier)insertValue:(id)value
+ withLabel:(CFStringRef)label
atIndex:(NSUInteger)idx {
GTMABMultiValueIdentifier identifier = kGTMABMultiValueInvalidIdentifier;
// We perform a check here to ensure that we don't get bitten by
- // Radar 6202807 ABMultiValueInsertValueAndLabelAtIndex allows you to insert
+ // Radar 6202807 ABMultiValueInsertValueAndLabelAtIndex allows you to insert
// values past end
NSUInteger count = [self count];
// We check label and value here because of
@@ -1062,16 +1051,16 @@ typedef struct {
bool wasGood = idx <= count && label && [self checkValueType:value];
if (wasGood) {
#if GTM_IPHONE_SDK
- wasGood = ABMultiValueInsertValueAndLabelAtIndex(multiValue_,
- value,
- label,
- idx,
+ wasGood = ABMultiValueInsertValueAndLabelAtIndex(multiValue_,
+ value,
+ label,
+ idx,
&identifier);
#else // GTM_IPHONE_SDK
- wasGood = ABMultiValueInsert((ABMutableMultiValueRef)multiValue_,
- value,
- label,
- idx,
+ wasGood = ABMultiValueInsert((ABMutableMultiValueRef)multiValue_,
+ value,
+ label,
+ idx,
(CFStringRef *)&identifier);
#endif // GTM_IPHONE_SDK
}
@@ -1088,7 +1077,7 @@ typedef struct {
NSUInteger count = [self count];
if (idx < count) {
#if GTM_IPHONE_SDK
- bool wasGood = ABMultiValueRemoveValueAndLabelAtIndex(multiValue_,
+ bool wasGood = ABMultiValueRemoveValueAndLabelAtIndex(multiValue_,
idx);
#else // GTM_IPHONE_SDK
bool wasGood = ABMultiValueRemove((ABMutableMultiValueRef)multiValue_,
@@ -1099,7 +1088,7 @@ typedef struct {
isGood = YES;
}
}
- return isGood;
+ return isGood;
}
- (BOOL)replaceValueAtIndex:(NSUInteger)idx withValue:(id)value {
@@ -1107,11 +1096,11 @@ typedef struct {
NSUInteger count = [self count];
if (idx < count && [self checkValueType:value]) {
#if GTM_IPHONE_SDK
- bool goodReplace = ABMultiValueReplaceValueAtIndex(multiValue_,
+ bool goodReplace = ABMultiValueReplaceValueAtIndex(multiValue_,
value, idx);
#else // GTM_IPHONE_SDK
- bool goodReplace
- = ABMultiValueReplaceValue((ABMutableMultiValueRef)multiValue_,
+ bool goodReplace
+ = ABMultiValueReplaceValue((ABMutableMultiValueRef)multiValue_,
(CFTypeRef)value, idx);
#endif // GTM_IPHONE_SDK
if (goodReplace) {
@@ -1119,7 +1108,7 @@ typedef struct {
isGood = YES;
}
}
- return isGood;
+ return isGood;
}
- (BOOL)replaceLabelAtIndex:(NSUInteger)idx withLabel:(CFStringRef)label {
@@ -1127,11 +1116,11 @@ typedef struct {
NSUInteger count = [self count];
if (idx < count) {
#if GTM_IPHONE_SDK
- bool goodReplace = ABMultiValueReplaceLabelAtIndex(multiValue_,
+ bool goodReplace = ABMultiValueReplaceLabelAtIndex(multiValue_,
label, idx);
#else // GTM_IPHONE_SDK
- bool goodReplace
- = ABMultiValueReplaceLabel((ABMutableMultiValueRef)multiValue_,
+ bool goodReplace
+ = ABMultiValueReplaceLabel((ABMutableMultiValueRef)multiValue_,
(CFTypeRef)label, idx);
#endif // GTM_IPHONE_SDK
if (goodReplace) {
@@ -1139,14 +1128,14 @@ typedef struct {
isGood = YES;
}
}
- return isGood;
+ return isGood;
}
-
+
- (unsigned long*)mutations {
return &mutations_;
}
@end
-
+
@implementation GTMABMultiValueEnumerator
@@ -1180,19 +1169,18 @@ typedef struct {
[super dealloc];
}
-#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
-- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state
- objects:(id *)stackbuf
+- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state
+ objects:(id *)stackbuf
count:(NSUInteger)len {
NSUInteger i;
if (!ref_) {
count_ = [enumeree_ count];
ref_ = [enumeree_ multiValueRef];
}
-
+
for (i = 0; state->state < count_ && i < len; ++i, ++state->state) {
if (useLabels_) {
- stackbuf[i] = GTMCFAutorelease(ABMultiValueCopyLabelAtIndex(ref_,
+ stackbuf[i] = GTMCFAutorelease(ABMultiValueCopyLabelAtIndex(ref_,
state->state));
} else {
// TODO(dmaclach) Check this on Mac Desktop and use fast path if we can
@@ -1203,12 +1191,11 @@ typedef struct {
stackbuf[i] = [enumeree_ valueAtIndex:state->state];
}
}
-
+
state->itemsPtr = stackbuf;
state->mutationsPtr = [enumeree_ mutations];
return i;
}
-#endif // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
- (id)nextObject {
id value = nil;
@@ -1227,7 +1214,7 @@ typedef struct {
}
if (index_ < count_) {
if (useLabels_) {
- value = GTMCFAutorelease(ABMultiValueCopyLabelAtIndex(ref_,
+ value = GTMCFAutorelease(ABMultiValueCopyLabelAtIndex(ref_,
index_));
} else {
// TODO(dmaclach) Check this on Mac Desktop and use fast path if we can
diff --git a/AddressBook/GTMABAddressBookTest.m b/AddressBook/GTMABAddressBookTest.m
index 7711648..de5a2ab 100644
--- a/AddressBook/GTMABAddressBookTest.m
+++ b/AddressBook/GTMABAddressBookTest.m
@@ -37,6 +37,24 @@ static NSString *const kGTMABTestGroupName = @"GTMABAddressBookTestGroupName";
@implementation GTMABAddressBookTest
+
+#if GTM_IPHONE_SDK
+
+// On iOS we need to check if we have access to the Address Book before running any tests.
+// See
+// third_party/objective_c/google_toolbox_for_mac/UnitTesting/GTMIPhoneUnitTestMain.m
+// for a way this can be provided via entitlements.
+
++ (void)setUp {
+ [super setUp];
+ ABAuthorizationStatus status = ABAddressBookGetAuthorizationStatus();
+ if(status != kABAuthorizationStatusAuthorized) {
+ [NSException raise:NSInternalInconsistencyException format:@"Don't have Address Book Access"];
+ }
+}
+
+#endif // GTM_IPHONE_SDK
+
- (void)setUp {
// Create a book forcing it out of it's autorelease pool.
// I force it out of the release pool, so that we will see any errors
@@ -45,17 +63,17 @@ static NSString *const kGTMABTestGroupName = @"GTMABAddressBookTestGroupName";
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
book_ = [[GTMABAddressBook addressBook] retain];
[pool release];
- STAssertNotNil(book_, nil);
+ XCTAssertNotNil(book_);
NSArray *people
= [book_ peopleWithCompositeNameWithPrefix:kGTMABTestFirstName];
GTMABPerson *person;
- GTM_FOREACH_OBJECT(person, people) {
+ for (person in people) {
[book_ removeRecord:person];
}
NSArray *groups
= [book_ groupsWithCompositeNameWithPrefix:kGTMABTestGroupName];
GTMABGroup *group;
- GTM_FOREACH_OBJECT(group, groups) {
+ for (group in groups) {
[book_ removeRecord:group];
}
[book_ save];
@@ -66,340 +84,339 @@ static NSString *const kGTMABTestGroupName = @"GTMABAddressBookTestGroupName";
}
- (void)testGenericAddressBook {
- STAssertEqualObjects([GTMABAddressBook localizedLabel:(NSString *)kABHomeLabel],
- @"home",
- nil);
- STAssertThrows([GTMABRecord recordWithRecord:nil], nil);
+ XCTAssertEqualObjects([GTMABAddressBook localizedLabel:(NSString *)kABHomeLabel],
+ @"home");
+ XCTAssertThrows([GTMABRecord recordWithRecord:nil]);
}
- (void)testAddingAndRemovingPerson {
// Create a person
GTMABPerson *person = [GTMABPerson personWithFirstName:kGTMABTestFirstName
lastName:kGTMABTestLastName];
- STAssertNotNil(person, nil);
+ XCTAssertNotNil(person);
// Add person
NSArray *people = [book_ people];
- STAssertFalse([people containsObject:person], nil);
- STAssertTrue([book_ addRecord:person], nil);
+ XCTAssertFalse([people containsObject:person]);
+ XCTAssertTrue([book_ addRecord:person]);
#if GTM_IPHONE_SDK && (__IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_3_2)
- // Normally this next line would be STAssertTrue, however due to
+ // Normally this next line would be XCTAssertTrue, however due to
// Radar 6200638: ABAddressBookHasUnsavedChanges doesn't work
// We will check to make sure it stays broken ;-)
- STAssertFalse([book_ hasUnsavedChanges], nil);
+ XCTAssertFalse([book_ hasUnsavedChanges]);
#else // GTM_IPHONE_SDK
- STAssertTrue([book_ hasUnsavedChanges], nil);
+ XCTAssertTrue([book_ hasUnsavedChanges]);
#endif // GTM_IPHONE_SDK
people = [book_ people];
- STAssertNotNil(people, nil);
+ XCTAssertNotNil(people);
#if GTM_IPHONE_SDK
- // Normally this next line would be STAssertTrue, however due to
+ // Normally this next line would be XCTAssertTrue, however due to
// Radar 6200703: ABAddressBookAddRecord doesn't add an item to the people
// array until it's saved
// We will check to make sure it stays broken ;-)
- STAssertFalse([people containsObject:person], nil);
+ XCTAssertFalse([people containsObject:person]);
#else // GTM_IPHONE_SDK
- STAssertTrue([people containsObject:person], nil);
+ XCTAssertTrue([people containsObject:person]);
#endif // GTM_IPHONE_SDK
// Save book_
- STAssertTrue([book_ save], nil);
+ XCTAssertTrue([book_ save]);
people = [book_ people];
- STAssertNotNil(people, nil);
- STAssertTrue([people containsObject:person], nil);
+ XCTAssertNotNil(people);
+ XCTAssertTrue([people containsObject:person]);
people = [book_ peopleWithCompositeNameWithPrefix:kGTMABTestFirstName];
- STAssertEqualObjects([people objectAtIndex:0], person, nil);
+ XCTAssertEqualObjects([people objectAtIndex:0], person);
GTMABRecordID recordID = [person recordID];
- STAssertNotEquals(recordID, kGTMABRecordInvalidID, nil);
+ XCTAssertNotEqual(recordID, kGTMABRecordInvalidID);
GTMABRecord *record = [book_ personForId:recordID];
- STAssertEqualObjects(record, person, nil);
+ XCTAssertEqualObjects(record, person);
// Remove person
- STAssertTrue([book_ removeRecord:person], nil);
+ XCTAssertTrue([book_ removeRecord:person]);
people = [book_ peopleWithCompositeNameWithPrefix:kGTMABTestFirstName];
- STAssertEquals([people count], (NSUInteger)0, nil);
+ XCTAssertEqual([people count], (NSUInteger)0);
#if GTM_IPHONE_SDK && (__IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_3_2)
- // Normally this next line would be STAssertTrue, however due to
+ // Normally this next line would be XCTAssertTrue, however due to
// Radar 6200638: ABAddressBookHasUnsavedChanges doesn't work
// We will check to make sure it stays broken ;-)
- STAssertFalse([book_ hasUnsavedChanges], nil);
+ XCTAssertFalse([book_ hasUnsavedChanges]);
#else // GTM_IPHONE_SDK
- STAssertTrue([book_ hasUnsavedChanges], nil);
+ XCTAssertTrue([book_ hasUnsavedChanges]);
#endif // GTM_IPHONE_SDK
people = [book_ people];
- STAssertFalse([people containsObject:person], nil);
+ XCTAssertFalse([people containsObject:person]);
// Save Book
- STAssertTrue([book_ save], nil);
+ XCTAssertTrue([book_ save]);
people = [book_ people];
- STAssertFalse([book_ hasUnsavedChanges], nil);
- STAssertFalse([people containsObject:person], nil);
+ XCTAssertFalse([book_ hasUnsavedChanges]);
+ XCTAssertFalse([people containsObject:person]);
record = [book_ personForId:recordID];
- STAssertNil(record, nil);
+ XCTAssertNil(record);
// Bogus data
- STAssertFalse([book_ addRecord:nil], nil);
- STAssertFalse([book_ removeRecord:nil], nil);
+ XCTAssertFalse([book_ addRecord:nil]);
+ XCTAssertFalse([book_ removeRecord:nil]);
- STAssertNotNULL([book_ addressBookRef], nil);
+ XCTAssertNotNULL([book_ addressBookRef]);
}
- (void)testAddingAndRemovingGroup {
// Create a group
GTMABGroup *group = [GTMABGroup groupNamed:kGTMABTestGroupName];
- STAssertNotNil(group, nil);
+ XCTAssertNotNil(group);
// Add group
NSArray *groups = [book_ groups];
- STAssertFalse([groups containsObject:group], nil);
- STAssertTrue([book_ addRecord:group], nil);
+ XCTAssertFalse([groups containsObject:group]);
+ XCTAssertTrue([book_ addRecord:group]);
#if GTM_IPHONE_SDK && (__IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_3_2)
- // Normally this next line would be STAssertTrue, however due to
+ // Normally this next line would be XCTAssertTrue, however due to
// Radar 6200638: ABAddressBookHasUnsavedChanges doesn't work
// We will check to make sure it stays broken ;-)
- STAssertFalse([book_ hasUnsavedChanges], nil);
+ XCTAssertFalse([book_ hasUnsavedChanges]);
#else // GTM_IPHONE_SDK
- STAssertTrue([book_ hasUnsavedChanges], nil);
+ XCTAssertTrue([book_ hasUnsavedChanges]);
#endif // GTM_IPHONE_SDK
groups = [book_ groups];
- STAssertNotNil(groups, nil);
+ XCTAssertNotNil(groups);
#if GTM_IPHONE_SDK
- // Normally this next line would be STAssertTrue, however due to
+ // Normally this next line would be XCTAssertTrue, however due to
// Radar 6200703: ABAddressBookAddRecord doesn't add an item to the groups
// array until it's saved
// We will check to make sure it stays broken ;-)
- STAssertFalse([groups containsObject:group], nil);
+ XCTAssertFalse([groups containsObject:group]);
#else // GTM_IPHONE_SDK
- STAssertTrue([groups containsObject:group], nil);
+ XCTAssertTrue([groups containsObject:group]);
#endif // GTM_IPHONE_SDK
// Save book_
- STAssertTrue([book_ save], nil);
+ XCTAssertTrue([book_ save]);
groups = [book_ groups];
- STAssertNotNil(groups, nil);
- STAssertTrue([groups containsObject:group], nil);
+ XCTAssertNotNil(groups);
+ XCTAssertTrue([groups containsObject:group]);
groups = [book_ groupsWithCompositeNameWithPrefix:kGTMABTestGroupName];
- STAssertEqualObjects([groups objectAtIndex:0], group, nil);
+ XCTAssertEqualObjects([groups objectAtIndex:0], group);
GTMABRecordID recordID = [group recordID];
- STAssertNotEquals(recordID, kGTMABRecordInvalidID, nil);
+ XCTAssertNotEqual(recordID, kGTMABRecordInvalidID);
GTMABRecord *record = [book_ groupForId:recordID];
- STAssertEqualObjects(record, group, nil);
+ XCTAssertEqualObjects(record, group);
// Remove group
- STAssertTrue([book_ removeRecord:group], nil);
+ XCTAssertTrue([book_ removeRecord:group]);
#if GTM_IPHONE_SDK && (__IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_3_2)
- // Normally this next line would be STAssertTrue, however due to
+ // Normally this next line would be XCTAssertTrue, however due to
// Radar 6200638: ABAddressBookHasUnsavedChanges doesn't work
// We will check to make sure it stays broken ;-)
- STAssertFalse([book_ hasUnsavedChanges], nil);
+ XCTAssertFalse([book_ hasUnsavedChanges]);
#else // GTM_IPHONE_SDK
- STAssertTrue([book_ hasUnsavedChanges], nil);
+ XCTAssertTrue([book_ hasUnsavedChanges]);
#endif // GTM_IPHONE_SDK
groups = [book_ groups];
- STAssertFalse([groups containsObject:group], nil);
+ XCTAssertFalse([groups containsObject:group]);
// Save Book
- STAssertTrue([book_ save], nil);
+ XCTAssertTrue([book_ save]);
groups = [book_ groups];
- STAssertFalse([book_ hasUnsavedChanges], nil);
- STAssertFalse([groups containsObject:group], nil);
+ XCTAssertFalse([book_ hasUnsavedChanges]);
+ XCTAssertFalse([groups containsObject:group]);
groups = [book_ groupsWithCompositeNameWithPrefix:kGTMABTestGroupName];
- STAssertEquals([groups count], (NSUInteger)0, nil);
+ XCTAssertEqual([groups count], (NSUInteger)0);
record = [book_ groupForId:recordID];
- STAssertNil(record, nil);
+ XCTAssertNil(record);
}
- (void)testPerson {
GTMABPerson *person = [[[GTMABPerson alloc] initWithRecord:nil] autorelease];
- STAssertNil(person, nil);
+ XCTAssertNil(person);
person = [GTMABPerson personWithFirstName:kGTMABTestFirstName
lastName:nil];
- STAssertNotNil(person, nil);
- STAssertEqualObjects([person compositeName], kGTMABTestFirstName, nil);
+ XCTAssertNotNil(person);
+ XCTAssertEqualObjects([person compositeName], kGTMABTestFirstName);
NSString *firstName = [person valueForProperty:kGTMABPersonFirstNameProperty];
- STAssertEqualObjects(firstName, kGTMABTestFirstName, nil);
+ XCTAssertEqualObjects(firstName, kGTMABTestFirstName);
NSString *lastName = [person valueForProperty:kGTMABPersonLastNameProperty];
- STAssertNil(lastName, nil);
- STAssertTrue([person removeValueForProperty:kGTMABPersonFirstNameProperty], nil);
- STAssertFalse([person removeValueForProperty:kGTMABPersonFirstNameProperty], nil);
- STAssertFalse([person removeValueForProperty:kGTMABPersonLastNameProperty], nil);
- STAssertFalse([person setValue:nil forProperty:kGTMABPersonFirstNameProperty], nil);
- STAssertFalse([person setValue:[NSNumber numberWithInt:1]
- forProperty:kGTMABPersonFirstNameProperty], nil);
- STAssertFalse([person setValue:@"Bart"
- forProperty:kGTMABPersonBirthdayProperty], nil);
+ XCTAssertNil(lastName);
+ XCTAssertTrue([person removeValueForProperty:kGTMABPersonFirstNameProperty]);
+ XCTAssertFalse([person removeValueForProperty:kGTMABPersonFirstNameProperty]);
+ XCTAssertFalse([person removeValueForProperty:kGTMABPersonLastNameProperty]);
+ XCTAssertFalse([person setValue:nil forProperty:kGTMABPersonFirstNameProperty]);
+ XCTAssertFalse([person setValue:[NSNumber numberWithInt:1]
+ forProperty:kGTMABPersonFirstNameProperty]);
+ XCTAssertFalse([person setValue:@"Bart"
+ forProperty:kGTMABPersonBirthdayProperty]);
GTMABPropertyType property
= [GTMABPerson typeOfProperty:kGTMABPersonLastNameProperty];
- STAssertEquals(property, (GTMABPropertyType)kGTMABStringPropertyType, nil);
+ XCTAssertEqual(property, (GTMABPropertyType)kGTMABStringPropertyType);
NSString *string
= [GTMABPerson localizedPropertyName:kGTMABPersonLastNameProperty];
- STAssertEqualObjects(string, @"Last", nil);
+ XCTAssertEqualObjects(string, @"Last");
string = [GTMABPerson localizedPropertyName:kGTMABRecordInvalidID];
#if GTM_IPHONE_SDK
- STAssertEqualObjects(string, kGTMABUnknownPropertyName, nil);
+ XCTAssertEqualObjects(string, kGTMABUnknownPropertyName);
#else // GTM_IPHONE_SDK
- STAssertEqualObjects(string, kGTMABRecordInvalidID, nil);
+ XCTAssertEqualObjects(string, kGTMABRecordInvalidID);
#endif // GTM_IPHONE_SDK
string = [person description];
- STAssertNotNil(string, nil);
+ XCTAssertNotNil(string);
GTMABPersonCompositeNameFormat format = [GTMABPerson compositeNameFormat];
- STAssertTrue(format == kABPersonCompositeNameFormatFirstNameFirst ||
- format == kABPersonCompositeNameFormatLastNameFirst, nil);
+ XCTAssertTrue(format == kABPersonCompositeNameFormatFirstNameFirst ||
+ format == kABPersonCompositeNameFormatLastNameFirst);
NSData *data = [person imageData];
- STAssertNil(data, nil);
- STAssertTrue([person setImageData:nil], nil);
+ XCTAssertNil(data);
+ XCTAssertTrue([person setImageData:nil]);
data = [person imageData];
- STAssertNil(data, nil);
+ XCTAssertNil(data);
NSBundle *bundle = [NSBundle bundleForClass:[self class]];
NSString *phonePath = [bundle pathForResource:@"phone" ofType:@"png"];
- STAssertNotNil(phonePath, nil);
+ XCTAssertNotNil(phonePath);
GTMABImage *image
= [[[GTMABImage alloc] initWithContentsOfFile:phonePath] autorelease];
- STAssertNotNil(image, nil);
+ XCTAssertNotNil(image);
#if GTM_IPHONE_SDK
data = UIImagePNGRepresentation(image);
#else // GTM_IPHONE_SDK
data = [image TIFFRepresentation];
#endif // GTM_IPHONE_SDK
- STAssertTrue([person setImageData:data], nil);
+ XCTAssertTrue([person setImageData:data]);
NSData *data2 = [person imageData];
- STAssertEqualObjects(data, data2, nil);
- STAssertTrue([person setImageData:nil], nil);
+ XCTAssertEqualObjects(data, data2);
+ XCTAssertTrue([person setImageData:nil]);
data = [person imageData];
- STAssertNil(data, nil);
+ XCTAssertNil(data);
- STAssertTrue([person setImage:image], nil);
+ XCTAssertTrue([person setImage:image]);
GTMABImage *image2 = [person image];
- STAssertNotNil(image2, nil);
+ XCTAssertNotNil(image2);
#if GTM_IPHONE_SDK
- STAssertEqualObjects(UIImagePNGRepresentation(image),
- UIImagePNGRepresentation(image2), nil);
+ XCTAssertEqualObjects(UIImagePNGRepresentation(image),
+ UIImagePNGRepresentation(image2));
#else // GTM_IPHONE_SDK
- STAssertEqualObjects([image TIFFRepresentation],
- [image2 TIFFRepresentation], nil);
+ XCTAssertEqualObjects([image TIFFRepresentation],
+ [image2 TIFFRepresentation]);
#endif // GTM_IPHONE_SDK
person = [GTMABPerson personWithFirstName:kGTMABTestFirstName
lastName:kGTMABTestLastName];
data = [NSData dataWithBytes:"a" length:1];
- STAssertFalse([person setImageData:data], nil);
+ XCTAssertFalse([person setImageData:data]);
GTMABMutableMultiValue *value
= [GTMABMutableMultiValue valueWithPropertyType:kGTMABStringPropertyType];
- STAssertNotNil(value, nil);
- STAssertNotEquals([value addValue:@"222-222-2222"
+ XCTAssertNotNil(value);
+ XCTAssertNotEqual([value addValue:@"222-222-2222"
withLabel:(CFStringRef)kABHomeLabel],
- kGTMABMultiValueInvalidIdentifier, nil);
- STAssertNotEquals([value addValue:@"333-333-3333"
+ kGTMABMultiValueInvalidIdentifier);
+ XCTAssertNotEqual([value addValue:@"333-333-3333"
withLabel:(CFStringRef)kABWorkLabel],
- kGTMABMultiValueInvalidIdentifier, nil);
- STAssertTrue([person setValue:value
- forProperty:kGTMABPersonPhoneProperty], nil);
+ kGTMABMultiValueInvalidIdentifier);
+ XCTAssertTrue([person setValue:value
+ forProperty:kGTMABPersonPhoneProperty]);
id value2 = [person valueForProperty:kGTMABPersonPhoneProperty];
- STAssertNotNil(value2, nil);
- STAssertEqualObjects(value, value2, nil);
- STAssertEquals([value hash], [value2 hash], nil);
- STAssertNotEquals([person hash], (NSUInteger)0, nil);
+ XCTAssertNotNil(value2);
+ XCTAssertEqualObjects(value, value2);
+ XCTAssertEqual([value hash], [value2 hash]);
+ XCTAssertNotEqual([person hash], (NSUInteger)0);
}
- (void)testGroup {
GTMABGroup *group = [[[GTMABGroup alloc] initWithRecord:nil] autorelease];
- STAssertNil(group, nil);
+ XCTAssertNil(group);
group = [GTMABGroup groupNamed:kGTMABTestGroupName];
- STAssertNotNil(group, nil);
- STAssertEqualObjects([group compositeName], kGTMABTestGroupName, nil);
+ XCTAssertNotNil(group);
+ XCTAssertEqualObjects([group compositeName], kGTMABTestGroupName);
NSString *name = [group valueForProperty:kABGroupNameProperty];
- STAssertEqualObjects(name, kGTMABTestGroupName, nil);
+ XCTAssertEqualObjects(name, kGTMABTestGroupName);
NSString *lastName = [group valueForProperty:kGTMABPersonLastNameProperty];
- STAssertNil(lastName, nil);
- STAssertTrue([group removeValueForProperty:kABGroupNameProperty], nil);
- STAssertFalse([group removeValueForProperty:kABGroupNameProperty], nil);
- STAssertFalse([group removeValueForProperty:kGTMABPersonLastNameProperty], nil);
- STAssertFalse([group setValue:nil forProperty:kABGroupNameProperty], nil);
- STAssertFalse([group setValue:[NSNumber numberWithInt:1]
- forProperty:kABGroupNameProperty], nil);
- STAssertFalse([group setValue:@"Bart"
- forProperty:kGTMABPersonBirthdayProperty], nil);
+ XCTAssertNil(lastName);
+ XCTAssertTrue([group removeValueForProperty:kABGroupNameProperty]);
+ XCTAssertFalse([group removeValueForProperty:kABGroupNameProperty]);
+ XCTAssertFalse([group removeValueForProperty:kGTMABPersonLastNameProperty]);
+ XCTAssertFalse([group setValue:nil forProperty:kABGroupNameProperty]);
+ XCTAssertFalse([group setValue:[NSNumber numberWithInt:1]
+ forProperty:kABGroupNameProperty]);
+ XCTAssertFalse([group setValue:@"Bart"
+ forProperty:kGTMABPersonBirthdayProperty]);
ABPropertyType property = [GTMABGroup typeOfProperty:kABGroupNameProperty];
- STAssertEquals(property, (ABPropertyType)kGTMABStringPropertyType, nil);
+ XCTAssertEqual(property, (ABPropertyType)kGTMABStringPropertyType);
property = [GTMABGroup typeOfProperty:kGTMABPersonLastNameProperty];
- STAssertEquals(property, (ABPropertyType)kGTMABInvalidPropertyType, nil);
+ XCTAssertEqual(property, (ABPropertyType)kGTMABInvalidPropertyType);
NSString *string = [GTMABGroup localizedPropertyName:kABGroupNameProperty];
- STAssertEqualObjects(string, @"Name", nil);
+ XCTAssertEqualObjects(string, @"Name");
string = [GTMABGroup localizedPropertyName:kGTMABPersonLastNameProperty];
- STAssertEqualObjects(string, kGTMABUnknownPropertyName, nil);
+ XCTAssertEqualObjects(string, kGTMABUnknownPropertyName);
string = [GTMABGroup localizedPropertyName:kGTMABRecordInvalidID];
- STAssertEqualObjects(string, kGTMABUnknownPropertyName, nil);
+ XCTAssertEqualObjects(string, kGTMABUnknownPropertyName);
string = [group description];
- STAssertNotNil(string, nil);
+ XCTAssertNotNil(string);
// Adding and removing members
group = [GTMABGroup groupNamed:kGTMABTestGroupName];
NSArray *members = [group members];
- STAssertEquals([members count], (NSUInteger)0, @"Members: %@", members);
+ XCTAssertEqual([members count], (NSUInteger)0, @"Members: %@", members);
- STAssertFalse([group addMember:nil], nil);
+ XCTAssertFalse([group addMember:nil]);
members = [group members];
- STAssertEquals([members count], (NSUInteger)0, @"Members: %@", members);
+ XCTAssertEqual([members count], (NSUInteger)0, @"Members: %@", members);
GTMABPerson *person = [GTMABPerson personWithFirstName:kGTMABTestFirstName
lastName:kGTMABTestLastName];
- STAssertNotNil(person, nil);
- STAssertTrue([book_ addRecord:person], nil);
- STAssertTrue([book_ save], nil);
- STAssertTrue([book_ addRecord:group], nil);
- STAssertTrue([book_ save], nil);
- STAssertTrue([group addMember:person], nil);
- STAssertTrue([book_ save], nil);
+ XCTAssertNotNil(person);
+ XCTAssertTrue([book_ addRecord:person]);
+ XCTAssertTrue([book_ save]);
+ XCTAssertTrue([book_ addRecord:group]);
+ XCTAssertTrue([book_ save]);
+ XCTAssertTrue([group addMember:person]);
+ XCTAssertTrue([book_ save]);
members = [group members];
- STAssertEquals([members count], (NSUInteger)1, @"Members: %@", members);
- STAssertTrue([group removeMember:person], nil);
- STAssertFalse([group removeMember:person], nil);
- STAssertFalse([group removeMember:nil], nil);
- STAssertTrue([book_ removeRecord:group], nil);
- STAssertTrue([book_ removeRecord:person], nil);
- STAssertTrue([book_ save], nil);
+ XCTAssertEqual([members count], (NSUInteger)1, @"Members: %@", members);
+ XCTAssertTrue([group removeMember:person]);
+ XCTAssertFalse([group removeMember:person]);
+ XCTAssertFalse([group removeMember:nil]);
+ XCTAssertTrue([book_ removeRecord:group]);
+ XCTAssertTrue([book_ removeRecord:person]);
+ XCTAssertTrue([book_ save]);
}
- (void)testMultiValues {
- STAssertThrows([[GTMABMultiValue alloc] init], nil);
- STAssertThrows([[GTMABMutableMultiValue alloc] init], nil);
+ XCTAssertThrows([[GTMABMultiValue alloc] init]);
+ XCTAssertThrows([[GTMABMutableMultiValue alloc] init]);
GTMABMultiValue *value = [[GTMABMultiValue alloc] initWithMultiValue:nil];
- STAssertNil(value, nil);
+ XCTAssertNil(value);
GTMABMutableMultiValue *mutValue
= [GTMABMutableMultiValue valueWithPropertyType:kGTMABInvalidPropertyType];
- STAssertNil(mutValue, nil);
+ XCTAssertNil(mutValue);
mutValue
= [[[GTMABMutableMultiValue alloc]
initWithMutableMultiValue:nil] autorelease];
- STAssertNil(mutValue, nil);
+ XCTAssertNil(mutValue);
mutValue
= [[[GTMABMutableMultiValue alloc]
initWithMultiValue:nil] autorelease];
- STAssertNil(mutValue, nil);
+ XCTAssertNil(mutValue);
#if GTM_IPHONE_SDK
// Only the IPhone version actually allows you to check types of a multivalue
// before you stick anything in it
@@ -417,154 +434,154 @@ static NSString *const kGTMABTestGroupName = @"GTMABAddressBookTestGroupName";
};
for (size_t i = 0; i < sizeof(types) / sizeof(GTMABPropertyType); ++i) {
mutValue = [GTMABMutableMultiValue valueWithPropertyType:types[i]];
- STAssertNotNil(mutValue, nil);
+ XCTAssertNotNil(mutValue);
// Oddly the Apple APIs allow you to create a mutable multi value with
// either a property type of kABFooPropertyType or kABMultiFooPropertyType
// and apparently you get back basically the same thing. However if you
// ask a type that you created with kABMultiFooPropertyType for it's type
// it returns just kABFooPropertyType.
- STAssertEquals([mutValue propertyType],
- (GTMABPropertyType)(types[i] & ~kABMultiValueMask), nil);
+ XCTAssertEqual([mutValue propertyType],
+ (GTMABPropertyType)(types[i] & ~kABMultiValueMask));
}
#endif // GTM_IPHONE_SDK
mutValue
= [GTMABMutableMultiValue valueWithPropertyType:kGTMABStringPropertyType];
- STAssertNotNil(mutValue, nil);
+ XCTAssertNotNil(mutValue);
value = [[mutValue copy] autorelease];
- STAssertEqualObjects([value class], [GTMABMultiValue class], nil);
+ XCTAssertEqualObjects([value class], [GTMABMultiValue class]);
mutValue = [[value mutableCopy] autorelease];
- STAssertEqualObjects([mutValue class], [GTMABMutableMultiValue class], nil);
- STAssertEquals([mutValue count], (NSUInteger)0, nil);
- STAssertNil([mutValue valueAtIndex:0], nil);
- STAssertNil([mutValue labelAtIndex:0], nil);
+ XCTAssertEqualObjects([mutValue class], [GTMABMutableMultiValue class]);
+ XCTAssertEqual([mutValue count], (NSUInteger)0);
+ XCTAssertNil([mutValue valueAtIndex:0]);
+ XCTAssertNil([mutValue labelAtIndex:0]);
#if GTM_IPHONE_SDK
- STAssertEquals([mutValue identifierAtIndex:0],
- kGTMABMultiValueInvalidIdentifier, nil);
- STAssertEquals([mutValue propertyType],
- (GTMABPropertyType)kGTMABStringPropertyType, nil);
+ XCTAssertEqual([mutValue identifierAtIndex:0],
+ kGTMABMultiValueInvalidIdentifier);
+ XCTAssertEqual([mutValue propertyType],
+ (GTMABPropertyType)kGTMABStringPropertyType);
#else // GTM_IPHONE_SDK
- STAssertEqualObjects([mutValue identifierAtIndex:0],
- kGTMABMultiValueInvalidIdentifier, nil);
+ XCTAssertEqualObjects([mutValue identifierAtIndex:0],
+ kGTMABMultiValueInvalidIdentifier);
#endif // GTM_IPHONE_SDK
GTMABMultiValueIdentifier ident
= [mutValue addValue:nil withLabel:(CFStringRef)kABHomeLabel];
#if GTM_IPHONE_SDK
- STAssertEquals(ident, kGTMABMultiValueInvalidIdentifier, nil);
+ XCTAssertEqual(ident, kGTMABMultiValueInvalidIdentifier);
#else // GTM_IPHONE_SDK
- STAssertEqualObjects(ident, kGTMABMultiValueInvalidIdentifier, nil);
+ XCTAssertEqualObjects(ident, kGTMABMultiValueInvalidIdentifier);
#endif // GTM_IPHONE_SDK
ident = [mutValue addValue:@"val1"
withLabel:nil];
#if GTM_IPHONE_SDK
- STAssertEquals(ident, kGTMABMultiValueInvalidIdentifier, nil);
+ XCTAssertEqual(ident, kGTMABMultiValueInvalidIdentifier);
#else // GTM_IPHONE_SDK
- STAssertEqualObjects(ident, kGTMABMultiValueInvalidIdentifier, nil);
+ XCTAssertEqualObjects(ident, kGTMABMultiValueInvalidIdentifier);
#endif // GTM_IPHONE_SDK
ident = [mutValue insertValue:@"val1"
withLabel:nil
atIndex:0];
#if GTM_IPHONE_SDK
- STAssertEquals(ident, kGTMABMultiValueInvalidIdentifier, nil);
+ XCTAssertEqual(ident, kGTMABMultiValueInvalidIdentifier);
#else // GTM_IPHONE_SDK
- STAssertEqualObjects(ident, kGTMABMultiValueInvalidIdentifier, nil);
+ XCTAssertEqualObjects(ident, kGTMABMultiValueInvalidIdentifier);
#endif // GTM_IPHONE_SDK
ident = [mutValue insertValue:nil
withLabel:(CFStringRef)kABHomeLabel
atIndex:0];
#if GTM_IPHONE_SDK
- STAssertEquals(ident, kGTMABMultiValueInvalidIdentifier, nil);
+ XCTAssertEqual(ident, kGTMABMultiValueInvalidIdentifier);
#else // GTM_IPHONE_SDK
- STAssertEqualObjects(ident, kGTMABMultiValueInvalidIdentifier, nil);
+ XCTAssertEqualObjects(ident, kGTMABMultiValueInvalidIdentifier);
#endif // GTM_IPHONE_SDK
ident = [mutValue addValue:@"val1"
withLabel:(CFStringRef)kABHomeLabel];
#if GTM_IPHONE_SDK
- STAssertNotEquals(ident, kGTMABMultiValueInvalidIdentifier, nil);
+ XCTAssertNotEqual(ident, kGTMABMultiValueInvalidIdentifier);
#else // GTM_IPHONE_SDK
- STAssertNotEqualObjects(ident, kGTMABMultiValueInvalidIdentifier, nil);
+ XCTAssertNotEqualObjects(ident, kGTMABMultiValueInvalidIdentifier);
#endif // GTM_IPHONE_SDK
GTMABMultiValueIdentifier identCheck = [mutValue identifierAtIndex:0];
#if GTM_IPHONE_SDK
- STAssertEquals(ident, identCheck, nil);
+ XCTAssertEqual(ident, identCheck);
#else // GTM_IPHONE_SDK
- STAssertEqualObjects(ident, identCheck, nil);
+ XCTAssertEqualObjects(ident, identCheck);
#endif // GTM_IPHONE_SDK
NSUInteger idx = [mutValue indexForIdentifier:ident];
- STAssertEquals(idx, (NSUInteger)0, nil);
- STAssertTrue([mutValue replaceLabelAtIndex:0
- withLabel:(CFStringRef)kABWorkLabel], nil);
- STAssertFalse([mutValue replaceLabelAtIndex:10
- withLabel:(CFStringRef)kABWorkLabel], nil);
- STAssertTrue([mutValue replaceValueAtIndex:0
- withValue:@"newVal1"], nil);
- STAssertFalse([mutValue replaceValueAtIndex:10
- withValue:@"newVal1"], nil);
-
- STAssertEqualObjects([mutValue valueForIdentifier:ident], @"newVal1", nil);
- STAssertEqualObjects([mutValue labelForIdentifier:ident],
- (NSString *)kABWorkLabel, nil);
+ XCTAssertEqual(idx, (NSUInteger)0);
+ XCTAssertTrue([mutValue replaceLabelAtIndex:0
+ withLabel:(CFStringRef)kABWorkLabel]);
+ XCTAssertFalse([mutValue replaceLabelAtIndex:10
+ withLabel:(CFStringRef)kABWorkLabel]);
+ XCTAssertTrue([mutValue replaceValueAtIndex:0
+ withValue:@"newVal1"]);
+ XCTAssertFalse([mutValue replaceValueAtIndex:10
+ withValue:@"newVal1"]);
+
+ XCTAssertEqualObjects([mutValue valueForIdentifier:ident], @"newVal1");
+ XCTAssertEqualObjects([mutValue labelForIdentifier:ident],
+ (NSString *)kABWorkLabel);
GTMABMultiValueIdentifier ident2
= [mutValue insertValue:@"val2"
withLabel:(CFStringRef)kABOtherLabel
atIndex:0];
- STAssertNotEquals(ident2, kGTMABMultiValueInvalidIdentifier, nil);
- STAssertNotEquals(ident2, ident, nil);
+ XCTAssertNotEqual(ident2, kGTMABMultiValueInvalidIdentifier);
+ XCTAssertNotEqual(ident2, ident);
GTMABMultiValueIdentifier ident3
= [mutValue insertValue:@"val3"
withLabel:(CFStringRef)kGTMABPersonPhoneMainLabel
atIndex:10];
#if GTM_IPHONE_SDK
- STAssertEquals(ident3, kGTMABMultiValueInvalidIdentifier, nil);
+ XCTAssertEqual(ident3, kGTMABMultiValueInvalidIdentifier);
#else // GTM_IPHONE_SDK
- STAssertEqualObjects(ident3, kGTMABMultiValueInvalidIdentifier, nil);
+ XCTAssertEqualObjects(ident3, kGTMABMultiValueInvalidIdentifier);
#endif // GTM_IPHONE_SDK
NSUInteger idx3 = [mutValue indexForIdentifier:ident3];
- STAssertEquals(idx3, (NSUInteger)NSNotFound, nil);
- STAssertTrue([mutValue removeValueAndLabelAtIndex:1], nil);
- STAssertFalse([mutValue removeValueAndLabelAtIndex:1], nil);
+ XCTAssertEqual(idx3, (NSUInteger)NSNotFound);
+ XCTAssertTrue([mutValue removeValueAndLabelAtIndex:1]);
+ XCTAssertFalse([mutValue removeValueAndLabelAtIndex:1]);
NSUInteger idx4
= [mutValue indexForIdentifier:kGTMABMultiValueInvalidIdentifier];
- STAssertEquals(idx4, (NSUInteger)NSNotFound, nil);
+ XCTAssertEqual(idx4, (NSUInteger)NSNotFound);
- STAssertNotNULL([mutValue multiValueRef], nil);
+ XCTAssertNotNULL([mutValue multiValueRef]);
// Enumerator test
mutValue
= [GTMABMutableMultiValue valueWithPropertyType:kGTMABIntegerPropertyType];
- STAssertNotNil(mutValue, nil);
+ XCTAssertNotNil(mutValue);
for (int i = 0; i < 100; i++) {
NSString *label = [NSString stringWithFormat:@"label %d", i];
NSNumber *val = [NSNumber numberWithInt:i];
- STAssertNotEquals([mutValue addValue:val
+ XCTAssertNotEqual([mutValue addValue:val
withLabel:(CFStringRef)label],
- kGTMABMultiValueInvalidIdentifier, nil);
+ kGTMABMultiValueInvalidIdentifier);
}
int count = 0;
NSString *label;
- GTM_FOREACH_ENUMEREE(label, [mutValue labelEnumerator]) {
+ for (label in [mutValue labelEnumerator]) {
NSString *testLabel = [NSString stringWithFormat:@"label %d", count++];
- STAssertEqualObjects(label, testLabel, nil);
+ XCTAssertEqualObjects(label, testLabel);
}
count = 0;
value = [[mutValue copy] autorelease];
NSNumber *val;
- GTM_FOREACH_ENUMEREE(val, [value valueEnumerator]) {
- STAssertEqualObjects(val, [NSNumber numberWithInt:count++], nil);
+ for (val in [value valueEnumerator]) {
+ XCTAssertEqualObjects(val, [NSNumber numberWithInt:count++]);
}
// Test messing with the values while we're enumerating them
NSEnumerator *labelEnum = [mutValue labelEnumerator];
NSEnumerator *valueEnum = [mutValue valueEnumerator];
- STAssertNotNil(labelEnum, nil);
- STAssertNotNil(valueEnum, nil);
- STAssertNotNil([labelEnum nextObject], nil);
- STAssertNotNil([valueEnum nextObject], nil);
- STAssertTrue([mutValue removeValueAndLabelAtIndex:0], nil);
- STAssertThrows([labelEnum nextObject], nil);
- STAssertThrows([valueEnum nextObject], nil);
+ XCTAssertNotNil(labelEnum);
+ XCTAssertNotNil(valueEnum);
+ XCTAssertNotNil([labelEnum nextObject]);
+ XCTAssertNotNil([valueEnum nextObject]);
+ XCTAssertTrue([mutValue removeValueAndLabelAtIndex:0]);
+ XCTAssertThrows([labelEnum nextObject]);
+ XCTAssertThrows([valueEnum nextObject]);
// Test messing with the values while we're fast enumerating them
// Should throw an exception on the second access.
@@ -572,23 +589,27 @@ static NSString *const kGTMABTestGroupName = @"GTMABAddressBookTestGroupName";
// Start at one because we removed index 0 above.
count = 1;
@try {
- GTM_FOREACH_ENUMEREE(label, [mutValue labelEnumerator]) {
+ for (label in [mutValue labelEnumerator]) {
NSString *testLabel = [NSString stringWithFormat:@"label %d", count++];
- STAssertEqualObjects(label, testLabel, nil);
- STAssertTrue([mutValue removeValueAndLabelAtIndex:50], nil);
+ XCTAssertEqualObjects(label, testLabel);
+ XCTAssertTrue([mutValue removeValueAndLabelAtIndex:50]);
}
} @catch(NSException *e) {
- STAssertEqualObjects([e name], NSGenericException, @"Got %@ instead", e);
- STAssertEquals(count, 2,
+ XCTAssertEqualObjects([e name], NSGenericException, @"Got %@ instead", e);
+ XCTAssertEqual(count, 2,
@"Should have caught it on the second access");
exceptionThrown = YES;
} // COV_NF_LINE - because we always catch, this brace doesn't get exec'd
- STAssertTrue(exceptionThrown, @"We should have thrown an exception"
+ XCTAssertTrue(exceptionThrown, @"We should have thrown an exception"
@" because the values under the enumerator were modified");
}
#if GTM_IPHONE_SDK
+
+#if (!defined(__LP64__) || !__LP64__)
+// This test does not work on LP64 because refcounts are magic and don't work the
+// same as on i386.
- (void)testRadar6208390 {
GTMABPropertyType types[] = {
kGTMABStringPropertyType,
@@ -599,14 +620,10 @@ static NSString *const kGTMABTestGroupName = @"GTMABAddressBookTestGroupName";
};
for (size_t j = 0; j < sizeof(types) / sizeof(ABPropertyType); ++j) {
ABPropertyType type = types[j];
-#if GTM_IPHONE_SDK
ABMultiValueRef ref = ABMultiValueCreateMutable(type);
-#else // GTM_IPHONE_SDK
- ABMutableMultiValueRef ref = ABMultiValueCreateMutable();
-#endif // GTM_IPHONE_SDK
- STAssertNotNULL(ref, nil);
+ XCTAssertNotNULL(ref);
NSString *label = [[NSString alloc] initWithString:@"label"];
- STAssertNotNil(label, nil);
+ XCTAssertNotNil(label);
id val = nil;
if (type == kGTMABDictionaryPropertyType) {
val = [[NSDictionary alloc] initWithObjectsAndKeys:@"1", @"1", nil];
@@ -618,27 +635,26 @@ static NSString *const kGTMABTestGroupName = @"GTMABAddressBookTestGroupName";
} else if (type == kGTMABDateTimePropertyType) {
val = [[NSDate alloc] init];
}
- STAssertNotNil(val,
- @"Testing type %d, %@", type, val);
+ XCTAssertNotNil(val, @"Testing type %d, %@", type, val);
NSUInteger firstRetainCount = [val retainCount];
- STAssertNotEquals(firstRetainCount,
+ XCTAssertNotEqual(firstRetainCount,
(NSUInteger)0,
@"Testing type %d, %@", type, val);
GTMABMultiValueIdentifier identifier;
- STAssertTrue(ABMultiValueAddValueAndLabel(ref,
- val,
- (CFStringRef)label,
- &identifier),
- @"Testing type %d, %@", type, val);
+ XCTAssertTrue(ABMultiValueAddValueAndLabel(ref,
+ val,
+ (CFStringRef)label,
+ &identifier),
+ @"Testing type %d, %@", type, val);
NSUInteger secondRetainCount = [val retainCount];
- STAssertEquals(firstRetainCount + 1,
+ XCTAssertEqual(firstRetainCount + 1,
secondRetainCount,
@"Testing type %d, %@", type, val);
[label release];
[val release];
NSUInteger thirdRetainCount = [val retainCount];
- STAssertEquals(firstRetainCount,
+ XCTAssertEqual(firstRetainCount,
thirdRetainCount,
@"Testing type %d, %@", type, val);
@@ -653,13 +669,13 @@ static NSString *const kGTMABTestGroupName = @"GTMABAddressBookTestGroupName";
if (type == kGTMABIntegerPropertyType
|| type == kGTMABRealPropertyType) {
// We are verifying that yes indeed 6208390 is still broken
- STAssertEquals(fourthRetainCount,
+ XCTAssertEqual(fourthRetainCount,
thirdRetainCount,
@"Testing type %d, %@. If you see this error it may "
@"be time to update the code to change retain behaviors"
@"with this os version", type, val);
} else {
- STAssertEquals(fourthRetainCount,
+ XCTAssertEqual(fourthRetainCount,
thirdRetainCount + 1,
@"Testing type %d, %@", type, val);
[val release];
@@ -671,6 +687,8 @@ static NSString *const kGTMABTestGroupName = @"GTMABAddressBookTestGroupName";
}
}
+#endif // (!defined(__LP64__) || !__LP64__)
+
// Globals used by testRadar6240394.
static GTMABPropertyID gGTMTestID;
static const GTMABPropertyID *gGTMTestIDPtr;
@@ -685,9 +703,9 @@ void __attribute__((constructor))SetUpIDForTestRadar6240394(void) {
// As of iPhone SDK 2.1, the property IDs aren't initialized until
// ABAddressBookCreate is actually called. They will return zero until
// then. Logged as radar 6240394.
- STAssertEquals(gGTMTestID, 0, @"If this isn't zero, Apple has fixed 6240394");
+ XCTAssertEqual(gGTMTestID, 0, @"If this isn't zero, Apple has fixed 6240394");
(void)ABAddressBookCreate();
- STAssertEquals(*gGTMTestIDPtr, kGTMABPersonLastNameProperty,
+ XCTAssertEqual(*gGTMTestIDPtr, kGTMABPersonLastNameProperty,
@"If this doesn't work, something else has broken");
}
diff --git a/AppKit/GTMCarbonEvent.m b/AppKit/GTMCarbonEvent.m
index 235306e..e18551e 100644
--- a/AppKit/GTMCarbonEvent.m
+++ b/AppKit/GTMCarbonEvent.m
@@ -343,6 +343,12 @@ const OSType kGTMCarbonFrameworkSignature = 'GTM ';
@implementation GTMCarbonEventHandler
+-(void)dealloc {
+ if (eventHandler_) {
+ verify_noerr(RemoveEventHandler(eventHandler_));
+ }
+ [super dealloc];
+}
// Does our delegate respond to eventHandler:receivedEvent:handler:
//
// Returns:
@@ -621,7 +627,7 @@ CantCreateKey:
data:&keyID];
if (handled) {
GTMCarbonHotKey *hotkey;
- GTM_FOREACH_OBJECT(hotkey, hotkeys_) {
+ for (hotkey in hotkeys_) {
if ([hotkey matchesHotKeyID:keyID]) {
EventKind kind = [event eventKind];
BOOL onKeyDown = [hotkey onKeyDown];
diff --git a/AppKit/GTMCarbonEventTest.m b/AppKit/GTMCarbonEventTest.m
index 0c7286b..ed18342 100644
--- a/AppKit/GTMCarbonEventTest.m
+++ b/AppKit/GTMCarbonEventTest.m
@@ -19,7 +19,6 @@
#import "GTMSenTestCase.h"
#import "GTMCarbonEvent.h"
#import "GTMAppKitUnitTestingUtilities.h"
-#import "GTMUnitTestDevLog.h"
@interface GTMCarbonEventTest : GTMTestCase {
@private
@@ -62,23 +61,23 @@ static const UInt32 kTestParameterValue = 'bam ';
- (void)testCopy {
GTMCarbonEvent *event2 = [[event_ copy] autorelease];
- STAssertNotNil(event2, nil);
+ XCTAssertNotNil(event2);
}
- (void)testEventWithClassAndKind {
- STAssertEquals([event_ eventClass], kTestClass, nil);
- STAssertEquals([event_ eventKind], kTestKind, nil);
+ XCTAssertEqual([event_ eventClass], kTestClass);
+ XCTAssertEqual([event_ eventKind], kTestKind);
}
- (void)testEventWithEvent {
GTMCarbonEvent *event2 = [GTMCarbonEvent eventWithEvent:[event_ event]];
- STAssertEquals([event2 event], [event_ event], nil);
+ XCTAssertEqual([event2 event], [event_ event]);
}
- (void)testCurrentEvent {
EventRef eventRef = GetCurrentEvent();
GTMCarbonEvent *event = [GTMCarbonEvent currentEvent];
- STAssertEquals([event event], eventRef, nil);
+ XCTAssertEqual([event event], eventRef);
}
- (void)testEventClass {
@@ -91,13 +90,13 @@ static const UInt32 kTestParameterValue = 'bam ';
- (void)testSetTime {
EventTime eventTime = [event_ time];
- STAssertNotEquals(eventTime, kEventDurationNoWait, nil);
- STAssertNotEquals(eventTime, kEventDurationForever, nil);
+ XCTAssertNotEqualWithAccuracy(eventTime, kEventDurationNoWait, 0.01);
+ XCTAssertNotEqualWithAccuracy(eventTime, kEventDurationForever, 0.01);
[event_ setTime:kEventDurationForever];
EventTime testTime = [event_ time];
- STAssertEquals(testTime, kEventDurationForever, nil);
+ XCTAssertEqualWithAccuracy(testTime, kEventDurationForever, 0.01);
[event_ setTime:eventTime];
- STAssertEquals([event_ time], eventTime, nil);
+ XCTAssertEqualWithAccuracy([event_ time], eventTime, 0.01);
}
- (void)testTime {
@@ -112,21 +111,21 @@ static const UInt32 kTestParameterValue = 'bam ';
UInt32 theData = kTestParameterValue;
[event_ setUInt32ParameterNamed:kTestParameterName data:&theData];
theData = 0;
- STAssertEquals([event_ sizeOfParameterNamed:kTestParameterName
+ XCTAssertEqual([event_ sizeOfParameterNamed:kTestParameterName
type:typeUInt32],
- sizeof(UInt32), nil);
- STAssertTrue([event_ getUInt32ParameterNamed:kTestParameterName
- data:&theData], nil);
- STAssertEquals(theData, kTestParameterValue, nil);
+ sizeof(UInt32));
+ XCTAssertTrue([event_ getUInt32ParameterNamed:kTestParameterName
+ data:&theData]);
+ XCTAssertEqual(theData, kTestParameterValue);
}
- (void)testGetParameterNamed {
[self testSetParameterNamed];
UInt32 theData = kTestParameterValue;
- STAssertFalse([event_ getUInt32ParameterNamed:kTestBadParameterName
- data:&theData], nil);
- STAssertFalse([event_ getUInt32ParameterNamed:kTestBadParameterName
- data:NULL], nil);
+ XCTAssertFalse([event_ getUInt32ParameterNamed:kTestBadParameterName
+ data:&theData]);
+ XCTAssertFalse([event_ getUInt32ParameterNamed:kTestBadParameterName
+ data:NULL]);
}
@@ -155,10 +154,10 @@ static const UInt32 kTestParameterValue = 'bam ';
autorelease];
[handler registerForEvents:&types count:1];
OSStatus status = [event_ sendToTarget:handler options:0];
- STAssertErr(status, eventNotHandledErr, @"status: %ld", (long)status);
+ XCTAssertErr(status, eventNotHandledErr, @"status: %d", (int)status);
[handler setDelegate:self];
status = [event_ sendToTarget:handler options:0];
- STAssertNoErr(status, @"status: %ld", (long)status);
+ XCTAssertNoErr(status, @"status: %d", (int)status);
[handler unregisterForEvents:&types count:1];
}
@@ -167,17 +166,17 @@ static const UInt32 kTestParameterValue = 'bam ';
[event_ postToMainQueue];
OSStatus status = [event_ postToQueue:eventQueue
priority:kEventPriorityStandard];
- STAssertErr(status, eventAlreadyPostedErr, @"status: %ld", (long)status);
+ XCTAssertErr(status, eventAlreadyPostedErr, @"status: %d", (int)status);
EventTypeSpec types = { kTestClass, kTestKind };
status = FlushEventsMatchingListFromQueue(eventQueue, 1, &types);
- STAssertNoErr(status, @"status: %ld", (long)status);
+ XCTAssertNoErr(status, @"status: %ld", (long)status);
eventQueue = GetCurrentEventQueue();
[event_ postToCurrentQueue];
status = [event_ postToQueue:eventQueue priority:kEventPriorityStandard];
- STAssertErr(status, eventAlreadyPostedErr, @"status: %ld", (long)status);
+ XCTAssertErr(status, eventAlreadyPostedErr, @"status: %d", (int)status);
status = FlushEventsMatchingListFromQueue(eventQueue, 1, &types);
- STAssertNoErr(status, @"status: %ld", status);
+ XCTAssertNoErr(status, @"status: %ld", (long)status);
}
- (void)testPostToMainQueue {
@@ -185,7 +184,7 @@ static const UInt32 kTestParameterValue = 'bam ';
}
- (void)testPostToCurrentQueue {
- STAssertEquals(GetCurrentEventQueue(), GetMainEventQueue(), nil);
+ XCTAssertEqual(GetCurrentEventQueue(), GetMainEventQueue());
[self testPostToMainQueue];
}
@@ -193,7 +192,7 @@ static const UInt32 kTestParameterValue = 'bam ';
NSString *descString
= [NSString stringWithFormat:@"GTMCarbonEvent 'foo ' %lu",
(unsigned long)kTestKind];
- STAssertEqualObjects([event_ description], descString, nil);
+ XCTAssertEqualObjects([event_ description], descString);
}
@end
@@ -208,21 +207,19 @@ static const UInt32 kTestParameterValue = 'bam ';
}
- (void)testEventTarget {
- STAssertNULL([handler_ eventTarget], nil);
+ XCTAssertNULL([handler_ eventTarget]);
}
- (void)testEventHandler {
- [GTMUnitTestDevLogDebug expectPattern:
- @"DebugAssert: GoogleToolboxForMac: event CantUseParams .*"];
- STAssertErr([handler_ handleEvent:nil handler:nil],
- (long)eventNotHandledErr, nil);
+ XCTAssertErr([handler_ handleEvent:nil handler:nil],
+ (long)eventNotHandledErr);
}
- (void)testDelegate {
[handler_ setDelegate:self];
- STAssertEqualObjects([handler_ delegate], self, nil);
+ XCTAssertEqualObjects([handler_ delegate], self);
[handler_ setDelegate:nil];
- STAssertNil([handler_ delegate], nil);
+ XCTAssertNil([handler_ delegate]);
}
@@ -237,7 +234,7 @@ static const UInt32 kTestParameterValue = 'bam ';
- (void)testEventHandler {
GTMCarbonEventMonitorHandler *monitor
= [GTMCarbonEventMonitorHandler sharedEventMonitorHandler];
- STAssertEquals([monitor eventTarget], GetEventMonitorTarget(), nil);
+ XCTAssertEqual([monitor eventTarget], GetEventMonitorTarget());
}
@end
@@ -253,7 +250,7 @@ extern EventTargetRef GetApplicationEventTarget(void);
- (void)testEventHandler {
GTMCarbonEventApplicationEventHandler *handler
= [GTMCarbonEventApplicationEventHandler sharedApplicationEventHandler];
- STAssertEquals([handler eventTarget], GetApplicationEventTarget(), nil);
+ XCTAssertEqual([handler eventTarget], GetApplicationEventTarget());
}
@end
@@ -272,16 +269,16 @@ extern EventTargetRef GetApplicationEventTarget(void);
- (void)testEventHandler {
GTMCarbonEventDispatcherHandler *dispatcher
= [GTMCarbonEventDispatcherHandler sharedEventDispatcherHandler];
- STAssertEquals([dispatcher eventTarget], GetEventDispatcherTarget(), nil);
+ XCTAssertEqual([dispatcher eventTarget], GetEventDispatcherTarget());
}
- (void)hitHotKey:(GTMCarbonHotKey *)key {
- STAssertEqualObjects([key userInfo], self, nil);
+ XCTAssertEqualObjects([key userInfo], self);
[hotKeyHit_ setShouldStop:YES];
}
- (void)hitExceptionalHotKey:(GTMCarbonHotKey *)key {
- STAssertEqualObjects([key userInfo], self, nil);
+ XCTAssertEqualObjects([key userInfo], self);
[hotKeyHit_ setShouldStop:YES];
[NSException raise:@"foo" format:@"bar"];
}
@@ -293,32 +290,30 @@ extern EventTargetRef GetApplicationEventTarget(void);
if (![GTMAppKitUnitTestingUtilities isScreenSaverActive]) {
GTMCarbonEventDispatcherHandler *dispatcher
= [GTMCarbonEventDispatcherHandler sharedEventDispatcherHandler];
- STAssertNotNil(dispatcher, @"Unable to acquire singleton");
+ XCTAssertNotNil(dispatcher, @"Unable to acquire singleton");
UInt32 keyMods = (NSShiftKeyMask | NSControlKeyMask
| NSAlternateKeyMask | NSCommandKeyMask);
- [GTMUnitTestDevLogDebug expectPattern:@"DebugAssert: GoogleToolboxForMac: "
- @"newKey CantCreateKey .*"];
- STAssertNil([dispatcher registerHotKey:0x5
- modifiers:keyMods
- target:nil
- action:nil
- userInfo:nil
- whenPressed:YES],
- @"Shouldn't have created hotkey");
+ XCTAssertNil([dispatcher registerHotKey:0x5
+ modifiers:keyMods
+ target:nil
+ action:nil
+ userInfo:nil
+ whenPressed:YES],
+ @"Shouldn't have created hotkey");
GTMCarbonHotKey *hotKey = [dispatcher registerHotKey:0x5
modifiers:keyMods
target:self
action:@selector(hitHotKey:)
userInfo:self
whenPressed:YES];
- STAssertNotNil(hotKey, @"Unable to create hotkey");
+ XCTAssertNotNil(hotKey, @"Unable to create hotkey");
// Post the hotkey combo to the event queue. If everything is working
// correctly hitHotKey: should get called, and hotKeyHit_ will be set for
// us. We run the event loop for a set amount of time waiting for this to
// happen.
[GTMAppKitUnitTestingUtilities postTypeCharacterEvent:'g' modifiers:keyMods];
- STAssertTrue([NSApp gtm_runUpToSixtySecondsWithContext:hotKeyHit_], nil);
+ XCTAssertTrue([NSApp gtm_runUpToSixtySecondsWithContext:hotKeyHit_]);
[dispatcher unregisterHotKey:hotKey];
}
}
@@ -330,7 +325,7 @@ extern EventTargetRef GetApplicationEventTarget(void);
if (![GTMAppKitUnitTestingUtilities isScreenSaverActive]) {
GTMCarbonEventDispatcherHandler *dispatcher
= [GTMCarbonEventDispatcherHandler sharedEventDispatcherHandler];
- STAssertNotNil(dispatcher, @"Unable to acquire singleton");
+ XCTAssertNotNil(dispatcher, @"Unable to acquire singleton");
UInt32 keyMods = (NSShiftKeyMask | NSControlKeyMask
| NSAlternateKeyMask | NSCommandKeyMask);
GTMCarbonHotKey *hotKey
@@ -340,15 +335,14 @@ extern EventTargetRef GetApplicationEventTarget(void);
action:@selector(hitExceptionalHotKey:)
userInfo:self
whenPressed:YES];
- STAssertNotNil(hotKey, @"Unable to create hotkey");
+ XCTAssertNotNil(hotKey, @"Unable to create hotkey");
// Post the hotkey combo to the event queue. If everything is working
// correctly hitHotKey: should get called, and hotKeyHit_ will be set for
// us. We run the event loop for a set amount of time waiting for this to
// happen.
[GTMAppKitUnitTestingUtilities postTypeCharacterEvent:'g' modifiers:keyMods];
- [GTMUnitTestDevLog expectString:@"Exception fired in hotkey: foo (bar)"];
- STAssertTrue([NSApp gtm_runUpToSixtySecondsWithContext:hotKeyHit_], nil);
+ XCTAssertTrue([NSApp gtm_runUpToSixtySecondsWithContext:hotKeyHit_]);
[dispatcher unregisterHotKey:hotKey];
}
}
@@ -374,11 +368,9 @@ extern EventTargetRef GetApplicationEventTarget(void);
carbonMods |= keyMap[j].carbonKey_;
}
}
- STAssertEquals(GTMCocoaToCarbonKeyModifiers(cocoaMods), carbonMods, nil);
- STAssertEquals(GTMCarbonToCocoaKeyModifiers(carbonMods), cocoaMods, nil);
+ XCTAssertEqual(GTMCocoaToCarbonKeyModifiers(cocoaMods), carbonMods);
+ XCTAssertEqual(GTMCarbonToCocoaKeyModifiers(carbonMods), cocoaMods);
}
}
-
@end
-
diff --git a/AppKit/GTMDelegatingTableColumn.h b/AppKit/GTMDelegatingTableColumn.h
deleted file mode 100644
index 63abf20..0000000
--- a/AppKit/GTMDelegatingTableColumn.h
+++ /dev/null
@@ -1,35 +0,0 @@
-//
-// GTMDelegatingTableColumn.h
-//
-// Copyright 2006-2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import <Cocoa/Cocoa.h>
-#import "GTMDefines.h"
-
-// NOTE: If you're using the 10.5 SDK, just use the new delegate method:
-// tableView:dataCellForTableColumn:row:
-
-@interface GTMDelegatingTableColumn : NSTableColumn
-// no instance state or new method, it will just invoke the tableview's delegate
-// w/ the method below.
-@end
-
-// the method delegated to
-@interface NSObject (GTMDelegatingTableColumnDelegate)
-- (id)gtm_tableView:(NSTableView *)tableView
- dataCellForTableColumn:(NSTableColumn *)tableColumn
- row:(NSInteger)row;
-@end
diff --git a/AppKit/GTMDelegatingTableColumn.m b/AppKit/GTMDelegatingTableColumn.m
deleted file mode 100644
index 0bd2371..0000000
--- a/AppKit/GTMDelegatingTableColumn.m
+++ /dev/null
@@ -1,42 +0,0 @@
-//
-// GTMDelegatingTableColumn.m
-//
-// Copyright 2006-2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMDelegatingTableColumn.h"
-
-@implementation GTMDelegatingTableColumn
-- (id)dataCellForRow:(NSInteger)row {
- id dataCell = nil;
- id delegate = [[self tableView] delegate];
- BOOL sendSuper = YES;
- if (delegate) {
- if ([delegate respondsToSelector:@selector(gtm_tableView:dataCellForTableColumn:row:)]) {
-
- dataCell = [delegate gtm_tableView:[self tableView]
- dataCellForTableColumn:self
- row:row];
- sendSuper = NO;
- } else {
- _GTMDevLog(@"tableView delegate didn't implement gtm_tableView:dataCellForTableColumn:row:");
- }
- }
- if (sendSuper) {
- dataCell = [super dataCellForRow:row];
- }
- return dataCell;
-}
-@end
diff --git a/AppKit/GTMFadeTruncatingTextFieldCellTest.m b/AppKit/GTMFadeTruncatingTextFieldCellTest.m
index c201d27..a3098d8 100644
--- a/AppKit/GTMFadeTruncatingTextFieldCellTest.m
+++ b/AppKit/GTMFadeTruncatingTextFieldCellTest.m
@@ -20,7 +20,6 @@
#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
#import "GTMSenTestCase.h"
-#import "GTMAppKit+UnitTesting.h"
#import "GTMFadeTruncatingTextFieldCell.h"
@interface GTMFadeTruncatingTextFieldCellTest : GTMTestCase
@@ -35,14 +34,7 @@
autorelease]];
[field setStringValue:@"A very long string that won't fit"];
- GTMAssertObjectImageEqualToImageNamed(field,
- @"GTMFadeTruncatingTextFieldCellTest1",
- nil);
-
[field setStringValue:@"A short string"];
- GTMAssertObjectImageEqualToImageNamed(field,
- @"GTMFadeTruncatingTextFieldCellTest2",
- nil);
// Dark background, light text (force the background to draw (which is odd
// for a text cell), but this is to make sure the support for light on dark
@@ -52,13 +44,7 @@
[field setBackgroundColor:[NSColor blackColor]];
[field setStringValue:@"A very long string that won't fit"];
- GTMAssertObjectImageEqualToImageNamed(field,
- @"GTMFadeTruncatingTextFieldCellTest3",
- nil);
[field setStringValue:@"A short string"];
- GTMAssertObjectImageEqualToImageNamed(field,
- @"GTMFadeTruncatingTextFieldCellTest4",
- nil);
}
- (void)testFadeCellLeftAndRight {
@@ -71,36 +57,17 @@
[field setCell:cell];
[field setStringValue:@"Fade on both left and right AAAA"];
- GTMAssertObjectImageEqualToImageNamed(field,
- @"GTMFadeTruncatingTextFieldCellTest5",
- nil);
-
[field setStringValue:@"Fade on left only A"];
- GTMAssertObjectImageEqualToImageNamed(field,
- @"GTMFadeTruncatingTextFieldCellTest6",
- nil);
-
[field setStringValue:@"A short string"];
- GTMAssertObjectImageEqualToImageNamed(field,
- @"GTMFadeTruncatingTextFieldCellTest2",
- nil);
-
// Test the case where the number of characters to truncate from head is not
// specified. This should cause the string to be drawn centered.
[cell setDesiredCharactersToTruncateFromHead:0];
[field setStringValue:@"Fade on both left and right AAAA"];
- GTMAssertObjectImageEqualToImageNamed(field,
- @"GTMFadeTruncatingTextFieldCellTest7",
- nil);
-
// Border with a solid background color.
[field setTextColor:[NSColor whiteColor]];
[field setDrawsBackground:YES];
[field setBackgroundColor:[NSColor blackColor]];
[field setBordered:YES];
- GTMAssertObjectImageEqualToImageNamed(field,
- @"GTMFadeTruncatingTextFieldCellTest8",
- nil);
}
@end
diff --git a/AppKit/GTMGetURLHandler.m b/AppKit/GTMGetURLHandler.m
deleted file mode 100644
index a5f7c5d..0000000
--- a/AppKit/GTMGetURLHandler.m
+++ /dev/null
@@ -1,308 +0,0 @@
-//
-// GTMGetURLHandler.m
-//
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-// Add this class to your app to have get URL handled almost automatically for
-// you. For each entry in your CFBundleURLTypes dictionaries, add a new
-// key/object pair of GTMBundleURLClass/the name of the class you want
-// to have handle the scheme(s).
-// Then have that class respond to the class method:
-// + (BOOL)gtm_openURL:(NSURL*)url
-// and voila, it will just work.
-// Note that in Debug mode we will do extensive testing to make sure that this
-// is all hooked up correctly, and will spew out to the console if we
-// find anything amiss.
-//
-// Example plist entry
-// ...
-//
-// <key>CFBundleURLTypes</key>
-// <array>
-// <dict>
-// <key>CFBundleURLName</key>
-// <string>Google Suggestion URL</string>
-// <key>GTMBundleURLClass</key>
-// <string>GoogleSuggestURLHandler</string>
-// <key>CFBundleURLSchemes</key>
-// <array>
-// <string>googlesuggest</string>
-// <string>googlesuggestextreme</string>
-// </array>
-// </dict>
-// </array>
-//
-//
-// Example implementation
-// @interface GoogleSuggestURLHandler
-// @end
-// @implementation GoogleSuggestURLHandler
-// + (BOOL)gtm_openURL:(NSURL*)url {
-// NSLog(@"%@", url);
-// }
-// @end
-
-#import <AppKit/AppKit.h>
-#import "GTMNSAppleEventDescriptor+Foundation.h"
-#import "GTMMethodCheck.h"
-
-static NSString *const kGTMBundleURLClassKey = @"GTMBundleURLClass";
-// A variety of constants Apple really should have defined somewhere to
-// allow the compiler to find your typos.
-static NSString *const kGTMCFBundleURLSchemesKey = @"CFBundleURLSchemes";
-static NSString *const kGTMCFBundleURLNameKey = @"CFBundleURLName";
-static NSString *const kGTMCFBundleTypeRoleKey = @"CFBundleTypeRole";
-static NSString *const kGTMCFBundleURLTypesKey = @"CFBundleURLTypes";
-static NSString *const kGTMCFBundleViewerRole = @"Viewer";
-static NSString *const kGTMCFBundleEditorRole = @"Editor";
-
-// Set this macro elsewhere is you want to force the
-// bundle checks on/off. They are nice for debugging
-// problems, but shouldn't be required in a release version
-// unless you are paranoid about your users messing with your
-// Info.plist
-#ifndef GTM_CHECK_BUNDLE_URL_CLASSES
-#define GTM_CHECK_BUNDLE_URL_CLASSES DEBUG
-#endif // GTM_CHECK_BUNDLE_URL_CLASSES
-
-@protocol GTMGetURLHandlerProtocol
-+ (BOOL)gtm_openURL:(NSURL*)url;
-@end
-
-@interface GTMGetURLHandler : NSObject {
- NSArray *urlTypes_;
-}
-- (id)initWithTypes:(NSArray*)urlTypes;
-- (void)getUrl:(NSAppleEventDescriptor *)event
-withReplyEvent:(NSAppleEventDescriptor *)replyEvent;
-- (void)addError:(OSStatus)error
- withDescription:(NSString*)string
- toDescriptor:(NSAppleEventDescriptor *)desc;
-+ (id)handlerForBundle:(NSBundle *)bundle;
-+ (void)getUrl:(NSAppleEventDescriptor *)event
-withReplyEvent:(NSAppleEventDescriptor *)replyEvent;
-@end
-
-@implementation GTMGetURLHandler
-GTM_METHOD_CHECK(NSNumber, gtm_appleEventDescriptor);
-GTM_METHOD_CHECK(NSString, gtm_appleEventDescriptor);
-
-+ (void)load {
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- NSAppleEventManager *man = [NSAppleEventManager sharedAppleEventManager];
- [man setEventHandler:self
- andSelector:@selector(getUrl:withReplyEvent:)
- forEventClass:kInternetEventClass
- andEventID:kAEGetURL];
- [pool drain];
-}
-
-+ (void)getUrl:(NSAppleEventDescriptor *)event
-withReplyEvent:(NSAppleEventDescriptor *)replyEvent {
- static GTMGetURLHandler *sHandler = nil;
- if (!sHandler) {
- NSBundle *bundle = [NSBundle mainBundle];
- sHandler = [GTMGetURLHandler handlerForBundle:bundle];
- if (sHandler) {
- [sHandler retain];
- }
- }
- [sHandler getUrl:event withReplyEvent:replyEvent];
-}
-
-+ (id)handlerForBundle:(NSBundle *)bundle {
- GTMGetURLHandler *handler = nil;
- NSArray *urlTypes
- = [bundle objectForInfoDictionaryKey:kGTMCFBundleURLTypesKey];
- if (urlTypes) {
- handler = [[[GTMGetURLHandler alloc] initWithTypes:urlTypes] autorelease];
- } else {
- // COV_NF_START
- // Hard to test it if we don't have it.
- _GTMDevLog(@"If you don't have CFBundleURLTypes in your plist, you may want"
- @" to remove GTMGetURLHandler.m from your project");
- // COV_NF_END
- }
- return handler;
-}
-
-- (id)initWithTypes:(NSArray*)urlTypes {
- if ((self = [super init])) {
- urlTypes_ = [urlTypes retain];
-#if GTM_CHECK_BUNDLE_URL_CLASSES
- // Some debug handling to check to make sure we can handle the
- // classes properly. We check here instead of at init in case some of the
- // handlers are being handled by plugins or other imported code that are
- // loaded after we have been initialized.
- NSDictionary *urlType;
- GTM_FOREACH_OBJECT(urlType, urlTypes_) {
- NSString *className = [urlType objectForKey:kGTMBundleURLClassKey];
- if ([className length]) {
- Class cls = NSClassFromString(className);
- if (cls) {
- if (![cls respondsToSelector:@selector(gtm_openURL:)]) {
- _GTMDevLog(@"Class %@ for URL handler %@ "
- @"(URL schemes: %@) doesn't respond to openURL:",
- className,
- [urlType objectForKey:kGTMCFBundleURLNameKey],
- [urlType objectForKey:kGTMCFBundleURLSchemesKey]);
- }
- } else {
- _GTMDevLog(@"Unable to get class %@ for URL handler %@ "
- @"(URL schemes: %@)",
- className,
- [urlType objectForKey:kGTMCFBundleURLNameKey],
- [urlType objectForKey:kGTMCFBundleURLSchemesKey]);
- }
- } else {
- NSString *role = [urlType objectForKey:kGTMCFBundleTypeRoleKey];
- if ([role caseInsensitiveCompare:kGTMCFBundleViewerRole] == NSOrderedSame ||
- [role caseInsensitiveCompare:kGTMCFBundleEditorRole] == NSOrderedSame) {
- _GTMDevLog(@"Missing %@ for URL handler %@ "
- @"(URL schemes: %@)",
- kGTMBundleURLClassKey,
- [urlType objectForKey:kGTMCFBundleURLNameKey],
- [urlType objectForKey:kGTMCFBundleURLSchemesKey]);
- }
- }
- }
-#endif // GTM_CHECK_BUNDLE_URL_CLASSES
- }
- return self;
-}
-
-// COV_NF_START
-// Singleton is never dealloc'd
-- (void)dealloc {
- [urlTypes_ release];
- [super dealloc];
-}
-// COV_NF_END
-
-
-- (NSURL*)extractURLFromEvent:(NSAppleEventDescriptor*)event
- withReplyEvent:(NSAppleEventDescriptor *)replyEvent {
- NSAppleEventDescriptor *desc
- = [event paramDescriptorForKeyword:keyDirectObject];
- NSString *urlstring = [desc stringValue];
- NSURL *url = [NSURL URLWithString:urlstring];
- if (!url) {
- // COV_NF_START
- // Can't convince the OS to give me a bad URL
- [self addError:errAECoercionFail
- withDescription:@"Unable to extract url from key direct object."
- toDescriptor:replyEvent];
- // COV_NF_END
- }
- return url;
-}
-
-- (Class)getClassForScheme:(NSString *)scheme
- withReplyEvent:(NSAppleEventDescriptor*)replyEvent {
- NSDictionary *urlType;
- Class cls = nil;
- NSString *typeScheme = nil;
- GTM_FOREACH_OBJECT(urlType, urlTypes_) {
- NSArray *schemes = [urlType objectForKey:kGTMCFBundleURLSchemesKey];
- NSString *aScheme;
- GTM_FOREACH_OBJECT(aScheme, schemes) {
- if ([aScheme caseInsensitiveCompare:scheme] == NSOrderedSame) {
- typeScheme = aScheme;
- break;
- }
- }
- if (typeScheme) {
- break;
- }
- }
- if (typeScheme) {
- NSString *class = [urlType objectForKey:kGTMBundleURLClassKey];
- if (class) {
- cls = NSClassFromString(class);
- }
- if (!cls) {
- NSString *errorString
- = [NSString stringWithFormat:@"Unable to instantiate class for "
- @"%@:%@ for scheme:%@.",
- kGTMBundleURLClassKey, class, typeScheme];
- [self addError:errAECorruptData
- withDescription:errorString
- toDescriptor:replyEvent];
- } else {
- if (![cls respondsToSelector:@selector(gtm_openURL:)]) {
- NSString *errorString
- = [NSString stringWithFormat:@"Class %@:%@ for scheme:%@ does not"
- @"respond to gtm_openURL:",
- kGTMBundleURLClassKey, class, typeScheme];
- [self addError:errAECorruptData
- withDescription:errorString
- toDescriptor:replyEvent];
- cls = Nil;
- }
- }
- } else {
- // COV_NF_START
- // Don't know how to force an URL that we don't respond to upon ourselves.
- NSString *errorString
- = [NSString stringWithFormat:@"Unable to find handler for scheme %@.",
- scheme];
- [self addError:errAECorruptData
- withDescription:errorString
- toDescriptor:replyEvent];
- // COV_NF_END
-
- }
- return cls;
-}
-
-- (void)getUrl:(NSAppleEventDescriptor *)event
-withReplyEvent:(NSAppleEventDescriptor *)replyEvent {
- NSURL *url = [self extractURLFromEvent:event withReplyEvent:replyEvent];
- if (!url) {
- return;
- }
- NSString *scheme = [url scheme];
- Class cls = [self getClassForScheme:scheme withReplyEvent:replyEvent];
- if (!cls) {
- return;
- }
- BOOL wasGood = [cls gtm_openURL:url];
- if (!wasGood) {
- NSString *errorString
- = [NSString stringWithFormat:@"[%@ gtm_openURL:] failed to handle %@",
- NSStringFromClass(cls), url];
- [self addError:errAEEventNotHandled
- withDescription:errorString
- toDescriptor:replyEvent];
- }
-}
-
-- (void)addError:(OSStatus)error
- withDescription:(NSString*)string
- toDescriptor:(NSAppleEventDescriptor *)desc {
- NSAppleEventDescriptor *errorDesc = nil;
- if (error != noErr) {
- NSNumber *errNum = [NSNumber numberWithLong:error];
- errorDesc = [errNum gtm_appleEventDescriptor];
- [desc setParamDescriptor:errorDesc forKeyword:keyErrorNumber];
- }
- if (string) {
- errorDesc = [string gtm_appleEventDescriptor];
- [desc setParamDescriptor:errorDesc forKeyword:keyErrorString];
- }
-}
-@end
-
diff --git a/AppKit/GTMGetURLHandlerTest.m b/AppKit/GTMGetURLHandlerTest.m
deleted file mode 100644
index a639176..0000000
--- a/AppKit/GTMGetURLHandlerTest.m
+++ /dev/null
@@ -1,83 +0,0 @@
-// GTMGetURLHandlerTest.m
-//
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMSenTestCase.h"
-#import "GTMUnitTestDevLog.h"
-
-static BOOL sURLHandlerWasHit;
-
-@interface GTMGetURLHandlerBadClassWarning : NSObject
-@end
-
-@implementation GTMGetURLHandlerBadClassWarning : NSObject
-@end
-
-@interface GTMGetURLHandlerTest : GTMTestCase
-@end
-
-@implementation GTMGetURLHandlerTest
-- (BOOL)openURLString:(NSString *)url {
- ProcessSerialNumber psn = { 0, kCurrentProcess };
- NSAppleEventDescriptor *currentProcess
- = [NSAppleEventDescriptor descriptorWithDescriptorType:typeProcessSerialNumber
- bytes:&psn
- length:sizeof(ProcessSerialNumber)];
- NSAppleEventDescriptor *event
- = [NSAppleEventDescriptor appleEventWithEventClass:kInternetEventClass
- eventID:kAEGetURL
- targetDescriptor:currentProcess
- returnID:kAutoGenerateReturnID
- transactionID:kAnyTransactionID];
- NSAppleEventDescriptor *keyDesc
- = [NSAppleEventDescriptor descriptorWithString:url];
- [event setParamDescriptor:keyDesc forKeyword:keyDirectObject];
- OSStatus err = AESendMessage([event aeDesc], NULL, kAEWaitReply, 60);
- return err == noErr ? YES : NO;
-}
-
-+ (BOOL)gtm_openURL:(NSURL*)url {
- sURLHandlerWasHit = !sURLHandlerWasHit;
- return YES;
-}
-
-- (void)testURLCall {
- sURLHandlerWasHit = NO;
-
- [GTMUnitTestDevLogDebug expectPattern:@"Class GTMGetURLHandlerBadClassWarning "
- @"for URL handler GTMGetURLHandlerBadClassURL .*"];
- [GTMUnitTestDevLogDebug expectPattern:@"Unable to get class "
- @"GTMGetURLHandlerMissingClassWarning for URL handler "
- @"GTMGetURLHandlerMissingClassURL .*"];
- [GTMUnitTestDevLogDebug expectPattern:@"Missing GTMBundleURLClass for URL handler "
- @"GTMGetURLHandlerMissingHandlerURL .*"];
- STAssertTrue([self openURLString:@"gtmgeturlhandlertest://test.foo"], nil);
- STAssertTrue(sURLHandlerWasHit, @"URL handler not called");
-
- STAssertTrue([self openURLString:@"gtmgeturlhandlertest://test.foo"], nil);
- STAssertFalse(sURLHandlerWasHit, @"URL handler not called 2");
-
- // test the two URL schemes with bad entries
- STAssertTrue([self openURLString:@"gtmgeturlhandlerbadclasstest://test.foo"],
- nil);
-
- STAssertTrue([self openURLString:@"gtmgeturlhandlermissingclasstest://test.foo"],
- nil);
-
- STAssertTrue([self openURLString:@"gtmgeturlhandlermissinghandlerurl://test.foo"],
- nil);
-}
-@end
diff --git a/AppKit/GTMGoogleSearch.h b/AppKit/GTMGoogleSearch.h
deleted file mode 100644
index 06b8d51..0000000
--- a/AppKit/GTMGoogleSearch.h
+++ /dev/null
@@ -1,144 +0,0 @@
-//
-// GTMGoogleSearch.h
-//
-// Copyright 2006-2009 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import <Foundation/Foundation.h>
-
-// Key for Info.plist for default global search args
-#define GTMGoogleSearchClientAppArgsKey @"GTMGoogleSearchClientAppArgs"
-
-// Types to pass in to searchForURL:ofType:arguments
-// and performQuery:ofType:arguments
-#define GTMGoogleSearchFroogle @"products"
-#define GTMGoogleSearchGroups @"groups"
-#define GTMGoogleSearchImages @"images"
-#define GTMGoogleSearchLocal @"local"
-#define GTMGoogleSearchNews @"news"
-#define GTMGoogleSearchFinance @"finance"
-#define GTMGoogleSearchBooks @"books"
-#define GTMGoogleSearchWeb @"search"
-
-// iPhone doesn't support distributed notifications, so this controls whether
-// or not we enable them in this class.
-#define GTM_GOOGLE_SEARCH_SUPPORTS_DISTRIBUTED_NOTIFICATIONS GTM_MACOS_SDK
-
-// Composes URLs and searches for google properties in the correct language
-// and domain.
-@interface GTMGoogleSearch : NSObject {
- // the cached values
- NSString *allAppsCachedDomain_;
- NSString *allAppsCachedLanguage_;
- NSString *curAppCachedDomain_;
- NSString *curAppCachedLanguage_;
- NSDictionary *globalSearchArguments_;
-}
-
-//
-// +sharedInstance
-//
-// fetches the common shared object for accessing this users preference
-//
-+ (GTMGoogleSearch*)sharedInstance;
-
-//
-// searchURLFor:ofType:arguments:
-//
-// creates a search url of type |type| for |queryText| using the user's
-// preferred domain and language settings. |args| is a set of arguments
-// that will be added into your query, and you can use it to complement
-// or override settings stored in globalSearchArguments.
-// example dictionary to do an I'm feeling lucky search would be:
-// [NSDictionary dictionaryWithObject:@"1" key:@"btnI"];
-// If queryText is nil, no query will be put in.
-// Arguments passed in in args must be properly URL escaped.
-// If you want to remove one of the arguments that will be included in the
-// global search arguments, set the object for the key you want to remove to
-// [NSNull null].
-- (NSString*)searchURLFor:(NSString *)queryText
- ofType:(NSString *)type
- arguments:(NSDictionary *)args;
-
-//
-// performQuery:ofType:arguments:
-//
-// Asks NSWorkspace to open up a query for an url created by passing
-// the args to searchURLFor:ofType:arguments: above.
-//
-- (BOOL)performQuery:(NSString *)queryText
- ofType:(NSString *)type
- arguments:(NSDictionary *)localArgs;
-
-// Global search arguments are initially picked up from your main bundle
-// info.plist if there is a dictionary entry at the top level with the key
-// "GTMGoogleSearchClientAppArgs". This dictionary should be a map of strings
-// to strings where they are the args you want passed to all Google searches.
-// You can override these with your localArgs when you actually perform the
-// search if you wish.
-// This arguments will affect all searches. Arguments must be properly URL
-// escaped.
-- (void)setGlobalSearchArguments:(NSDictionary *)args;
-
-// Returns the global search arguments.
-- (NSDictionary *)globalSearchArguments;
-
-//
-// -preferredDomainAndLanguage:areCurrentAppOnly
-//
-// fetches the user's preferred domain and language, and whether the values
-// that were grabbed were from the anyapplication domain, or from the current
-// application domain. You may pass in nil for |language| if you don't want
-// a language back, and you may pass in NULL for |currentAppOnly| if you don't
-// care about where it came from.
-//
-- (void)preferredDomain:(NSString **)domain
- language:(NSString **)language
- areCurrentAppOnly:(BOOL*)currentAppOnly;
-
-//
-// -updatePreferredDomain:language:currentApplicationOnly:
-//
-// updated the users preferred domain and language to copies of |domain| and
-// |language| respectively. |domain| can't be nil or an empty string, but
-// |language| can't be nil, but can be an empty string to signify no language
-// pref. If |currentAppOnly| is YES, only updates the preferred settings for the
-// current app, otherwise updates them for all apps.
-//
-- (void)updatePreferredDomain:(NSString *)domain
- language:(NSString *)language
- currentApplicationOnly:(BOOL)currentAppOnly;
-
-//
-// -clearPreferredDomainAndLanguageForCurrentApplication
-//
-// clears the setting for the current applications preferred domain and
-// language so future fetches will get the system level ones.
-//
-- (void)clearPreferredDomainAndLanguageForCurrentApplication;
-
-//
-// -clearPreferredDomainAndLanguageForAllApps
-//
-// clears the "AllApps" setting for preferred domain and language so future
-// fetches end up having to use the default. Odds are this is only
-// used by the unittests.
-// NOTE: this doesn't do anything to any setting that's set in an individual
-// apps preferences, so those settings will still override inplace of the
-// "all apps" value (or default).
-//
-- (void)clearPreferredDomainAndLanguageForAllApps;
-
-@end
diff --git a/AppKit/GTMGoogleSearch.m b/AppKit/GTMGoogleSearch.m
deleted file mode 100644
index 9384ade..0000000
--- a/AppKit/GTMGoogleSearch.m
+++ /dev/null
@@ -1,543 +0,0 @@
-//
-// GTMGoogleSearch.m
-//
-// Copyright 2006-2009 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMGoogleSearch.h"
-#import "GTMDefines.h"
-
-#if GTM_IPHONE_SDK
-#import <UIKit/UIKit.h>
-#else
-#import <AppKit/AppKit.h>
-#endif // GTM_IPHONE_SDK
-
-typedef struct {
- NSString *language;
- NSString *country;
- // we don't include a language, we'll use what we get from the OS
- NSString *defaultDomain;
-} LanguageDefaultInfo;
-
-//
-// this is a seed mapping from languages to domains for google search.
-// this doesn't have to be complete, as it is just a seed.
-//
-//
-static LanguageDefaultInfo kLanguageListDefaultMappingTable[] = {
- // order is important, first match is taken
- // if country is |nil|, then only language has to match
- { @"en", @"US", @"com" }, // english - united states
- { @"en", @"GB", @"co.uk" }, // english - united kingdom
- { @"en", @"CA", @"ca" }, // english - canada
- { @"en", @"AU", @"com.au" }, // english - australia
- { @"en", @"NZ", @"com" }, // english - new zealand
- { @"en", @"IE", @"ie" }, // english - ireland
- { @"en", @"IN", @"co.in" }, // english - india
- { @"en", @"PH", @"com.ph" }, // english - philippines
- { @"en", @"SG", @"com.sg" }, // english - singapore
- { @"en", @"ZA", @"co.za" }, // english - south africa
- { @"en", @"IL", @"co.il" }, // english - israel
- { @"en", nil , @"com" }, // english (catch all)
- { @"fr", @"CA", @"ca" }, // french - canada
- { @"fr", @"CH", @"ch" }, // french - switzerland
- { @"fr", nil , @"fr" }, // france
- { @"it", nil , @"it" }, // italy
- { @"de", @"AT", @"at" }, // german - austria
- { @"de", nil , @"de" }, // germany
- { @"es", @"MX", @"com.mx" }, // spanish - mexico
- { @"es", @"AR", @"com.ar" }, // spanish - argentina
- { @"es", @"CL", @"cl" }, // spanish - chile
- { @"es", @"CO", @"com.co" }, // spanish - colombia
- { @"es", @"PE", @"com.pe" }, // spanish - peru
- { @"es", @"VE", @"co.ve" }, // venezuela
- { @"es", nil , @"es" }, // spain
- { @"zh", @"TW", @"com.tw" }, // taiwan
- { @"zh", @"HK", @"com.hk" }, // hong kong
- { @"zh", nil , @"cn" }, // chinese (catch all)
- { @"ja", nil , @"co.jp" }, // japan
- { @"ko", nil , @"co.kr" }, // korea
- { @"nl", @"BE", @"be" }, // dutch - belgium
- { @"nl", nil , @"nl" }, // (dutch) netherlands
- { @"ru", nil , @"ru" }, // russia
- { @"pt", @"BZ", @"com.br"}, // portuguese - brazil
- { @"pt", nil , @"pt" }, // portugal
- { @"sv", nil , @"se" }, // sweden
- { @"nn", nil , @"no" }, // norway (two variants)
- { @"nb", nil , @"no" }, // norway (two variants)
- { @"da", nil , @"dk" }, // denmark
- { @"fi", nil , @"fi" }, // finland
- { @"bg", nil , @"bg" }, // bulgaria
- { @"hr", nil , @"hr" }, // croatia
- { @"cx", nil , @"cz" }, // czech republic
- { @"el", nil , @"gr" }, // greece
- { @"hu", nil , @"co.hu" }, // hungary
- { @"ro", nil , @"ro" }, // romania
- { @"sk", nil , @"sk" }, // slovakia
- { @"sl", nil , @"si" }, // slovenia
- { @"tr", nil , @"com.tr" }, // turkey
- { @"my", nil , @"com.my" }, // malaysia
- { @"th", nil , @"co.th" }, // thailand
- { @"uk", nil , @"com.ua" }, // ukraine
- { @"vi", nil , @"com.vn" }, // vietnam
- { @"af", nil , @"com.za" }, // south africa (afrikaans)
- { @"hi", nil , @"co.in" }, // india (hindi)
- { @"id", nil , @"co.id" }, // indonesia
- { @"pl", nil , @"pl" }, // poland
-};
-
-// the notification we use for syncing up instances in different processes
-#if GTM_GOOGLE_SEARCH_SUPPORTS_DISTRIBUTED_NOTIFICATIONS
-static NSString *const kNotificationName
- = @"com.google.GoogleSearchAllApps.prefsWritten";
-#endif
-
-// this is the bundle id we use for the pref file used for all apps
-static CFStringRef const kAllAppsBuildIdentifier
- = CFSTR("com.google.GoogleSearchAllApps");
-
-static CFStringRef const kPreferredDomainPrefKey
- = CFSTR("com.google.PreferredDomain");
-static CFStringRef const kPreferredLanguagePrefKey
- = CFSTR("com.google.PreferredLanguage");
-
-static NSString *const kDefaultDomain = @"com";
-static NSString *const kDefaultLanguage = @"en";
-
-#define SEARCH_URL_TEMPLATE @"http://www.google.%@/%@?%@"
-
-@interface GTMGoogleSearch (PrivateMethods)
-- (void)defaultDomain:(NSString**)preferedDomain
- language:(NSString**)preferredLanguage;
-- (void)reloadAllAppCachedValues:(NSNotification*)notification;
-- (void)updateAllAppsDomain:(NSString*)domain language:(NSString*)language;
-@end
-
-
-@implementation GTMGoogleSearch
-
-+ (GTMGoogleSearch *)sharedInstance {
- static GTMGoogleSearch *obj;
- if (!obj) {
- obj = [[self alloc] init];
- }
- return obj;
-}
-
-- (id)init {
- self = [super init];
- if (self != nil) {
-#if GTM_GOOGLE_SEARCH_SUPPORTS_DISTRIBUTED_NOTIFICATIONS
- // register for the notification
- NSDistributedNotificationCenter *distCenter =
- [NSDistributedNotificationCenter defaultCenter];
- [distCenter addObserver:self
- selector:@selector(reloadAllAppCachedValues:)
- name:kNotificationName
- object:nil];
-#endif // GTM_GOOGLE_SEARCH_SUPPORTS_DISTRIBUTED_NOTIFICATIONS
- // load the allApps value
- [self reloadAllAppCachedValues:nil];
-
- // load the cur app value
- CFStringRef domain
- = CFPreferencesCopyValue(kPreferredDomainPrefKey,
- kCFPreferencesCurrentApplication,
- kCFPreferencesCurrentUser,
- kCFPreferencesAnyHost);
- CFStringRef lang = CFPreferencesCopyValue(kPreferredLanguagePrefKey,
- kCFPreferencesCurrentApplication,
- kCFPreferencesCurrentUser,
- kCFPreferencesAnyHost);
-
- // make sure we got values for both and domain is not empty
- if (domain && CFStringGetLength(domain) == 0) {
- CFRelease(domain);
- domain = nil;
- if (lang) {
- CFRelease(lang);
- lang = nil;
- }
- }
-
- curAppCachedDomain_ = (NSString *)domain;
- curAppCachedLanguage_ = (NSString *)lang;
-
- NSBundle *bundle = [NSBundle mainBundle];
-
- NSDictionary *appArgs
- = [bundle objectForInfoDictionaryKey:GTMGoogleSearchClientAppArgsKey];
- globalSearchArguments_ = [appArgs retain];
- }
- return self;
-}
-
-#if GTM_GOOGLE_SEARCH_SUPPORTS_DISTRIBUTED_NOTIFICATIONS
-- (void)finalize {
- [[NSDistributedNotificationCenter defaultCenter] removeObserver:self];
- [super finalize];
-}
-#endif // GTM_GOOGLE_SEARCH_SUPPORTS_DISTRIBUTED_NOTIFICATIONS
-
-- (void)dealloc {
-#if GTM_GOOGLE_SEARCH_SUPPORTS_DISTRIBUTED_NOTIFICATIONS
- [[NSDistributedNotificationCenter defaultCenter] removeObserver:self];
-#endif // GTM_GOOGLE_SEARCH_SUPPORTS_DISTRIBUTED_NOTIFICATIONS
- [allAppsCachedDomain_ release];
- [allAppsCachedLanguage_ release];
- [curAppCachedDomain_ release];
- [curAppCachedLanguage_ release];
- [globalSearchArguments_ release];
- [super dealloc];
-}
-
-- (void)preferredDomain:(NSString **)domain
- language:(NSString**)language
- areCurrentAppOnly:(BOOL*)currentAppOnly {
- BOOL localCurrentAppOnly = YES;
- NSString *localDomain = curAppCachedDomain_;
- NSString *localLanguage = curAppCachedLanguage_;
-
- // if either one wasn't there, drop both, and use any app if we can
- if (!localDomain || !localLanguage) {
- localCurrentAppOnly = NO;
- localDomain = allAppsCachedDomain_;
- localLanguage = allAppsCachedLanguage_;
-
- // if we didn't get anything from the prefs, go with the defaults
- if (!localDomain || !localLanguage) {
- // if either one wasn't there, drop both, and use defaults
- [self defaultDomain:&localDomain language:&localLanguage];
- }
- }
- if (!localDomain || !localLanguage) {
- _GTMDevLog(@"GTMGoogleSearch: Failed to get the preferred domain/language "
- @"from prefs or defaults");
- }
- if (language) {
- *language = [[localLanguage retain] autorelease];
- }
- if (domain) {
- *domain = [[localDomain retain] autorelease];
- }
- if (currentAppOnly) {
- *currentAppOnly = localCurrentAppOnly;
- }
-}
-
-- (void)updatePreferredDomain:(NSString*)domain
- language:(NSString*)language
- currentApplicationOnly:(BOOL)currentAppOnly {
- // valid inputs?
- if (!domain || ![domain length] || !language) {
- return;
- }
-
- if (currentAppOnly) {
- // if they are the same, don't do anything
- if ((domain == nil && curAppCachedDomain_ == nil &&
- language == nil && curAppCachedLanguage_ == nil) ||
- ([domain isEqualToString:curAppCachedDomain_] &&
- [language isEqualToString:curAppCachedLanguage_])) {
- return;
- }
-
- // save them out
- CFPreferencesSetValue(kPreferredDomainPrefKey,
- (CFStringRef)domain,
- kCFPreferencesCurrentApplication,
- kCFPreferencesCurrentUser,
- kCFPreferencesAnyHost);
- CFPreferencesSetValue(kPreferredLanguagePrefKey,
- (CFStringRef)language,
- kCFPreferencesCurrentApplication,
- kCFPreferencesCurrentUser,
- kCFPreferencesAnyHost);
- CFPreferencesSynchronize(kCFPreferencesCurrentApplication,
- kCFPreferencesCurrentUser,
- kCFPreferencesAnyHost);
- // update our locals
- [curAppCachedDomain_ release];
- [curAppCachedLanguage_ release];
- curAppCachedDomain_ = [domain copy];
- curAppCachedLanguage_ = [language copy];
- } else {
- // Set the "any application" values
- [self updateAllAppsDomain:domain language:language];
-
- // Clear the current application values (if there were any)
- [self clearPreferredDomainAndLanguageForCurrentApplication];
- }
-}
-
-- (void)clearPreferredDomainAndLanguageForCurrentApplication {
- // flush what's in the file
- CFPreferencesSetValue(kPreferredDomainPrefKey,
- NULL,
- kCFPreferencesCurrentApplication,
- kCFPreferencesCurrentUser,
- kCFPreferencesAnyHost);
- CFPreferencesSetValue(kPreferredLanguagePrefKey,
- NULL,
- kCFPreferencesCurrentApplication,
- kCFPreferencesCurrentUser,
- kCFPreferencesAnyHost);
- CFPreferencesSynchronize(kCFPreferencesCurrentApplication,
- kCFPreferencesCurrentUser,
- kCFPreferencesAnyHost);
- // clear our locals
- [curAppCachedDomain_ release];
- [curAppCachedLanguage_ release];
- curAppCachedDomain_ = nil;
- curAppCachedLanguage_ = nil;
-}
-
-- (void)clearPreferredDomainAndLanguageForAllApps {
- // nil/nil to clear things out, this will also update our cached values.
- [self updateAllAppsDomain:nil language:nil];
-}
-
-- (NSDictionary *)globalSearchArguments {
- return globalSearchArguments_;
-}
-
-- (void)setGlobalSearchArguments:(NSDictionary *)args {
- [globalSearchArguments_ autorelease];
- globalSearchArguments_ = [args copy];
-}
-
-- (NSString*)searchURLFor:(NSString*)queryText
- ofType:(NSString*)type
- arguments:(NSDictionary *)localArgs {
- if (!type) {
- return nil;
- }
-
- NSString *language;
- NSString *domain;
- [self preferredDomain:&domain
- language:&language
- areCurrentAppOnly:NULL];
-
- NSMutableDictionary *args
- = [NSMutableDictionary dictionaryWithObjectsAndKeys:
- @"UTF-8", @"ie",
- @"UTF-8", @"oe",
- language, @"hl",
- nil];
- if (queryText) {
- [args setObject:queryText forKey:@"q"];
- }
-
- NSDictionary *globalSearchArgs = [self globalSearchArguments];
- if (globalSearchArgs) {
- [args addEntriesFromDictionary:globalSearchArgs];
- }
- if (localArgs) {
- [args addEntriesFromDictionary:localArgs];
- }
-
- NSMutableArray *clientArgs = [NSMutableArray array];
- NSString *key;
- NSNull *nsNull = [NSNull null];
- GTM_FOREACH_KEY(key, args) {
- NSString *object = [args objectForKey:key];
- if (![object isEqual:nsNull]) {
-#if DEBUG
- // In debug we check key and object for things that should be escaped.
- // Note that percent is not in there because escaped strings will have
- // percents in them
- NSCharacterSet *cs = [NSCharacterSet characterSetWithCharactersInString:
- @"!*'();:@&=+$,/?#[] "];
- NSRange range = [key rangeOfCharacterFromSet:cs];
- if (range.location != NSNotFound) {
- _GTMDevLog(@"Unescaped string %@ in argument pair {%@, %@} in -[%@ %@]",
- key, key, object, [self class], NSStringFromSelector(_cmd));
- }
- range = [object rangeOfCharacterFromSet:cs];
- if (range.location != NSNotFound) {
- _GTMDevLog(@"Unescaped string %@ in argument pair {%@,%@ } in -[%@ %@]",
- object, key, object, [self class],
- NSStringFromSelector(_cmd));
- }
-#endif // DEBUG
- NSString *arg = [NSString stringWithFormat:@"%@=%@", key, object];
- [clientArgs addObject:arg];
- }
- }
- NSString *clientArg = [clientArgs componentsJoinedByString:@"&"];
- NSString *url = [NSString stringWithFormat:SEARCH_URL_TEMPLATE,
- domain, type, clientArg];
- return url;
-}
-
-- (BOOL)performQuery:(NSString*)queryText
- ofType:(NSString *)type
- arguments:(NSDictionary *)localArgs {
- BOOL success = NO;
- NSString *urlString = [self searchURLFor:queryText
- ofType:type
- arguments:localArgs];
- if (urlString) {
- NSURL *url = [NSURL URLWithString:urlString];
- if (url) {
-#if GTM_IPHONE_SDK
- success = [[UIApplication sharedApplication] openURL:url];
-#else // GTM_IPHONE_SDK
- success = [[NSWorkspace sharedWorkspace] openURL:url];
-#endif // GTM_IPHONE_SDK
- }
- }
- return success;
-}
-
-@end
-
-
-@implementation GTMGoogleSearch (PrivateMethods)
-
-- (void)defaultDomain:(NSString**)preferredDomain
- language:(NSString**)preferredLanguage {
- // must have both
- if (!preferredDomain || !preferredLanguage) {
- return;
- }
-
- // make sure they are clear to start
- *preferredDomain = nil;
- *preferredLanguage = nil;
-
- // loop over their language list trying to find something we have in
- // out default table.
-
- NSUserDefaults* defs = [NSUserDefaults standardUserDefaults];
- NSArray* languages = [defs objectForKey:@"AppleLanguages"];
- // the current locale is only based on what languages the running apps is
- // localized to, so we stick that at the end in case we weren't able to
- // find anything else as a match, we'll match that.
- languages =
- [languages arrayByAddingObject:[[NSLocale currentLocale] localeIdentifier]];
-
- NSEnumerator *enumerator = [languages objectEnumerator];
- NSString *localeIdentifier;
- while ((localeIdentifier = [enumerator nextObject])) {
- NSDictionary *localeParts
- = [NSLocale componentsFromLocaleIdentifier:localeIdentifier];
- NSString *localeLanguage = [localeParts objectForKey:NSLocaleLanguageCode];
- // we don't use NSLocaleScriptCode for now
- NSString *localeCountry = [localeParts objectForKey:NSLocaleCountryCode];
-
- LanguageDefaultInfo *scan = kLanguageListDefaultMappingTable;
- LanguageDefaultInfo *end = (scan + (sizeof(kLanguageListDefaultMappingTable)
- / sizeof(LanguageDefaultInfo)));
- // find a match
- // check language, and if country is not nil, check that
- for ( ; scan < end ; ++scan) {
- if ([localeLanguage isEqualToString:scan->language] &&
- (!(scan->country) || [localeCountry isEqualToString:scan->country])) {
- *preferredDomain = scan->defaultDomain;
- *preferredLanguage = localeLanguage;
- return; // out of here
- }
- }
- }
-
- *preferredDomain = kDefaultDomain;
- *preferredLanguage = kDefaultLanguage;
-}
-
-// -reloadAllAppCachedValues:
-//
-- (void)reloadAllAppCachedValues:(NSNotification*)notification {
- // drop the old...
- [allAppsCachedDomain_ release];
- [allAppsCachedLanguage_ release];
- allAppsCachedDomain_ = nil;
- allAppsCachedLanguage_ = nil;
-
- // load the new
- CFPreferencesSynchronize(kAllAppsBuildIdentifier,
- kCFPreferencesCurrentUser,
- kCFPreferencesAnyHost);
- CFStringRef domain = CFPreferencesCopyValue(kPreferredDomainPrefKey,
- kAllAppsBuildIdentifier,
- kCFPreferencesCurrentUser,
- kCFPreferencesAnyHost);
- CFStringRef lang = CFPreferencesCopyValue(kPreferredLanguagePrefKey,
- kAllAppsBuildIdentifier,
- kCFPreferencesCurrentUser,
- kCFPreferencesAnyHost);
-
- // make sure we got values for both and domain is not empty
- if (domain && CFStringGetLength(domain) == 0) {
- CFRelease(domain);
- domain = nil;
- if (lang) {
- CFRelease(lang);
- lang = nil;
- }
- }
-
- allAppsCachedDomain_ = (NSString *)domain;
- allAppsCachedLanguage_ = (NSString *)lang;
-}
-
-// -updateAllAppsDomain:language:
-//
-- (void)updateAllAppsDomain:(NSString*)domain language:(NSString*)language {
- // domain and language can be nil to clear the values
-
- // if they are the same, don't do anything
- if ((domain == nil && allAppsCachedDomain_ == nil &&
- language == nil && allAppsCachedLanguage_ == nil) ||
- ([domain isEqualToString:allAppsCachedDomain_] &&
- [language isEqualToString:allAppsCachedLanguage_])) {
- return;
- }
-
- // write it to the file
- CFPreferencesSetValue(kPreferredDomainPrefKey,
- (CFStringRef)domain,
- kAllAppsBuildIdentifier,
- kCFPreferencesCurrentUser,
- kCFPreferencesAnyHost);
- CFPreferencesSetValue(kPreferredLanguagePrefKey,
- (CFStringRef)language,
- kAllAppsBuildIdentifier,
- kCFPreferencesCurrentUser,
- kCFPreferencesAnyHost);
- CFPreferencesSynchronize(kAllAppsBuildIdentifier,
- kCFPreferencesCurrentUser,
- kCFPreferencesAnyHost);
-
- // update our values
- [allAppsCachedDomain_ release];
- [allAppsCachedLanguage_ release];
- allAppsCachedDomain_ = [domain copy];
- allAppsCachedLanguage_ = [language copy];
-
-#if GTM_GOOGLE_SEARCH_SUPPORTS_DISTRIBUTED_NOTIFICATIONS
- // NOTE: we'll go ahead and reload when this comes back to ourselves since
- // there is a race here if two folks wrote at about the same time.
- NSDistributedNotificationCenter *distCenter =
- [NSDistributedNotificationCenter defaultCenter];
- [distCenter postNotificationName:kNotificationName
- object:nil
- userInfo:nil];
-#endif // GTM_GOOGLE_SEARCH_SUPPORTS_DISTRIBUTED_NOTIFICATIONS
-}
-
-@end
diff --git a/AppKit/GTMGoogleSearchTest.m b/AppKit/GTMGoogleSearchTest.m
deleted file mode 100644
index 45f7e66..0000000
--- a/AppKit/GTMGoogleSearchTest.m
+++ /dev/null
@@ -1,208 +0,0 @@
-//
-// GTMGoogleSearchTest.m
-//
-// Copyright 2006-2009 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMGoogleSearch.h"
-#import "GTMSenTestCase.h"
-#import "GTMUnitTestDevLog.h"
-#import <unistd.h>
-
-@interface GTMGoogleSearchTest : GTMTestCase
-@end
-
-@implementation GTMGoogleSearchTest
-
-- (void)testSearches {
- typedef struct {
- NSString *type;
- NSString *expectedPrefix;
- } TestSearchDesc;
- static TestSearchDesc testSearches[] = {
- { GTMGoogleSearchFroogle, @"http://www.google.xxx/products?" },
- { GTMGoogleSearchGroups, @"http://www.google.xxx/groups?" },
- { GTMGoogleSearchImages, @"http://www.google.xxx/images?"},
- { GTMGoogleSearchLocal, @"http://www.google.xxx/local?"},
- { GTMGoogleSearchNews, @"http://www.google.xxx/news?"},
- { GTMGoogleSearchFinance, @"http://www.google.xxx/finance?"},
- { GTMGoogleSearchBooks, @"http://www.google.xxx/books?"},
- { GTMGoogleSearchWeb, @"http://www.google.xxx/search?"},
- };
-
- GTMGoogleSearch *googleSearch = [GTMGoogleSearch sharedInstance];
- STAssertNotNil(googleSearch, nil);
-
- // force the current app values so we aren't at the mercy of the
- // global setting the users locale.
- [googleSearch updatePreferredDomain:@"xxx"
- language:@"yyy"
- currentApplicationOnly:TRUE];
-
- size_t count = sizeof(testSearches) / sizeof(testSearches[0]);
- NSDictionary *globalArgs
- = [NSDictionary dictionaryWithObject:@"f" forKey:@"foo"];
- [googleSearch setGlobalSearchArguments:globalArgs];
- NSDictionary *args = [NSDictionary dictionaryWithObject:@"Baba"
- forKey:@"BaR"];
- NSString *expectedStrings[] = {
- @"oe=UTF-8", @"hl=yyy", @"q=Foobar",
- @"foo=f", @"ie=UTF-8", @"BaR=Baba"
- };
- for (size_t i = 0; i < count; i++) {
- // test building the url
- NSString *urlString = [googleSearch searchURLFor:@"Foobar"
- ofType:testSearches[i].type
- arguments:args];
- STAssertTrue([urlString hasPrefix:testSearches[i].expectedPrefix],
- @"Bad URL? URL:%@ Expected Prefix:%@",
- urlString, testSearches[i].expectedPrefix);
- for (size_t j = 0;
- j < sizeof(expectedStrings) / sizeof(expectedStrings[0]);
- ++j) {
- STAssertGreaterThan([urlString rangeOfString:expectedStrings[j]].length,
- (NSUInteger)0, @"URL: %@ expectedString: %@",
- urlString, expectedStrings[j]);
- }
- }
-
- // clear what we just set for this test
- [googleSearch setGlobalSearchArguments:nil];
- [googleSearch clearPreferredDomainAndLanguageForCurrentApplication];
-}
-
-- (void)testBadInputs {
- GTMGoogleSearch *googleSearch = [GTMGoogleSearch sharedInstance];
- STAssertNotNil(googleSearch, nil);
- NSDictionary *args = [NSDictionary dictionaryWithObject:@"Ba!ba"
- forKey:@"Ba=R"];
- [GTMUnitTestDevLogDebug expectString:
- @"Unescaped string Foo bar in argument pair {q,Foo bar } "
- @"in -[GTMGoogleSearch searchURLFor:ofType:arguments:]"];
- [GTMUnitTestDevLogDebug expectString:
- @"Unescaped string Ba=R in argument pair {Ba=R, Ba!ba} "
- @"in -[GTMGoogleSearch searchURLFor:ofType:arguments:]"];
- [GTMUnitTestDevLogDebug expectString:
- @"Unescaped string Ba!ba in argument pair {Ba=R,Ba!ba } "
- @"in -[GTMGoogleSearch searchURLFor:ofType:arguments:]"];
- NSString *urlString = [googleSearch searchURLFor:@"Foo bar"
- ofType:GTMGoogleSearchFroogle
- arguments:args];
- STAssertNotNil(urlString, nil);
-}
-
-- (void)testPreferredDefaults {
- GTMGoogleSearch *googleSearch = [GTMGoogleSearch sharedInstance];
- STAssertNotNil(googleSearch, nil);
-
- // hey, we're a unit test, so start by blowing away what we have at the
- // app level.
- [googleSearch clearPreferredDomainAndLanguageForCurrentApplication];
-
- // in theory, we could fetch now and save off what we get to reset at the
- // end of this, but we can't tell if that was an "all apps" setting, or if
- // it was the default, so...hey, we're a unit test, we'll just stomp what's
- // there and clear it out when done...
- [googleSearch clearPreferredDomainAndLanguageForAllApps];
-
- // make sure the individual accessors work...
-
- // since they system level default can be set by any app, we just have to
- // check for non nil here (also the users locale could control what
- // we get if nothing is set).
- NSString *domain;
- NSString *lang;
- // now do a detailed check...
- BOOL areCurrentAppOnly = YES;
- [googleSearch preferredDomain:&domain
- language:&lang
- areCurrentAppOnly:&areCurrentAppOnly];
- // should get something for defaults...
- STAssertNotNil(domain, nil);
- STAssertNotNil(lang, nil);
- STAssertFalse(areCurrentAppOnly, nil);
-
- // test it for "all apps"...
- [googleSearch updatePreferredDomain:@"domain"
- language:@"lang"
- currentApplicationOnly:NO];
- [googleSearch preferredDomain:&domain
- language:&lang
- areCurrentAppOnly:&areCurrentAppOnly];
- STAssertEqualObjects(domain, @"domain", nil);
- STAssertEqualObjects(lang, @"lang", nil);
- STAssertFalse(areCurrentAppOnly, nil);
-
- // test it for this app...
- [googleSearch updatePreferredDomain:@"domainThisApp"
- language:@"langThisApp"
- currentApplicationOnly:YES];
- [googleSearch preferredDomain:&domain
- language:&lang
- areCurrentAppOnly:&areCurrentAppOnly];
- STAssertEqualObjects(domain, @"domainThisApp", nil);
- STAssertEqualObjects(lang, @"langThisApp", nil);
- STAssertTrue(areCurrentAppOnly, nil);
-
- // clear what we just set for this app
- [googleSearch clearPreferredDomainAndLanguageForCurrentApplication];
-
- // should get back what we set for all apps
- [googleSearch preferredDomain:&domain
- language:&lang
- areCurrentAppOnly:&areCurrentAppOnly];
- STAssertEqualObjects(domain, @"domain", nil);
- STAssertEqualObjects(lang, @"lang", nil);
- STAssertFalse(areCurrentAppOnly, nil);
-#if GTM_GOOGLE_SEARCH_SUPPORTS_DISTRIBUTED_NOTIFICATIONS
- // We don't test launching other tasks on the phone since this isn't a valid
- // case until we can support real multiple tasks on the phone.
-
- // try changing the value directly in the plist file (as if another app had
- // done it) and sending our notification.
- [[NSTask launchedTaskWithLaunchPath:@"/usr/bin/defaults"
- arguments:[NSArray arrayWithObjects:@"write",
- @"com.google.GoogleSearchAllApps",
- @"{ \"com.google.PreferredDomain\" = xxx;"
- @"\"com.google.PreferredLanguage\" = yyy; }",
- nil]] waitUntilExit];
- // Sleep for a moment to let things flush
- // (seen rarely as a problem on aharper's machine).
- sleep(1);
- NSDistributedNotificationCenter *distCenter =
- [NSDistributedNotificationCenter defaultCenter];
- [distCenter postNotificationName:@"com.google.GoogleSearchAllApps.prefsWritten"
- object:nil
- userInfo:nil
- options:NSNotificationDeliverImmediately];
-
- // Spin the runloop so the notifications fire.
- NSRunLoop *currentLoop = [NSRunLoop currentRunLoop];
- [currentLoop runUntilDate:[NSDate dateWithTimeIntervalSinceNow:1.0]];
- // did we get what we expected?
- [googleSearch preferredDomain:&domain
- language:&lang
- areCurrentAppOnly:&areCurrentAppOnly];
- STAssertEqualObjects(domain, @"xxx", nil);
- STAssertEqualObjects(lang, @"yyy", nil);
- STAssertFalse(areCurrentAppOnly, nil);
-#endif // GTM_GOOGLE_SEARCH_SUPPORTS_DISTRIBUTED_NOTIFICATIONS
-
- // lastly, clean up what we set for all apps to leave the system at the
- // default.
- [googleSearch clearPreferredDomainAndLanguageForAllApps];
-}
-
-@end
diff --git a/AppKit/GTMHotKeyTextField.h b/AppKit/GTMHotKeyTextField.h
deleted file mode 100644
index cdd7830..0000000
--- a/AppKit/GTMHotKeyTextField.h
+++ /dev/null
@@ -1,116 +0,0 @@
-//
-// GTMHotKeyTextField.h
-//
-// Copyright 2006-2010 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-// Text field for capturing hot key entry. This is intended to be similar to the
-// Apple key editor in their Keyboard pref pane.
-
-// NOTE: There are strings that need to be localized to use this field. See the
-// code in stringForKeycode the the keys. The keys are all the English versions
-// so you'll get reasonable things if you don't have a strings file.
-
-#import <Cocoa/Cocoa.h>
-#import "GTMDefines.h"
-
-@interface GTMHotKey : NSObject <NSCopying> {
- @private
- NSUInteger modifiers_;
- NSUInteger keyCode_;
- BOOL doubledModifier_;
-}
-
-+ (id)hotKeyWithKeyCode:(NSUInteger)keyCode
- modifiers:(NSUInteger)modifiers
- useDoubledModifier:(BOOL)doubledModifier;
-
-- (id)initWithKeyCode:(NSUInteger)keyCode
- modifiers:(NSUInteger)modifiers
- useDoubledModifier:(BOOL)doubledModifier;
-
-// Custom accessors (readonly, nonatomic)
-- (NSUInteger)modifiers;
-- (NSUInteger)keyCode;
-- (BOOL)doubledModifier;
-
-@end
-
-// Notes:
-// - Though you are free to implement control:textShouldEndEditing: in your
-// delegate its return is always ignored. The field always accepts only
-// one hotkey keystroke before editing ends.
-// - The "value" binding of this control is to the dictionary describing the
-// hotkey.
-// - The field does not attempt to consume all hotkeys. Hotkeys which are
-// already bound in Apple prefs or other applications will have their
-// normal effect.
-//
-
-@interface GTMHotKeyTextField : NSTextField
-@end
-
-@interface GTMHotKeyTextFieldCell : NSTextFieldCell {
- @private
- GTMHotKey *hotKey_;
-}
-
-// Convert Cocoa modifier flags (-[NSEvent modifierFlags]) into a string for
-// display. Modifiers are represented in the string in the same order they would
-// appear in the Menu Manager.
-//
-// Args:
-// flags: -[NSEvent modifierFlags]
-//
-// Returns:
-// Autoreleased NSString
-//
-+ (NSString *)stringForModifierFlags:(NSUInteger)flags;
-
-// Convert a keycode into a string that would result from typing the keycode in
-// the current keyboard layout. This may be one or more characters.
-//
-// Args:
-// keycode: Virtual keycode such as one obtained from NSEvent
-// useGlyph: In many cases the glyphs are confusing, and a string is clearer.
-// However, if you want to display in a menu item, use must
-// have a glyph. Set useGlyph to FALSE to get localized strings
-// which are better for UI display in places other than menus.
-// bundle: Localization bundle to use for localizable key names
-//
-// Returns:
-// Autoreleased NSString
-//
-+ (NSString *)stringForKeycode:(UInt16)keycode
- useGlyph:(BOOL)useGlyph
- resourceBundle:(NSBundle *)bundle;
-
-@end
-
-// Custom field editor for use with hotkey entry fields (GTMHotKeyTextField).
-// See the GTMHotKeyTextField for instructions on using from the window
-// delegate.
-@interface GTMHotKeyFieldEditor : NSTextView {
- @private
- GTMHotKeyTextFieldCell *cell_;
-}
-
-// Get the shared field editor for all hot key fields
-+ (GTMHotKeyFieldEditor *)sharedHotKeyFieldEditor;
-
-// Custom accessors (retain, nonatomic)
-- (GTMHotKeyTextFieldCell *)cell;
-
-@end
diff --git a/AppKit/GTMHotKeyTextField.m b/AppKit/GTMHotKeyTextField.m
deleted file mode 100644
index a33277a..0000000
--- a/AppKit/GTMHotKeyTextField.m
+++ /dev/null
@@ -1,781 +0,0 @@
-// GTMHotKeyTextField.m
-//
-// Copyright 2006-2010 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMHotKeyTextField.h"
-
-#import <Carbon/Carbon.h>
-
-#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4
-#import "GTMSystemVersion.h"
-typedef struct __TISInputSource* TISInputSourceRef;
-
-static TISInputSourceRef(*GTM_TISCopyCurrentKeyboardLayoutInputSource)(void) = NULL;
-static void * (*GTM_TISGetInputSourceProperty)(TISInputSourceRef inputSource,
- CFStringRef propertyKey) = NULL;
-static CFStringRef kGTM_TISPropertyUnicodeKeyLayoutData = NULL;
-#endif // MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4
-
-@interface GTMHotKeyTextFieldCell (PrivateMethods)
-- (void)setupBinding:(id)bound withPath:(NSString *)path;
-- (void)updateDisplayedPrettyString;
-+ (NSString *)displayStringForHotKey:(GTMHotKey *)hotKey;
-+ (BOOL)doesKeyCodeRequireModifier:(UInt16)keycode;
-@end
-
-@interface GTMHotKeyFieldEditor (PrivateMethods)
-- (GTMHotKeyTextFieldCell *)cell;
-- (void)setCell:(GTMHotKeyTextFieldCell *)cell;
-- (BOOL)shouldBypassEvent:(NSEvent *)theEvent;
-- (void)processEventToHotKeyAndString:(NSEvent *)theEvent;
-- (void)windowResigned:(NSNotification *)notification;
-- (GTMHotKey *)hotKeyForEvent:(NSEvent *)event;
-@end
-
-@implementation GTMHotKey
-
-+ (id)hotKeyWithKeyCode:(NSUInteger)keyCode
- modifiers:(NSUInteger)modifiers
- useDoubledModifier:(BOOL)doubledModifier {
- return [[[self alloc] initWithKeyCode:keyCode
- modifiers:modifiers
- useDoubledModifier:doubledModifier] autorelease];
-}
-
-- (id)initWithKeyCode:(NSUInteger)keyCode
- modifiers:(NSUInteger)modifiers
- useDoubledModifier:(BOOL)doubledModifier {
- if ((self = [super init])) {
- modifiers_ = modifiers;
- keyCode_ = keyCode;
- doubledModifier_ = doubledModifier;
- }
- return self;
-}
-
-- (NSUInteger)modifiers {
- return modifiers_;
-}
-
-- (NSUInteger)keyCode {
- return keyCode_;
-}
-
-- (BOOL)doubledModifier {
- return doubledModifier_;
-}
-
-- (BOOL)isEqual:(id)object {
- return [object isKindOfClass:[GTMHotKey class]]
- && [object modifiers] == [self modifiers]
- && [(GTMHotKey *)object keyCode] == [self keyCode]
- && [object doubledModifier] == [self doubledModifier];
-}
-
-- (NSUInteger)hash {
- return [self modifiers] + [self keyCode] + [self doubledModifier];
-}
-
-- (id)copyWithZone:(NSZone *)zone {
- return NSCopyObject(self, 0, zone);
-}
-
-- (NSString *)description {
- return [NSString stringWithFormat:@"<%@ %p> - %@",
- [self class], self,
- [GTMHotKeyTextFieldCell displayStringForHotKey:self]];
-}
-
-@end
-
-@implementation GTMHotKeyTextField
-
-+ (Class)cellClass {
- return [GTMHotKeyTextFieldCell class];
-}
-
-@end
-
-@implementation GTMHotKeyTextFieldCell
-- (void)dealloc {
- [hotKey_ release];
- [super dealloc];
-}
-
-- (id)copyWithZone:(NSZone *)zone {
- GTMHotKeyTextFieldCell *copy = [super copyWithZone:zone];
- copy->hotKey_ = nil;
- [copy setObjectValue:[self objectValue]];
- return copy;
-}
-
-#pragma mark Defeating NSCell
-
-- (void)logBadValueAccess {
- _GTMDevLog(@"Hot key fields want hot key dictionaries as object values.");
-}
-
-- (id)objectValue {
- return hotKey_;
-}
-
-- (void)setObjectValue:(id)object {
- // Sanity only if set, nil is OK
- if (object && ![object isKindOfClass:[GTMHotKey class]]) {
- [self logBadValueAccess];
- return;
- }
- if (![hotKey_ isEqual:object]) {
- // Otherwise we directly update ourself
- [hotKey_ autorelease];
- hotKey_ = [object copy];
- [self updateDisplayedPrettyString];
- }
-}
-
-- (NSString *)stringValue {
- NSString *value = [[self class] displayStringForHotKey:hotKey_];
- if (!value) {
- value = @"";
- }
- return value;
-}
-
-- (void)setStringValue:(NSString *)string {
- // Since we are a text cell, lots of AppKit objects will attempt to
- // set out string value. Our Field editor should already have done
- // that for us, so check to make sure what AppKit is setting us to is
- // what we expect.
- if (![string isEqual:[self stringValue]]) {
- [self logBadValueAccess];
- }
-}
-
-- (NSAttributedString *)attributedStringValue {
- NSAttributedString *attrString = nil;
- NSString *prettyString = [self stringValue];
- if (prettyString) {
- attrString = [[[NSAttributedString alloc]
- initWithString:prettyString] autorelease];
- }
- return attrString;
-}
-
-- (void)setAttributedStringValue:(NSAttributedString *)string {
- [self logBadValueAccess];
-}
-
-- (id)formatter {
- return nil;
-}
-
-- (void)setFormatter:(NSFormatter *)newFormatter {
- if (newFormatter) {
- // Defeating NSCell
- _GTMDevLog(@"Hot key fields don't accept formatters.");
- }
-}
-
-- (id)_fieldEditor {
- GTMHotKeyFieldEditor *editor = [GTMHotKeyFieldEditor sharedHotKeyFieldEditor];
- [editor setCell:self];
- return editor;
-}
-
-#pragma mark Hot Key Support
-
-// Private method to update the displayed text of the field with the
-// user-readable representation.
-- (void)updateDisplayedPrettyString {
- // Pretty string
- NSString *prettyString = [[self class] displayStringForHotKey:hotKey_];
- if (!prettyString) {
- prettyString = @"";
- }
- [super setObjectValue:prettyString];
-
-}
-
-+ (NSString *)displayStringForHotKey:(GTMHotKey *)hotKey {
- if (!hotKey) return nil;
-
- NSBundle *bundle = [NSBundle bundleForClass:[self class]];
-
- // Modifiers
- NSUInteger modifiers = [hotKey modifiers];
- NSString *mods = [[self class] stringForModifierFlags:modifiers];
- if (modifiers && ![mods length]) return nil;
- // Handle double modifier case
- if ([hotKey doubledModifier]) {
- return [NSString stringWithFormat:@"%@ + %@", mods, mods];
- }
- // Keycode
- NSUInteger keycode = [hotKey keyCode];
- NSString *keystroke = [[self class] stringForKeycode:keycode
- useGlyph:NO
- resourceBundle:bundle];
- if (!keystroke || ![keystroke length]) return nil;
- if ([[self class] doesKeyCodeRequireModifier:keycode]
- && ![mods length]) {
- return nil;
- }
-
- return [NSString stringWithFormat:@"%@%@", mods, keystroke];
-}
-
-#pragma mark Class methods building strings for use w/in the UI.
-
-#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4
-+ (void)initialize {
- if (!GTM_TISCopyCurrentKeyboardLayoutInputSource
- && [GTMSystemVersion isLeopardOrGreater]) {
- CFBundleRef hiToolbox
- = CFBundleGetBundleWithIdentifier(CFSTR("com.apple.HIToolbox"));
- if (hiToolbox) {
- kGTM_TISPropertyUnicodeKeyLayoutData
- = *(CFStringRef*)CFBundleGetDataPointerForName(hiToolbox,
- CFSTR("kTISPropertyUnicodeKeyLayoutData"));
- GTM_TISCopyCurrentKeyboardLayoutInputSource
- = CFBundleGetFunctionPointerForName(hiToolbox,
- CFSTR("TISCopyCurrentKeyboardLayoutInputSource"));
- GTM_TISGetInputSourceProperty
- = CFBundleGetFunctionPointerForName(hiToolbox,
- CFSTR("TISGetInputSourceProperty"));
- }
- }
-}
-#endif // MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4
-
-#pragma mark Useful String Class Methods
-
-+ (BOOL)doesKeyCodeRequireModifier:(UInt16)keycode {
- BOOL doesRequire = YES;
- switch(keycode) {
- // These are the keycodes that map to the
- //unichars in the associated comment.
- case 122: // NSF1FunctionKey
- case 120: // NSF2FunctionKey
- case 99: // NSF3FunctionKey
- case 118: // NSF4FunctionKey
- case 96: // NSF5FunctionKey
- case 97: // NSF6FunctionKey
- case 98: // NSF7FunctionKey
- case 100: // NSF8FunctionKey
- case 101: // NSF9FunctionKey
- case 109: // NSF10FunctionKey
- case 103: // NSF11FunctionKey
- case 111: // NSF12FunctionKey
- case 105: // NSF13FunctionKey
- case 107: // NSF14FunctionKey
- case 113: // NSF15FunctionKey
- case 106: // NSF16FunctionKey
- doesRequire = NO;
- break;
- default:
- doesRequire = YES;
- break;
- }
- return doesRequire;
-}
-
-// These are not in a category on NSString because this class could be used
-// within multiple preference panes at the same time. If we put it in a category
-// it would require setting up some magic so that the categories didn't conflict
-// between the multiple pref panes. By putting it in the class, you can just
-// #define the class name to something else, and then you won't have any
-// conflicts.
-
-+ (NSString *)stringForModifierFlags:(NSUInteger)flags {
- UniChar modChars[4]; // We only look for 4 flags
- unsigned int charCount = 0;
- // These are in the same order as the menu manager shows them
- if (flags & NSControlKeyMask) modChars[charCount++] = kControlUnicode;
- if (flags & NSAlternateKeyMask) modChars[charCount++] = kOptionUnicode;
- if (flags & NSShiftKeyMask) modChars[charCount++] = kShiftUnicode;
- if (flags & NSCommandKeyMask) modChars[charCount++] = kCommandUnicode;
- if (charCount == 0) return @"";
- return [NSString stringWithCharacters:modChars length:charCount];
-}
-
-+ (NSString *)stringForKeycode:(UInt16)keycode
- useGlyph:(BOOL)useGlyph
- resourceBundle:(NSBundle *)bundle {
- // Some keys never move in any layout (to the best of our knowledge at least)
- // so we can hard map them.
- UniChar key = 0;
- NSString *localizedKey = nil;
-
- switch (keycode) {
-
- // Of the hard mapped keys some can be represented with pretty and obvioous
- // Unicode or simple strings without localization.
-
- // Arrow keys
- case 123: key = NSLeftArrowFunctionKey; break;
- case 124: key = NSRightArrowFunctionKey; break;
- case 125: key = NSDownArrowFunctionKey; break;
- case 126: key = NSUpArrowFunctionKey; break;
- case 122: key = NSF1FunctionKey; localizedKey = @"F1"; break;
- case 120: key = NSF2FunctionKey; localizedKey = @"F2"; break;
- case 99: key = NSF3FunctionKey; localizedKey = @"F3"; break;
- case 118: key = NSF4FunctionKey; localizedKey = @"F4"; break;
- case 96: key = NSF5FunctionKey; localizedKey = @"F5"; break;
- case 97: key = NSF6FunctionKey; localizedKey = @"F6"; break;
- case 98: key = NSF7FunctionKey; localizedKey = @"F7"; break;
- case 100: key = NSF8FunctionKey; localizedKey = @"F8"; break;
- case 101: key = NSF9FunctionKey; localizedKey = @"F9"; break;
- case 109: key = NSF10FunctionKey; localizedKey = @"F10"; break;
- case 103: key = NSF11FunctionKey; localizedKey = @"F11"; break;
- case 111: key = NSF12FunctionKey; localizedKey = @"F12"; break;
- case 105: key = NSF13FunctionKey; localizedKey = @"F13"; break;
- case 107: key = NSF14FunctionKey; localizedKey = @"F14"; break;
- case 113: key = NSF15FunctionKey; localizedKey = @"F15"; break;
- case 106: key = NSF16FunctionKey; localizedKey = @"F16"; break;
- // Forward delete is a terrible name so we'll use the glyph Apple puts on
- // their current keyboards
- case 117: key = 0x2326; break;
-
- // Now we have keys that can be hard coded but don't have good glyph
- // representations. Sure, the Apple menu manager has glyphs for them, but
- // an informal poll of Google developers shows no one really knows what
- // they mean, so its probably a good idea to use strings. Unfortunately
- // this also means localization (*sigh*). We'll use the real English
- // strings here as keys so that even if localization is missed we'll do OK
- // in output.
-
- // Whitespace
- case 36: key = '\r'; localizedKey = @"Return"; break;
- case 76: key = 0x3; localizedKey = @"Enter"; break;
- case 48: key = 0x9; localizedKey = @"Tab"; break;
- // 0x2423 is the Open Box
- case 49: key = 0x2423; localizedKey = @"Space"; break;
- // Control keys
- case 51: key = 0x8; localizedKey = @"Delete"; break;
- case 71: key = NSClearDisplayFunctionKey; localizedKey = @"Clear"; break;
- case 53: key = 0x1B; localizedKey = @"Esc"; break;
- case 115: key = NSHomeFunctionKey; localizedKey = @"Home"; break;
- case 116: key = NSPageUpFunctionKey; localizedKey = @"Page Up"; break;
- case 119: key = NSEndFunctionKey; localizedKey = @"End"; break;
- case 121: key = NSPageDownFunctionKey; localizedKey = @"Page Down"; break;
- case 114: key = NSHelpFunctionKey; localizedKey = @"Help"; break;
- // Keypad keys
- // There is no good way we could find to glyph these. We tried a variety
- // of Unicode glyphs, and the menu manager wouldn't take them. We tried
- // subscript numbers, circled numbers and superscript numbers with no
- // luck. It may be a bit confusing to the user, but we're happy to hear
- // any suggestions.
- case 65: key = '.'; localizedKey = @"Keypad ."; break;
- case 67: key = '*'; localizedKey = @"Keypad *"; break;
- case 69: key = '+'; localizedKey = @"Keypad +"; break;
- case 75: key = '/'; localizedKey = @"Keypad /"; break;
- case 78: key = '-'; localizedKey = @"Keypad -"; break;
- case 81: key = '='; localizedKey = @"Keypad ="; break;
- case 82: key = '0'; localizedKey = @"Keypad 0"; break;
- case 83: key = '1'; localizedKey = @"Keypad 1"; break;
- case 84: key = '2'; localizedKey = @"Keypad 2"; break;
- case 85: key = '3'; localizedKey = @"Keypad 3"; break;
- case 86: key = '4'; localizedKey = @"Keypad 4"; break;
- case 87: key = '5'; localizedKey = @"Keypad 5"; break;
- case 88: key = '6'; localizedKey = @"Keypad 6"; break;
- case 89: key = '7'; localizedKey = @"Keypad 7"; break;
- case 91: key = '8'; localizedKey = @"Keypad 8"; break;
- case 92: key = '9'; localizedKey = @"Keypad 9"; break;
-
- }
-
- // If they asked for strings, and we have one return it. Otherwise, return
- // any key we've picked.
- if (!useGlyph && localizedKey) {
- return NSLocalizedStringFromTableInBundle(localizedKey,
- @"GTMHotKeyTextField",
- bundle,
- @"");
- } else if (key != 0) {
- return [NSString stringWithFormat:@"%C", key];
- }
-
- // Everything else should be printable so look it up in the current keyboard
- UCKeyboardLayout *uchrData = NULL;
-
- OSStatus err = noErr;
-#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4
- // layout
- KeyboardLayoutRef currentLayout = NULL;
- // Get the layout kind
- SInt32 currentLayoutKind = -1;
- if ([GTMSystemVersion isLeopardOrGreater]
- && kGTM_TISPropertyUnicodeKeyLayoutData
- && GTM_TISGetInputSourceProperty
- && GTM_TISCopyCurrentKeyboardLayoutInputSource) {
- // On Leopard we use the new improved TIS interfaces which work for input
- // sources as well as keyboard layouts.
- TISInputSourceRef inputSource
- = GTM_TISCopyCurrentKeyboardLayoutInputSource();
- if (inputSource) {
- CFDataRef uchrDataRef
- = GTM_TISGetInputSourceProperty(inputSource,
- kGTM_TISPropertyUnicodeKeyLayoutData);
- if(uchrDataRef) {
- uchrData = (UCKeyboardLayout*)CFDataGetBytePtr(uchrDataRef);
- }
- CFRelease(inputSource);
- }
- } else {
- // Tiger we use keyboard layouts as it's the best we can officially do.
- err = KLGetCurrentKeyboardLayout(&currentLayout);
- if (err != noErr) { // COV_NF_START
- _GTMDevLog(@"failed to fetch the keyboard layout, err=%d", err);
- return nil;
- } // COV_NF_END
-
- err = KLGetKeyboardLayoutProperty(currentLayout,
- kKLKind,
- (const void **)&currentLayoutKind);
- if (err != noErr) { // COV_NF_START
- _GTMDevLog(@"failed to fetch the keyboard layout kind property, err=%d",
- err);
- return nil;
- } // COV_NF_END
-
- if (currentLayoutKind != kKLKCHRKind) {
- err = KLGetKeyboardLayoutProperty(currentLayout,
- kKLuchrData,
- (const void **)&uchrData);
- if (err != noErr) { // COV_NF_START
- _GTMDevLog(@"failed to fetch the keyboard layout uchar data, err=%d",
- err);
- return nil;
- } // COV_NF_END
- }
- }
-#else
- TISInputSourceRef inputSource = TISCopyCurrentKeyboardLayoutInputSource();
- if (inputSource) {
- CFDataRef uchrDataRef
- = TISGetInputSourceProperty(inputSource, kTISPropertyUnicodeKeyLayoutData);
- if(uchrDataRef) {
- uchrData = (UCKeyboardLayout*)CFDataGetBytePtr(uchrDataRef);
- }
- CFRelease(inputSource);
- }
-#endif // MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4
-
- NSString *keystrokeString = nil;
- if (uchrData) {
- // uchr layout data is available, this is our preference
- UniCharCount uchrCharLength = 0;
- UniChar uchrChars[256] = { 0 };
- UInt32 uchrDeadKeyState = 0;
- err = UCKeyTranslate(uchrData,
- keycode,
- kUCKeyActionDisplay,
- 0, // No modifiers
- LMGetKbdType(),
- kUCKeyTranslateNoDeadKeysMask,
- &uchrDeadKeyState,
- sizeof(uchrChars) / sizeof(UniChar),
- &uchrCharLength,
- uchrChars);
- if (err != noErr) {
- // COV_NF_START
- _GTMDevLog(@"failed to translate the keycode, err=%d", (int)err);
- return nil;
- // COV_NF_END
- }
- if (uchrCharLength < 1) return nil;
- keystrokeString = [NSString stringWithCharacters:uchrChars
- length:uchrCharLength];
- }
-#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4
- else if (currentLayoutKind == kKLKCHRKind) {
- // Only KCHR layout data is available, go old school
- void *KCHRData = NULL;
- err = KLGetKeyboardLayoutProperty(currentLayout, kKLKCHRData,
- (const void **)&KCHRData);
- if (err != noErr) { // COV_NF_START
- _GTMDevLog(@"failed to fetch the keyboard layout uchar data, err=%d",
- err);
- return nil;
- } // COV_NF_END
- // Turn into character code
- UInt32 keyTranslateState = 0;
- UInt32 twoKCHRChars = KeyTranslate(KCHRData, keycode, &keyTranslateState);
- if (!twoKCHRChars) return nil;
- // Unpack the fields
- char firstChar = (char)((twoKCHRChars & 0x00FF0000) >> 16);
- char secondChar = (char)(twoKCHRChars & 0x000000FF);
- // May have one or two characters
- if (firstChar && secondChar) {
- NSString *str1
- = [[[NSString alloc] initWithBytes:&firstChar
- length:1
- encoding:NSMacOSRomanStringEncoding] autorelease];
- NSString *str2
- = [[[NSString alloc] initWithBytes:&secondChar
- length:1
- encoding:NSMacOSRomanStringEncoding] autorelease];
- keystrokeString = [NSString stringWithFormat:@"%@%@",
- [str1 uppercaseString],
- [str2 uppercaseString]];
- } else {
- keystrokeString
- = [[[NSString alloc] initWithBytes:&secondChar
- length:1
- encoding:NSMacOSRomanStringEncoding] autorelease];
- [keystrokeString uppercaseString];
- }
- }
-#endif // MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4
-
- // Sanity we got a stroke
- if (!keystrokeString || ![keystrokeString length]) return nil;
-
- // Sanity check the keystroke string for unprintable characters
- NSMutableCharacterSet *validChars =
- [[[NSMutableCharacterSet alloc] init] autorelease];
-
- [validChars formUnionWithCharacterSet:[NSCharacterSet alphanumericCharacterSet]];
- [validChars formUnionWithCharacterSet:[NSCharacterSet punctuationCharacterSet]];
- [validChars formUnionWithCharacterSet:[NSCharacterSet symbolCharacterSet]];
- for (unsigned int i = 0; i < [keystrokeString length]; i++) {
- if (![validChars characterIsMember:[keystrokeString characterAtIndex:i]]) {
- return nil;
- }
- }
-
- if (!useGlyph) {
- // menus want glyphs in the original lowercase forms, so we only upper this
- // if we aren't using it as a glyph.
- keystrokeString = [keystrokeString uppercaseString];
- }
-
- return keystrokeString;
-}
-
-@end
-
-@implementation GTMHotKeyFieldEditor
-
-+ (GTMHotKeyFieldEditor *)sharedHotKeyFieldEditor {
- static GTMHotKeyFieldEditor *obj;
- if (!obj) {
- obj = [[self alloc] init];
- }
- return obj;
-}
-
-- (id)init {
- if ((self = [super init])) {
- [self setFieldEditor:YES]; // We are a field editor
- }
- return self;
-}
-
-// COV_NF_START
-// Singleton so never called.
-- (void)dealloc {
- [cell_ release];
- [super dealloc];
-}
-// COV_NF_END
-
-- (GTMHotKeyTextFieldCell *)cell {
- return cell_;
-}
-
-- (void)setCell:(GTMHotKeyTextFieldCell *)cell {
- [cell_ autorelease];
- cell_ = [cell retain];
-}
-
-- (NSArray *)acceptableDragTypes {
- // Don't take drags
- return [NSArray array];
-}
-
-- (NSArray *)readablePasteboardTypes {
- // No pasting
- return [NSArray array];
-}
-
-- (NSArray *)writablePasteboardTypes {
- // No copying
- return [NSArray array];
-}
-
-- (BOOL)becomeFirstResponder {
- // We need to lose focus any time the window is not key
- NSNotificationCenter *dc = [NSNotificationCenter defaultCenter];
- [dc addObserver:self
- selector:@selector(windowResigned:)
- name:NSWindowDidResignKeyNotification
- object:[self window]];
- return [super becomeFirstResponder];
-}
-
-- (BOOL)resignFirstResponder {
- // No longer interested in window resign
- [[NSNotificationCenter defaultCenter] removeObserver:self];
- return [super resignFirstResponder];
-}
-
-// Private method we use to get out of global hotkey capture when the window
-// is no longer front
-- (void)windowResigned:(NSNotification *)notification {
- // Lose our focus
- NSWindow *window = [self window];
- [window makeFirstResponder:window];
-
-}
-
-- (BOOL)shouldDrawInsertionPoint {
- // Show an insertion point, because we'll kill our own focus after
- // each entry
- return YES;
-}
-
-- (NSRange)selectionRangeForProposedRange:(NSRange)proposedSelRange
- granularity:(NSSelectionGranularity)granularity {
- // Always select everything
- return NSMakeRange(0, [[self textStorage] length]);
-}
-
-- (void)keyDown:(NSEvent *)theEvent {
- if ([self shouldBypassEvent:theEvent]) {
- [super keyDown:theEvent];
- } else {
- // Try to eat the event
- [self processEventToHotKeyAndString:theEvent];
- }
-}
-
-- (BOOL)performKeyEquivalent:(NSEvent *)theEvent {
- if ([self shouldBypassEvent:theEvent]) {
- return [super performKeyEquivalent:theEvent];
- } else {
- // We always eat these key strokes while we have focus
- [self processEventToHotKeyAndString:theEvent];
- return YES;
- }
-}
-
-// Private do method that tell us to ignore certain events
-- (BOOL)shouldBypassEvent:(NSEvent *)theEvent {
- BOOL bypass = NO;
- UInt16 keyCode = [theEvent keyCode];
- NSUInteger modifierFlags
- = [theEvent modifierFlags] & NSDeviceIndependentModifierFlagsMask;
-
- if (keyCode == 48) { // Tab
- // Ignore all events that the dock cares about
- // Just to be extra clear if the user is trying to use Dock hotkeys beep
- // at them
- if ((modifierFlags == NSCommandKeyMask) ||
- (modifierFlags == (NSCommandKeyMask | NSShiftKeyMask))) {
- NSBeep();
- bypass = YES;
- } else if (modifierFlags == 0 || modifierFlags == NSShiftKeyMask) {
- // Probably attempting to tab around the dialog.
- bypass = YES;
- }
-
- } else if ((keyCode == 12) && (modifierFlags == NSCommandKeyMask)) {
- // Don't eat Cmd-Q. Users could have it as a hotkey, but its more likely
- // they're trying to quit
- bypass = YES;
- } else if ((keyCode == 13) && (modifierFlags == NSCommandKeyMask)) {
- // Same for Cmd-W, user is probably trying to close the window
- bypass = YES;
- }
- return bypass;
-}
-
-// Private method that turns events into strings and dictionaries for our
-// hotkey plumbing.
-- (void)processEventToHotKeyAndString:(NSEvent *)theEvent {
- // Construct a dictionary of the event as a hotkey pref
- GTMHotKey *newHotKey = nil;
- NSString *prettyString = @"";
- // 51 is "the delete key"
- const NSUInteger allModifiers = (NSCommandKeyMask | NSAlternateKeyMask |
- NSControlKeyMask | NSShiftKeyMask);
- if (!(([theEvent keyCode] == 51 )
- && (([theEvent modifierFlags] & allModifiers)== 0))) {
- newHotKey = [self hotKeyForEvent:theEvent];
- if (!newHotKey) {
- NSBeep();
- return; // No action, but don't give up focus
- }
- prettyString = [GTMHotKeyTextFieldCell displayStringForHotKey:newHotKey];
- if (!prettyString) {
- NSBeep();
- return;
- }
- }
-
- // Replacement range
- NSRange replaceRange = NSMakeRange(0, [[self textStorage] length]);
-
- // Ask for permission to replace
- if (![self shouldChangeTextInRange:replaceRange
- replacementString:prettyString]) {
- // If replacement was disallowed, change nothing, including hotKeyDict_
- NSBeep();
- return;
- }
-
- [[self cell] setObjectValue:newHotKey];
-
- // Finish the change
- [self didChangeText];
-
- // Force editing to end. This sends focus off into space slightly, but
- // its better than constantly capturing user events. This is exactly
- // like the Apple editor in their Keyboard pref pane.
- [[self window] makeFirstResponder:nil];
-}
-
-- (GTMHotKey *)hotKeyForEvent:(NSEvent *)event {
- if (!event) return nil;
-
- // Check event
- NSUInteger flags = [event modifierFlags];
- UInt16 keycode = [event keyCode];
- // If the event has no modifiers do nothing
- NSUInteger allModifiers = (NSCommandKeyMask | NSAlternateKeyMask |
- NSControlKeyMask | NSShiftKeyMask);
-
- BOOL requiresModifiers
- = [GTMHotKeyTextFieldCell doesKeyCodeRequireModifier:keycode];
- if (requiresModifiers) {
- // If we aren't a function key, and have no modifiers do nothing.
- if (!(flags & allModifiers)) return nil;
- // If the event has high bits in keycode do nothing
- if (keycode & 0xFF00) return nil;
- }
-
- // Clean the flags to only contain things we care about
- UInt32 cleanFlags = 0;
- if (flags & NSCommandKeyMask) cleanFlags |= NSCommandKeyMask;
- if (flags & NSAlternateKeyMask) cleanFlags |= NSAlternateKeyMask;
- if (flags & NSControlKeyMask) cleanFlags |= NSControlKeyMask;
- if (flags & NSShiftKeyMask) cleanFlags |= NSShiftKeyMask;
- return [GTMHotKey hotKeyWithKeyCode:keycode
- modifiers:cleanFlags
- useDoubledModifier:NO];
-}
-
-@end
diff --git a/AppKit/GTMHotKeyTextFieldLocalizations/da.lproj/GTMHotKeyTextField.strings b/AppKit/GTMHotKeyTextFieldLocalizations/da.lproj/GTMHotKeyTextField.strings
deleted file mode 100644
index 66be1af..0000000
--- a/AppKit/GTMHotKeyTextFieldLocalizations/da.lproj/GTMHotKeyTextField.strings
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- GTMHotKeyTextField.strings
-
- Copyright 2009 Google Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License"); you may not
- use this file except in compliance with the License. You may obtain a copy
- of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- License for the specific language governing permissions and limitations under
- the License.
-*/
-
-"Return" = "Retur";
-"Enter" = "⌅";
-"Tab" = "Tabulator";
-"Space" = "Mellemrum";
-"Delete" = "⌫";
-"Clear" = "⌧";
-"Esc" = "⎋";
-"Home" = "↖";
-"Page Up" = "⇡";
-"End" = "↘";
-"Page Down" = "⇣";
-"Help" = "Hjælp";
-
-"Keypad ." = "Keypad .";
-"Keypad *" = "Keypad *";
-"Keypad +" = "Keypad +";
-"Keypad /" = "Keypad /";
-"Keypad -" = "Keypad -";
-"Keypad =" = "Keypad =";
-"Keypad 0" = "Keypad 0";
-"Keypad 1" = "Keypad 1";
-"Keypad 2" = "Keypad 2";
-"Keypad 3" = "Keypad 3";
-"Keypad 4" = "Keypad 4";
-"Keypad 5" = "Keypad 5";
-"Keypad 6" = "Keypad 6";
-"Keypad 7" = "Keypad 7";
-"Keypad 8" = "Keypad 8";
-"Keypad 9" = "Keypad 9";
-"Keypad 0" = "Keypad 0";
-
-"F1" = "F1";
-"F2" = "F2";
-"F3" = "F3";
-"F4" = "F4";
-"F5" = "F5";
-"F6" = "F6";
-"F7" = "F7";
-"F8" = "F8";
-"F9" = "F9";
-"F10" = "F10";
-"F11" = "F11";
-"F12" = "F12";
-"F13" = "F13";
-"F14" = "F14";
-"F15" = "F15";
-"F16" = "F16";
diff --git a/AppKit/GTMHotKeyTextFieldLocalizations/de.lproj/GTMHotKeyTextField.strings b/AppKit/GTMHotKeyTextFieldLocalizations/de.lproj/GTMHotKeyTextField.strings
deleted file mode 100644
index d80f699..0000000
--- a/AppKit/GTMHotKeyTextFieldLocalizations/de.lproj/GTMHotKeyTextField.strings
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- GTMHotKeyTextField.strings
-
- Copyright 2009 Google Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License"); you may not
- use this file except in compliance with the License. You may obtain a copy
- of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- License for the specific language governing permissions and limitations under
- the License.
-*/
-
-"Return" = "Zeilenschalter";
-"Enter" = "⌅";
-"Tab" = "⇥";
-"Space" = "Leertaste";
-"Delete" = "Entf.-Taste";
-"Clear" = "⌦";
-"Esc" = "⎋";
-"Home" = "↖";
-"Page Up" = "⇡";
-"End" = "↘";
-"Page Down" = "⇣";
-"Help" = "Hilfe-Taste";
-
-"Keypad ." = "Tastenfeld .";
-"Keypad *" = "Tastenfeld *";
-"Keypad +" = "Tastenfeld +";
-"Keypad /" = "Tastenfeld /";
-"Keypad -" = "Tastenfeld -";
-"Keypad =" = "Tastenfeld =";
-"Keypad 0" = "Tastenfeld 0";
-"Keypad 1" = "Tastenfeld 1";
-"Keypad 2" = "Tastenfeld 2";
-"Keypad 3" = "Tastenfeld 3";
-"Keypad 4" = "Tastenfeld 4";
-"Keypad 5" = "Tastenfeld 5";
-"Keypad 6" = "Tastenfeld 6";
-"Keypad 7" = "Tastenfeld 7";
-"Keypad 8" = "Tastenfeld 8";
-"Keypad 9" = "Tastenfeld 9";
-"Keypad 0" = "Tastenfeld 0";
-
-"F1" = "F1";
-"F2" = "F2";
-"F3" = "F3";
-"F4" = "F4";
-"F5" = "F5";
-"F6" = "F6";
-"F7" = "F7";
-"F8" = "F8";
-"F9" = "F9";
-"F10" = "F10";
-"F11" = "F11";
-"F12" = "F12";
-"F13" = "F13";
-"F14" = "F14";
-"F15" = "F15";
-"F16" = "F16";
diff --git a/AppKit/GTMHotKeyTextFieldLocalizations/en.lproj/GTMHotKeyTextField.strings b/AppKit/GTMHotKeyTextFieldLocalizations/en.lproj/GTMHotKeyTextField.strings
deleted file mode 100644
index d5c102c..0000000
--- a/AppKit/GTMHotKeyTextFieldLocalizations/en.lproj/GTMHotKeyTextField.strings
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- GTMHotKeyTextField.strings
-
- Copyright 2009 Google Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License"); you may not
- use this file except in compliance with the License. You may obtain a copy
- of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- License for the specific language governing permissions and limitations under
- the License.
-*/
-
-"Return" = "Return";
-"Enter" = "Enter";
-"Tab" = "Tab";
-"Space" = "Space";
-"Delete" = "Delete";
-"Clear" = "Clear";
-"Esc" = "Esc";
-"Home" = "Home";
-"Page Up" = "Page Up";
-"End" = "End";
-"Page Down" = "Page Down";
-"Help" = "Help";
-
-"Keypad ." = "Keypad .";
-"Keypad *" = "Keypad *";
-"Keypad +" = "Keypad +";
-"Keypad /" = "Keypad /";
-"Keypad -" = "Keypad -";
-"Keypad =" = "Keypad =";
-"Keypad 0" = "Keypad 0";
-"Keypad 1" = "Keypad 1";
-"Keypad 2" = "Keypad 2";
-"Keypad 3" = "Keypad 3";
-"Keypad 4" = "Keypad 4";
-"Keypad 5" = "Keypad 5";
-"Keypad 6" = "Keypad 6";
-"Keypad 7" = "Keypad 7";
-"Keypad 8" = "Keypad 8";
-"Keypad 9" = "Keypad 9";
-"Keypad 0" = "Keypad 0";
-
-"F1" = "F1";
-"F2" = "F2";
-"F3" = "F3";
-"F4" = "F4";
-"F5" = "F5";
-"F6" = "F6";
-"F7" = "F7";
-"F8" = "F8";
-"F9" = "F9";
-"F10" = "F10";
-"F11" = "F11";
-"F12" = "F12";
-"F13" = "F13";
-"F14" = "F14";
-"F15" = "F15";
-"F16" = "F16";
diff --git a/AppKit/GTMHotKeyTextFieldLocalizations/es.lproj/GTMHotKeyTextField.strings b/AppKit/GTMHotKeyTextFieldLocalizations/es.lproj/GTMHotKeyTextField.strings
deleted file mode 100644
index fa26173..0000000
--- a/AppKit/GTMHotKeyTextFieldLocalizations/es.lproj/GTMHotKeyTextField.strings
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- GTMHotKeyTextField.strings
-
- Copyright 2009 Google Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License"); you may not
- use this file except in compliance with the License. You may obtain a copy
- of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- License for the specific language governing permissions and limitations under
- the License.
-*/
-
-"Return" = "Retorno";
-"Enter" = "⌅";
-"Tab" = "Tabulación";
-"Space" = "Espacio";
-"Delete" = "Eliminar";
-"Clear" = "⌧";
-"Esc" = "⎋";
-"Home" = "↖";
-"Page Up" = "⇡";
-"End" = "↘";
-"Page Down" = "⇣";
-"Help" = "Ayuda";
-
-"Keypad ." = "Teclado .";
-"Keypad *" = "Teclado *";
-"Keypad +" = "Teclado +";
-"Keypad /" = "Teclado /";
-"Keypad -" = "Teclado -";
-"Keypad =" = "Teclado =";
-"Keypad 0" = "Teclado 0";
-"Keypad 1" = "Teclado 1";
-"Keypad 2" = "Teclado 2";
-"Keypad 3" = "Teclado 3";
-"Keypad 4" = "Teclado 4";
-"Keypad 5" = "Teclado 5";
-"Keypad 6" = "Teclado 6";
-"Keypad 7" = "Teclado 7";
-"Keypad 8" = "Teclado 8";
-"Keypad 9" = "Teclado 9";
-"Keypad 0" = "Teclado 0";
-
-"F1" = "F1";
-"F2" = "F2";
-"F3" = "F3";
-"F4" = "F4";
-"F5" = "F5";
-"F6" = "F6";
-"F7" = "F7";
-"F8" = "F8";
-"F9" = "F9";
-"F10" = "F10";
-"F11" = "F11";
-"F12" = "F12";
-"F13" = "F13";
-"F14" = "F14";
-"F15" = "F15";
-"F16" = "F16";
diff --git a/AppKit/GTMHotKeyTextFieldLocalizations/fi.lproj/GTMHotKeyTextField.strings b/AppKit/GTMHotKeyTextFieldLocalizations/fi.lproj/GTMHotKeyTextField.strings
deleted file mode 100644
index be5d106..0000000
--- a/AppKit/GTMHotKeyTextFieldLocalizations/fi.lproj/GTMHotKeyTextField.strings
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- GTMHotKeyTextField.strings
-
- Copyright 2009 Google Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License"); you may not
- use this file except in compliance with the License. You may obtain a copy
- of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- License for the specific language governing permissions and limitations under
- the License.
-*/
-
-"Return" = "Rivinvaihto";
-"Enter" = "⌅";
-"Tab" = "Sarkain";
-"Space" = "Välilyönti";
-"Delete" = "Poisto";
-"Clear" = "⌧";
-"Esc" = "⎋";
-"Home" = "↖";
-"Page Up" = "⇡";
-"End" = "↘";
-"Page Down" = "⇣";
-"Help" = "Ohjeet";
-
-"Keypad ." = "Näppäimet .";
-"Keypad *" = "Näppäimet *";
-"Keypad +" = "Näppäimet +";
-"Keypad /" = "Näppäimet /";
-"Keypad -" = "Näppäimet -";
-"Keypad =" = "Näppäimet =";
-"Keypad 0" = "Näppäimet 0";
-"Keypad 1" = "Näppäimet 1";
-"Keypad 2" = "Näppäimet 2";
-"Keypad 3" = "Näppäimet 3";
-"Keypad 4" = "Näppäimet 4";
-"Keypad 5" = "Näppäimet 5";
-"Keypad 6" = "Näppäimet 6";
-"Keypad 7" = "Näppäimet 7";
-"Keypad 8" = "Näppäimet 8";
-"Keypad 9" = "Näppäimet 9";
-"Keypad 0" = "Näppäimet 0";
-
-"F1" = "F1";
-"F2" = "F2";
-"F3" = "F3";
-"F4" = "F4";
-"F5" = "F5";
-"F6" = "F6";
-"F7" = "F7";
-"F8" = "F8";
-"F9" = "F9";
-"F10" = "F10";
-"F11" = "F11";
-"F12" = "F12";
-"F13" = "F13";
-"F14" = "F14";
-"F15" = "F15";
-"F16" = "F16";
diff --git a/AppKit/GTMHotKeyTextFieldLocalizations/fr.lproj/GTMHotKeyTextField.strings b/AppKit/GTMHotKeyTextFieldLocalizations/fr.lproj/GTMHotKeyTextField.strings
deleted file mode 100644
index 38a0b81..0000000
--- a/AppKit/GTMHotKeyTextFieldLocalizations/fr.lproj/GTMHotKeyTextField.strings
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- GTMHotKeyTextField.strings
-
- Copyright 2009 Google Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License"); you may not
- use this file except in compliance with the License. You may obtain a copy
- of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- License for the specific language governing permissions and limitations under
- the License.
-*/
-
-"Return" = "Retour";
-"Enter" = "⌅";
-"Tab" = "Tab";
-"Space" = "Espace";
-"Delete" = "Supprimer";
-"Clear" = "⌧";
-"Esc" = "Échap";
-"Home" = "↖";
-"Page Up" = "⇡";
-"End" = "↘";
-"Page Down" = "⇣";
-"Help" = "Aide";
-
-"Keypad ." = "Clavier .";
-"Keypad *" = "Clavier *";
-"Keypad +" = "Clavier +";
-"Keypad /" = "Clavier /";
-"Keypad -" = "Clavier -";
-"Keypad =" = "Clavier =";
-"Keypad 0" = "Clavier 0";
-"Keypad 1" = "Clavier 1";
-"Keypad 2" = "Clavier 2";
-"Keypad 3" = "Clavier 3";
-"Keypad 4" = "Clavier 4";
-"Keypad 5" = "Clavier 5";
-"Keypad 6" = "Clavier 6";
-"Keypad 7" = "Clavier 7";
-"Keypad 8" = "Clavier 8";
-"Keypad 9" = "Clavier 9";
-"Keypad 0" = "Clavier 0";
-
-"F1" = "F1";
-"F2" = "F2";
-"F3" = "F3";
-"F4" = "F4";
-"F5" = "F5";
-"F6" = "F6";
-"F7" = "F7";
-"F8" = "F8";
-"F9" = "F9";
-"F10" = "F10";
-"F11" = "F11";
-"F12" = "F12";
-"F13" = "F13";
-"F14" = "F14";
-"F15" = "F15";
-"F16" = "F16";
diff --git a/AppKit/GTMHotKeyTextFieldLocalizations/it.lproj/GTMHotKeyTextField.strings b/AppKit/GTMHotKeyTextFieldLocalizations/it.lproj/GTMHotKeyTextField.strings
deleted file mode 100644
index 1239fe6..0000000
--- a/AppKit/GTMHotKeyTextFieldLocalizations/it.lproj/GTMHotKeyTextField.strings
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- GTMHotKeyTextField.strings
-
- Copyright 2009 Google Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License"); you may not
- use this file except in compliance with the License. You may obtain a copy
- of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- License for the specific language governing permissions and limitations under
- the License.
-*/
-
-"Return" = "A Capo";
-"Enter" = "⌅";
-"Tab" = "Tabulatore";
-"Space" = "Spazio";
-"Delete" = "Canc";
-"Clear" = "⌧";
-"Esc" = "⎋";
-"Home" = "↖";
-"Page Up" = "⇡";
-"End" = "↘";
-"Page Down" = "⇣";
-"Help" = "Aiuto";
-
-"Keypad ." = "Tastiera .";
-"Keypad *" = "Tastiera *";
-"Keypad +" = "Tastiera +";
-"Keypad /" = "Tastiera /";
-"Keypad -" = "Tastiera -";
-"Keypad =" = "Tastiera =";
-"Keypad 0" = "Tastiera 0";
-"Keypad 1" = "Tastiera 1";
-"Keypad 2" = "Tastiera 2";
-"Keypad 3" = "Tastiera 3";
-"Keypad 4" = "Tastiera 4";
-"Keypad 5" = "Tastiera 5";
-"Keypad 6" = "Tastiera 6";
-"Keypad 7" = "Tastiera 7";
-"Keypad 8" = "Tastiera 8";
-"Keypad 9" = "Tastiera 9";
-"Keypad 0" = "Tastiera 0";
-
-"F1" = "F1";
-"F2" = "F2";
-"F3" = "F3";
-"F4" = "F4";
-"F5" = "F5";
-"F6" = "F6";
-"F7" = "F7";
-"F8" = "F8";
-"F9" = "F9";
-"F10" = "F10";
-"F11" = "F11";
-"F12" = "F12";
-"F13" = "F13";
-"F14" = "F14";
-"F15" = "F15";
-"F16" = "F16";
diff --git a/AppKit/GTMHotKeyTextFieldLocalizations/ja.lproj/GTMHotKeyTextField.strings b/AppKit/GTMHotKeyTextFieldLocalizations/ja.lproj/GTMHotKeyTextField.strings
deleted file mode 100644
index f66a5b0..0000000
--- a/AppKit/GTMHotKeyTextFieldLocalizations/ja.lproj/GTMHotKeyTextField.strings
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- GTMHotKeyTextField.strings
-
- Copyright 2009 Google Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License"); you may not
- use this file except in compliance with the License. You may obtain a copy
- of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- License for the specific language governing permissions and limitations under
- the License.
-*/
-
-"Return" = "↩";
-"Enter" = "⌅";
-"Tab" = "⇥";
-"Space" = "スペースキ";
-"Delete" = "⌫";
-"Clear" = "⌧";
-"Esc" = "⎋";
-"Home" = "↖";
-"Page Up" = "⇡";
-"End" = "↘";
-"Page Down" = "⇣";
-"Help" = "ヘルプ";
-
-"Keypad ." = "キーパッド .";
-"Keypad *" = "キーパッド *";
-"Keypad +" = "キーパッド +";
-"Keypad /" = "キーパッド /";
-"Keypad -" = "キーパッド -";
-"Keypad =" = "キーパッド =";
-"Keypad 0" = "キーパッド 0";
-"Keypad 1" = "キーパッド 1";
-"Keypad 2" = "キーパッド 2";
-"Keypad 3" = "キーパッド 3";
-"Keypad 4" = "キーパッド 4";
-"Keypad 5" = "キーパッド 5";
-"Keypad 6" = "キーパッド 6";
-"Keypad 7" = "キーパッド 7";
-"Keypad 8" = "キーパッド 8";
-"Keypad 9" = "キーパッド 9";
-"Keypad 0" = "キーパッド 0";
-
-"F1" = "F1";
-"F2" = "F2";
-"F3" = "F3";
-"F4" = "F4";
-"F5" = "F5";
-"F6" = "F6";
-"F7" = "F7";
-"F8" = "F8";
-"F9" = "F9";
-"F10" = "F10";
-"F11" = "F11";
-"F12" = "F12";
-"F13" = "F13";
-"F14" = "F14";
-"F15" = "F15";
-"F16" = "F16";
diff --git a/AppKit/GTMHotKeyTextFieldLocalizations/ko.lproj/GTMHotKeyTextField.strings b/AppKit/GTMHotKeyTextFieldLocalizations/ko.lproj/GTMHotKeyTextField.strings
deleted file mode 100644
index c404ca4..0000000
--- a/AppKit/GTMHotKeyTextFieldLocalizations/ko.lproj/GTMHotKeyTextField.strings
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- GTMHotKeyTextField.strings
-
- Copyright 2009 Google Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License"); you may not
- use this file except in compliance with the License. You may obtain a copy
- of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- License for the specific language governing permissions and limitations under
- the License.
-*/
-
-"Return" = "↩";
-"Enter" = "⌅";
-"Tab" = "⇥";
-"Space" = "스페이스";
-"Delete" = "⌫";
-"Clear" = "⌧";
-"Esc" = "⎋";
-"Home" = "↖";
-"Page Up" = "⇡";
-"End" = "↘";
-"Page Down" = "⇣";
-"Help" = "도움말";
-
-"Keypad ." = "키패드 .";
-"Keypad *" = "키패드 *";
-"Keypad +" = "키패드 +";
-"Keypad /" = "키패드 /";
-"Keypad -" = "키패드 -";
-"Keypad =" = "키패드 =";
-"Keypad 0" = "키패드 0";
-"Keypad 1" = "키패드 1";
-"Keypad 2" = "키패드 2";
-"Keypad 3" = "키패드 3";
-"Keypad 4" = "키패드 4";
-"Keypad 5" = "키패드 5";
-"Keypad 6" = "키패드 6";
-"Keypad 7" = "키패드 7";
-"Keypad 8" = "키패드 8";
-"Keypad 9" = "키패드 9";
-"Keypad 0" = "키패드 0";
-
-"F1" = "F1";
-"F2" = "F2";
-"F3" = "F3";
-"F4" = "F4";
-"F5" = "F5";
-"F6" = "F6";
-"F7" = "F7";
-"F8" = "F8";
-"F9" = "F9";
-"F10" = "F10";
-"F11" = "F11";
-"F12" = "F12";
-"F13" = "F13";
-"F14" = "F14";
-"F15" = "F15";
-"F16" = "F16";
diff --git a/AppKit/GTMHotKeyTextFieldLocalizations/nl.lproj/GTMHotKeyTextField.strings b/AppKit/GTMHotKeyTextFieldLocalizations/nl.lproj/GTMHotKeyTextField.strings
deleted file mode 100644
index 79f642b..0000000
--- a/AppKit/GTMHotKeyTextFieldLocalizations/nl.lproj/GTMHotKeyTextField.strings
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- GTMHotKeyTextField.strings
-
- Copyright 2009 Google Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License"); you may not
- use this file except in compliance with the License. You may obtain a copy
- of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- License for the specific language governing permissions and limitations under
- the License.
-*/
-
-"Return" = "↩";
-"Enter" = "⌅";
-"Tab" = "⇥";
-"Space" = "Spatiebalk";
-"Delete" = "⌫";
-"Clear" = "⌧";
-"Esc" = "⎋";
-"Home" = "↖";
-"Page Up" = "⇡";
-"End" = "↘";
-"Page Down" = "⇣";
-"Help" = "Help";
-
-"Keypad ." = "Toetsen .";
-"Keypad *" = "Toetsen *";
-"Keypad +" = "Toetsen +";
-"Keypad /" = "Toetsen /";
-"Keypad -" = "Toetsen -";
-"Keypad =" = "Toetsen =";
-"Keypad 0" = "Toetsen 0";
-"Keypad 1" = "Toetsen 1";
-"Keypad 2" = "Toetsen 2";
-"Keypad 3" = "Toetsen 3";
-"Keypad 4" = "Toetsen 4";
-"Keypad 5" = "Toetsen 5";
-"Keypad 6" = "Toetsen 6";
-"Keypad 7" = "Toetsen 7";
-"Keypad 8" = "Toetsen 8";
-"Keypad 9" = "Toetsen 9";
-"Keypad 0" = "Toetsen 0";
-
-"F1" = "F1";
-"F2" = "F2";
-"F3" = "F3";
-"F4" = "F4";
-"F5" = "F5";
-"F6" = "F6";
-"F7" = "F7";
-"F8" = "F8";
-"F9" = "F9";
-"F10" = "F10";
-"F11" = "F11";
-"F12" = "F12";
-"F13" = "F13";
-"F14" = "F14";
-"F15" = "F15";
-"F16" = "F16";
diff --git a/AppKit/GTMHotKeyTextFieldLocalizations/no.lproj/GTMHotKeyTextField.strings b/AppKit/GTMHotKeyTextFieldLocalizations/no.lproj/GTMHotKeyTextField.strings
deleted file mode 100644
index c564b23..0000000
--- a/AppKit/GTMHotKeyTextFieldLocalizations/no.lproj/GTMHotKeyTextField.strings
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- GTMHotKeyTextField.strings
-
- Copyright 2009 Google Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License"); you may not
- use this file except in compliance with the License. You may obtain a copy
- of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- License for the specific language governing permissions and limitations under
- the License.
-*/
-
-"Return" = "Retur";
-"Enter" = "⌅";
-"Tab" = "⇥";
-"Space" = "Mellomrom";
-"Delete" = "Rettetast";
-"Clear" = "⌧";
-"Esc" = "⎋";
-"Home" = "↖";
-"Page Up" = "⇡";
-"End" = "↘";
-"Page Down" = "⇣";
-"Help" = "Hjelp";
-
-"Keypad ." = "Tastatur .";
-"Keypad *" = "Tastatur *";
-"Keypad +" = "Tastatur +";
-"Keypad /" = "Tastatur /";
-"Keypad -" = "Tastatur -";
-"Keypad =" = "Tastatur =";
-"Keypad 0" = "Tastatur 0";
-"Keypad 1" = "Tastatur 1";
-"Keypad 2" = "Tastatur 2";
-"Keypad 3" = "Tastatur 3";
-"Keypad 4" = "Tastatur 4";
-"Keypad 5" = "Tastatur 5";
-"Keypad 6" = "Tastatur 6";
-"Keypad 7" = "Tastatur 7";
-"Keypad 8" = "Tastatur 8";
-"Keypad 9" = "Tastatur 9";
-"Keypad 0" = "Tastatur 0";
-
-"F1" = "F1";
-"F2" = "F2";
-"F3" = "F3";
-"F4" = "F4";
-"F5" = "F5";
-"F6" = "F6";
-"F7" = "F7";
-"F8" = "F8";
-"F9" = "F9";
-"F10" = "F10";
-"F11" = "F11";
-"F12" = "F12";
-"F13" = "F13";
-"F14" = "F14";
-"F15" = "F15";
-"F16" = "F16";
diff --git a/AppKit/GTMHotKeyTextFieldLocalizations/pl.lproj/GTMHotKeyTextField.strings b/AppKit/GTMHotKeyTextFieldLocalizations/pl.lproj/GTMHotKeyTextField.strings
deleted file mode 100644
index a55c59e..0000000
--- a/AppKit/GTMHotKeyTextFieldLocalizations/pl.lproj/GTMHotKeyTextField.strings
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- GTMHotKeyTextField.strings
-
- Copyright 2009 Google Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License"); you may not
- use this file except in compliance with the License. You may obtain a copy
- of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- License for the specific language governing permissions and limitations under
- the License.
-*/
-
-"Return" = "↩";
-"Enter" = "⌅";
-"Tab" = "⇥";
-"Space" = "Spacja";
-"Delete" = "Usuń";
-"Clear" = "⌧";
-"Esc" = "⎋";
-"Home" = "↖";
-"Page Up" = "⇡";
-"End" = "↘";
-"Page Down" = "⇣";
-"Help" = "Pomoc";
-
-"Keypad ." = "Klawiatura .";
-"Keypad *" = "Klawiatura *";
-"Keypad +" = "Klawiatura +";
-"Keypad /" = "Klawiatura /";
-"Keypad -" = "Klawiatura -";
-"Keypad =" = "Klawiatura =";
-"Keypad 0" = "Klawiatura 0";
-"Keypad 1" = "Klawiatura 1";
-"Keypad 2" = "Klawiatura 2";
-"Keypad 3" = "Klawiatura 3";
-"Keypad 4" = "Klawiatura 4";
-"Keypad 5" = "Klawiatura 5";
-"Keypad 6" = "Klawiatura 6";
-"Keypad 7" = "Klawiatura 7";
-"Keypad 8" = "Klawiatura 8";
-"Keypad 9" = "Klawiatura 9";
-"Keypad 0" = "Klawiatura 0";
-
-"F1" = "F1";
-"F2" = "F2";
-"F3" = "F3";
-"F4" = "F4";
-"F5" = "F5";
-"F6" = "F6";
-"F7" = "F7";
-"F8" = "F8";
-"F9" = "F9";
-"F10" = "F10";
-"F11" = "F11";
-"F12" = "F12";
-"F13" = "F13";
-"F14" = "F14";
-"F15" = "F15";
-"F16" = "F16";
diff --git a/AppKit/GTMHotKeyTextFieldLocalizations/pt.lproj/GTMHotKeyTextField.strings b/AppKit/GTMHotKeyTextFieldLocalizations/pt.lproj/GTMHotKeyTextField.strings
deleted file mode 100644
index e80fd87..0000000
--- a/AppKit/GTMHotKeyTextFieldLocalizations/pt.lproj/GTMHotKeyTextField.strings
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- GTMHotKeyTextField.strings
-
- Copyright 2009 Google Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License"); you may not
- use this file except in compliance with the License. You may obtain a copy
- of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- License for the specific language governing permissions and limitations under
- the License.
-*/
-
-"Return" = "Retorno";
-"Enter" = "⌅";
-"Tab" = "Tabulação";
-"Space" = "Espaço";
-"Delete" = "Apagar";
-"Clear" = "⌧";
-"Esc" = "⎋";
-"Home" = "↖";
-"Page Up" = "⇡";
-"End" = "↘";
-"Page Down" = "⇣";
-"Help" = "Ajuda";
-
-"Keypad ." = "Teclado .";
-"Keypad *" = "Teclado *";
-"Keypad +" = "Teclado +";
-"Keypad /" = "Teclado /";
-"Keypad -" = "Teclado -";
-"Keypad =" = "Teclado =";
-"Keypad 0" = "Teclado 0";
-"Keypad 1" = "Teclado 1";
-"Keypad 2" = "Teclado 2";
-"Keypad 3" = "Teclado 3";
-"Keypad 4" = "Teclado 4";
-"Keypad 5" = "Teclado 5";
-"Keypad 6" = "Teclado 6";
-"Keypad 7" = "Teclado 7";
-"Keypad 8" = "Teclado 8";
-"Keypad 9" = "Teclado 9";
-"Keypad 0" = "Teclado 0";
-
-"F1" = "F1";
-"F2" = "F2";
-"F3" = "F3";
-"F4" = "F4";
-"F5" = "F5";
-"F6" = "F6";
-"F7" = "F7";
-"F8" = "F8";
-"F9" = "F9";
-"F10" = "F10";
-"F11" = "F11";
-"F12" = "F12";
-"F13" = "F13";
-"F14" = "F14";
-"F15" = "F15";
-"F16" = "F16";
diff --git a/AppKit/GTMHotKeyTextFieldLocalizations/ru.lproj/GTMHotKeyTextField.strings b/AppKit/GTMHotKeyTextFieldLocalizations/ru.lproj/GTMHotKeyTextField.strings
deleted file mode 100644
index 3bb1059..0000000
--- a/AppKit/GTMHotKeyTextFieldLocalizations/ru.lproj/GTMHotKeyTextField.strings
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- GTMHotKeyTextField.strings
-
- Copyright 2009 Google Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License"); you may not
- use this file except in compliance with the License. You may obtain a copy
- of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- License for the specific language governing permissions and limitations under
- the License.
-*/
-
-"Return" = "↩";
-"Enter" = "⌅";
-"Tab" = "⇥";
-"Space" = "Пробел";
-"Delete" = "⌫";
-"Clear" = "⌧";
-"Esc" = "⎋";
-"Home" = "↖";
-"Page Up" = "⇡";
-"End" = "↘";
-"Page Down" = "⇣";
-"Help" = "Справка";
-
-"Keypad ." = "Клавиатура .";
-"Keypad *" = "Клавиатура *";
-"Keypad +" = "Клавиатура +";
-"Keypad /" = "Клавиатура /";
-"Keypad -" = "Клавиатура -";
-"Keypad =" = "Клавиатура =";
-"Keypad 0" = "Клавиатура 0";
-"Keypad 1" = "Клавиатура 1";
-"Keypad 2" = "Клавиатура 2";
-"Keypad 3" = "Клавиатура 3";
-"Keypad 4" = "Клавиатура 4";
-"Keypad 5" = "Клавиатура 5";
-"Keypad 6" = "Клавиатура 6";
-"Keypad 7" = "Клавиатура 7";
-"Keypad 8" = "Клавиатура 8";
-"Keypad 9" = "Клавиатура 9";
-"Keypad 0" = "Клавиатура 0";
-
-"F1" = "F1";
-"F2" = "F2";
-"F3" = "F3";
-"F4" = "F4";
-"F5" = "F5";
-"F6" = "F6";
-"F7" = "F7";
-"F8" = "F8";
-"F9" = "F9";
-"F10" = "F10";
-"F11" = "F11";
-"F12" = "F12";
-"F13" = "F13";
-"F14" = "F14";
-"F15" = "F15";
-"F16" = "F16";
diff --git a/AppKit/GTMHotKeyTextFieldLocalizations/sv.lproj/GTMHotKeyTextField.strings b/AppKit/GTMHotKeyTextFieldLocalizations/sv.lproj/GTMHotKeyTextField.strings
deleted file mode 100644
index eb97468..0000000
--- a/AppKit/GTMHotKeyTextFieldLocalizations/sv.lproj/GTMHotKeyTextField.strings
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- GTMHotKeyTextField.strings
-
- Copyright 2009 Google Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License"); you may not
- use this file except in compliance with the License. You may obtain a copy
- of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- License for the specific language governing permissions and limitations under
- the License.
-*/
-
-"Return" = "Retur";
-"Enter" = "⌅";
-"Tab" = "Tabb";
-"Space" = "Mellanslag";
-"Delete" = "⌫";
-"Clear" = "⌧";
-"Esc" = "⎋";
-"Home" = "↖";
-"Page Up" = "⇡";
-"End" = "↘";
-"Page Down" = "⇣";
-"Help" = "Hjälp";
-
-"Keypad ." = "Knappsatsen .";
-"Keypad *" = "Knappsatsen *";
-"Keypad +" = "Knappsatsen +";
-"Keypad /" = "Knappsatsen /";
-"Keypad -" = "Knappsatsen -";
-"Keypad =" = "Knappsatsen =";
-"Keypad 0" = "Knappsatsen 0";
-"Keypad 1" = "Knappsatsen 1";
-"Keypad 2" = "Knappsatsen 2";
-"Keypad 3" = "Knappsatsen 3";
-"Keypad 4" = "Knappsatsen 4";
-"Keypad 5" = "Knappsatsen 5";
-"Keypad 6" = "Knappsatsen 6";
-"Keypad 7" = "Knappsatsen 7";
-"Keypad 8" = "Knappsatsen 8";
-"Keypad 9" = "Knappsatsen 9";
-"Keypad 0" = "Knappsatsen 0";
-
-"F1" = "F1";
-"F2" = "F2";
-"F3" = "F3";
-"F4" = "F4";
-"F5" = "F5";
-"F6" = "F6";
-"F7" = "F7";
-"F8" = "F8";
-"F9" = "F9";
-"F10" = "F10";
-"F11" = "F11";
-"F12" = "F12";
-"F13" = "F13";
-"F14" = "F14";
-"F15" = "F15";
-"F16" = "F16";
diff --git a/AppKit/GTMHotKeyTextFieldLocalizations/zh_CN.lproj/GTMHotKeyTextField.strings b/AppKit/GTMHotKeyTextFieldLocalizations/zh_CN.lproj/GTMHotKeyTextField.strings
deleted file mode 100644
index 73f541c..0000000
--- a/AppKit/GTMHotKeyTextFieldLocalizations/zh_CN.lproj/GTMHotKeyTextField.strings
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- GTMHotKeyTextField.strings
-
- Copyright 2009 Google Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License"); you may not
- use this file except in compliance with the License. You may obtain a copy
- of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- License for the specific language governing permissions and limitations under
- the License.
-*/
-
-"Return" = "↩";
-"Enter" = "⌅";
-"Tab" = "⇥";
-"Space" = "空白";
-"Delete" = "⌫";
-"Clear" = "⌧";
-"Esc" = "⎋";
-"Home" = "↖";
-"Page Up" = "⇡";
-"End" = "↘";
-"Page Down" = "⇣";
-"Help" = "帮助";
-
-"Keypad ." = "键盘 .";
-"Keypad *" = "键盘 *";
-"Keypad +" = "键盘 +";
-"Keypad /" = "键盘 /";
-"Keypad -" = "键盘 -";
-"Keypad =" = "键盘 =";
-"Keypad 0" = "键盘 0";
-"Keypad 1" = "键盘 1";
-"Keypad 2" = "键盘 2";
-"Keypad 3" = "键盘 3";
-"Keypad 4" = "键盘 4";
-"Keypad 5" = "键盘 5";
-"Keypad 6" = "键盘 6";
-"Keypad 7" = "键盘 7";
-"Keypad 8" = "键盘 8";
-"Keypad 9" = "键盘 9";
-"Keypad 0" = "键盘 0";
-
-"F1" = "F1";
-"F2" = "F2";
-"F3" = "F3";
-"F4" = "F4";
-"F5" = "F5";
-"F6" = "F6";
-"F7" = "F7";
-"F8" = "F8";
-"F9" = "F9";
-"F10" = "F10";
-"F11" = "F11";
-"F12" = "F12";
-"F13" = "F13";
-"F14" = "F14";
-"F15" = "F15";
-"F16" = "F16";
diff --git a/AppKit/GTMHotKeyTextFieldLocalizations/zh_TW.lproj/GTMHotKeyTextField.strings b/AppKit/GTMHotKeyTextFieldLocalizations/zh_TW.lproj/GTMHotKeyTextField.strings
deleted file mode 100644
index b5565bf..0000000
--- a/AppKit/GTMHotKeyTextFieldLocalizations/zh_TW.lproj/GTMHotKeyTextField.strings
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- GTMHotKeyTextField.strings
-
- Copyright 2009 Google Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License"); you may not
- use this file except in compliance with the License. You may obtain a copy
- of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- License for the specific language governing permissions and limitations under
- the License.
-*/
-
-"Return" = "↩";
-"Enter" = "⌅";
-"Tab" = "⇥";
-"Space" = "空白";
-"Delete" = "⌫";
-"Clear" = "⌧";
-"Esc" = "⎋";
-"Home" = "↖";
-"Page Up" = "⇡";
-"End" = "↘";
-"Page Down" = "⇣";
-"Help" = "輔助說明";
-
-"Keypad ." = "鍵盤 .";
-"Keypad *" = "鍵盤 *";
-"Keypad +" = "鍵盤 +";
-"Keypad /" = "鍵盤 /";
-"Keypad -" = "鍵盤 -";
-"Keypad =" = "鍵盤 =";
-"Keypad 0" = "鍵盤 0";
-"Keypad 1" = "鍵盤 1";
-"Keypad 2" = "鍵盤 2";
-"Keypad 3" = "鍵盤 3";
-"Keypad 4" = "鍵盤 4";
-"Keypad 5" = "鍵盤 5";
-"Keypad 6" = "鍵盤 6";
-"Keypad 7" = "鍵盤 7";
-"Keypad 8" = "鍵盤 8";
-"Keypad 9" = "鍵盤 9";
-"Keypad 0" = "鍵盤 0";
-
-"F1" = "F1";
-"F2" = "F2";
-"F3" = "F3";
-"F4" = "F4";
-"F5" = "F5";
-"F6" = "F6";
-"F7" = "F7";
-"F8" = "F8";
-"F9" = "F9";
-"F10" = "F10";
-"F11" = "F11";
-"F12" = "F12";
-"F13" = "F13";
-"F14" = "F14";
-"F15" = "F15";
-"F16" = "F16";
diff --git a/AppKit/GTMHotKeyTextFieldTest.h b/AppKit/GTMHotKeyTextFieldTest.h
deleted file mode 100644
index 8cf05c2..0000000
--- a/AppKit/GTMHotKeyTextFieldTest.h
+++ /dev/null
@@ -1,31 +0,0 @@
-// GTMHotKeyTextFieldTest.h
-//
-// Copyright 2006-2009 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import <Cocoa/Cocoa.h>
-
-@class GTMHotKeyTextField;
-
-@interface GTMHotKeyTextFieldTestController : NSWindowController {
- @private
- IBOutlet GTMHotKeyTextField *view_;
-}
-
-- (GTMHotKeyTextField *)view;
-@end
-
-@interface GTMHotKeyTextFieldTestControllerWindowDelegate : NSObject
-@end
diff --git a/AppKit/GTMHotKeyTextFieldTest.m b/AppKit/GTMHotKeyTextFieldTest.m
deleted file mode 100644
index 1bdc4cc..0000000
--- a/AppKit/GTMHotKeyTextFieldTest.m
+++ /dev/null
@@ -1,407 +0,0 @@
-// GTMHotKeyTextFieldTest.m
-//
-// Copyright 2006-2010 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMHotKeyTextFieldTest.h"
-#import "GTMHotKeyTextField.h"
-#import "GTMSenTestCase.h"
-#import "GTMUnitTestDevLog.h"
-#import <Carbon/Carbon.h>
-
-@interface GTMHotKeyTextFieldCell (PrivateMethods)
-// Private methods which we want to access to test
-+ (NSString *)displayStringForHotKey:(GTMHotKey *)hotKey;
-@end
-
-@interface GTMHotKeyTextFieldTest : GTMTestCase {
- @private
- GTMHotKeyTextFieldTestController *controller_;
- GTMHotKey *hotKey_;
-}
-- (GTMHotKey *)hotKey;
-- (void)setHotKey:(GTMHotKey*)hotkey;
-@end
-
-@implementation GTMHotKeyTextFieldTest
-
-- (void)setUp {
- controller_ = [[GTMHotKeyTextFieldTestController alloc] init];
- hotKey_ = [[GTMHotKey alloc] initWithKeyCode:42
- modifiers:NSCommandKeyMask
- useDoubledModifier:NO];
- STAssertNotNil(hotKey_, nil);
- STAssertNotNil(controller_, nil);
- STAssertNotNil([controller_ window], nil);
-}
-
-- (void)tearDown {
- [controller_ close];
- [controller_ release];
- [hotKey_ release];
-}
-
-- (GTMHotKey *)hotKey {
- return hotKey_;
-}
-
-- (void)setHotKey:(GTMHotKey*)hotKey {
- [hotKey_ autorelease];
- hotKey_ = [hotKey retain];
-}
-
-- (void)testStringForModifierFlags {
-
- // Make sure only the flags we expect generate things in their strings
- STAssertEquals([[GTMHotKeyTextFieldCell stringForModifierFlags:NSAlphaShiftKeyMask] length],
- (NSUInteger)0, nil);
- STAssertEquals([[GTMHotKeyTextFieldCell stringForModifierFlags:NSShiftKeyMask] length],
- (NSUInteger)1, nil);
- STAssertEquals([[GTMHotKeyTextFieldCell stringForModifierFlags:NSControlKeyMask] length],
- (NSUInteger)1, nil);
- STAssertEquals([[GTMHotKeyTextFieldCell stringForModifierFlags:NSAlternateKeyMask] length],
- (NSUInteger)1, nil);
- STAssertEquals([[GTMHotKeyTextFieldCell stringForModifierFlags:NSCommandKeyMask] length],
- (NSUInteger)1, nil);
- STAssertEquals([[GTMHotKeyTextFieldCell stringForModifierFlags:NSNumericPadKeyMask] length],
- (NSUInteger)0, nil);
- STAssertEquals([[GTMHotKeyTextFieldCell stringForModifierFlags:NSHelpKeyMask] length],
- (NSUInteger)0, nil);
- STAssertEquals([[GTMHotKeyTextFieldCell stringForModifierFlags:NSFunctionKeyMask] length],
- (NSUInteger)0, nil);
-
- // And some quick checks combining flags to make sure the string gets longer
- STAssertEquals([[GTMHotKeyTextFieldCell stringForModifierFlags:(NSShiftKeyMask |
- NSAlternateKeyMask)] length],
- (NSUInteger)2, nil);
- STAssertEquals([[GTMHotKeyTextFieldCell stringForModifierFlags:(NSShiftKeyMask |
- NSAlternateKeyMask |
- NSCommandKeyMask)] length],
- (NSUInteger)3, nil);
- STAssertEquals([[GTMHotKeyTextFieldCell stringForModifierFlags:(NSShiftKeyMask |
- NSAlternateKeyMask |
- NSCommandKeyMask |
- NSControlKeyMask)] length],
- (NSUInteger)4, nil);
-
-}
-
-- (void)testStringForKeycode_useGlyph_resourceBundle {
- NSBundle *bundle = [NSBundle bundleForClass:[self class]];
- STAssertNotNil(bundle, @"failed to get our bundle?");
- NSString *str;
-
- // We need a better test, but for now, we'll just loop through things we know
- // we handle.
-
- // TODO: we need to force the pre leopard code path during tests.
-
- UInt16 testData[] = {
- 123, 124, 125, 126, 122, 120, 99, 118, 96, 97, 98, 100, 101, 109, 103, 111,
- 105, 107, 113, 106, 117, 36, 76, 48, 49, 51, 71, 53, 115, 116, 119, 121,
- 114, 65, 67, 69, 75, 78, 81, 82, 83, 84, 85, 86, 87, 88, 89, 91, 92,
- };
- for (int useGlyph = 0 ; useGlyph < 2 ; ++useGlyph) {
- for (size_t i = 0; i < (sizeof(testData) / sizeof(UInt16)); ++i) {
- UInt16 keycode = testData[i];
-
- str = [GTMHotKeyTextFieldCell stringForKeycode:keycode
- useGlyph:useGlyph
- resourceBundle:bundle];
- STAssertNotNil(str,
- @"failed to get a string for keycode %u (useGlyph:%@)",
- keycode, (useGlyph ? @"YES" : @"NO"));
- STAssertGreaterThan([str length], (NSUInteger)0,
- @"got an empty string for keycode %u (useGlyph:%@)",
- keycode, (useGlyph ? @"YES" : @"NO"));
- }
- }
-}
-
-- (void)testGTMHotKeyPrettyString {
- GTMHotKey *hotKey = [GTMHotKey hotKeyWithKeyCode:114
- modifiers:NSCommandKeyMask
- useDoubledModifier:NO];
- STAssertNotNil(hotKey, nil);
- STAssertNotNil([GTMHotKeyTextFieldCell displayStringForHotKey:hotKey], nil);
-
- hotKey = [GTMHotKey hotKeyWithKeyCode:1
- modifiers:0
- useDoubledModifier:NO];
-
- STAssertNotNil(hotKey, nil);
- STAssertNil([GTMHotKeyTextFieldCell displayStringForHotKey:hotKey], nil);
-}
-
-- (void)testFieldEditorSettersAndGetters {
- NSWindow *window = [controller_ window];
- GTMHotKeyTextField *field = [controller_ view];
- STAssertNotNil(field, nil);
- GTMHotKeyFieldEditor *editor
- = (GTMHotKeyFieldEditor *)[window fieldEditor:YES forObject:field];
- STAssertTrue([editor isMemberOfClass:[GTMHotKeyFieldEditor class]], nil);
- STAssertEqualObjects(editor,
- [GTMHotKeyFieldEditor sharedHotKeyFieldEditor],
- nil);
- SEL selectors[] =
- {
- @selector(readablePasteboardTypes),
- @selector(acceptableDragTypes),
- @selector(writablePasteboardTypes)
- };
- for (size_t i = 0; i < sizeof(selectors) / sizeof(selectors[0]); ++i) {
- NSArray *array = [editor performSelector:selectors[i]];
- STAssertNotNil(array, nil);
- STAssertEquals([array count], (NSUInteger)0,
- @"Failed Selector: %@", NSStringFromSelector(selectors[i]));
- }
-}
-
-- (void)testTextFieldSettersAndGetters {
- GTMHotKeyTextField *field = [controller_ view];
- STAssertNotNil(field, nil);
- NSString *expectedString
- = @"Hot key fields want hot key dictionaries as object values.";
- [GTMUnitTestDevLog expect:3 casesOfString:@"%@", expectedString];
- [field setDoubleValue:2];
- [field setIntValue:-1];
- [field setFloatValue:0];
- STAssertEquals([field doubleValue], 0.0, nil);
- STAssertEquals([field intValue], 0, nil);
- STAssertEquals([field floatValue], 0.0f, nil);
-#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
- [GTMUnitTestDevLog expectString:@"%@", expectedString];
- [field setIntegerValue:5];
- STAssertEquals([field integerValue], (NSInteger)0, nil);
-#endif
- SEL takeNumberSels[] =
- {
- @selector(takeDoubleValueFrom:),
- @selector(takeFloatValueFrom:),
- @selector(takeIntValueFrom:)
- };
- for (size_t i = 0;
- i < sizeof(takeNumberSels) / sizeof(takeNumberSels[0]); ++i) {
- [GTMUnitTestDevLog expect:2 casesOfString:@"%@", expectedString];
- [field performSelector:takeNumberSels[i] withObject:self];
- [field performSelector:takeNumberSels[i] withObject:nil];
- }
-
- [GTMUnitTestDevLog expect:6 casesOfString:@"%@", expectedString];
- [field takeStringValueFrom:self];
- [field takeStringValueFrom:nil];
- [field setStringValue:nil];
- [field setStringValue:@"foo"];
-
- NSAttributedString *attrString
- = [[[NSAttributedString alloc] initWithString:@"foo"] autorelease];
- [field setAttributedStringValue:nil];
- [field setAttributedStringValue:attrString];
-
- STAssertNil([field formatter], nil);
- [field setFormatter:nil];
- NSFormatter *testFormatter = [[[NSFormatter alloc] init] autorelease];
- [GTMUnitTestDevLog expectString:@"Hot key fields don't accept formatters."];
- [field setFormatter:testFormatter];
-
- [GTMUnitTestDevLog expectString:@"%@", expectedString];
- [field takeObjectValueFrom:self];
-
- // Setting to nil is valid.
- [field takeObjectValueFrom:nil];
-}
-
-- (void)pressKey:(NSString *)key code:(NSInteger)code
- modifierFlags:(NSInteger)flags window:(NSWindow *)window {
- NSInteger windNum = [window windowNumber];
- NSGraphicsContext *context = [NSGraphicsContext currentContext];
- EventTime evtTime = GetCurrentEventTime();
- NSPoint loc = [NSEvent mouseLocation];
- NSEvent *keyDownEvt = [NSEvent keyEventWithType:NSKeyDown
- location:loc
- modifierFlags:flags
- timestamp:evtTime
- windowNumber:windNum
- context:context
- characters:key
- charactersIgnoringModifiers:key
- isARepeat:NO
- keyCode:code];
- NSEvent *keyUpEvt = [NSEvent keyEventWithType:NSKeyUp
- location:loc
- modifierFlags:flags
- timestamp:evtTime
- windowNumber:windNum
- context:context
- characters:key
- charactersIgnoringModifiers:key
- isARepeat:NO
- keyCode:code];
- STAssertNotNil(keyDownEvt, nil);
- STAssertNotNil(keyUpEvt, nil);
- [window sendEvent:keyDownEvt];
- [window sendEvent:keyUpEvt];
-}
-
-- (void)testTextFieldBindings {
- NSObjectController *controller
- = [[[NSObjectController alloc] init] autorelease];
- [controller setObjectClass:[self class]];
- [controller bind:NSContentBinding
- toObject:self
- withKeyPath:@"self"
- options:nil];
- STAssertNotNil(controller, nil);
- GTMHotKeyTextField *field = [controller_ view];
- STAssertNotNil(field, nil);
- [field bind:NSValueBinding
- toObject:controller
- withKeyPath:@"selection.hotKey"
- options:nil];
- id value = [field objectValue];
- STAssertEqualObjects(value, hotKey_, nil);
- NSString *stringValue = [field stringValue];
- STAssertEqualObjects(stringValue, @"⌘\\", nil);
- NSAttributedString *attrStringValue = [field attributedStringValue];
- STAssertEqualObjects([attrStringValue string], stringValue, nil);
- // Try changing some values
- GTMHotKey *newHotKey = [GTMHotKey hotKeyWithKeyCode:43
- modifiers:NSCommandKeyMask
- useDoubledModifier:NO];
- [self setHotKey:newHotKey];
- stringValue = [field stringValue];
- STAssertEqualObjects(stringValue, @"⌘,", nil);
-
- // Now try some typing
- NSWindow *window = [controller_ window];
- STAssertTrue([window makeFirstResponder:field], nil);
- [self pressKey:@"A" code:0 modifierFlags:NSShiftKeyMask window:window];
- stringValue = [field stringValue];
- STAssertEqualObjects(stringValue, @"⇧A", nil);
-
- // field is supposed to give up first responder when editing is done.
- STAssertNotEqualObjects([window firstResponder], field, nil);
-
- // Do NOT attempt to set the key via pressKey to the same cmd-key combo
- // as a menu item. This works fine on Leopard, but fails on Tiger (and fails
- // on Leopard if you have linked to the Tiger libs). I hope control-shift-opt
- // J won't be used in our simple test app.
- STAssertTrue([window makeFirstResponder:field], nil);
- int modifiers = NSAlternateKeyMask | NSShiftKeyMask | NSControlKeyMask;
- [self pressKey:@"J"
- code:38
- modifierFlags:modifiers
- window:window];
- stringValue = [field stringValue];
- STAssertEqualObjects(stringValue, @"⌃⌥⇧J", nil);
- GTMHotKey *cmdJHotKey = [GTMHotKey hotKeyWithKeyCode:38
- modifiers:modifiers
- useDoubledModifier:NO];
- STAssertEqualObjects(cmdJHotKey, hotKey_, nil);
-
- // Try without a modifier. This should fail.
- STAssertTrue([window makeFirstResponder:field], nil);
- [self pressKey:@"j" code:38 modifierFlags:0 window:window];
- stringValue = [field stringValue];
- STAssertEqualObjects(stringValue, @"⌃⌥⇧J", nil);
-
- // Try cmd-q this should fail
- STAssertTrue([window makeFirstResponder:field], nil);
- [self pressKey:@"Q" code:12 modifierFlags:NSCommandKeyMask window:window];
- stringValue = [field stringValue];
- STAssertEqualObjects(stringValue, @"⌃⌥⇧J", nil);
-
- // Try cmd-w this should fail
- STAssertTrue([window makeFirstResponder:field], nil);
- [self pressKey:@"W" code:13 modifierFlags:NSCommandKeyMask window:window];
- stringValue = [field stringValue];
- STAssertEqualObjects(stringValue, @"⌃⌥⇧J", nil);
-
- // Try cmd-tab this should fail
- STAssertTrue([window makeFirstResponder:field], nil);
- [self pressKey:@"\t" code:48 modifierFlags:NSCommandKeyMask window:window];
- stringValue = [field stringValue];
- STAssertEqualObjects(stringValue, @"⌃⌥⇧J", nil);
-
- // Do it by hotkey
- GTMHotKey *cmdSHotKey = [GTMHotKey hotKeyWithKeyCode:1
- modifiers:NSCommandKeyMask
- useDoubledModifier:NO];
- [controller setValue:cmdSHotKey forKeyPath:@"selection.hotKey"];
- stringValue = [field stringValue];
- STAssertEqualObjects(stringValue, @"⌘S", nil);
-
- // Check to make sure the binding stuck
- STAssertEqualObjects(cmdSHotKey, hotKey_, nil);
-
- // Check to make sure that programatic edits don't modify our model
- [field setObjectValue:cmdJHotKey];
- STAssertEqualObjects(cmdSHotKey, hotKey_, nil);
-
- [field unbind:NSValueBinding];
- [controller unbind:NSContentBinding];
-
- GTMHotKey *cmdDHotKey = [GTMHotKey hotKeyWithKeyCode:2
- modifiers:NSCommandKeyMask
- useDoubledModifier:NO];
- [field setObjectValue:cmdDHotKey];
- stringValue = [field stringValue];
- STAssertEqualObjects(stringValue, @"⌘D", nil);
-}
-
-- (int)intValue {
- return 2;
-}
-
-- (float)floatValue {
- return [self intValue];
-}
-
-- (double)doubleValue {
- return [self floatValue];
-}
-
-- (NSString *)stringValue {
- return @"GTMHotKeyTextFieldTestStringValue";
-}
-
-- (id)objectValue {
- return self;
-}
-
-@end
-
-@implementation GTMHotKeyTextFieldTestController
-- (id)init {
- return [super initWithWindowNibName:@"GTMHotKeyTextFieldTest"];
-}
-
-- (GTMHotKeyTextField *)view {
- return view_;
-}
-
-@end
-
-@implementation GTMHotKeyTextFieldTestControllerWindowDelegate
-
--(id)windowWillReturnFieldEditor:(NSWindow *)sender toObject:(id)anObject {
- id editor = nil;
- if ([anObject isKindOfClass:[GTMHotKeyTextField class]]) {
- editor = [GTMHotKeyFieldEditor sharedHotKeyFieldEditor];
- }
- return editor;
-}
-@end
-
diff --git a/AppKit/GTMHotKeyTextFieldTest.xib b/AppKit/GTMHotKeyTextFieldTest.xib
deleted file mode 100644
index c4d0726..0000000
--- a/AppKit/GTMHotKeyTextFieldTest.xib
+++ /dev/null
@@ -1,401 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.03">
- <data>
- <int key="IBDocument.SystemTarget">1050</int>
- <string key="IBDocument.SystemVersion">9L31a</string>
- <string key="IBDocument.InterfaceBuilderVersion">680</string>
- <string key="IBDocument.AppKitVersion">949.54</string>
- <string key="IBDocument.HIToolboxVersion">353.00</string>
- <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="4"/>
- </object>
- <object class="NSArray" key="IBDocument.PluginDependencies">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- </object>
- <object class="NSMutableDictionary" key="IBDocument.Metadata">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <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="NSCustomObject" id="1001">
- <string key="NSClassName">GTMHotKeyTextFieldTestController</string>
- </object>
- <object class="NSCustomObject" id="1003">
- <string key="NSClassName">FirstResponder</string>
- </object>
- <object class="NSCustomObject" id="1004">
- <string key="NSClassName">NSApplication</string>
- </object>
- <object class="NSWindowTemplate" id="1005">
- <int key="NSWindowStyleMask">1</int>
- <int key="NSWindowBacking">2</int>
- <string key="NSWindowRect">{{196, 448}, {136, 62}}</string>
- <int key="NSWTFlags">536870912</int>
- <string key="NSWindowTitle">Window</string>
- <string key="NSWindowClass">NSWindow</string>
- <nil key="NSViewClass"/>
- <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
- <object class="NSView" key="NSWindowView" id="1006">
- <reference key="NSNextResponder"/>
- <int key="NSvFlags">256</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSTextField" id="972143176">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{20, 20}, {96, 22}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="781959520">
- <int key="NSCellFlags">-1804468671</int>
- <int key="NSCellFlags2">272630784</int>
- <string key="NSContents"/>
- <object class="NSFont" key="NSSupport">
- <string key="NSName">LucidaGrande</string>
- <double key="NSSize">1.300000e+01</double>
- <int key="NSfFlags">1044</int>
- </object>
- <reference key="NSControlView" ref="972143176"/>
- <bool key="NSDrawsBackground">YES</bool>
- <object class="NSColor" key="NSBackgroundColor">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">textBackgroundColor</string>
- <object class="NSColor" key="NSColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MQA</bytes>
- </object>
- </object>
- <object class="NSColor" key="NSTextColor">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">textColor</string>
- <object class="NSColor" key="NSColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MAA</bytes>
- </object>
- </object>
- </object>
- </object>
- </object>
- <string key="NSFrameSize">{136, 62}</string>
- <reference key="NSSuperview"/>
- </object>
- <string key="NSScreenRect">{{0, 0}, {1680, 1028}}</string>
- <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
- </object>
- <object class="NSCustomObject" id="421484812">
- <string key="NSClassName">GTMHotKeyTextFieldTestControllerWindowDelegate</string>
- </object>
- </object>
- <object class="IBObjectContainer" key="IBDocument.Objects">
- <object class="NSMutableArray" key="connectionRecords">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">window</string>
- <reference key="source" ref="1001"/>
- <reference key="destination" ref="1005"/>
- </object>
- <int key="connectionID">3</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">view_</string>
- <reference key="source" ref="1001"/>
- <reference key="destination" ref="972143176"/>
- </object>
- <int key="connectionID">7</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">initialFirstResponder</string>
- <reference key="source" ref="1005"/>
- <reference key="destination" ref="972143176"/>
- </object>
- <int key="connectionID">12</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">delegate</string>
- <reference key="source" ref="1005"/>
- <reference key="destination" ref="421484812"/>
- </object>
- <int key="connectionID">13</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>
- <object class="NSArray" key="object" id="1002">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <reference key="children" ref="1000"/>
- <nil key="parent"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-2</int>
- <reference key="object" ref="1001"/>
- <reference key="parent" ref="1002"/>
- <string type="base64-UTF8" key="objectName">RmlsZSdzIE93bmVyA</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-1</int>
- <reference key="object" ref="1003"/>
- <reference key="parent" ref="1002"/>
- <string key="objectName">First Responder</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-3</int>
- <reference key="object" ref="1004"/>
- <reference key="parent" ref="1002"/>
- <string key="objectName">Application</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">1</int>
- <reference key="object" ref="1005"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1006"/>
- </object>
- <reference key="parent" ref="1002"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">2</int>
- <reference key="object" ref="1006"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="972143176"/>
- </object>
- <reference key="parent" ref="1005"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">4</int>
- <reference key="object" ref="972143176"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="781959520"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">5</int>
- <reference key="object" ref="781959520"/>
- <reference key="parent" ref="972143176"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">10</int>
- <reference key="object" ref="421484812"/>
- <reference key="parent" ref="1002"/>
- </object>
- </object>
- </object>
- <object class="NSMutableDictionary" key="flattenedProperties">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMutableArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>-1.IBPluginDependency</string>
- <string>-2.IBPluginDependency</string>
- <string>-3.IBPluginDependency</string>
- <string>1.IBEditorWindowLastContentRect</string>
- <string>1.IBPluginDependency</string>
- <string>1.IBWindowTemplateEditedContentRect</string>
- <string>1.NSWindowTemplate.visibleAtLaunch</string>
- <string>1.WindowOrigin</string>
- <string>1.editorWindowContentRectSynchronizationRect</string>
- <string>10.IBPluginDependency</string>
- <string>2.IBPluginDependency</string>
- <string>4.CustomClassName</string>
- <string>4.IBPluginDependency</string>
- <string>5.CustomClassName</string>
- <string>5.IBPluginDependency</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{746, 673}, {136, 62}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{746, 673}, {136, 62}}</string>
- <boolean value="NO"/>
- <string>{196, 240}</string>
- <string>{{357, 418}, {480, 270}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>GTMHotKeyTextField</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>GTMHotKeyTextFieldCell</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- </object>
- </object>
- <object class="NSMutableDictionary" key="unlocalizedProperties">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <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>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- </object>
- <nil key="sourceID"/>
- <int key="maxID">13</int>
- </object>
- <object class="IBClassDescriber" key="IBDocument.Classes">
- <object class="NSMutableArray" key="referencedPartialClassDescriptions">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBPartialClassDescription">
- <string key="className">GTMHotKeyTextField</string>
- <string key="superclassName">NSTextField</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="554256206">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMHotKeyTextField.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">GTMHotKeyTextFieldCell</string>
- <string key="superclassName">NSTextFieldCell</string>
- <reference key="sourceIdentifier" ref="554256206"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">GTMHotKeyTextFieldTestController</string>
- <string key="superclassName">NSWindowController</string>
- <object class="NSMutableDictionary" key="outlets">
- <string key="NS.key.0">view_</string>
- <string key="NS.object.0">GTMHotKeyTextField</string>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="690883007">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMHotKeyTextFieldTest.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">GTMHotKeyTextFieldTestControllerWindowDelegate</string>
- <string key="superclassName">NSObject</string>
- <reference key="sourceIdentifier" ref="690883007"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="837783357">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMAppKit+UnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMAppKitUnitTestingUtilities.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSCell</string>
- <reference key="sourceIdentifier" ref="837783357"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSControl</string>
- <reference key="sourceIdentifier" ref="837783357"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSMenu</string>
- <reference key="sourceIdentifier" ref="837783357"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMCarbonEvent.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMDelegatingTableColumn.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Foundation/GTMNSAppleEventDescriptor+Foundation.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Foundation/GTMNSObject+KeyValueObserving.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMCALayer+UnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMNSObject+BindingUnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMNSObject+UnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSTextField</string>
- <reference key="sourceIdentifier" ref="837783357"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="54851293">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMNSAnimatablePropertyContainer.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <reference key="sourceIdentifier" ref="837783357"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindow</string>
- <reference key="sourceIdentifier" ref="54851293"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindow</string>
- <reference key="sourceIdentifier" ref="837783357"/>
- </object>
- </object>
- </object>
- <int key="IBDocument.localizationMode">0</int>
- <string key="IBDocument.LastKnownRelativeProjectPath">../GTM.xcodeproj</string>
- <int key="IBDocument.defaultPropertyAccessControl">3</int>
- </data>
-</archive>
diff --git a/AppKit/GTMIBArrayTest.m b/AppKit/GTMIBArrayTest.m
index a21ea11..0af328e 100644
--- a/AppKit/GTMIBArrayTest.m
+++ b/AppKit/GTMIBArrayTest.m
@@ -58,16 +58,16 @@
- (void)testEmpty {
GTMIBArray *worker = [[[GTMIBArray alloc] init] autorelease];
- STAssertNotNil(worker, nil);
- STAssertEquals([worker count], (NSUInteger)0, nil);
+ XCTAssertNotNil(worker);
+ XCTAssertEqual([worker count], (NSUInteger)0);
worker = [[[IBArrayTestHelper alloc] initWithObj1:nil
obj2:nil
obj3:nil
obj4:nil
obj5:nil] autorelease];
- STAssertNotNil(worker, nil);
- STAssertEquals([worker count], (NSUInteger)0, nil);
+ XCTAssertNotNil(worker);
+ XCTAssertEqual([worker count], (NSUInteger)0);
}
- (void)testSparse {
@@ -103,17 +103,17 @@
obj3:data[i].obj3
obj4:data[i].obj4
obj5:data[i].obj5] autorelease];
- STAssertNotNil(worker, @"index %zu", i);
+ XCTAssertNotNil(worker, @"index %zu", i);
NSUInteger count = 0;
if (data[i].obj1) ++count;
if (data[i].obj2) ++count;
if (data[i].obj3) ++count;
if (data[i].obj4) ++count;
if (data[i].obj5) ++count;
- STAssertEquals([worker count], count, @"index %zu", i);
- STAssertEqualObjects([worker componentsJoinedByString:@""],
- data[i].combined,
- @"index %zu", i);
+ XCTAssertEqual([worker count], count, @"index %zu", i);
+ XCTAssertEqualObjects([worker componentsJoinedByString:@""],
+ data[i].combined,
+ @"index %zu", i);
}
}
@@ -184,11 +184,11 @@
for (size_t i = 0; i < sizeof(data) / sizeof(data[0]); ++i) {
NSArray *worker = data[i].ibArray;
- STAssertNotNil(worker, @"index %zu", i);
- STAssertEquals([worker count], data[i].count, @"index %zu", i);
- STAssertEqualObjects([worker componentsJoinedByString:@""],
- data[i].result,
- @"index %zu", i);
+ XCTAssertNotNil(worker, @"index %zu", i);
+ XCTAssertEqual([worker count], data[i].count, @"index %zu", i);
+ XCTAssertEqualObjects([worker componentsJoinedByString:@""],
+ data[i].result,
+ @"index %zu", i);
}
}
@@ -201,22 +201,22 @@
obj5:@"e"] autorelease];
NSEnumerator *enumerator = [worker objectEnumerator];
- STAssertNotNil(enumerator, nil);
- STAssertEqualObjects([enumerator nextObject], @"a", nil);
- STAssertEqualObjects([enumerator nextObject], @"b", nil);
- STAssertEqualObjects([enumerator nextObject], @"c", nil);
- STAssertEqualObjects([enumerator nextObject], @"d", nil);
- STAssertEqualObjects([enumerator nextObject], @"e", nil);
- STAssertNil([enumerator nextObject], nil);
+ XCTAssertNotNil(enumerator);
+ XCTAssertEqualObjects([enumerator nextObject], @"a");
+ XCTAssertEqualObjects([enumerator nextObject], @"b");
+ XCTAssertEqualObjects([enumerator nextObject], @"c");
+ XCTAssertEqualObjects([enumerator nextObject], @"d");
+ XCTAssertEqualObjects([enumerator nextObject], @"e");
+ XCTAssertNil([enumerator nextObject]);
enumerator = [worker reverseObjectEnumerator];
- STAssertNotNil(enumerator, nil);
- STAssertEqualObjects([enumerator nextObject], @"e", nil);
- STAssertEqualObjects([enumerator nextObject], @"d", nil);
- STAssertEqualObjects([enumerator nextObject], @"c", nil);
- STAssertEqualObjects([enumerator nextObject], @"b", nil);
- STAssertEqualObjects([enumerator nextObject], @"a", nil);
- STAssertNil([enumerator nextObject], nil);
+ XCTAssertNotNil(enumerator);
+ XCTAssertEqualObjects([enumerator nextObject], @"e");
+ XCTAssertEqualObjects([enumerator nextObject], @"d");
+ XCTAssertEqualObjects([enumerator nextObject], @"c");
+ XCTAssertEqualObjects([enumerator nextObject], @"b");
+ XCTAssertEqualObjects([enumerator nextObject], @"a");
+ XCTAssertNil([enumerator nextObject]);
}
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5
@@ -233,22 +233,22 @@
for (id obj in worker) {
switch (++idx) {
case 1:
- STAssertEqualObjects(obj, @"a", nil);
+ XCTAssertEqualObjects(obj, @"a");
break;
case 2:
- STAssertEqualObjects(obj, @"b", nil);
+ XCTAssertEqualObjects(obj, @"b");
break;
case 3:
- STAssertEqualObjects(obj, @"c", nil);
+ XCTAssertEqualObjects(obj, @"c");
break;
case 4:
- STAssertEqualObjects(obj, @"d", nil);
+ XCTAssertEqualObjects(obj, @"d");
break;
case 5:
- STAssertEqualObjects(obj, @"e", nil);
+ XCTAssertEqualObjects(obj, @"e");
break;
default:
- STFail(@"looping too many times: %zu", idx);
+ XCTFail(@"looping too many times: %ld", (unsigned long)idx);
break;
}
}
@@ -267,14 +267,14 @@
// Should get back a different object, but with the same contents.
NSArray *aCopy = [[worker copy] autorelease];
- STAssertNotEquals(aCopy, worker, nil);
- STAssertEqualObjects(aCopy, worker, nil);
+ XCTAssertNotEqual(aCopy, worker);
+ XCTAssertEqualObjects(aCopy, worker);
NSArray *aMutableCopy = [[worker mutableCopy] autorelease];
- STAssertNotEquals(aMutableCopy, worker, nil);
- STAssertNotEquals(aMutableCopy, aCopy, nil);
- STAssertEqualObjects(aMutableCopy, worker, nil);
- STAssertEqualObjects(aMutableCopy, aCopy, nil);
+ XCTAssertNotEqual(aMutableCopy, worker);
+ XCTAssertNotEqual(aMutableCopy, aCopy);
+ XCTAssertEqualObjects(aMutableCopy, worker);
+ XCTAssertEqualObjects(aMutableCopy, aCopy);
}
- (void)testFromNib {
@@ -282,24 +282,24 @@
[[[GTMIBArrayTestWindowController alloc]
initWithWindowNibName:@"GTMIBArrayTest"] autorelease];
NSWindow *window = [controller window];
- STAssertNotNil(window, nil);
+ XCTAssertNotNil(window);
NSArray *labels = [controller labelsArray];
NSArray *fields = [controller fieldsArray];
NSArray *everything = [controller everythingArray];
- STAssertNotNil(labels, nil);
- STAssertNotNil(fields, nil);
- STAssertNotNil(everything, nil);
+ XCTAssertNotNil(labels);
+ XCTAssertNotNil(fields);
+ XCTAssertNotNil(everything);
- STAssertEquals([labels count], (NSUInteger)3, nil);
- STAssertEquals([fields count], (NSUInteger)3, nil);
- STAssertEquals([everything count], (NSUInteger)8, nil);
+ XCTAssertEqual([labels count], (NSUInteger)3);
+ XCTAssertEqual([fields count], (NSUInteger)3);
+ XCTAssertEqual([everything count], (NSUInteger)8);
NSSet *labelsSet = [NSSet setWithArray:labels];
NSSet *fieldsSet = [NSSet setWithArray:fields];
NSSet *everythingSet = [NSSet setWithArray:everything];
- STAssertTrue([labelsSet isSubsetOfSet:everythingSet], nil);
- STAssertTrue([fieldsSet isSubsetOfSet:everythingSet], nil);
+ XCTAssertTrue([labelsSet isSubsetOfSet:everythingSet]);
+ XCTAssertTrue([fieldsSet isSubsetOfSet:everythingSet]);
}
- (void)testIsEqual {
@@ -316,19 +316,19 @@
obj4:@"i"
obj5:@"j"] autorelease];
- STAssertEquals([ibArray1 hash], [ibArray2 hash], nil);
- STAssertNotEqualObjects(ibArray1, ibArray2, nil);
+ XCTAssertEqual([ibArray1 hash], [ibArray2 hash]);
+ XCTAssertNotEqualObjects(ibArray1, ibArray2);
NSArray *ibArray1Prime = [[ibArray1 copy] autorelease];
NSArray *ibArray2Prime = [[ibArray2 copy] autorelease];
- STAssertTrue(ibArray1 != ibArray1Prime, nil);
- STAssertTrue(ibArray2 != ibArray2Prime, nil);
- STAssertNotEqualObjects(ibArray1Prime, ibArray2Prime, nil);
- STAssertEqualObjects(ibArray1, ibArray1Prime, nil);
- STAssertEqualObjects(ibArray2, ibArray2Prime, nil);
+ XCTAssertTrue(ibArray1 != ibArray1Prime);
+ XCTAssertTrue(ibArray2 != ibArray2Prime);
+ XCTAssertNotEqualObjects(ibArray1Prime, ibArray2Prime);
+ XCTAssertEqualObjects(ibArray1, ibArray1Prime);
+ XCTAssertEqualObjects(ibArray2, ibArray2Prime);
}
-
+
@end
@implementation GTMIBArrayTestWindowController
diff --git a/AppKit/GTMIBArrayTest.xib b/AppKit/GTMIBArrayTest.xib
index f348fec..34d69e5 100644
--- a/AppKit/GTMIBArrayTest.xib
+++ b/AppKit/GTMIBArrayTest.xib
@@ -1,807 +1,129 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.03">
- <data>
- <int key="IBDocument.SystemTarget">1050</int>
- <string key="IBDocument.SystemVersion">9L30</string>
- <string key="IBDocument.InterfaceBuilderVersion">677</string>
- <string key="IBDocument.AppKitVersion">949.54</string>
- <string key="IBDocument.HIToolboxVersion">353.00</string>
- <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.InterfaceBuilderKit</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- </object>
- <object class="NSMutableDictionary" key="IBDocument.Metadata">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <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="NSCustomObject" id="1001">
- <string key="NSClassName">GTMIBArrayTestWindowController</string>
- </object>
- <object class="NSCustomObject" id="1003">
- <string key="NSClassName">FirstResponder</string>
- </object>
- <object class="NSCustomObject" id="1004">
- <string key="NSClassName">NSApplication</string>
- </object>
- <object class="NSWindowTemplate" id="1005">
- <int key="NSWindowStyleMask">15</int>
- <int key="NSWindowBacking">2</int>
- <string key="NSWindowRect">{{71, 286}, {491, 166}}</string>
- <int key="NSWTFlags">536870912</int>
- <string key="NSWindowTitle">Window</string>
- <string key="NSWindowClass">NSWindow</string>
- <nil key="NSViewClass"/>
- <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
- <object class="NSView" key="NSWindowView" id="1006">
- <reference key="NSNextResponder"/>
- <int key="NSvFlags">256</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSTextField" id="32340604">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{17, 126}, {100, 17}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="1064530732">
- <int key="NSCellFlags">68288064</int>
- <int key="NSCellFlags2">71304192</int>
- <string key="NSContents">First Name:</string>
- <object class="NSFont" key="NSSupport" id="396891173">
- <string key="NSName">LucidaGrande</string>
- <double key="NSSize">1.300000e+01</double>
- <int key="NSfFlags">1044</int>
- </object>
- <reference key="NSControlView" ref="32340604"/>
- <object class="NSColor" key="NSBackgroundColor" id="584893825">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">controlColor</string>
- <object class="NSColor" key="NSColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC42NjY2NjY2OQA</bytes>
- </object>
- </object>
- <object class="NSColor" key="NSTextColor" id="215232119">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">controlTextColor</string>
- <object class="NSColor" key="NSColor" id="960820016">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MAA</bytes>
- </object>
- </object>
- </object>
- </object>
- <object class="NSTextField" id="499628444">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{17, 62}, {100, 17}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="200889835">
- <int key="NSCellFlags">68288064</int>
- <int key="NSCellFlags2">71304192</int>
- <string key="NSContents">Last Name:</string>
- <reference key="NSSupport" ref="396891173"/>
- <reference key="NSControlView" ref="499628444"/>
- <reference key="NSBackgroundColor" ref="584893825"/>
- <reference key="NSTextColor" ref="215232119"/>
- </object>
- </object>
- <object class="NSTextField" id="236725617">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{17, 94}, {100, 17}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="65808262">
- <int key="NSCellFlags">68288064</int>
- <int key="NSCellFlags2">71304192</int>
- <string key="NSContents">Middle Name:</string>
- <reference key="NSSupport" ref="396891173"/>
- <reference key="NSControlView" ref="236725617"/>
- <reference key="NSBackgroundColor" ref="584893825"/>
- <reference key="NSTextColor" ref="215232119"/>
- </object>
- </object>
- <object class="NSTextField" id="800844720">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">266</int>
- <string key="NSFrame">{{122, 92}, {349, 22}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="951606926">
- <int key="NSCellFlags">-1804468671</int>
- <int key="NSCellFlags2">272630784</int>
- <string key="NSContents"/>
- <reference key="NSSupport" ref="396891173"/>
- <reference key="NSControlView" ref="800844720"/>
- <bool key="NSDrawsBackground">YES</bool>
- <object class="NSColor" key="NSBackgroundColor" id="763520216">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">textBackgroundColor</string>
- <object class="NSColor" key="NSColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MQA</bytes>
- </object>
- </object>
- <object class="NSColor" key="NSTextColor" id="843269795">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">textColor</string>
- <reference key="NSColor" ref="960820016"/>
- </object>
- </object>
- </object>
- <object class="NSTextField" id="745022904">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">266</int>
- <string key="NSFrame">{{122, 60}, {349, 22}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="810828168">
- <int key="NSCellFlags">-1804468671</int>
- <int key="NSCellFlags2">272630784</int>
- <string key="NSContents"/>
- <reference key="NSSupport" ref="396891173"/>
- <reference key="NSControlView" ref="745022904"/>
- <bool key="NSDrawsBackground">YES</bool>
- <reference key="NSBackgroundColor" ref="763520216"/>
- <reference key="NSTextColor" ref="843269795"/>
- </object>
- </object>
- <object class="NSTextField" id="478979211">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">266</int>
- <string key="NSFrame">{{122, 124}, {349, 22}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="1044158630">
- <int key="NSCellFlags">-1804468671</int>
- <int key="NSCellFlags2">272630784</int>
- <string key="NSContents"/>
- <reference key="NSSupport" ref="396891173"/>
- <reference key="NSControlView" ref="478979211"/>
- <bool key="NSDrawsBackground">YES</bool>
- <reference key="NSBackgroundColor" ref="763520216"/>
- <reference key="NSTextColor" ref="843269795"/>
- </object>
- </object>
- <object class="NSButton" id="228116783">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">289</int>
- <string key="NSFrame">{{381, 12}, {96, 32}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="394822725">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">134217728</int>
- <string key="NSContents">OK</string>
- <reference key="NSSupport" ref="396891173"/>
- <reference key="NSControlView" ref="228116783"/>
- <int key="NSButtonFlags">-2038284033</int>
- <int key="NSButtonFlags2">129</int>
- <string key="NSAlternateContents"/>
- <string type="base64-UTF8" key="NSKeyEquivalent">DQ</string>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- <object class="NSButton" id="476526902">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">289</int>
- <string key="NSFrame">{{285, 12}, {96, 32}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="615815">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">134217728</int>
- <string key="NSContents">Cancel</string>
- <reference key="NSSupport" ref="396891173"/>
- <reference key="NSControlView" ref="476526902"/>
- <int key="NSButtonFlags">-2038284033</int>
- <int key="NSButtonFlags2">129</int>
- <string key="NSAlternateContents"/>
- <string type="base64-UTF8" key="NSKeyEquivalent">Gw</string>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- </object>
- <string key="NSFrameSize">{491, 166}</string>
- <reference key="NSSuperview"/>
- </object>
- <string key="NSScreenRect">{{0, 0}, {1920, 1178}}</string>
- <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
- </object>
- <object class="NSCustomObject" id="978135756">
- <string key="NSClassName">GTMIBArray</string>
- </object>
- <object class="NSCustomObject" id="202064574">
- <string key="NSClassName">GTMIBArray</string>
- </object>
- <object class="NSCustomObject" id="1042708171">
- <string key="NSClassName">GTMIBArray</string>
- </object>
- </object>
- <object class="IBObjectContainer" key="IBDocument.Objects">
- <object class="NSMutableArray" key="connectionRecords">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">window</string>
- <reference key="source" ref="1001"/>
- <reference key="destination" ref="1005"/>
- </object>
- <int key="connectionID">119</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">object1_</string>
- <reference key="source" ref="978135756"/>
- <reference key="destination" ref="32340604"/>
- </object>
- <int key="connectionID">125</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">object2_</string>
- <reference key="source" ref="978135756"/>
- <reference key="destination" ref="236725617"/>
- </object>
- <int key="connectionID">126</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">object3_</string>
- <reference key="source" ref="978135756"/>
- <reference key="destination" ref="499628444"/>
- </object>
- <int key="connectionID">127</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">labels_</string>
- <reference key="source" ref="1001"/>
- <reference key="destination" ref="978135756"/>
- </object>
- <int key="connectionID">128</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">object1_</string>
- <reference key="source" ref="202064574"/>
- <reference key="destination" ref="478979211"/>
- </object>
- <int key="connectionID">130</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">object2_</string>
- <reference key="source" ref="202064574"/>
- <reference key="destination" ref="800844720"/>
- </object>
- <int key="connectionID">131</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">object3_</string>
- <reference key="source" ref="202064574"/>
- <reference key="destination" ref="745022904"/>
- </object>
- <int key="connectionID">132</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">object1_</string>
- <reference key="source" ref="1042708171"/>
- <reference key="destination" ref="978135756"/>
- </object>
- <int key="connectionID">134</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">object2_</string>
- <reference key="source" ref="1042708171"/>
- <reference key="destination" ref="202064574"/>
- </object>
- <int key="connectionID">135</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">object3_</string>
- <reference key="source" ref="1042708171"/>
- <reference key="destination" ref="228116783"/>
- </object>
- <int key="connectionID">136</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">object4_</string>
- <reference key="source" ref="1042708171"/>
- <reference key="destination" ref="476526902"/>
- </object>
- <int key="connectionID">137</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">fields_</string>
- <reference key="source" ref="1001"/>
- <reference key="destination" ref="202064574"/>
- </object>
- <int key="connectionID">138</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">everything_</string>
- <reference key="source" ref="1001"/>
- <reference key="destination" ref="1042708171"/>
- </object>
- <int key="connectionID">139</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>
- <object class="NSArray" key="object" id="1002">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <reference key="children" ref="1000"/>
- <nil key="parent"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-2</int>
- <reference key="object" ref="1001"/>
- <reference key="parent" ref="1002"/>
- <string type="base64-UTF8" key="objectName">RmlsZSdzIE93bmVyA</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-1</int>
- <reference key="object" ref="1003"/>
- <reference key="parent" ref="1002"/>
- <string key="objectName">First Responder</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-3</int>
- <reference key="object" ref="1004"/>
- <reference key="parent" ref="1002"/>
- <string key="objectName">Application</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">1</int>
- <reference key="object" ref="1005"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1006"/>
- </object>
- <reference key="parent" ref="1002"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">2</int>
- <reference key="object" ref="1006"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="32340604"/>
- <reference ref="236725617"/>
- <reference ref="800844720"/>
- <reference ref="745022904"/>
- <reference ref="478979211"/>
- <reference ref="228116783"/>
- <reference ref="476526902"/>
- <reference ref="499628444"/>
- </object>
- <reference key="parent" ref="1005"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">5</int>
- <reference key="object" ref="32340604"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1064530732"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">6</int>
- <reference key="object" ref="1064530732"/>
- <reference key="parent" ref="32340604"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">9</int>
- <reference key="object" ref="499628444"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="200889835"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">10</int>
- <reference key="object" ref="200889835"/>
- <reference key="parent" ref="499628444"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">7</int>
- <reference key="object" ref="236725617"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="65808262"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">8</int>
- <reference key="object" ref="65808262"/>
- <reference key="parent" ref="236725617"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">13</int>
- <reference key="object" ref="800844720"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="951606926"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">14</int>
- <reference key="object" ref="951606926"/>
- <reference key="parent" ref="800844720"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">15</int>
- <reference key="object" ref="745022904"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="810828168"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">16</int>
- <reference key="object" ref="810828168"/>
- <reference key="parent" ref="745022904"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">11</int>
- <reference key="object" ref="478979211"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1044158630"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">12</int>
- <reference key="object" ref="1044158630"/>
- <reference key="parent" ref="478979211"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">120</int>
- <reference key="object" ref="228116783"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="394822725"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">121</int>
- <reference key="object" ref="394822725"/>
- <reference key="parent" ref="228116783"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">122</int>
- <reference key="object" ref="476526902"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="615815"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">123</int>
- <reference key="object" ref="615815"/>
- <reference key="parent" ref="476526902"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">124</int>
- <reference key="object" ref="978135756"/>
- <reference key="parent" ref="1002"/>
- <string key="objectName">Labels Array</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">129</int>
- <reference key="object" ref="202064574"/>
- <reference key="parent" ref="1002"/>
- <string key="objectName">Fields Array</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">133</int>
- <reference key="object" ref="1042708171"/>
- <reference key="parent" ref="1002"/>
- <string key="objectName">Everything Array</string>
- </object>
- </object>
- </object>
- <object class="NSMutableDictionary" key="flattenedProperties">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMutableArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>-1.IBPluginDependency</string>
- <string>-2.IBPluginDependency</string>
- <string>-3.IBPluginDependency</string>
- <string>1.IBEditorWindowLastContentRect</string>
- <string>1.IBPluginDependency</string>
- <string>1.IBWindowTemplateEditedContentRect</string>
- <string>1.NSWindowTemplate.visibleAtLaunch</string>
- <string>1.WindowOrigin</string>
- <string>1.editorWindowContentRectSynchronizationRect</string>
- <string>10.IBPluginDependency</string>
- <string>11.IBPluginDependency</string>
- <string>12.IBPluginDependency</string>
- <string>120.IBPluginDependency</string>
- <string>121.IBPluginDependency</string>
- <string>122.IBPluginDependency</string>
- <string>123.IBPluginDependency</string>
- <string>124.IBPluginDependency</string>
- <string>129.IBPluginDependency</string>
- <string>13.IBPluginDependency</string>
- <string>133.IBPluginDependency</string>
- <string>14.IBPluginDependency</string>
- <string>15.IBPluginDependency</string>
- <string>16.IBPluginDependency</string>
- <string>2.IBPluginDependency</string>
- <string>5.IBPluginDependency</string>
- <string>6.IBPluginDependency</string>
- <string>7.IBPluginDependency</string>
- <string>8.IBPluginDependency</string>
- <string>9.IBPluginDependency</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilderKit</string>
- <string>com.apple.InterfaceBuilderKit</string>
- <string>{{636, 990}, {491, 166}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{636, 990}, {491, 166}}</string>
- <boolean value="NO"/>
- <string>{196, 240}</string>
- <string>{{202, 428}, {480, 270}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- </object>
- </object>
- <object class="NSMutableDictionary" key="unlocalizedProperties">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <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>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- </object>
- <nil key="sourceID"/>
- <int key="maxID">140</int>
- </object>
- <object class="IBClassDescriber" key="IBDocument.Classes">
- <object class="NSMutableArray" key="referencedPartialClassDescriptions">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBPartialClassDescription">
- <string key="className">GTMIBArray</string>
- <string key="superclassName">NSArray</string>
- <object class="NSMutableDictionary" key="outlets">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMutableArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>object1_</string>
- <string>object2_</string>
- <string>object3_</string>
- <string>object4_</string>
- <string>object5_</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>id</string>
- <string>id</string>
- <string>id</string>
- <string>id</string>
- <string>id</string>
- </object>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Foundation/GTMIBArray.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">GTMIBArrayTestWindowController</string>
- <string key="superclassName">NSWindowController</string>
- <object class="NSMutableDictionary" key="outlets">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMutableArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>everything_</string>
- <string>fields_</string>
- <string>labels_</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>NSArray</string>
- <string>NSArray</string>
- <string>NSArray</string>
- </object>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Foundation/GTMIBArrayTest.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="925048441">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMAppKit+UnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSArray</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Foundation/GTMLogger.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSArray</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Foundation/GTMNSArray+Merge.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSButton</string>
- <reference key="sourceIdentifier" ref="925048441"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSCell</string>
- <reference key="sourceIdentifier" ref="925048441"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSControl</string>
- <reference key="sourceIdentifier" ref="925048441"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSMenu</string>
- <reference key="sourceIdentifier" ref="925048441"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMCarbonEvent.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMDelegatingTableColumn.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Foundation/GTMHTTPServer.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Foundation/GTMNSAppleEventDescriptor+Foundation.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Foundation/GTMNSObject+KeyValueObserving.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMCALayer+UnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMNSObject+BindingUnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMNSObject+UnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSTextField</string>
- <reference key="sourceIdentifier" ref="925048441"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="39542122">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMTheme.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <reference key="sourceIdentifier" ref="925048441"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindow</string>
- <reference key="sourceIdentifier" ref="39542122"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindow</string>
- <reference key="sourceIdentifier" ref="925048441"/>
- </object>
- </object>
- </object>
- <int key="IBDocument.localizationMode">0</int>
- <string key="IBDocument.LastKnownRelativeProjectPath">../GTM.xcodeproj</string>
- <int key="IBDocument.defaultPropertyAccessControl">3</int>
- </data>
-</archive>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="11201" systemVersion="15G1004" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
+ <dependencies>
+ <deployment identifier="macosx"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11201"/>
+ </dependencies>
+ <objects>
+ <customObject id="-2" userLabel="File's Owner" customClass="GTMIBArrayTestWindowController">
+ <connections>
+ <outlet property="everything_" destination="133" id="139"/>
+ <outlet property="fields_" destination="129" id="138"/>
+ <outlet property="labels_" destination="124" id="128"/>
+ <outlet property="window" destination="1" id="119"/>
+ </connections>
+ </customObject>
+ <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+ <customObject id="-3" userLabel="Application"/>
+ <window title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" oneShot="NO" visibleAtLaunch="NO" animationBehavior="default" id="1">
+ <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
+ <windowPositionMask key="initialPositionMask" leftStrut="YES" bottomStrut="YES"/>
+ <rect key="contentRect" x="71" y="286" width="491" height="166"/>
+ <rect key="screenRect" x="0.0" y="0.0" width="1920" height="1178"/>
+ <view key="contentView" id="2">
+ <rect key="frame" x="0.0" y="0.0" width="491" height="166"/>
+ <autoresizingMask key="autoresizingMask"/>
+ <subviews>
+ <textField verticalHuggingPriority="750" id="5">
+ <rect key="frame" x="17" y="126" width="100" height="17"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="First Name:" id="6">
+ <font key="font" metaFont="system"/>
+ <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ </textField>
+ <textField verticalHuggingPriority="750" id="9">
+ <rect key="frame" x="17" y="62" width="100" height="17"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Last Name:" id="10">
+ <font key="font" metaFont="system"/>
+ <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ </textField>
+ <textField verticalHuggingPriority="750" id="7">
+ <rect key="frame" x="17" y="94" width="100" height="17"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Middle Name:" id="8">
+ <font key="font" metaFont="system"/>
+ <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ </textField>
+ <textField verticalHuggingPriority="750" id="13">
+ <rect key="frame" x="122" y="92" width="349" height="22"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
+ <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="14">
+ <font key="font" metaFont="system"/>
+ <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ </textField>
+ <textField verticalHuggingPriority="750" id="15">
+ <rect key="frame" x="122" y="60" width="349" height="22"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
+ <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="16">
+ <font key="font" metaFont="system"/>
+ <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ </textField>
+ <textField verticalHuggingPriority="750" id="11">
+ <rect key="frame" x="122" y="124" width="349" height="22"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
+ <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="12">
+ <font key="font" metaFont="system"/>
+ <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ </textField>
+ <button verticalHuggingPriority="750" id="120">
+ <rect key="frame" x="381" y="12" width="96" height="32"/>
+ <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
+ <buttonCell key="cell" type="push" title="OK" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="121">
+ <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+ <font key="font" metaFont="system"/>
+ <string key="keyEquivalent" base64-UTF8="YES">
+DQ
+</string>
+ </buttonCell>
+ </button>
+ <button verticalHuggingPriority="750" id="122">
+ <rect key="frame" x="285" y="12" width="96" height="32"/>
+ <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
+ <buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="123">
+ <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+ <font key="font" metaFont="system"/>
+ <string key="keyEquivalent" base64-UTF8="YES">
+Gw
+</string>
+ </buttonCell>
+ </button>
+ </subviews>
+ </view>
+ </window>
+ <customObject id="124" userLabel="Labels Array" customClass="GTMIBArray">
+ <connections>
+ <outlet property="object1_" destination="5" id="125"/>
+ <outlet property="object2_" destination="7" id="126"/>
+ <outlet property="object3_" destination="9" id="127"/>
+ </connections>
+ </customObject>
+ <customObject id="129" userLabel="Fields Array" customClass="GTMIBArray">
+ <connections>
+ <outlet property="object1_" destination="11" id="130"/>
+ <outlet property="object2_" destination="13" id="131"/>
+ <outlet property="object3_" destination="15" id="132"/>
+ </connections>
+ </customObject>
+ <customObject id="133" userLabel="Everything Array" customClass="GTMIBArray">
+ <connections>
+ <outlet property="object1_" destination="124" id="134"/>
+ <outlet property="object2_" destination="129" id="135"/>
+ <outlet property="object3_" destination="120" id="136"/>
+ <outlet property="object4_" destination="122" id="137"/>
+ </connections>
+ </customObject>
+ </objects>
+</document>
diff --git a/AppKit/GTMKeyValueAnimationTest.m b/AppKit/GTMKeyValueAnimationTest.m
index 6b878df..aef262b 100644
--- a/AppKit/GTMKeyValueAnimationTest.m
+++ b/AppKit/GTMKeyValueAnimationTest.m
@@ -39,8 +39,8 @@
context_ = [GTMUnitTestingBooleanRunLoopContext context];
[[NSRunLoop currentRunLoop] gtm_runUpToSixtySecondsWithContext:context_];
[anim stopAnimation];
- STAssertTrue([context_ shouldStop], @"Animation value never got set");
- STAssertTrue(shouldStartHit_, @"animationShouldStart not called");
+ XCTAssertTrue([context_ shouldStop], @"Animation value never got set");
+ XCTAssertTrue(shouldStartHit_, @"animationShouldStart not called");
}
- (BOOL)animationShouldStart:(NSAnimation*)animation {
diff --git a/AppKit/GTMLargeTypeWindow.h b/AppKit/GTMLargeTypeWindow.h
deleted file mode 100644
index 2b66a93..0000000
--- a/AppKit/GTMLargeTypeWindow.h
+++ /dev/null
@@ -1,70 +0,0 @@
-//
-// GTMLargeTypeWindow.h
-//
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import <Cocoa/Cocoa.h>
-
-// GTMLargeTypeWindow displays a block of text in a large panel window much
-// like Address Book displays phone numbers. It will also display an image
-// so you can pop up "alerts" similar to the way BBEdit does when you attempt
-// to do a find and find nothing. It will fade in and out appropriately when
-// ordered forward or backward.
-// A typical fire-and-forget type usage would be:
-// GTMLargeTypeWindow *window
-// = [[[GTMLargeTypeWindow alloc] initWithString:@"Foo"] autorelease];
-// [window makeKeyAndOrderFront:nil];
-
-// NB This class appears to have a problem with GC on 10.5.6 and below.
-// Radar 6137322 CIFilter crashing when run with GC enabled
-// This appears to be an Apple bug with GC.
-// We do a copy animation that causes things to crash, but only with GC
-// on. Currently I have left this enabled in GTMLargeTypeWindow pending
-// info from Apple on the bug. It's hard to reproduce, and only appears
-// at this time on our test machines.
-// Dual-Core Intel Xeon with ATI Radeon X1300
-
-@interface GTMLargeTypeWindow : NSPanel
-
-// Setter and getter for the copy animation duration. Default value is .5s.
-// Note that this affects all windows.
-+ (NSTimeInterval)copyAnimationDuration;
-+ (void)setCopyAnimationDuration:(NSTimeInterval)duration;
-
-// Setter and getter for the fade animation duration. Default value is .3s.
-// Note that this affects all windows.
-+ (NSTimeInterval)fadeAnimationDuration;
-+ (void)setFadeAnimationDuration:(NSTimeInterval)duration;
-
-// Creates a display window with |string| displayed.
-// Formats |string| as best as possible to fill the screen.
-- (id)initWithString:(NSString *)string;
-// Creates a display window with |attrString| displayed.
-// Expects you to format it as you want it to appear.
-- (id)initWithAttributedString:(NSAttributedString *)attrString;
-// Creates a display window with |image| displayed.
-// Make sure you set the image size to what you want
-- (id)initWithImage:(NSImage*)image;
-// Creates a display window with |view| displayed.
-- (id)initWithContentView:(NSView *)view;
-
-// Copy the text out of the window if appropriate. This is normally called
-// as part of the responder chain so that the user can copy the displayed text
-// using cmd-c.
-- (void)copy:(id)sender;
-
-
-@end
diff --git a/AppKit/GTMLargeTypeWindow.m b/AppKit/GTMLargeTypeWindow.m
deleted file mode 100644
index ab5cfec..0000000
--- a/AppKit/GTMLargeTypeWindow.m
+++ /dev/null
@@ -1,412 +0,0 @@
-//
-// GTMLargeTypeWindow.m
-//
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import <QuartzCore/QuartzCore.h>
-
-#import "GTMLargeTypeWindow.h"
-#import "GTMGeometryUtils.h"
-#import "GTMNSBezierPath+RoundRect.h"
-#import "GTMMethodCheck.h"
-#import "GTMTypeCasting.h"
-
-// How far to inset the text from the edge of the window
-static const CGFloat kEdgeInset = 16.0;
-
-// Give us an alpha value for our backing window
-static const CGFloat kTwoThirdsAlpha = 0.66;
-
-// Amount of time to do copy animations
-static NSTimeInterval gGTMLargeTypeWindowCopyAnimationDuration = 0.5;
-
-// Amount of time to do fade animations
-static NSTimeInterval gGTMLargeTypeWindowFadeAnimationDuration = 0.333;
-
-@interface GTMLargeTypeCopyAnimation : NSAnimation {
- @private
- NSView *view_;
-}
-- (id)initWithView:(NSView *)view
- duration:(NSTimeInterval)duration
- animationCurve:(NSAnimationCurve)animationCurve;
-@end
-
-@interface GTMLargeTypeBackgroundView : NSView <NSAnimationDelegate> {
- CIFilter *transition_;
- GTMLargeTypeCopyAnimation *animation_;
-}
-- (void)animateCopyWithDuration:(NSTimeInterval)duration;
-@end
-
-@interface GTMLargeTypeWindow (GTMLargeTypeWindowPrivate)
-+ (CGSize)displaySize;
-- (void)animateWithEffect:(NSString*)effect;
-@end
-
-@implementation GTMLargeTypeWindow
-
-- (id)initWithString:(NSString *)string {
- if ([string length] == 0) {
- _GTMDevLog(@"GTMLargeTypeWindow got an empty string");
- [self release];
- return nil;
- }
- CGSize displaySize = [[self class] displaySize];
- NSMutableAttributedString *attrString
- = [[[NSMutableAttributedString alloc] initWithString:string] autorelease];
-
- NSRange fullRange = NSMakeRange(0, [string length]);
- [attrString addAttribute:NSForegroundColorAttributeName
- value:[NSColor whiteColor]
- range:fullRange];
-
- NSMutableParagraphStyle *style
- = [[[NSParagraphStyle defaultParagraphStyle] mutableCopy] autorelease];
- [style setAlignment:NSCenterTextAlignment];
- [attrString addAttribute:NSParagraphStyleAttributeName
- value:style
- range:fullRange];
-
- NSShadow *textShadow = [[[NSShadow alloc] init] autorelease];
- [textShadow setShadowOffset:NSMakeSize( 5, -5 )];
- [textShadow setShadowBlurRadius:10];
- [textShadow setShadowColor:[NSColor colorWithCalibratedWhite:0
- alpha:kTwoThirdsAlpha]];
- [attrString addAttribute:NSShadowAttributeName
- value:textShadow
- range:fullRange];
-
- // Try and find a size that fits without iterating too many times.
- // We start going 50 pixels at a time, then 10, then 1
- int size = -26; // start at 24 (-26 + 50)
- int offsets[] = { 50, 10, 1 };
- for (size_t i = 0; i < sizeof(offsets) / sizeof(int); ++i) {
- for(size = size + offsets[i]; size >= 24 && size < 300; size += offsets[i]) {
- NSFont *font = [NSFont boldSystemFontOfSize:size] ;
- [attrString addAttribute:NSFontAttributeName
- value:font
- range:fullRange];
- NSSize textSize = [attrString size];
- NSSize maxAdvanceSize = [font maximumAdvancement];
- if (textSize.width + maxAdvanceSize.width > displaySize.width ||
- textSize.height > displaySize.height) {
- size = size - offsets[i];
- break;
- }
- }
- }
-
- // Bounds check our values
- if (size > 300) {
- size = 300;
- } else if (size < 24) {
- size = 24;
- }
- [attrString addAttribute:NSFontAttributeName
- value:[NSFont boldSystemFontOfSize:size]
- range:fullRange];
- return [self initWithAttributedString:attrString];
-}
-
-- (id)initWithAttributedString:(NSAttributedString *)attrString {
- if ([attrString length] == 0) {
- _GTMDevLog(@"GTMLargeTypeWindow got an empty string");
- [self release];
- return nil;
- }
- CGSize displaySize = [[self class] displaySize];
- NSRect frame = NSMakeRect(0, 0, displaySize.width, 0);
- NSTextView *textView = [[[NSTextView alloc] initWithFrame:frame] autorelease];
- [textView setEditable:NO];
- [textView setSelectable:NO];
- [textView setDrawsBackground:NO];
- [[textView textStorage] setAttributedString:attrString];
- [textView sizeToFit];
-
- return [self initWithContentView:textView];
-}
-
-- (id)initWithImage:(NSImage*)image {
- if (!image) {
- _GTMDevLog(@"GTMLargeTypeWindow got an empty image");
- [self release];
- return nil;
- }
- NSRect rect = GTMNSRectOfSize([image size]);
- NSImageView *imageView
- = [[[NSImageView alloc] initWithFrame:rect] autorelease];
- [imageView setImage:image];
- return [self initWithContentView:imageView];
-}
-
-- (id)initWithContentView:(NSView *)view {
- NSRect bounds = NSZeroRect;
- if (view) {
- bounds = [view bounds];
- }
- if (!view || bounds.size.height <= 0 || bounds.size.width <= 0) {
- _GTMDevLog(@"GTMLargeTypeWindow got an empty view");
- [self release];
- return nil;
- }
- NSRect screenRect = [[NSScreen mainScreen] frame];
- NSRect windowRect = GTMNSAlignRectangles([view frame],
- screenRect,
- GTMRectAlignCenter);
- windowRect = NSInsetRect(windowRect, -kEdgeInset, -kEdgeInset);
- windowRect = NSIntegralRect(windowRect);
- NSUInteger mask = NSBorderlessWindowMask | NSNonactivatingPanelMask;
- self = [super initWithContentRect:windowRect
- styleMask:mask
- backing:NSBackingStoreBuffered
- defer:NO];
- if (self) {
- [self setFrame:GTMNSAlignRectangles(windowRect,
- screenRect,
- GTMRectAlignCenter)
- display:YES];
- [self setBackgroundColor:[NSColor clearColor]];
- [self setOpaque:NO];
- [self setLevel:NSFloatingWindowLevel];
- [self setHidesOnDeactivate:NO];
-
- GTMLargeTypeBackgroundView *content
- = [[[GTMLargeTypeBackgroundView alloc] initWithFrame:NSZeroRect]
- autorelease];
- [self setHasShadow:YES];
- [self setContentView:content];
- [self setAlphaValue:0];
- [self setIgnoresMouseEvents:YES];
- [view setFrame:GTMNSAlignRectangles([view frame],
- [content frame],
- GTMRectAlignCenter)];
- [content addSubview:view];
- [content setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable];
- [self setInitialFirstResponder:view];
- }
- return self;
-}
-
-+ (NSTimeInterval)copyAnimationDuration {
- return gGTMLargeTypeWindowCopyAnimationDuration;
-}
-
-+ (void)setCopyAnimationDuration:(NSTimeInterval)duration {
- gGTMLargeTypeWindowCopyAnimationDuration = duration;
-}
-
-+ (NSTimeInterval)fadeAnimationDuration {
- return gGTMLargeTypeWindowFadeAnimationDuration;
-}
-
-+ (void)setFadeAnimationDuration:(NSTimeInterval)duration {
- gGTMLargeTypeWindowFadeAnimationDuration = duration;
-}
-
-- (void)copy:(id)sender {
- id firstResponder = [self initialFirstResponder];
- if ([firstResponder respondsToSelector:@selector(textStorage)]) {
- NSPasteboard *pb = [NSPasteboard generalPasteboard];
- [pb declareTypes:[NSArray arrayWithObject:NSStringPboardType] owner:self];
- [pb setString:[[firstResponder textStorage] string]
- forType:NSStringPboardType];
- }
-
- // Give the user some feedback that a copy has occurred
- NSTimeInterval dur = [[self class] copyAnimationDuration];
- GTMLargeTypeBackgroundView *view
- = GTM_STATIC_CAST(GTMLargeTypeBackgroundView, [self contentView]);
- [view animateCopyWithDuration:dur];
-}
-
-- (BOOL)canBecomeKeyWindow {
- return YES;
-}
-
-- (BOOL)performKeyEquivalent:(NSEvent *)theEvent {
- NSString *chars = [theEvent charactersIgnoringModifiers];
- NSUInteger flags = ([theEvent modifierFlags] &
- NSDeviceIndependentModifierFlagsMask);
- BOOL isValid = (flags == NSCommandKeyMask) && [chars isEqualToString:@"c"];
- if (isValid) {
- [self copy:self];
- }
- return isValid;
-}
-
-- (void)keyDown:(NSEvent *)theEvent {
- [self close];
-}
-
-- (void)resignKeyWindow {
- [super resignKeyWindow];
- if([self isVisible]) {
- [self close];
- }
-}
-
-- (void)makeKeyAndOrderFront:(id)sender {
- [super makeKeyAndOrderFront:sender];
- [self animateWithEffect:NSViewAnimationFadeInEffect];
-}
-
-- (void)orderFront:(id)sender {
- [super orderFront:sender];
- [self animateWithEffect:NSViewAnimationFadeInEffect];
-}
-
-- (void)orderOut:(id)sender {
- [self animateWithEffect:NSViewAnimationFadeOutEffect];
- [super orderOut:sender];
-}
-
-+ (CGSize)displaySize {
- NSRect screenRect = [[NSScreen mainScreen] frame];
- // This is just a rough calculation to make us fill a good proportion
- // of the main screen.
- CGFloat width = (NSWidth(screenRect) * 11.0 / 12.0) - (2.0 * kEdgeInset);
- CGFloat height = (NSHeight(screenRect) * 11.0 / 12.0) - (2.0 * kEdgeInset);
- return CGSizeMake(width, height);
-}
-
-- (void)animateWithEffect:(NSString*)effect {
- NSDictionary *fadeIn = [NSDictionary dictionaryWithObjectsAndKeys:
- self, NSViewAnimationTargetKey,
- effect, NSViewAnimationEffectKey,
- nil];
- NSArray *animation = [NSArray arrayWithObject:fadeIn];
- NSViewAnimation *viewAnim
- = [[[NSViewAnimation alloc] initWithViewAnimations:animation] autorelease];
- [viewAnim setDuration:[[self class] fadeAnimationDuration]];
- [viewAnim setAnimationBlockingMode:NSAnimationBlocking];
- [viewAnim startAnimation];
-}
-
-@end
-
-@implementation GTMLargeTypeBackgroundView
-GTM_METHOD_CHECK(NSBezierPath, gtm_appendBezierPathWithRoundRect:cornerRadius:);
-
-- (void)dealloc {
- // If we get released while animating, we'd better clean up.
- [animation_ stopAnimation];
- [animation_ release];
- [transition_ release];
- [super dealloc];
-}
-
-- (BOOL)isOpaque {
- return NO;
-}
-
-- (void)drawRect:(NSRect)rect {
- rect = [self bounds];
- NSBezierPath *roundRect = [NSBezierPath bezierPath];
- CGFloat minRadius = MIN(NSWidth(rect), NSHeight(rect)) * 0.5f;
-
- [roundRect gtm_appendBezierPathWithRoundRect:rect
- cornerRadius:MIN(minRadius, 32)];
- [roundRect addClip];
- if (transition_) {
- NSNumber *val = [NSNumber numberWithFloat:[animation_ currentValue]];
- [transition_ setValue:val forKey:@"inputTime"];
- CIImage *outputCIImage = [transition_ valueForKey:@"outputImage"];
- [outputCIImage drawInRect:rect
- fromRect:rect
- operation:NSCompositeSourceOver
- fraction:1.0];
- } else {
- [[NSColor colorWithDeviceWhite:0 alpha:kTwoThirdsAlpha] set];
-
- NSRectFill(rect);
- }
-}
-
-- (void)animateCopyWithDuration:(NSTimeInterval)duration {
- // This does a photocopy swipe to show folks that their copy has succceeded
- // Store off a copy of our background
- NSRect bounds = [self bounds];
- NSBitmapImageRep *rep = [self bitmapImageRepForCachingDisplayInRect:bounds];
- NSGraphicsContext *context = [NSGraphicsContext graphicsContextWithBitmapImageRep:rep];
- [NSGraphicsContext saveGraphicsState];
- [NSGraphicsContext setCurrentContext:context];
- [self drawRect:bounds];
- [NSGraphicsContext restoreGraphicsState];
- CIVector *extent = [CIVector vectorWithX:bounds.origin.x
- Y:bounds.origin.y
- Z:bounds.size.width
- W:bounds.size.height];
- CIFilter *transition = [CIFilter filterWithName:@"CICopyMachineTransition"];
- [transition setDefaults];
- [transition setValue:extent
- forKey:@"inputExtent"];
- CIImage *image = [[CIImage alloc] initWithBitmapImageRep:rep];
-
- [transition setValue:image forKey:@"inputImage"];
- [transition setValue:image forKey:@"inputTargetImage"];
- [transition setValue:[NSNumber numberWithInt:0]
- forKey:@"inputTime"];
- [transition valueForKey:@"outputImage"];
- [image release];
- transition_ = [transition retain];
- animation_ = [[GTMLargeTypeCopyAnimation alloc] initWithView:self
- duration:duration
- animationCurve:NSAnimationLinear];
- [animation_ setFrameRate:0.0f];
- [animation_ setDelegate:self];
- [animation_ setAnimationBlockingMode:NSAnimationBlocking];
- [animation_ startAnimation];
-}
-
-- (void)animationDidEnd:(NSAnimation*)animation {
- [animation_ release];
- animation_ = nil;
- [transition_ release];
- transition_ = nil;
- [self display];
-}
-
-- (float)animation:(NSAnimation*)animation
- valueForProgress:(NSAnimationProgress)progress {
- // This gives us half the copy animation, so we don't swing back
- // Don't want too much gratuitous effect
- // 0.6 is required by experimentation. 0.5 doesn't do it
- return progress * 0.6f;
-}
-@end
-
-@implementation GTMLargeTypeCopyAnimation
-- (id)initWithView:(NSView *)view
- duration:(NSTimeInterval)duration
- animationCurve:(NSAnimationCurve)animationCurve {
- if ((self = [super initWithDuration:duration
- animationCurve:animationCurve])) {
- view_ = [view retain];
- }
- return self;
-}
-
-- (void)dealloc {
- [view_ release];
- [super dealloc];
-}
-
-- (void)setCurrentProgress:(NSAnimationProgress)progress {
- [super setCurrentProgress:progress];
- [view_ display];
-}
-@end
diff --git a/AppKit/GTMLargeTypeWindowTest.m b/AppKit/GTMLargeTypeWindowTest.m
deleted file mode 100644
index a60c791..0000000
--- a/AppKit/GTMLargeTypeWindowTest.m
+++ /dev/null
@@ -1,194 +0,0 @@
-//
-// GTMLargeTypeWindowTest.m
-//
-// Copyright 2006-2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMSenTestCase.h"
-#import "GTMLargeTypeWindow.h"
-#import "GTMNSObject+UnitTesting.h"
-#import "GTMUnitTestDevLog.h"
-#import "GTMSystemVersion.h"
-
-NSString *const kLongTextBlock =
- @"`Twas brillig, and the slithy toves "
- "Did gyre and gimble in the wabe: "
- "all mimsy were the borogoves, "
- "and the mome raths outgrabe. "
- "Beware the Jabberwock, my son! "
- "The jaws that bite, the claws that catch! "
- "Beware the Jubjub bird, and shun "
- "the frumious Bandersnatch! "
- "He took his vorpal sword in hand: "
- "long time the manxome foe he sought -- "
- "so rested he by the Tumtum tree, "
- "and stood awhile in thought. "
- "And, as in uffish thought he stood, "
- "the Jabberwock, with eyes of flame, "
- "came whiffling through the tulgey wood, "
- "and burbled as it came! "
- "One, two! One, two! And through and through "
- "the vorpal blade went snicker-snack! "
- "He left it dead, and with its head "
- "he went galumphing back. "
- "And, has thou slain the Jabberwock? "
- "Come to my arms, my beamish boy! "
- "O frabjous day! Callooh! Callay! "
- "He chortled in his joy.";
-
-NSString *const kMediumTextBlock = @"For the Snark was a Boojum, you see.";
-
-NSString *const kShortTextBlock = @"Short";
-
-@interface GTMLargeTypeWindowTest : GTMTestCase
-@end
-
-@implementation GTMLargeTypeWindowTest
-- (BOOL)shouldDoAnimateCopy {
- // This method previously checked for incompatibilities with garbage collection.
- return YES;
-}
-
-- (void)setUp {
- [GTMLargeTypeWindow setCopyAnimationDuration:0];
- [GTMLargeTypeWindow setFadeAnimationDuration:0];
-}
-
-- (void)tearDown {
- [GTMLargeTypeWindow setCopyAnimationDuration:0.5];
- [GTMLargeTypeWindow setFadeAnimationDuration:0.333];
-}
-
-- (void)testLargeTypeWindowIllegalInits {
- [GTMUnitTestDevLog expectString:@"GTMLargeTypeWindow got an empty string"];
- GTMLargeTypeWindow *window = [[[GTMLargeTypeWindow alloc]
- initWithString:@""] autorelease];
- STAssertNil(window, nil);
-
- [GTMUnitTestDevLog expectString:@"GTMLargeTypeWindow got an empty string"];
- window = [[[GTMLargeTypeWindow alloc] initWithString:nil] autorelease];
- STAssertNil(window, nil);
-
- [GTMUnitTestDevLog expectString:@"GTMLargeTypeWindow got an empty string"];
- NSAttributedString *attrString = [[[NSAttributedString alloc]
- initWithString:@""] autorelease];
- window = [[[GTMLargeTypeWindow alloc]
- initWithAttributedString:attrString] autorelease];
- STAssertNil(window, nil);
-
- [GTMUnitTestDevLog expectString:@"GTMLargeTypeWindow got an empty string"];
- window = [[[GTMLargeTypeWindow alloc]
- initWithAttributedString:nil] autorelease];
- STAssertNil(window, nil);
-
- [GTMUnitTestDevLog expectString:@"GTMLargeTypeWindow got an empty view"];
- window = [[[GTMLargeTypeWindow alloc] initWithContentView:nil] autorelease];
- STAssertNil(window, nil);
-
- [GTMUnitTestDevLog expectString:@"GTMLargeTypeWindow got an empty image"];
- window = [[[GTMLargeTypeWindow alloc] initWithImage:nil] autorelease];
- STAssertNil(window, nil);
-}
-
-- (void)testLargeTypeWindowMediumText {
- GTMLargeTypeWindow *window = [[[GTMLargeTypeWindow alloc]
- initWithString:kMediumTextBlock] autorelease];
- STAssertNotNil(window, nil);
- STAssertTrue([window canBecomeKeyWindow], nil);
- [window makeKeyAndOrderFront:nil];
- NSDate *endDate
- = [NSDate dateWithTimeIntervalSinceNow:.1];
- [[NSRunLoop currentRunLoop] runUntilDate:endDate];
- GTMAssertObjectStateEqualToStateNamed(window,
- @"GTMLargeTypeWindowMediumTextTest",
- nil);
- if ([self shouldDoAnimateCopy]) {
- [window copy:nil];
- NSPasteboard *pb = [NSPasteboard generalPasteboard];
- NSString *pbString = [pb stringForType:NSStringPboardType];
- STAssertEqualObjects(pbString, kMediumTextBlock, nil);
- }
- [window keyDown:nil];
-}
-
-- (void)testLargeTypeWindowShortText {
- GTMLargeTypeWindow *window = [[[GTMLargeTypeWindow alloc]
- initWithString:kShortTextBlock] autorelease];
- STAssertNotNil(window, nil);
- STAssertTrue([window canBecomeKeyWindow], nil);
- [window makeKeyAndOrderFront:nil];
- NSDate *endDate
- = [NSDate dateWithTimeIntervalSinceNow:.1];
- [[NSRunLoop currentRunLoop] runUntilDate:endDate];
- GTMAssertObjectStateEqualToStateNamed(window,
- @"GTMLargeTypeWindowShortTextTest",
- nil);
- if ([self shouldDoAnimateCopy]) {
- [window copy:nil];
- NSPasteboard *pb = [NSPasteboard generalPasteboard];
- NSString *pbString = [pb stringForType:NSStringPboardType];
- STAssertEqualObjects(pbString, kShortTextBlock, nil);
- }
- [window resignKeyWindow];
-}
-
-- (void)testLargeTypeWindowLongText {
- GTMLargeTypeWindow *window = [[[GTMLargeTypeWindow alloc]
- initWithString:kLongTextBlock] autorelease];
- STAssertNotNil(window, nil);
- [window orderFront:nil];
- NSDate *endDate
- = [NSDate dateWithTimeIntervalSinceNow:.1];
- [[NSRunLoop currentRunLoop] runUntilDate:endDate];
- // Can't do state for long text as it will wrap differently on different
- // sized screens.
- GTMAssertObjectStateEqualToStateNamed(window,
- @"GTMLargeTypeWindowLongTextTest",
- nil);
- if ([self shouldDoAnimateCopy]) {
- [window copy:nil];
- NSPasteboard *pb = [NSPasteboard generalPasteboard];
- NSString *pbString = [pb stringForType:NSStringPboardType];
- STAssertEqualObjects(pbString, kLongTextBlock, nil);
- }
- [window keyDown:nil];
-}
-
-- (void)testLargeTypeWindowImageText {
- NSImage *image = [NSApp applicationIconImage];
- GTMLargeTypeWindow *window = [[[GTMLargeTypeWindow alloc]
- initWithImage:image] autorelease];
- STAssertNotNil(window, nil);
- [window makeKeyAndOrderFront:nil];
- NSDate *endDate
- = [NSDate dateWithTimeIntervalSinceNow:.1];
- [[NSRunLoop currentRunLoop] runUntilDate:endDate];
- GTMAssertObjectStateEqualToStateNamed(window,
- @"GTMLargeTypeWindowImageTest",
- nil);
- NSString *testString = @"TestString";
- NSPasteboard *pb = [NSPasteboard generalPasteboard];
- [pb declareTypes:[NSArray arrayWithObject:NSStringPboardType] owner:self];
- [pb setString:testString forType:NSStringPboardType];
- if ([self shouldDoAnimateCopy]) {
- [window copy:nil];
- // Pasteboard should not change for an image
- NSString *pbString = [pb stringForType:NSStringPboardType];
- STAssertEqualObjects(pbString, testString, nil);
- }
- [window resignKeyWindow];
-}
-
-@end
diff --git a/AppKit/GTMLinearRGBShading.h b/AppKit/GTMLinearRGBShading.h
deleted file mode 100644
index d85a4eb..0000000
--- a/AppKit/GTMLinearRGBShading.h
+++ /dev/null
@@ -1,76 +0,0 @@
-//
-// GTMLinearRGBShading.h
-//
-// Copyright 2006-2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import <Cocoa/Cocoa.h>
-#import "GTMShading.h"
-#import "GTMCalculatedRange.h"
-
-/// A shading that does returns smooth linear values for RGB.
-//
-/// Thus if you create a shading from 0.0->red to 1.0->blue you will get
-/// \verbatim
-/// - 0.5->purple
-/// - 0.75->eggplant
-/// - 0.25->magenta
-/// \endverbatim
-
-@interface GTMLinearRGBShading : GTMCalculatedRange <GTMShading> {
-@private
- CGFunctionRef function_; // function used to calculated shading (STRONG)
- CGColorSpaceRef colorSpace_; // colorspace used for shading (STRONG)
- BOOL isCalibrated_; // are we using calibrated or device RGB.
- CGFloat colorValue_[4]; // the RGBA color values
-}
-
-/// Generate a shading with color |begin| at position 0.0 and color |end| at 1.0.
-//
-// Args:
-// begin: color at beginning of range
-// end: color at end of range
-// colorSpaceName: name of colorspace to draw into must be either
-// NSCalibratedRGBColorSpace or NSDeviceRGBColorSpace
-//
-// Returns:
-// a GTMLinearRGBShading
-+ (id)shadingFromColor:(NSColor *)begin toColor:(NSColor *)end
- fromSpaceNamed:(NSString*)colorSpaceName;
-
-/// Generate a shading with a collection of colors at various positions.
-//
-// Args:
-// colors: a C style array containg the colors we are adding
-// colorSpaceName: name of colorspace to draw into must be either
-// NSCalibratedRGBColorSpace or NSDeviceRGBColorSpace
-// positions: a C style array containg the positions we want to
-// add the colors at
-// numberOfColors: how many colors/positions we are adding
-//
-// Returns:
-// a GTMLinearRGBShading
-+ (id)shadingWithColors:(NSColor **)colors
- fromSpaceNamed:(NSString*)colorSpaceName
- atPositions:(CGFloat *)positions
- count:(NSUInteger)numberOfColors;
-
-/// Designated initializer
-// Args:
-// colorSpaceName - name of the colorspace to use must be either
-// NSCalibratedRGBColorSpace or NSDeviceRGBColorSpace
-- (id)initWithColorSpaceName:(NSString*)colorSpaceName;
-
-@end
diff --git a/AppKit/GTMLinearRGBShading.m b/AppKit/GTMLinearRGBShading.m
deleted file mode 100644
index f605350..0000000
--- a/AppKit/GTMLinearRGBShading.m
+++ /dev/null
@@ -1,192 +0,0 @@
-//
-// GTMLinearRGBShading.m
-//
-// Copyright 2006-2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMLinearRGBShading.h"
-#import "GTMDefines.h"
-
-// Carbon callback function required for CoreGraphics
-static void cShadeFunction(void *info, const CGFloat *inPos, CGFloat *outVals);
-
-@implementation GTMLinearRGBShading
-+ (id)shadingFromColor:(NSColor *)begin toColor:(NSColor *)end
- fromSpaceNamed:(NSString*)colorSpaceName {
- NSColor *theColors[] = { begin, end };
- CGFloat thePositions[] = { 0.0, 1.0 };
- return [[self class] shadingWithColors:theColors
- fromSpaceNamed:colorSpaceName
- atPositions:thePositions
- count:(sizeof(thePositions)/sizeof(CGFloat))];
-}
-
-+ (id)shadingWithColors:(NSColor **)colors fromSpaceNamed:(NSString*)colorSpaceName
- atPositions:(CGFloat *)positions count:(NSUInteger)count {
-
- GTMLinearRGBShading *theShading = [[[self alloc] initWithColorSpaceName:colorSpaceName] autorelease];
- for (NSUInteger i = 0; i < count; ++i) {
- [theShading insertStop:colors[i] atPosition:positions[i]];
- }
- return theShading;
-}
-
-- (id)initWithColorSpaceName:(NSString*)colorSpaceName {
- if ((self = [super init])) {
- if ([colorSpaceName isEqualToString:NSDeviceRGBColorSpace]) {
- isCalibrated_ = NO;
- } else if ([colorSpaceName isEqualToString:NSCalibratedRGBColorSpace]) {
- isCalibrated_ = YES;
- }
- else {
- [self release];
- self = nil;
- }
- }
- return self;
-}
-
-- (void)dealloc {
- if (nil != function_) {
- CGFunctionRelease(function_);
- }
- if (nil != colorSpace_) {
- CGColorSpaceRelease(colorSpace_);
- }
- [super dealloc];
-}
-
-
-- (void)insertStop:(id)item atPosition:(CGFloat)position {
- NSString *colorSpaceName = isCalibrated_ ? NSCalibratedRGBColorSpace : NSDeviceRGBColorSpace;
- NSColor *tempColor = [item colorUsingColorSpaceName: colorSpaceName];
- if (nil != tempColor) {
- [super insertStop:tempColor atPosition:position];
- }
-}
-
-// Calculate a linear value based on our stops
-- (id)valueAtPosition:(CGFloat)position {
- NSUInteger positionIndex = 0;
- NSUInteger colorCount = [self stopCount];
- CGFloat stop1Position = 0.0;
- NSColor *stop1Color = [self stopAtIndex:positionIndex position:&stop1Position];
- positionIndex += 1;
- CGFloat stop2Position = 0.0;
- NSColor *stop2Color = nil;
- if (colorCount > 1) {
- stop2Color = [self stopAtIndex:positionIndex position:&stop2Position];
- positionIndex += 1;
- } else {
- // if we only have one value, that's what we return
- stop2Position = stop1Position;
- stop2Color = stop1Color;
- }
-
- while (positionIndex < colorCount && stop2Position < position) {
- stop1Color = stop2Color;
- stop1Position = stop2Position;
- stop2Color = [self stopAtIndex:positionIndex position:&stop2Position];
- positionIndex += 1;
- }
-
- if (position <= stop1Position) {
- // if we are less than our lowest position, return our first color
- [stop1Color getRed:&colorValue_[0] green:&colorValue_[1]
- blue:&colorValue_[2] alpha:&colorValue_[3]];
- } else if (position >= stop2Position) {
- // likewise if we are greater than our highest position, return the last color
- [stop2Color getRed:&colorValue_[0] green:&colorValue_[1]
- blue:&colorValue_[2] alpha:&colorValue_[3]];
- } else {
- // otherwise interpolate between the two
- position = (position - stop1Position) / (stop2Position - stop1Position);
- CGFloat red1, red2, green1, green2, blue1, blue2, alpha1, alpha2;
- [stop1Color getRed:&red1 green:&green1 blue:&blue1 alpha:&alpha1];
- [stop2Color getRed:&red2 green:&green2 blue:&blue2 alpha:&alpha2];
-
- colorValue_[0] = (red2 - red1) * position + red1;
- colorValue_[1] = (green2 - green1) * position + green1;
- colorValue_[2] = (blue2 - blue1) * position + blue1;
- colorValue_[3] = (alpha2 - alpha1) * position + alpha1;
- }
-
- // Yes, I am casting a CGFloat[] to an id to pass it by the compiler. This
- // significantly improves performance though as I avoid creating an NSColor
- // for every scanline which later has to be cleaned up in an autorelease pool
- // somewhere. Causes guardmalloc to run significantly faster.
- return (id)colorValue_;
-}
-
-//
-// switch from C to obj-C. The callback to a shader is a c function
-// but we want to call our objective c object to do all the
-// calculations for us. We have passed our function our
-// GTMLinearRGBShading as an obj-c object in the |info| so
-// we just turn around and ask it to calculate our value based
-// on |inPos| and then stick the results back in |outVals|
-//
-// Args:
-// info: is the GTMLinearRGBShading as an
-// obj-C object.
-// inPos: the position to calculate values for. This is a pointer to
-// a single float value
-// outVals: where we store our return values. Since we are calculating
-// an RGBA color, this is a pointer to an array of four float values
-// ranging from 0.0 to 1.0
-//
-//
-static void cShadeFunction(void *info, const CGFloat *inPos, CGFloat *outVals) {
- id object = (id)info;
- CGFloat *colorValue = (CGFloat*)[object valueAtPosition:*inPos];
- outVals[0] = colorValue[0];
- outVals[1] = colorValue[1];
- outVals[2] = colorValue[2];
- outVals[3] = colorValue[3];
-}
-
-- (CGFunctionRef) shadeFunction {
- // lazily create the function as necessary
- if (nil == function_) {
- // We have to go to carbon here, and create the CGFunction. Note that this
- // diposed if necessary in the dealloc call.
- const CGFunctionCallbacks shadeFunctionCallbacks = { 0, &cShadeFunction, NULL };
-
- // TODO: this code assumes that we have a range from 0.0 to 1.0
- // which may not be true according to the stops that the user has given us.
- // In general you have stops at 0.0 and 1.0, so this will do for right now
- // but may be an issue in the future.
- const CGFloat inRange[2] = { 0.0, 1.0 };
- const CGFloat outRange[8] = { 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0 };
- function_ = CGFunctionCreate(self,
- sizeof(inRange) / (sizeof(CGFloat) * 2), inRange,
- sizeof(outRange) / (sizeof(CGFloat) * 2), outRange,
- &shadeFunctionCallbacks);
- }
- return function_;
-}
-
-- (CGColorSpaceRef)colorSpace {
- // lazily create the colorspace as necessary
- if (nil == colorSpace_) {
- if (isCalibrated_) {
- colorSpace_ = CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB);
- } else {
- colorSpace_ = CGColorSpaceCreateDeviceRGB();
- }
- }
- return colorSpace_;
-}
-@end
diff --git a/AppKit/GTMLinearRGBShadingTest.m b/AppKit/GTMLinearRGBShadingTest.m
deleted file mode 100644
index 38802e6..0000000
--- a/AppKit/GTMLinearRGBShadingTest.m
+++ /dev/null
@@ -1,132 +0,0 @@
-//
-// GTMLinearRGBShadingTest.m
-//
-// Copyright 2006-2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import <SenTestingKit/SenTestingKit.h>
-#import "GTMSenTestCase.h"
-#import "GTMLinearRGBShading.h"
-
-@interface GTMLinearRGBShadingTest : GTMTestCase
-@end
-
-@implementation GTMLinearRGBShadingTest
-- (void)testShadingFrom {
- // Create a shading from red to blue, and check if 50% is purple
- NSColor *red = [NSColor redColor];
- NSColor *blue = [NSColor blueColor];
- NSColor *purple = [NSColor purpleColor];
- GTMLinearRGBShading *theShading =
- [GTMLinearRGBShading shadingFromColor:red
- toColor:blue
- fromSpaceNamed:NSCalibratedRGBColorSpace];
- STAssertNotNil(theShading,nil);
- STAssertEquals([theShading stopCount], (NSUInteger)2, nil);
- CGFloat *theColor = (CGFloat*)[theShading valueAtPosition: 0.5];
- STAssertEqualsWithAccuracy(theColor[0], [purple redComponent], 0.001, nil);
- STAssertEqualsWithAccuracy(theColor[1], [purple greenComponent], 0.001, nil);
- STAssertEqualsWithAccuracy(theColor[2], [purple blueComponent], 0.001, nil);
- STAssertEqualsWithAccuracy(theColor[3], [purple alphaComponent], 0.001, nil);
-}
-
-- (void)testShadingWith {
- // Create a shading with kColorCount colors and make sure all the values are there.
- enum { kColorCount = 100 };
- NSColor *theColors[kColorCount];
- CGFloat thePositions[kColorCount];
- const CGFloat kColorIncrement = 1.0 / kColorCount;
- for (NSUInteger i = 0; i < kColorCount; i++) {
- CGFloat newValue = kColorIncrement * i;
- thePositions[i] = newValue;
- theColors[i] = [NSColor colorWithCalibratedRed:newValue
- green:newValue
- blue:newValue
- alpha:newValue];
- }
- GTMLinearRGBShading *theShading =
- [GTMLinearRGBShading shadingWithColors:theColors
- fromSpaceNamed:NSCalibratedRGBColorSpace
- atPositions:thePositions
- count:kColorCount];
- for (NSUInteger i = 0; i < kColorCount; i++) {
- CGFloat newValue = kColorIncrement * i;
- CGFloat *theColor = (CGFloat*)[theShading valueAtPosition:newValue];
- STAssertEqualsWithAccuracy(theColor[0], newValue, 0.001, nil);
- STAssertEqualsWithAccuracy(theColor[1], newValue, 0.001, nil);
- STAssertEqualsWithAccuracy(theColor[2], newValue, 0.001, nil);
- STAssertEqualsWithAccuracy(theColor[3], newValue, 0.001, nil);
- }
- // Create a shading with 1 color to test that special handling
- NSColor *purple = [NSColor purpleColor];
- NSColor *singleColor[1] = { purple };
- CGFloat singlePosition[1] = { 0.5 };
- theShading =
- [GTMLinearRGBShading shadingWithColors:singleColor
- fromSpaceNamed:NSCalibratedRGBColorSpace
- atPositions:singlePosition
- count:1];
- // test over a range to make sure we always get the same color
- for (NSUInteger i = 0; i < kColorCount; i++) {
- CGFloat newValue = kColorIncrement * i;
- CGFloat *theColor = (CGFloat*)[theShading valueAtPosition:newValue];
- STAssertEqualsWithAccuracy(theColor[0], [purple redComponent], 0.001, nil);
- STAssertEqualsWithAccuracy(theColor[1], [purple greenComponent], 0.001, nil);
- STAssertEqualsWithAccuracy(theColor[2], [purple blueComponent], 0.001, nil);
- STAssertEqualsWithAccuracy(theColor[3], [purple alphaComponent], 0.001, nil);
- }
-}
-
-- (void)testShadeFunction {
- GTMLinearRGBShading *theShading =
- [GTMLinearRGBShading shadingWithColors:nil
- fromSpaceNamed:NSCalibratedRGBColorSpace
- atPositions:nil
- count:0];
- CGFunctionRef theFunction = [theShading shadeFunction];
- STAssertNotNULL(theFunction, nil);
- STAssertEquals(CFGetTypeID(theFunction), CGFunctionGetTypeID(), nil);
-}
-
-- (void)testColorSpace {
- // Calibrated RGB
- GTMLinearRGBShading *theShading =
- [GTMLinearRGBShading shadingWithColors:nil
- fromSpaceNamed:NSCalibratedRGBColorSpace
- atPositions:nil
- count:0];
- CGColorSpaceRef theColorSpace = [theShading colorSpace];
- STAssertNotNULL(theColorSpace, nil);
- STAssertEquals(CFGetTypeID(theColorSpace), CGColorSpaceGetTypeID(), nil);
-
- // Device RGB
- theShading =
- [GTMLinearRGBShading shadingWithColors:nil
- fromSpaceNamed:NSDeviceRGBColorSpace
- atPositions:nil
- count:0];
- theColorSpace = [theShading colorSpace];
- STAssertNotNULL(theColorSpace, nil);
- STAssertEquals(CFGetTypeID(theColorSpace), CGColorSpaceGetTypeID(), nil);
-
- // Device CMYK (not supported)
- theShading =
- [GTMLinearRGBShading shadingWithColors:nil
- fromSpaceNamed:NSDeviceCMYKColorSpace
- atPositions:nil
- count:0];
- STAssertNULL(theShading, nil);
-}
-@end
diff --git a/AppKit/GTMLoginItems.m b/AppKit/GTMLoginItems.m
index fc0029b..cd45418 100644
--- a/AppKit/GTMLoginItems.m
+++ b/AppKit/GTMLoginItems.m
@@ -56,7 +56,7 @@ static NSString * const kLSSharedFileListLoginItemHidden =
if (!value || !key || !items) return NSNotFound;
NSDictionary *item = nil;
NSInteger found = -1;
- GTM_FOREACH_OBJECT(item, items) {
+ for (item in items) {
++found;
id itemValue = [item objectForKey:key];
if (itemValue && [itemValue isEqual:value]) {
diff --git a/AppKit/GTMLoginItemsTest.m b/AppKit/GTMLoginItemsTest.m
index 50b7482..3784edb 100644
--- a/AppKit/GTMLoginItemsTest.m
+++ b/AppKit/GTMLoginItemsTest.m
@@ -6,9 +6,9 @@
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy
// of the License at
-//
+//
// http://www.apache.org/licenses/LICENSE-2.0
-//
+//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
@@ -16,7 +16,6 @@
// the License.
//
-#import <SenTestingKit/SenTestingKit.h>
#import "GTMSenTestCase.h"
#import "GTMLoginItems.h"
@@ -31,7 +30,7 @@
static BOOL ItemsListHasPath(NSArray *items, NSString *path) {
NSDictionary *item = nil;
- GTM_FOREACH_OBJECT(item, items) {
+ for (item in items) {
NSString *itemPath = [item objectForKey:kGTMLoginItemsPathKey];
if (itemPath && [itemPath isEqual:path]) {
return YES;
@@ -47,89 +46,91 @@ static BOOL ItemsListHasPath(NSArray *items, NSString *path) {
NSError *error = nil;
NSString *bogusAppPath = @"/Applications/AppThatDoesNotExist.app";
NSString *bogusAppName = @"AppThatDoesNotExist";
-
+
// fetch the starting values
NSArray *initialItems = [GTMLoginItems loginItems:&error];
- STAssertNotNil(initialItems, @"shouldn't be nil (%@)", error);
- STAssertFalse(ItemsListHasPath(initialItems, bogusAppPath),
- @"bogusApp shouldn't be in list to start for test (%@)", initialItems);
-
+ XCTAssertNotNil(initialItems, @"shouldn't be nil (%@)", error);
+ XCTAssertFalse(ItemsListHasPath(initialItems, bogusAppPath),
+ @"bogusApp shouldn't be in list to start for test (%@)",
+ initialItems);
+
// check by path
- STAssertFalse([GTMLoginItems pathInLoginItems:bogusAppPath], nil);
-
+ XCTAssertFalse([GTMLoginItems pathInLoginItems:bogusAppPath]);
+
// check by name
- STAssertFalse([GTMLoginItems itemWithNameInLoginItems:bogusAppName], nil);
-
+ XCTAssertFalse([GTMLoginItems itemWithNameInLoginItems:bogusAppName]);
+
// remove it by path
[GTMLoginItems removePathFromLoginItems:bogusAppPath];
NSArray *curItems = [GTMLoginItems loginItems:nil];
- STAssertEqualObjects(initialItems, curItems, nil);
-
+ XCTAssertEqualObjects(initialItems, curItems);
+
// remove it by name
[GTMLoginItems removeItemWithNameFromLoginItems:bogusAppName];
curItems = [GTMLoginItems loginItems:nil];
- STAssertEqualObjects(initialItems, curItems, nil);
+ XCTAssertEqualObjects(initialItems, curItems);
}
- (void)testModification {
#if MODIFICATION_TESTS_ENABLED
-
+
NSError *error = nil;
NSString *textEditPath = @"/Applications/TextEdit.app";
NSString *textEditName = @"TextEdit";
-
+
// fetch the starting values
NSArray *initialItems = [GTMLoginItems loginItems:&error];
- STAssertNotNil(initialItems, @"shouldn't be nil (%@)", error);
- STAssertFalse(ItemsListHasPath(initialItems, textEditPath),
- @"textedit shouldn't be in list to start for test (%@)", initialItems);
-
+ XCTAssertNotNil(initialItems, @"shouldn't be nil (%@)", error);
+ XCTAssertFalse(ItemsListHasPath(initialItems, textEditPath),
+ @"textedit shouldn't be in list to start for test (%@)",
+ initialItems);
+
// add textedit
[GTMLoginItems addPathToLoginItems:textEditPath hide:NO];
NSArray *curItems = [GTMLoginItems loginItems:nil];
- STAssertNotEqualObjects(initialItems, curItems, nil);
-
+ XCTAssertNotEqualObjects(initialItems, curItems);
+
// check by path
- STAssertTrue([GTMLoginItems pathInLoginItems:textEditPath], nil);
-
+ XCTAssertTrue([GTMLoginItems pathInLoginItems:textEditPath]);
+
// check by name
- STAssertTrue([GTMLoginItems itemWithNameInLoginItems:textEditName], nil);
-
+ XCTAssertTrue([GTMLoginItems itemWithNameInLoginItems:textEditName]);
+
// remove it by path
[GTMLoginItems removePathFromLoginItems:textEditPath];
curItems = [GTMLoginItems loginItems:nil];
- STAssertEqualObjects(initialItems, curItems, nil);
-
+ STAssertEqualObjects(initialItems, curItems);
+
// check by path
- STAssertFalse([GTMLoginItems pathInLoginItems:textEditPath], nil);
-
+ XCTAssertFalse([GTMLoginItems pathInLoginItems:textEditPath]);
+
// check by name
- STAssertFalse([GTMLoginItems itemWithNameInLoginItems:textEditName], nil);
-
+ XCTAssertFalse([GTMLoginItems itemWithNameInLoginItems:textEditName]);
+
// add textedit
[GTMLoginItems addPathToLoginItems:textEditPath hide:NO];
curItems = [GTMLoginItems loginItems:nil];
- STAssertNotEqualObjects(initialItems, curItems, nil);
-
+ STAssertNotEqualObjects(initialItems, curItems);
+
// check by path
- STAssertTrue([GTMLoginItems pathInLoginItems:textEditPath], nil);
-
+ XCTAssertTrue([GTMLoginItems pathInLoginItems:textEditPath]);
+
// check by name
- STAssertTrue([GTMLoginItems itemWithNameInLoginItems:textEditName], nil);
-
+ XCTAssertTrue([GTMLoginItems itemWithNameInLoginItems:textEditName]);
+
// remove it by name
[GTMLoginItems removeItemWithNameFromLoginItems:textEditName];
curItems = [GTMLoginItems loginItems:nil];
- STAssertEqualObjects(initialItems, curItems, nil);
-
+ XCTAssertEqualObjects(initialItems, curItems);
+
// check by path
- STAssertFalse([GTMLoginItems pathInLoginItems:textEditPath], nil);
-
+ XCTAssertFalse([GTMLoginItems pathInLoginItems:textEditPath]);
+
// check by name
- STAssertFalse([GTMLoginItems itemWithNameInLoginItems:textEditName], nil);
-
+ XCTAssertFalse([GTMLoginItems itemWithNameInLoginItems:textEditName]);
+
#endif // MODIFICATION_TESTS_ENABLED
}
diff --git a/AppKit/GTMNSAnimatablePropertyContainer.h b/AppKit/GTMNSAnimatablePropertyContainer.h
deleted file mode 100644
index c98cabe..0000000
--- a/AppKit/GTMNSAnimatablePropertyContainer.h
+++ /dev/null
@@ -1,49 +0,0 @@
-//
-// GTMNSAnimatablePropertyContainer.h
-//
-// Copyright (c) 2010 Google Inc. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import <Cocoa/Cocoa.h>
-#import "GTMDefines.h"
-
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5
-
-// There is a bug in 10.5 where you cannot stop an animation on a
-// NSAnimatablePropertyContainer by just setting it's duration to 0.0.
-// The work around is rather complex requiring you to NULL out animation
-// dictionary entries temporarily (see the code for details).
-// These categories are to make stopping animations simpler.
-// When you want to stop an animation, you just call it like you would
-// an animator.
-//
-// [[myWindow gtm_animatorStopper] setAlphaValue:0.0];
-//
-// This will stop any current animations that are going on, and will immediately
-// set the alpha value of the window to 0.
-// If there is no animation, it will still set the alpha value to 0.0 for you.
-@interface NSView (GTMNSAnimatablePropertyContainer)
-
-- (id)gtm_animatorStopper;
-
-@end
-
-@interface NSWindow (GTMNSAnimatablePropertyContainer)
-
-- (id)gtm_animatorStopper;
-
-@end
-
-#endif // MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5
diff --git a/AppKit/GTMNSAnimatablePropertyContainer.m b/AppKit/GTMNSAnimatablePropertyContainer.m
deleted file mode 100644
index a47ff65..0000000
--- a/AppKit/GTMNSAnimatablePropertyContainer.m
+++ /dev/null
@@ -1,124 +0,0 @@
-//
-// GTMNSAnimatablePropertyContainer.m
-//
-// Copyright (c) 2010 Google Inc. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMNSAnimatablePropertyContainer.h"
-
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5
-
-@interface GTMAnimatorStopper : NSObject {
- @private
- NSObject<NSAnimatablePropertyContainer> *container_;
-}
-@end
-
-@implementation GTMAnimatorStopper
-- (id)initWithAnimatablePropertyContainer:(NSObject<NSAnimatablePropertyContainer>*) container {
- if ((self = [super init])) {
- container_ = [container retain];
- }
- return self;
-}
-
-- (void)dealloc {
- [container_ release];
- [super dealloc];
-}
-
-- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector {
- return [container_ methodSignatureForSelector:aSelector];
-}
-
-- (void)forwardInvocation:(NSInvocation *)anInvocation {
- SEL selector = [anInvocation selector];
- NSString *selectorName = NSStringFromSelector(selector);
-
- // NSWindow animator handles setFrame:display: which is an odd case
- // for animator. All other methods take just a key value, so we convert
- // this to it's equivalent key value.
- if ([selectorName isEqual:@"setFrame:display:"]) {
- selectorName = @"setFrame:";
- }
-
- // Check to make sure our selector is valid (starts with set and has a
- // single : at the end.
- NSRange colonRange = [selectorName rangeOfString:@":"];
- NSUInteger selectorLength = [selectorName length];
- if ([selectorName hasPrefix:@"set"]
- && colonRange.location == selectorLength - 1
- && selectorLength > 4) {
- // transform our selector into a keyValue by removing the set
- // and the colon and converting the first char down to lowercase.
- NSString *keyValue = [selectorName substringFromIndex:3];
- NSString *firstChar = [[keyValue substringToIndex:1] lowercaseString];
- NSRange rest = NSMakeRange(1, [keyValue length] - 2);
- NSString *restOfKey = [keyValue substringWithRange:rest];
- keyValue = [firstChar stringByAppendingString:restOfKey];
-
- // Save a copy of our old animations.
- NSDictionary *oldAnimations
- = [[[container_ animations] copy] autorelease];
-
- // For frame the animator doesn't actually animate the rect but gets
- // animators for the size and the origin independently. In case this changes
- // in the future (similar to bounds), we will stop the animations for the
- // frame as well as the frameSize and frameOrigin.
- NSDictionary *animations = nil;
- NSNull *null = [NSNull null];
- if ([keyValue isEqual:@"frame"]) {
- animations = [NSDictionary dictionaryWithObjectsAndKeys:
- null, @"frame",
- null, @"frameSize",
- null, @"frameOrigin", nil];
- } else {
- animations = [NSDictionary dictionaryWithObject:null forKey:keyValue];
- }
-
- // Set our animations to NULL which will force them to stop.
- [container_ setAnimations:animations];
- // Call our original invocation on our animator.
- [anInvocation setTarget:[container_ animator]];
- [anInvocation invoke];
-
- // Reset the animations.
- [container_ setAnimations:oldAnimations];
- } else {
- [self doesNotRecognizeSelector:selector];
- }
-}
-
-@end
-
-@implementation NSView(GTMNSAnimatablePropertyContainer)
-
-- (id)gtm_animatorStopper {
- return [[[GTMAnimatorStopper alloc] initWithAnimatablePropertyContainer:self]
- autorelease];
-}
-
-@end
-
-@implementation NSWindow(GTMNSAnimatablePropertyContainer)
-
-- (id)gtm_animatorStopper {
- return [[[GTMAnimatorStopper alloc] initWithAnimatablePropertyContainer:self]
- autorelease];
-}
-
-@end
-
-#endif // MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5
diff --git a/AppKit/GTMNSAnimatablePropertyContainerTest.h b/AppKit/GTMNSAnimatablePropertyContainerTest.h
deleted file mode 100644
index f873601..0000000
--- a/AppKit/GTMNSAnimatablePropertyContainerTest.h
+++ /dev/null
@@ -1,53 +0,0 @@
-//
-// GTMNSAnimatablePropertyContainerTest.h
-//
-// Copyright (c) 2010 Google Inc. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMSenTestCase.h"
-#import <AppKit/AppKit.h>
-
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5
-
-@class GTMUnitTestingBooleanRunLoopContext;
-
-@interface GTMNSAnimatablePropertyContainerWindow : NSWindow
-@end
-
-@interface GTMNSAnimatablePropertyContainerWindowBox : NSBox
-
-- (void)set:(NSInteger)value;
-
-@end
-
-@interface GTMNSAnimatablePropertyContainerWindowController : NSWindowController {
- @private
- IBOutlet NSBox *nonLayerBox_;
- IBOutlet NSBox *layerBox_;
-}
-
-@property (readonly, retain, nonatomic) NSBox *nonLayerBox;
-@property (readonly, retain, nonatomic) NSBox *layerBox;
-
-@end
-
-@interface GTMNSAnimatablePropertyContainerTest : GTMTestCase {
- @private
- GTMNSAnimatablePropertyContainerWindowController *windowController_;
- GTMUnitTestingBooleanRunLoopContext *timerCalled_;
-}
-@end
-
-#endif // MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5
diff --git a/AppKit/GTMNSAnimatablePropertyContainerTest.m b/AppKit/GTMNSAnimatablePropertyContainerTest.m
deleted file mode 100644
index 8cef089..0000000
--- a/AppKit/GTMNSAnimatablePropertyContainerTest.m
+++ /dev/null
@@ -1,237 +0,0 @@
-//
-// GTMNSAnimatablePropertyContainerTest.m
-//
-// Copyright (c) 2010 Google Inc. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMNSAnimatablePropertyContainerTest.h"
-#import "GTMNSAnimatablePropertyContainer.h"
-#import "GTMTypeCasting.h"
-#import "GTMFoundationUnitTestingUtilities.h"
-
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5
-
-@implementation GTMNSAnimatablePropertyContainerWindow
-
-#if 0
-// Some useful debugging code. Enabled to track animation keys.
-- (id)animationForKey:(NSString *)key {
- id value = [super animationForKey:key];
- NSLog(@"Value: %@ Key: %@", value, key);
- return value;
-}
-#endif
-
-@end
-
-@implementation GTMNSAnimatablePropertyContainerWindowBox
-
-#if 0
-// Some useful debugging code. Enabled to track animation keys.
-- (id)animationForKey:(NSString *)key {
- id value = [super animationForKey:key];
- NSLog(@"Value: %@ Key: %@", value, key);
- return value;
-}
-#endif
-
-- (void)set:(NSInteger)value {
-#pragma unused(value)
-}
-
-@end
-
-@implementation GTMNSAnimatablePropertyContainerWindowController
-
-@synthesize nonLayerBox = nonLayerBox_;
-@synthesize layerBox = layerBox_;
-
-- (id)init {
- return [super initWithWindowNibName:@"GTMNSAnimatablePropertyContainerTest"];
-}
-
-- (void)windowWillClose:(NSNotification *)notification {
- if (![[notification object] isEqual:[self window]]) {
- [[NSException exceptionWithName:SenTestFailureException
- reason:@"Bad window in windowWillClose"
- userInfo:nil] raise];
- }
- [self autorelease];
-}
-
-@end
-
-@implementation GTMNSAnimatablePropertyContainerTest
-
-- (void)setUp {
- windowController_
- = [[GTMNSAnimatablePropertyContainerWindowController alloc] init];
- STAssertNotNil(windowController_, nil);
- NSWindow *window = [windowController_ window];
- STAssertNotNil(window, nil);
- timerCalled_ = [[GTMUnitTestingBooleanRunLoopContext alloc] init];
-}
-
-- (void)tearDown {
- [windowController_ close];
- windowController_ = nil;
- [timerCalled_ release];
- timerCalled_ = nil;
-}
-
-- (void)windowAlphaValueStopper:(NSTimer *)timer {
- NSWindow *window = GTM_DYNAMIC_CAST(NSWindow, [timer userInfo]);
- [timerCalled_ setShouldStop:YES];
- [[window gtm_animatorStopper] setAlphaValue:0.25];
- STAssertEquals([window alphaValue], (CGFloat)0.25, nil);
-}
-
-- (void)windowFrameStopper:(NSTimer *)timer {
- NSWindow *window = GTM_DYNAMIC_CAST(NSWindow, [timer userInfo]);
- [timerCalled_ setShouldStop:YES];
- [[window gtm_animatorStopper] setFrame:NSMakeRect(300, 300, 150, 150)
- display:YES];
- STAssertEquals([window frame], NSMakeRect(300, 300, 150, 150), nil);
-}
-
-- (void)nonLayerFrameStopper:(NSTimer *)timer {
- NSView *view = GTM_DYNAMIC_CAST(NSView, [timer userInfo]);
- [timerCalled_ setShouldStop:YES];
- [[view gtm_animatorStopper] setFrame:NSMakeRect(200, 200, 200, 200)];
- STAssertEquals([view frame], NSMakeRect(200, 200, 200, 200), nil);
-}
-
-- (void)layerFrameStopper:(NSTimer *)timer {
- NSView *view = GTM_DYNAMIC_CAST(NSView, [timer userInfo]);
- [timerCalled_ setShouldStop:YES];
- [[view gtm_animatorStopper] setFrame:NSMakeRect(200, 200, 200, 200)];
- STAssertEquals([view frame], NSMakeRect(200, 200, 200, 200), nil);
-}
-
-- (void)testWindowAnimations {
- NSRunLoop *runLoop = [NSRunLoop currentRunLoop];
-
- // Test Alpha
- NSWindow *window = [windowController_ window];
- [window setAlphaValue:1.0];
- [timerCalled_ setShouldStop:NO];
- [NSAnimationContext beginGrouping];
- NSAnimationContext *currentContext = [NSAnimationContext currentContext];
- [currentContext setDuration:2];
- [[window animator] setAlphaValue:0.5];
- [NSAnimationContext endGrouping];
- [NSTimer scheduledTimerWithTimeInterval:0.1
- target:self
- selector:@selector(windowAlphaValueStopper:)
- userInfo:window
- repeats:NO];
- STAssertTrue([runLoop gtm_runUpToSixtySecondsWithContext:timerCalled_], nil);
- STAssertEquals([window alphaValue], (CGFloat)0.25, nil);
-
- // Test Frame
- [window setFrame:NSMakeRect(100, 100, 100, 100) display:YES];
- [timerCalled_ setShouldStop:NO];
- [NSAnimationContext beginGrouping];
- currentContext = [NSAnimationContext currentContext];
- [currentContext setDuration:2];
- [[window animator] setFrame:NSMakeRect(200, 200, 200, 200) display:YES];
- [NSAnimationContext endGrouping];
- [NSTimer scheduledTimerWithTimeInterval:0.1
- target:self
- selector:@selector(windowFrameStopper:)
- userInfo:window
- repeats:NO];
- STAssertTrue([runLoop gtm_runUpToSixtySecondsWithContext:timerCalled_], nil);
- STAssertEquals([window frame], NSMakeRect(300, 300, 150, 150), nil);
-
- // Test non-animation value
- [window setTitle:@"Foo"];
- [[window gtm_animatorStopper] setTitle:@"Bar"];
- STAssertEquals([window title], @"Bar", nil);
-
- // Test bad selector
- STAssertThrows([[window gtm_animatorStopper] testWindowAnimations], nil);
-}
-
-- (void)testNonLayerViewAnimations {
- NSRunLoop *runLoop = [NSRunLoop currentRunLoop];
-
- NSBox *nonLayerBox = [windowController_ nonLayerBox];
- STAssertNotNil(nonLayerBox, nil);
-
- // Test frame
- [nonLayerBox setFrame:NSMakeRect(50, 50, 50, 50)];
- [timerCalled_ setShouldStop:NO];
- [NSAnimationContext beginGrouping];
- NSAnimationContext *currentContext = [NSAnimationContext currentContext];
- [currentContext setDuration:2];
- [[nonLayerBox animator] setFrame:NSMakeRect(100, 100, 100, 100)];
- [NSAnimationContext endGrouping];
- [NSTimer scheduledTimerWithTimeInterval:0.1
- target:self
- selector:@selector(nonLayerFrameStopper:)
- userInfo:nonLayerBox
- repeats:NO];
- STAssertTrue([runLoop gtm_runUpToSixtySecondsWithContext:timerCalled_], nil);
- STAssertEquals([nonLayerBox frame], NSMakeRect(200, 200, 200, 200), nil);
-
- // Test non-animation value
- [nonLayerBox setToolTip:@"Foo"];
- [[nonLayerBox gtm_animatorStopper] setToolTip:@"Bar"];
- STAssertEquals([nonLayerBox toolTip], @"Bar", nil);
-
- // Test bad selector
- STAssertThrows([[nonLayerBox gtm_animatorStopper] testNonLayerViewAnimations],
- nil);
-}
-
-- (void)testLayerViewAnimations {
- NSRunLoop *runLoop = [NSRunLoop currentRunLoop];
-
- NSBox *layerBox = [windowController_ layerBox];
- STAssertNotNil(layerBox, nil);
-
- // Test frame
- [layerBox setFrame:NSMakeRect(50, 50, 50, 50)];
- [timerCalled_ setShouldStop:NO];
- [NSAnimationContext beginGrouping];
- NSAnimationContext *currentContext = [NSAnimationContext currentContext];
- [currentContext setDuration:2];
- [[layerBox animator] setFrame:NSMakeRect(100, 100, 100, 100)];
- [NSAnimationContext endGrouping];
- [NSTimer scheduledTimerWithTimeInterval:0.1
- target:self
- selector:@selector(layerFrameStopper:)
- userInfo:layerBox
- repeats:NO];
- STAssertTrue([runLoop gtm_runUpToSixtySecondsWithContext:timerCalled_], nil);
- STAssertEquals([layerBox frame], NSMakeRect(200, 200, 200, 200), nil);
-
- // Test non-animation value
- [layerBox setToolTip:@"Foo"];
- [[layerBox gtm_animatorStopper] setToolTip:@"Bar"];
- STAssertEquals([layerBox toolTip], @"Bar", nil);
-
- // Test bad selector
- STAssertThrows([[layerBox gtm_animatorStopper] testLayerViewAnimations],
- nil);
-
- // Test Short Selector
- STAssertThrows([[layerBox gtm_animatorStopper] set:1], nil);
-}
-
-@end
-
-#endif // MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5
diff --git a/AppKit/GTMNSAnimatablePropertyContainerTest.xib b/AppKit/GTMNSAnimatablePropertyContainerTest.xib
deleted file mode 100644
index 3065ab5..0000000
--- a/AppKit/GTMNSAnimatablePropertyContainerTest.xib
+++ /dev/null
@@ -1,426 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.03">
- <data>
- <int key="IBDocument.SystemTarget">1050</int>
- <string key="IBDocument.SystemVersion">9L31a</string>
- <string key="IBDocument.InterfaceBuilderVersion">680</string>
- <string key="IBDocument.AppKitVersion">949.54</string>
- <string key="IBDocument.HIToolboxVersion">353.00</string>
- <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.InterfaceBuilderKit</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- </object>
- <object class="NSMutableDictionary" key="IBDocument.Metadata">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <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="NSCustomObject" id="1001">
- <string key="NSClassName">GTMNSAnimatablePropertyContainerWindowController</string>
- </object>
- <object class="NSCustomObject" id="1003">
- <string key="NSClassName">FirstResponder</string>
- </object>
- <object class="NSCustomObject" id="1004">
- <string key="NSClassName">NSApplication</string>
- </object>
- <object class="NSWindowTemplate" id="1005">
- <int key="NSWindowStyleMask">15</int>
- <int key="NSWindowBacking">2</int>
- <string key="NSWindowRect">{{196, 240}, {480, 270}}</string>
- <int key="NSWTFlags">536870912</int>
- <string key="NSWindowTitle">Window</string>
- <string key="NSWindowClass">GTMNSAnimatablePropertyContainerWindow</string>
- <nil key="NSViewClass"/>
- <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
- <object class="NSView" key="NSWindowView" id="1006">
- <reference key="NSNextResponder"/>
- <int key="NSvFlags">256</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSBox" id="356378161">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">12</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSView" id="518392398">
- <reference key="NSNextResponder" ref="356378161"/>
- <int key="NSvFlags">256</int>
- <string key="NSFrame">{{1, 1}, {120, 113}}</string>
- <reference key="NSSuperview" ref="356378161"/>
- </object>
- </object>
- <string key="NSFrame">{{36, 135}, {122, 115}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <string key="NSOffsets">{0, 0}</string>
- <object class="NSTextFieldCell" key="NSTitleCell">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">NonLayerBox</string>
- <object class="NSFont" key="NSSupport" id="26">
- <string key="NSName">LucidaGrande</string>
- <double key="NSSize">1.100000e+01</double>
- <int key="NSfFlags">3100</int>
- </object>
- <object class="NSColor" key="NSBackgroundColor" id="152657423">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">textBackgroundColor</string>
- <object class="NSColor" key="NSColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MQA</bytes>
- </object>
- </object>
- <object class="NSColor" key="NSTextColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MCAwLjgwMDAwMDAxAA</bytes>
- </object>
- </object>
- <reference key="NSContentView" ref="518392398"/>
- <int key="NSBorderType">1</int>
- <int key="NSBoxType">4</int>
- <int key="NSTitlePosition">2</int>
- <bool key="NSTransparent">NO</bool>
- <object class="NSColor" key="NSFillColor2">
- <int key="NSColorSpace">1</int>
- <bytes key="NSRGB">MCAwIDEAA</bytes>
- </object>
- </object>
- <object class="NSBox" id="852370930">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">12</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSView" id="743292700">
- <reference key="NSNextResponder" ref="852370930"/>
- <int key="NSvFlags">256</int>
- <string key="NSFrame">{{1, 1}, {120, 113}}</string>
- <reference key="NSSuperview" ref="852370930"/>
- </object>
- </object>
- <string key="NSFrame">{{238, 135}, {122, 115}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <bool key="NSViewIsLayerTreeHost">YES</bool>
- <string key="NSOffsets">{0, 0}</string>
- <object class="NSTextFieldCell" key="NSTitleCell">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">LayerBox</string>
- <reference key="NSSupport" ref="26"/>
- <reference key="NSBackgroundColor" ref="152657423"/>
- <object class="NSColor" key="NSTextColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MCAwLjgwMDAwMDAxAA</bytes>
- </object>
- </object>
- <reference key="NSContentView" ref="743292700"/>
- <int key="NSBorderType">1</int>
- <int key="NSBoxType">4</int>
- <int key="NSTitlePosition">2</int>
- <bool key="NSTransparent">NO</bool>
- <object class="NSColor" key="NSFillColor2">
- <int key="NSColorSpace">1</int>
- <bytes key="NSRGB">MSAwIDEAA</bytes>
- </object>
- </object>
- </object>
- <string key="NSFrameSize">{480, 270}</string>
- <reference key="NSSuperview"/>
- </object>
- <string key="NSScreenRect">{{0, 0}, {1680, 1028}}</string>
- <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
- </object>
- </object>
- <object class="IBObjectContainer" key="IBDocument.Objects">
- <object class="NSMutableArray" key="connectionRecords">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">nonLayerBox_</string>
- <reference key="source" ref="1001"/>
- <reference key="destination" ref="356378161"/>
- </object>
- <int key="connectionID">6</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">layerBox_</string>
- <reference key="source" ref="1001"/>
- <reference key="destination" ref="852370930"/>
- </object>
- <int key="connectionID">7</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">delegate</string>
- <reference key="source" ref="1005"/>
- <reference key="destination" ref="1001"/>
- </object>
- <int key="connectionID">8</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">window</string>
- <reference key="source" ref="1001"/>
- <reference key="destination" ref="1005"/>
- </object>
- <int key="connectionID">9</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>
- <object class="NSArray" key="object" id="1002">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <reference key="children" ref="1000"/>
- <nil key="parent"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-2</int>
- <reference key="object" ref="1001"/>
- <reference key="parent" ref="1002"/>
- <string type="base64-UTF8" key="objectName">RmlsZSdzIE93bmVyA</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-1</int>
- <reference key="object" ref="1003"/>
- <reference key="parent" ref="1002"/>
- <string key="objectName">First Responder</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-3</int>
- <reference key="object" ref="1004"/>
- <reference key="parent" ref="1002"/>
- <string key="objectName">Application</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">1</int>
- <reference key="object" ref="1005"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1006"/>
- </object>
- <reference key="parent" ref="1002"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">2</int>
- <reference key="object" ref="1006"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="356378161"/>
- <reference ref="852370930"/>
- </object>
- <reference key="parent" ref="1005"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">3</int>
- <reference key="object" ref="356378161"/>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">4</int>
- <reference key="object" ref="852370930"/>
- <reference key="parent" ref="1006"/>
- </object>
- </object>
- </object>
- <object class="NSMutableDictionary" key="flattenedProperties">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMutableArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>-1.IBPluginDependency</string>
- <string>-2.IBPluginDependency</string>
- <string>-3.IBPluginDependency</string>
- <string>1.IBEditorWindowLastContentRect</string>
- <string>1.IBPluginDependency</string>
- <string>1.IBWindowTemplateEditedContentRect</string>
- <string>1.NSWindowTemplate.visibleAtLaunch</string>
- <string>1.WindowOrigin</string>
- <string>1.editorWindowContentRectSynchronizationRect</string>
- <string>2.IBPluginDependency</string>
- <string>3.CustomClassName</string>
- <string>3.IBPluginDependency</string>
- <string>4.CustomClassName</string>
- <string>4.IBPluginDependency</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilderKit</string>
- <string>com.apple.InterfaceBuilderKit</string>
- <string>{{152, 488}, {480, 270}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{152, 488}, {480, 270}}</string>
- <integer value="1"/>
- <string>{196, 240}</string>
- <string>{{202, 428}, {480, 270}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>GTMNSAnimatablePropertyContainerWindowBox</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>GTMNSAnimatablePropertyContainerWindowBox</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- </object>
- </object>
- <object class="NSMutableDictionary" key="unlocalizedProperties">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <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>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- </object>
- <nil key="sourceID"/>
- <int key="maxID">9</int>
- </object>
- <object class="IBClassDescriber" key="IBDocument.Classes">
- <object class="NSMutableArray" key="referencedPartialClassDescriptions">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBPartialClassDescription">
- <string key="className">GTMNSAnimatablePropertyContainerWindow</string>
- <string key="superclassName">NSWindow</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="304255356">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMNSAnimatablePropertyContainerTest.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">GTMNSAnimatablePropertyContainerWindowBox</string>
- <string key="superclassName">NSBox</string>
- <reference key="sourceIdentifier" ref="304255356"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">GTMNSAnimatablePropertyContainerWindowController</string>
- <string key="superclassName">NSWindowController</string>
- <object class="NSMutableDictionary" key="outlets">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMutableArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>layerBox_</string>
- <string>nonLayerBox_</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>NSBox</string>
- <string>NSBox</string>
- </object>
- </object>
- <reference key="sourceIdentifier" ref="304255356"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="712611361">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMAppKit+UnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSMenu</string>
- <reference key="sourceIdentifier" ref="712611361"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMCarbonEvent.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMDelegatingTableColumn.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Foundation/GTMHTTPServer.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Foundation/GTMNSAppleEventDescriptor+Foundation.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Foundation/GTMNSObject+KeyValueObserving.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMCALayer+UnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMNSObject+BindingUnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMNSObject+UnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="774965103">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMNSAnimatablePropertyContainer.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <reference key="sourceIdentifier" ref="712611361"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindow</string>
- <reference key="sourceIdentifier" ref="774965103"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindow</string>
- <reference key="sourceIdentifier" ref="712611361"/>
- </object>
- </object>
- </object>
- <int key="IBDocument.localizationMode">0</int>
- <string key="IBDocument.LastKnownRelativeProjectPath">../GTM.xcodeproj</string>
- <int key="IBDocument.defaultPropertyAccessControl">3</int>
- </data>
-</archive>
diff --git a/AppKit/GTMNSBezierPath+CGPathTest.m b/AppKit/GTMNSBezierPath+CGPathTest.m
index 3c99a19..d49e7a0 100644
--- a/AppKit/GTMNSBezierPath+CGPathTest.m
+++ b/AppKit/GTMNSBezierPath+CGPathTest.m
@@ -6,9 +6,9 @@
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy
// of the License at
-//
+//
// http://www.apache.org/licenses/LICENSE-2.0
-//
+//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
@@ -18,29 +18,35 @@
#import <Cocoa/Cocoa.h>
-#import <SenTestingKit/SenTestingKit.h>
#import "GTMNSBezierPath+CGPath.h"
-#import "GTMAppKit+UnitTesting.h"
#import "GTMSenTestCase.h"
-@interface GTMNSBezierPath_CGPathTest : GTMTestCase<GTMUnitTestViewDrawer>
+@interface GTMNSBezierPath_CGPathTest : GTMTestCase
@end
@implementation GTMNSBezierPath_CGPathTest
- (void)testCGPath {
- GTMAssertDrawingEqualToImageNamed(self,
- NSMakeSize(100, 100),
- @"GTMNSBezierPath+CGPathTest",
- nil, nil);
-}
-
+ NSBitmapImageRep *offscreenRep = [[[NSBitmapImageRep alloc]
+ initWithBitmapDataPlanes:NULL
+ pixelsWide:100
+ pixelsHigh:100
+ bitsPerSample:8
+ samplesPerPixel:4
+ hasAlpha:YES
+ isPlanar:NO
+ colorSpaceName:NSDeviceRGBColorSpace
+ bitmapFormat:NSAlphaFirstBitmapFormat
+ bytesPerRow:0
+ bitsPerPixel:0] autorelease];
-// Draws all of our tests so that we can compare this to our stored image file.
-- (void)gtm_unitTestViewDrawRect:(NSRect)rect contextInfo:(void*)contextInfo{
+ // set offscreen context
+ NSGraphicsContext *nsContext =
+ [NSGraphicsContext graphicsContextWithBitmapImageRep:offscreenRep];
+ [NSGraphicsContext setCurrentContext:nsContext];
NSBezierPath *thePath = [NSBezierPath bezierPath];
NSPoint theStart = NSMakePoint(20.0, 20.0);
-
+
// Test moveto/lineto
[thePath moveToPoint: theStart];
for (NSUInteger i = 0; i < 10; ++i) {
@@ -49,7 +55,7 @@
theNewPoint = NSMakePoint(i * 2, i * 6);
[thePath moveToPoint: theNewPoint];
}
-
+
// Test moveto/curveto
for (NSUInteger i = 0; i < 10; ++i) {
NSPoint startPoint = NSMakePoint(5.0, 50.0);
@@ -57,17 +63,19 @@
NSPoint controlPoint1 = NSMakePoint(17.5, 50.0 + 5.0 * i);
NSPoint controlPoint2 = NSMakePoint(42.5, 50.0 - 5.0 * i);
[thePath moveToPoint:startPoint];
- [thePath curveToPoint:endPoint controlPoint1:controlPoint1 controlPoint2:controlPoint2];
+ [thePath curveToPoint:endPoint
+ controlPoint1:controlPoint1
+ controlPoint2:controlPoint2];
}
// test close
[thePath closePath];
-
+
CGPathRef cgPath = [thePath gtm_CGPath];
- STAssertNotNULL(cgPath, @"Nil CGPath");
+ XCTAssertNotNULL(cgPath, @"Nil CGPath");
+
+ CGContextRef cgContext = [nsContext graphicsPort];
+ XCTAssertNotNULL(cgContext, @"Nil cgContext");
- CGContextRef cgContext = [[NSGraphicsContext currentContext] graphicsPort];
- STAssertNotNULL(cgContext, @"Nil cgContext");
-
CGContextAddPath(cgContext, cgPath);
CGContextStrokePath(cgContext);
}
diff --git a/AppKit/GTMNSBezierPath+RoundRectTest.m b/AppKit/GTMNSBezierPath+RoundRectTest.m
index 69a0621..02cd87b 100644
--- a/AppKit/GTMNSBezierPath+RoundRectTest.m
+++ b/AppKit/GTMNSBezierPath+RoundRectTest.m
@@ -6,9 +6,9 @@
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy
// of the License at
-//
+//
// http://www.apache.org/licenses/LICENSE-2.0
-//
+//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
@@ -18,23 +18,33 @@
#import <Cocoa/Cocoa.h>
-#import <SenTestingKit/SenTestingKit.h>
#import "GTMNSBezierPath+RoundRect.h"
-#import "GTMAppKit+UnitTesting.h"
+#import "GTMSenTestCase.h"
-@interface GTMNSBezierPath_RoundRectTest : GTMTestCase<GTMUnitTestViewDrawer>
+@interface GTMNSBezierPath_RoundRectTest : GTMTestCase
@end
@implementation GTMNSBezierPath_RoundRectTest
- (void)testRoundRects {
- GTMAssertDrawingEqualToImageNamed(self, NSMakeSize(490, 500),
- @"GTMNSBezierPath+RoundRectTest", nil, nil);
-}
+ NSBitmapImageRep *offscreenRep = [[[NSBitmapImageRep alloc]
+ initWithBitmapDataPlanes:NULL
+ pixelsWide:100
+ pixelsHigh:100
+ bitsPerSample:8
+ samplesPerPixel:4
+ hasAlpha:YES
+ isPlanar:NO
+ colorSpaceName:NSDeviceRGBColorSpace
+ bitmapFormat:NSAlphaFirstBitmapFormat
+ bytesPerRow:0
+ bitsPerPixel:0] autorelease];
-// Draws all of our tests so that we can compare this to our stored TIFF file.
-- (void)gtm_unitTestViewDrawRect:(NSRect)rect contextInfo:(void*)contextInfo{
- NSRect theRects[] = {
+ // set offscreen context
+ NSGraphicsContext *nsContext =
+ [NSGraphicsContext graphicsContextWithBitmapImageRep:offscreenRep];
+ [NSGraphicsContext setCurrentContext:nsContext];
+ NSRect theRects[] = {
NSMakeRect(0.0, 10.0, 0.0, 0.0), //Empty Rect test
NSMakeRect(50.0, 10.0, 30.0, 30.0), //Square Test
NSMakeRect(100.0, 10.0, 1.0, 2.0), //Small Test
@@ -43,16 +53,17 @@
NSMakeRect(300.0, 10.0, 150.0, 30.0) //Large Test 2 (for different radius)
};
const NSUInteger theRectCount = sizeof(theRects) / sizeof(theRects[0]);
-
+
// Line Width Tests
CGFloat theLineWidths[] = { 0.5, 50.0, 2.0 };
- const NSUInteger theLineWidthCount = sizeof(theLineWidths) / sizeof(theLineWidths[0]);
- NSUInteger i,j;
-
+ const NSUInteger theLineWidthCount =
+ sizeof(theLineWidths) / sizeof(theLineWidths[0]);
+ NSUInteger i, j;
+
for (i = 0; i < theLineWidthCount; ++i) {
for (j = 0; j < theRectCount; ++j) {
CGFloat cornerRadius = ( (j < (theRectCount - 1)) ? 20.0 : 0.0 );
- NSBezierPath *roundRect = [NSBezierPath gtm_bezierPathWithRoundRect:theRects[j]
+ NSBezierPath *roundRect = [NSBezierPath gtm_bezierPathWithRoundRect:theRects[j]
cornerRadius:cornerRadius];
[roundRect setLineWidth: theLineWidths[i]];
[roundRect stroke];
@@ -63,43 +74,43 @@
theRects[j].origin.y += newWidth;
}
}
-
+
// Fill test
- NSColor *theColors[] = {
- [NSColor colorWithCalibratedRed:1.0 green:0.0 blue:0.0 alpha:1.0],
+ NSColor *theColors[] = {
+ [NSColor colorWithCalibratedRed:1.0 green:0.0 blue:0.0 alpha:1.0],
[NSColor colorWithCalibratedRed:0.2 green:0.4 blue:0.6 alpha:0.4]
};
const NSUInteger theColorCount = sizeof(theColors)/sizeof(theColors[0]);
-
+
for (i = 0; i < theColorCount; ++i) {
for (j = 0; j < theRectCount; ++j) {
CGFloat cornerRadius = ( (j < (theRectCount - 1)) ? 10.0 : 0.0 );
- NSBezierPath *roundRect = [NSBezierPath gtm_bezierPathWithRoundRect:theRects[j]
+ NSBezierPath *roundRect = [NSBezierPath gtm_bezierPathWithRoundRect:theRects[j]
cornerRadius:cornerRadius];
[theColors[i] setFill];
[roundRect fill];
theRects[j].origin.y += 35.0;
}
}
-
+
// Flatness test
CGFloat theFlatness[] = {0.0, 0.1, 1.0, 10.0};
const NSUInteger theFlatnessCount = sizeof(theFlatness)/sizeof(theFlatness[0]);
-
+
for (i = 0; i < theFlatnessCount; i++) {
for (j = 0; j < theRectCount; ++j) {
CGFloat cornerRadius = ( (j < (theRectCount - 1)) ? 6.0 : 0.0 );
- NSBezierPath *roundRect = [NSBezierPath gtm_bezierPathWithRoundRect:theRects[j]
+ NSBezierPath *roundRect = [NSBezierPath gtm_bezierPathWithRoundRect:theRects[j]
cornerRadius:cornerRadius];
[roundRect setFlatness:theFlatness[i]];
[roundRect stroke];
theRects[j].origin.y += 35.0;
}
}
-
+
// Different radii
NSRect bigRect = NSMakeRect(50, 440, 200, 40);
- NSBezierPath *roundRect = [NSBezierPath gtm_bezierPathWithRoundRect:bigRect
+ NSBezierPath *roundRect = [NSBezierPath gtm_bezierPathWithRoundRect:bigRect
topLeftCornerRadius:0.0
topRightCornerRadius:5.0
bottomLeftCornerRadius:10.0
diff --git a/AppKit/GTMNSBezierPath+Shading.h b/AppKit/GTMNSBezierPath+Shading.h
deleted file mode 100644
index 5d68728..0000000
--- a/AppKit/GTMNSBezierPath+Shading.h
+++ /dev/null
@@ -1,121 +0,0 @@
-//
-// GTMNSBezierPath+Shading.h
-//
-// Category for radial and axial stroke and fill functions for NSBezierPaths
-//
-// Copyright 2006-2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import <Cocoa/Cocoa.h>
-#import "GTMDefines.h"
-
-@protocol GTMShading;
-
-//
-/// Category for radial and axial stroke and fill functions for NSBezierPaths
-//
-@interface NSBezierPath (GTMBezierPathShadingAdditions)
-
-/// Stroke the path axially with a color blend defined by |shading|.
-//
-/// The fill will extend from |fromPoint| to |toPoint| and will extend
-/// indefinitely perpendicular to the axis of the line defined by the
-/// two points. You can extend beyond the |fromPoint|/|toPoint by setting
-/// |extendingStart|/|extendingEnd| respectively.
-//
-// Args:
-// fromPoint: point to start the shading at
-// toPoint: point to end the shading at
-// extendingStart: should we extend the shading before |fromPoint| using
-// the first color in our shading?
-// extendingEnd: should we extend the shading after |toPoint| using the
-// last color in our shading?
-// shading: the shading to use to take our colors from.
-//
-- (void)gtm_strokeAxiallyFrom:(NSPoint)fromPoint to:(NSPoint)toPoint
- extendingStart:(BOOL)extendingStart extendingEnd:(BOOL)extendingEnd
- shading:(id<GTMShading>)shading;
-
-/// Stroke the path radially with a color blend defined by |shading|.
-//
-/// The fill will extend from the circle with center |fromPoint|
-/// and radius |fromRadius| to the circle with center |toPoint|
-/// with radius |toRadius|.
-/// You can extend beyond the |fromPoint|/|toPoint| by setting
-/// |extendingStart|/|extendingEnd| respectively.
-//
-// Args:
-// fromPoint: center of the circle to start the shading at
-// fromRadius: radius of the circle to start the shading at
-// toPoint: center of the circle to to end the shading at
-// toRadius: raidus of the circle to end the shading at
-// extendingStart: should we extend the shading before |fromPoint| using
-// the first color in our shading?
-// extendingEnd: should we extend the shading after |toPoint| using the
-// last color in our shading?
-// shading: the shading to use to take our colors from.
-//
-- (void)gtm_strokeRadiallyFrom:(NSPoint)fromPoint fromRadius:(CGFloat)fromRadius
- to:(NSPoint)toPoint toRadius:(CGFloat)toRadius
- extendingStart:(BOOL)extendingStart extendingEnd:(BOOL)extendingEnd
- shading:(id<GTMShading>)shading;
-
-/// Fill the path radially with a color blend defined by |shading|.
-//
-/// The fill will extend from the circle with center |fromPoint|
-/// and radius |fromRadius| to the circle with center |toPoint|
-/// with radius |toRadius|.
-/// You can extend beyond the |fromPoint|/|toPoint by setting
-/// |extendingStart|/|extendingEnd| respectively.
-//
-// Args:
-// fromPoint: center of the circle to start the shading at
-// fromRadius: radius of the circle to start the shading at
-// toPoint: center of the circle to to end the shading at
-// toRadius: radius of the circle to end the shading at
-// extendingStart: should we extend the shading before |fromPoint| using
-// the first color in our shading?
-// extendingEnd: should we extend the shading after |toPoint| using the
-// last color in our shading?
-// shading: the shading to use to take our colors from.
-//
-- (void)gtm_fillAxiallyFrom:(NSPoint)fromPoint to:(NSPoint)toPoint
- extendingStart:(BOOL)extendingStart extendingEnd:(BOOL)extendingEnd
- shading:(id<GTMShading>)shading;
-
-/// Fill the path radially with a color blend defined by |shading|.
-//
-/// The fill will extend from the circle with center |fromPoint|
-/// and radius |fromRadius| to the circle with center |toPoint|
-/// with radius |toRadius|.
-/// You can extend beyond the |fromPoint|/|toPoint by setting
-/// |extendingStart|/|extendingEnd| respectively.
-//
-// Args:
-// fromPoint: center of the circle to start the shading at
-// fromRadius: radius of the circle to start the shading at
-// toPoint: center of the circle to to end the shading at
-// toRadius: radius of the circle to end the shading at
-// extendingStart: should we extend the shading before |fromPoint| using
-// the first color in our shading?
-// extendingEnd: should we extend the shading after |toPoint| using the
-// last color in our shading?
-// shading: the shading to use to take our colors from.
-//
-- (void)gtm_fillRadiallyFrom:(NSPoint)fromPoint fromRadius:(CGFloat)fromRadius
- to:(NSPoint)toPoint toRadius:(CGFloat)toRadius
- extendingStart:(BOOL)extendingStart extendingEnd:(BOOL)extendingEnd
- shading:(id<GTMShading>)shading;
-@end
diff --git a/AppKit/GTMNSBezierPath+Shading.m b/AppKit/GTMNSBezierPath+Shading.m
deleted file mode 100644
index 5e65b14..0000000
--- a/AppKit/GTMNSBezierPath+Shading.m
+++ /dev/null
@@ -1,216 +0,0 @@
-//
-// GTMNSBezierPath+Shading.m
-//
-// Category for radial and axial stroke and fill functions for NSBezierPaths
-//
-// Copyright 2006-2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMNSBezierPath+Shading.h"
-#import "GTMNSBezierPath+CGPath.h"
-#import "GTMShading.h"
-#import "GTMGeometryUtils.h"
-#import "GTMMethodCheck.h"
-
-@interface NSBezierPath (GTMBezierPathShadingAdditionsPrivate)
-// Fills a CGPathRef either axially or radially with the given shading.
-//
-// Args:
-// path: path to fill
-// axially: if YES fill axially, otherwise fill radially
-// asStroke: if YES, clip to the stroke of the path, otherwise
-// clip to the fill
-// from: where to shade from
-// fromRadius: in a radial fill, the radius of the from circle
-// to: where to shade to
-// toRadius: in a radial fill, the radius of the to circle
-// extendingStart: if true, extend the fill with the first color of the shade
-// beyond |from| away from |to|
-// extendingEnd: if true, extend the fill with the last color of the shade
-// beyond |to| away from |from|
-// shading: the shading to use for the fill
-//
-- (void)gtm_fillCGPath:(CGPathRef)path
- axially:(BOOL)axially
- asStroke:(BOOL)asStroke
- from:(NSPoint)fromPoint fromRadius:(CGFloat)fromRadius
- to:(NSPoint)toPoint toRadius:(CGFloat)toRadius
- extendingStart:(BOOL)extendingStart extendingEnd:(BOOL)extendingEnd
- shading:(id<GTMShading>)shading;
-
-// Returns the point which is the projection of a line from point |pointA|
-// to |pointB| by length
-//
-// Args:
-// pointA: first point
-// pointB: second point
-// length: distance to project beyond |pointB| which is in line with
-// |pointA| and |pointB|
-//
-// Returns:
-// the projected point
-- (NSPoint)gtm_projectLineFrom:(NSPoint)pointA
- to:(NSPoint)pointB
- by:(CGFloat)length;
-@end
-
-
-@implementation NSBezierPath (GTMBezierPathAdditionsPrivate)
-
-- (void)gtm_fillCGPath:(CGPathRef)path
- axially:(BOOL)axially asStroke:(BOOL)asStroke
- from:(NSPoint)fromPoint fromRadius:(CGFloat)fromRadius
- to:(NSPoint)toPoint toRadius:(CGFloat)toRadius
- extendingStart:(BOOL)extendingStart extendingEnd:(BOOL)extendingEnd
- shading:(id<GTMShading>)shading {
- CGFunctionRef shadingFunction = [shading shadeFunction];
- if (nil != shadingFunction) {
- CGContextRef currentContext = (CGContextRef)[[NSGraphicsContext currentContext] graphicsPort];
- if (nil != currentContext) {
- CGContextSaveGState(currentContext);
- CGFloat lineWidth = [self lineWidth];
- CGContextSetLineWidth(currentContext, lineWidth);
- if (asStroke) {
- // if we are using the stroke, we offset the from and to points
- // by half the stroke width away from the center of the stroke.
- // Otherwise we tend to end up with fills that only cover half of the
- // because users set the start and end points based on the center
- // of the stroke.
- CGFloat halfWidth = lineWidth * 0.5;
- fromPoint = [self gtm_projectLineFrom:toPoint to:fromPoint by:halfWidth];
- toPoint = [self gtm_projectLineFrom:fromPoint to:toPoint by:-halfWidth];
- }
- CGColorSpaceRef colorspace = [shading colorSpace];
- if (nil != colorspace) {
- CGPoint toCGPoint = {.x = toPoint.x, .y = toPoint.y};
- CGPoint fromCGPoint = {.x = fromPoint.x, .y = fromPoint.y};
- CGShadingRef myCGShading;
- if(axially) {
- myCGShading = CGShadingCreateAxial(colorspace, fromCGPoint,
- toCGPoint, shadingFunction,
- extendingStart == YES,
- extendingEnd == YES);
- }
- else {
- myCGShading = CGShadingCreateRadial(colorspace, fromCGPoint, fromRadius,
- toCGPoint, toRadius, shadingFunction,
- extendingStart == YES,
- extendingEnd == YES);
- }
-
- if (nil != myCGShading) {
- CGContextAddPath(currentContext,path);
- if(asStroke) {
- CGContextReplacePathWithStrokedPath(currentContext);
- }
- CGContextClip(currentContext);
- CGContextDrawShading(currentContext, myCGShading);
- CGShadingRelease(myCGShading);
- }
- }
- CGContextRestoreGState(currentContext);
- }
- }
-}
-
-
-- (NSPoint)gtm_projectLineFrom:(NSPoint)pointA
- to:(NSPoint)pointB
- by:(CGFloat)length {
- NSPoint newPoint = NSMakePoint(pointB.x, pointB.y);
- CGFloat x = (pointB.x - pointA.x);
- CGFloat y = (pointB.y - pointA.y);
- if (fpclassify(x) == FP_ZERO) {
- newPoint.y += length;
- } else if (fpclassify(y) == FP_ZERO) {
- newPoint.x += length;
- } else {
-#if CGFLOAT_IS_DOUBLE
- CGFloat angle = atan(y / x);
- newPoint.x += sin(angle) * length;
- newPoint.y += cos(angle) * length;
-#else
- CGFloat angle = atanf(y / x);
- newPoint.x += sinf(angle) * length;
- newPoint.y += cosf(angle) * length;
-#endif
- }
- return newPoint;
-}
-
-@end
-
-
-@implementation NSBezierPath (GTMBezierPathShadingAdditions)
-GTM_METHOD_CHECK(NSBezierPath, gtm_CGPath);
-
-- (void)gtm_strokeAxiallyFrom:(NSPoint)fromPoint to:(NSPoint)toPoint
- extendingStart:(BOOL)extendingStart extendingEnd:(BOOL)extendingEnd
- shading:(id<GTMShading>)shading {
- CGPathRef thePath = [self gtm_CGPath];
- if (nil != thePath) {
- [self gtm_fillCGPath:thePath axially:YES asStroke:YES
- from:fromPoint fromRadius:(CGFloat)0.0
- to:toPoint toRadius:(CGFloat)0.0
- extendingStart:extendingStart extendingEnd:extendingEnd
- shading:shading];
- }
-}
-
-
-- (void)gtm_strokeRadiallyFrom:(NSPoint)fromPoint fromRadius:(CGFloat)fromRadius
- to:(NSPoint)toPoint toRadius:(CGFloat)toRadius
- extendingStart:(BOOL)extendingStart extendingEnd:(BOOL)extendingEnd
- shading:(id<GTMShading>)shading {
- CGPathRef thePath = [self gtm_CGPath];
- if (nil != thePath) {
- [self gtm_fillCGPath:thePath axially:NO asStroke:YES
- from:fromPoint fromRadius:fromRadius
- to:toPoint toRadius:toRadius
- extendingStart:extendingStart extendingEnd:extendingEnd
- shading:shading];
- }
-}
-
-
-- (void)gtm_fillAxiallyFrom:(NSPoint)fromPoint to:(NSPoint)toPoint
- extendingStart:(BOOL)extendingStart extendingEnd:(BOOL)extendingEnd
- shading:(id<GTMShading>)shading {
- CGPathRef thePath = [self gtm_CGPath];
- if (nil != thePath) {
- [self gtm_fillCGPath:thePath axially:YES asStroke:NO
- from:fromPoint fromRadius:(CGFloat)0.0
- to:toPoint toRadius:(CGFloat)0.0
- extendingStart:extendingStart extendingEnd:extendingEnd
- shading:shading];
- }
-}
-
-
-- (void)gtm_fillRadiallyFrom:(NSPoint)fromPoint fromRadius:(CGFloat)fromRadius
- to:(NSPoint)toPoint toRadius:(CGFloat)toRadius
- extendingStart:(BOOL)extendingStart extendingEnd:(BOOL)extendingEnd
- shading:(id<GTMShading>)shading {
- CGPathRef thePath = [self gtm_CGPath];
- if (nil != thePath) {
- [self gtm_fillCGPath:thePath axially:NO asStroke:NO
- from:fromPoint fromRadius:fromRadius
- to:toPoint toRadius:toRadius
- extendingStart:extendingStart extendingEnd:extendingEnd
- shading:shading];
- }
-}
-
-@end
diff --git a/AppKit/GTMNSBezierPath+ShadingTest.m b/AppKit/GTMNSBezierPath+ShadingTest.m
deleted file mode 100644
index a9dfbef..0000000
--- a/AppKit/GTMNSBezierPath+ShadingTest.m
+++ /dev/null
@@ -1,177 +0,0 @@
-//
-// GTMNSBezierPath+ShadingTest.m
-//
-// Copyright 2006-2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import <Cocoa/Cocoa.h>
-
-#import <SenTestingKit/SenTestingKit.h>
-
-#import "GTMLinearRGBShading.h"
-#import "GTMAppKit+UnitTesting.h"
-#import "GTMNSBezierPath+Shading.h"
-
-@interface GTMNSBezierPath_ShadingTest : GTMTestCase<GTMUnitTestViewDrawer>
-@end
-
-@implementation GTMNSBezierPath_ShadingTest
-
-- (void)testShadings {
- GTMAssertDrawingEqualToImageNamed(self,
- NSMakeSize(310, 410),
- @"GTMNSBezierPath+ShadingTest", nil, nil);
-}
-
-- (void)gtm_unitTestViewDrawRect:(NSRect)rect contextInfo:(void*)contextInfo {
-
- NSColor *theColorArray[] = { [NSColor blueColor],
- [NSColor redColor], [NSColor yellowColor],
- [NSColor blueColor], [NSColor greenColor],
- [NSColor redColor] };
- CGFloat theFloatArray[] = { 0.0, 0.2, 0.4, 0.6, 0.8, 1.0 };
-
- GTMLinearRGBShading *shading =
- [GTMLinearRGBShading shadingWithColors:theColorArray
- fromSpaceNamed:NSCalibratedRGBColorSpace
- atPositions:theFloatArray
- count:sizeof(theFloatArray)/sizeof(CGFloat)];
- NSBezierPath *shadedPath;
-
- // axial stroke rect - diagonal fill
- NSRect axialStrokeRect = NSMakeRect(10.0f, 10.0f, 90.0f, 90.0f);
- shadedPath = [NSBezierPath bezierPathWithRect:axialStrokeRect];
- [shadedPath setLineWidth: 10.0f];
- NSPoint startPoint = NSMakePoint(axialStrokeRect.origin.x + 20.0f,
- axialStrokeRect.origin.y + 20.0f);
- NSPoint endPoint = NSMakePoint(axialStrokeRect.origin.x + axialStrokeRect.size.width - 20.0f,
- axialStrokeRect.origin.y + axialStrokeRect.size.height - 20.0f);
- [shadedPath gtm_strokeAxiallyFrom:startPoint to:endPoint extendingStart:YES extendingEnd:YES shading:shading];
-
- // axial stroke rect - v line fill
- axialStrokeRect = NSMakeRect(110.0f, 10.0f, 90.0f, 90.0f);
- shadedPath = [NSBezierPath bezierPathWithRect:axialStrokeRect];
- [shadedPath setLineWidth: 10.0f];
- startPoint = NSMakePoint(axialStrokeRect.origin.x + axialStrokeRect.size.width / 2.0f,
- axialStrokeRect.origin.y + 20.0f);
- endPoint = NSMakePoint(axialStrokeRect.origin.x + axialStrokeRect.size.width / 2.0f,
- axialStrokeRect.origin.y + axialStrokeRect.size.height - 20.0f);
- [shadedPath gtm_strokeAxiallyFrom:startPoint to:endPoint extendingStart:YES extendingEnd:YES shading:shading];
-
- // axial stroke rect - h line fill
- axialStrokeRect = NSMakeRect(210.0f, 10.0f, 90.0f, 90.0f);
- shadedPath = [NSBezierPath bezierPathWithRect:axialStrokeRect];
- [shadedPath setLineWidth: 10.0f];
- startPoint = NSMakePoint(axialStrokeRect.origin.x + 20.0f,
- axialStrokeRect.origin.y + axialStrokeRect.size.height / 2.0f);
- endPoint = NSMakePoint(axialStrokeRect.origin.x + axialStrokeRect.size.width - 20.0f,
- axialStrokeRect.origin.y + axialStrokeRect.size.height / 2.0f);
- [shadedPath gtm_strokeAxiallyFrom:startPoint to:endPoint extendingStart:YES extendingEnd:YES shading:shading];
-
- // axial fill rect - diagonal fill
- NSRect axialFillRect = NSMakeRect(10.0f, 110.0f, 90.0f, 90.0f);
- shadedPath = [NSBezierPath bezierPathWithRect:axialFillRect];
- startPoint = NSMakePoint(axialFillRect.origin.x + 20.0f,
- axialFillRect.origin.y + 20.0f);
- endPoint = NSMakePoint(axialFillRect.origin.x + axialFillRect.size.width - 20.0f,
- axialFillRect.origin.y + axialFillRect.size.height - 20.0f);
- [shadedPath gtm_fillAxiallyFrom:startPoint to:endPoint extendingStart:YES extendingEnd:YES shading:shading];
-
- // axial fill rect - v line fill
- axialFillRect = NSMakeRect(110.0f, 110.0f, 90.0f, 90.0f);
- shadedPath = [NSBezierPath bezierPathWithRect:axialFillRect];
- startPoint = NSMakePoint(axialFillRect.origin.x + axialFillRect.size.width / 2.0f,
- axialFillRect.origin.y + 20.0f);
- endPoint = NSMakePoint(axialFillRect.origin.x + axialFillRect.size.width / 2.0f,
- axialFillRect.origin.y + axialFillRect.size.height - 20.0f);
- [shadedPath gtm_fillAxiallyFrom:startPoint to:endPoint extendingStart:YES extendingEnd:YES shading:shading];
-
- // axial fill rect - h line fill
- axialFillRect = NSMakeRect(210.0f, 110.0f, 90.0f, 90.0f);
- shadedPath = [NSBezierPath bezierPathWithRect:axialFillRect];
- startPoint = NSMakePoint(axialFillRect.origin.x + 20.0f,
- axialFillRect.origin.y + axialFillRect.size.height / 2.0f);
- endPoint = NSMakePoint(axialFillRect.origin.x + axialFillRect.size.width - 20.0f,
- axialFillRect.origin.y + axialFillRect.size.height / 2.0f);
- [shadedPath gtm_fillAxiallyFrom:startPoint to:endPoint extendingStart:YES extendingEnd:YES shading:shading];
-
- // radial stroke rect - diagonal fill
- NSRect radialStrokeRect = NSMakeRect(10.0f, 210.0f, 90.0f, 90.0f);
- shadedPath = [NSBezierPath bezierPathWithRect:radialStrokeRect];
- startPoint = NSMakePoint(radialStrokeRect.origin.x + 20.0f,
- radialStrokeRect.origin.y + 20.0f);
- endPoint = NSMakePoint(radialStrokeRect.origin.x + radialStrokeRect.size.width - 20.0f,
- radialStrokeRect.origin.y + radialStrokeRect.size.height - 20.0f);
- [shadedPath gtm_strokeRadiallyFrom:startPoint fromRadius:60.0f
- to:endPoint toRadius:20.0f
- extendingStart:YES extendingEnd:YES shading:shading];
-
- // radial stroke rect - v line fill
- radialStrokeRect = NSMakeRect(110.0f, 210.0f, 90.0f, 90.0f);
- shadedPath = [NSBezierPath bezierPathWithRect:radialStrokeRect];
- startPoint = NSMakePoint(radialStrokeRect.origin.x + radialStrokeRect.size.width / 2.0f,
- radialStrokeRect.origin.y + 20.0f);
- endPoint = NSMakePoint(radialStrokeRect.origin.x + radialStrokeRect.size.width / 2.0f,
- radialStrokeRect.origin.y + radialStrokeRect.size.height - 20.0f);
- [shadedPath gtm_strokeRadiallyFrom:startPoint fromRadius:60.0f
- to:endPoint toRadius:20.0f
- extendingStart:YES extendingEnd:YES shading:shading];
-
- // radial stroke rect - h line fill
- radialStrokeRect = NSMakeRect(210.0f, 210.0f, 90.0f, 90.0f);
- shadedPath = [NSBezierPath bezierPathWithRect:radialStrokeRect];
- startPoint = NSMakePoint(radialStrokeRect.origin.x + 20.0f,
- radialStrokeRect.origin.y + radialStrokeRect.size.height / 2.0f);
- endPoint = NSMakePoint(radialStrokeRect.origin.x + radialStrokeRect.size.width - 20.0f,
- radialStrokeRect.origin.y + radialStrokeRect.size.height / 2.0f);
- [shadedPath gtm_strokeRadiallyFrom:startPoint fromRadius:60.0f
- to:endPoint toRadius:20.0f
- extendingStart:YES extendingEnd:YES shading:shading];
-
- // radial fill rect - diagonal fill
- NSRect radialFillRect = NSMakeRect(10.0f, 310.0f, 90.0f, 90.0f);
- shadedPath = [NSBezierPath bezierPathWithRect:radialFillRect];
- startPoint = NSMakePoint(radialFillRect.origin.x + 20.0f,
- radialFillRect.origin.y + 20.0f);
- endPoint = NSMakePoint(radialFillRect.origin.x + radialFillRect.size.width - 20.0f,
- radialFillRect.origin.y + radialFillRect.size.height - 20.0f);
- [shadedPath gtm_fillRadiallyFrom:startPoint fromRadius:10.0f
- to:endPoint toRadius:20.0f
- extendingStart:YES extendingEnd:YES shading:shading];
-
- // radial fill rect - v line fill
- radialFillRect = NSMakeRect(110.0f, 310.0f, 90.0f, 90.0f);
- shadedPath = [NSBezierPath bezierPathWithRect:radialFillRect];
- startPoint = NSMakePoint(radialFillRect.origin.x + radialFillRect.size.width / 2.0f,
- radialFillRect.origin.y + 20.0f);
- endPoint = NSMakePoint(radialFillRect.origin.x + radialFillRect.size.width / 2.0f,
- radialFillRect.origin.y + radialFillRect.size.height - 20.0f);
- [shadedPath gtm_fillRadiallyFrom:startPoint fromRadius:10.0f
- to:endPoint toRadius:20.0f
- extendingStart:YES extendingEnd:YES shading:shading];
-
- // radial fill rect - h line fill
- radialFillRect = NSMakeRect(210.0f, 310.0f, 90.0f, 90.0f);
- shadedPath = [NSBezierPath bezierPathWithRect:radialFillRect];
- startPoint = NSMakePoint(radialFillRect.origin.x + 20.0f,
- radialFillRect.origin.y + radialFillRect.size.height / 2.0f);
- endPoint = NSMakePoint(radialFillRect.origin.x + radialFillRect.size.width - 20.0f,
- radialFillRect.origin.y + radialFillRect.size.height / 2.0f);
- [shadedPath gtm_fillRadiallyFrom:startPoint fromRadius:10.0f
- to:endPoint toRadius:20.0f
- extendingStart:YES extendingEnd:YES shading:shading];
-}
-
-@end
diff --git a/AppKit/GTMNSColor+LuminanceTest.m b/AppKit/GTMNSColor+LuminanceTest.m
index 82eb014..8907623 100644
--- a/AppKit/GTMNSColor+LuminanceTest.m
+++ b/AppKit/GTMNSColor+LuminanceTest.m
@@ -6,9 +6,9 @@
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy
// of the License at
-//
+//
// http://www.apache.org/licenses/LICENSE-2.0
-//
+//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
@@ -25,7 +25,7 @@
@interface GTMNSColor_LuminanceTest : GTMTestCase
@end
-
+
@implementation GTMNSColor_LuminanceTest
- (void)testLuminance {
@@ -34,37 +34,31 @@
NSColor *lighter = [midtone gtm_colorAdjustedFor:GTMColorationBaseHighlight];
NSColor *lightest = [midtone gtm_colorAdjustedFor:GTMColorationLightHighlight];
NSColor *darkest = [midtone gtm_colorAdjustedFor:GTMColorationDarkShadow];
-
+
// The relationships of the other values are not set, so we don't test them yet
- STAssertGreaterThanOrEqual([lightest gtm_luminance],
- [lighter gtm_luminance], nil);
- STAssertGreaterThanOrEqual([lighter gtm_luminance],
- [midtone gtm_luminance], nil);
- STAssertGreaterThanOrEqual([midtone gtm_luminance],
- [darker gtm_luminance], nil);
- STAssertGreaterThanOrEqual([darker gtm_luminance],
- [darkest gtm_luminance], nil);
- STAssertGreaterThanOrEqual([[NSColor whiteColor] gtm_luminance],
- (CGFloat)0.95, nil);
- STAssertGreaterThanOrEqual([[NSColor yellowColor] gtm_luminance],
- (CGFloat)0.90, nil);
- STAssertEqualsWithAccuracy([[NSColor blueColor] gtm_luminance],
- (CGFloat)0.35, 0.10, nil);
- STAssertEqualsWithAccuracy([[NSColor redColor] gtm_luminance],
- (CGFloat)0.50, 0.10, nil);
- STAssertLessThanOrEqual([[NSColor blackColor] gtm_luminance],
- (CGFloat)0.30, nil);
- STAssertTrue([[NSColor blackColor] gtm_isDarkColor], nil);
- STAssertTrue([[NSColor blueColor] gtm_isDarkColor], nil);
- STAssertTrue([[NSColor redColor] gtm_isDarkColor], nil);
- STAssertTrue(![[NSColor whiteColor] gtm_isDarkColor], nil);
- STAssertTrue(![[NSColor yellowColor] gtm_isDarkColor], nil);
- STAssertGreaterThanOrEqual([[[NSColor blackColor] gtm_legibleTextColor]
- gtm_luminance],
- [[NSColor grayColor] gtm_luminance], nil);
- STAssertLessThanOrEqual([[[NSColor whiteColor] gtm_legibleTextColor]
- gtm_luminance],
- [[NSColor grayColor] gtm_luminance], nil);
+ XCTAssertGreaterThanOrEqual([lightest gtm_luminance], [lighter gtm_luminance]);
+ XCTAssertGreaterThanOrEqual([lighter gtm_luminance], [midtone gtm_luminance]);
+ XCTAssertGreaterThanOrEqual([midtone gtm_luminance], [darker gtm_luminance]);
+ XCTAssertGreaterThanOrEqual([darker gtm_luminance], [darkest gtm_luminance]);
+ XCTAssertGreaterThanOrEqual([[NSColor whiteColor] gtm_luminance], (CGFloat)0.95);
+ XCTAssertGreaterThanOrEqual([[NSColor yellowColor] gtm_luminance], (CGFloat)0.90);
+ XCTAssertEqualWithAccuracy([[NSColor blueColor] gtm_luminance],
+ (CGFloat)0.35, 0.10);
+ XCTAssertEqualWithAccuracy([[NSColor redColor] gtm_luminance],
+ (CGFloat)0.50, 0.10);
+ XCTAssertLessThanOrEqual([[NSColor blackColor] gtm_luminance],
+ (CGFloat)0.30);
+ XCTAssertTrue([[NSColor blackColor] gtm_isDarkColor]);
+ XCTAssertTrue([[NSColor blueColor] gtm_isDarkColor]);
+ XCTAssertTrue([[NSColor redColor] gtm_isDarkColor]);
+ XCTAssertTrue(![[NSColor whiteColor] gtm_isDarkColor]);
+ XCTAssertTrue(![[NSColor yellowColor] gtm_isDarkColor]);
+ XCTAssertGreaterThanOrEqual([[[NSColor blackColor] gtm_legibleTextColor]
+ gtm_luminance],
+ [[NSColor grayColor] gtm_luminance]);
+ XCTAssertLessThanOrEqual([[[NSColor whiteColor] gtm_legibleTextColor]
+ gtm_luminance],
+ [[NSColor grayColor] gtm_luminance]);
}
@end
diff --git a/AppKit/GTMNSImage+Scaling.h b/AppKit/GTMNSImage+Scaling.h
deleted file mode 100644
index 0f87709..0000000
--- a/AppKit/GTMNSImage+Scaling.h
+++ /dev/null
@@ -1,53 +0,0 @@
-//
-// GTMNSImage+Scaling.h
-//
-// Scales NSImages to a variety of sizes for drawing
-//
-// Copyright 2006-2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-
-#import <AppKit/AppKit.h>
-#import "GTMDefines.h"
-
-@interface NSImage (GTMNSImageScaling)
-
-// Return an existing representation of a size
-- (NSImageRep *)gtm_representationOfSize:(NSSize)size;
-
-#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_6
-// Return the exact or next largest representation for a size
-// If you are on SnowLeopard use
-// -[NSImage bestRepresentationForRect:context:hints:]
-// Also, please see http://openradar.appspot.com/radar?id=394401
-// and read notes in GTMNSImage+ScalingTest.m. Search for "8052200".
-- (NSImageRep *)gtm_bestRepresentationForSize:(NSSize)size;
-#endif
-
-// Create a new represetation for a given size
-- (BOOL)gtm_createRepresentationOfSize:(NSSize)size;
-
-// Create 32 and 16px reps
-- (BOOL)gtm_createIconRepresentations;
-
-// Remove reps larger than a given size and create a new rep if needed
-- (void)gtm_shrinkToSize:(NSSize)size;
-
-// Remove reps larger than a given size
-- (void)gtm_removeRepresentationsLargerThanSize:(NSSize)size;
-
-// Return a dup shrunk to a given size
-- (NSImage *)gtm_duplicateOfSize:(NSSize)size;
-@end
diff --git a/AppKit/GTMNSImage+Scaling.m b/AppKit/GTMNSImage+Scaling.m
deleted file mode 100644
index bb65afb..0000000
--- a/AppKit/GTMNSImage+Scaling.m
+++ /dev/null
@@ -1,192 +0,0 @@
-//
-// GTMNSImage+Scaling.m
-//
-// Scales NSImages to a variety of sizes for drawing
-//
-// Copyright 2006-2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMNSImage+Scaling.h"
-#import "GTMGeometryUtils.h"
-
-@implementation NSImage (GTMNSImageScaling)
-
-#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_6
-// If you are on SnowLeopard use
-// -[NSImage bestRepresentationForRect:context:hints:]
-- (NSImageRep *)gtm_bestRepresentationForSize:(NSSize)size {
- NSImageRep *bestRep = [self gtm_representationOfSize:size];
- if (bestRep) {
- return bestRep;
- }
- NSArray *reps = [self representations];
-
- CGFloat repDistance = CGFLOAT_MAX;
-
- NSImageRep *thisRep;
- GTM_FOREACH_OBJECT(thisRep, reps) {
- CGFloat thisDistance;
- thisDistance = MIN(size.width - [thisRep size].width,
- size.height - [thisRep size].height);
-
- if (repDistance < 0 && thisDistance > 0) continue;
- if (ABS(thisDistance) < ABS(repDistance)
- || (thisDistance < 0 && repDistance > 0)) {
- repDistance = thisDistance;
- bestRep = thisRep;
- }
- }
-
- if (!bestRep) {
- bestRep = [self bestRepresentationForDevice:nil];
- }
-
- return bestRep;
-}
-#endif // MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_6
-
-- (NSImageRep *)gtm_representationOfSize:(NSSize)size {
- NSArray *reps = [self representations];
-
- NSImageRep *thisRep;
- GTM_FOREACH_OBJECT(thisRep, reps) {
- if (NSEqualSizes([thisRep size], size)) {
- return thisRep;
- }
- }
- return nil;
-}
-
-- (BOOL)gtm_createIconRepresentations {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- [self setFlipped:NO];
- [self gtm_createRepresentationOfSize:NSMakeSize(16, 16)];
- [self gtm_createRepresentationOfSize:NSMakeSize(32, 32)];
- [self setScalesWhenResized:NO];
-#pragma clang diagnostic pop
- return YES;
-}
-
-- (BOOL)gtm_createRepresentationOfSize:(NSSize)size {
- if ([self gtm_representationOfSize:size]) {
- return NO;
- }
-
- NSBitmapImageRep *bestRep;
-#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_6
- bestRep = (NSBitmapImageRep *)[self gtm_bestRepresentationForSize:size];
-#else
- bestRep
- = (NSBitmapImageRep *)[self bestRepresentationForRect:GTMNSRectOfSize(size)
- context:nil
- hints:nil];
-#endif // MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_6
-
- NSRect drawRect = GTMNSScaleRectToRect(GTMNSRectOfSize([bestRep size]),
- GTMNSRectOfSize(size),
- GTMScaleProportionally,
- GTMRectAlignCenter);
- // Using NSSelectorFromString because CGImage isn't a declared selector
- // on Tiger, and just using straight @selector(CGImage) will cause compile
- // errors on a 10.4 SDK.
- SEL cgImageSel = NSSelectorFromString(@"CGImage");
- if ([bestRep respondsToSelector:cgImageSel]) {
- CGImageRef imageRef = (CGImageRef)[bestRep performSelector:cgImageSel];
-
- CGColorSpaceRef cspace = CGColorSpaceCreateDeviceRGB();
- if (!cspace) return NO;
-
- CGContextRef smallContext =
- CGBitmapContextCreate(NULL,
- size.width,
- size.height,
- 8, // bits per component
- size.width * 4, // bytes per pixel
- cspace,
- kCGBitmapByteOrder32Host
- | kCGImageAlphaPremultipliedLast);
- CFRelease(cspace);
-
- if (!smallContext) return NO;
-
-
- CGContextDrawImage(smallContext, GTMNSRectToCGRect(drawRect), imageRef);
-
- CGImageRef smallImage = CGBitmapContextCreateImage(smallContext);
-
- if (smallImage) {
- NSBitmapImageRep *cgRep =
- [[[NSBitmapImageRep alloc] initWithCGImage:smallImage] autorelease];
- [self addRepresentation:cgRep];
- CGImageRelease(smallImage);
- } else {
- CGContextRelease(smallContext);
- return NO;
- }
- CGContextRelease(smallContext);
- return YES;
- } else {
- // This functionality is here to allow it to work under Tiger
- // It can probably only be called safely from the main thread
- NSImage* scaledImage = [[NSImage alloc] initWithSize:size];
- [scaledImage lockFocus];
- NSGraphicsContext *graphicsContext = [NSGraphicsContext currentContext];
- [graphicsContext setImageInterpolation:NSImageInterpolationHigh];
- [graphicsContext setShouldAntialias:YES];
- [bestRep drawInRect:drawRect];
- NSBitmapImageRep* iconRep =
- [[[NSBitmapImageRep alloc] initWithFocusedViewRect:
- NSMakeRect(0, 0, size.width, size.height)] autorelease];
- [scaledImage unlockFocus];
- [scaledImage release];
- [self addRepresentation:iconRep];
- return YES;
- }
- return NO;
-}
-
-- (void)gtm_removeRepresentationsLargerThanSize:(NSSize)size {
- NSMutableArray *repsToRemove = [NSMutableArray array];
- NSImageRep *thisRep;
- // Remove them in a second loop so we don't change things will doing the
- // initial loop.
- GTM_FOREACH_OBJECT(thisRep, [self representations]) {
- if ([thisRep size].width > size.width
- && [thisRep size].height > size.height) {
- [repsToRemove addObject:thisRep];
- }
- }
- GTM_FOREACH_OBJECT(thisRep, repsToRemove) {
- [self removeRepresentation:thisRep];
- }
-}
-
-- (NSImage *)gtm_duplicateOfSize:(NSSize)size {
- NSImage *duplicate = [[self copy] autorelease];
- [duplicate gtm_shrinkToSize:size];
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- [duplicate setFlipped:NO];
-#pragma clang diagnostic pop
- return duplicate;
-}
-
-- (void)gtm_shrinkToSize:(NSSize)size {
- [self gtm_createRepresentationOfSize:size];
- [self setSize:size];
- [self gtm_removeRepresentationsLargerThanSize:size];
-}
-@end
diff --git a/AppKit/GTMNSImage+ScalingTest.m b/AppKit/GTMNSImage+ScalingTest.m
deleted file mode 100644
index 426e21b..0000000
--- a/AppKit/GTMNSImage+ScalingTest.m
+++ /dev/null
@@ -1,83 +0,0 @@
-//
-// GTMNSImage+ScalingTest.m
-//
-// Copyright 2006-2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import <Cocoa/Cocoa.h>
-
-#import "GTMSenTestCase.h"
-
-#import "GTMNSImage+Scaling.h"
-#import "GTMGeometryUtils.h"
-
-@interface GTMNSImage_ScalingTest : GTMTestCase
-@end
-
-@implementation GTMNSImage_ScalingTest
-
-- (void)testScaling {
- NSImage *testImage = [NSImage imageNamed:@"NSApplicationIcon"];
-
- NSImageRep *rep = nil;
- NSRect bestRepRect = NSMakeRect(0, 0, 99, 99);
-
-#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6
- rep = [testImage bestRepresentationForRect:bestRepRect
- context:nil
- hints:nil];
-#else
- rep = [testImage gtm_bestRepresentationForSize:bestRepRect.size];
-#endif // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6
-
- STAssertTrue(NSEqualSizes([rep size], NSMakeSize(128, 128)), nil);
-
- [testImage gtm_createIconRepresentations];
- STAssertNotNil([testImage gtm_representationOfSize:NSMakeSize(16, 16)], nil);
- STAssertNotNil([testImage gtm_representationOfSize:NSMakeSize(32, 32)], nil);
-
- NSImage *duplicate = [testImage gtm_duplicateOfSize:NSMakeSize(48, 48)];
- bestRepRect = NSMakeRect(0, 0, 48, 48);
-#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6
- rep = [duplicate bestRepresentationForRect:bestRepRect
- context:nil
- hints:nil];
-#else
- rep = [duplicate gtm_bestRepresentationForSize:bestRepRect.size];
-#endif // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6
- STAssertTrue(NSEqualSizes([rep size], NSMakeSize(48, 48)),
- @"Size is %@", NSStringFromSize([rep size]));
-
- // This should IMHO return 48,48 on both 10.6 and 10.5. It makes no sense
- // at all that it returns 32,32 on 10_6 when the above code works for 48,48.
- // rdar://8052200 "NSImage bestRepresentationForRect:context:hints: doesn't
- // return the best rep"
- // http://openradar.appspot.com/radar?id=394401
- bestRepRect = NSMakeRect(0, 0, 50, 50);
-#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6
- rep = [duplicate bestRepresentationForRect:bestRepRect
- context:nil
- hints:nil];
- STAssertFalse(NSEqualSizes([rep size], NSMakeSize(48, 48)),
- @"Size is %@", NSStringFromSize([rep size]));
-#else
- rep = [duplicate gtm_bestRepresentationForSize:bestRepRect.size];
- STAssertTrue(NSEqualSizes([rep size], NSMakeSize(48, 48)),
- @"Size is %@", NSStringFromSize([rep size]));
-#endif // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6
-
-}
-
-@end
diff --git a/AppKit/GTMNSImage+SearchCache.h b/AppKit/GTMNSImage+SearchCache.h
deleted file mode 100644
index 4e3a10d..0000000
--- a/AppKit/GTMNSImage+SearchCache.h
+++ /dev/null
@@ -1,41 +0,0 @@
-//
-// GTMNSImage+SearchCache.h
-//
-// Finds NSImages using a variety of techniques
-//
-// Copyright 2009 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-// This category provides convenience methods for image initialization based
-// on creating an image by searching the following locations:
-//
-// * A specified bundle
-// * Main bundle / +[NSImage imageNamed]
-// * An exact path for an image
-// * An exact path for any file (using the icon)
-// * An app bundle id (using the icon)
-// * A file type as .extension, 'OSTYPE' (in single quotes), or UTI
-// * An icon in the system icon bundle
-//
-// TODO(alcor): this class should have basic MRU cache
-//
-
-#import <AppKit/AppKit.h>
-
-@interface NSImage (GTMNSImageSearchCache)
-+ (NSImage *)gtm_imageWithPath:(NSString *)path;
-+ (NSImage *)gtm_imageNamed:(NSString *)name;
-+ (NSImage *)gtm_imageNamed:(NSString *)name forBundle:(NSBundle *)bundle;
-@end
diff --git a/AppKit/GTMNSImage+SearchCache.m b/AppKit/GTMNSImage+SearchCache.m
deleted file mode 100644
index 21f2ce8..0000000
--- a/AppKit/GTMNSImage+SearchCache.m
+++ /dev/null
@@ -1,90 +0,0 @@
-//
-// GTMNSImage+SearchCache.m
-//
-// Finds NSImages using a variety of techniques
-//
-// Copyright 2009 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMNSImage+SearchCache.h"
-#import "GTMDefines.h"
-
-@implementation NSImage (GTMNSImageSearchCache)
-+ (NSImage *)gtm_imageWithPath:(NSString *)path {
- return [[[NSImage alloc] initWithContentsOfFile:path] autorelease];
-}
-
-+ (NSImage *)gtm_imageNamed:(NSString *)name {
- return [self gtm_imageNamed:name forBundle:nil];
-}
-
-+ (NSImage *)gtm_imageNamed:(NSString *)name forBundle:(NSBundle *)bundle {
- NSWorkspace *workspace = [NSWorkspace sharedWorkspace];
- NSImage *image = nil;
-
- // Check our specified bundle first
- if (!image) {
- NSString *path = [bundle pathForImageResource:name];
- if (path) image = [self gtm_imageWithPath:path];
- }
-
- // Check the main bundle and the existing NSImage namespace
- if (!image) {
- image = [NSImage imageNamed:name];
- }
-
- // Search for an image with that path
- if (!image && ([name isAbsolutePath] || [name hasPrefix:@"~"])) {
- NSString *path = [name stringByStandardizingPath];
- if ([[NSFileManager defaultManager]
- fileExistsAtPath:path]) {
- image = [self gtm_imageWithPath:path];
- if (!image) {
- image = [workspace iconForFile:path];
- }
- }
- }
- // Search for a matching bundle id
- if (!image) {
- NSString *path = [workspace absolutePathForAppBundleWithIdentifier:name];
- if (path) image = [workspace iconForFile:path]; ;
- }
-
- // Search for a file .extension or 'TYPE'
- // TODO(alcor): This ALWAYS returns an image for items with ' or . as prefix
- // We might not want this
- if ([name hasPrefix:@"'"] || [name hasPrefix:@"."]) {
- image = [workspace iconForFileType:name];
- }
-
- // Search for a UTI
- if ([name rangeOfString:@"."].location != NSNotFound) {
- NSDictionary *dict
- = GTMCFAutorelease(UTTypeCopyDeclaration((CFStringRef)name));
- NSURL *url
- = GTMCFAutorelease(UTTypeCopyDeclaringBundleURL((CFStringRef)name));
- NSString *iconName = [dict objectForKey:(NSString *)kUTTypeIconFileKey];
-
- if (url && name) {
- NSString *path
- = [[NSBundle bundleWithPath:[url path]] pathForImageResource:iconName];
- if (path)
- image = [[[NSImage alloc] initWithContentsOfFile:path] autorelease];
- }
- }
-
- return image;
-}
-@end
diff --git a/AppKit/GTMNSImage+SearchCacheTest.m b/AppKit/GTMNSImage+SearchCacheTest.m
deleted file mode 100644
index f18b12a..0000000
--- a/AppKit/GTMNSImage+SearchCacheTest.m
+++ /dev/null
@@ -1,60 +0,0 @@
-//
-// GTMNSImage+SearchCacheTest.m
-//
-// Copyright 2006-2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import <Cocoa/Cocoa.h>
-
-#import "GTMSenTestCase.h"
-
-#import "GTMNSImage+SearchCache.h"
-#import "GTMGeometryUtils.h"
-
-@interface GTMNSImage_SearchCacheTest : GTMTestCase
-@end
-
-@implementation GTMNSImage_SearchCacheTest
-
-- (void)testSearchCache {
- NSImage *testImage = [NSImage gtm_imageNamed:@"NSApplicationIcon"];
- STAssertNotNil(testImage, nil);
-
- testImage = [NSImage gtm_imageNamed:@"com.apple.Xcode"];
- STAssertNotNil(testImage, nil);
-
-#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
- // The stencil images only exist on 10.5+
- testImage = [NSImage gtm_imageNamed:NSImageNameBonjour];
- STAssertNotNil(testImage, nil);
-#endif // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
-
- testImage = [NSImage gtm_imageNamed:(NSString *)kUTTypeFolder];
- STAssertNotNil(testImage, nil);
-
- testImage = [NSImage gtm_imageNamed:@"~/Library"];
- STAssertNotNil(testImage, nil);
-
- testImage = [NSImage gtm_imageNamed:@"'APPL'"];
- STAssertNotNil(testImage, nil);
-
- testImage = [NSImage gtm_imageNamed:@"ponies for sale"];
- STAssertNil(testImage, nil);
-
- testImage = [NSImage gtm_imageNamed:@"/An/Invalid/Path"];
- STAssertNil(testImage, nil);
-}
-
-@end
diff --git a/AppKit/GTMNSWorkspace+Running.h b/AppKit/GTMNSWorkspace+Running.h
deleted file mode 100644
index c077c57..0000000
--- a/AppKit/GTMNSWorkspace+Running.h
+++ /dev/null
@@ -1,99 +0,0 @@
-//
-// GTMNSWorkspace+Running.h
-//
-// Copyright 2007-2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import <AppKit/AppKit.h>
-#import "GTMDefines.h"
-
-// Process Dictionary keys
-//
-// NOTE: According to ProcessInformationCopyDictionary, the following may not be
-// in the dictionary depending on the type of process:
-// kGTMWorkspaceRunningParentPSN, kGTMWorkspaceRunningFileType,
-// kGTMWorkspaceRunningFileCreator, kGTMWorkspaceRunningPID,
-// kGTMWorkspaceRunningBundlePath, kGTMWorkspaceRunningBundleIdentifier,
-// kGTMWorkspaceRunningBundleName, kGTMWorkspaceRunningBundleExecutable,
-// And experience says the follow might also not be there:
-// kGTMWorkspaceRunningIsHidden
-
-// Make sure to use numberToProcessSerialNumber: on the return values
-// of these keys to get valid PSNs on both Leopard and Tiger.
-// Numeric types come back as a NSNumber.
-GTM_EXTERN NSString *const kGTMWorkspaceRunningPSN; // long long
-GTM_EXTERN NSString *const kGTMWorkspaceRunningParentPSN; // long long
-
-GTM_EXTERN NSString *const kGTMWorkspaceRunningFlavor; // SInt32
-GTM_EXTERN NSString *const kGTMWorkspaceRunningAttributes; // SInt32
-GTM_EXTERN NSString *const kGTMWorkspaceRunningFileType; // NSString
-GTM_EXTERN NSString *const kGTMWorkspaceRunningFileCreator; // NSString
-GTM_EXTERN NSString *const kGTMWorkspaceRunningPID; // long
-GTM_EXTERN NSString *const kGTMWorkspaceRunningLSBackgroundOnly; // bool
-GTM_EXTERN NSString *const kGTMWorkspaceRunningLSUIElement; // bool
-GTM_EXTERN NSString *const kGTMWorkspaceRunningIsHidden; // bool
-GTM_EXTERN NSString *const kGTMWorkspaceRunningCheckedIn; // bool
-GTM_EXTERN NSString *const kGTMWorkspaceRunningLSUIPresentationMode; // Short
-GTM_EXTERN NSString *const kGTMWorkspaceRunningBundlePath; // NSString
-GTM_EXTERN NSString *const kGTMWorkspaceRunningBundleVersion; // NSString
-// The docs for ProcessInformationCopyDictionary say we should use the constants
-// instead of the raw string values, so map our values to those keys.
-#define kGTMWorkspaceRunningBundleIdentifier (NSString*)kCFBundleIdentifierKey // NSString
-#define kGTMWorkspaceRunningBundleName (NSString*)kCFBundleNameKey // NSString
-#define kGTMWorkspaceRunningBundleExecutable (NSString*)kCFBundleExecutableKey // NSString
-
-// A category for getting information about other running processes
-@interface NSWorkspace (GTMWorkspaceRunningAdditions)
-
-// Returns a YES/NO if a process w/ the given identifier is running
-- (BOOL)gtm_isAppWithIdentifierRunning:(NSString *)identifier;
-
-// Returns a dictionary with info for our process.
-//See Process Dictionary Keys above for values
-- (NSDictionary *)gtm_processInfoDictionary;
-
-// Returns a dictionary with info for the active process.
-// See Process Dictionary Keys above for values
-- (NSDictionary *)gtm_processInfoDictionaryForActiveApp;
-
-// Returns a dictionary with info for the process.
-//See Process Dictionary Keys above for values
-- (NSDictionary *)gtm_processInfoDictionaryForPID:(pid_t)pid;
-
-// Returns a dictionary with info for the process.
-// See Process Dictionary Keys above for values
-- (NSDictionary *)gtm_processInfoDictionaryForPSN:(const ProcessSerialNumberPtr)psn;
-
-// Returns true if we were launched as a login item.
-- (BOOL)gtm_wasLaunchedAsLoginItem;
-
-// Returns true if we were launched by a given bundleid
-- (BOOL)gtm_wasLaunchedByProcess:(NSString*)bundleid;
-
-// Returns true if the PSN was found for the running app with bundleID
-- (BOOL)gtm_processSerialNumber:(ProcessSerialNumber*)outPSN
- withBundleID:(NSString*)bundleID;
-
-// Converts PSNs stored in NSNumbers to real PSNs
-- (ProcessSerialNumber)gtm_numberToProcessSerialNumber:(NSNumber*)number;
-
-// Returns a dictionary of launched applications like
-// -[NSWorkspace launchedApplications], but does it much faster than the current
-// version in Leopard which appears to regenerate the dictionary from scratch
-// each time you request it.
-// NB The main runloop has to run for this to stay up to date.
-- (NSArray *)gtm_launchedApplications;
-
-@end
diff --git a/AppKit/GTMNSWorkspace+Running.m b/AppKit/GTMNSWorkspace+Running.m
deleted file mode 100644
index 7d6efff..0000000
--- a/AppKit/GTMNSWorkspace+Running.m
+++ /dev/null
@@ -1,291 +0,0 @@
-//
-// GTMNSWorkspace+Running.m
-//
-// Copyright 2007-2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMNSWorkspace+Running.h"
-#import <Carbon/Carbon.h>
-#import <unistd.h>
-#import "GTMSystemVersion.h"
-
-
-NSString *const kGTMWorkspaceRunningPSN = @"PSN";
-NSString *const kGTMWorkspaceRunningFlavor = @"Flavor";
-NSString *const kGTMWorkspaceRunningAttributes = @"Attributes";
-NSString *const kGTMWorkspaceRunningParentPSN = @"ParentPSN";
-NSString *const kGTMWorkspaceRunningFileType = @"FileType";
-NSString *const kGTMWorkspaceRunningFileCreator = @"FileCreator";
-NSString *const kGTMWorkspaceRunningPID = @"pid";
-NSString *const kGTMWorkspaceRunningLSBackgroundOnly = @"LSBackgroundOnly";
-NSString *const kGTMWorkspaceRunningLSUIElement = @"LSUIElement";
-NSString *const kGTMWorkspaceRunningIsHidden = @"IsHiddenAttr";
-NSString *const kGTMWorkspaceRunningCheckedIn = @"IsCheckedInAttr";
-NSString *const kGTMWorkspaceRunningLSUIPresentationMode
- = @"LSUIPresentationMode";
-NSString *const kGTMWorkspaceRunningBundlePath = @"BundlePath";
-NSString *const kGTMWorkspaceRunningBundleVersion = @"CFBundleVersion";
-
-@interface GTMWorkspaceRunningApplicationList : NSObject {
- @private
- NSArray *launchedApps_;
-}
-+ (GTMWorkspaceRunningApplicationList *)sharedApplicationList;
-- (NSArray *)launchedApplications;
-- (void)didLaunchOrTerminateApp:(NSNotification *)notification;
-@end
-
-@implementation NSWorkspace (GTMWorkspaceRunningAdditions)
-
-/// Returns a YES/NO if a process w/ the given identifier is running
-- (BOOL)gtm_isAppWithIdentifierRunning:(NSString *)identifier {
- if ([identifier length] == 0) return NO;
- NSArray *launchedApps = [self gtm_launchedApplications];
- NSArray *buildIDs
- = [launchedApps valueForKey:@"NSApplicationBundleIdentifier"];
- return [buildIDs containsObject:identifier];
-}
-
-- (NSDictionary *)gtm_processInfoDictionaryForPID:(pid_t)pid {
- NSDictionary *dict = nil;
- ProcessSerialNumber psn;
- if (GetProcessForPID(pid, &psn) == noErr) {
- dict = [self gtm_processInfoDictionaryForPSN:&psn];
- }
- return dict;
-}
-
-- (NSDictionary *)gtm_processInfoDictionaryForPSN:(ProcessSerialNumberPtr const)psn {
- NSDictionary *dict = nil;
- if (psn) {
- CFDictionaryRef cfDict
- = ProcessInformationCopyDictionary(psn,
- kProcessDictionaryIncludeAllInformationMask);
- dict = GTMCFAutorelease(cfDict);
- }
- return dict;
-}
-
-- (NSDictionary *)gtm_processInfoDictionary {
- NSDictionary *dict = nil;
- ProcessSerialNumber selfNumber;
- if (MacGetCurrentProcess(&selfNumber) == noErr) {
- dict = [self gtm_processInfoDictionaryForPSN:&selfNumber];
- }
- return dict;
-}
-
-- (NSDictionary *)gtm_processInfoDictionaryForActiveApp {
- NSDictionary *processDict = nil;
- ProcessSerialNumber psn;
- OSStatus status = GetFrontProcess(&psn);
- if (status == noErr) {
- processDict = [self gtm_processInfoDictionaryForPSN:&psn];
- }
- return processDict;
-}
-
-- (BOOL)gtm_wasLaunchedAsLoginItem {
- // If the launching process was 'loginwindow', we were launched as a login
- // item
- return [self gtm_wasLaunchedByProcess:@"com.apple.loginwindow"];
-}
-
-- (BOOL)gtm_wasLaunchedByProcess:(NSString*)bundleid {
- BOOL wasLaunchedByProcess = NO;
- NSDictionary *processInfo = [self gtm_processInfoDictionary];
- if (processInfo) {
- NSNumber *processNumber
- = [processInfo objectForKey:kGTMWorkspaceRunningParentPSN];
- ProcessSerialNumber parentPSN
- = [self gtm_numberToProcessSerialNumber:processNumber];
- NSDictionary *parentProcessInfo
- = [self gtm_processInfoDictionaryForPSN:&parentPSN];
- NSString *parentBundle
- = [parentProcessInfo objectForKey:kGTMWorkspaceRunningBundleIdentifier];
- wasLaunchedByProcess
- = [parentBundle isEqualToString:bundleid];
- }
- return wasLaunchedByProcess;
-}
-
-- (BOOL)gtm_processSerialNumber:(ProcessSerialNumber*)outPSN
- withBundleID:(NSString*)bundleID {
- if (!outPSN || [bundleID length] == 0) {
- return NO;
- }
-
- NSArray *apps = [self gtm_launchedApplications];
-
- NSEnumerator *enumerator = [apps objectEnumerator];
- NSDictionary *dict;
-
- while ((dict = [enumerator nextObject])) {
- NSString *nextID = [dict objectForKey:@"NSApplicationBundleIdentifier"];
-
- if ([nextID isEqualToString:bundleID]) {
- NSNumber *psn
- = [dict objectForKey:@"NSApplicationProcessSerialNumberLow"];
- outPSN->lowLongOfPSN = [psn unsignedIntValue];
-
- psn = [dict objectForKey:@"NSApplicationProcessSerialNumberHigh"];
- outPSN->highLongOfPSN = [psn unsignedIntValue];
-
- return YES;
- }
- }
-
- return NO;
-}
-
-- (ProcessSerialNumber)gtm_numberToProcessSerialNumber:(NSNumber*)number {
- // There is a bug in Tiger where they were packing ProcessSerialNumbers
- // incorrectly into the longlong that they stored in the dictionary.
- // This fixes it.
- ProcessSerialNumber outPSN = { kNoProcess, kNoProcess};
- if (number) {
- long long temp = [number longLongValue];
- UInt32 hi = (UInt32)((temp >> 32) & 0x00000000FFFFFFFFLL);
- UInt32 lo = (UInt32)((temp >> 0) & 0x00000000FFFFFFFFLL);
-#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
- outPSN.highLongOfPSN = hi;
- outPSN.lowLongOfPSN = lo;
-#else // MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4
- if ([GTMSystemVersion isLeopardOrGreater]) {
- outPSN.highLongOfPSN = hi;
- outPSN.lowLongOfPSN = lo;
- } else {
-#if TARGET_RT_BIG_ENDIAN
- outPSN.highLongOfPSN = hi;
- outPSN.lowLongOfPSN = lo;
-#else
- outPSN.highLongOfPSN = lo;
- outPSN.lowLongOfPSN = hi;
-#endif // TARGET_RT_BIG_ENDIAN
- }
-#endif // MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4
- }
- return outPSN;
-}
-
-- (NSArray *)gtm_launchedApplications {
- GTMWorkspaceRunningApplicationList *list
- = [GTMWorkspaceRunningApplicationList sharedApplicationList];
- return [list launchedApplications];
-}
-@end
-
-@implementation GTMWorkspaceRunningApplicationList
-
-+ (GTMWorkspaceRunningApplicationList *)sharedApplicationList {
- static GTMWorkspaceRunningApplicationList *obj;
- if (!obj) {
- obj = [[self alloc] init];
- }
- return obj;
-}
-
-- (id)init {
- if ((self = [super init])) {
- [self didLaunchOrTerminateApp:nil];
- }
- return self;
-}
-
-- (void)finalize {
- [self didLaunchOrTerminateApp:nil];
- [super finalize];
-}
-
-- (void)dealloc {
- [self didLaunchOrTerminateApp:nil];
- [super dealloc];
-}
-
-- (void)didLaunchOrTerminateApp:(NSNotification *)notification {
- @synchronized (self) {
- [launchedApps_ release];
- NSNotificationCenter *workSpaceNC
- = [[NSWorkspace sharedWorkspace] notificationCenter];
- [workSpaceNC removeObserver:self];
- launchedApps_ = nil;
- }
-}
-
-- (NSArray *)currentApps {
- // Not using any NSWorkspace calls because they are not documented as being
- // threadsafe.
- ProcessSerialNumber psn = { kNoProcess, kNoProcess };
- NSMutableArray *launchedApps = [NSMutableArray array];
- while (GetNextProcess(&psn) == noErr) {
- CFDictionaryRef cfDict
- = ProcessInformationCopyDictionary(&psn,
- kProcessDictionaryIncludeAllInformationMask);
- NSDictionary *carbonDict = GTMCFAutorelease(cfDict);
- // Check to make sure we actually have a dictionary. The process could
- // have disappeared between the call to GetNextProcess and
- // ProcessInformationCopyDictionary.
- if (carbonDict) {
- NSMutableDictionary *cocoaDict = [NSMutableDictionary dictionary];
- NSString *path = [carbonDict objectForKey:@"BundlePath"];
- if (path) {
- [cocoaDict setObject:path forKey:@"NSApplicationPath"];
- }
- NSString *name = [carbonDict objectForKey:(id)kCFBundleNameKey];
- if (name) {
- [cocoaDict setObject:name forKey:@"NSApplicationName"];
- }
- NSString *bundleID = [carbonDict objectForKey:(id)kCFBundleIdentifierKey];
- if (bundleID) {
- [cocoaDict setObject:bundleID forKey:@"NSApplicationBundleIdentifier"];
- }
- NSNumber *pid = [carbonDict objectForKey:@"pid"];
- if (pid) {
- [cocoaDict setObject:pid forKey:@"NSApplicationProcessIdentifier"];
- }
- [cocoaDict setObject:[NSNumber numberWithUnsignedLong:psn.highLongOfPSN]
- forKey:@"NSApplicationProcessSerialNumberHigh"];
- [cocoaDict setObject:[NSNumber numberWithUnsignedLong:psn.lowLongOfPSN]
- forKey:@"NSApplicationProcessSerialNumberLow"];
- [launchedApps addObject:cocoaDict];
- }
- }
- return launchedApps;
-}
-
-
-- (NSArray *)launchedApplications {
- NSArray *localReturn = nil;
- @synchronized (self) {
- if (!launchedApps_) {
- launchedApps_ = [[self currentApps] retain];
- NSWorkspace *ws = [NSWorkspace sharedWorkspace];
- NSNotificationCenter *workSpaceNC = [ws notificationCenter];
- [workSpaceNC addObserver:self
- selector:@selector(didLaunchOrTerminateApp:)
- name:NSWorkspaceDidLaunchApplicationNotification
- object:nil];
- [workSpaceNC addObserver:self
- selector:@selector(didLaunchOrTerminateApp:)
- name:NSWorkspaceDidTerminateApplicationNotification
- object:nil];
- }
- // We want to keep launchedApps_ in the autoreleasepool of this thread
- localReturn = [launchedApps_ retain];
- }
- return [localReturn autorelease];
-}
-
-@end
diff --git a/AppKit/GTMNSWorkspace+RunningTest.m b/AppKit/GTMNSWorkspace+RunningTest.m
deleted file mode 100644
index 3872a98..0000000
--- a/AppKit/GTMNSWorkspace+RunningTest.m
+++ /dev/null
@@ -1,84 +0,0 @@
-//
-// GTMNSWorkspace+RunningTest.m
-//
-// Copyright 2007-2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMSenTestCase.h"
-#import "GTMNSWorkspace+Running.h"
-#import <unistd.h>
-
-@interface GTMNSWorkspace_RunningTest : GTMTestCase
-@end
-
-@implementation GTMNSWorkspace_RunningTest
-
-- (void)testBasics {
- NSWorkspace *ws = [NSWorkspace sharedWorkspace];
-
- // Test an app that should be running
- STAssertTrue([ws gtm_isAppWithIdentifierRunning:@"com.apple.finder"], nil);
-
- // Check to make sure that we are on the list
- STAssertTrue([ws gtm_isAppWithIdentifierRunning:
- @"com.google.GTMUIUnitTestingHarness"], nil);
- STAssertFalse([ws gtm_isAppWithIdentifierRunning:@"com.google.nothing"], nil);
-
- NSDictionary *processInfo = [ws gtm_processInfoDictionary];
- STAssertNotNil(processInfo, nil);
-
- BOOL wasLaunchedAsLoginItem = [ws gtm_wasLaunchedAsLoginItem];
- STAssertFalse(wasLaunchedAsLoginItem, nil);
-
- pid_t pid = getpid();
- NSDictionary *processInfo2 = [ws gtm_processInfoDictionaryForPID:pid];
- STAssertNotNil(processInfo2, nil);
- STAssertEqualObjects(processInfo, processInfo2, nil);
-
- ProcessSerialNumber num = { 0, 0 };
- BOOL gotPSN = [ws gtm_processSerialNumber:&num
- withBundleID:@"com.apple.finder"];
- STAssertTrue(gotPSN, nil);
- STAssertGreaterThan(num.highLongOfPSN + num.lowLongOfPSN, (UInt32)0, nil);
- gotPSN = [ws gtm_processSerialNumber:&num
- withBundleID:@"bad.bundle.id"];
- STAssertFalse(gotPSN, nil);
-
- gotPSN = [ws gtm_processSerialNumber:NULL
- withBundleID:nil];
- STAssertFalse(gotPSN, nil);
-
- processInfo = [ws gtm_processInfoDictionaryForActiveApp];
- STAssertNotNil(processInfo, nil);
-
- // Only check the keys that have to be there
- NSString *const keys[] = {
- kGTMWorkspaceRunningPSN,
- kGTMWorkspaceRunningFlavor, kGTMWorkspaceRunningAttributes,
- kGTMWorkspaceRunningLSBackgroundOnly,
- kGTMWorkspaceRunningLSUIElement,
- kGTMWorkspaceRunningCheckedIn,
- kGTMWorkspaceRunningBundleVersion,
- kGTMWorkspaceRunningLSUIPresentationMode,
-
- };
- for (size_t i = 0; i < sizeof(keys) / sizeof(NSString *); ++i) {
- NSString *const key = keys[i];
- STAssertNotNil([processInfo objectForKey:key],
- @"Couldn't get %@ from %@", key, processInfo);
- }
-}
-
-@end
diff --git a/AppKit/GTMShading.h b/AppKit/GTMShading.h
deleted file mode 100644
index 27e163e..0000000
--- a/AppKit/GTMShading.h
+++ /dev/null
@@ -1,41 +0,0 @@
-//
-// GTMShading.h
-//
-// A protocol for an object that can be used as a shader.
-//
-// Copyright 2006-2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-/// \cond Protocols
-
-@protocol GTMShading
-// Returns the shadefunction for using in a shader.
-// This shadefunction shoud never be released. It is owned by the implementor
-// of the GTMShading protocol.
-//
-// Returns:
-// a shading function.
-- (CGFunctionRef)shadeFunction;
-
-// Returns the colorSpace for using in a shader.
-// This colorSpace shoud never be released. It is owned by the implementor
-// of the GTMShading protocol.
-//
-// Returns:
-// a color space.
-- (CGColorSpaceRef)colorSpace;
-@end
-
-/// \endcond
diff --git a/AppKit/GTMUILocalizer.m b/AppKit/GTMUILocalizer.m
index 9f252e7..07f11e4 100644
--- a/AppKit/GTMUILocalizer.m
+++ b/AppKit/GTMUILocalizer.m
@@ -142,7 +142,7 @@
// which is usually the default items, if the toolbar supports customization
// there is no way to fetch those possible items to tweak their contents.
NSToolbarItem *item;
- GTM_FOREACH_OBJECT(item, [toolbar items]) {
+ for (item in [toolbar items]) {
NSString *label = [item label];
if (label) {
label = [self localizedStringForString:label];
@@ -195,7 +195,7 @@
if (recursive) {
NSArray *subviews = [view subviews];
NSView *subview = nil;
- GTM_FOREACH_OBJECT(subview, subviews) {
+ for (subview in subviews) {
[self localizeObject:subview recursively:recursive];
}
}
@@ -260,7 +260,7 @@
id cell = [matrix prototype];
[self localizeObject:cell recursively:recursive];
// Process the cells
- GTM_FOREACH_OBJECT(cell, [matrix cells]) {
+ for (cell in [matrix cells]) {
[self localizeObject:cell recursively:recursive];
// The tooltip isn't on a cell, so we do it via the matrix.
NSString *toolTip = [matrix toolTipForCell:cell];
@@ -276,7 +276,7 @@
NSTableView *tableView = (NSTableView *)view;
NSArray *columns = [tableView tableColumns];
NSTableColumn *column = nil;
- GTM_FOREACH_OBJECT(column, columns) {
+ for (column in columns) {
[self localizeObject:[column headerCell] recursively:recursive];
}
}
@@ -301,7 +301,7 @@
NSMutableArray *localizedValues = [NSMutableArray array];
BOOL replaceValues = NO;
NSString *value;
- GTM_FOREACH_OBJECT(value, [combobox objectValues]) {
+ for (value in [combobox objectValues]) {
NSString *localizedValue = nil;
if ([value isKindOfClass:[NSString class]]) {
localizedValue = [self localizedStringForString:value];
@@ -330,7 +330,7 @@
}
NSArray *menuItems = [menu itemArray];
NSMenuItem *menuItem = nil;
- GTM_FOREACH_OBJECT(menuItem, menuItems) {
+ for (menuItem in menuItems) {
title = [menuItem title];
localizedTitle = [self localizedStringForString:title];
if (localizedTitle) {
@@ -369,7 +369,7 @@
};
Class stringClass = [NSString class];
NSString *exposedBinding;
- GTM_FOREACH_OBJECT(exposedBinding, exposedBindings) {
+ for (exposedBinding in exposedBindings) {
NSDictionary *bindingInfo = [object infoForBinding:exposedBinding];
if (bindingInfo) {
id observedObject = [bindingInfo objectForKey:NSObservedObjectKey];
diff --git a/AppKit/GTMUILocalizerAndLayoutTweaker.m b/AppKit/GTMUILocalizerAndLayoutTweaker.m
index 14876dc..be7b325 100644
--- a/AppKit/GTMUILocalizerAndLayoutTweaker.m
+++ b/AppKit/GTMUILocalizerAndLayoutTweaker.m
@@ -144,14 +144,14 @@ static const CGFloat kWrapperStringSlop = 0.9;
} else if ([view isKindOfClass:[NSTabView class]]) {
NSArray *tabViewItems = [(NSTabView *)view tabViewItems];
NSTabViewItem *item = nil;
- GTM_FOREACH_OBJECT(item, tabViewItems) {
+ for (item in tabViewItems) {
[self tweakView:[item view]];
}
// Generically look for subviews...
} else {
NSArray *subviews = [view subviews];
NSView *subview = nil;
- GTM_FOREACH_OBJECT(subview, subviews) {
+ for (subview in subviews) {
[self tweakView:subview];
}
}
@@ -175,6 +175,10 @@ static const CGFloat kWrapperStringSlop = 0.9;
// fragments to get the same wrapping as what the NSCell will do in the end.
[textContainer setLineFragmentPadding:2.0f];
+ if (font == NULL) {
+ // If the font is NULL, it is the System font.
+ font = [NSFont systemFontOfSize:[NSFont systemFontSize]];
+ }
// Apply the font.
[textStorage setFont:font];
@@ -343,7 +347,7 @@ static const CGFloat kWrapperStringSlop = 0.9;
NSFont *font = [radioGroup font];
NSCell *cell;
- GTM_FOREACH_OBJECT(cell, [radioGroup cells]) {
+ for (cell in [radioGroup cells]) {
NSRect titleFrame = [cell titleRectForBounds:tmpRect];
NSString* newTitle = [self wrapString:[cell title]
width:NSWidth(titleFrame)
@@ -437,7 +441,7 @@ static const CGFloat kWrapperStringSlop = 0.9;
NSView *subView;
CGFloat finalDelta = sumMode ? 0 : -CGFLOAT_MAX;
NSPoint subViewOffset = NSZeroPoint;
- GTM_FOREACH_OBJECT(subView, subviews) {
+ for (subView in subviews) {
if (sumMode) {
subViewOffset.x = finalDelta;
}
@@ -580,7 +584,7 @@ static NSSize SizeToFit(NSView *view, NSPoint offset) {
NSMatrix *matrix = (NSMatrix *)view;
// See note on kWrapperStringSlop for why this is done.
NSCell *cell;
- GTM_FOREACH_OBJECT(cell, [matrix cells]) {
+ for (cell in [matrix cells]) {
if ([[cell title] rangeOfString:kForcedWrapString].location !=
NSNotFound) {
newFrame.size.width += kWrapperStringSlop;
diff --git a/AppKit/GTMUILocalizerAndLayoutTweakerTest.m b/AppKit/GTMUILocalizerAndLayoutTweakerTest.m
index 8905e82..955637c 100644
--- a/AppKit/GTMUILocalizerAndLayoutTweakerTest.m
+++ b/AppKit/GTMUILocalizerAndLayoutTweakerTest.m
@@ -18,7 +18,6 @@
#import "GTMSenTestCase.h"
#import "GTMUILocalizerAndLayoutTweakerTest.h"
-#import "GTMNSObject+UnitTesting.h"
#import "GTMUILocalizerAndLayoutTweaker.h"
static NSUInteger gTestPass = 0;
@@ -35,12 +34,7 @@ static NSUInteger gTestPass = 0;
[[GTMUILocalizerAndLayoutTweakerTestWindowController alloc]
initWithWindowNibName:@"GTMUILocalizerAndLayoutTweakerTest1"];
NSWindow *window = [controller window];
- STAssertNotNil(window, @"Pass %zu", gTestPass);
- NSString *imageName =
- [NSString stringWithFormat:@"GTMUILocalizerAndLayoutTweakerTest1-%ld",
- (long)gTestPass];
- GTMAssertObjectImageEqualToImageNamed(window, imageName,
- @"Pass %zu", gTestPass);
+ XCTAssertNotNil(window, @"Pass %tu", gTestPass);
[controller release];
}
// Test with nib 2
@@ -49,12 +43,7 @@ static NSUInteger gTestPass = 0;
[[GTMUILocalizerAndLayoutTweakerTestWindowController alloc]
initWithWindowNibName:@"GTMUILocalizerAndLayoutTweakerTest2"];
NSWindow *window = [controller window];
- STAssertNotNil(window, @"Pass %zu", gTestPass);
- NSString *imageName =
- [NSString stringWithFormat:@"GTMUILocalizerAndLayoutTweakerTest2-%ld",
- (long)gTestPass];
- GTMAssertObjectImageEqualToImageNamed(window, imageName,
- @"Pass %zu", gTestPass);
+ XCTAssertNotNil(window, @"Pass %tu", gTestPass);
[controller release];
}
}
@@ -89,19 +78,14 @@ static NSUInteger gTestPass = 0;
[[GTMUILocalizerAndLayoutTweakerTestWindowController alloc]
initWithWindowNibName:@"GTMUILocalizerAndLayoutTweakerTest3"];
NSWindow *window = [controller window];
- STAssertNotNil(window, @"Pass %zu", lp);
+ XCTAssertNotNil(window, @"Pass %tu", lp);
NSTextField *field;
- GTM_FOREACH_OBJECT(field, [[window contentView] subviews]) {
- STAssertTrue([field isMemberOfClass:[NSTextField class]],
- @"Pass %zu", lp);
+ for (field in [[window contentView] subviews]) {
+ XCTAssertTrue([field isMemberOfClass:[NSTextField class]],
+ @"Pass %tu", lp);
[field setStringValue:kTestStrings[lp]];
[GTMUILocalizerAndLayoutTweaker sizeToFitFixedWidthTextField:field];
}
- NSString *imageName =
- [NSString stringWithFormat:@"GTMUILocalizerAndLayoutTweakerTest3-%ld",
- (long)lp];
- GTMAssertObjectImageEqualToImageNamed(window, imageName,
- @"Pass %zu", lp);
[controller release];
}
}
@@ -119,12 +103,7 @@ static NSUInteger gTestPass = 0;
[[GTMUILocalizerAndLayoutTweakerTestWindowController alloc]
initWithWindowNibName:@"GTMUILocalizerAndLayoutTweakerTest4"];
NSWindow *window = [controller window];
- STAssertNotNil(window, @"Pass %zu", gTestPass);
- NSString *imageName =
- [NSString stringWithFormat:@"GTMUILocalizerAndLayoutTweakerTest4-%ld",
- (long)gTestPass];
- GTMAssertObjectImageEqualToImageNamed(window, imageName,
- @"Pass %zu", gTestPass);
+ XCTAssertNotNil(window, @"Pass %tu", gTestPass);
[controller release];
}
}
@@ -144,20 +123,20 @@ static NSUInteger gTestPass = 0;
[[GTMUILocalizerAndLayoutTweakerTestWindowController alloc]
initWithWindowNibName:@"GTMUILocalizerAndLayoutTweakerTest5"];
NSWindow *window = [controller window];
- STAssertNotNil(window, @"Pass %zu", lp);
+ XCTAssertNotNil(window, @"Pass %tu", lp);
NSView *view;
- GTM_FOREACH_OBJECT(view, [[window contentView] subviews]) {
+ for (view in [[window contentView] subviews]) {
if ([view isMemberOfClass:[NSButton class]]) {
NSButton *btn = (id)view;
[btn setTitle:kTestStrings[lp]];
[GTMUILocalizerAndLayoutTweaker wrapButtonTitleForWidth:btn];
} else {
- STAssertTrue([view isMemberOfClass:[NSMatrix class]],
- @"Pass %zu", lp);
+ XCTAssertTrue([view isMemberOfClass:[NSMatrix class]],
+ @"Pass %tu", lp);
NSMatrix *mtx = (id)view;
NSCell *cell;
int i = 0;
- GTM_FOREACH_OBJECT(cell, [mtx cells]) {
+ for (cell in [mtx cells]) {
[cell setTitle:[NSString stringWithFormat:@"%d %@",
++i, kTestStrings[lp]]];
}
@@ -165,11 +144,6 @@ static NSUInteger gTestPass = 0;
}
[GTMUILocalizerAndLayoutTweaker sizeToFitView:view];
}
- NSString *imageName =
- [NSString stringWithFormat:@"GTMUILocalizerAndLayoutTweakerTest5-%ld",
- (long)lp];
- GTMAssertObjectImageEqualToImageNamed(window, imageName,
- @"Pass %zu", lp);
[controller release];
}
}
@@ -181,17 +155,11 @@ static NSUInteger gTestPass = 0;
[[GTMUILocalizerAndLayoutTweakerTestWindowController alloc]
initWithWindowNibName:@"GTMUILocalizerAndLayoutTweakerTest6"];
NSWindow *window = [controller window];
- STAssertNotNil(window, @"Pass %zu", gTestPass);
+ XCTAssertNotNil(window, @"Pass %tu", gTestPass);
NSTabView *tabView = [controller tabView];
for (NSInteger tabIndex = 0; tabIndex < [tabView numberOfTabViewItems];
++tabIndex) {
[tabView selectTabViewItemAtIndex:tabIndex];
- NSString *imageName =
- [NSString stringWithFormat:
- @"GTMUILocalizerAndLayoutTweakerTest6-tab%ld-%ld",
- (long)tabIndex, (long)gTestPass];
- GTMAssertObjectImageEqualToImageNamed(window, imageName,
- @"Pass %zu", gTestPass);
}
[controller release];
}
@@ -201,12 +169,7 @@ static NSUInteger gTestPass = 0;
[[GTMUILocalizerAndLayoutTweakerTestWindowController alloc]
initWithWindowNibName:@"GTMUILocalizerAndLayoutTweakerTest2"];
NSWindow *window = [controller window];
- STAssertNotNil(window, @"Pass %zu", gTestPass);
- NSString *imageName =
- [NSString stringWithFormat:@"GTMUILocalizerAndLayoutTweakerTest2-%ld",
- (long)gTestPass];
- GTMAssertObjectImageEqualToImageNamed(window, imageName,
- @"Pass %zu", gTestPass);
+ XCTAssertNotNil(window, @"Pass %tu", gTestPass);
[controller release];
}
}
@@ -244,11 +207,11 @@ static NSUInteger gTestPass = 0;
[[GTMUILocalizerAndLayoutTweakerTestWindowController alloc]
initWithWindowNibName:@"GTMUILocalizerAndLayoutTweakerTest7"];
NSWindow *window = [controller window];
- STAssertNotNil(window, @"Pass %zu", lp);
+ XCTAssertNotNil(window, @"Pass %tu", lp);
NSTextField *field;
- GTM_FOREACH_OBJECT(field, [[window contentView] subviews]) {
- STAssertTrue([field isMemberOfClass:[NSTextField class]],
- @"Pass %zu", lp);
+ for (field in [[window contentView] subviews]) {
+ XCTAssertTrue([field isMemberOfClass:[NSTextField class]],
+ @"Pass %tu", lp);
[field setStringValue:kTestStrings[lp]];
NSUInteger minWidth = kTestModes[modeLoop].minWidth;
if (minWidth) {
@@ -258,11 +221,6 @@ static NSUInteger gTestPass = 0;
[GTMUILocalizerAndLayoutTweaker sizeToFitFixedHeightTextField:field];
}
}
- NSString *imageName =
- [NSString stringWithFormat:@"GTMUILocalizerAndLayoutTweakerTest7-%s-%ld",
- kTestModes[modeLoop].name, (long)lp];
- GTMAssertObjectImageEqualToImageNamed(window, imageName,
- @"Pass %zu-%zu", modeLoop, lp);
[controller release];
}
}
@@ -274,9 +232,8 @@ static NSUInteger gTestPass = 0;
[textField setBezeled:NO];
[textField setStringValue:@"The quick brown fox jumps over the lazy dog."];
[GTMUILocalizerAndLayoutTweaker sizeToFitFixedHeightTextField:textField];
- STAssertTrue(
- NSEqualRects([textField bounds], NSIntegralRect([textField bounds])),
- nil);
+ XCTAssertTrue(
+ NSEqualRects([textField bounds], NSIntegralRect([textField bounds])));
[textField release];
}
diff --git a/AppKit/GTMUILocalizerAndLayoutTweakerTest1.xib b/AppKit/GTMUILocalizerAndLayoutTweakerTest1.xib
index 0002ff6..329981a 100644
--- a/AppKit/GTMUILocalizerAndLayoutTweakerTest1.xib
+++ b/AppKit/GTMUILocalizerAndLayoutTweakerTest1.xib
@@ -1,2322 +1,289 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
- <data>
- <int key="IBDocument.SystemTarget">1050</int>
- <string key="IBDocument.SystemVersion">10D2063a</string>
- <string key="IBDocument.InterfaceBuilderVersion">762</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.CocoaPlugin</string>
- <string key="NS.object.0">762</string>
- </object>
- <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <object class="NSArray" key="IBDocument.PluginDependencies">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</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="NSCustomObject" id="1001">
- <string key="NSClassName">GTMUILocalizerAndLayoutTweakerTestWindowController</string>
- </object>
- <object class="NSCustomObject" id="1003">
- <string key="NSClassName">FirstResponder</string>
- </object>
- <object class="NSCustomObject" id="1004">
- <string key="NSClassName">NSApplication</string>
- </object>
- <object class="NSWindowTemplate" id="1005">
- <int key="NSWindowStyleMask">15</int>
- <int key="NSWindowBacking">2</int>
- <string key="NSWindowRect">{{71, 48}, {532, 404}}</string>
- <int key="NSWTFlags">536870912</int>
- <string key="NSWindowTitle">Window</string>
- <string key="NSWindowClass">NSWindow</string>
- <nil key="NSViewClass"/>
- <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
- <object class="NSView" key="NSWindowView" id="1006">
- <reference key="NSNextResponder"/>
- <int key="NSvFlags">256</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSBox" id="13430988">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">266</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSView" id="180511442">
- <reference key="NSNextResponder" ref="13430988"/>
- <int key="NSvFlags">256</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSTextField" id="800844720">
- <reference key="NSNextResponder" ref="180511442"/>
- <int key="NSvFlags">266</int>
- <string key="NSFrame">{{3, 45}, {349, 22}}</string>
- <reference key="NSSuperview" ref="180511442"/>
- <reference key="NSWindow"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="951606926">
- <int key="NSCellFlags">-1804468671</int>
- <int key="NSCellFlags2">272630784</int>
- <string key="NSContents"/>
- <object class="NSFont" key="NSSupport" id="396891173">
- <string key="NSName">LucidaGrande</string>
- <double key="NSSize">13</double>
- <int key="NSfFlags">1044</int>
- </object>
- <reference key="NSControlView" ref="800844720"/>
- <bool key="NSDrawsBackground">YES</bool>
- <object class="NSColor" key="NSBackgroundColor" id="763520216">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">textBackgroundColor</string>
- <object class="NSColor" key="NSColor" id="644092534">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MQA</bytes>
- </object>
- </object>
- <object class="NSColor" key="NSTextColor" id="843269795">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">textColor</string>
- <object class="NSColor" key="NSColor" id="960820016">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MAA</bytes>
- </object>
- </object>
- </object>
- </object>
- <object class="NSTextField" id="745022904">
- <reference key="NSNextResponder" ref="180511442"/>
- <int key="NSvFlags">266</int>
- <string key="NSFrame">{{3, 13}, {349, 22}}</string>
- <reference key="NSSuperview" ref="180511442"/>
- <reference key="NSWindow"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="810828168">
- <int key="NSCellFlags">-1804468671</int>
- <int key="NSCellFlags2">272630784</int>
- <string key="NSContents"/>
- <reference key="NSSupport" ref="396891173"/>
- <reference key="NSControlView" ref="745022904"/>
- <bool key="NSDrawsBackground">YES</bool>
- <reference key="NSBackgroundColor" ref="763520216"/>
- <reference key="NSTextColor" ref="843269795"/>
- </object>
- </object>
- <object class="NSTextField" id="478979211">
- <reference key="NSNextResponder" ref="180511442"/>
- <int key="NSvFlags">266</int>
- <string key="NSFrame">{{3, 77}, {349, 22}}</string>
- <reference key="NSSuperview" ref="180511442"/>
- <reference key="NSWindow"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="1044158630">
- <int key="NSCellFlags">-1804468671</int>
- <int key="NSCellFlags2">272630784</int>
- <string key="NSContents"/>
- <reference key="NSSupport" ref="396891173"/>
- <reference key="NSControlView" ref="478979211"/>
- <bool key="NSDrawsBackground">YES</bool>
- <reference key="NSBackgroundColor" ref="763520216"/>
- <reference key="NSTextColor" ref="843269795"/>
- </object>
- </object>
- </object>
- <string key="NSFrameSize">{375, 109}</string>
- <reference key="NSSuperview" ref="13430988"/>
- <reference key="NSWindow"/>
- </object>
- </object>
- <string key="NSFrame">{{158, 285}, {375, 109}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <reference key="NSWindow"/>
- <string key="NSOffsets">{0, 0}</string>
- <object class="NSTextFieldCell" key="NSTitleCell">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">Box</string>
- <object class="NSFont" key="NSSupport">
- <string key="NSName">LucidaGrande</string>
- <double key="NSSize">11</double>
- <int key="NSfFlags">3100</int>
- </object>
- <reference key="NSBackgroundColor" ref="763520216"/>
- <object class="NSColor" key="NSTextColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MCAwLjgwMDAwMDAxAA</bytes>
- </object>
- </object>
- <reference key="NSContentView" ref="180511442"/>
- <int key="NSBorderType">0</int>
- <int key="NSBoxType">0</int>
- <int key="NSTitlePosition">0</int>
- <bool key="NSTransparent">NO</bool>
- </object>
- <object class="NSBox" id="588270165">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">10</int>
- <string key="NSFrame">{{324, 173}, {188, 5}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <reference key="NSWindow"/>
- <string key="NSOffsets">{0, 0}</string>
- <object class="NSTextFieldCell" key="NSTitleCell">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">Box</string>
- <reference key="NSSupport" ref="396891173"/>
- <reference key="NSBackgroundColor" ref="763520216"/>
- <object class="NSColor" key="NSTextColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MCAwLjgwMDAwMDAxAA</bytes>
- </object>
- </object>
- <int key="NSBorderType">3</int>
- <int key="NSBoxType">2</int>
- <int key="NSTitlePosition">0</int>
- <bool key="NSTransparent">NO</bool>
- </object>
- <object class="NSBox" id="814378125">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">10</int>
- <string key="NSFrame">{{374, 98}, {138, 5}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <reference key="NSWindow"/>
- <string key="NSOffsets">{0, 0}</string>
- <object class="NSTextFieldCell" key="NSTitleCell">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">Box</string>
- <reference key="NSSupport" ref="396891173"/>
- <reference key="NSBackgroundColor" ref="763520216"/>
- <object class="NSColor" key="NSTextColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MCAwLjgwMDAwMDAxAA</bytes>
- </object>
- </object>
- <int key="NSBorderType">3</int>
- <int key="NSBoxType">2</int>
- <int key="NSTitlePosition">0</int>
- <bool key="NSTransparent">NO</bool>
- </object>
- <object class="NSBox" id="876659295">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">10</int>
- <string key="NSFrame">{{124, 38}, {388, 5}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <reference key="NSWindow"/>
- <string key="NSOffsets">{0, 0}</string>
- <object class="NSTextFieldCell" key="NSTitleCell">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">Box</string>
- <reference key="NSSupport" ref="396891173"/>
- <reference key="NSBackgroundColor" ref="763520216"/>
- <object class="NSColor" key="NSTextColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MCAwLjgwMDAwMDAxAA</bytes>
- </object>
- </object>
- <int key="NSBorderType">3</int>
- <int key="NSBoxType">2</int>
- <int key="NSTitlePosition">0</int>
- <bool key="NSTransparent">NO</bool>
- </object>
- <object class="NSBox" id="751672940">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">10</int>
- <string key="NSFrame">{{20, 235}, {327, 5}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <reference key="NSWindow"/>
- <string key="NSOffsets">{0, 0}</string>
- <object class="NSTextFieldCell" key="NSTitleCell">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">Box</string>
- <reference key="NSSupport" ref="396891173"/>
- <reference key="NSBackgroundColor" ref="763520216"/>
- <object class="NSColor" key="NSTextColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MCAwLjgwMDAwMDAxAA</bytes>
- </object>
- </object>
- <int key="NSBorderType">3</int>
- <int key="NSBoxType">2</int>
- <int key="NSTitlePosition">0</int>
- <bool key="NSTransparent">NO</bool>
- </object>
- <object class="NSImageView" id="453085280">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">268</int>
- <object class="NSMutableSet" key="NSDragTypes">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="set.sortedObjects">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>Apple PDF pasteboard type</string>
- <string>Apple PICT pasteboard type</string>
- <string>Apple PNG pasteboard type</string>
- <string>NSFilenamesPboardType</string>
- <string>NeXT Encapsulated PostScript v1.2 pasteboard type</string>
- <string>NeXT TIFF v4.0 pasteboard type</string>
- </object>
- </object>
- <string key="NSFrame">{{321, 77}, {48, 48}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <reference key="NSWindow"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSImageCell" key="NSCell" id="269363509">
- <int key="NSCellFlags">130560</int>
- <int key="NSCellFlags2">33554432</int>
- <int key="NSAlign">0</int>
- <int key="NSScale">0</int>
- <int key="NSStyle">2</int>
- <bool key="NSAnimates">NO</bool>
- </object>
- <bool key="NSEditable">YES</bool>
- </object>
- <object class="NSImageView" id="125766055">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">265</int>
- <object class="NSMutableSet" key="NSDragTypes">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="set.sortedObjects">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>Apple PDF pasteboard type</string>
- <string>Apple PICT pasteboard type</string>
- <string>Apple PNG pasteboard type</string>
- <string>NSFilenamesPboardType</string>
- <string>NeXT Encapsulated PostScript v1.2 pasteboard type</string>
- <string>NeXT TIFF v4.0 pasteboard type</string>
- </object>
- </object>
- <string key="NSFrame">{{352, 213}, {48, 48}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <reference key="NSWindow"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSImageCell" key="NSCell" id="709523694">
- <int key="NSCellFlags">130560</int>
- <int key="NSCellFlags2">33554432</int>
- <int key="NSAlign">0</int>
- <int key="NSScale">0</int>
- <int key="NSStyle">2</int>
- <bool key="NSAnimates">NO</bool>
- </object>
- <bool key="NSEditable">YES</bool>
- </object>
- <object class="NSBox" id="359865555">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">12</int>
- <string key="NSFrame">{{20, 201}, {275, 5}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <reference key="NSWindow"/>
- <string key="NSOffsets">{0, 0}</string>
- <object class="NSTextFieldCell" key="NSTitleCell">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">Box</string>
- <reference key="NSSupport" ref="396891173"/>
- <reference key="NSBackgroundColor" ref="763520216"/>
- <object class="NSColor" key="NSTextColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MCAwLjgwMDAwMDAxAA</bytes>
- </object>
- </object>
- <int key="NSBorderType">3</int>
- <int key="NSBoxType">2</int>
- <int key="NSTitlePosition">0</int>
- <bool key="NSTransparent">NO</bool>
- </object>
- <object class="NSCustomView" id="496672244">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">268</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMatrix" id="122653364">
- <reference key="NSNextResponder" ref="496672244"/>
- <int key="NSvFlags">292</int>
- <string key="NSFrame">{{20, 0}, {96, 38}}</string>
- <reference key="NSSuperview" ref="496672244"/>
- <reference key="NSWindow"/>
- <bool key="NSEnabled">YES</bool>
- <int key="NSNumRows">2</int>
- <int key="NSNumCols">1</int>
- <object class="NSMutableArray" key="NSCells">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSButtonCell" id="404368211">
- <int key="NSCellFlags">-2080244224</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">mumble :5:1</string>
- <reference key="NSSupport" ref="396891173"/>
- <reference key="NSControlView" ref="122653364"/>
- <int key="NSTag">1</int>
- <int key="NSButtonFlags">1211912703</int>
- <int key="NSButtonFlags2">0</int>
- <object class="NSButtonImageSource" key="NSAlternateImage" id="520966901">
- <string key="NSImageName">NSRadioButton</string>
- </object>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- <object class="NSButtonCell" id="491468307">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">blah :8:1</string>
- <reference key="NSSupport" ref="396891173"/>
- <reference key="NSControlView" ref="122653364"/>
- <int key="NSButtonFlags">1211912703</int>
- <int key="NSButtonFlags2">0</int>
- <object class="NSImage" key="NSNormalImage">
- <int key="NSImageFlags">549453824</int>
- <string key="NSSize">{18, 18}</string>
- <object class="NSMutableArray" key="NSReps">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="0"/>
- <object class="NSBitmapImageRep">
- <object class="NSData" key="NSTIFFRepresentation">
- <bytes key="NS.bytes">TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw
-IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/
-29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5
-dXV198PDw//8/Pz////////////////////////////U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAA
-AAAAAxEREUZqamrmtbW1/+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG
-AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z8/P/9fX1//Ly8v/u7u7/
-0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/
-7e3t/+3t7f/i4uL/zs7O/8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/
-5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMAAAADAAAALrCwsPrW1tb/
-3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAAD
-AAAALp2dnezg4OD/5eXl/+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns
-AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5+fn/9/f3//b29v/x8fH/
-6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4uLpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7/
-/v7+//v7+//19fX/8PDw/8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/
-///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAAAAAAAAAAAwAAABcAAABl
-YmJi3NLS0v3////////////////////////////////V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAA
-AAAAAAAAAAUAAAAfAAAAZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMAAACzAAAAnwAAAHcAAABD
-AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu
-AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgEAAAMAAAABABIAAAEB
-AAMAAAABABIAAAECAAMAAAAEAAAFxgEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES
-AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS
-AAMAAAABAAEAAAFTAAMAAAAEAAAFzodzAAcAAAwYAAAF1gAAAAAACAAIAAgACAABAAEAAQABAAAMGGFw
-cGwCAAAAbW50clJHQiBYWVogB9YABAADABMALAASYWNzcEFQUEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAPbWAAEAAAAA0y1hcHBsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAOclhZWgAAASwAAAAUZ1hZWgAAAUAAAAAUYlhZWgAAAVQAAAAUd3RwdAAAAWgAAAAUY2hhZAAA
-AXwAAAAsclRSQwAAAagAAAAOZ1RSQwAAAbgAAAAOYlRSQwAAAcgAAAAOdmNndAAAAdgAAAMSbmRpbgAA
-BOwAAAY+ZGVzYwAACywAAABkZHNjbQAAC5AAAAAubW1vZAAAC8AAAAAoY3BydAAAC+gAAAAtWFlaIAAA
-AAAAAF1KAAA0kQAACCVYWVogAAAAAAAAdCAAALRgAAAjPVhZWiAAAAAAAAAlbAAAFyoAAKfDWFlaIAAA
-AAAAAPNSAAEAAAABFs9zZjMyAAAAAAABDEIAAAXe///zJgAAB5IAAP2R///7ov///aMAAAPcAADAbGN1
-cnYAAAAAAAAAAQHNAABjdXJ2AAAAAAAAAAEBzQAAY3VydgAAAAAAAAABAc0AAHZjZ3QAAAAAAAAAAAAD
-AQAAAQACBAUGBwkKCw0ODxASExQWFxgaGxweHyAiIyQmJygpKywtLzAxMjM1Njc4OTs8PT5AQUJDREZH
-SElKS0xOT1BRUlNUVVZXWFlaW1xdXl9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gIGCg4SF
-hoeIiYqLjI2Oj5CRkpOUlZaXmJmam5ydnZ6foKGio6SlpqanqKmqq6ytra6vsLGysrO0tba3uLi5uru8
-vL2+v8DBwcLDxMXGxsfIycrKy8zNzs7P0NHS0tPU1dbW19jZ2drb3Nzd3t/g4eLi4+Tl5ufo6enq6+zt
-7u/w8fHy8/T19vf4+fr7/P3+/v8AAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR8gISIjJCUnKCkq
-Ky0uLzAxMzQ1Njc4OTo7PD0/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaWltcXV5fYGFiY2RlZmdo
-aWprbG1ub3BxcnN0dXZ3d3h5ent8fH1+f4CBgoKDhIWGh4iIiYqLjI2Oj5CRkpOUlJWWl5iZmpucnZ2e
-n6ChoqOkpaamp6ipqqusra6vsLCxsrO0tba3uLm5uru8vb6/wMHCw8TFx8jJysvMzc7P0NDR0tPU1dbX
-2Nna29ze3+Dh4uPk5ebn6err7O3u7/Hy8/T19vf5+vv8/f7/AAIDAwQFBgcICQoKCwwNDg8QERITFBUW
-FxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODg5Ojs8PT4+P0BBQkNDREVGR0hJSUpLTE1O
-Tk9QUVJSU1RVVVZXWFhZWltbXF1eXl9gYWFiY2RkZWZnZ2hpaWprbGxtbm5vcHFxcnNzdHV1dnd4eHl6
-ent8fH1+fn+AgYGCg4SEhYaHiImJiouMjY6Oj5CRkpOTlJWWl5iZmZqbnJ2en6ChoqOkpaanqKmqq6yt
-rq+xsrO0tba3uLq7vL2+wMHDxMbHycrMzs/R0tTW19nb3d7g4uTm6Ors7vDy9Pb4+vz+/wAAbmRpbgAA
-AAAAAAY2AACXGgAAVjoAAFPKAACJ3gAAJ8IAABaoAABQDQAAVDkAAiuFAAIZmQABeFEAAwEAAAIAAAAA
-AAEABgANABcAIwAxAEAAUgBlAHsAkwCrAMUA4gD/AR8BPwFhAYUBqgHQAfgCIAJLAncCpQLSAwIDMwNl
-A5gDzgQFBD0EdQSvBOsFKQVnBacF6AYqBm4GtQb8B0UHkgfkCDkIkAjnCT4JmAn0ClAKrQsLC2sLygwq
-DIwM8Q1XDcAOKA6SDv4PbA/bEE0QxBE7EbQSMRKwEzITuRREFNAVYBXxFocXHhfAGGIZBBmsGlQa+RuU
-HC4czh1yHhQeux9jIA0gvCFoIhkizyOJJEEk+SW6JnknOygFKMspkypiKzIsASzXLawuhy9gMD4xGzH8
-MtszvzSgNYY2cjdcOEw5OTorOxs8CD0EPfU+6z/nQOFB2ELUQ9VE00XcRttH5EjxSgBLCUwdTTFOUE9v
-UI9Rt1LdVAVVNlZsV6VY4FohW21ct135X09goGH0Y0tkqGYFZ19oxGova5ptCG54b/BxbnLsdG119Xd/
-eQh6knwqfcV/W4D4gpSEO4Xih4CJKorYjIqOOY/jkZuTWJUOlsyYiZpSnB6d4Z+soX+jWqUvpxOo+6rj
-rMuuwLC4sra0rra0uL+60LzfvwDBHcLdxLXGhchYyi7MCs3lz7rRmtOA1WPXR9kq2xPc/97s4M/iveSn
-5o3obupT7ELuLPAM8fLz0PW396H5f/tZ/T3//wAAAAEAAwALABYAJQA3AE0AZQCBAJ8AwQDlAQsBNQFh
-AZABwQH1AisCZAKfAtwDHANfA6MD6gQ0BH8EzQT1BR0FcAXEBhsGdAbPBy0HXAeMB+4IUgi4CSAJVAmK
-CfYKZArVC0cLgQu8DDIMqw0mDaIOIQ6hDyQPqRAvELgQ/RFDEc8SXRLuE4AUFRSrFUMV3RZ5FxcXthhY
-GPwZoRpIGvEbnBxJHPgdqB5bHw8fxSB9ITch8iKwJDAk8yW3Jn4nRigQKNwpqSp5K0osHCzxLccuoC95
-MFUxMzISMvMz1TS5NaA2hzdxOFw5STo4Oyg8Gj4DPvs/9EDuQepD6ETpRexG8Uf3SP9LFEwhTTBOQE9S
-UGZSklOrVMVV4Vb/WB5ZP1phW4Vcq13SXvthUmJ/Y69k4GYSZ0dofGm0au1tZG6ib+FxInJlc6l073Y2
-d396FXtjfLJ+A39VgKmB/4NWhK+GCYjCiiGLgYzjjkePrJESknuT5Ja8mCuZm5sMnH+d9J9qoOGiWqPV
-pVGmz6eOqE6pzqtRrNSuWq/gsWmy8rR+tgu5Kbq6vE294b93wQ7Cp8RBxd3He8kZyrrLisxbzf/Po9FK
-0vHUm9ZF1/HZn9tO3Cbc/96x4GTiGePQ5YjnQegf6Pzquex27jbv9/G583z0X/VC9wj40Pqa/GX+Mf//
-AAAAAQADAAsAJQA3AE0AZQCBAJ8AwQELATUBYQGQAcEB9QIrAmQCnwLcAxwDXwOjA+oENAR/BM0FHQVw
-BcQGGwZ0Bs8HLQeMB+4IUgi4CSAJign2CmQK1QtHC7wMMgyrDSYNog4hDqEPJA+pEC8QuBFDEl0S7hOA
-FBUUqxVDFnkXFxe2GFgY/BpIGvEbnBxJHPgdqB8PH8UgfSE3IfIjbyQwJPMltydGKBAo3Cp5K0osHC3H
-LqAveTEzMhIy8zS5NaA2hzhcOUk6ODwaPQ4+Az/0QO5C6EPoROlG8Uf3SglLFEwhTkBPUlF7UpJUxVXh
-Vv9ZP1phXKtd0mAlYVJjr2TgZhJofGm0au1tZG6ib+FxInJldO92Nnd/eMl6FXyyfgN/VYCpgf+Er4YJ
-h2WIwoohi4GOR4+skRKSe5PklVCWvJgrmZubDJx/nfSfaqDholqj1aVRps+oTqnOq1Gs1K2Xrlqv4LFp
-svK0frYLt5m5Kbnxurq8Tb3hv3fBDsHawqfEQcUPxd3He8hKyRnKusuKzFvN/87Rz6PQdtFK0vHTxtSb
-1kXXG9fx2MjZn9tO3Cbc/93Y3rHfiuBk4hni9ePQ5KzliOZk50HoH+j86drqueuX7HbtVu427xbv9/DX
-8bnymvN89F/1QvYl9wj37PjQ+bX6mvt//GX9S/4x//8AAGRlc2MAAAAAAAAACkNvbG9yIExDRAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAABtbHVjAAAAAAAAAAEAAAAMZW5VUwAAABIAAAAcAEMAbwBsAG8AcgAgAEwAQwBE
-AABtbW9kAAAAAAAABhAAAJxOAAAAAL5zkQAAAAAAAAAAAAAAAAAAAAAAdGV4dAAAAABDb3B5cmlnaHQg
-QXBwbGUgQ29tcHV0ZXIsIEluYy4sIDIwMDUAAAAAA</bytes>
- </object>
- </object>
- </object>
- </object>
- <object class="NSColor" key="NSColor" id="83689519">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MCAwAA</bytes>
- </object>
- </object>
- <reference key="NSAlternateImage" ref="520966901"/>
- <int key="NSPeriodicDelay">400</int>
- <int key="NSPeriodicInterval">75</int>
- </object>
- </object>
- <string key="NSCellSize">{96, 18}</string>
- <string key="NSIntercellSpacing">{4, 2}</string>
- <int key="NSMatrixFlags">1151868928</int>
- <string key="NSCellClass">NSActionCell</string>
- <object class="NSButtonCell" key="NSProtoCell" id="538341112">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">Radio</string>
- <reference key="NSSupport" ref="396891173"/>
- <int key="NSButtonFlags">1211912703</int>
- <int key="NSButtonFlags2">0</int>
- <object class="NSImage" key="NSNormalImage">
- <int key="NSImageFlags">549453824</int>
- <string key="NSSize">{18, 18}</string>
- <object class="NSMutableArray" key="NSReps">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="0"/>
- <object class="NSBitmapImageRep">
- <object class="NSData" key="NSTIFFRepresentation">
- <bytes key="NS.bytes">TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw
-IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/
-29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5
-dXV198PDw//8/Pz////////////////////////////U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAA
-AAAAAxEREUZqamrmtbW1/+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG
-AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z8/P/9fX1//Ly8v/u7u7/
-0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/
-7e3t/+3t7f/i4uL/zs7O/8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/
-5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMAAAADAAAALrCwsPrW1tb/
-3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAAD
-AAAALp2dnezg4OD/5eXl/+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns
-AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5+fn/9/f3//b29v/x8fH/
-6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4uLpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7/
-/v7+//v7+//19fX/8PDw/8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/
-///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAAAAAAAAAAAwAAABcAAABl
-YmJi3NLS0v3////////////////////////////////V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAA
-AAAAAAAAAAUAAAAfAAAAZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMAAACzAAAAnwAAAHcAAABD
-AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu
-AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQEAAAMAAAABABIAAAEB
-AAMAAAABABIAAAECAAMAAAAEAAAFugEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES
-AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS
-AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
- </object>
- </object>
- </object>
- </object>
- <reference key="NSColor" ref="83689519"/>
- </object>
- <reference key="NSAlternateImage" ref="520966901"/>
- <int key="NSPeriodicDelay">400</int>
- <int key="NSPeriodicInterval">75</int>
- </object>
- <reference key="NSSelectedCell" ref="404368211"/>
- <object class="NSColor" key="NSBackgroundColor" id="584893825">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">controlColor</string>
- <object class="NSColor" key="NSColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
- </object>
- </object>
- <reference key="NSCellBackgroundColor" ref="644092534"/>
- <reference key="NSFont" ref="396891173"/>
- </object>
- </object>
- <string key="NSFrame">{{0, 20}, {116, 42}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <reference key="NSWindow"/>
- <string key="NSClassName">GTMWidthBasedTweaker</string>
- </object>
- <object class="NSCustomView" id="583112334">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">268</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSButton" id="936710330">
- <reference key="NSNextResponder" ref="583112334"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{14, 15}, {96, 32}}</string>
- <reference key="NSSuperview" ref="583112334"/>
- <reference key="NSWindow"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="183983727">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">134217728</int>
- <string key="NSContents">w:10:2</string>
- <reference key="NSSupport" ref="396891173"/>
- <reference key="NSControlView" ref="936710330"/>
- <int key="NSButtonFlags">-2038284033</int>
- <int key="NSButtonFlags2">129</int>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- <object class="NSCustomView" id="656888375">
- <reference key="NSNextResponder" ref="583112334"/>
- <int key="NSvFlags">292</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSTextField" id="290463544">
- <reference key="NSNextResponder" ref="656888375"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{17, 5}, {66, 17}}</string>
- <reference key="NSSuperview" ref="656888375"/>
- <reference key="NSWindow"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="612106675">
- <int key="NSCellFlags">68288064</int>
- <int key="NSCellFlags2">272630784</int>
- <string key="NSContents">w:2:6</string>
- <reference key="NSSupport" ref="396891173"/>
- <reference key="NSControlView" ref="290463544"/>
- <reference key="NSBackgroundColor" ref="584893825"/>
- <object class="NSColor" key="NSTextColor" id="215232119">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">controlTextColor</string>
- <reference key="NSColor" ref="960820016"/>
- </object>
- </object>
- </object>
- <object class="NSTextField" id="406015244">
- <reference key="NSNextResponder" ref="656888375"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{17, 30}, {66, 17}}</string>
- <reference key="NSSuperview" ref="656888375"/>
- <reference key="NSWindow"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="535802230">
- <int key="NSCellFlags">68288064</int>
- <int key="NSCellFlags2">272630784</int>
- <string key="NSContents">j:10:23</string>
- <reference key="NSSupport" ref="396891173"/>
- <reference key="NSControlView" ref="406015244"/>
- <reference key="NSBackgroundColor" ref="584893825"/>
- <reference key="NSTextColor" ref="215232119"/>
- </object>
- </object>
- </object>
- <string key="NSFrame">{{112, 6}, {100, 54}}</string>
- <reference key="NSSuperview" ref="583112334"/>
- <reference key="NSWindow"/>
- <string key="NSClassName">GTMWidthBasedTweaker</string>
- </object>
- <object class="NSButton" id="849868912">
- <reference key="NSNextResponder" ref="583112334"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{214, 15}, {96, 32}}</string>
- <reference key="NSSuperview" ref="583112334"/>
- <reference key="NSWindow"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="547252370">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">134217728</int>
- <string key="NSContents">z:7:10</string>
- <reference key="NSSupport" ref="396891173"/>
- <reference key="NSControlView" ref="849868912"/>
- <int key="NSButtonFlags">-2038284033</int>
- <int key="NSButtonFlags2">129</int>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- </object>
- <string key="NSFrame">{{0, 70}, {316, 63}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <reference key="NSWindow"/>
- <string key="NSClassName">GTMWidthBasedTweaker</string>
- </object>
- <object class="NSCustomView" id="797989996">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">268</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSButton" id="900885236">
- <reference key="NSNextResponder" ref="797989996"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{206, 1}, {96, 32}}</string>
- <reference key="NSSuperview" ref="797989996"/>
- <reference key="NSWindow"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="356842314">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">134217728</int>
- <string key="NSContents">no:1:2</string>
- <reference key="NSSupport" ref="396891173"/>
- <reference key="NSControlView" ref="900885236"/>
- <int key="NSButtonFlags">-2038284033</int>
- <int key="NSButtonFlags2">129</int>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- <object class="NSButton" id="1049850645">
- <reference key="NSNextResponder" ref="797989996"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{14, 1}, {96, 32}}</string>
- <reference key="NSSuperview" ref="797989996"/>
- <reference key="NSWindow"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="571145548">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">134217728</int>
- <string key="NSContents">foo :4:1</string>
- <reference key="NSSupport" ref="396891173"/>
- <reference key="NSControlView" ref="1049850645"/>
- <int key="NSButtonFlags">-2038284033</int>
- <int key="NSButtonFlags2">129</int>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- <object class="NSButton" id="709832699">
- <reference key="NSNextResponder" ref="797989996"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{103, 1}, {111, 32}}</string>
- <reference key="NSSuperview" ref="797989996"/>
- <reference key="NSWindow"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="976017799">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">134217728</int>
- <string key="NSContents">foobar :2:1</string>
- <reference key="NSSupport" ref="396891173"/>
- <reference key="NSControlView" ref="709832699"/>
- <int key="NSButtonFlags">-2038284033</int>
- <int key="NSButtonFlags2">129</int>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- </object>
- <string key="NSFrame">{{0, 157}, {316, 38}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <reference key="NSWindow"/>
- <string key="NSClassName">GTMWidthBasedTweaker</string>
- </object>
- <object class="NSCustomView" id="273331462">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">265</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSButton" id="718941270">
- <reference key="NSNextResponder" ref="273331462"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{18, 24}, {91, 18}}</string>
- <reference key="NSSuperview" ref="273331462"/>
- <reference key="NSWindow"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="1051100744">
- <int key="NSCellFlags">-2080244224</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">i:26:4</string>
- <reference key="NSSupport" ref="396891173"/>
- <reference key="NSControlView" ref="718941270"/>
- <int key="NSButtonFlags">1211912703</int>
- <int key="NSButtonFlags2">2</int>
- <object class="NSCustomResource" key="NSNormalImage" id="980015056">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">NSSwitch</string>
- </object>
- <object class="NSButtonImageSource" key="NSAlternateImage" id="644707509">
- <string key="NSImageName">NSSwitch</string>
- </object>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- <object class="NSButton" id="141065122">
- <reference key="NSNextResponder" ref="273331462"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{18, 44}, {91, 18}}</string>
- <reference key="NSSuperview" ref="273331462"/>
- <reference key="NSWindow"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="959040643">
- <int key="NSCellFlags">-2080244224</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">y:25:2</string>
- <reference key="NSSupport" ref="396891173"/>
- <reference key="NSControlView" ref="141065122"/>
- <int key="NSButtonFlags">1211912703</int>
- <int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="980015056"/>
- <reference key="NSAlternateImage" ref="644707509"/>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- <object class="NSButton" id="320146273">
- <reference key="NSNextResponder" ref="273331462"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{18, 4}, {91, 18}}</string>
- <reference key="NSSuperview" ref="273331462"/>
- <reference key="NSWindow"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="473788937">
- <int key="NSCellFlags">-2080244224</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">M:17:7</string>
- <reference key="NSSupport" ref="396891173"/>
- <reference key="NSControlView" ref="320146273"/>
- <int key="NSButtonFlags">1211912703</int>
- <int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="980015056"/>
- <reference key="NSAlternateImage" ref="644707509"/>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- </object>
- <string key="NSFrame">{{405, 203}, {127, 69}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <reference key="NSWindow"/>
- <string key="NSClassName">GTMWidthBasedTweaker</string>
- </object>
- <object class="NSCustomView" id="450922667">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">268</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSTextField" id="32340604">
- <reference key="NSNextResponder" ref="450922667"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{17, 84}, {139, 17}}</string>
- <reference key="NSSuperview" ref="450922667"/>
- <reference key="NSWindow"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="1064530732">
- <int key="NSCellFlags">68288064</int>
- <int key="NSCellFlags2">272630784</int>
- <string key="NSContents">ab:10:2</string>
- <reference key="NSSupport" ref="396891173"/>
- <reference key="NSControlView" ref="32340604"/>
- <reference key="NSBackgroundColor" ref="584893825"/>
- <reference key="NSTextColor" ref="215232119"/>
- </object>
- </object>
- <object class="NSTextField" id="499628444">
- <reference key="NSNextResponder" ref="450922667"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{17, 20}, {139, 17}}</string>
- <reference key="NSSuperview" ref="450922667"/>
- <reference key="NSWindow"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="200889835">
- <int key="NSCellFlags">68288064</int>
- <int key="NSCellFlags2">272630784</int>
- <string key="NSContents">l:12:3</string>
- <reference key="NSSupport" ref="396891173"/>
- <reference key="NSControlView" ref="499628444"/>
- <reference key="NSBackgroundColor" ref="584893825"/>
- <reference key="NSTextColor" ref="215232119"/>
- </object>
- </object>
- <object class="NSTextField" id="236725617">
- <reference key="NSNextResponder" ref="450922667"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{17, 52}, {139, 17}}</string>
- <reference key="NSSuperview" ref="450922667"/>
- <reference key="NSWindow"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="65808262">
- <int key="NSCellFlags">68288064</int>
- <int key="NSCellFlags2">272630784</int>
- <string key="NSContents">W:10:4</string>
- <reference key="NSSupport" ref="396891173"/>
- <reference key="NSControlView" ref="236725617"/>
- <reference key="NSBackgroundColor" ref="584893825"/>
- <reference key="NSTextColor" ref="215232119"/>
- </object>
- </object>
- </object>
- <string key="NSFrame">{{0, 280}, {153, 121}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <reference key="NSWindow"/>
- <string key="NSClassName">GTMWidthBasedTweaker</string>
- </object>
- </object>
- <string key="NSFrameSize">{532, 404}</string>
- <reference key="NSSuperview"/>
- <reference key="NSWindow"/>
- </object>
- <string key="NSScreenRect">{{0, 0}, {1920, 1178}}</string>
- <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
- </object>
- <object class="NSCustomObject" id="431527667">
- <string key="NSClassName">GTMUILocalizerAndLayoutTweaker</string>
- </object>
- <object class="NSCustomObject" id="730292222">
- <string key="NSClassName">GTMUILocalizerAndLayoutTweakerTestLocalizer</string>
- </object>
- </object>
- <object class="IBObjectContainer" key="IBDocument.Objects">
- <object class="NSMutableArray" key="connectionRecords">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">uiObject_</string>
- <reference key="source" ref="431527667"/>
- <reference key="destination" ref="1005"/>
- </object>
- <int key="connectionID">84</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">viewToSlideAndResize_</string>
- <reference key="source" ref="496672244"/>
- <reference key="destination" ref="876659295"/>
- </object>
- <int key="connectionID">104</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">viewToSlide_</string>
- <reference key="source" ref="583112334"/>
- <reference key="destination" ref="453085280"/>
- </object>
- <int key="connectionID">107</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">viewToSlideAndResize_</string>
- <reference key="source" ref="583112334"/>
- <reference key="destination" ref="814378125"/>
- </object>
- <int key="connectionID">108</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">viewToResize_</string>
- <reference key="source" ref="797989996"/>
- <reference key="destination" ref="359865555"/>
- </object>
- <int key="connectionID">110</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">viewToSlideAndResize_</string>
- <reference key="source" ref="797989996"/>
- <reference key="destination" ref="588270165"/>
- </object>
- <int key="connectionID">111</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">viewToSlide_</string>
- <reference key="source" ref="273331462"/>
- <reference key="destination" ref="125766055"/>
- </object>
- <int key="connectionID">113</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">viewToSlideAndResize_</string>
- <reference key="source" ref="273331462"/>
- <reference key="destination" ref="751672940"/>
- </object>
- <int key="connectionID">114</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">viewToSlideAndResize_</string>
- <reference key="source" ref="450922667"/>
- <reference key="destination" ref="13430988"/>
- </object>
- <int key="connectionID">116</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">localizer_</string>
- <reference key="source" ref="431527667"/>
- <reference key="destination" ref="730292222"/>
- </object>
- <int key="connectionID">118</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">window</string>
- <reference key="source" ref="1001"/>
- <reference key="destination" ref="1005"/>
- </object>
- <int key="connectionID">119</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="1001"/>
- <reference key="parent" ref="0"/>
- <string key="objectName">File's Owner</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-1</int>
- <reference key="object" ref="1003"/>
- <reference key="parent" ref="0"/>
- <string key="objectName">First Responder</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-3</int>
- <reference key="object" ref="1004"/>
- <reference key="parent" ref="0"/>
- <string key="objectName">Application</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">1</int>
- <reference key="object" ref="1005"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1006"/>
- </object>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">2</int>
- <reference key="object" ref="1006"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="450922667"/>
- <reference ref="13430988"/>
- <reference ref="751672940"/>
- <reference ref="125766055"/>
- <reference ref="273331462"/>
- <reference ref="797989996"/>
- <reference ref="359865555"/>
- <reference ref="588270165"/>
- <reference ref="583112334"/>
- <reference ref="453085280"/>
- <reference ref="814378125"/>
- <reference ref="876659295"/>
- <reference ref="496672244"/>
- </object>
- <reference key="parent" ref="1005"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">34</int>
- <reference key="object" ref="13430988"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="800844720"/>
- <reference ref="745022904"/>
- <reference ref="478979211"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">13</int>
- <reference key="object" ref="800844720"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="951606926"/>
- </object>
- <reference key="parent" ref="13430988"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">14</int>
- <reference key="object" ref="951606926"/>
- <reference key="parent" ref="800844720"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">15</int>
- <reference key="object" ref="745022904"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="810828168"/>
- </object>
- <reference key="parent" ref="13430988"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">16</int>
- <reference key="object" ref="810828168"/>
- <reference key="parent" ref="745022904"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">11</int>
- <reference key="object" ref="478979211"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1044158630"/>
- </object>
- <reference key="parent" ref="13430988"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">12</int>
- <reference key="object" ref="1044158630"/>
- <reference key="parent" ref="478979211"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">35</int>
- <reference key="object" ref="431527667"/>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">115</int>
- <reference key="object" ref="450922667"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="32340604"/>
- <reference ref="499628444"/>
- <reference ref="236725617"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">5</int>
- <reference key="object" ref="32340604"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1064530732"/>
- </object>
- <reference key="parent" ref="450922667"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">6</int>
- <reference key="object" ref="1064530732"/>
- <reference key="parent" ref="32340604"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">9</int>
- <reference key="object" ref="499628444"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="200889835"/>
- </object>
- <reference key="parent" ref="450922667"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">10</int>
- <reference key="object" ref="200889835"/>
- <reference key="parent" ref="499628444"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">7</int>
- <reference key="object" ref="236725617"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="65808262"/>
- </object>
- <reference key="parent" ref="450922667"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">8</int>
- <reference key="object" ref="65808262"/>
- <reference key="parent" ref="236725617"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">79</int>
- <reference key="object" ref="876659295"/>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">72</int>
- <reference key="object" ref="453085280"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="269363509"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">73</int>
- <reference key="object" ref="269363509"/>
- <reference key="parent" ref="453085280"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">112</int>
- <reference key="object" ref="273331462"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="320146273"/>
- <reference ref="141065122"/>
- <reference ref="718941270"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">21</int>
- <reference key="object" ref="320146273"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="473788937"/>
- </object>
- <reference key="parent" ref="273331462"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">22</int>
- <reference key="object" ref="473788937"/>
- <reference key="parent" ref="320146273"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">17</int>
- <reference key="object" ref="141065122"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="959040643"/>
- </object>
- <reference key="parent" ref="273331462"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">18</int>
- <reference key="object" ref="959040643"/>
- <reference key="parent" ref="141065122"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">19</int>
- <reference key="object" ref="718941270"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1051100744"/>
- </object>
- <reference key="parent" ref="273331462"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">20</int>
- <reference key="object" ref="1051100744"/>
- <reference key="parent" ref="718941270"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">52</int>
- <reference key="object" ref="751672940"/>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">82</int>
- <reference key="object" ref="359865555"/>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">49</int>
- <reference key="object" ref="588270165"/>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">102</int>
- <reference key="object" ref="496672244"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="122653364"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">75</int>
- <reference key="object" ref="122653364"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="404368211"/>
- <reference ref="491468307"/>
- <reference ref="538341112"/>
- </object>
- <reference key="parent" ref="496672244"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">76</int>
- <reference key="object" ref="404368211"/>
- <reference key="parent" ref="122653364"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">77</int>
- <reference key="object" ref="491468307"/>
- <reference key="parent" ref="122653364"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">78</int>
- <reference key="object" ref="538341112"/>
- <reference key="parent" ref="122653364"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">85</int>
- <reference key="object" ref="125766055"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="709523694"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">86</int>
- <reference key="object" ref="709523694"/>
- <reference key="parent" ref="125766055"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">59</int>
- <reference key="object" ref="814378125"/>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">109</int>
- <reference key="object" ref="797989996"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="709832699"/>
- <reference ref="1049850645"/>
- <reference ref="900885236"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">42</int>
- <reference key="object" ref="709832699"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="976017799"/>
- </object>
- <reference key="parent" ref="797989996"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">43</int>
- <reference key="object" ref="976017799"/>
- <reference key="parent" ref="709832699"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">40</int>
- <reference key="object" ref="1049850645"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="571145548"/>
- </object>
- <reference key="parent" ref="797989996"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">41</int>
- <reference key="object" ref="571145548"/>
- <reference key="parent" ref="1049850645"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">44</int>
- <reference key="object" ref="900885236"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="356842314"/>
- </object>
- <reference key="parent" ref="797989996"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">45</int>
- <reference key="object" ref="356842314"/>
- <reference key="parent" ref="900885236"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">106</int>
- <reference key="object" ref="583112334"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="936710330"/>
- <reference ref="656888375"/>
- <reference ref="849868912"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">62</int>
- <reference key="object" ref="849868912"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="547252370"/>
- </object>
- <reference key="parent" ref="583112334"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">63</int>
- <reference key="object" ref="547252370"/>
- <reference key="parent" ref="849868912"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">105</int>
- <reference key="object" ref="656888375"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="406015244"/>
- <reference ref="290463544"/>
- </object>
- <reference key="parent" ref="583112334"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">67</int>
- <reference key="object" ref="406015244"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="535802230"/>
- </object>
- <reference key="parent" ref="656888375"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">70</int>
- <reference key="object" ref="535802230"/>
- <reference key="parent" ref="406015244"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">68</int>
- <reference key="object" ref="290463544"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="612106675"/>
- </object>
- <reference key="parent" ref="656888375"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">69</int>
- <reference key="object" ref="612106675"/>
- <reference key="parent" ref="290463544"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">61</int>
- <reference key="object" ref="936710330"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="183983727"/>
- </object>
- <reference key="parent" ref="583112334"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">64</int>
- <reference key="object" ref="183983727"/>
- <reference key="parent" ref="936710330"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">117</int>
- <reference key="object" ref="730292222"/>
- <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>-3.IBPluginDependency</string>
- <string>1.IBEditorWindowLastContentRect</string>
- <string>1.IBPluginDependency</string>
- <string>1.IBWindowTemplateEditedContentRect</string>
- <string>1.NSWindowTemplate.visibleAtLaunch</string>
- <string>1.WindowOrigin</string>
- <string>1.editorWindowContentRectSynchronizationRect</string>
- <string>10.IBPluginDependency</string>
- <string>102.IBPluginDependency</string>
- <string>105.IBPluginDependency</string>
- <string>106.IBPluginDependency</string>
- <string>109.IBPluginDependency</string>
- <string>11.IBPluginDependency</string>
- <string>112.IBPluginDependency</string>
- <string>115.IBPluginDependency</string>
- <string>12.IBPluginDependency</string>
- <string>13.IBPluginDependency</string>
- <string>14.IBPluginDependency</string>
- <string>15.IBPluginDependency</string>
- <string>16.IBPluginDependency</string>
- <string>17.IBPluginDependency</string>
- <string>18.IBPluginDependency</string>
- <string>19.IBPluginDependency</string>
- <string>2.IBPluginDependency</string>
- <string>20.IBPluginDependency</string>
- <string>21.IBPluginDependency</string>
- <string>22.IBPluginDependency</string>
- <string>34.IBPluginDependency</string>
- <string>40.IBPluginDependency</string>
- <string>41.IBPluginDependency</string>
- <string>42.IBPluginDependency</string>
- <string>43.IBPluginDependency</string>
- <string>44.IBPluginDependency</string>
- <string>45.IBPluginDependency</string>
- <string>49.IBPluginDependency</string>
- <string>5.IBPluginDependency</string>
- <string>52.IBPluginDependency</string>
- <string>59.IBPluginDependency</string>
- <string>6.IBPluginDependency</string>
- <string>61.IBPluginDependency</string>
- <string>62.IBPluginDependency</string>
- <string>63.IBPluginDependency</string>
- <string>64.IBPluginDependency</string>
- <string>67.IBPluginDependency</string>
- <string>68.IBPluginDependency</string>
- <string>69.IBPluginDependency</string>
- <string>7.IBPluginDependency</string>
- <string>70.IBPluginDependency</string>
- <string>72.IBPluginDependency</string>
- <string>73.IBPluginDependency</string>
- <string>75.IBPluginDependency</string>
- <string>76.IBPluginDependency</string>
- <string>77.IBPluginDependency</string>
- <string>78.IBPluginDependency</string>
- <string>79.IBPluginDependency</string>
- <string>8.IBPluginDependency</string>
- <string>82.IBPluginDependency</string>
- <string>85.IBPluginDependency</string>
- <string>86.IBPluginDependency</string>
- <string>9.IBPluginDependency</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{636, 752}, {532, 404}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{636, 752}, {532, 404}}</string>
- <boolean value="NO"/>
- <string>{196, 240}</string>
- <string>{{202, 428}, {480, 270}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</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">119</int>
- </object>
- <object class="IBClassDescriber" key="IBDocument.Classes">
- <object class="NSMutableArray" key="referencedPartialClassDescriptions">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBPartialClassDescription">
- <string key="className">GTMUILocalizer</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>otherObjectToLocalize_</string>
- <string>owner_</string>
- <string>yetAnotherObjectToLocalize_</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>id</string>
- <string>id</string>
- <string>id</string>
- </object>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMUILocalizer.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">GTMUILocalizerAndLayoutTweaker</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>localizerOwner_</string>
- <string>localizer_</string>
- <string>uiObject_</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>id</string>
- <string>GTMUILocalizer</string>
- <string>id</string>
- </object>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="606537230">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMUILocalizerAndLayoutTweaker.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">GTMUILocalizerAndLayoutTweakerTestLocalizer</string>
- <string key="superclassName">GTMUILocalizer</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="969035251">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMUILocalizerAndLayoutTweakerTest.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">GTMUILocalizerAndLayoutTweakerTestWindowController</string>
- <string key="superclassName">NSWindowController</string>
- <object class="NSMutableDictionary" key="outlets">
- <string key="NS.key.0">tabView_</string>
- <string key="NS.object.0">NSTabView</string>
- </object>
- <reference key="sourceIdentifier" ref="969035251"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">GTMWidthBasedTweaker</string>
- <string key="superclassName">NSView</string>
- <object class="NSMutableDictionary" key="outlets">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>viewToResize_</string>
- <string>viewToSlideAndResize_</string>
- <string>viewToSlide_</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>id</string>
- <string>NSView</string>
- <string>NSView</string>
- </object>
- </object>
- <reference key="sourceIdentifier" ref="606537230"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="925048441">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMAppKit+UnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMAppKitUnitTestingUtilities.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSButton</string>
- <reference key="sourceIdentifier" ref="925048441"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSCell</string>
- <reference key="sourceIdentifier" ref="925048441"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSControl</string>
- <reference key="sourceIdentifier" ref="925048441"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSMatrix</string>
- <reference key="sourceIdentifier" ref="925048441"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSMenu</string>
- <reference key="sourceIdentifier" ref="925048441"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMCarbonEvent.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMDelegatingTableColumn.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Foundation/GTMHTTPServer.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Foundation/GTMNSAppleEventDescriptor+Foundation.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Foundation/GTMNSObject+KeyValueObserving.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMCALayer+UnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMNSObject+BindingUnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMNSObject+UnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSTabView</string>
- <reference key="sourceIdentifier" ref="925048441"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSTextField</string>
- <reference key="sourceIdentifier" ref="925048441"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="907166154">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMNSAnimatablePropertyContainer.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <reference key="sourceIdentifier" ref="925048441"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindow</string>
- <reference key="sourceIdentifier" ref="907166154"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindow</string>
- <reference key="sourceIdentifier" ref="925048441"/>
- </object>
- </object>
- <object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBPartialClassDescription">
- <string key="className">NSActionCell</string>
- <string key="superclassName">NSCell</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSActionCell.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <string key="superclassName">NSResponder</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="773683809">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSApplication.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="718191272">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSApplicationScripting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="408763547">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSColorPanel.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSHelpManager.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSPageLayout.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSUserInterfaceItemSearching.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSBox</string>
- <string key="superclassName">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSBox.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSButton</string>
- <string key="superclassName">NSControl</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSButton.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSButtonCell</string>
- <string key="superclassName">NSActionCell</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSButtonCell.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSCell</string>
- <string key="superclassName">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSCell.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSControl</string>
- <string key="superclassName">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="688332791">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSControl.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSFormatter</string>
- <string key="superclassName">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSFormatter.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSImageCell</string>
- <string key="superclassName">NSCell</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSImageCell.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSImageView</string>
- <string key="superclassName">NSControl</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSImageView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSMatrix</string>
- <string key="superclassName">NSControl</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSMatrix.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSMenu</string>
- <string key="superclassName">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="553655062">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSMenu.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">AddressBook.framework/Headers/ABActions.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">AppKit.framework/Headers/NSAccessibility.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <reference key="sourceIdentifier" ref="773683809"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <reference key="sourceIdentifier" ref="718191272"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <reference key="sourceIdentifier" ref="408763547"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <reference key="sourceIdentifier" ref="688332791"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSDictionaryController.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">AppKit.framework/Headers/NSDragging.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">AppKit.framework/Headers/NSFontManager.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">AppKit.framework/Headers/NSFontPanel.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">AppKit.framework/Headers/NSKeyValueBinding.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <reference key="sourceIdentifier" ref="553655062"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSNibLoading.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">AppKit.framework/Headers/NSOutlineView.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">AppKit.framework/Headers/NSPasteboard.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">AppKit.framework/Headers/NSSavePanel.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">AppKit.framework/Headers/NSTableView.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">AppKit.framework/Headers/NSToolbarItem.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="932879476">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSView.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/NSArchiver.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/NSClassDescription.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/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/NSObjectScripting.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/NSPortCoder.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/NSScriptClassDescription.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/NSScriptKeyValueCoding.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/NSScriptObjectSpecifiers.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/NSScriptWhoseTests.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/NSURLDownload.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">PrintCore.framework/Headers/PDEPluginInterface.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">QuartzCore.framework/Headers/CAAnimation.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">QuartzCore.framework/Headers/CALayer.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">QuartzCore.framework/Headers/CIImageProvider.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSResponder</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSInterfaceStyle.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSResponder</string>
- <string key="superclassName">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSResponder.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSTabView</string>
- <string key="superclassName">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSTabView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSTextField</string>
- <string key="superclassName">NSControl</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSTextField.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSTextFieldCell</string>
- <string key="superclassName">NSActionCell</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSTextFieldCell.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSClipView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSMenuItem.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSRulerView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <string key="superclassName">NSResponder</string>
- <reference key="sourceIdentifier" ref="932879476"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindow</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSDrawer.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindow</string>
- <string key="superclassName">NSResponder</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSWindow.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindow</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSWindowScripting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindowController</string>
- <string key="superclassName">NSResponder</string>
- <object class="NSMutableDictionary" key="actions">
- <string key="NS.key.0">showWindow:</string>
- <string key="NS.object.0">id</string>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSWindowController.h</string>
- </object>
- </object>
- </object>
- </object>
- <int key="IBDocument.localizationMode">0</int>
- <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
- <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies">
- <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
- <integer value="1050" key="NS.object.0"/>
- </object>
- <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
- <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
- <integer value="1060" key="NS.object.0"/>
- </object>
- <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
- <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
- <integer value="3000" key="NS.object.0"/>
- </object>
- <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
- <string key="IBDocument.LastKnownRelativeProjectPath">../GTM.xcodeproj</string>
- <int key="IBDocument.defaultPropertyAccessControl">3</int>
- <object class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
- <string key="NS.key.0">NSSwitch</string>
- <string key="NS.object.0">{15, 15}</string>
- </object>
- </data>
-</archive>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="11201" systemVersion="15G31" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
+ <dependencies>
+ <deployment identifier="macosx"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11201"/>
+ <capability name="box content view" minToolsVersion="7.0"/>
+ </dependencies>
+ <objects>
+ <customObject id="-2" userLabel="File's Owner" customClass="GTMUILocalizerAndLayoutTweakerTestWindowController">
+ <connections>
+ <outlet property="window" destination="1" id="119"/>
+ </connections>
+ </customObject>
+ <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+ <customObject id="-3" userLabel="Application"/>
+ <window title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" oneShot="NO" visibleAtLaunch="NO" animationBehavior="default" id="1">
+ <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
+ <windowPositionMask key="initialPositionMask" leftStrut="YES" bottomStrut="YES"/>
+ <rect key="contentRect" x="71" y="48" width="532" height="404"/>
+ <rect key="screenRect" x="0.0" y="0.0" width="1920" height="1178"/>
+ <view key="contentView" id="2">
+ <rect key="frame" x="0.0" y="0.0" width="532" height="404"/>
+ <autoresizingMask key="autoresizingMask"/>
+ <subviews>
+ <box borderType="none" title="Box" titlePosition="noTitle" id="34">
+ <rect key="frame" x="158" y="285" width="375" height="109"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
+ <view key="contentView" id="kRB-5W-mf6">
+ <rect key="frame" x="0.0" y="0.0" width="375" height="109"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <subviews>
+ <textField verticalHuggingPriority="750" id="13">
+ <rect key="frame" x="3" y="45" width="349" height="22"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
+ <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="14">
+ <font key="font" metaFont="system"/>
+ <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ </textField>
+ <textField verticalHuggingPriority="750" id="15">
+ <rect key="frame" x="3" y="13" width="349" height="22"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
+ <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="16">
+ <font key="font" metaFont="system"/>
+ <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ </textField>
+ <textField verticalHuggingPriority="750" id="11">
+ <rect key="frame" x="3" y="77" width="349" height="22"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
+ <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="12">
+ <font key="font" metaFont="system"/>
+ <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ </textField>
+ </subviews>
+ </view>
+ </box>
+ <box verticalHuggingPriority="750" boxType="separator" id="49">
+ <rect key="frame" x="324" y="173" width="188" height="5"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
+ </box>
+ <box verticalHuggingPriority="750" boxType="separator" id="59">
+ <rect key="frame" x="374" y="98" width="138" height="5"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
+ </box>
+ <box verticalHuggingPriority="750" boxType="separator" id="79">
+ <rect key="frame" x="124" y="38" width="388" height="5"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
+ </box>
+ <box verticalHuggingPriority="750" boxType="separator" id="52">
+ <rect key="frame" x="20" y="235" width="327" height="5"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
+ </box>
+ <imageView id="72">
+ <rect key="frame" x="321" y="77" width="48" height="48"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" imageFrameStyle="grayBezel" id="73"/>
+ </imageView>
+ <imageView id="85">
+ <rect key="frame" x="352" y="213" width="48" height="48"/>
+ <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
+ <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" imageFrameStyle="grayBezel" id="86"/>
+ </imageView>
+ <box verticalHuggingPriority="750" boxType="separator" id="82">
+ <rect key="frame" x="20" y="201" width="275" height="5"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ </box>
+ <customView id="102" customClass="GTMWidthBasedTweaker">
+ <rect key="frame" x="0.0" y="20" width="116" height="42"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <subviews>
+ <matrix verticalHuggingPriority="750" allowsEmptySelection="NO" id="75">
+ <rect key="frame" x="20" y="0.0" width="96" height="38"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+ <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+ <size key="cellSize" width="96" height="18"/>
+ <size key="intercellSpacing" width="4" height="2"/>
+ <buttonCell key="prototype" type="radio" title="Radio" imagePosition="left" alignment="left" inset="2" id="78">
+ <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
+ <font key="font" metaFont="system"/>
+ </buttonCell>
+ <cells>
+ <column>
+ <buttonCell type="radio" title="mumble :5:1" imagePosition="left" alignment="left" state="on" tag="1" inset="2" id="76">
+ <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
+ <font key="font" metaFont="system"/>
+ </buttonCell>
+ <buttonCell type="radio" title="blah :8:1" imagePosition="left" alignment="left" inset="2" id="77">
+ <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
+ <font key="font" metaFont="system"/>
+ </buttonCell>
+ </column>
+ </cells>
+ </matrix>
+ </subviews>
+ <connections>
+ <outlet property="viewToSlideAndResize_" destination="79" id="104"/>
+ </connections>
+ </customView>
+ <customView id="106" customClass="GTMWidthBasedTweaker">
+ <rect key="frame" x="0.0" y="70" width="316" height="63"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <subviews>
+ <button verticalHuggingPriority="750" id="62">
+ <rect key="frame" x="214" y="15" width="96" height="32"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="push" title="z:7:10" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="63">
+ <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+ <font key="font" metaFont="system"/>
+ </buttonCell>
+ </button>
+ <customView id="105" customClass="GTMWidthBasedTweaker">
+ <rect key="frame" x="112" y="6" width="100" height="54"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+ <subviews>
+ <textField verticalHuggingPriority="750" id="67">
+ <rect key="frame" x="17" y="30" width="66" height="17"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="j:10:23" id="70">
+ <font key="font" metaFont="system"/>
+ <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ </textField>
+ <textField verticalHuggingPriority="750" id="68">
+ <rect key="frame" x="17" y="5" width="66" height="17"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="w:2:6" id="69">
+ <font key="font" metaFont="system"/>
+ <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ </textField>
+ </subviews>
+ </customView>
+ <button verticalHuggingPriority="750" id="61">
+ <rect key="frame" x="14" y="15" width="96" height="32"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="push" title="w:10:2" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="64">
+ <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+ <font key="font" metaFont="system"/>
+ </buttonCell>
+ </button>
+ </subviews>
+ <connections>
+ <outlet property="viewToSlideAndResize_" destination="59" id="108"/>
+ <outlet property="viewToSlide_" destination="72" id="107"/>
+ </connections>
+ </customView>
+ <customView id="109" customClass="GTMWidthBasedTweaker">
+ <rect key="frame" x="0.0" y="157" width="316" height="38"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <subviews>
+ <button verticalHuggingPriority="750" id="42">
+ <rect key="frame" x="103" y="1" width="111" height="32"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="push" title="foobar :2:1" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="43">
+ <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+ <font key="font" metaFont="system"/>
+ </buttonCell>
+ </button>
+ <button verticalHuggingPriority="750" id="40">
+ <rect key="frame" x="14" y="1" width="96" height="32"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="push" title="foo :4:1" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="41">
+ <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+ <font key="font" metaFont="system"/>
+ </buttonCell>
+ </button>
+ <button verticalHuggingPriority="750" id="44">
+ <rect key="frame" x="206" y="1" width="96" height="32"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="push" title="no:1:2" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="45">
+ <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+ <font key="font" metaFont="system"/>
+ </buttonCell>
+ </button>
+ </subviews>
+ <connections>
+ <outlet property="viewToResize_" destination="82" id="110"/>
+ <outlet property="viewToSlideAndResize_" destination="49" id="111"/>
+ </connections>
+ </customView>
+ <customView id="112" customClass="GTMWidthBasedTweaker">
+ <rect key="frame" x="405" y="203" width="127" height="69"/>
+ <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
+ <subviews>
+ <button id="21">
+ <rect key="frame" x="18" y="4" width="91" height="18"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="check" title="M:17:7" bezelStyle="regularSquare" imagePosition="left" alignment="left" state="on" inset="2" id="22">
+ <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
+ <font key="font" metaFont="system"/>
+ </buttonCell>
+ </button>
+ <button id="17">
+ <rect key="frame" x="18" y="44" width="91" height="18"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="check" title="y:25:2" bezelStyle="regularSquare" imagePosition="left" alignment="left" state="on" inset="2" id="18">
+ <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
+ <font key="font" metaFont="system"/>
+ </buttonCell>
+ </button>
+ <button id="19">
+ <rect key="frame" x="18" y="24" width="91" height="18"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="check" title="i:26:4" bezelStyle="regularSquare" imagePosition="left" alignment="left" state="on" inset="2" id="20">
+ <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
+ <font key="font" metaFont="system"/>
+ </buttonCell>
+ </button>
+ </subviews>
+ <connections>
+ <outlet property="viewToSlideAndResize_" destination="52" id="114"/>
+ <outlet property="viewToSlide_" destination="85" id="113"/>
+ </connections>
+ </customView>
+ <customView id="115" customClass="GTMWidthBasedTweaker">
+ <rect key="frame" x="0.0" y="280" width="153" height="121"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <subviews>
+ <textField verticalHuggingPriority="750" id="7">
+ <rect key="frame" x="17" y="52" width="139" height="17"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="W:10:4" id="8">
+ <font key="font" metaFont="system"/>
+ <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ </textField>
+ <textField verticalHuggingPriority="750" id="9">
+ <rect key="frame" x="17" y="20" width="139" height="17"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="l:12:3" id="10">
+ <font key="font" metaFont="system"/>
+ <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ </textField>
+ <textField verticalHuggingPriority="750" id="5">
+ <rect key="frame" x="17" y="84" width="139" height="17"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="ab:10:2" id="6">
+ <font key="font" metaFont="system"/>
+ <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ </textField>
+ </subviews>
+ <connections>
+ <outlet property="viewToSlideAndResize_" destination="34" id="116"/>
+ </connections>
+ </customView>
+ </subviews>
+ </view>
+ </window>
+ <customObject id="35" customClass="GTMUILocalizerAndLayoutTweaker">
+ <connections>
+ <outlet property="localizer_" destination="117" id="118"/>
+ <outlet property="uiObject_" destination="1" id="84"/>
+ </connections>
+ </customObject>
+ <customObject id="117" customClass="GTMUILocalizerAndLayoutTweakerTestLocalizer"/>
+ </objects>
+</document>
diff --git a/AppKit/GTMUILocalizerAndLayoutTweakerTest2.xib b/AppKit/GTMUILocalizerAndLayoutTweakerTest2.xib
index b4c7c6f..c43cf26 100644
--- a/AppKit/GTMUILocalizerAndLayoutTweakerTest2.xib
+++ b/AppKit/GTMUILocalizerAndLayoutTweakerTest2.xib
@@ -1,862 +1,140 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.03">
- <data>
- <int key="IBDocument.SystemTarget">1050</int>
- <string key="IBDocument.SystemVersion">9J61</string>
- <string key="IBDocument.InterfaceBuilderVersion">677</string>
- <string key="IBDocument.AppKitVersion">949.46</string>
- <string key="IBDocument.HIToolboxVersion">353.00</string>
- <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="1"/>
- </object>
- <object class="NSArray" key="IBDocument.PluginDependencies">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>com.apple.InterfaceBuilderKit</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- </object>
- <object class="NSMutableDictionary" key="IBDocument.Metadata">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <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="NSCustomObject" id="1001">
- <string key="NSClassName">GTMUILocalizerAndLayoutTweakerTestWindowController</string>
- </object>
- <object class="NSCustomObject" id="1003">
- <string key="NSClassName">FirstResponder</string>
- </object>
- <object class="NSCustomObject" id="1004">
- <string key="NSClassName">NSApplication</string>
- </object>
- <object class="NSWindowTemplate" id="1005">
- <int key="NSWindowStyleMask">15</int>
- <int key="NSWindowBacking">2</int>
- <string key="NSWindowRect">{{123, 932}, {504, 183}}</string>
- <int key="NSWTFlags">536870912</int>
- <string key="NSWindowTitle">Window2</string>
- <string key="NSWindowClass">NSWindow</string>
- <nil key="NSViewClass"/>
- <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
- <object class="NSView" key="NSWindowView" id="1006">
- <reference key="NSNextResponder"/>
- <int key="NSvFlags">256</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSBox" id="13430988">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">266</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSView" id="180511442">
- <reference key="NSNextResponder" ref="13430988"/>
- <int key="NSvFlags">256</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSTextField" id="800844720">
- <reference key="NSNextResponder" ref="180511442"/>
- <int key="NSvFlags">266</int>
- <string key="NSFrame">{{3, 45}, {336, 22}}</string>
- <reference key="NSSuperview" ref="180511442"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="951606926">
- <int key="NSCellFlags">-1804468671</int>
- <int key="NSCellFlags2">272630784</int>
- <string key="NSContents"/>
- <object class="NSFont" key="NSSupport" id="396891173">
- <string key="NSName">LucidaGrande</string>
- <double key="NSSize">1.300000e+01</double>
- <int key="NSfFlags">1044</int>
- </object>
- <reference key="NSControlView" ref="800844720"/>
- <bool key="NSDrawsBackground">YES</bool>
- <object class="NSColor" key="NSBackgroundColor" id="763520216">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">textBackgroundColor</string>
- <object class="NSColor" key="NSColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MQA</bytes>
- </object>
- </object>
- <object class="NSColor" key="NSTextColor" id="843269795">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">textColor</string>
- <object class="NSColor" key="NSColor" id="960820016">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MAA</bytes>
- </object>
- </object>
- </object>
- </object>
- <object class="NSTextField" id="745022904">
- <reference key="NSNextResponder" ref="180511442"/>
- <int key="NSvFlags">266</int>
- <string key="NSFrame">{{3, 13}, {336, 22}}</string>
- <reference key="NSSuperview" ref="180511442"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="810828168">
- <int key="NSCellFlags">-1804468671</int>
- <int key="NSCellFlags2">272630784</int>
- <string key="NSContents"/>
- <reference key="NSSupport" ref="396891173"/>
- <reference key="NSControlView" ref="745022904"/>
- <bool key="NSDrawsBackground">YES</bool>
- <reference key="NSBackgroundColor" ref="763520216"/>
- <reference key="NSTextColor" ref="843269795"/>
- </object>
- </object>
- <object class="NSTextField" id="478979211">
- <reference key="NSNextResponder" ref="180511442"/>
- <int key="NSvFlags">266</int>
- <string key="NSFrame">{{3, 77}, {336, 22}}</string>
- <reference key="NSSuperview" ref="180511442"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="1044158630">
- <int key="NSCellFlags">-1804468671</int>
- <int key="NSCellFlags2">272630784</int>
- <string key="NSContents"/>
- <reference key="NSSupport" ref="396891173"/>
- <reference key="NSControlView" ref="478979211"/>
- <bool key="NSDrawsBackground">YES</bool>
- <reference key="NSBackgroundColor" ref="763520216"/>
- <reference key="NSTextColor" ref="843269795"/>
- </object>
- </object>
- </object>
- <string key="NSFrameSize">{342, 109}</string>
- <reference key="NSSuperview" ref="13430988"/>
- </object>
- </object>
- <string key="NSFrame">{{145, 64}, {342, 109}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <string key="NSOffsets">{0, 0}</string>
- <object class="NSTextFieldCell" key="NSTitleCell">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">Box</string>
- <object class="NSFont" key="NSSupport">
- <string key="NSName">LucidaGrande</string>
- <double key="NSSize">1.100000e+01</double>
- <int key="NSfFlags">3100</int>
- </object>
- <reference key="NSBackgroundColor" ref="763520216"/>
- <object class="NSColor" key="NSTextColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MCAwLjgwMDAwMDAxAA</bytes>
- </object>
- </object>
- <reference key="NSContentView" ref="180511442"/>
- <int key="NSBorderType">0</int>
- <int key="NSBoxType">0</int>
- <int key="NSTitlePosition">0</int>
- <bool key="NSTransparent">NO</bool>
- </object>
- <object class="NSCustomView" id="797989996">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">289</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSButton" id="900885236">
- <reference key="NSNextResponder" ref="797989996"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{206, 12}, {96, 32}}</string>
- <reference key="NSSuperview" ref="797989996"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="356842314">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">134217728</int>
- <string key="NSContents">ok:8:1</string>
- <reference key="NSSupport" ref="396891173"/>
- <reference key="NSControlView" ref="900885236"/>
- <int key="NSButtonFlags">-2038284033</int>
- <int key="NSButtonFlags2">129</int>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- <object class="NSButton" id="1049850645">
- <reference key="NSNextResponder" ref="797989996"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{14, 12}, {96, 32}}</string>
- <reference key="NSSuperview" ref="797989996"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="571145548">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">134217728</int>
- <string key="NSContents">abc:3:1</string>
- <reference key="NSSupport" ref="396891173"/>
- <reference key="NSControlView" ref="1049850645"/>
- <int key="NSButtonFlags">-2038284033</int>
- <int key="NSButtonFlags2">129</int>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- <object class="NSButton" id="709832699">
- <reference key="NSNextResponder" ref="797989996"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{110, 12}, {96, 32}}</string>
- <reference key="NSSuperview" ref="797989996"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="976017799">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">134217728</int>
- <string key="NSContents">w:9:3</string>
- <reference key="NSSupport" ref="396891173"/>
- <reference key="NSControlView" ref="709832699"/>
- <int key="NSButtonFlags">-2038284033</int>
- <int key="NSButtonFlags2">129</int>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- </object>
- <string key="NSFrame">{{188, 0}, {316, 60}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <string key="NSClassName">GTMWidthBasedTweaker</string>
- </object>
- <object class="NSCustomView" id="450922667">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">268</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSTextField" id="32340604">
- <reference key="NSNextResponder" ref="450922667"/>
- <int key="NSvFlags">265</int>
- <string key="NSFrame">{{17, 84}, {111, 17}}</string>
- <reference key="NSSuperview" ref="450922667"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="1064530732">
- <int key="NSCellFlags">68288064</int>
- <int key="NSCellFlags2">272630784</int>
- <string key="NSContents">foo :8:2</string>
- <reference key="NSSupport" ref="396891173"/>
- <reference key="NSControlView" ref="32340604"/>
- <object class="NSColor" key="NSBackgroundColor" id="584893825">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">controlColor</string>
- <object class="NSColor" key="NSColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC42NjY2NjY2OQA</bytes>
- </object>
- </object>
- <object class="NSColor" key="NSTextColor" id="215232119">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">controlTextColor</string>
- <reference key="NSColor" ref="960820016"/>
- </object>
- </object>
- </object>
- <object class="NSTextField" id="499628444">
- <reference key="NSNextResponder" ref="450922667"/>
- <int key="NSvFlags">265</int>
- <string key="NSFrame">{{17, 20}, {111, 17}}</string>
- <reference key="NSSuperview" ref="450922667"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="200889835">
- <int key="NSCellFlags">68288064</int>
- <int key="NSCellFlags2">272630784</int>
- <string key="NSContents">w:12:6</string>
- <reference key="NSSupport" ref="396891173"/>
- <reference key="NSControlView" ref="499628444"/>
- <reference key="NSBackgroundColor" ref="584893825"/>
- <reference key="NSTextColor" ref="215232119"/>
- </object>
- </object>
- <object class="NSTextField" id="236725617">
- <reference key="NSNextResponder" ref="450922667"/>
- <int key="NSvFlags">265</int>
- <string key="NSFrame">{{17, 52}, {111, 17}}</string>
- <reference key="NSSuperview" ref="450922667"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="65808262">
- <int key="NSCellFlags">68288064</int>
- <int key="NSCellFlags2">272630784</int>
- <string key="NSContents">mumble :3:1</string>
- <reference key="NSSupport" ref="396891173"/>
- <reference key="NSControlView" ref="236725617"/>
- <reference key="NSBackgroundColor" ref="584893825"/>
- <reference key="NSTextColor" ref="215232119"/>
- </object>
- </object>
- </object>
- <string key="NSFrame">{{0, 59}, {140, 121}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <string key="NSClassName">GTMWidthBasedTweaker</string>
- </object>
- </object>
- <string key="NSFrameSize">{504, 183}</string>
- <reference key="NSSuperview"/>
- </object>
- <string key="NSScreenRect">{{0, 0}, {1920, 1178}}</string>
- <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
- </object>
- <object class="NSCustomObject" id="431527667">
- <string key="NSClassName">GTMUILocalizerAndLayoutTweaker</string>
- </object>
- <object class="NSCustomObject" id="239437949">
- <string key="NSClassName">GTMUILocalizerAndLayoutTweakerTestLocalizer</string>
- </object>
- </object>
- <object class="IBObjectContainer" key="IBDocument.Objects">
- <object class="NSMutableArray" key="connectionRecords">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">uiObject_</string>
- <reference key="source" ref="431527667"/>
- <reference key="destination" ref="1005"/>
- </object>
- <int key="connectionID">84</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">viewToResize_</string>
- <reference key="source" ref="450922667"/>
- <reference key="destination" ref="1005"/>
- </object>
- <int key="connectionID">118</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">viewToSlideAndResize_</string>
- <reference key="source" ref="450922667"/>
- <reference key="destination" ref="13430988"/>
- </object>
- <int key="connectionID">119</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">localizer_</string>
- <reference key="source" ref="431527667"/>
- <reference key="destination" ref="239437949"/>
- </object>
- <int key="connectionID">121</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">window</string>
- <reference key="source" ref="1001"/>
- <reference key="destination" ref="1005"/>
- </object>
- <int key="connectionID">122</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>
- <object class="NSArray" key="object" id="1002">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <reference key="children" ref="1000"/>
- <nil key="parent"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-2</int>
- <reference key="object" ref="1001"/>
- <reference key="parent" ref="1002"/>
- <string type="base64-UTF8" key="objectName">RmlsZSdzIE93bmVyA</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-1</int>
- <reference key="object" ref="1003"/>
- <reference key="parent" ref="1002"/>
- <string key="objectName">First Responder</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-3</int>
- <reference key="object" ref="1004"/>
- <reference key="parent" ref="1002"/>
- <string key="objectName">Application</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">1</int>
- <reference key="object" ref="1005"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1006"/>
- </object>
- <reference key="parent" ref="1002"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">2</int>
- <reference key="object" ref="1006"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="450922667"/>
- <reference ref="13430988"/>
- <reference ref="797989996"/>
- </object>
- <reference key="parent" ref="1005"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">34</int>
- <reference key="object" ref="13430988"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="800844720"/>
- <reference ref="745022904"/>
- <reference ref="478979211"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">13</int>
- <reference key="object" ref="800844720"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="951606926"/>
- </object>
- <reference key="parent" ref="13430988"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">14</int>
- <reference key="object" ref="951606926"/>
- <reference key="parent" ref="800844720"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">15</int>
- <reference key="object" ref="745022904"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="810828168"/>
- </object>
- <reference key="parent" ref="13430988"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">16</int>
- <reference key="object" ref="810828168"/>
- <reference key="parent" ref="745022904"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">11</int>
- <reference key="object" ref="478979211"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1044158630"/>
- </object>
- <reference key="parent" ref="13430988"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">12</int>
- <reference key="object" ref="1044158630"/>
- <reference key="parent" ref="478979211"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">35</int>
- <reference key="object" ref="431527667"/>
- <reference key="parent" ref="1002"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">115</int>
- <reference key="object" ref="450922667"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="32340604"/>
- <reference ref="499628444"/>
- <reference ref="236725617"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">5</int>
- <reference key="object" ref="32340604"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1064530732"/>
- </object>
- <reference key="parent" ref="450922667"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">6</int>
- <reference key="object" ref="1064530732"/>
- <reference key="parent" ref="32340604"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">9</int>
- <reference key="object" ref="499628444"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="200889835"/>
- </object>
- <reference key="parent" ref="450922667"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">10</int>
- <reference key="object" ref="200889835"/>
- <reference key="parent" ref="499628444"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">7</int>
- <reference key="object" ref="236725617"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="65808262"/>
- </object>
- <reference key="parent" ref="450922667"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">8</int>
- <reference key="object" ref="65808262"/>
- <reference key="parent" ref="236725617"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">109</int>
- <reference key="object" ref="797989996"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1049850645"/>
- <reference ref="900885236"/>
- <reference ref="709832699"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">42</int>
- <reference key="object" ref="709832699"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="976017799"/>
- </object>
- <reference key="parent" ref="797989996"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">43</int>
- <reference key="object" ref="976017799"/>
- <reference key="parent" ref="709832699"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">40</int>
- <reference key="object" ref="1049850645"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="571145548"/>
- </object>
- <reference key="parent" ref="797989996"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">41</int>
- <reference key="object" ref="571145548"/>
- <reference key="parent" ref="1049850645"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">44</int>
- <reference key="object" ref="900885236"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="356842314"/>
- </object>
- <reference key="parent" ref="797989996"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">45</int>
- <reference key="object" ref="356842314"/>
- <reference key="parent" ref="900885236"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">120</int>
- <reference key="object" ref="239437949"/>
- <reference key="parent" ref="1002"/>
- </object>
- </object>
- </object>
- <object class="NSMutableDictionary" key="flattenedProperties">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMutableArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>-1.IBPluginDependency</string>
- <string>-2.IBPluginDependency</string>
- <string>-3.IBPluginDependency</string>
- <string>1.IBEditorWindowLastContentRect</string>
- <string>1.IBPluginDependency</string>
- <string>1.IBWindowTemplateEditedContentRect</string>
- <string>1.NSWindowTemplate.visibleAtLaunch</string>
- <string>1.WindowOrigin</string>
- <string>1.editorWindowContentRectSynchronizationRect</string>
- <string>10.IBPluginDependency</string>
- <string>11.IBPluginDependency</string>
- <string>12.IBPluginDependency</string>
- <string>120.IBPluginDependency</string>
- <string>13.IBPluginDependency</string>
- <string>14.IBPluginDependency</string>
- <string>15.IBPluginDependency</string>
- <string>16.IBPluginDependency</string>
- <string>2.IBPluginDependency</string>
- <string>35.IBPluginDependency</string>
- <string>40.IBPluginDependency</string>
- <string>41.IBPluginDependency</string>
- <string>42.IBPluginDependency</string>
- <string>43.IBPluginDependency</string>
- <string>44.IBPluginDependency</string>
- <string>45.IBPluginDependency</string>
- <string>5.IBPluginDependency</string>
- <string>6.IBPluginDependency</string>
- <string>7.IBPluginDependency</string>
- <string>8.IBPluginDependency</string>
- <string>9.IBPluginDependency</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilderKit</string>
- <string>com.apple.InterfaceBuilderKit</string>
- <string>{{632, 945}, {504, 183}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{632, 945}, {504, 183}}</string>
- <boolean value="NO"/>
- <string>{196, 240}</string>
- <string>{{202, 428}, {480, 270}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- </object>
- </object>
- <object class="NSMutableDictionary" key="unlocalizedProperties">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <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>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- </object>
- <nil key="sourceID"/>
- <int key="maxID">122</int>
- </object>
- <object class="IBClassDescriber" key="IBDocument.Classes">
- <object class="NSMutableArray" key="referencedPartialClassDescriptions">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBPartialClassDescription">
- <string key="className">GTMUILocalizer</string>
- <string key="superclassName">NSObject</string>
- <object class="NSMutableDictionary" key="outlets">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMutableArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>otherObjectToLocalize_</string>
- <string>owner_</string>
- <string>yetAnotherObjectToLocalize_</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>id</string>
- <string>id</string>
- <string>id</string>
- </object>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMUILocalizer.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">GTMUILocalizerAndLayoutTweaker</string>
- <string key="superclassName">NSObject</string>
- <object class="NSMutableDictionary" key="outlets">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMutableArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>localizerOwner_</string>
- <string>localizer_</string>
- <string>uiObject_</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>id</string>
- <string>GTMUILocalizer</string>
- <string>id</string>
- </object>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="832487978">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMUILocalizerAndLayoutTweaker.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">GTMUILocalizerAndLayoutTweakerTestLocalizer</string>
- <string key="superclassName">GTMUILocalizer</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="965049481">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMUILocalizerAndLayoutTweakerTest.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">GTMUILocalizerAndLayoutTweakerTestWindowController</string>
- <string key="superclassName">NSWindowController</string>
- <reference key="sourceIdentifier" ref="965049481"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">GTMWidthBasedTweaker</string>
- <string key="superclassName">NSView</string>
- <object class="NSMutableDictionary" key="outlets">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMutableArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>viewToResize_</string>
- <string>viewToSlideAndResize_</string>
- <string>viewToSlide_</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>id</string>
- <string>NSView</string>
- <string>NSView</string>
- </object>
- </object>
- <reference key="sourceIdentifier" ref="832487978"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="450080117">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMAppKit+UnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSButton</string>
- <reference key="sourceIdentifier" ref="450080117"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSCell</string>
- <reference key="sourceIdentifier" ref="450080117"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSControl</string>
- <reference key="sourceIdentifier" ref="450080117"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSMenu</string>
- <reference key="sourceIdentifier" ref="450080117"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMCarbonEvent.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMDelegatingTableColumn.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Foundation/GTMHTTPServer.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Foundation/GTMNSAppleEventDescriptor+Foundation.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Foundation/GTMNSObject+KeyValueObserving.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMCALayer+UnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMNSObject+BindingUnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMNSObject+UnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSTextField</string>
- <reference key="sourceIdentifier" ref="450080117"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="907434799">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMTheme.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <reference key="sourceIdentifier" ref="450080117"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindow</string>
- <reference key="sourceIdentifier" ref="907434799"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindow</string>
- <reference key="sourceIdentifier" ref="450080117"/>
- </object>
- </object>
- </object>
- <int key="IBDocument.localizationMode">0</int>
- <string key="IBDocument.LastKnownRelativeProjectPath">../GTM.xcodeproj</string>
- <int key="IBDocument.defaultPropertyAccessControl">3</int>
- </data>
-</archive>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="11201" systemVersion="15G31" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
+ <dependencies>
+ <deployment identifier="macosx"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11201"/>
+ <capability name="box content view" minToolsVersion="7.0"/>
+ </dependencies>
+ <objects>
+ <customObject id="-2" userLabel="File's Owner" customClass="GTMUILocalizerAndLayoutTweakerTestWindowController">
+ <connections>
+ <outlet property="window" destination="1" id="122"/>
+ </connections>
+ </customObject>
+ <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+ <customObject id="-3" userLabel="Application"/>
+ <window title="Window2" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" oneShot="NO" visibleAtLaunch="NO" animationBehavior="default" id="1">
+ <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
+ <windowPositionMask key="initialPositionMask" leftStrut="YES" bottomStrut="YES"/>
+ <rect key="contentRect" x="123" y="932" width="504" height="183"/>
+ <rect key="screenRect" x="0.0" y="0.0" width="1920" height="1178"/>
+ <view key="contentView" id="2">
+ <rect key="frame" x="0.0" y="0.0" width="504" height="183"/>
+ <autoresizingMask key="autoresizingMask"/>
+ <subviews>
+ <box borderType="none" title="Box" titlePosition="noTitle" id="34">
+ <rect key="frame" x="145" y="64" width="342" height="109"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
+ <view key="contentView" id="3OO-L7-9xJ">
+ <rect key="frame" x="0.0" y="0.0" width="342" height="109"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <subviews>
+ <textField verticalHuggingPriority="750" id="13">
+ <rect key="frame" x="3" y="45" width="336" height="22"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
+ <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="14">
+ <font key="font" metaFont="system"/>
+ <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ </textField>
+ <textField verticalHuggingPriority="750" id="15">
+ <rect key="frame" x="3" y="13" width="336" height="22"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
+ <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="16">
+ <font key="font" metaFont="system"/>
+ <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ </textField>
+ <textField verticalHuggingPriority="750" id="11">
+ <rect key="frame" x="3" y="77" width="336" height="22"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
+ <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="12">
+ <font key="font" metaFont="system"/>
+ <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ </textField>
+ </subviews>
+ </view>
+ </box>
+ <customView id="109" customClass="GTMWidthBasedTweaker">
+ <rect key="frame" x="188" y="0.0" width="316" height="60"/>
+ <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
+ <subviews>
+ <button verticalHuggingPriority="750" id="42">
+ <rect key="frame" x="110" y="12" width="96" height="32"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="push" title="w:9:3" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="43">
+ <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+ <font key="font" metaFont="system"/>
+ </buttonCell>
+ </button>
+ <button verticalHuggingPriority="750" id="40">
+ <rect key="frame" x="14" y="12" width="96" height="32"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="push" title="abc:3:1" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="41">
+ <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+ <font key="font" metaFont="system"/>
+ </buttonCell>
+ </button>
+ <button verticalHuggingPriority="750" id="44">
+ <rect key="frame" x="206" y="12" width="96" height="32"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="push" title="ok:8:1" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="45">
+ <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+ <font key="font" metaFont="system"/>
+ </buttonCell>
+ </button>
+ </subviews>
+ </customView>
+ <customView id="115" customClass="GTMWidthBasedTweaker">
+ <rect key="frame" x="0.0" y="59" width="140" height="121"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <subviews>
+ <textField verticalHuggingPriority="750" id="7">
+ <rect key="frame" x="17" y="52" width="111" height="17"/>
+ <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
+ <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="mumble :3:1" id="8">
+ <font key="font" metaFont="system"/>
+ <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ </textField>
+ <textField verticalHuggingPriority="750" id="9">
+ <rect key="frame" x="17" y="20" width="111" height="17"/>
+ <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
+ <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="w:12:6" id="10">
+ <font key="font" metaFont="system"/>
+ <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ </textField>
+ <textField verticalHuggingPriority="750" id="5">
+ <rect key="frame" x="17" y="84" width="111" height="17"/>
+ <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
+ <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="foo :8:2" id="6">
+ <font key="font" metaFont="system"/>
+ <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ </textField>
+ </subviews>
+ <connections>
+ <outlet property="viewToResize_" destination="1" id="118"/>
+ <outlet property="viewToSlideAndResize_" destination="34" id="119"/>
+ </connections>
+ </customView>
+ </subviews>
+ </view>
+ </window>
+ <customObject id="35" customClass="GTMUILocalizerAndLayoutTweaker">
+ <connections>
+ <outlet property="localizer_" destination="120" id="121"/>
+ <outlet property="uiObject_" destination="1" id="84"/>
+ </connections>
+ </customObject>
+ <customObject id="120" customClass="GTMUILocalizerAndLayoutTweakerTestLocalizer"/>
+ </objects>
+</document>
diff --git a/AppKit/GTMUILocalizerAndLayoutTweakerTest3.xib b/AppKit/GTMUILocalizerAndLayoutTweakerTest3.xib
index 36a6fc5..61ac5e5 100644
--- a/AppKit/GTMUILocalizerAndLayoutTweakerTest3.xib
+++ b/AppKit/GTMUILocalizerAndLayoutTweakerTest3.xib
@@ -1,376 +1,46 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.03">
- <data>
- <int key="IBDocument.SystemTarget">1050</int>
- <string key="IBDocument.SystemVersion">9L30</string>
- <string key="IBDocument.InterfaceBuilderVersion">677</string>
- <string key="IBDocument.AppKitVersion">949.54</string>
- <string key="IBDocument.HIToolboxVersion">353.00</string>
- <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.InterfaceBuilderKit</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- </object>
- <object class="NSMutableDictionary" key="IBDocument.Metadata">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <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="NSCustomObject" id="1001">
- <string key="NSClassName">GTMUILocalizerAndLayoutTweakerTestWindowController</string>
- </object>
- <object class="NSCustomObject" id="1003">
- <string key="NSClassName">FirstResponder</string>
- </object>
- <object class="NSCustomObject" id="1004">
- <string key="NSClassName">NSApplication</string>
- </object>
- <object class="NSWindowTemplate" id="1005">
- <int key="NSWindowStyleMask">3</int>
- <int key="NSWindowBacking">2</int>
- <string key="NSWindowRect">{{123, 844}, {474, 271}}</string>
- <int key="NSWTFlags">536870912</int>
- <string key="NSWindowTitle">Window3</string>
- <string key="NSWindowClass">NSWindow</string>
- <nil key="NSViewClass"/>
- <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
- <object class="NSView" key="NSWindowView" id="1006">
- <reference key="NSNextResponder"/>
- <int key="NSvFlags">256</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSTextField" id="374380249">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{17, 20}, {219, 231}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="929792690">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">272891904</int>
- <string key="NSContents">Multiline Label</string>
- <object class="NSFont" key="NSSupport" id="554297525">
- <string key="NSName">LucidaGrande</string>
- <double key="NSSize">1.300000e+01</double>
- <int key="NSfFlags">16</int>
- </object>
- <reference key="NSControlView" ref="374380249"/>
- <object class="NSColor" key="NSBackgroundColor" id="584893825">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">controlColor</string>
- <object class="NSColor" key="NSColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC42NjY2NjY2OQA</bytes>
- </object>
- </object>
- <object class="NSColor" key="NSTextColor" id="215232119">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">controlTextColor</string>
- <object class="NSColor" key="NSColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MAA</bytes>
- </object>
- </object>
- </object>
- </object>
- <object class="NSTextField" id="958773035">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{238, 20}, {219, 32}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="847317034">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">71565312</int>
- <string key="NSContents">Multiline Label</string>
- <reference key="NSSupport" ref="554297525"/>
- <reference key="NSControlView" ref="958773035"/>
- <reference key="NSBackgroundColor" ref="584893825"/>
- <reference key="NSTextColor" ref="215232119"/>
- </object>
- </object>
- </object>
- <string key="NSFrameSize">{474, 271}</string>
- <reference key="NSSuperview"/>
- </object>
- <string key="NSScreenRect">{{0, 0}, {1920, 1178}}</string>
- <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
- </object>
- </object>
- <object class="IBObjectContainer" key="IBDocument.Objects">
- <object class="NSMutableArray" key="connectionRecords">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">window</string>
- <reference key="source" ref="1001"/>
- <reference key="destination" ref="1005"/>
- </object>
- <int key="connectionID">122</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>
- <object class="NSArray" key="object" id="1002">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <reference key="children" ref="1000"/>
- <nil key="parent"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-2</int>
- <reference key="object" ref="1001"/>
- <reference key="parent" ref="1002"/>
- <string type="base64-UTF8" key="objectName">RmlsZSdzIE93bmVyA</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-1</int>
- <reference key="object" ref="1003"/>
- <reference key="parent" ref="1002"/>
- <string key="objectName">First Responder</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-3</int>
- <reference key="object" ref="1004"/>
- <reference key="parent" ref="1002"/>
- <string key="objectName">Application</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">1</int>
- <reference key="object" ref="1005"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1006"/>
- </object>
- <reference key="parent" ref="1002"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">2</int>
- <reference key="object" ref="1006"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="374380249"/>
- <reference ref="958773035"/>
- </object>
- <reference key="parent" ref="1005"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">123</int>
- <reference key="object" ref="374380249"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="929792690"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">124</int>
- <reference key="object" ref="929792690"/>
- <reference key="parent" ref="374380249"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">125</int>
- <reference key="object" ref="958773035"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="847317034"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">126</int>
- <reference key="object" ref="847317034"/>
- <reference key="parent" ref="958773035"/>
- </object>
- </object>
- </object>
- <object class="NSMutableDictionary" key="flattenedProperties">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMutableArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>-1.IBPluginDependency</string>
- <string>-2.IBPluginDependency</string>
- <string>-3.IBPluginDependency</string>
- <string>1.IBEditorWindowLastContentRect</string>
- <string>1.IBPluginDependency</string>
- <string>1.IBWindowTemplateEditedContentRect</string>
- <string>1.NSWindowTemplate.visibleAtLaunch</string>
- <string>1.WindowOrigin</string>
- <string>1.editorWindowContentRectSynchronizationRect</string>
- <string>123.IBPluginDependency</string>
- <string>124.IBPluginDependency</string>
- <string>125.IBPluginDependency</string>
- <string>126.IBPluginDependency</string>
- <string>2.IBPluginDependency</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilderKit</string>
- <string>com.apple.InterfaceBuilderKit</string>
- <string>{{632, 857}, {474, 271}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{632, 857}, {474, 271}}</string>
- <boolean value="NO"/>
- <string>{196, 240}</string>
- <string>{{202, 428}, {480, 270}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- </object>
- </object>
- <object class="NSMutableDictionary" key="unlocalizedProperties">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <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>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- </object>
- <nil key="sourceID"/>
- <int key="maxID">128</int>
- </object>
- <object class="IBClassDescriber" key="IBDocument.Classes">
- <object class="NSMutableArray" key="referencedPartialClassDescriptions">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBPartialClassDescription">
- <string key="className">GTMUILocalizerAndLayoutTweakerTestWindowController</string>
- <string key="superclassName">NSWindowController</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMUILocalizerAndLayoutTweakerTest.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="450080117">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMAppKit+UnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSCell</string>
- <reference key="sourceIdentifier" ref="450080117"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSControl</string>
- <reference key="sourceIdentifier" ref="450080117"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSMenu</string>
- <reference key="sourceIdentifier" ref="450080117"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMCarbonEvent.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMDelegatingTableColumn.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Foundation/GTMHTTPServer.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Foundation/GTMNSAppleEventDescriptor+Foundation.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Foundation/GTMNSObject+KeyValueObserving.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMCALayer+UnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMNSObject+BindingUnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMNSObject+UnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSTextField</string>
- <reference key="sourceIdentifier" ref="450080117"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="907434799">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMTheme.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <reference key="sourceIdentifier" ref="450080117"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindow</string>
- <reference key="sourceIdentifier" ref="907434799"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindow</string>
- <reference key="sourceIdentifier" ref="450080117"/>
- </object>
- </object>
- </object>
- <int key="IBDocument.localizationMode">0</int>
- <string key="IBDocument.LastKnownRelativeProjectPath">../GTM.xcodeproj</string>
- <int key="IBDocument.defaultPropertyAccessControl">3</int>
- </data>
-</archive>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="11201" systemVersion="15G1004" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
+ <dependencies>
+ <deployment identifier="macosx"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11201"/>
+ </dependencies>
+ <objects>
+ <customObject id="-2" userLabel="File's Owner" customClass="GTMUILocalizerAndLayoutTweakerTestWindowController">
+ <connections>
+ <outlet property="window" destination="1" id="122"/>
+ </connections>
+ </customObject>
+ <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+ <customObject id="-3" userLabel="Application" customClass="NSObject"/>
+ <window title="Window3" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" oneShot="NO" visibleAtLaunch="NO" animationBehavior="default" id="1">
+ <windowStyleMask key="styleMask" titled="YES" closable="YES"/>
+ <windowPositionMask key="initialPositionMask" leftStrut="YES" bottomStrut="YES"/>
+ <rect key="contentRect" x="123" y="844" width="474" height="271"/>
+ <rect key="screenRect" x="0.0" y="0.0" width="1920" height="1178"/>
+ <view key="contentView" id="2">
+ <rect key="frame" x="0.0" y="0.0" width="474" height="271"/>
+ <autoresizingMask key="autoresizingMask"/>
+ <subviews>
+ <textField verticalHuggingPriority="750" id="123">
+ <rect key="frame" x="17" y="20" width="219" height="231"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <textFieldCell key="cell" controlSize="mini" sendsActionOnEndEditing="YES" borderStyle="border" title="Multiline Label" id="124">
+ <font key="font" metaFont="system"/>
+ <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ </textField>
+ <textField verticalHuggingPriority="750" id="125">
+ <rect key="frame" x="238" y="20" width="219" height="32"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <textFieldCell key="cell" controlSize="mini" sendsActionOnEndEditing="YES" borderStyle="border" alignment="right" title="Multiline Label" id="126">
+ <font key="font" metaFont="system"/>
+ <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ </textField>
+ </subviews>
+ </view>
+ </window>
+ </objects>
+</document>
diff --git a/AppKit/GTMUILocalizerAndLayoutTweakerTest4.xib b/AppKit/GTMUILocalizerAndLayoutTweakerTest4.xib
index 1a77faf..e0a69ce 100644
--- a/AppKit/GTMUILocalizerAndLayoutTweakerTest4.xib
+++ b/AppKit/GTMUILocalizerAndLayoutTweakerTest4.xib
@@ -1,2005 +1,261 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
- <data>
- <int key="IBDocument.SystemTarget">1050</int>
- <string key="IBDocument.SystemVersion">10D2063a</string>
- <string key="IBDocument.InterfaceBuilderVersion">762</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.CocoaPlugin</string>
- <string key="NS.object.0">762</string>
- </object>
- <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="180"/>
- </object>
- <object class="NSArray" key="IBDocument.PluginDependencies">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</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="NSCustomObject" id="1001">
- <string key="NSClassName">GTMUILocalizerAndLayoutTweakerTestWindowController</string>
- </object>
- <object class="NSCustomObject" id="1003">
- <string key="NSClassName">FirstResponder</string>
- </object>
- <object class="NSCustomObject" id="1004">
- <string key="NSClassName">NSApplication</string>
- </object>
- <object class="NSWindowTemplate" id="1005">
- <int key="NSWindowStyleMask">15</int>
- <int key="NSWindowBacking">2</int>
- <string key="NSWindowRect">{{71, 158}, {734, 294}}</string>
- <int key="NSWTFlags">536870912</int>
- <string key="NSWindowTitle">Window</string>
- <string key="NSWindowClass">NSWindow</string>
- <nil key="NSViewClass"/>
- <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
- <object class="NSView" key="NSWindowView" id="1006">
- <reference key="NSNextResponder"/>
- <int key="NSvFlags">256</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSCustomView" id="186508408">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">268</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSButton" id="282236995">
- <reference key="NSNextResponder" ref="186508408"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{18, 39}, {96, 18}}</string>
- <reference key="NSSuperview" ref="186508408"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="915137544">
- <int key="NSCellFlags">-2080244224</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">W:4:12</string>
- <object class="NSFont" key="NSSupport" id="396891173">
- <string key="NSName">LucidaGrande</string>
- <double key="NSSize">13</double>
- <int key="NSfFlags">1044</int>
- </object>
- <reference key="NSControlView" ref="282236995"/>
- <int key="NSButtonFlags">1211912703</int>
- <int key="NSButtonFlags2">2</int>
- <object class="NSCustomResource" key="NSNormalImage" id="356175074">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">NSSwitch</string>
- </object>
- <object class="NSButtonImageSource" key="NSAlternateImage" id="644707509">
- <string key="NSImageName">NSSwitch</string>
- </object>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- <object class="NSButton" id="926864482">
- <reference key="NSNextResponder" ref="186508408"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{20, 146}, {96, 19}}</string>
- <reference key="NSSuperview" ref="186508408"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="30129164">
- <int key="NSCellFlags">-2080244224</int>
- <int key="NSCellFlags2">134217728</int>
- <string key="NSContents">W:4:12</string>
- <object class="NSFont" key="NSSupport">
- <string key="NSName">LucidaGrande</string>
- <double key="NSSize">12</double>
- <int key="NSfFlags">16</int>
- </object>
- <reference key="NSControlView" ref="926864482"/>
- <int key="NSButtonFlags">-2038152961</int>
- <int key="NSButtonFlags2">164</int>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">400</int>
- <int key="NSPeriodicInterval">75</int>
- </object>
- </object>
- <object class="NSButton" id="901343433">
- <reference key="NSNextResponder" ref="186508408"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{20, 121}, {96, 19}}</string>
- <reference key="NSSuperview" ref="186508408"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="726270594">
- <int key="NSCellFlags">-2080244224</int>
- <int key="NSCellFlags2">134217728</int>
- <string key="NSContents">W:4:12</string>
- <object class="NSFont" key="NSSupport" id="29">
- <string key="NSName">LucidaGrande-Bold</string>
- <double key="NSSize">12</double>
- <int key="NSfFlags">16</int>
- </object>
- <reference key="NSControlView" ref="901343433"/>
- <int key="NSButtonFlags">-1232846593</int>
- <int key="NSButtonFlags2">173</int>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">400</int>
- <int key="NSPeriodicInterval">75</int>
- </object>
- </object>
- <object class="NSButton" id="718453267">
- <reference key="NSNextResponder" ref="186508408"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{20, 62}, {96, 25}}</string>
- <reference key="NSSuperview" ref="186508408"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="768260201">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">134217728</int>
- <string key="NSContents">W:4:12</string>
- <reference key="NSSupport" ref="396891173"/>
- <reference key="NSControlView" ref="718453267"/>
- <int key="NSButtonFlags">-2038152961</int>
- <int key="NSButtonFlags2">163</int>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">400</int>
- <int key="NSPeriodicInterval">75</int>
- </object>
- </object>
- <object class="NSButton" id="428327311">
- <reference key="NSNextResponder" ref="186508408"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{18, 18}, {96, 18}}</string>
- <reference key="NSSuperview" ref="186508408"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="931469600">
- <int key="NSCellFlags">-2080244224</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">W:4:12</string>
- <reference key="NSSupport" ref="396891173"/>
- <reference key="NSControlView" ref="428327311"/>
- <int key="NSButtonFlags">1211912703</int>
- <int key="NSButtonFlags2">2</int>
- <object class="NSCustomResource" key="NSNormalImage" id="946414658">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">NSRadioButton</string>
- </object>
- <object class="NSButtonImageSource" key="NSAlternateImage" id="520966901">
- <string key="NSImageName">NSRadioButton</string>
- </object>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- <object class="NSButton" id="690891717">
- <reference key="NSNextResponder" ref="186508408"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{19, 89}, {96, 27}}</string>
- <reference key="NSSuperview" ref="186508408"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="370980038">
- <int key="NSCellFlags">-2080244224</int>
- <int key="NSCellFlags2">134217728</int>
- <string key="NSContents">W:4:12</string>
- <reference key="NSSupport" ref="396891173"/>
- <reference key="NSControlView" ref="690891717"/>
- <int key="NSButtonFlags">-2033434369</int>
- <int key="NSButtonFlags2">160</int>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">400</int>
- <int key="NSPeriodicInterval">75</int>
- </object>
- </object>
- <object class="NSButton" id="976354130">
- <reference key="NSNextResponder" ref="186508408"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{20, 172}, {96, 23}}</string>
- <reference key="NSSuperview" ref="186508408"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="122843690">
- <int key="NSCellFlags">-2080244224</int>
- <int key="NSCellFlags2">134217728</int>
- <string key="NSContents">W:4:12</string>
- <reference key="NSSupport" ref="396891173"/>
- <reference key="NSControlView" ref="976354130"/>
- <int key="NSButtonFlags">-2033434369</int>
- <int key="NSButtonFlags2">162</int>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">400</int>
- <int key="NSPeriodicInterval">75</int>
- </object>
- </object>
- <object class="NSButton" id="766045322">
- <reference key="NSNextResponder" ref="186508408"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{14, 196}, {96, 32}}</string>
- <reference key="NSSuperview" ref="186508408"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="937754903">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">134217728</int>
- <string key="NSContents">W:4:12</string>
- <reference key="NSSupport" ref="396891173"/>
- <reference key="NSControlView" ref="766045322"/>
- <int key="NSButtonFlags">-2038284033</int>
- <int key="NSButtonFlags2">129</int>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- </object>
- <string key="NSFrame">{{0, 50}, {136, 244}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <string key="NSClassName">GTMWidthBasedTweaker</string>
- </object>
- <object class="NSCustomView" id="845619860">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">268</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSButton" id="367073018">
- <reference key="NSNextResponder" ref="845619860"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{20, 62}, {96, 25}}</string>
- <reference key="NSSuperview" ref="845619860"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="548617494">
- <int key="NSCellFlags">-2080244224</int>
- <int key="NSCellFlags2">134348800</int>
- <string key="NSContents">W:4:12</string>
- <object class="NSFont" key="NSSupport" id="26">
- <string key="NSName">LucidaGrande</string>
- <double key="NSSize">11</double>
- <int key="NSfFlags">3100</int>
- </object>
- <reference key="NSControlView" ref="367073018"/>
- <int key="NSButtonFlags">-2038152961</int>
- <int key="NSButtonFlags2">163</int>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">400</int>
- <int key="NSPeriodicInterval">75</int>
- </object>
- </object>
- <object class="NSButton" id="878016587">
- <reference key="NSNextResponder" ref="845619860"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{15, 200}, {96, 28}}</string>
- <reference key="NSSuperview" ref="845619860"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="273592344">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">134348800</int>
- <string key="NSContents">W:4:12</string>
- <reference key="NSSupport" ref="26"/>
- <reference key="NSControlView" ref="878016587"/>
- <int key="NSButtonFlags">-2038284033</int>
- <int key="NSButtonFlags2">129</int>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- <object class="NSButton" id="884127310">
- <reference key="NSNextResponder" ref="845619860"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{20, 98}, {96, 18}}</string>
- <reference key="NSSuperview" ref="845619860"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="888888012">
- <int key="NSCellFlags">-2080244224</int>
- <int key="NSCellFlags2">134348800</int>
- <string key="NSContents">W:4:12</string>
- <reference key="NSSupport" ref="26"/>
- <reference key="NSControlView" ref="884127310"/>
- <int key="NSButtonFlags">-2033434369</int>
- <int key="NSButtonFlags2">160</int>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">400</int>
- <int key="NSPeriodicInterval">75</int>
- </object>
- </object>
- <object class="NSButton" id="487675374">
- <reference key="NSNextResponder" ref="845619860"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{20, 123}, {96, 17}}</string>
- <reference key="NSSuperview" ref="845619860"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="320493531">
- <int key="NSCellFlags">-2080244224</int>
- <int key="NSCellFlags2">134348800</int>
- <string key="NSContents">W:4:12</string>
- <reference key="NSSupport" ref="29"/>
- <reference key="NSControlView" ref="487675374"/>
- <int key="NSButtonFlags">-1232846593</int>
- <int key="NSButtonFlags2">173</int>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">400</int>
- <int key="NSPeriodicInterval">75</int>
- </object>
- </object>
- <object class="NSButton" id="406151598">
- <reference key="NSNextResponder" ref="845619860"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{17, 39}, {96, 18}}</string>
- <reference key="NSSuperview" ref="845619860"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="640662364">
- <int key="NSCellFlags">-2080244224</int>
- <int key="NSCellFlags2">131072</int>
- <string key="NSContents">W:4:12</string>
- <reference key="NSSupport" ref="26"/>
- <reference key="NSControlView" ref="406151598"/>
- <int key="NSButtonFlags">1211912703</int>
- <int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="356175074"/>
- <reference key="NSAlternateImage" ref="644707509"/>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- <object class="NSButton" id="522534662">
- <reference key="NSNextResponder" ref="845619860"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{20, 148}, {96, 17}}</string>
- <reference key="NSSuperview" ref="845619860"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="693160776">
- <int key="NSCellFlags">-2080244224</int>
- <int key="NSCellFlags2">134348800</int>
- <string key="NSContents">W:4:12</string>
- <reference key="NSSupport" ref="26"/>
- <reference key="NSControlView" ref="522534662"/>
- <int key="NSButtonFlags">-2038152961</int>
- <int key="NSButtonFlags2">164</int>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">400</int>
- <int key="NSPeriodicInterval">75</int>
- </object>
- </object>
- <object class="NSButton" id="905113063">
- <reference key="NSNextResponder" ref="845619860"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{20, 172}, {96, 23}}</string>
- <reference key="NSSuperview" ref="845619860"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="130877018">
- <int key="NSCellFlags">-2080244224</int>
- <int key="NSCellFlags2">134348800</int>
- <string key="NSContents">W:4:12</string>
- <reference key="NSSupport" ref="26"/>
- <reference key="NSControlView" ref="905113063"/>
- <int key="NSButtonFlags">-2033434369</int>
- <int key="NSButtonFlags2">162</int>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">400</int>
- <int key="NSPeriodicInterval">75</int>
- </object>
- </object>
- <object class="NSButton" id="8663780">
- <reference key="NSNextResponder" ref="845619860"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{18, 18}, {96, 18}}</string>
- <reference key="NSSuperview" ref="845619860"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="54593915">
- <int key="NSCellFlags">-2080244224</int>
- <int key="NSCellFlags2">131072</int>
- <string key="NSContents">W:4:12</string>
- <reference key="NSSupport" ref="26"/>
- <reference key="NSControlView" ref="8663780"/>
- <int key="NSButtonFlags">1211912703</int>
- <int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="946414658"/>
- <reference key="NSAlternateImage" ref="520966901"/>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- </object>
- <string key="NSFrame">{{242, 50}, {137, 244}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <string key="NSClassName">GTMWidthBasedTweaker</string>
- </object>
- <object class="NSCustomView" id="305521052">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">268</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSButton" id="1060251717">
- <reference key="NSNextResponder" ref="305521052"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{20, 170}, {96, 23}}</string>
- <reference key="NSSuperview" ref="305521052"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="25568552">
- <int key="NSCellFlags">-2080244224</int>
- <int key="NSCellFlags2">134479872</int>
- <string key="NSContents">W:4:12</string>
- <object class="NSFont" key="NSSupport" id="22">
- <string key="NSName">LucidaGrande</string>
- <double key="NSSize">9</double>
- <int key="NSfFlags">3614</int>
- </object>
- <reference key="NSControlView" ref="1060251717"/>
- <int key="NSButtonFlags">-2033434369</int>
- <int key="NSButtonFlags2">162</int>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">400</int>
- <int key="NSPeriodicInterval">75</int>
- </object>
- </object>
- <object class="NSButton" id="487957489">
- <reference key="NSNextResponder" ref="305521052"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{20, 121}, {96, 17}}</string>
- <reference key="NSSuperview" ref="305521052"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="487051093">
- <int key="NSCellFlags">-2080244224</int>
- <int key="NSCellFlags2">134479872</int>
- <string key="NSContents">W:4:12</string>
- <reference key="NSSupport" ref="22"/>
- <reference key="NSControlView" ref="487957489"/>
- <int key="NSButtonFlags">-1232846593</int>
- <int key="NSButtonFlags2">173</int>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">400</int>
- <int key="NSPeriodicInterval">75</int>
- </object>
- </object>
- <object class="NSButton" id="440594617">
- <reference key="NSNextResponder" ref="305521052"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{16, 37}, {96, 18}}</string>
- <reference key="NSSuperview" ref="305521052"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="577127578">
- <int key="NSCellFlags">-2080244224</int>
- <int key="NSCellFlags2">262144</int>
- <string key="NSContents">W:4:12</string>
- <reference key="NSSupport" ref="22"/>
- <reference key="NSControlView" ref="440594617"/>
- <int key="NSButtonFlags">1211912703</int>
- <int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="356175074"/>
- <reference key="NSAlternateImage" ref="644707509"/>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- <object class="NSButton" id="969909786">
- <reference key="NSNextResponder" ref="305521052"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{20, 60}, {96, 25}}</string>
- <reference key="NSSuperview" ref="305521052"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="930680615">
- <int key="NSCellFlags">-2080244224</int>
- <int key="NSCellFlags2">134479872</int>
- <string key="NSContents">W:4:12</string>
- <reference key="NSSupport" ref="22"/>
- <reference key="NSControlView" ref="969909786"/>
- <int key="NSButtonFlags">-2038152961</int>
- <int key="NSButtonFlags2">163</int>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">400</int>
- <int key="NSPeriodicInterval">75</int>
- </object>
- </object>
- <object class="NSButton" id="71893445">
- <reference key="NSNextResponder" ref="305521052"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{19, 210}, {96, 16}}</string>
- <reference key="NSSuperview" ref="305521052"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="495713873">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">134479872</int>
- <string key="NSContents">W:4:12</string>
- <reference key="NSSupport" ref="22"/>
- <reference key="NSControlView" ref="71893445"/>
- <int key="NSButtonFlags">-2038284033</int>
- <int key="NSButtonFlags2">129</int>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- <object class="NSButton" id="401241950">
- <reference key="NSNextResponder" ref="305521052"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{20, 146}, {96, 17}}</string>
- <reference key="NSSuperview" ref="305521052"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="449798413">
- <int key="NSCellFlags">-2080244224</int>
- <int key="NSCellFlags2">134479872</int>
- <string key="NSContents">W:4:12</string>
- <reference key="NSSupport" ref="22"/>
- <reference key="NSControlView" ref="401241950"/>
- <int key="NSButtonFlags">-2038152961</int>
- <int key="NSButtonFlags2">164</int>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">400</int>
- <int key="NSPeriodicInterval">75</int>
- </object>
- </object>
- <object class="NSButton" id="159119224">
- <reference key="NSNextResponder" ref="305521052"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{19, 96}, {96, 18}}</string>
- <reference key="NSSuperview" ref="305521052"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="162457844">
- <int key="NSCellFlags">-2080244224</int>
- <int key="NSCellFlags2">134479872</int>
- <string key="NSContents">W:4:12</string>
- <reference key="NSSupport" ref="22"/>
- <reference key="NSControlView" ref="159119224"/>
- <int key="NSButtonFlags">-2033434369</int>
- <int key="NSButtonFlags2">160</int>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">400</int>
- <int key="NSPeriodicInterval">75</int>
- </object>
- </object>
- <object class="NSButton" id="917362581">
- <reference key="NSNextResponder" ref="305521052"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{16, 16}, {96, 18}}</string>
- <reference key="NSSuperview" ref="305521052"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="482221767">
- <int key="NSCellFlags">-2080244224</int>
- <int key="NSCellFlags2">262144</int>
- <string key="NSContents">W:4:12</string>
- <reference key="NSSupport" ref="22"/>
- <reference key="NSControlView" ref="917362581"/>
- <int key="NSButtonFlags">1211912703</int>
- <int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="946414658"/>
- <reference key="NSAlternateImage" ref="520966901"/>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- </object>
- <string key="NSFrame">{{475, 48}, {141, 246}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <string key="NSClassName">GTMWidthBasedTweaker</string>
- </object>
- </object>
- <string key="NSFrameSize">{734, 294}</string>
- <reference key="NSSuperview"/>
- </object>
- <string key="NSScreenRect">{{0, 0}, {1920, 1178}}</string>
- <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
- </object>
- <object class="NSCustomObject" id="431527667">
- <string key="NSClassName">GTMUILocalizerAndLayoutTweaker</string>
- </object>
- <object class="NSCustomObject" id="730292222">
- <string key="NSClassName">GTMUILocalizerAndLayoutTweakerTestLocalizer</string>
- </object>
- <object class="NSButton" id="870318376">
- <nil key="NSNextResponder"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrameSize">{154, 17}</string>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="576384409">
- <int key="NSCellFlags">-2080244224</int>
- <int key="NSCellFlags2">134348800</int>
- <string key="NSContents">Recessed Button</string>
- <reference key="NSSupport" ref="29"/>
- <reference key="NSControlView" ref="870318376"/>
- <int key="NSButtonFlags">-1232846593</int>
- <int key="NSButtonFlags2">173</int>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">400</int>
- <int key="NSPeriodicInterval">75</int>
- </object>
- </object>
- <object class="NSButton" id="587069052">
- <nil key="NSNextResponder"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrameSize">{154, 17}</string>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="246372967">
- <int key="NSCellFlags">-2080244224</int>
- <int key="NSCellFlags2">134348800</int>
- <string key="NSContents">Recessed Button</string>
- <reference key="NSSupport" ref="29"/>
- <reference key="NSControlView" ref="587069052"/>
- <int key="NSButtonFlags">-1232846593</int>
- <int key="NSButtonFlags2">173</int>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">400</int>
- <int key="NSPeriodicInterval">75</int>
- </object>
- </object>
- </object>
- <object class="IBObjectContainer" key="IBDocument.Objects">
- <object class="NSMutableArray" key="connectionRecords">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">localizer_</string>
- <reference key="source" ref="431527667"/>
- <reference key="destination" ref="730292222"/>
- </object>
- <int key="connectionID">118</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">window</string>
- <reference key="source" ref="1001"/>
- <reference key="destination" ref="1005"/>
- </object>
- <int key="connectionID">119</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">uiObject_</string>
- <reference key="source" ref="431527667"/>
- <reference key="destination" ref="1005"/>
- </object>
- <int key="connectionID">193</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="1001"/>
- <reference key="parent" ref="0"/>
- <string key="objectName">File's Owner</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-1</int>
- <reference key="object" ref="1003"/>
- <reference key="parent" ref="0"/>
- <string key="objectName">First Responder</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-3</int>
- <reference key="object" ref="1004"/>
- <reference key="parent" ref="0"/>
- <string key="objectName">Application</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">1</int>
- <reference key="object" ref="1005"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1006"/>
- </object>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">2</int>
- <reference key="object" ref="1006"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="186508408"/>
- <reference ref="845619860"/>
- <reference ref="305521052"/>
- </object>
- <reference key="parent" ref="1005"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">35</int>
- <reference key="object" ref="431527667"/>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">117</int>
- <reference key="object" ref="730292222"/>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">188</int>
- <reference key="object" ref="186508408"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="282236995"/>
- <reference ref="926864482"/>
- <reference ref="901343433"/>
- <reference ref="718453267"/>
- <reference ref="428327311"/>
- <reference ref="690891717"/>
- <reference ref="976354130"/>
- <reference ref="766045322"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">176</int>
- <reference key="object" ref="282236995"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="915137544"/>
- </object>
- <reference key="parent" ref="186508408"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">177</int>
- <reference key="object" ref="915137544"/>
- <reference key="parent" ref="282236995"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">124</int>
- <reference key="object" ref="926864482"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="30129164"/>
- </object>
- <reference key="parent" ref="186508408"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">125</int>
- <reference key="object" ref="30129164"/>
- <reference key="parent" ref="926864482"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">128</int>
- <reference key="object" ref="901343433"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="726270594"/>
- </object>
- <reference key="parent" ref="186508408"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">129</int>
- <reference key="object" ref="726270594"/>
- <reference key="parent" ref="901343433"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">136</int>
- <reference key="object" ref="718453267"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="768260201"/>
- </object>
- <reference key="parent" ref="186508408"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">137</int>
- <reference key="object" ref="768260201"/>
- <reference key="parent" ref="718453267"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">182</int>
- <reference key="object" ref="428327311"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="931469600"/>
- </object>
- <reference key="parent" ref="186508408"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">187</int>
- <reference key="object" ref="931469600"/>
- <reference key="parent" ref="428327311"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">132</int>
- <reference key="object" ref="690891717"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="370980038"/>
- </object>
- <reference key="parent" ref="186508408"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">133</int>
- <reference key="object" ref="370980038"/>
- <reference key="parent" ref="690891717"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">120</int>
- <reference key="object" ref="976354130"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="122843690"/>
- </object>
- <reference key="parent" ref="186508408"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">121</int>
- <reference key="object" ref="122843690"/>
- <reference key="parent" ref="976354130"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">189</int>
- <reference key="object" ref="845619860"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="367073018"/>
- <reference ref="884127310"/>
- <reference ref="487675374"/>
- <reference ref="406151598"/>
- <reference ref="522534662"/>
- <reference ref="905113063"/>
- <reference ref="8663780"/>
- <reference ref="878016587"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">157</int>
- <reference key="object" ref="367073018"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="548617494"/>
- </object>
- <reference key="parent" ref="845619860"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">158</int>
- <reference key="object" ref="548617494"/>
- <reference key="parent" ref="367073018"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">152</int>
- <reference key="object" ref="878016587"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="273592344"/>
- </object>
- <reference key="parent" ref="845619860"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">163</int>
- <reference key="object" ref="273592344"/>
- <reference key="parent" ref="878016587"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">156</int>
- <reference key="object" ref="884127310"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="888888012"/>
- </object>
- <reference key="parent" ref="845619860"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">159</int>
- <reference key="object" ref="888888012"/>
- <reference key="parent" ref="884127310"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">155</int>
- <reference key="object" ref="487675374"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="320493531"/>
- </object>
- <reference key="parent" ref="845619860"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">160</int>
- <reference key="object" ref="320493531"/>
- <reference key="parent" ref="487675374"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">178</int>
- <reference key="object" ref="406151598"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="640662364"/>
- </object>
- <reference key="parent" ref="845619860"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">179</int>
- <reference key="object" ref="640662364"/>
- <reference key="parent" ref="406151598"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">154</int>
- <reference key="object" ref="522534662"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="693160776"/>
- </object>
- <reference key="parent" ref="845619860"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">161</int>
- <reference key="object" ref="693160776"/>
- <reference key="parent" ref="522534662"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">153</int>
- <reference key="object" ref="905113063"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="130877018"/>
- </object>
- <reference key="parent" ref="845619860"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">162</int>
- <reference key="object" ref="130877018"/>
- <reference key="parent" ref="905113063"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">183</int>
- <reference key="object" ref="8663780"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="54593915"/>
- </object>
- <reference key="parent" ref="845619860"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">186</int>
- <reference key="object" ref="54593915"/>
- <reference key="parent" ref="8663780"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">190</int>
- <reference key="object" ref="305521052"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1060251717"/>
- <reference ref="487957489"/>
- <reference ref="440594617"/>
- <reference ref="969909786"/>
- <reference ref="401241950"/>
- <reference ref="159119224"/>
- <reference ref="917362581"/>
- <reference ref="71893445"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">165</int>
- <reference key="object" ref="1060251717"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="25568552"/>
- </object>
- <reference key="parent" ref="305521052"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">174</int>
- <reference key="object" ref="25568552"/>
- <reference key="parent" ref="1060251717"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">167</int>
- <reference key="object" ref="487957489"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="487051093"/>
- </object>
- <reference key="parent" ref="305521052"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">172</int>
- <reference key="object" ref="487051093"/>
- <reference key="parent" ref="487957489"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">180</int>
- <reference key="object" ref="440594617"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="577127578"/>
- </object>
- <reference key="parent" ref="305521052"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">181</int>
- <reference key="object" ref="577127578"/>
- <reference key="parent" ref="440594617"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">169</int>
- <reference key="object" ref="969909786"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="930680615"/>
- </object>
- <reference key="parent" ref="305521052"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">170</int>
- <reference key="object" ref="930680615"/>
- <reference key="parent" ref="969909786"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">164</int>
- <reference key="object" ref="71893445"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="495713873"/>
- </object>
- <reference key="parent" ref="305521052"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">175</int>
- <reference key="object" ref="495713873"/>
- <reference key="parent" ref="71893445"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">166</int>
- <reference key="object" ref="401241950"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="449798413"/>
- </object>
- <reference key="parent" ref="305521052"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">173</int>
- <reference key="object" ref="449798413"/>
- <reference key="parent" ref="401241950"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">168</int>
- <reference key="object" ref="159119224"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="162457844"/>
- </object>
- <reference key="parent" ref="305521052"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">171</int>
- <reference key="object" ref="162457844"/>
- <reference key="parent" ref="159119224"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">184</int>
- <reference key="object" ref="917362581"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="482221767"/>
- </object>
- <reference key="parent" ref="305521052"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">185</int>
- <reference key="object" ref="482221767"/>
- <reference key="parent" ref="917362581"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">191</int>
- <reference key="object" ref="766045322"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="937754903"/>
- </object>
- <reference key="parent" ref="186508408"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">192</int>
- <reference key="object" ref="937754903"/>
- <reference key="parent" ref="766045322"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">210</int>
- <reference key="object" ref="870318376"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="576384409"/>
- </object>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">211</int>
- <reference key="object" ref="576384409"/>
- <reference key="parent" ref="870318376"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">212</int>
- <reference key="object" ref="587069052"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="246372967"/>
- </object>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">213</int>
- <reference key="object" ref="246372967"/>
- <reference key="parent" ref="587069052"/>
- </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>-3.IBPluginDependency</string>
- <string>1.IBEditorWindowLastContentRect</string>
- <string>1.IBPluginDependency</string>
- <string>1.IBViewEditorWindowController.showingBoundsRectangles</string>
- <string>1.IBWindowTemplateEditedContentRect</string>
- <string>1.NSWindowTemplate.visibleAtLaunch</string>
- <string>1.WindowOrigin</string>
- <string>1.editorWindowContentRectSynchronizationRect</string>
- <string>120.IBPluginDependency</string>
- <string>121.IBPluginDependency</string>
- <string>124.IBPluginDependency</string>
- <string>125.IBPluginDependency</string>
- <string>128.IBPluginDependency</string>
- <string>129.IBPluginDependency</string>
- <string>132.IBPluginDependency</string>
- <string>133.IBPluginDependency</string>
- <string>136.IBPluginDependency</string>
- <string>137.IBPluginDependency</string>
- <string>152.IBPluginDependency</string>
- <string>153.IBPluginDependency</string>
- <string>154.IBPluginDependency</string>
- <string>155.IBPluginDependency</string>
- <string>156.IBPluginDependency</string>
- <string>157.IBPluginDependency</string>
- <string>158.IBPluginDependency</string>
- <string>159.IBPluginDependency</string>
- <string>160.IBPluginDependency</string>
- <string>161.IBPluginDependency</string>
- <string>162.IBPluginDependency</string>
- <string>163.IBPluginDependency</string>
- <string>164.IBPluginDependency</string>
- <string>165.IBPluginDependency</string>
- <string>166.IBPluginDependency</string>
- <string>167.IBPluginDependency</string>
- <string>168.IBPluginDependency</string>
- <string>169.IBPluginDependency</string>
- <string>170.IBPluginDependency</string>
- <string>171.IBPluginDependency</string>
- <string>172.IBPluginDependency</string>
- <string>173.IBPluginDependency</string>
- <string>174.IBPluginDependency</string>
- <string>175.IBPluginDependency</string>
- <string>176.IBPluginDependency</string>
- <string>177.IBPluginDependency</string>
- <string>178.IBPluginDependency</string>
- <string>179.IBPluginDependency</string>
- <string>180.IBPluginDependency</string>
- <string>181.IBPluginDependency</string>
- <string>182.IBPluginDependency</string>
- <string>183.IBPluginDependency</string>
- <string>184.IBPluginDependency</string>
- <string>185.IBPluginDependency</string>
- <string>186.IBPluginDependency</string>
- <string>187.IBPluginDependency</string>
- <string>188.IBPluginDependency</string>
- <string>189.IBPluginDependency</string>
- <string>190.IBPluginDependency</string>
- <string>191.IBPluginDependency</string>
- <string>192.IBPluginDependency</string>
- <string>2.IBPluginDependency</string>
- <string>210.IBPluginDependency</string>
- <string>211.IBPluginDependency</string>
- <string>212.IBPluginDependency</string>
- <string>213.IBPluginDependency</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{636, 862}, {734, 294}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <boolean value="NO"/>
- <string>{{636, 862}, {734, 294}}</string>
- <boolean value="NO"/>
- <string>{196, 240}</string>
- <string>{{202, 428}, {480, 270}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</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">213</int>
- </object>
- <object class="IBClassDescriber" key="IBDocument.Classes">
- <object class="NSMutableArray" key="referencedPartialClassDescriptions">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBPartialClassDescription">
- <string key="className">GTMUILocalizer</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>otherObjectToLocalize_</string>
- <string>owner_</string>
- <string>yetAnotherObjectToLocalize_</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>id</string>
- <string>id</string>
- <string>id</string>
- </object>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMUILocalizer.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">GTMUILocalizerAndLayoutTweaker</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>localizerOwner_</string>
- <string>localizer_</string>
- <string>uiObject_</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>id</string>
- <string>GTMUILocalizer</string>
- <string>id</string>
- </object>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="606537230">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMUILocalizerAndLayoutTweaker.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">GTMUILocalizerAndLayoutTweakerTestLocalizer</string>
- <string key="superclassName">GTMUILocalizer</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="969035251">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMUILocalizerAndLayoutTweakerTest.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">GTMUILocalizerAndLayoutTweakerTestWindowController</string>
- <string key="superclassName">NSWindowController</string>
- <object class="NSMutableDictionary" key="outlets">
- <string key="NS.key.0">tabView_</string>
- <string key="NS.object.0">NSTabView</string>
- </object>
- <reference key="sourceIdentifier" ref="969035251"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">GTMWidthBasedTweaker</string>
- <string key="superclassName">NSView</string>
- <object class="NSMutableDictionary" key="outlets">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>viewToResize_</string>
- <string>viewToSlideAndResize_</string>
- <string>viewToSlide_</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>id</string>
- <string>NSView</string>
- <string>NSView</string>
- </object>
- </object>
- <reference key="sourceIdentifier" ref="606537230"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="925048441">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMAppKit+UnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMAppKitUnitTestingUtilities.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSButton</string>
- <reference key="sourceIdentifier" ref="925048441"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSCell</string>
- <reference key="sourceIdentifier" ref="925048441"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSControl</string>
- <reference key="sourceIdentifier" ref="925048441"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSMenu</string>
- <reference key="sourceIdentifier" ref="925048441"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMCarbonEvent.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMDelegatingTableColumn.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Foundation/GTMHTTPServer.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Foundation/GTMNSAppleEventDescriptor+Foundation.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Foundation/GTMNSObject+KeyValueObserving.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMCALayer+UnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMNSObject+BindingUnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMNSObject+UnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSTabView</string>
- <reference key="sourceIdentifier" ref="925048441"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="837971773">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMNSAnimatablePropertyContainer.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <reference key="sourceIdentifier" ref="925048441"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindow</string>
- <reference key="sourceIdentifier" ref="837971773"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindow</string>
- <reference key="sourceIdentifier" ref="925048441"/>
- </object>
- </object>
- <object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBPartialClassDescription">
- <string key="className">NSActionCell</string>
- <string key="superclassName">NSCell</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSActionCell.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <string key="superclassName">NSResponder</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="987675865">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSApplication.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="153145200">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSApplicationScripting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="317885010">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSColorPanel.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSHelpManager.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSPageLayout.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSUserInterfaceItemSearching.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSButton</string>
- <string key="superclassName">NSControl</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSButton.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSButtonCell</string>
- <string key="superclassName">NSActionCell</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSButtonCell.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSCell</string>
- <string key="superclassName">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSCell.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSControl</string>
- <string key="superclassName">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="846811518">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSControl.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSFormatter</string>
- <string key="superclassName">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSFormatter.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSMenu</string>
- <string key="superclassName">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="51859795">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSMenu.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">AddressBook.framework/Headers/ABActions.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">AppKit.framework/Headers/NSAccessibility.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <reference key="sourceIdentifier" ref="987675865"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <reference key="sourceIdentifier" ref="153145200"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <reference key="sourceIdentifier" ref="317885010"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <reference key="sourceIdentifier" ref="846811518"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSDictionaryController.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">AppKit.framework/Headers/NSDragging.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">AppKit.framework/Headers/NSFontManager.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">AppKit.framework/Headers/NSFontPanel.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">AppKit.framework/Headers/NSKeyValueBinding.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <reference key="sourceIdentifier" ref="51859795"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSNibLoading.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">AppKit.framework/Headers/NSOutlineView.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">AppKit.framework/Headers/NSPasteboard.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">AppKit.framework/Headers/NSSavePanel.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">AppKit.framework/Headers/NSTableView.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">AppKit.framework/Headers/NSToolbarItem.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="721142473">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSView.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/NSArchiver.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/NSClassDescription.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/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/NSObjectScripting.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/NSPortCoder.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/NSScriptClassDescription.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/NSScriptKeyValueCoding.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/NSScriptObjectSpecifiers.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/NSScriptWhoseTests.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/NSURLDownload.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">PrintCore.framework/Headers/PDEPluginInterface.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">QuartzCore.framework/Headers/CAAnimation.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">QuartzCore.framework/Headers/CALayer.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">QuartzCore.framework/Headers/CIImageProvider.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSResponder</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSInterfaceStyle.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSResponder</string>
- <string key="superclassName">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSResponder.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSTabView</string>
- <string key="superclassName">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSTabView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSClipView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSMenuItem.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSRulerView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <string key="superclassName">NSResponder</string>
- <reference key="sourceIdentifier" ref="721142473"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindow</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSDrawer.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindow</string>
- <string key="superclassName">NSResponder</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSWindow.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindow</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSWindowScripting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindowController</string>
- <string key="superclassName">NSResponder</string>
- <object class="NSMutableDictionary" key="actions">
- <string key="NS.key.0">showWindow:</string>
- <string key="NS.object.0">id</string>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSWindowController.h</string>
- </object>
- </object>
- </object>
- </object>
- <int key="IBDocument.localizationMode">0</int>
- <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
- <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies">
- <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
- <integer value="1050" key="NS.object.0"/>
- </object>
- <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
- <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
- <integer value="1060" key="NS.object.0"/>
- </object>
- <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
- <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
- <integer value="3000" key="NS.object.0"/>
- </object>
- <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
- <string key="IBDocument.LastKnownRelativeProjectPath">../GTM.xcodeproj</string>
- <int key="IBDocument.defaultPropertyAccessControl">3</int>
- <object class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>NSRadioButton</string>
- <string>NSSwitch</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>{16, 15}</string>
- <string>{15, 15}</string>
- </object>
- </object>
- </data>
-</archive>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="11201" systemVersion="15G31" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
+ <dependencies>
+ <deployment identifier="macosx"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11201"/>
+ </dependencies>
+ <objects>
+ <customObject id="-2" userLabel="File's Owner" customClass="GTMUILocalizerAndLayoutTweakerTestWindowController">
+ <connections>
+ <outlet property="window" destination="1" id="119"/>
+ </connections>
+ </customObject>
+ <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+ <customObject id="-3" userLabel="Application"/>
+ <window title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" oneShot="NO" visibleAtLaunch="NO" animationBehavior="default" id="1">
+ <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
+ <windowPositionMask key="initialPositionMask" leftStrut="YES" bottomStrut="YES"/>
+ <rect key="contentRect" x="71" y="158" width="734" height="294"/>
+ <rect key="screenRect" x="0.0" y="0.0" width="1920" height="1178"/>
+ <view key="contentView" id="2">
+ <rect key="frame" x="0.0" y="0.0" width="734" height="294"/>
+ <autoresizingMask key="autoresizingMask"/>
+ <subviews>
+ <customView id="188" customClass="GTMWidthBasedTweaker">
+ <rect key="frame" x="0.0" y="50" width="136" height="244"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <subviews>
+ <button verticalHuggingPriority="750" id="191">
+ <rect key="frame" x="14" y="196" width="96" height="32"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="push" title="W:4:12" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="192">
+ <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+ <font key="font" metaFont="system"/>
+ </buttonCell>
+ </button>
+ <button verticalHuggingPriority="750" id="120">
+ <rect key="frame" x="20" y="172" width="96" height="23"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="smallSquare" title="W:4:12" bezelStyle="smallSquare" imagePosition="overlaps" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="121">
+ <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+ <font key="font" metaFont="system"/>
+ </buttonCell>
+ </button>
+ <button verticalHuggingPriority="750" id="132">
+ <rect key="frame" x="19" y="89" width="96" height="27"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="squareTextured" title="W:4:12" bezelStyle="texturedSquare" imagePosition="overlaps" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="133">
+ <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+ <font key="font" metaFont="system"/>
+ </buttonCell>
+ </button>
+ <button id="182">
+ <rect key="frame" x="18" y="18" width="96" height="18"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="radio" title="W:4:12" bezelStyle="regularSquare" imagePosition="left" alignment="left" state="on" inset="2" id="187">
+ <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
+ <font key="font" metaFont="system"/>
+ </buttonCell>
+ </button>
+ <button verticalHuggingPriority="750" id="136">
+ <rect key="frame" x="20" y="62" width="96" height="25"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="roundTextured" title="W:4:12" bezelStyle="texturedRounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="137">
+ <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+ <font key="font" metaFont="system"/>
+ </buttonCell>
+ </button>
+ <button verticalHuggingPriority="750" id="128">
+ <rect key="frame" x="20" y="121" width="96" height="19"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="recessed" title="W:4:12" bezelStyle="recessed" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="129">
+ <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
+ <font key="font" metaFont="systemBold" size="12"/>
+ </buttonCell>
+ </button>
+ <button verticalHuggingPriority="750" id="124">
+ <rect key="frame" x="20" y="146" width="96" height="19"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="roundRect" title="W:4:12" bezelStyle="roundedRect" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="125">
+ <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+ <font key="font" metaFont="cellTitle"/>
+ </buttonCell>
+ </button>
+ <button id="176">
+ <rect key="frame" x="18" y="39" width="96" height="18"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="check" title="W:4:12" bezelStyle="regularSquare" imagePosition="left" alignment="left" state="on" inset="2" id="177">
+ <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
+ <font key="font" metaFont="system"/>
+ </buttonCell>
+ </button>
+ </subviews>
+ </customView>
+ <customView id="189" customClass="GTMWidthBasedTweaker">
+ <rect key="frame" x="242" y="50" width="137" height="244"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <subviews>
+ <button id="183">
+ <rect key="frame" x="18" y="18" width="96" height="18"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="radio" title="W:4:12" bezelStyle="regularSquare" imagePosition="left" alignment="left" controlSize="small" state="on" inset="2" id="186">
+ <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
+ <font key="font" metaFont="smallSystem"/>
+ </buttonCell>
+ </button>
+ <button verticalHuggingPriority="750" id="153">
+ <rect key="frame" x="20" y="172" width="96" height="23"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="smallSquare" title="W:4:12" bezelStyle="smallSquare" imagePosition="overlaps" alignment="center" controlSize="small" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="162">
+ <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+ <font key="font" metaFont="smallSystem"/>
+ </buttonCell>
+ </button>
+ <button verticalHuggingPriority="750" id="154">
+ <rect key="frame" x="20" y="148" width="96" height="17"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="roundRect" title="W:4:12" bezelStyle="roundedRect" alignment="center" controlSize="small" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="161">
+ <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+ <font key="font" metaFont="smallSystem"/>
+ </buttonCell>
+ </button>
+ <button id="178">
+ <rect key="frame" x="17" y="39" width="96" height="18"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="check" title="W:4:12" bezelStyle="regularSquare" imagePosition="left" alignment="left" controlSize="small" state="on" inset="2" id="179">
+ <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
+ <font key="font" metaFont="smallSystem"/>
+ </buttonCell>
+ </button>
+ <button verticalHuggingPriority="750" id="155">
+ <rect key="frame" x="20" y="123" width="96" height="17"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="recessed" title="W:4:12" bezelStyle="recessed" alignment="center" controlSize="small" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="160">
+ <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
+ <font key="font" metaFont="systemBold" size="12"/>
+ </buttonCell>
+ </button>
+ <button verticalHuggingPriority="750" id="156">
+ <rect key="frame" x="20" y="98" width="96" height="18"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="squareTextured" title="W:4:12" bezelStyle="texturedSquare" imagePosition="overlaps" alignment="center" controlSize="small" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="159">
+ <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+ <font key="font" metaFont="smallSystem"/>
+ </buttonCell>
+ </button>
+ <button verticalHuggingPriority="750" id="152">
+ <rect key="frame" x="15" y="200" width="96" height="28"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="push" title="W:4:12" bezelStyle="rounded" alignment="center" controlSize="small" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="163">
+ <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+ <font key="font" metaFont="smallSystem"/>
+ </buttonCell>
+ </button>
+ <button verticalHuggingPriority="750" id="157">
+ <rect key="frame" x="20" y="62" width="96" height="25"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="roundTextured" title="W:4:12" bezelStyle="texturedRounded" alignment="center" controlSize="small" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="158">
+ <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+ <font key="font" metaFont="smallSystem"/>
+ </buttonCell>
+ </button>
+ </subviews>
+ </customView>
+ <customView id="190" customClass="GTMWidthBasedTweaker">
+ <rect key="frame" x="475" y="48" width="141" height="246"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <subviews>
+ <button id="184">
+ <rect key="frame" x="16" y="16" width="96" height="18"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="radio" title="W:4:12" bezelStyle="regularSquare" imagePosition="left" alignment="left" controlSize="mini" state="on" inset="2" id="185">
+ <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
+ <font key="font" metaFont="miniSystem"/>
+ </buttonCell>
+ </button>
+ <button verticalHuggingPriority="750" id="168">
+ <rect key="frame" x="19" y="96" width="96" height="18"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="squareTextured" title="W:4:12" bezelStyle="texturedSquare" imagePosition="overlaps" alignment="center" controlSize="mini" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="171">
+ <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+ <font key="font" metaFont="miniSystem"/>
+ </buttonCell>
+ </button>
+ <button verticalHuggingPriority="750" id="166">
+ <rect key="frame" x="20" y="146" width="96" height="17"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="roundRect" title="W:4:12" bezelStyle="roundedRect" alignment="center" controlSize="mini" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="173">
+ <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+ <font key="font" metaFont="miniSystem"/>
+ </buttonCell>
+ </button>
+ <button verticalHuggingPriority="750" id="164">
+ <rect key="frame" x="19" y="210" width="96" height="16"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="push" title="W:4:12" bezelStyle="rounded" alignment="center" controlSize="mini" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="175">
+ <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+ <font key="font" metaFont="miniSystem"/>
+ </buttonCell>
+ </button>
+ <button verticalHuggingPriority="750" id="169">
+ <rect key="frame" x="20" y="60" width="96" height="25"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="roundTextured" title="W:4:12" bezelStyle="texturedRounded" alignment="center" controlSize="mini" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="170">
+ <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+ <font key="font" metaFont="miniSystem"/>
+ </buttonCell>
+ </button>
+ <button id="180">
+ <rect key="frame" x="16" y="37" width="96" height="18"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="check" title="W:4:12" bezelStyle="regularSquare" imagePosition="left" alignment="left" controlSize="mini" state="on" inset="2" id="181">
+ <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
+ <font key="font" metaFont="miniSystem"/>
+ </buttonCell>
+ </button>
+ <button verticalHuggingPriority="750" id="167">
+ <rect key="frame" x="20" y="121" width="96" height="17"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="recessed" title="W:4:12" bezelStyle="recessed" alignment="center" controlSize="mini" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="172">
+ <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
+ <font key="font" metaFont="miniSystem"/>
+ </buttonCell>
+ </button>
+ <button verticalHuggingPriority="750" id="165">
+ <rect key="frame" x="20" y="170" width="96" height="23"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="smallSquare" title="W:4:12" bezelStyle="smallSquare" imagePosition="overlaps" alignment="center" controlSize="mini" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="174">
+ <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+ <font key="font" metaFont="miniSystem"/>
+ </buttonCell>
+ </button>
+ </subviews>
+ </customView>
+ </subviews>
+ </view>
+ </window>
+ <customObject id="35" customClass="GTMUILocalizerAndLayoutTweaker">
+ <connections>
+ <outlet property="localizer_" destination="117" id="118"/>
+ <outlet property="uiObject_" destination="1" id="193"/>
+ </connections>
+ </customObject>
+ <customObject id="117" customClass="GTMUILocalizerAndLayoutTweakerTestLocalizer"/>
+ <button verticalHuggingPriority="750" id="210">
+ <rect key="frame" x="0.0" y="0.0" width="154" height="17"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="recessed" title="Recessed Button" bezelStyle="recessed" alignment="center" controlSize="small" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="211">
+ <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
+ <font key="font" metaFont="systemBold" size="12"/>
+ </buttonCell>
+ </button>
+ <button verticalHuggingPriority="750" id="212">
+ <rect key="frame" x="0.0" y="0.0" width="154" height="17"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="recessed" title="Recessed Button" bezelStyle="recessed" alignment="center" controlSize="small" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="213">
+ <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
+ <font key="font" metaFont="systemBold" size="12"/>
+ </buttonCell>
+ </button>
+ </objects>
+</document>
diff --git a/AppKit/GTMUILocalizerAndLayoutTweakerTest5.xib b/AppKit/GTMUILocalizerAndLayoutTweakerTest5.xib
index 0d6898c..6124ae3 100644
--- a/AppKit/GTMUILocalizerAndLayoutTweakerTest5.xib
+++ b/AppKit/GTMUILocalizerAndLayoutTweakerTest5.xib
@@ -1,1447 +1,106 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
- <data>
- <int key="IBDocument.SystemTarget">1050</int>
- <string key="IBDocument.SystemVersion">10D2063a</string>
- <string key="IBDocument.InterfaceBuilderVersion">762</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.CocoaPlugin</string>
- <string key="NS.object.0">762</string>
- </object>
- <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="139"/>
- </object>
- <object class="NSArray" key="IBDocument.PluginDependencies">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</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="NSCustomObject" id="1001">
- <string key="NSClassName">GTMUILocalizerAndLayoutTweakerTestWindowController</string>
- </object>
- <object class="NSCustomObject" id="1003">
- <string key="NSClassName">FirstResponder</string>
- </object>
- <object class="NSCustomObject" id="1004">
- <string key="NSClassName">NSApplication</string>
- </object>
- <object class="NSWindowTemplate" id="1005">
- <int key="NSWindowStyleMask">3</int>
- <int key="NSWindowBacking">2</int>
- <string key="NSWindowRect">{{123, 572}, {492, 543}}</string>
- <int key="NSWTFlags">536870912</int>
- <string key="NSWindowTitle">Window5</string>
- <string key="NSWindowClass">NSWindow</string>
- <nil key="NSViewClass"/>
- <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
- <object class="NSView" key="NSWindowView" id="1006">
- <reference key="NSNextResponder"/>
- <int key="NSvFlags">256</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSButton" id="213082738">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{18, 404}, {226, 18}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="522207725">
- <int key="NSCellFlags">-2080244224</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">Check</string>
- <object class="NSFont" key="NSSupport" id="22765115">
- <string key="NSName">LucidaGrande</string>
- <double key="NSSize">13</double>
- <int key="NSfFlags">1044</int>
- </object>
- <reference key="NSControlView" ref="213082738"/>
- <int key="NSButtonFlags">1211912703</int>
- <int key="NSButtonFlags2">2</int>
- <object class="NSCustomResource" key="NSNormalImage" id="466370005">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">NSSwitch</string>
- </object>
- <object class="NSButtonImageSource" key="NSAlternateImage" id="582903849">
- <string key="NSImageName">NSSwitch</string>
- </object>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- <object class="NSButton" id="765686094">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{18, 271}, {226, 18}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="671820409">
- <int key="NSCellFlags">-2080244224</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">Radio</string>
- <reference key="NSSupport" ref="22765115"/>
- <reference key="NSControlView" ref="765686094"/>
- <int key="NSButtonFlags">1211912703</int>
- <int key="NSButtonFlags2">2</int>
- <object class="NSCustomResource" key="NSNormalImage" id="121562930">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">NSRadioButton</string>
- </object>
- <object class="NSButtonImageSource" key="NSAlternateImage" id="590728579">
- <string key="NSImageName">NSRadioButton</string>
- </object>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- <object class="NSButton" id="894189626">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{247, 270}, {226, 18}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="998598731">
- <int key="NSCellFlags">-2080244224</int>
- <int key="NSCellFlags2">131072</int>
- <string key="NSContents">Radio</string>
- <object class="NSFont" key="NSSupport" id="26">
- <string key="NSName">LucidaGrande</string>
- <double key="NSSize">11</double>
- <int key="NSfFlags">3100</int>
- </object>
- <reference key="NSControlView" ref="894189626"/>
- <int key="NSButtonFlags">1211912703</int>
- <int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="121562930"/>
- <reference key="NSAlternateImage" ref="590728579"/>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- <object class="NSButton" id="874300306">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{247, 403}, {226, 18}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="91940682">
- <int key="NSCellFlags">-2080244224</int>
- <int key="NSCellFlags2">131072</int>
- <string key="NSContents">Check</string>
- <reference key="NSSupport" ref="26"/>
- <reference key="NSControlView" ref="874300306"/>
- <int key="NSButtonFlags">1211912703</int>
- <int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="466370005"/>
- <reference key="NSAlternateImage" ref="582903849"/>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- <object class="NSMatrix" id="969519835">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{20, 20}, {226, 38}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <bool key="NSEnabled">YES</bool>
- <int key="NSNumRows">2</int>
- <int key="NSNumCols">1</int>
- <object class="NSMutableArray" key="NSCells">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSButtonCell" id="417033088">
- <int key="NSCellFlags">-2080244224</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">Radio</string>
- <reference key="NSSupport" ref="22765115"/>
- <reference key="NSControlView" ref="969519835"/>
- <int key="NSTag">1</int>
- <int key="NSButtonFlags">1211912703</int>
- <int key="NSButtonFlags2">0</int>
- <reference key="NSAlternateImage" ref="590728579"/>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- <object class="NSButtonCell" id="80668055">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">Radio</string>
- <reference key="NSSupport" ref="22765115"/>
- <reference key="NSControlView" ref="969519835"/>
- <int key="NSButtonFlags">1211912703</int>
- <int key="NSButtonFlags2">0</int>
- <object class="NSImage" key="NSNormalImage">
- <int key="NSImageFlags">549453824</int>
- <string key="NSSize">{18, 18}</string>
- <object class="NSMutableArray" key="NSReps">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="0"/>
- <object class="NSBitmapImageRep">
- <object class="NSData" key="NSTIFFRepresentation">
- <bytes key="NS.bytes">TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw
-IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/
-29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5
-dXV198PDw//8/Pz////////////////////////////U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAA
-AAAAAxEREUZqamrmtbW1/+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG
-AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z8/P/9fX1//Ly8v/u7u7/
-0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/
-7e3t/+3t7f/i4uL/zs7O/8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/
-5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMAAAADAAAALrCwsPrW1tb/
-3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAAD
-AAAALp2dnezg4OD/5eXl/+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns
-AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5+fn/9/f3//b29v/x8fH/
-6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4uLpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7/
-/v7+//v7+//19fX/8PDw/8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/
-///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAAAAAAAAAAAwAAABcAAABl
-YmJi3NLS0v3////////////////////////////////V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAA
-AAAAAAAAAAUAAAAfAAAAZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMAAACzAAAAnwAAAHcAAABD
-AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu
-AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgEAAAMAAAABABIAAAEB
-AAMAAAABABIAAAECAAMAAAAEAAAFxgEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES
-AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS
-AAMAAAABAAEAAAFTAAMAAAAEAAAFzodzAAcAAAwYAAAF1gAAAAAACAAIAAgACAABAAEAAQABAAAMGGFw
-cGwCAAAAbW50clJHQiBYWVogB9YABAADABMALAASYWNzcEFQUEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAPbWAAEAAAAA0y1hcHBsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAOclhZWgAAASwAAAAUZ1hZWgAAAUAAAAAUYlhZWgAAAVQAAAAUd3RwdAAAAWgAAAAUY2hhZAAA
-AXwAAAAsclRSQwAAAagAAAAOZ1RSQwAAAbgAAAAOYlRSQwAAAcgAAAAOdmNndAAAAdgAAAMSbmRpbgAA
-BOwAAAY+ZGVzYwAACywAAABkZHNjbQAAC5AAAAAubW1vZAAAC8AAAAAoY3BydAAAC+gAAAAtWFlaIAAA
-AAAAAF1KAAA0kQAACCVYWVogAAAAAAAAdCAAALRgAAAjPVhZWiAAAAAAAAAlbAAAFyoAAKfDWFlaIAAA
-AAAAAPNSAAEAAAABFs9zZjMyAAAAAAABDEIAAAXe///zJgAAB5IAAP2R///7ov///aMAAAPcAADAbGN1
-cnYAAAAAAAAAAQHNAABjdXJ2AAAAAAAAAAEBzQAAY3VydgAAAAAAAAABAc0AAHZjZ3QAAAAAAAAAAAAD
-AQAAAQACBAUGBwkKCw0ODxASExQWFxgaGxweHyAiIyQmJygpKywtLzAxMjM1Njc4OTs8PT5AQUJDREZH
-SElKS0xOT1BRUlNUVVZXWFlaW1xdXl9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gIGCg4SF
-hoeIiYqLjI2Oj5CRkpOUlZaXmJmam5ydnZ6foKGio6SlpqanqKmqq6ytra6vsLGysrO0tba3uLi5uru8
-vL2+v8DBwcLDxMXGxsfIycrKy8zNzs7P0NHS0tPU1dbW19jZ2drb3Nzd3t/g4eLi4+Tl5ufo6enq6+zt
-7u/w8fHy8/T19vf4+fr7/P3+/v8AAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR8gISIjJCUnKCkq
-Ky0uLzAxMzQ1Njc4OTo7PD0/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaWltcXV5fYGFiY2RlZmdo
-aWprbG1ub3BxcnN0dXZ3d3h5ent8fH1+f4CBgoKDhIWGh4iIiYqLjI2Oj5CRkpOUlJWWl5iZmpucnZ2e
-n6ChoqOkpaamp6ipqqusra6vsLCxsrO0tba3uLm5uru8vb6/wMHCw8TFx8jJysvMzc7P0NDR0tPU1dbX
-2Nna29ze3+Dh4uPk5ebn6err7O3u7/Hy8/T19vf5+vv8/f7/AAIDAwQFBgcICQoKCwwNDg8QERITFBUW
-FxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODg5Ojs8PT4+P0BBQkNDREVGR0hJSUpLTE1O
-Tk9QUVJSU1RVVVZXWFhZWltbXF1eXl9gYWFiY2RkZWZnZ2hpaWprbGxtbm5vcHFxcnNzdHV1dnd4eHl6
-ent8fH1+fn+AgYGCg4SEhYaHiImJiouMjY6Oj5CRkpOTlJWWl5iZmZqbnJ2en6ChoqOkpaanqKmqq6yt
-rq+xsrO0tba3uLq7vL2+wMHDxMbHycrMzs/R0tTW19nb3d7g4uTm6Ors7vDy9Pb4+vz+/wAAbmRpbgAA
-AAAAAAY2AACXGgAAVjoAAFPKAACJ3gAAJ8IAABaoAABQDQAAVDkAAiuFAAIZmQABeFEAAwEAAAIAAAAA
-AAEABgANABcAIwAxAEAAUgBlAHsAkwCrAMUA4gD/AR8BPwFhAYUBqgHQAfgCIAJLAncCpQLSAwIDMwNl
-A5gDzgQFBD0EdQSvBOsFKQVnBacF6AYqBm4GtQb8B0UHkgfkCDkIkAjnCT4JmAn0ClAKrQsLC2sLygwq
-DIwM8Q1XDcAOKA6SDv4PbA/bEE0QxBE7EbQSMRKwEzITuRREFNAVYBXxFocXHhfAGGIZBBmsGlQa+RuU
-HC4czh1yHhQeux9jIA0gvCFoIhkizyOJJEEk+SW6JnknOygFKMspkypiKzIsASzXLawuhy9gMD4xGzH8
-MtszvzSgNYY2cjdcOEw5OTorOxs8CD0EPfU+6z/nQOFB2ELUQ9VE00XcRttH5EjxSgBLCUwdTTFOUE9v
-UI9Rt1LdVAVVNlZsV6VY4FohW21ct135X09goGH0Y0tkqGYFZ19oxGova5ptCG54b/BxbnLsdG119Xd/
-eQh6knwqfcV/W4D4gpSEO4Xih4CJKorYjIqOOY/jkZuTWJUOlsyYiZpSnB6d4Z+soX+jWqUvpxOo+6rj
-rMuuwLC4sra0rra0uL+60LzfvwDBHcLdxLXGhchYyi7MCs3lz7rRmtOA1WPXR9kq2xPc/97s4M/iveSn
-5o3obupT7ELuLPAM8fLz0PW396H5f/tZ/T3//wAAAAEAAwALABYAJQA3AE0AZQCBAJ8AwQDlAQsBNQFh
-AZABwQH1AisCZAKfAtwDHANfA6MD6gQ0BH8EzQT1BR0FcAXEBhsGdAbPBy0HXAeMB+4IUgi4CSAJVAmK
-CfYKZArVC0cLgQu8DDIMqw0mDaIOIQ6hDyQPqRAvELgQ/RFDEc8SXRLuE4AUFRSrFUMV3RZ5FxcXthhY
-GPwZoRpIGvEbnBxJHPgdqB5bHw8fxSB9ITch8iKwJDAk8yW3Jn4nRigQKNwpqSp5K0osHCzxLccuoC95
-MFUxMzISMvMz1TS5NaA2hzdxOFw5STo4Oyg8Gj4DPvs/9EDuQepD6ETpRexG8Uf3SP9LFEwhTTBOQE9S
-UGZSklOrVMVV4Vb/WB5ZP1phW4Vcq13SXvthUmJ/Y69k4GYSZ0dofGm0au1tZG6ib+FxInJlc6l073Y2
-d396FXtjfLJ+A39VgKmB/4NWhK+GCYjCiiGLgYzjjkePrJESknuT5Ja8mCuZm5sMnH+d9J9qoOGiWqPV
-pVGmz6eOqE6pzqtRrNSuWq/gsWmy8rR+tgu5Kbq6vE294b93wQ7Cp8RBxd3He8kZyrrLisxbzf/Po9FK
-0vHUm9ZF1/HZn9tO3Cbc/96x4GTiGePQ5YjnQegf6Pzquex27jbv9/G583z0X/VC9wj40Pqa/GX+Mf//
-AAAAAQADAAsAJQA3AE0AZQCBAJ8AwQELATUBYQGQAcEB9QIrAmQCnwLcAxwDXwOjA+oENAR/BM0FHQVw
-BcQGGwZ0Bs8HLQeMB+4IUgi4CSAJign2CmQK1QtHC7wMMgyrDSYNog4hDqEPJA+pEC8QuBFDEl0S7hOA
-FBUUqxVDFnkXFxe2GFgY/BpIGvEbnBxJHPgdqB8PH8UgfSE3IfIjbyQwJPMltydGKBAo3Cp5K0osHC3H
-LqAveTEzMhIy8zS5NaA2hzhcOUk6ODwaPQ4+Az/0QO5C6EPoROlG8Uf3SglLFEwhTkBPUlF7UpJUxVXh
-Vv9ZP1phXKtd0mAlYVJjr2TgZhJofGm0au1tZG6ib+FxInJldO92Nnd/eMl6FXyyfgN/VYCpgf+Er4YJ
-h2WIwoohi4GOR4+skRKSe5PklVCWvJgrmZubDJx/nfSfaqDholqj1aVRps+oTqnOq1Gs1K2Xrlqv4LFp
-svK0frYLt5m5Kbnxurq8Tb3hv3fBDsHawqfEQcUPxd3He8hKyRnKusuKzFvN/87Rz6PQdtFK0vHTxtSb
-1kXXG9fx2MjZn9tO3Cbc/93Y3rHfiuBk4hni9ePQ5KzliOZk50HoH+j86drqueuX7HbtVu427xbv9/DX
-8bnymvN89F/1QvYl9wj37PjQ+bX6mvt//GX9S/4x//8AAGRlc2MAAAAAAAAACkNvbG9yIExDRAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAABtbHVjAAAAAAAAAAEAAAAMZW5VUwAAABIAAAAcAEMAbwBsAG8AcgAgAEwAQwBE
-AABtbW9kAAAAAAAABhAAAJxOAAAAAL5zkQAAAAAAAAAAAAAAAAAAAAAAdGV4dAAAAABDb3B5cmlnaHQg
-QXBwbGUgQ29tcHV0ZXIsIEluYy4sIDIwMDUAAAAAA</bytes>
- </object>
- </object>
- </object>
- </object>
- <object class="NSColor" key="NSColor" id="461928263">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MCAwAA</bytes>
- </object>
- </object>
- <reference key="NSAlternateImage" ref="590728579"/>
- <int key="NSPeriodicDelay">400</int>
- <int key="NSPeriodicInterval">75</int>
- </object>
- </object>
- <string key="NSCellSize">{226, 18}</string>
- <string key="NSIntercellSpacing">{4, 2}</string>
- <int key="NSMatrixFlags">1151868928</int>
- <string key="NSCellClass">NSActionCell</string>
- <object class="NSButtonCell" key="NSProtoCell" id="959380452">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">Radio</string>
- <reference key="NSSupport" ref="22765115"/>
- <int key="NSButtonFlags">1211912703</int>
- <int key="NSButtonFlags2">0</int>
- <object class="NSImage" key="NSNormalImage">
- <int key="NSImageFlags">549453824</int>
- <string key="NSSize">{18, 18}</string>
- <object class="NSMutableArray" key="NSReps">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="0"/>
- <object class="NSBitmapImageRep">
- <object class="NSData" key="NSTIFFRepresentation">
- <bytes key="NS.bytes">TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw
-IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/
-29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5
-dXV198PDw//8/Pz////////////////////////////U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAA
-AAAAAxEREUZqamrmtbW1/+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG
-AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z8/P/9fX1//Ly8v/u7u7/
-0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/
-7e3t/+3t7f/i4uL/zs7O/8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/
-5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMAAAADAAAALrCwsPrW1tb/
-3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAAD
-AAAALp2dnezg4OD/5eXl/+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns
-AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5+fn/9/f3//b29v/x8fH/
-6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4uLpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7/
-/v7+//v7+//19fX/8PDw/8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/
-///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAAAAAAAAAAAwAAABcAAABl
-YmJi3NLS0v3////////////////////////////////V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAA
-AAAAAAAAAAUAAAAfAAAAZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMAAACzAAAAnwAAAHcAAABD
-AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu
-AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQEAAAMAAAABABIAAAEB
-AAMAAAABABIAAAECAAMAAAAEAAAFugEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES
-AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS
-AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
- </object>
- </object>
- </object>
- </object>
- <reference key="NSColor" ref="461928263"/>
- </object>
- <reference key="NSAlternateImage" ref="590728579"/>
- <int key="NSPeriodicDelay">400</int>
- <int key="NSPeriodicInterval">75</int>
- </object>
- <reference key="NSSelectedCell" ref="417033088"/>
- <object class="NSColor" key="NSBackgroundColor" id="584893825">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">controlColor</string>
- <object class="NSColor" key="NSColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
- </object>
- </object>
- <object class="NSColor" key="NSCellBackgroundColor" id="430389592">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MQA</bytes>
- </object>
- <reference key="NSFont" ref="22765115"/>
- </object>
- <object class="NSMatrix" id="434472828">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{245, 19}, {226, 38}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <bool key="NSEnabled">YES</bool>
- <int key="NSNumRows">2</int>
- <int key="NSNumCols">1</int>
- <object class="NSMutableArray" key="NSCells">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSButtonCell" id="1054045097">
- <int key="NSCellFlags">-2080244224</int>
- <int key="NSCellFlags2">131072</int>
- <string key="NSContents">Radio</string>
- <reference key="NSSupport" ref="26"/>
- <reference key="NSControlView" ref="434472828"/>
- <int key="NSTag">1</int>
- <int key="NSButtonFlags">1211912703</int>
- <int key="NSButtonFlags2">0</int>
- <reference key="NSAlternateImage" ref="590728579"/>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- <object class="NSButtonCell" id="111521346">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">131072</int>
- <string key="NSContents">Radio</string>
- <reference key="NSSupport" ref="26"/>
- <reference key="NSControlView" ref="434472828"/>
- <int key="NSButtonFlags">1211912703</int>
- <int key="NSButtonFlags2">0</int>
- <object class="NSImage" key="NSNormalImage">
- <int key="NSImageFlags">549453824</int>
- <string key="NSSize">{18, 18}</string>
- <object class="NSMutableArray" key="NSReps">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="0"/>
- <object class="NSBitmapImageRep">
- <object class="NSData" key="NSTIFFRepresentation">
- <bytes key="NS.bytes">TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw
-IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/
-29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5
-dXV198PDw//8/Pz////////////////////////////U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAA
-AAAAAxEREUZqamrmtbW1/+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG
-AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z8/P/9fX1//Ly8v/u7u7/
-0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/
-7e3t/+3t7f/i4uL/zs7O/8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/
-5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMAAAADAAAALrCwsPrW1tb/
-3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAAD
-AAAALp2dnezg4OD/5eXl/+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns
-AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5+fn/9/f3//b29v/x8fH/
-6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4uLpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7/
-/v7+//v7+//19fX/8PDw/8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/
-///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAAAAAAAAAAAwAAABcAAABl
-YmJi3NLS0v3////////////////////////////////V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAA
-AAAAAAAAAAUAAAAfAAAAZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMAAACzAAAAnwAAAHcAAABD
-AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu
-AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgEAAAMAAAABABIAAAEB
-AAMAAAABABIAAAECAAMAAAAEAAAFxgEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES
-AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS
-AAMAAAABAAEAAAFTAAMAAAAEAAAFzodzAAcAAAwYAAAF1gAAAAAACAAIAAgACAABAAEAAQABAAAMGGFw
-cGwCAAAAbW50clJHQiBYWVogB9YABAADABMALAASYWNzcEFQUEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAPbWAAEAAAAA0y1hcHBsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAOclhZWgAAASwAAAAUZ1hZWgAAAUAAAAAUYlhZWgAAAVQAAAAUd3RwdAAAAWgAAAAUY2hhZAAA
-AXwAAAAsclRSQwAAAagAAAAOZ1RSQwAAAbgAAAAOYlRSQwAAAcgAAAAOdmNndAAAAdgAAAMSbmRpbgAA
-BOwAAAY+ZGVzYwAACywAAABkZHNjbQAAC5AAAAAubW1vZAAAC8AAAAAoY3BydAAAC+gAAAAtWFlaIAAA
-AAAAAF1KAAA0kQAACCVYWVogAAAAAAAAdCAAALRgAAAjPVhZWiAAAAAAAAAlbAAAFyoAAKfDWFlaIAAA
-AAAAAPNSAAEAAAABFs9zZjMyAAAAAAABDEIAAAXe///zJgAAB5IAAP2R///7ov///aMAAAPcAADAbGN1
-cnYAAAAAAAAAAQHNAABjdXJ2AAAAAAAAAAEBzQAAY3VydgAAAAAAAAABAc0AAHZjZ3QAAAAAAAAAAAAD
-AQAAAQACBAUGBwkKCw0ODxASExQWFxgaGxweHyAiIyQmJygpKywtLzAxMjM1Njc4OTs8PT5AQUJDREZH
-SElKS0xOT1BRUlNUVVZXWFlaW1xdXl9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gIGCg4SF
-hoeIiYqLjI2Oj5CRkpOUlZaXmJmam5ydnZ6foKGio6SlpqanqKmqq6ytra6vsLGysrO0tba3uLi5uru8
-vL2+v8DBwcLDxMXGxsfIycrKy8zNzs7P0NHS0tPU1dbW19jZ2drb3Nzd3t/g4eLi4+Tl5ufo6enq6+zt
-7u/w8fHy8/T19vf4+fr7/P3+/v8AAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR8gISIjJCUnKCkq
-Ky0uLzAxMzQ1Njc4OTo7PD0/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaWltcXV5fYGFiY2RlZmdo
-aWprbG1ub3BxcnN0dXZ3d3h5ent8fH1+f4CBgoKDhIWGh4iIiYqLjI2Oj5CRkpOUlJWWl5iZmpucnZ2e
-n6ChoqOkpaamp6ipqqusra6vsLCxsrO0tba3uLm5uru8vb6/wMHCw8TFx8jJysvMzc7P0NDR0tPU1dbX
-2Nna29ze3+Dh4uPk5ebn6err7O3u7/Hy8/T19vf5+vv8/f7/AAIDAwQFBgcICQoKCwwNDg8QERITFBUW
-FxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODg5Ojs8PT4+P0BBQkNDREVGR0hJSUpLTE1O
-Tk9QUVJSU1RVVVZXWFhZWltbXF1eXl9gYWFiY2RkZWZnZ2hpaWprbGxtbm5vcHFxcnNzdHV1dnd4eHl6
-ent8fH1+fn+AgYGCg4SEhYaHiImJiouMjY6Oj5CRkpOTlJWWl5iZmZqbnJ2en6ChoqOkpaanqKmqq6yt
-rq+xsrO0tba3uLq7vL2+wMHDxMbHycrMzs/R0tTW19nb3d7g4uTm6Ors7vDy9Pb4+vz+/wAAbmRpbgAA
-AAAAAAY2AACXGgAAVjoAAFPKAACJ3gAAJ8IAABaoAABQDQAAVDkAAiuFAAIZmQABeFEAAwEAAAIAAAAA
-AAEABgANABcAIwAxAEAAUgBlAHsAkwCrAMUA4gD/AR8BPwFhAYUBqgHQAfgCIAJLAncCpQLSAwIDMwNl
-A5gDzgQFBD0EdQSvBOsFKQVnBacF6AYqBm4GtQb8B0UHkgfkCDkIkAjnCT4JmAn0ClAKrQsLC2sLygwq
-DIwM8Q1XDcAOKA6SDv4PbA/bEE0QxBE7EbQSMRKwEzITuRREFNAVYBXxFocXHhfAGGIZBBmsGlQa+RuU
-HC4czh1yHhQeux9jIA0gvCFoIhkizyOJJEEk+SW6JnknOygFKMspkypiKzIsASzXLawuhy9gMD4xGzH8
-MtszvzSgNYY2cjdcOEw5OTorOxs8CD0EPfU+6z/nQOFB2ELUQ9VE00XcRttH5EjxSgBLCUwdTTFOUE9v
-UI9Rt1LdVAVVNlZsV6VY4FohW21ct135X09goGH0Y0tkqGYFZ19oxGova5ptCG54b/BxbnLsdG119Xd/
-eQh6knwqfcV/W4D4gpSEO4Xih4CJKorYjIqOOY/jkZuTWJUOlsyYiZpSnB6d4Z+soX+jWqUvpxOo+6rj
-rMuuwLC4sra0rra0uL+60LzfvwDBHcLdxLXGhchYyi7MCs3lz7rRmtOA1WPXR9kq2xPc/97s4M/iveSn
-5o3obupT7ELuLPAM8fLz0PW396H5f/tZ/T3//wAAAAEAAwALABYAJQA3AE0AZQCBAJ8AwQDlAQsBNQFh
-AZABwQH1AisCZAKfAtwDHANfA6MD6gQ0BH8EzQT1BR0FcAXEBhsGdAbPBy0HXAeMB+4IUgi4CSAJVAmK
-CfYKZArVC0cLgQu8DDIMqw0mDaIOIQ6hDyQPqRAvELgQ/RFDEc8SXRLuE4AUFRSrFUMV3RZ5FxcXthhY
-GPwZoRpIGvEbnBxJHPgdqB5bHw8fxSB9ITch8iKwJDAk8yW3Jn4nRigQKNwpqSp5K0osHCzxLccuoC95
-MFUxMzISMvMz1TS5NaA2hzdxOFw5STo4Oyg8Gj4DPvs/9EDuQepD6ETpRexG8Uf3SP9LFEwhTTBOQE9S
-UGZSklOrVMVV4Vb/WB5ZP1phW4Vcq13SXvthUmJ/Y69k4GYSZ0dofGm0au1tZG6ib+FxInJlc6l073Y2
-d396FXtjfLJ+A39VgKmB/4NWhK+GCYjCiiGLgYzjjkePrJESknuT5Ja8mCuZm5sMnH+d9J9qoOGiWqPV
-pVGmz6eOqE6pzqtRrNSuWq/gsWmy8rR+tgu5Kbq6vE294b93wQ7Cp8RBxd3He8kZyrrLisxbzf/Po9FK
-0vHUm9ZF1/HZn9tO3Cbc/96x4GTiGePQ5YjnQegf6Pzquex27jbv9/G583z0X/VC9wj40Pqa/GX+Mf//
-AAAAAQADAAsAJQA3AE0AZQCBAJ8AwQELATUBYQGQAcEB9QIrAmQCnwLcAxwDXwOjA+oENAR/BM0FHQVw
-BcQGGwZ0Bs8HLQeMB+4IUgi4CSAJign2CmQK1QtHC7wMMgyrDSYNog4hDqEPJA+pEC8QuBFDEl0S7hOA
-FBUUqxVDFnkXFxe2GFgY/BpIGvEbnBxJHPgdqB8PH8UgfSE3IfIjbyQwJPMltydGKBAo3Cp5K0osHC3H
-LqAveTEzMhIy8zS5NaA2hzhcOUk6ODwaPQ4+Az/0QO5C6EPoROlG8Uf3SglLFEwhTkBPUlF7UpJUxVXh
-Vv9ZP1phXKtd0mAlYVJjr2TgZhJofGm0au1tZG6ib+FxInJldO92Nnd/eMl6FXyyfgN/VYCpgf+Er4YJ
-h2WIwoohi4GOR4+skRKSe5PklVCWvJgrmZubDJx/nfSfaqDholqj1aVRps+oTqnOq1Gs1K2Xrlqv4LFp
-svK0frYLt5m5Kbnxurq8Tb3hv3fBDsHawqfEQcUPxd3He8hKyRnKusuKzFvN/87Rz6PQdtFK0vHTxtSb
-1kXXG9fx2MjZn9tO3Cbc/93Y3rHfiuBk4hni9ePQ5KzliOZk50HoH+j86drqueuX7HbtVu427xbv9/DX
-8bnymvN89F/1QvYl9wj37PjQ+bX6mvt//GX9S/4x//8AAGRlc2MAAAAAAAAACkNvbG9yIExDRAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAABtbHVjAAAAAAAAAAEAAAAMZW5VUwAAABIAAAAcAEMAbwBsAG8AcgAgAEwAQwBE
-AABtbW9kAAAAAAAABhAAAJxOAAAAAL5zkQAAAAAAAAAAAAAAAAAAAAAAdGV4dAAAAABDb3B5cmlnaHQg
-QXBwbGUgQ29tcHV0ZXIsIEluYy4sIDIwMDUAAAAAA</bytes>
- </object>
- </object>
- </object>
- </object>
- <reference key="NSColor" ref="461928263"/>
- </object>
- <reference key="NSAlternateImage" ref="590728579"/>
- <int key="NSPeriodicDelay">400</int>
- <int key="NSPeriodicInterval">75</int>
- </object>
- </object>
- <string key="NSCellSize">{226, 18}</string>
- <string key="NSIntercellSpacing">{4, 2}</string>
- <int key="NSMatrixFlags">1151868928</int>
- <string key="NSCellClass">NSActionCell</string>
- <object class="NSButtonCell" key="NSProtoCell" id="195914158">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">131072</int>
- <string key="NSContents">Radio</string>
- <reference key="NSSupport" ref="26"/>
- <int key="NSButtonFlags">1211912703</int>
- <int key="NSButtonFlags2">0</int>
- <object class="NSImage" key="NSNormalImage">
- <int key="NSImageFlags">549453824</int>
- <string key="NSSize">{18, 18}</string>
- <object class="NSMutableArray" key="NSReps">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="0"/>
- <object class="NSBitmapImageRep">
- <object class="NSData" key="NSTIFFRepresentation">
- <bytes key="NS.bytes">TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw
-IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/
-29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5
-dXV198PDw//8/Pz////////////////////////////U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAA
-AAAAAxEREUZqamrmtbW1/+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG
-AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z8/P/9fX1//Ly8v/u7u7/
-0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/
-7e3t/+3t7f/i4uL/zs7O/8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/
-5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMAAAADAAAALrCwsPrW1tb/
-3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAAD
-AAAALp2dnezg4OD/5eXl/+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns
-AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5+fn/9/f3//b29v/x8fH/
-6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4uLpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7/
-/v7+//v7+//19fX/8PDw/8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/
-///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAAAAAAAAAAAwAAABcAAABl
-YmJi3NLS0v3////////////////////////////////V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAA
-AAAAAAAAAAUAAAAfAAAAZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMAAACzAAAAnwAAAHcAAABD
-AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu
-AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQEAAAMAAAABABIAAAEB
-AAMAAAABABIAAAECAAMAAAAEAAAFugEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES
-AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS
-AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
- </object>
- </object>
- </object>
- </object>
- <reference key="NSColor" ref="461928263"/>
- </object>
- <reference key="NSAlternateImage" ref="590728579"/>
- <int key="NSPeriodicDelay">400</int>
- <int key="NSPeriodicInterval">75</int>
- </object>
- <reference key="NSSelectedCell" ref="1054045097"/>
- <reference key="NSBackgroundColor" ref="584893825"/>
- <reference key="NSCellBackgroundColor" ref="430389592"/>
- <reference key="NSFont" ref="22765115"/>
- </object>
- </object>
- <string key="NSFrameSize">{492, 543}</string>
- <reference key="NSSuperview"/>
- </object>
- <string key="NSScreenRect">{{0, 0}, {1920, 1178}}</string>
- <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
- </object>
- </object>
- <object class="IBObjectContainer" key="IBDocument.Objects">
- <object class="NSMutableArray" key="connectionRecords">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">window</string>
- <reference key="source" ref="1001"/>
- <reference key="destination" ref="1005"/>
- </object>
- <int key="connectionID">122</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="1001"/>
- <reference key="parent" ref="0"/>
- <string key="objectName">File's Owner</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-1</int>
- <reference key="object" ref="1003"/>
- <reference key="parent" ref="0"/>
- <string key="objectName">First Responder</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-3</int>
- <reference key="object" ref="1004"/>
- <reference key="parent" ref="0"/>
- <string key="objectName">Application</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">1</int>
- <reference key="object" ref="1005"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1006"/>
- </object>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">2</int>
- <reference key="object" ref="1006"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="765686094"/>
- <reference ref="969519835"/>
- <reference ref="894189626"/>
- <reference ref="434472828"/>
- <reference ref="213082738"/>
- <reference ref="874300306"/>
- </object>
- <reference key="parent" ref="1005"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">129</int>
- <reference key="object" ref="213082738"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="522207725"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">130</int>
- <reference key="object" ref="522207725"/>
- <reference key="parent" ref="213082738"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">133</int>
- <reference key="object" ref="894189626"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="998598731"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">134</int>
- <reference key="object" ref="998598731"/>
- <reference key="parent" ref="894189626"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">135</int>
- <reference key="object" ref="765686094"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="671820409"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">136</int>
- <reference key="object" ref="671820409"/>
- <reference key="parent" ref="765686094"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">137</int>
- <reference key="object" ref="874300306"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="91940682"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">138</int>
- <reference key="object" ref="91940682"/>
- <reference key="parent" ref="874300306"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">139</int>
- <reference key="object" ref="969519835"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="417033088"/>
- <reference ref="80668055"/>
- <reference ref="959380452"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">140</int>
- <reference key="object" ref="417033088"/>
- <reference key="parent" ref="969519835"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">141</int>
- <reference key="object" ref="80668055"/>
- <reference key="parent" ref="969519835"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">142</int>
- <reference key="object" ref="959380452"/>
- <reference key="parent" ref="969519835"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">144</int>
- <reference key="object" ref="434472828"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="195914158"/>
- <reference ref="111521346"/>
- <reference ref="1054045097"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">145</int>
- <reference key="object" ref="195914158"/>
- <reference key="parent" ref="434472828"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">146</int>
- <reference key="object" ref="111521346"/>
- <reference key="parent" ref="434472828"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">147</int>
- <reference key="object" ref="1054045097"/>
- <reference key="parent" ref="434472828"/>
- </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>-3.IBPluginDependency</string>
- <string>1.IBEditorWindowLastContentRect</string>
- <string>1.IBPluginDependency</string>
- <string>1.IBWindowTemplateEditedContentRect</string>
- <string>1.NSWindowTemplate.visibleAtLaunch</string>
- <string>1.WindowOrigin</string>
- <string>1.editorWindowContentRectSynchronizationRect</string>
- <string>129.IBPluginDependency</string>
- <string>130.IBPluginDependency</string>
- <string>133.IBPluginDependency</string>
- <string>134.IBPluginDependency</string>
- <string>135.IBPluginDependency</string>
- <string>136.IBPluginDependency</string>
- <string>137.IBPluginDependency</string>
- <string>138.IBPluginDependency</string>
- <string>139.IBPluginDependency</string>
- <string>140.IBPluginDependency</string>
- <string>141.IBPluginDependency</string>
- <string>142.IBPluginDependency</string>
- <string>144.IBPluginDependency</string>
- <string>145.IBPluginDependency</string>
- <string>146.IBPluginDependency</string>
- <string>147.IBPluginDependency</string>
- <string>2.IBPluginDependency</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{632, 585}, {492, 543}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{632, 585}, {492, 543}}</string>
- <boolean value="NO"/>
- <string>{196, 240}</string>
- <string>{{202, 428}, {480, 270}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</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">147</int>
- </object>
- <object class="IBClassDescriber" key="IBDocument.Classes">
- <object class="NSMutableArray" key="referencedPartialClassDescriptions">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBPartialClassDescription">
- <string key="className">GTMUILocalizerAndLayoutTweakerTestWindowController</string>
- <string key="superclassName">NSWindowController</string>
- <object class="NSMutableDictionary" key="outlets">
- <string key="NS.key.0">tabView_</string>
- <string key="NS.object.0">NSTabView</string>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMUILocalizerAndLayoutTweakerTest.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="450080117">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMAppKit+UnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMAppKitUnitTestingUtilities.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSButton</string>
- <reference key="sourceIdentifier" ref="450080117"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSCell</string>
- <reference key="sourceIdentifier" ref="450080117"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSControl</string>
- <reference key="sourceIdentifier" ref="450080117"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSMatrix</string>
- <reference key="sourceIdentifier" ref="450080117"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSMenu</string>
- <reference key="sourceIdentifier" ref="450080117"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMCarbonEvent.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMDelegatingTableColumn.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Foundation/GTMHTTPServer.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Foundation/GTMNSAppleEventDescriptor+Foundation.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Foundation/GTMNSObject+KeyValueObserving.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMCALayer+UnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMNSObject+BindingUnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMNSObject+UnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSTabView</string>
- <reference key="sourceIdentifier" ref="450080117"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="164091427">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMNSAnimatablePropertyContainer.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <reference key="sourceIdentifier" ref="450080117"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindow</string>
- <reference key="sourceIdentifier" ref="164091427"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindow</string>
- <reference key="sourceIdentifier" ref="450080117"/>
- </object>
- </object>
- <object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBPartialClassDescription">
- <string key="className">NSActionCell</string>
- <string key="superclassName">NSCell</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSActionCell.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <string key="superclassName">NSResponder</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="490700006">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSApplication.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="356999403">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSApplicationScripting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="317235627">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSColorPanel.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSHelpManager.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSPageLayout.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSUserInterfaceItemSearching.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSButton</string>
- <string key="superclassName">NSControl</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSButton.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSButtonCell</string>
- <string key="superclassName">NSActionCell</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSButtonCell.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSCell</string>
- <string key="superclassName">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSCell.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSControl</string>
- <string key="superclassName">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="808582018">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSControl.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSFormatter</string>
- <string key="superclassName">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSFormatter.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSMatrix</string>
- <string key="superclassName">NSControl</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSMatrix.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSMenu</string>
- <string key="superclassName">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="130067098">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSMenu.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">AddressBook.framework/Headers/ABActions.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">AppKit.framework/Headers/NSAccessibility.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <reference key="sourceIdentifier" ref="490700006"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <reference key="sourceIdentifier" ref="356999403"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <reference key="sourceIdentifier" ref="317235627"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <reference key="sourceIdentifier" ref="808582018"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSDictionaryController.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">AppKit.framework/Headers/NSDragging.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">AppKit.framework/Headers/NSFontManager.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">AppKit.framework/Headers/NSFontPanel.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">AppKit.framework/Headers/NSKeyValueBinding.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <reference key="sourceIdentifier" ref="130067098"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSNibLoading.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">AppKit.framework/Headers/NSOutlineView.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">AppKit.framework/Headers/NSPasteboard.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">AppKit.framework/Headers/NSSavePanel.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">AppKit.framework/Headers/NSTableView.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">AppKit.framework/Headers/NSToolbarItem.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="369094422">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSView.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/NSArchiver.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/NSClassDescription.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/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/NSObjectScripting.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/NSPortCoder.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/NSScriptClassDescription.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/NSScriptKeyValueCoding.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/NSScriptObjectSpecifiers.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/NSScriptWhoseTests.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/NSURLDownload.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">PrintCore.framework/Headers/PDEPluginInterface.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">QuartzCore.framework/Headers/CAAnimation.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">QuartzCore.framework/Headers/CALayer.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">QuartzCore.framework/Headers/CIImageProvider.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSResponder</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSInterfaceStyle.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSResponder</string>
- <string key="superclassName">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSResponder.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSTabView</string>
- <string key="superclassName">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSTabView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSClipView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSMenuItem.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSRulerView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <string key="superclassName">NSResponder</string>
- <reference key="sourceIdentifier" ref="369094422"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindow</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSDrawer.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindow</string>
- <string key="superclassName">NSResponder</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSWindow.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindow</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSWindowScripting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindowController</string>
- <string key="superclassName">NSResponder</string>
- <object class="NSMutableDictionary" key="actions">
- <string key="NS.key.0">showWindow:</string>
- <string key="NS.object.0">id</string>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSWindowController.h</string>
- </object>
- </object>
- </object>
- </object>
- <int key="IBDocument.localizationMode">0</int>
- <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
- <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies">
- <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
- <integer value="1050" key="NS.object.0"/>
- </object>
- <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
- <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
- <integer value="1060" key="NS.object.0"/>
- </object>
- <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
- <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
- <integer value="3000" key="NS.object.0"/>
- </object>
- <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
- <string key="IBDocument.LastKnownRelativeProjectPath">../GTM.xcodeproj</string>
- <int key="IBDocument.defaultPropertyAccessControl">3</int>
- <object class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>NSRadioButton</string>
- <string>NSSwitch</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>{16, 15}</string>
- <string>{15, 15}</string>
- </object>
- </object>
- </data>
-</archive>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="11201" systemVersion="15G1004" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
+ <dependencies>
+ <deployment identifier="macosx"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11201"/>
+ </dependencies>
+ <objects>
+ <customObject id="-2" userLabel="File's Owner" customClass="GTMUILocalizerAndLayoutTweakerTestWindowController">
+ <connections>
+ <outlet property="window" destination="1" id="122"/>
+ </connections>
+ </customObject>
+ <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+ <customObject id="-3" userLabel="Application" customClass="NSObject"/>
+ <window title="Window5" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" oneShot="NO" visibleAtLaunch="NO" animationBehavior="default" id="1">
+ <windowStyleMask key="styleMask" titled="YES" closable="YES"/>
+ <windowPositionMask key="initialPositionMask" leftStrut="YES" bottomStrut="YES"/>
+ <rect key="contentRect" x="123" y="572" width="492" height="543"/>
+ <rect key="screenRect" x="0.0" y="0.0" width="1920" height="1178"/>
+ <view key="contentView" id="2">
+ <rect key="frame" x="0.0" y="0.0" width="492" height="543"/>
+ <autoresizingMask key="autoresizingMask"/>
+ <subviews>
+ <button id="129">
+ <rect key="frame" x="18" y="404" width="226" height="18"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="check" title="Check" bezelStyle="regularSquare" imagePosition="left" alignment="left" state="on" inset="2" id="130">
+ <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
+ <font key="font" metaFont="system"/>
+ </buttonCell>
+ </button>
+ <button id="135">
+ <rect key="frame" x="18" y="271" width="226" height="18"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="radio" title="Radio" bezelStyle="regularSquare" imagePosition="left" alignment="left" state="on" inset="2" id="136">
+ <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
+ <font key="font" metaFont="system"/>
+ </buttonCell>
+ </button>
+ <button id="133">
+ <rect key="frame" x="247" y="270" width="226" height="18"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="radio" title="Radio" bezelStyle="regularSquare" imagePosition="left" alignment="left" controlSize="small" state="on" inset="2" id="134">
+ <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
+ <font key="font" metaFont="smallSystem"/>
+ </buttonCell>
+ </button>
+ <button id="137">
+ <rect key="frame" x="247" y="403" width="226" height="18"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="check" title="Check" bezelStyle="regularSquare" imagePosition="left" alignment="left" controlSize="small" state="on" inset="2" id="138">
+ <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
+ <font key="font" metaFont="smallSystem"/>
+ </buttonCell>
+ </button>
+ <matrix verticalHuggingPriority="750" allowsEmptySelection="NO" id="139">
+ <rect key="frame" x="20" y="20" width="226" height="38"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+ <size key="cellSize" width="226" height="18"/>
+ <size key="intercellSpacing" width="4" height="2"/>
+ <buttonCell key="prototype" type="radio" title="Radio" imagePosition="left" alignment="left" inset="2" id="142">
+ <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
+ <font key="font" metaFont="system"/>
+ </buttonCell>
+ <cells>
+ <column>
+ <buttonCell type="radio" title="Radio" imagePosition="left" alignment="left" state="on" tag="1" inset="2" id="140">
+ <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
+ <font key="font" metaFont="system"/>
+ </buttonCell>
+ <buttonCell type="radio" title="Radio" imagePosition="left" alignment="left" inset="2" id="141">
+ <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
+ <font key="font" metaFont="system"/>
+ </buttonCell>
+ </column>
+ </cells>
+ </matrix>
+ <matrix verticalHuggingPriority="750" allowsEmptySelection="NO" id="144">
+ <rect key="frame" x="245" y="19" width="226" height="38"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+ <size key="cellSize" width="226" height="18"/>
+ <size key="intercellSpacing" width="4" height="2"/>
+ <buttonCell key="prototype" type="radio" title="Radio" imagePosition="left" alignment="left" controlSize="small" inset="2" id="145">
+ <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
+ <font key="font" metaFont="smallSystem"/>
+ </buttonCell>
+ <cells>
+ <column>
+ <buttonCell type="radio" title="Radio" imagePosition="left" alignment="left" controlSize="small" state="on" tag="1" inset="2" id="147">
+ <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
+ <font key="font" metaFont="smallSystem"/>
+ </buttonCell>
+ <buttonCell type="radio" title="Radio" imagePosition="left" alignment="left" controlSize="small" inset="2" id="146">
+ <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
+ <font key="font" metaFont="smallSystem"/>
+ </buttonCell>
+ </column>
+ </cells>
+ </matrix>
+ </subviews>
+ </view>
+ </window>
+ </objects>
+</document>
diff --git a/AppKit/GTMUILocalizerAndLayoutTweakerTest6.xib b/AppKit/GTMUILocalizerAndLayoutTweakerTest6.xib
index 6326164..5a40adb 100644
--- a/AppKit/GTMUILocalizerAndLayoutTweakerTest6.xib
+++ b/AppKit/GTMUILocalizerAndLayoutTweakerTest6.xib
@@ -1,976 +1,163 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.03">
- <data>
- <int key="IBDocument.SystemTarget">1050</int>
- <string key="IBDocument.SystemVersion">9L30</string>
- <string key="IBDocument.InterfaceBuilderVersion">680</string>
- <string key="IBDocument.AppKitVersion">949.54</string>
- <string key="IBDocument.HIToolboxVersion">353.00</string>
- <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="124"/>
- </object>
- <object class="NSArray" key="IBDocument.PluginDependencies">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>com.apple.InterfaceBuilderKit</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- </object>
- <object class="NSMutableDictionary" key="IBDocument.Metadata">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <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="NSCustomObject" id="1001">
- <string key="NSClassName">GTMUILocalizerAndLayoutTweakerTestWindowController</string>
- </object>
- <object class="NSCustomObject" id="1003">
- <string key="NSClassName">FirstResponder</string>
- </object>
- <object class="NSCustomObject" id="1004">
- <string key="NSClassName">NSApplication</string>
- </object>
- <object class="NSWindowTemplate" id="1005">
- <int key="NSWindowStyleMask">15</int>
- <int key="NSWindowBacking">2</int>
- <string key="NSWindowRect">{{71, 48}, {532, 250}}</string>
- <int key="NSWTFlags">536870912</int>
- <string key="NSWindowTitle">Window</string>
- <string key="NSWindowClass">NSWindow</string>
- <nil key="NSViewClass"/>
- <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
- <object class="NSView" key="NSWindowView" id="1006">
- <reference key="NSNextResponder"/>
- <int key="NSvFlags">256</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSTabView" id="426324712">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">18</int>
- <string key="NSFrame">{{13, 10}, {506, 234}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <object class="NSMutableArray" key="NSTabViewItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSTabViewItem" id="8716251">
- <string key="NSIdentifier">1</string>
- <object class="NSView" key="NSView" id="429156130">
- <reference key="NSNextResponder" ref="426324712"/>
- <int key="NSvFlags">256</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSBox" id="13430988">
- <reference key="NSNextResponder" ref="429156130"/>
- <int key="NSvFlags">266</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSView" id="180511442">
- <reference key="NSNextResponder" ref="13430988"/>
- <int key="NSvFlags">256</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSTextField" id="800844720">
- <reference key="NSNextResponder" ref="180511442"/>
- <int key="NSvFlags">266</int>
- <string key="NSFrame">{{3, 45}, {311, 22}}</string>
- <reference key="NSSuperview" ref="180511442"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="951606926">
- <int key="NSCellFlags">-1804468671</int>
- <int key="NSCellFlags2">272630784</int>
- <string key="NSContents"/>
- <object class="NSFont" key="NSSupport" id="396891173">
- <string key="NSName">LucidaGrande</string>
- <double key="NSSize">1.300000e+01</double>
- <int key="NSfFlags">1044</int>
- </object>
- <reference key="NSControlView" ref="800844720"/>
- <bool key="NSDrawsBackground">YES</bool>
- <object class="NSColor" key="NSBackgroundColor" id="763520216">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">textBackgroundColor</string>
- <object class="NSColor" key="NSColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MQA</bytes>
- </object>
- </object>
- <object class="NSColor" key="NSTextColor" id="843269795">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">textColor</string>
- <object class="NSColor" key="NSColor" id="960820016">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MAA</bytes>
- </object>
- </object>
- </object>
- </object>
- <object class="NSTextField" id="745022904">
- <reference key="NSNextResponder" ref="180511442"/>
- <int key="NSvFlags">266</int>
- <string key="NSFrame">{{3, 13}, {311, 22}}</string>
- <reference key="NSSuperview" ref="180511442"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="810828168">
- <int key="NSCellFlags">-1804468671</int>
- <int key="NSCellFlags2">272630784</int>
- <string key="NSContents"/>
- <reference key="NSSupport" ref="396891173"/>
- <reference key="NSControlView" ref="745022904"/>
- <bool key="NSDrawsBackground">YES</bool>
- <reference key="NSBackgroundColor" ref="763520216"/>
- <reference key="NSTextColor" ref="843269795"/>
- </object>
- </object>
- <object class="NSTextField" id="478979211">
- <reference key="NSNextResponder" ref="180511442"/>
- <int key="NSvFlags">266</int>
- <string key="NSFrame">{{3, 77}, {311, 22}}</string>
- <reference key="NSSuperview" ref="180511442"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="1044158630">
- <int key="NSCellFlags">-1804468671</int>
- <int key="NSCellFlags2">272630784</int>
- <string key="NSContents"/>
- <reference key="NSSupport" ref="396891173"/>
- <reference key="NSControlView" ref="478979211"/>
- <bool key="NSDrawsBackground">YES</bool>
- <reference key="NSBackgroundColor" ref="763520216"/>
- <reference key="NSTextColor" ref="843269795"/>
- </object>
- </object>
- </object>
- <string key="NSFrameSize">{337, 109}</string>
- <reference key="NSSuperview" ref="13430988"/>
- </object>
- </object>
- <string key="NSFrame">{{155, 52}, {337, 109}}</string>
- <reference key="NSSuperview" ref="429156130"/>
- <string key="NSOffsets">{0, 0}</string>
- <object class="NSTextFieldCell" key="NSTitleCell">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">Box</string>
- <object class="NSFont" key="NSSupport">
- <string key="NSName">LucidaGrande</string>
- <double key="NSSize">1.100000e+01</double>
- <int key="NSfFlags">3100</int>
- </object>
- <reference key="NSBackgroundColor" ref="763520216"/>
- <object class="NSColor" key="NSTextColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MCAwLjgwMDAwMDAxAA</bytes>
- </object>
- </object>
- <reference key="NSContentView" ref="180511442"/>
- <int key="NSBorderType">0</int>
- <int key="NSBoxType">0</int>
- <int key="NSTitlePosition">0</int>
- <bool key="NSTransparent">NO</bool>
- </object>
- <object class="NSCustomView" id="450922667">
- <reference key="NSNextResponder" ref="429156130"/>
- <int key="NSvFlags">268</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSTextField" id="32340604">
- <reference key="NSNextResponder" ref="450922667"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{17, 84}, {139, 17}}</string>
- <reference key="NSSuperview" ref="450922667"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="1064530732">
- <int key="NSCellFlags">68288064</int>
- <int key="NSCellFlags2">272630784</int>
- <string key="NSContents">ab:10:2</string>
- <reference key="NSSupport" ref="396891173"/>
- <reference key="NSControlView" ref="32340604"/>
- <object class="NSColor" key="NSBackgroundColor" id="584893825">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">controlColor</string>
- <object class="NSColor" key="NSColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC42NjY2NjY2OQA</bytes>
- </object>
- </object>
- <object class="NSColor" key="NSTextColor" id="215232119">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">controlTextColor</string>
- <reference key="NSColor" ref="960820016"/>
- </object>
- </object>
- </object>
- <object class="NSTextField" id="499628444">
- <reference key="NSNextResponder" ref="450922667"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{17, 20}, {139, 17}}</string>
- <reference key="NSSuperview" ref="450922667"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="200889835">
- <int key="NSCellFlags">68288064</int>
- <int key="NSCellFlags2">272630784</int>
- <string key="NSContents">l:12:3</string>
- <reference key="NSSupport" ref="396891173"/>
- <reference key="NSControlView" ref="499628444"/>
- <reference key="NSBackgroundColor" ref="584893825"/>
- <reference key="NSTextColor" ref="215232119"/>
- </object>
- </object>
- <object class="NSTextField" id="236725617">
- <reference key="NSNextResponder" ref="450922667"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{17, 52}, {139, 17}}</string>
- <reference key="NSSuperview" ref="450922667"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="65808262">
- <int key="NSCellFlags">68288064</int>
- <int key="NSCellFlags2">272630784</int>
- <string key="NSContents">W:10:4</string>
- <reference key="NSSupport" ref="396891173"/>
- <reference key="NSControlView" ref="236725617"/>
- <reference key="NSBackgroundColor" ref="584893825"/>
- <reference key="NSTextColor" ref="215232119"/>
- </object>
- </object>
- </object>
- <string key="NSFrame">{{-3, 47}, {153, 121}}</string>
- <reference key="NSSuperview" ref="429156130"/>
- <string key="NSClassName">GTMWidthBasedTweaker</string>
- </object>
- </object>
- <string key="NSFrame">{{10, 33}, {486, 188}}</string>
- <reference key="NSSuperview" ref="426324712"/>
- </object>
- <string key="NSLabel">Tab1</string>
- <reference key="NSColor" ref="584893825"/>
- <reference key="NSTabView" ref="426324712"/>
- </object>
- <object class="NSTabViewItem" id="752465094">
- <string key="NSIdentifier">2</string>
- <object class="NSView" key="NSView" id="368893180">
- <nil key="NSNextResponder"/>
- <int key="NSvFlags">256</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSCustomView" id="425820745">
- <reference key="NSNextResponder" ref="368893180"/>
- <int key="NSvFlags">268</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSButton" id="451910975">
- <reference key="NSNextResponder" ref="425820745"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{14, 8}, {96, 32}}</string>
- <reference key="NSSuperview" ref="425820745"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="699592511">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">134217728</int>
- <string key="NSContents">no:1:2</string>
- <reference key="NSSupport" ref="396891173"/>
- <reference key="NSControlView" ref="451910975"/>
- <int key="NSButtonFlags">-2038284033</int>
- <int key="NSButtonFlags2">129</int>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- <object class="NSButton" id="33087012">
- <reference key="NSNextResponder" ref="425820745"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{14, 72}, {96, 32}}</string>
- <reference key="NSSuperview" ref="425820745"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="724227221">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">134217728</int>
- <string key="NSContents">foo :4:1</string>
- <reference key="NSSupport" ref="396891173"/>
- <reference key="NSControlView" ref="33087012"/>
- <int key="NSButtonFlags">-2038284033</int>
- <int key="NSButtonFlags2">129</int>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- <object class="NSButton" id="53135406">
- <reference key="NSNextResponder" ref="425820745"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{14, 40}, {111, 32}}</string>
- <reference key="NSSuperview" ref="425820745"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="330872883">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">134217728</int>
- <string key="NSContents">foobar :2:1</string>
- <reference key="NSSupport" ref="396891173"/>
- <reference key="NSControlView" ref="53135406"/>
- <int key="NSButtonFlags">-2038284033</int>
- <int key="NSButtonFlags2">129</int>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- </object>
- <string key="NSFrame">{{17, 76}, {135, 109}}</string>
- <reference key="NSSuperview" ref="368893180"/>
- <string key="NSClassName">GTMWidthBasedTweaker</string>
- </object>
- </object>
- <string key="NSFrame">{{10, 33}, {486, 188}}</string>
- </object>
- <string key="NSLabel">Tab2</string>
- <reference key="NSColor" ref="584893825"/>
- <reference key="NSTabView" ref="426324712"/>
- </object>
- </object>
- <reference key="NSSelectedTabViewItem" ref="8716251"/>
- <reference key="NSFont" ref="396891173"/>
- <int key="NSTvFlags">0</int>
- <bool key="NSAllowTruncatedLabels">YES</bool>
- <bool key="NSDrawsBackground">YES</bool>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="429156130"/>
- </object>
- </object>
- </object>
- <string key="NSFrameSize">{532, 250}</string>
- <reference key="NSSuperview"/>
- </object>
- <string key="NSScreenRect">{{0, 0}, {1920, 1178}}</string>
- <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
- </object>
- <object class="NSCustomObject" id="431527667">
- <string key="NSClassName">GTMUILocalizerAndLayoutTweaker</string>
- </object>
- <object class="NSCustomObject" id="730292222">
- <string key="NSClassName">GTMUILocalizerAndLayoutTweakerTestLocalizer</string>
- </object>
- </object>
- <object class="IBObjectContainer" key="IBDocument.Objects">
- <object class="NSMutableArray" key="connectionRecords">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">uiObject_</string>
- <reference key="source" ref="431527667"/>
- <reference key="destination" ref="1005"/>
- </object>
- <int key="connectionID">84</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">viewToSlideAndResize_</string>
- <reference key="source" ref="450922667"/>
- <reference key="destination" ref="13430988"/>
- </object>
- <int key="connectionID">116</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">localizer_</string>
- <reference key="source" ref="431527667"/>
- <reference key="destination" ref="730292222"/>
- </object>
- <int key="connectionID">118</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">window</string>
- <reference key="source" ref="1001"/>
- <reference key="destination" ref="1005"/>
- </object>
- <int key="connectionID">119</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">tabView_</string>
- <reference key="source" ref="1001"/>
- <reference key="destination" ref="426324712"/>
- </object>
- <int key="connectionID">132</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>
- <object class="NSArray" key="object" id="1002">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <reference key="children" ref="1000"/>
- <nil key="parent"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-2</int>
- <reference key="object" ref="1001"/>
- <reference key="parent" ref="1002"/>
- <string type="base64-UTF8" key="objectName">RmlsZSdzIE93bmVyA</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-1</int>
- <reference key="object" ref="1003"/>
- <reference key="parent" ref="1002"/>
- <string key="objectName">First Responder</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-3</int>
- <reference key="object" ref="1004"/>
- <reference key="parent" ref="1002"/>
- <string key="objectName">Application</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">1</int>
- <reference key="object" ref="1005"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1006"/>
- </object>
- <reference key="parent" ref="1002"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">2</int>
- <reference key="object" ref="1006"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="426324712"/>
- </object>
- <reference key="parent" ref="1005"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">35</int>
- <reference key="object" ref="431527667"/>
- <reference key="parent" ref="1002"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">117</int>
- <reference key="object" ref="730292222"/>
- <reference key="parent" ref="1002"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">120</int>
- <reference key="object" ref="426324712"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="8716251"/>
- <reference ref="752465094"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">121</int>
- <reference key="object" ref="8716251"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="429156130"/>
- </object>
- <reference key="parent" ref="426324712"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">122</int>
- <reference key="object" ref="752465094"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="368893180"/>
- </object>
- <reference key="parent" ref="426324712"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">123</int>
- <reference key="object" ref="368893180"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="425820745"/>
- </object>
- <reference key="parent" ref="752465094"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">124</int>
- <reference key="object" ref="429156130"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="450922667"/>
- <reference ref="13430988"/>
- </object>
- <reference key="parent" ref="8716251"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">34</int>
- <reference key="object" ref="13430988"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="478979211"/>
- <reference ref="745022904"/>
- <reference ref="800844720"/>
- </object>
- <reference key="parent" ref="429156130"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">11</int>
- <reference key="object" ref="478979211"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1044158630"/>
- </object>
- <reference key="parent" ref="13430988"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">15</int>
- <reference key="object" ref="745022904"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="810828168"/>
- </object>
- <reference key="parent" ref="13430988"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">13</int>
- <reference key="object" ref="800844720"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="951606926"/>
- </object>
- <reference key="parent" ref="13430988"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">14</int>
- <reference key="object" ref="951606926"/>
- <reference key="parent" ref="800844720"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">16</int>
- <reference key="object" ref="810828168"/>
- <reference key="parent" ref="745022904"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">12</int>
- <reference key="object" ref="1044158630"/>
- <reference key="parent" ref="478979211"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">115</int>
- <reference key="object" ref="450922667"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="236725617"/>
- <reference ref="499628444"/>
- <reference ref="32340604"/>
- </object>
- <reference key="parent" ref="429156130"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">7</int>
- <reference key="object" ref="236725617"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="65808262"/>
- </object>
- <reference key="parent" ref="450922667"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">9</int>
- <reference key="object" ref="499628444"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="200889835"/>
- </object>
- <reference key="parent" ref="450922667"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">5</int>
- <reference key="object" ref="32340604"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1064530732"/>
- </object>
- <reference key="parent" ref="450922667"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">6</int>
- <reference key="object" ref="1064530732"/>
- <reference key="parent" ref="32340604"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">10</int>
- <reference key="object" ref="200889835"/>
- <reference key="parent" ref="499628444"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">8</int>
- <reference key="object" ref="65808262"/>
- <reference key="parent" ref="236725617"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">125</int>
- <reference key="object" ref="425820745"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="33087012"/>
- <reference ref="53135406"/>
- <reference ref="451910975"/>
- </object>
- <reference key="parent" ref="368893180"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">126</int>
- <reference key="object" ref="451910975"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="699592511"/>
- </object>
- <reference key="parent" ref="425820745"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">127</int>
- <reference key="object" ref="33087012"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="724227221"/>
- </object>
- <reference key="parent" ref="425820745"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">128</int>
- <reference key="object" ref="53135406"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="330872883"/>
- </object>
- <reference key="parent" ref="425820745"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">129</int>
- <reference key="object" ref="330872883"/>
- <reference key="parent" ref="53135406"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">130</int>
- <reference key="object" ref="724227221"/>
- <reference key="parent" ref="33087012"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">131</int>
- <reference key="object" ref="699592511"/>
- <reference key="parent" ref="451910975"/>
- </object>
- </object>
- </object>
- <object class="NSMutableDictionary" key="flattenedProperties">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMutableArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>-1.IBPluginDependency</string>
- <string>-2.IBPluginDependency</string>
- <string>-3.IBPluginDependency</string>
- <string>1.IBEditorWindowLastContentRect</string>
- <string>1.IBPluginDependency</string>
- <string>1.IBWindowTemplateEditedContentRect</string>
- <string>1.NSWindowTemplate.visibleAtLaunch</string>
- <string>1.WindowOrigin</string>
- <string>1.editorWindowContentRectSynchronizationRect</string>
- <string>10.IBPluginDependency</string>
- <string>11.IBPluginDependency</string>
- <string>117.IBPluginDependency</string>
- <string>12.IBPluginDependency</string>
- <string>120.IBPluginDependency</string>
- <string>121.IBPluginDependency</string>
- <string>122.IBPluginDependency</string>
- <string>123.IBPluginDependency</string>
- <string>124.IBPluginDependency</string>
- <string>126.IBPluginDependency</string>
- <string>127.IBPluginDependency</string>
- <string>128.IBPluginDependency</string>
- <string>129.IBPluginDependency</string>
- <string>13.IBPluginDependency</string>
- <string>130.IBPluginDependency</string>
- <string>131.IBPluginDependency</string>
- <string>14.IBPluginDependency</string>
- <string>15.IBPluginDependency</string>
- <string>16.IBPluginDependency</string>
- <string>2.IBPluginDependency</string>
- <string>35.IBPluginDependency</string>
- <string>5.IBPluginDependency</string>
- <string>6.IBPluginDependency</string>
- <string>7.IBPluginDependency</string>
- <string>8.IBPluginDependency</string>
- <string>9.IBPluginDependency</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilderKit</string>
- <string>com.apple.InterfaceBuilderKit</string>
- <string>{{636, 906}, {532, 250}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{636, 906}, {532, 250}}</string>
- <boolean value="NO"/>
- <string>{196, 240}</string>
- <string>{{202, 428}, {480, 270}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- </object>
- </object>
- <object class="NSMutableDictionary" key="unlocalizedProperties">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <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>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- </object>
- <nil key="sourceID"/>
- <int key="maxID">132</int>
- </object>
- <object class="IBClassDescriber" key="IBDocument.Classes">
- <object class="NSMutableArray" key="referencedPartialClassDescriptions">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBPartialClassDescription">
- <string key="className">GTMUILocalizer</string>
- <string key="superclassName">NSObject</string>
- <object class="NSMutableDictionary" key="outlets">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMutableArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>otherObjectToLocalize_</string>
- <string>owner_</string>
- <string>yetAnotherObjectToLocalize_</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>id</string>
- <string>id</string>
- <string>id</string>
- </object>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMUILocalizer.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">GTMUILocalizerAndLayoutTweaker</string>
- <string key="superclassName">NSObject</string>
- <object class="NSMutableDictionary" key="outlets">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMutableArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>localizerOwner_</string>
- <string>localizer_</string>
- <string>uiObject_</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>id</string>
- <string>GTMUILocalizer</string>
- <string>id</string>
- </object>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="606537230">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMUILocalizerAndLayoutTweaker.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">GTMUILocalizerAndLayoutTweakerTestLocalizer</string>
- <string key="superclassName">GTMUILocalizer</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="969035251">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMUILocalizerAndLayoutTweakerTest.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">GTMUILocalizerAndLayoutTweakerTestWindowController</string>
- <string key="superclassName">NSWindowController</string>
- <object class="NSMutableDictionary" key="outlets">
- <string key="NS.key.0">tabView_</string>
- <string key="NS.object.0">NSTabView</string>
- </object>
- <reference key="sourceIdentifier" ref="969035251"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">GTMWidthBasedTweaker</string>
- <string key="superclassName">NSView</string>
- <object class="NSMutableDictionary" key="outlets">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMutableArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>viewToResize_</string>
- <string>viewToSlideAndResize_</string>
- <string>viewToSlide_</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>id</string>
- <string>NSView</string>
- <string>NSView</string>
- </object>
- </object>
- <reference key="sourceIdentifier" ref="606537230"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="925048441">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMAppKit+UnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSButton</string>
- <reference key="sourceIdentifier" ref="925048441"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSCell</string>
- <reference key="sourceIdentifier" ref="925048441"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSControl</string>
- <reference key="sourceIdentifier" ref="925048441"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSMenu</string>
- <reference key="sourceIdentifier" ref="925048441"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMCarbonEvent.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMDelegatingTableColumn.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Foundation/GTMHTTPServer.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Foundation/GTMNSAppleEventDescriptor+Foundation.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Foundation/GTMNSObject+KeyValueObserving.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMCALayer+UnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMNSObject+BindingUnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMNSObject+UnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSTabView</string>
- <reference key="sourceIdentifier" ref="925048441"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSTabViewItem</string>
- <reference key="sourceIdentifier" ref="925048441"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSTextField</string>
- <reference key="sourceIdentifier" ref="925048441"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="39542122">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMTheme.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <reference key="sourceIdentifier" ref="925048441"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindow</string>
- <reference key="sourceIdentifier" ref="39542122"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindow</string>
- <reference key="sourceIdentifier" ref="925048441"/>
- </object>
- </object>
- </object>
- <int key="IBDocument.localizationMode">0</int>
- <string key="IBDocument.LastKnownRelativeProjectPath">../GTM.xcodeproj</string>
- <int key="IBDocument.defaultPropertyAccessControl">3</int>
- </data>
-</archive>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="11201" systemVersion="15G31" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
+ <dependencies>
+ <deployment identifier="macosx"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11201"/>
+ <capability name="box content view" minToolsVersion="7.0"/>
+ </dependencies>
+ <objects>
+ <customObject id="-2" userLabel="File's Owner" customClass="GTMUILocalizerAndLayoutTweakerTestWindowController">
+ <connections>
+ <outlet property="tabView_" destination="120" id="132"/>
+ <outlet property="window" destination="1" id="119"/>
+ </connections>
+ </customObject>
+ <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+ <customObject id="-3" userLabel="Application"/>
+ <window title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" oneShot="NO" visibleAtLaunch="NO" animationBehavior="default" id="1">
+ <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
+ <windowPositionMask key="initialPositionMask" leftStrut="YES" bottomStrut="YES"/>
+ <rect key="contentRect" x="71" y="48" width="532" height="250"/>
+ <rect key="screenRect" x="0.0" y="0.0" width="1920" height="1178"/>
+ <view key="contentView" id="2">
+ <rect key="frame" x="0.0" y="0.0" width="532" height="250"/>
+ <autoresizingMask key="autoresizingMask"/>
+ <subviews>
+ <tabView id="120">
+ <rect key="frame" x="13" y="10" width="506" height="234"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <font key="font" metaFont="system"/>
+ <tabViewItems>
+ <tabViewItem label="Tab1" identifier="1" id="121">
+ <view key="view" id="124">
+ <rect key="frame" x="10" y="33" width="486" height="188"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <subviews>
+ <box borderType="none" title="Box" titlePosition="noTitle" id="34">
+ <rect key="frame" x="155" y="52" width="337" height="109"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
+ <view key="contentView" id="XFW-DT-2V1">
+ <rect key="frame" x="0.0" y="0.0" width="337" height="109"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <subviews>
+ <textField verticalHuggingPriority="750" id="13">
+ <rect key="frame" x="3" y="45" width="311" height="22"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
+ <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="14">
+ <font key="font" metaFont="system"/>
+ <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ </textField>
+ <textField verticalHuggingPriority="750" id="15">
+ <rect key="frame" x="3" y="13" width="311" height="22"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
+ <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="16">
+ <font key="font" metaFont="system"/>
+ <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ </textField>
+ <textField verticalHuggingPriority="750" id="11">
+ <rect key="frame" x="3" y="77" width="311" height="22"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
+ <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="12">
+ <font key="font" metaFont="system"/>
+ <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ </textField>
+ </subviews>
+ </view>
+ </box>
+ <customView id="115" customClass="GTMWidthBasedTweaker">
+ <rect key="frame" x="-3" y="47" width="153" height="121"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <subviews>
+ <textField verticalHuggingPriority="750" id="7">
+ <rect key="frame" x="17" y="52" width="139" height="17"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="W:10:4" id="8">
+ <font key="font" metaFont="system"/>
+ <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ </textField>
+ <textField verticalHuggingPriority="750" id="9">
+ <rect key="frame" x="17" y="20" width="139" height="17"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="l:12:3" id="10">
+ <font key="font" metaFont="system"/>
+ <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ </textField>
+ <textField verticalHuggingPriority="750" id="5">
+ <rect key="frame" x="17" y="84" width="139" height="17"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="ab:10:2" id="6">
+ <font key="font" metaFont="system"/>
+ <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ </textField>
+ </subviews>
+ <connections>
+ <outlet property="viewToSlideAndResize_" destination="34" id="116"/>
+ </connections>
+ </customView>
+ </subviews>
+ </view>
+ </tabViewItem>
+ <tabViewItem label="Tab2" identifier="2" id="122">
+ <view key="view" id="123">
+ <rect key="frame" x="10" y="33" width="486" height="188"/>
+ <autoresizingMask key="autoresizingMask"/>
+ <subviews>
+ <customView id="125" customClass="GTMWidthBasedTweaker">
+ <rect key="frame" x="17" y="76" width="135" height="109"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <subviews>
+ <button verticalHuggingPriority="750" id="128">
+ <rect key="frame" x="14" y="40" width="111" height="32"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="push" title="foobar :2:1" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="129">
+ <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+ <font key="font" metaFont="system"/>
+ </buttonCell>
+ </button>
+ <button verticalHuggingPriority="750" id="127">
+ <rect key="frame" x="14" y="72" width="96" height="32"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="push" title="foo :4:1" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="130">
+ <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+ <font key="font" metaFont="system"/>
+ </buttonCell>
+ </button>
+ <button verticalHuggingPriority="750" id="126">
+ <rect key="frame" x="14" y="8" width="96" height="32"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="push" title="no:1:2" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="131">
+ <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+ <font key="font" metaFont="system"/>
+ </buttonCell>
+ </button>
+ </subviews>
+ </customView>
+ </subviews>
+ </view>
+ </tabViewItem>
+ </tabViewItems>
+ </tabView>
+ </subviews>
+ </view>
+ </window>
+ <customObject id="35" customClass="GTMUILocalizerAndLayoutTweaker">
+ <connections>
+ <outlet property="localizer_" destination="117" id="118"/>
+ <outlet property="uiObject_" destination="1" id="84"/>
+ </connections>
+ </customObject>
+ <customObject id="117" customClass="GTMUILocalizerAndLayoutTweakerTestLocalizer"/>
+ </objects>
+</document>
diff --git a/AppKit/GTMUILocalizerAndLayoutTweakerTest7.xib b/AppKit/GTMUILocalizerAndLayoutTweakerTest7.xib
index 04b30e4..77bdd2a 100644
--- a/AppKit/GTMUILocalizerAndLayoutTweakerTest7.xib
+++ b/AppKit/GTMUILocalizerAndLayoutTweakerTest7.xib
@@ -1,443 +1,64 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.03">
- <data>
- <int key="IBDocument.SystemTarget">1050</int>
- <string key="IBDocument.SystemVersion">9L30</string>
- <string key="IBDocument.InterfaceBuilderVersion">680</string>
- <string key="IBDocument.AppKitVersion">949.54</string>
- <string key="IBDocument.HIToolboxVersion">353.00</string>
- <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.InterfaceBuilderKit</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- </object>
- <object class="NSMutableDictionary" key="IBDocument.Metadata">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <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="NSCustomObject" id="1001">
- <string key="NSClassName">GTMUILocalizerAndLayoutTweakerTestWindowController</string>
- </object>
- <object class="NSCustomObject" id="1003">
- <string key="NSClassName">FirstResponder</string>
- </object>
- <object class="NSCustomObject" id="1004">
- <string key="NSClassName">NSApplication</string>
- </object>
- <object class="NSWindowTemplate" id="1005">
- <int key="NSWindowStyleMask">3</int>
- <int key="NSWindowBacking">2</int>
- <string key="NSWindowRect">{{123, 807}, {475, 308}}</string>
- <int key="NSWTFlags">536870912</int>
- <string key="NSWindowTitle">Window7</string>
- <string key="NSWindowClass">NSWindow</string>
- <nil key="NSViewClass"/>
- <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
- <object class="NSView" key="NSWindowView" id="1006">
- <reference key="NSNextResponder"/>
- <int key="NSvFlags">256</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSTextField" id="374380249">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{17, 213}, {137, 38}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="929792690">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">272891904</int>
- <string key="NSContents">Multiline Label</string>
- <object class="NSFont" key="NSSupport" id="554297525">
- <string key="NSName">LucidaGrande</string>
- <double key="NSSize">1.300000e+01</double>
- <int key="NSfFlags">16</int>
- </object>
- <reference key="NSControlView" ref="374380249"/>
- <object class="NSColor" key="NSBackgroundColor" id="584893825">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">controlColor</string>
- <object class="NSColor" key="NSColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC42NjY2NjY2OQA</bytes>
- </object>
- </object>
- <object class="NSColor" key="NSTextColor" id="215232119">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">controlTextColor</string>
- <object class="NSColor" key="NSColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MAA</bytes>
- </object>
- </object>
- </object>
- </object>
- <object class="NSTextField" id="616557491">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{17, 259}, {137, 29}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="596183282">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">272891904</int>
- <string key="NSContents">Multiline Label</string>
- <reference key="NSSupport" ref="554297525"/>
- <reference key="NSControlView" ref="616557491"/>
- <reference key="NSBackgroundColor" ref="584893825"/>
- <reference key="NSTextColor" ref="215232119"/>
- </object>
- </object>
- <object class="NSTextField" id="617797386">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{17, 132}, {137, 73}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="383941342">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">272891904</int>
- <string key="NSContents">Multiline Label</string>
- <reference key="NSSupport" ref="554297525"/>
- <reference key="NSControlView" ref="617797386"/>
- <reference key="NSBackgroundColor" ref="584893825"/>
- <reference key="NSTextColor" ref="215232119"/>
- </object>
- </object>
- <object class="NSTextField" id="1057400229">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{17, 20}, {137, 104}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="399518885">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">272891904</int>
- <string key="NSContents">Multiline Label</string>
- <reference key="NSSupport" ref="554297525"/>
- <reference key="NSControlView" ref="1057400229"/>
- <reference key="NSBackgroundColor" ref="584893825"/>
- <reference key="NSTextColor" ref="215232119"/>
- </object>
- </object>
- </object>
- <string key="NSFrameSize">{475, 308}</string>
- <reference key="NSSuperview"/>
- </object>
- <string key="NSScreenRect">{{0, 0}, {1920, 1178}}</string>
- <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
- </object>
- </object>
- <object class="IBObjectContainer" key="IBDocument.Objects">
- <object class="NSMutableArray" key="connectionRecords">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">window</string>
- <reference key="source" ref="1001"/>
- <reference key="destination" ref="1005"/>
- </object>
- <int key="connectionID">122</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>
- <object class="NSArray" key="object" id="1002">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <reference key="children" ref="1000"/>
- <nil key="parent"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-2</int>
- <reference key="object" ref="1001"/>
- <reference key="parent" ref="1002"/>
- <string type="base64-UTF8" key="objectName">RmlsZSdzIE93bmVyA</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-1</int>
- <reference key="object" ref="1003"/>
- <reference key="parent" ref="1002"/>
- <string key="objectName">First Responder</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-3</int>
- <reference key="object" ref="1004"/>
- <reference key="parent" ref="1002"/>
- <string key="objectName">Application</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">1</int>
- <reference key="object" ref="1005"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1006"/>
- </object>
- <reference key="parent" ref="1002"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">2</int>
- <reference key="object" ref="1006"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="374380249"/>
- <reference ref="617797386"/>
- <reference ref="1057400229"/>
- <reference ref="616557491"/>
- </object>
- <reference key="parent" ref="1005"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">123</int>
- <reference key="object" ref="374380249"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="929792690"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">124</int>
- <reference key="object" ref="929792690"/>
- <reference key="parent" ref="374380249"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">129</int>
- <reference key="object" ref="617797386"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="383941342"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">130</int>
- <reference key="object" ref="383941342"/>
- <reference key="parent" ref="617797386"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">131</int>
- <reference key="object" ref="1057400229"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="399518885"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">132</int>
- <reference key="object" ref="399518885"/>
- <reference key="parent" ref="1057400229"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">139</int>
- <reference key="object" ref="616557491"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="596183282"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">140</int>
- <reference key="object" ref="596183282"/>
- <reference key="parent" ref="616557491"/>
- </object>
- </object>
- </object>
- <object class="NSMutableDictionary" key="flattenedProperties">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMutableArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>-1.IBPluginDependency</string>
- <string>-2.IBPluginDependency</string>
- <string>-3.IBPluginDependency</string>
- <string>1.IBEditorWindowLastContentRect</string>
- <string>1.IBPluginDependency</string>
- <string>1.IBWindowTemplateEditedContentRect</string>
- <string>1.NSWindowTemplate.visibleAtLaunch</string>
- <string>1.WindowOrigin</string>
- <string>1.editorWindowContentRectSynchronizationRect</string>
- <string>123.IBPluginDependency</string>
- <string>124.IBPluginDependency</string>
- <string>129.IBPluginDependency</string>
- <string>130.IBPluginDependency</string>
- <string>131.IBPluginDependency</string>
- <string>132.IBPluginDependency</string>
- <string>139.IBPluginDependency</string>
- <string>140.IBPluginDependency</string>
- <string>2.IBPluginDependency</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilderKit</string>
- <string>com.apple.InterfaceBuilderKit</string>
- <string>{{632, 820}, {475, 308}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{632, 820}, {475, 308}}</string>
- <boolean value="NO"/>
- <string>{196, 240}</string>
- <string>{{202, 428}, {480, 270}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- </object>
- </object>
- <object class="NSMutableDictionary" key="unlocalizedProperties">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <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>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- </object>
- <nil key="sourceID"/>
- <int key="maxID">140</int>
- </object>
- <object class="IBClassDescriber" key="IBDocument.Classes">
- <object class="NSMutableArray" key="referencedPartialClassDescriptions">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBPartialClassDescription">
- <string key="className">GTMUILocalizerAndLayoutTweakerTestWindowController</string>
- <string key="superclassName">NSWindowController</string>
- <object class="NSMutableDictionary" key="outlets">
- <string key="NS.key.0">tabView_</string>
- <string key="NS.object.0">NSTabView</string>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMUILocalizerAndLayoutTweakerTest.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="112385276">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMAppKit+UnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSCell</string>
- <reference key="sourceIdentifier" ref="112385276"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSControl</string>
- <reference key="sourceIdentifier" ref="112385276"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSMenu</string>
- <reference key="sourceIdentifier" ref="112385276"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMCarbonEvent.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMDelegatingTableColumn.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Foundation/GTMHTTPServer.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Foundation/GTMNSAppleEventDescriptor+Foundation.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Foundation/GTMNSObject+KeyValueObserving.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMCALayer+UnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMNSObject+BindingUnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMNSObject+UnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSTabView</string>
- <reference key="sourceIdentifier" ref="112385276"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSTextField</string>
- <reference key="sourceIdentifier" ref="112385276"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <reference key="sourceIdentifier" ref="112385276"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindow</string>
- <reference key="sourceIdentifier" ref="112385276"/>
- </object>
- </object>
- </object>
- <int key="IBDocument.localizationMode">0</int>
- <string key="IBDocument.LastKnownRelativeProjectPath">../GTM.xcodeproj</string>
- <int key="IBDocument.defaultPropertyAccessControl">3</int>
- </data>
-</archive>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="11201" systemVersion="15G1004" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
+ <dependencies>
+ <deployment identifier="macosx"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11201"/>
+ </dependencies>
+ <objects>
+ <customObject id="-2" userLabel="File's Owner" customClass="GTMUILocalizerAndLayoutTweakerTestWindowController">
+ <connections>
+ <outlet property="window" destination="1" id="122"/>
+ </connections>
+ </customObject>
+ <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+ <customObject id="-3" userLabel="Application" customClass="NSObject"/>
+ <window title="Window7" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" oneShot="NO" visibleAtLaunch="NO" animationBehavior="default" id="1">
+ <windowStyleMask key="styleMask" titled="YES" closable="YES"/>
+ <windowPositionMask key="initialPositionMask" leftStrut="YES" bottomStrut="YES"/>
+ <rect key="contentRect" x="123" y="807" width="475" height="308"/>
+ <rect key="screenRect" x="0.0" y="0.0" width="1920" height="1178"/>
+ <view key="contentView" id="2">
+ <rect key="frame" x="0.0" y="0.0" width="475" height="308"/>
+ <autoresizingMask key="autoresizingMask"/>
+ <subviews>
+ <textField verticalHuggingPriority="750" id="123">
+ <rect key="frame" x="17" y="213" width="137" height="38"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <textFieldCell key="cell" controlSize="mini" sendsActionOnEndEditing="YES" borderStyle="border" title="Multiline Label" id="124">
+ <font key="font" metaFont="system"/>
+ <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ </textField>
+ <textField verticalHuggingPriority="750" id="139">
+ <rect key="frame" x="17" y="259" width="137" height="29"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <textFieldCell key="cell" controlSize="mini" sendsActionOnEndEditing="YES" borderStyle="border" title="Multiline Label" id="140">
+ <font key="font" metaFont="system"/>
+ <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ </textField>
+ <textField verticalHuggingPriority="750" id="129">
+ <rect key="frame" x="17" y="132" width="137" height="73"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <textFieldCell key="cell" controlSize="mini" sendsActionOnEndEditing="YES" borderStyle="border" title="Multiline Label" id="130">
+ <font key="font" metaFont="system"/>
+ <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ </textField>
+ <textField verticalHuggingPriority="750" id="131">
+ <rect key="frame" x="17" y="20" width="137" height="104"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <textFieldCell key="cell" controlSize="mini" sendsActionOnEndEditing="YES" borderStyle="border" title="Multiline Label" id="132">
+ <font key="font" metaFont="system"/>
+ <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ </textField>
+ </subviews>
+ </view>
+ </window>
+ </objects>
+</document>
diff --git a/AppKit/GTMUILocalizerTest.h b/AppKit/GTMUILocalizerTest.h
index d1c1774..b89b99b 100644
--- a/AppKit/GTMUILocalizerTest.h
+++ b/AppKit/GTMUILocalizerTest.h
@@ -6,9 +6,9 @@
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy
// of the License at
-//
+//
// http://www.apache.org/licenses/LICENSE-2.0
-//
+//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
@@ -17,27 +17,90 @@
//
#import <Cocoa/Cocoa.h>
-#import "GTMDefines.h"
@interface GTMUILocalizerTestWindowController : NSWindowController {
- IBOutlet NSWindow *otherWindow_;
- IBOutlet NSWindow *anotherWindow_;
- IBOutlet NSMenu *otherMenu_;
- IBOutlet NSTextField *bindingsTextField_;
- IBOutlet NSSearchField *bindingsSearchField_;
+ IBOutlet NSWindow *_anotherWindow;
+ IBOutlet NSMenu *_otherMenu;
+
+ // Window Items
+ IBOutlet NSTextField *_bindingsTextField;
+ IBOutlet NSSearchField *_bindingsSearchField;
+ IBOutlet NSToolbarItem *_toolbarItem1;
+ IBOutlet NSToolbarItem *_toolbarItem2;
+ IBOutlet NSTabViewItem *_tabViewItem1;
+ IBOutlet NSTabViewItem *_tabViewItem2;
+ IBOutlet NSButton *_button1;
+ IBOutlet NSButton *_button2;
+ IBOutlet NSTextField *_textField1;
+ IBOutlet NSTextField *_textField2;
+ IBOutlet NSButton *_checkbox1;
+ IBOutlet NSButton *_checkbox2;
+ IBOutlet NSMenuItem *_menuItem1;
+ IBOutlet NSMenuItem *_menuItem2;
+ IBOutlet NSMenuItem *_menuItem3;
+ IBOutlet NSButtonCell *_radio1;
+ IBOutlet NSButtonCell *_radio2;
+
+ // AnotherWindow Items
+ IBOutlet NSBox *_aBox;
+ IBOutlet NSButton *_aButton1;
+ IBOutlet NSButton *_aButton2;
+ IBOutlet NSButton *_aCheckbox1;
+ IBOutlet NSButton *_aCheckbox2;
+ IBOutlet NSButtonCell *_aRadio1;
+ IBOutlet NSButtonCell *_aRadio2;
+ IBOutlet NSTextField *_aTextField1;
+ IBOutlet NSTextField *_aTextField2;
+ IBOutlet NSSegmentedControl *_aSegmented;
+ IBOutlet NSComboBox *_aComboBox;
}
-- (NSWindow *)otherWindow;
-- (NSWindow *)anotherWindow;
-- (NSMenu *)otherMenu;
-- (NSTextField *)bindingsTextField;
-- (NSSearchField *)bindingsSearchField;
+
+@property (nonatomic, retain) NSWindow *anotherWindow;
+@property (nonatomic, retain) NSMenu *otherMenu;
+
+// Window Items
+@property (nonatomic, retain) NSTextField *bindingsTextField;
+@property (nonatomic, retain) NSSearchField *bindingsSearchField;
+@property (nonatomic, retain) NSToolbarItem *toolbarItem1;
+@property (nonatomic, retain) NSToolbarItem *toolbarItem2;
+@property (nonatomic, retain) NSTabViewItem *tabViewItem1;
+@property (nonatomic, retain) NSTabViewItem *tabViewItem2;
+@property (nonatomic, retain) NSButton *button1;
+@property (nonatomic, retain) NSButton *button2;
+@property (nonatomic, retain) NSTextField *textField1;
+@property (nonatomic, retain) NSTextField *textField2;
+@property (nonatomic, retain) NSButton *checkbox1;
+@property (nonatomic, retain) NSButton *checkbox2;
+@property (nonatomic, retain) NSMenuItem *menuItem1;
+@property (nonatomic, retain) NSMenuItem *menuItem2;
+@property (nonatomic, retain) NSMenuItem *menuItem3;
+@property (nonatomic, retain) NSButtonCell *radio1;
+@property (nonatomic, retain) NSButtonCell *radio2;
+
+// AnotherWindow Items
+@property (nonatomic, retain) NSBox *aBox;
+@property (nonatomic, retain) NSButton *aButton1;
+@property (nonatomic, retain) NSButton *aButton2;
+@property (nonatomic, retain) NSButton *aCheckbox1;
+@property (nonatomic, retain) NSButton *aCheckbox2;
+@property (nonatomic, retain) NSButtonCell *aRadio1;
+@property (nonatomic, retain) NSButtonCell *aRadio2;
+@property (nonatomic, retain) NSTextField *aTextField1;
+@property (nonatomic, retain) NSTextField *aTextField2;
+@property (nonatomic, retain) NSSegmentedControl *aSegmented;
+@property (nonatomic, retain) NSComboBox *aComboBox;
+
@end
-#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
@interface GTMUILocalizerTestViewController : NSViewController {
- IBOutlet NSView *otherView_;
+ IBOutlet NSView *_otherView;
+ IBOutlet NSButton *_otherButton;
+ IBOutlet NSButton *_viewButton;
+ IBOutlet NSTextField *_pollyTextField;
}
-- (NSView *)otherView;
+
+@property (nonatomic, retain) NSView *otherView;
+@property (nonatomic, retain) NSButton *otherButton;
+@property (nonatomic, retain) NSButton *viewButton;
+@property (nonatomic, retain) NSTextField *pollyTextField;
@end
-#endif // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
-
diff --git a/AppKit/GTMUILocalizerTest.m b/AppKit/GTMUILocalizerTest.m
index bc29099..451bd83 100644
--- a/AppKit/GTMUILocalizerTest.m
+++ b/AppKit/GTMUILocalizerTest.m
@@ -6,9 +6,9 @@
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy
// of the License at
-//
+//
// http://www.apache.org/licenses/LICENSE-2.0
-//
+//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
@@ -19,7 +19,6 @@
#import "GTMSenTestCase.h"
#import "GTMUILocalizerTest.h"
-#import "GTMNSObject+UnitTesting.h"
#import "GTMUILocalizer.h"
@interface GTMUILocalizerTest : GTMTestCase
@@ -29,125 +28,193 @@
// Utility method to verify that all the options for |binding| on |object| have
// been localized.
- (void)verifyBinding:(NSString *)binding forObject:(id)object {
- NSDictionary *bindingInfo
+ NSDictionary *bindingInfo
= [object infoForBinding:binding];
- STAssertNotNil(bindingInfo,
- @"Can't get binding info for %@ from %@.\nExposed bindings: %@",
- binding, object, [object exposedBindings]);
+ XCTAssertNotNil(bindingInfo,
+ @"Can't get binding info for %@ from %@.\nExposed bindings: %@",
+ binding, object, [object exposedBindings]);
NSDictionary *bindingOptions = [bindingInfo objectForKey:NSOptionsKey];
- STAssertNotNil(bindingOptions, nil);
+ XCTAssertNotNil(bindingOptions);
NSString *key = nil;
GTM_FOREACH_KEY(key, bindingOptions) {
id value = [bindingOptions objectForKey:key];
if ([value isKindOfClass:[NSString class]]) {
- STAssertFalse([value hasPrefix:@"^"],
- @"Binding option %@ not localized. Has value %@.",
- key, value);
+ XCTAssertFalse([value hasPrefix:@"^"],
+ @"Binding option %@ not localized. Has value %@.",
+ key, value);
}
- }
+ }
}
- (void)testWindowLocalization {
- GTMUILocalizerTestWindowController *controller
+ GTMUILocalizerTestWindowController *controller
= [[GTMUILocalizerTestWindowController alloc] init];
- NSWindow *window = [controller window];
- STAssertNotNil(window, nil);
- GTMAssertObjectStateEqualToStateNamed(window,
- @"GTMUILocalizerWindow1State", nil);
-
+
+ // Window automatically localized on load
+ XCTAssertEqualObjects(controller.window.title, @"Window");
+ XCTAssertEqualObjects(controller.tabViewItem1.label, @"Localized Tab");
+ XCTAssertEqualObjects(controller.tabViewItem2.label, @"^Tab2");
+ XCTAssertEqualObjects(controller.toolbarItem1.label, @"Localized Toolbar Item Label");
+ XCTAssertEqualObjects(controller.toolbarItem1.paletteLabel,
+ @"Localized Toolbar Item Palette Label");
+ XCTAssertEqualObjects(controller.toolbarItem2.label, @"ToolbarItemLabel");
+ XCTAssertEqualObjects(controller.toolbarItem2.paletteLabel, @"ToolbarItemPaletteLabel");
+ XCTAssertEqualObjects(controller.button1.title, @"Localized Button");
+ XCTAssertEqualObjects(controller.button2.title, @"^Button2");
+ XCTAssertEqualObjects(controller.textField1.stringValue, @"Localized Label");
+ XCTAssertEqualObjects(controller.textField2.stringValue, @"^Label2");
+ XCTAssertEqualObjects(controller.button1.title, @"Localized Button");
+ XCTAssertEqualObjects(controller.button2.title, @"^Button2");
+ XCTAssertEqualObjects(controller.checkbox1.title, @"Localized Checkbox 1");
+ XCTAssertEqualObjects(controller.checkbox2.title, @"^Checkbox 2");
+ XCTAssertEqualObjects(controller.menuItem1.title, @"Localized Item 1");
+ XCTAssertEqualObjects(controller.menuItem2.title, @"Localized Item 2");
+ XCTAssertEqualObjects(controller.menuItem3.title, @"^Item 3");
+ XCTAssertEqualObjects(controller.radio1.title, @"Localized Radio 1");
+ XCTAssertEqualObjects(controller.radio2.title, @"Localized Radio 2");
+
+ // Another Window Before Localization
+ XCTAssertEqualObjects(controller.anotherWindow.title, @"^WindowTest");
+ XCTAssertEqualObjects(controller.aBox.title, @"^Box");
+ XCTAssertEqualObjects(controller.aButton1.title, @"^Button1");
+ XCTAssertEqualObjects(controller.aButton2.title, @"^Button2");
+ XCTAssertEqualObjects(controller.aCheckbox1.title, @"^Checkbox 1");
+ XCTAssertEqualObjects(controller.aCheckbox2.title, @"^Checkbox 2");
+ XCTAssertEqualObjects(controller.aRadio1.title, @"^Radio 1");
+ XCTAssertEqualObjects(controller.aRadio2.title, @"^Radio 2");
+ XCTAssertEqualObjects(controller.aTextField1.stringValue, @"^Label1");
+ XCTAssertEqualObjects(controller.aTextField2.stringValue, @"^Label2");
+ NSSegmentedControl *segmented = controller.aSegmented;
+ XCTAssertEqualObjects([segmented labelForSegment:0], @"^Seg1");
+ XCTAssertEqualObjects([segmented labelForSegment:1], @"^Seg2");
+ XCTAssertEqualObjects([segmented labelForSegment:2], @"^Seg3");
+ NSComboBox *comboBox = controller.aComboBox;
+ XCTAssertEqualObjects(comboBox.stringValue, @"^Label1");
+ XCTAssertEqualObjects(comboBox.placeholderString, @"^Placeholder1");
+ NSArray *objects = comboBox.objectValues;
+ NSArray *expectedObjects = [NSArray arrayWithObjects:
+ @"^Choice1", @"^Choice2", @"^Choice3", @"^Choice4", @"^Choice5", nil];
+ XCTAssertEqualObjects(objects, expectedObjects);
+
NSBundle *bundle = [NSBundle bundleForClass:[self class]];
GTMUILocalizer *localizer = [[GTMUILocalizer alloc] initWithBundle:bundle];
- window = [controller otherWindow];
- STAssertNotNil(window, nil);
- [localizer localizeObject:window recursively:YES];
- GTMAssertObjectStateEqualToStateNamed(window,
- @"GTMUILocalizerWindow2State", nil);
- window = [controller anotherWindow];
- STAssertNotNil(window, nil);
- [localizer localizeObject:window recursively:YES];
- GTMAssertObjectStateEqualToStateNamed(window,
- @"GTMUILocalizerWindow3State", nil);
- NSMenu *menu = [controller otherMenu];
- STAssertNotNil(menu, nil);
+ [localizer localizeObject:controller.anotherWindow recursively:YES];
+
+ XCTAssertEqualObjects(controller.anotherWindow.title, @"Localized Window");
+ XCTAssertEqualObjects(controller.aBox.title, @"Localized Box");
+ XCTAssertEqualObjects(controller.aButton1.title, @"Localized Button");
+ XCTAssertEqualObjects(controller.aButton2.title, @"^Button2");
+ XCTAssertEqualObjects(controller.aCheckbox1.title, @"Localized Checkbox 1");
+ XCTAssertEqualObjects(controller.aCheckbox2.title, @"^Checkbox 2");
+ XCTAssertEqualObjects(controller.aRadio1.title, @"Localized Radio 1");
+ XCTAssertEqualObjects(controller.aRadio2.title, @"Localized Radio 2");
+ XCTAssertEqualObjects(controller.aTextField1.stringValue, @"Localized Label");
+ XCTAssertEqualObjects(controller.aTextField2.stringValue, @"^Label2");
+ XCTAssertEqualObjects([segmented labelForSegment:0], @"Localized Segment 1");
+ XCTAssertEqualObjects([segmented labelForSegment:1], @"Localized Segment 2");
+ XCTAssertEqualObjects([segmented labelForSegment:2], @"^Seg3");
+ XCTAssertEqualObjects(comboBox.stringValue, @"Localized Label");
+ XCTAssertEqualObjects(comboBox.placeholderString, @"Localized Placeholder");
+ objects = comboBox.objectValues;
+ expectedObjects = [NSArray arrayWithObjects:
+ @"Localized Choice 1", @"Localized Choice 2", @"Localized Choice 3",
+ @"^Choice4", @"^Choice5", nil];
+ XCTAssertEqualObjects(objects, expectedObjects);
+
+ NSMenu *menu = controller.otherMenu;
+ XCTAssertNotNil(menu);
[localizer localizeObject:menu recursively:YES];
- GTMAssertObjectStateEqualToStateNamed(menu,
- @"GTMUILocalizerMenuState", nil);
-
+ XCTAssertEqualObjects(menu.title, @"Localized Menu");
+ NSMenuItem *item = [menu itemAtIndex:0];
+ XCTAssertEqualObjects(item.title, @"Localized Menu Item");
+
+
// Test binding localization.
- NSTextField *textField = [controller bindingsTextField];
- STAssertNotNil(textField, nil);
- NSString *displayPatternValue1Binding
- = [NSString stringWithFormat:@"%@1", NSDisplayPatternValueBinding];
+ NSTextField *textField = controller.bindingsTextField;
+ XCTAssertNotNil(textField);
+ NSString *displayPatternValue1Binding
+ = [NSString stringWithFormat:@"%@1", NSDisplayPatternValueBinding];
[self verifyBinding:displayPatternValue1Binding forObject:textField];
-
- NSSearchField *searchField = [controller bindingsSearchField];
- STAssertNotNil(searchField, nil);
+
+ NSSearchField *searchField = controller.bindingsSearchField;
+ XCTAssertNotNil(searchField);
[self verifyBinding:NSPredicateBinding forObject:searchField];
-
+
[localizer release];
[controller release];
}
-#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
- (void)testViewLocalization {
- GTMUILocalizerTestViewController *controller
- = [[GTMUILocalizerTestViewController alloc] init];
- NSView *view = [controller view];
- STAssertNotNil(view, nil);
- GTMAssertObjectStateEqualToStateNamed(view,
- @"GTMUILocalizerView1State", nil);
-
NSBundle *bundle = [NSBundle bundleForClass:[self class]];
GTMUILocalizer *localizer = [[GTMUILocalizer alloc] initWithBundle:bundle];
- view = [controller otherView];
- STAssertNotNil(view, nil);
- [localizer localizeObject:view recursively:YES];
- GTMAssertObjectStateEqualToStateNamed(view, @"GTMUILocalizerView2State", nil);
- [localizer release];
+ XCTAssertNotNil(localizer);
+
+ GTMUILocalizerTestViewController *controller
+ = [[GTMUILocalizerTestViewController alloc] init];
+ NSView *view = controller.view;
+ XCTAssertNotNil(view);
+ XCTAssertEqualObjects(controller.viewButton.title, @"Localized Button");
+ XCTAssertEqualObjects(controller.pollyTextField.stringValue, @"^Polly want a caret?");
+
+ // We don't expect otherView to be localized.
+ view = controller.otherView;
+ XCTAssertNotNil(view);
+ XCTAssertEqualObjects(controller.otherButton.title, @"^Button");
+
[controller release];
}
-#endif // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
@end
@implementation GTMUILocalizerTestWindowController
-- (id)init {
-#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
- return [self initWithWindowNibName:@"GTMUILocalizerTestWindow"];
-#else
- return [self initWithWindowNibName:@"GTMUILocalizerTestWindow_10_4"];
-#endif // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
-}
-- (NSWindow *)otherWindow {
- return otherWindow_;
-}
+@synthesize anotherWindow = _anotherWindow;
+@synthesize otherMenu = _otherMenu;
-- (NSWindow *)anotherWindow {
- return anotherWindow_;
-}
+// Window Items
+@synthesize bindingsTextField = _bindingsTextField;
+@synthesize bindingsSearchField = _bindingsSearchField;
+@synthesize toolbarItem1 = _toolbarItem1;
+@synthesize toolbarItem2 = _toolbarItem2;
+@synthesize tabViewItem1 = _tabViewItem1;
+@synthesize tabViewItem2 = _tabViewItem2;
+@synthesize button1 = _button1;
+@synthesize button2 = _button2;
+@synthesize textField1 = _textField1;
+@synthesize textField2 = _textField2;
+@synthesize checkbox1 = _checkbox1;
+@synthesize checkbox2 = _checkbox2;
+@synthesize menuItem1 = _menuItem1;
+@synthesize menuItem2 = _menuItem2;
+@synthesize menuItem3 = _menuItem3;
+@synthesize radio1 = _radio1;
+@synthesize radio2 = _radio2;
-- (NSMenu *)otherMenu {
- return otherMenu_;
-}
+// Another Window Items
+@synthesize aBox = _aBox;
+@synthesize aButton1 = _aButton1;
+@synthesize aButton2 = _aButton2;
+@synthesize aCheckbox1 = _aCheckbox1;
+@synthesize aCheckbox2 = _aCheckbox2;
+@synthesize aRadio1 = _aRadio1;
+@synthesize aRadio2 = _aRadio2;
+@synthesize aTextField1 = _aTextField1;
+@synthesize aTextField2 = _aTextField2;
+@synthesize aSegmented = _aSegmented;
+@synthesize aComboBox = _aComboBox;
-- (NSTextField *)bindingsTextField {
- return bindingsTextField_;
-}
-
-- (NSSearchField *)bindingsSearchField {
- return bindingsSearchField_;
+- (id)init {
+ return [self initWithWindowNibName:@"GTMUILocalizerTestWindow"];
}
@end
-#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
@implementation GTMUILocalizerTestViewController
+@synthesize otherView = _otherView;
+@synthesize otherButton = _otherButton;
+@synthesize viewButton = _viewButton;
+@synthesize pollyTextField = _pollyTextField;
+
- (id)init {
NSBundle *bundle = [NSBundle bundleForClass:[self class]];
return [self initWithNibName:@"GTMUILocalizerTestView" bundle:bundle];
}
-
-- (NSView *)otherView {
- return otherView_;
-}
@end
-#endif
diff --git a/AppKit/GTMUILocalizerTestView.xib b/AppKit/GTMUILocalizerTestView.xib
index d1a9126..7ecb5c5 100644
--- a/AppKit/GTMUILocalizerTestView.xib
+++ b/AppKit/GTMUILocalizerTestView.xib
@@ -1,481 +1,63 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.03">
- <data>
- <int key="IBDocument.SystemTarget">1050</int>
- <string key="IBDocument.SystemVersion">9G55</string>
- <string key="IBDocument.InterfaceBuilderVersion">677</string>
- <string key="IBDocument.AppKitVersion">949.43</string>
- <string key="IBDocument.HIToolboxVersion">353.00</string>
- <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="1"/>
- <integer value="3"/>
- </object>
- <object class="NSArray" key="IBDocument.PluginDependencies">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- </object>
- <object class="NSMutableDictionary" key="IBDocument.Metadata">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <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="NSCustomObject" id="1001">
- <string key="NSClassName">GTMUILocalizerTestViewController</string>
- </object>
- <object class="NSCustomObject" id="1003">
- <string key="NSClassName">FirstResponder</string>
- </object>
- <object class="NSCustomObject" id="1004">
- <string key="NSClassName">NSApplication</string>
- </object>
- <object class="NSCustomView" id="1005">
- <reference key="NSNextResponder"/>
- <int key="NSvFlags">268</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSButton" id="68586906">
- <reference key="NSNextResponder" ref="1005"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{179, 180}, {96, 32}}</string>
- <reference key="NSSuperview" ref="1005"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="53479329">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">134217728</int>
- <string key="NSContents">^Button</string>
- <object class="NSFont" key="NSSupport" id="887836340">
- <string key="NSName">LucidaGrande</string>
- <double key="NSSize">1.300000e+01</double>
- <int key="NSfFlags">1044</int>
- </object>
- <reference key="NSControlView" ref="68586906"/>
- <int key="NSButtonFlags">-2038284033</int>
- <int key="NSButtonFlags2">129</int>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- <object class="NSTextField" id="326674882">
- <reference key="NSNextResponder" ref="1005"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{295, 132}, {129, 17}}</string>
- <reference key="NSSuperview" ref="1005"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="1000174622">
- <int key="NSCellFlags">68288064</int>
- <int key="NSCellFlags2">272630784</int>
- <string key="NSContents">^Polly want a caret?</string>
- <reference key="NSSupport" ref="887836340"/>
- <reference key="NSControlView" ref="326674882"/>
- <object class="NSColor" key="NSBackgroundColor">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">controlColor</string>
- <object class="NSColor" key="NSColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC42NjY2NjY2OQA</bytes>
- </object>
- </object>
- <object class="NSColor" key="NSTextColor">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">controlTextColor</string>
- <object class="NSColor" key="NSColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MAA</bytes>
- </object>
- </object>
- </object>
- </object>
- </object>
- <string key="NSFrameSize">{480, 272}</string>
- <reference key="NSSuperview"/>
- <string key="NSClassName">NSView</string>
- </object>
- <object class="NSCustomView" id="1006142900">
- <reference key="NSNextResponder"/>
- <int key="NSvFlags">268</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSButton" id="707802764">
- <reference key="NSNextResponder" ref="1006142900"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{48, 35}, {96, 32}}</string>
- <reference key="NSSuperview" ref="1006142900"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="1059575151">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">134217728</int>
- <string key="NSContents">^Button</string>
- <reference key="NSSupport" ref="887836340"/>
- <reference key="NSControlView" ref="707802764"/>
- <int key="NSButtonFlags">-2038284033</int>
- <int key="NSButtonFlags2">129</int>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- </object>
- <string key="NSFrameSize">{163, 96}</string>
- <reference key="NSSuperview"/>
- <string key="NSClassName">NSView</string>
- </object>
- <object class="NSCustomObject" id="10941456">
- <string key="NSClassName">GTMUILocalizer</string>
- </object>
- </object>
- <object class="IBObjectContainer" key="IBDocument.Objects">
- <object class="NSMutableArray" key="connectionRecords">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">view</string>
- <reference key="source" ref="1001"/>
- <reference key="destination" ref="1005"/>
- </object>
- <int key="connectionID">11</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">otherView_</string>
- <reference key="source" ref="1001"/>
- <reference key="destination" ref="1006142900"/>
- </object>
- <int key="connectionID">12</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">owner_</string>
- <reference key="source" ref="10941456"/>
- <reference key="destination" ref="1001"/>
- </object>
- <int key="connectionID">14</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>
- <object class="NSArray" key="object" id="1002">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <reference key="children" ref="1000"/>
- <nil key="parent"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-2</int>
- <reference key="object" ref="1001"/>
- <reference key="parent" ref="1002"/>
- <string type="base64-UTF8" key="objectName">RmlsZSdzIE93bmVyA</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-1</int>
- <reference key="object" ref="1003"/>
- <reference key="parent" ref="1002"/>
- <string key="objectName">First Responder</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-3</int>
- <reference key="object" ref="1004"/>
- <reference key="parent" ref="1002"/>
- <string key="objectName">Application</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">1</int>
- <reference key="object" ref="1005"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="68586906"/>
- <reference ref="326674882"/>
- </object>
- <reference key="parent" ref="1002"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">3</int>
- <reference key="object" ref="1006142900"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="707802764"/>
- </object>
- <reference key="parent" ref="1002"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">5</int>
- <reference key="object" ref="707802764"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1059575151"/>
- </object>
- <reference key="parent" ref="1006142900"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">6</int>
- <reference key="object" ref="1059575151"/>
- <reference key="parent" ref="707802764"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">7</int>
- <reference key="object" ref="68586906"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="53479329"/>
- </object>
- <reference key="parent" ref="1005"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">8</int>
- <reference key="object" ref="53479329"/>
- <reference key="parent" ref="68586906"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">13</int>
- <reference key="object" ref="10941456"/>
- <reference key="parent" ref="1002"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">15</int>
- <reference key="object" ref="326674882"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1000174622"/>
- </object>
- <reference key="parent" ref="1005"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">16</int>
- <reference key="object" ref="1000174622"/>
- <reference key="parent" ref="326674882"/>
- </object>
- </object>
- </object>
- <object class="NSMutableDictionary" key="flattenedProperties">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMutableArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>-1.IBPluginDependency</string>
- <string>-2.IBPluginDependency</string>
- <string>-3.IBPluginDependency</string>
- <string>1.IBEditorWindowLastContentRect</string>
- <string>1.IBPluginDependency</string>
- <string>1.WindowOrigin</string>
- <string>1.editorWindowContentRectSynchronizationRect</string>
- <string>13.IBPluginDependency</string>
- <string>15.IBPluginDependency</string>
- <string>16.IBPluginDependency</string>
- <string>3.IBEditorWindowLastContentRect</string>
- <string>3.IBPluginDependency</string>
- <string>5.IBAttributePlaceholdersKey</string>
- <string>5.IBPluginDependency</string>
- <string>6.IBPluginDependency</string>
- <string>7.IBPluginDependency</string>
- <string>8.IBPluginDependency</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{180, 852}, {480, 272}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{628, 654}</string>
- <string>{{357, 416}, {480, 272}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{715, 1101}, {163, 96}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <object class="NSMutableDictionary">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMutableArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>AccessibilityDescription</string>
- <string>AccessibilityHelp</string>
- <string>ToolTip</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBAccessibilityAttribute">
- <string key="name">AccessibilityDescription</string>
- <reference key="object" ref="707802764"/>
- <string key="accessibilityValue">^AccessibilityDescription</string>
- </object>
- <object class="IBAccessibilityAttribute">
- <string key="name">AccessibilityHelp</string>
- <reference key="object" ref="707802764"/>
- <string key="accessibilityValue">^AccessibilityHelp</string>
- </object>
- <object class="IBToolTipAttribute">
- <string key="name">ToolTip</string>
- <reference key="object" ref="707802764"/>
- <string key="toolTip">^ToolTip</string>
- </object>
- </object>
- </object>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- </object>
- </object>
- <object class="NSMutableDictionary" key="unlocalizedProperties">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <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>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <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">GTMUILocalizer</string>
- <string key="superclassName">NSObject</string>
- <object class="NSMutableDictionary" key="outlets">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMutableArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>otherObjectToLocalize_</string>
- <string>owner_</string>
- <string>yetAnotherObjectToLocalize_</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>id</string>
- <string>id</string>
- <string>id</string>
- </object>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMUILocalizer.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">GTMUILocalizerTestViewController</string>
- <string key="superclassName">NSViewController</string>
- <object class="NSMutableDictionary" key="outlets">
- <string key="NS.key.0">otherView_</string>
- <string key="NS.object.0">NSView</string>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMUILocalizerTest.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="81743917">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMAppKit+UnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSCell</string>
- <reference key="sourceIdentifier" ref="81743917"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSControl</string>
- <reference key="sourceIdentifier" ref="81743917"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSMenu</string>
- <reference key="sourceIdentifier" ref="81743917"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMCarbonEvent.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMDelegatingTableColumn.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Foundation/GTMHTTPServer.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Foundation/GTMNSAppleEventDescriptor+Foundation.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Foundation/GTMNSObject+KeyValueObserving.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMCALayer+UnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMNSObject+BindingUnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMNSObject+UnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSTextField</string>
- <reference key="sourceIdentifier" ref="81743917"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <reference key="sourceIdentifier" ref="81743917"/>
- </object>
- </object>
- </object>
- <int key="IBDocument.localizationMode">0</int>
- <string key="IBDocument.LastKnownRelativeProjectPath">../GTM.xcodeproj</string>
- <int key="IBDocument.defaultPropertyAccessControl">3</int>
- </data>
-</archive>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="11201" systemVersion="15G31" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
+ <dependencies>
+ <deployment identifier="macosx"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11201"/>
+ </dependencies>
+ <objects>
+ <customObject id="-2" userLabel="File's Owner" customClass="GTMUILocalizerTestViewController">
+ <connections>
+ <outlet property="_otherButton" destination="5" id="499-qg-5S4"/>
+ <outlet property="_otherView" destination="3" id="FnK-dp-Ic4"/>
+ <outlet property="_pollyTextField" destination="15" id="A8K-zU-ica"/>
+ <outlet property="_viewButton" destination="7" id="59C-rR-EcH"/>
+ <outlet property="view" destination="1" id="11"/>
+ </connections>
+ </customObject>
+ <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+ <customObject id="-3" userLabel="Application"/>
+ <customView id="1">
+ <rect key="frame" x="0.0" y="0.0" width="480" height="272"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <subviews>
+ <textField verticalHuggingPriority="750" id="15">
+ <rect key="frame" x="295" y="132" width="129" height="17"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="^Polly want a caret?" id="16">
+ <font key="font" metaFont="system"/>
+ <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ </textField>
+ <button verticalHuggingPriority="750" id="7">
+ <rect key="frame" x="179" y="180" width="96" height="32"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="push" title="^Button" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="8">
+ <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+ <font key="font" metaFont="system"/>
+ </buttonCell>
+ </button>
+ </subviews>
+ </customView>
+ <customView id="3">
+ <rect key="frame" x="0.0" y="0.0" width="163" height="96"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <subviews>
+ <button toolTip="^ToolTip" verticalHuggingPriority="750" id="5">
+ <rect key="frame" x="48" y="35" width="96" height="32"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="push" title="^Button" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="6">
+ <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+ <font key="font" metaFont="system"/>
+ </buttonCell>
+ <accessibility description="^AccessibilityDescription" help="^AccessibilityHelp"/>
+ </button>
+ </subviews>
+ </customView>
+ <customObject id="13" customClass="GTMUILocalizer">
+ <connections>
+ <outlet property="owner_" destination="-2" id="14"/>
+ </connections>
+ </customObject>
+ </objects>
+</document>
diff --git a/AppKit/GTMUILocalizerTestWindow.xib b/AppKit/GTMUILocalizerTestWindow.xib
index 8bb4172..c223b3b 100644
--- a/AppKit/GTMUILocalizerTestWindow.xib
+++ b/AppKit/GTMUILocalizerTestWindow.xib
@@ -1,3112 +1,400 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
- <data>
- <int key="IBDocument.SystemTarget">1050</int>
- <string key="IBDocument.SystemVersion">10K549</string>
- <string key="IBDocument.InterfaceBuilderVersion">851</string>
- <string key="IBDocument.AppKitVersion">1038.36</string>
- <string key="IBDocument.HIToolboxVersion">461.00</string>
- <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
- <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string key="NS.object.0">851</string>
- </object>
- <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="23"/>
- <integer value="52"/>
- <integer value="41"/>
- </object>
- <object class="NSArray" key="IBDocument.PluginDependencies">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</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="NSCustomObject" id="1001">
- <string key="NSClassName">GTMUILocalizerTestWindowController</string>
- </object>
- <object class="NSCustomObject" id="1003">
- <string key="NSClassName">FirstResponder</string>
- </object>
- <object class="NSCustomObject" id="1004">
- <string key="NSClassName">NSApplication</string>
- </object>
- <object class="NSWindowTemplate" id="1005">
- <int key="NSWindowStyleMask">15</int>
- <int key="NSWindowBacking">2</int>
- <string key="NSWindowRect">{{196, 240}, {480, 270}}</string>
- <int key="NSWTFlags">536870912</int>
- <string key="NSWindowTitle">Window</string>
- <string key="NSWindowClass">NSWindow</string>
- <object class="NSToolbar" key="NSViewClass" id="393184701">
- <object class="NSMutableString" key="NSToolbarIdentifier">
- <characters key="NS.bytes">13B554E3-53CB-4465-BDA3-4F9A8B406FD0</characters>
- </object>
- <nil key="NSToolbarDelegate"/>
- <bool key="NSToolbarPrefersToBeShown">YES</bool>
- <bool key="NSToolbarShowsBaselineSeparator">YES</bool>
- <bool key="NSToolbarAllowsUserCustomization">YES</bool>
- <bool key="NSToolbarAutosavesConfiguration">NO</bool>
- <int key="NSToolbarDisplayMode">1</int>
- <int key="NSToolbarSizeMode">1</int>
- <object class="NSMutableDictionary" key="NSToolbarIBIdentifiedItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>44682372-574A-40F6-8822-35F014DDDD4B</string>
- <string>927E93A7-3FD1-412D-9C0E-FB7F594FDEF2</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSToolbarItem" id="1052188774">
- <object class="NSMutableString" key="NSToolbarItemIdentifier">
- <characters key="NS.bytes">44682372-574A-40F6-8822-35F014DDDD4B</characters>
- </object>
- <string key="NSToolbarItemLabel">ToolbarItemLabel</string>
- <string key="NSToolbarItemPaletteLabel">ToolbarItemPaletteLabel</string>
- <string key="NSToolbarItemToolTip">ToolTip</string>
- <nil key="NSToolbarItemView"/>
- <object class="NSCustomResource" key="NSToolbarItemImage">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">NSUserAccounts</string>
- </object>
- <nil key="NSToolbarItemTarget"/>
- <nil key="NSToolbarItemAction"/>
- <string key="NSToolbarItemMinSize">{0, 0}</string>
- <string key="NSToolbarItemMaxSize">{0, 0}</string>
- <bool key="NSToolbarItemEnabled">YES</bool>
- <bool key="NSToolbarItemAutovalidates">YES</bool>
- <int key="NSToolbarItemTag">-1</int>
- <bool key="NSToolbarIsUserRemovable">YES</bool>
- <int key="NSToolbarItemVisibilityPriority">0</int>
- </object>
- <object class="NSToolbarItem" id="1041080587">
- <object class="NSMutableString" key="NSToolbarItemIdentifier">
- <characters key="NS.bytes">927E93A7-3FD1-412D-9C0E-FB7F594FDEF2</characters>
- </object>
- <string key="NSToolbarItemLabel">^ToolbarItemLabel</string>
- <string key="NSToolbarItemPaletteLabel">^ToolbarItemPaletteLabel</string>
- <string key="NSToolbarItemToolTip">^ToolTip</string>
- <nil key="NSToolbarItemView"/>
- <object class="NSCustomResource" key="NSToolbarItemImage">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">NSPreferencesGeneral</string>
- </object>
- <nil key="NSToolbarItemTarget"/>
- <nil key="NSToolbarItemAction"/>
- <string key="NSToolbarItemMinSize">{0, 0}</string>
- <string key="NSToolbarItemMaxSize">{0, 0}</string>
- <bool key="NSToolbarItemEnabled">YES</bool>
- <bool key="NSToolbarItemAutovalidates">YES</bool>
- <int key="NSToolbarItemTag">-1</int>
- <bool key="NSToolbarIsUserRemovable">YES</bool>
- <int key="NSToolbarItemVisibilityPriority">0</int>
- </object>
- </object>
- </object>
- <object class="NSArray" key="NSToolbarIBAllowedItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1041080587"/>
- <reference ref="1052188774"/>
- </object>
- <object class="NSMutableArray" key="NSToolbarIBDefaultItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1041080587"/>
- <reference ref="1052188774"/>
- </object>
- <object class="NSMutableArray" key="NSToolbarIBSelectableItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- </object>
- <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
- <object class="NSView" key="NSWindowView" id="1006">
- <reference key="NSNextResponder"/>
- <int key="NSvFlags">256</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSButton" id="934296854">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{30, 205}, {100, 32}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="768899742">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">134217728</int>
- <string key="NSContents">^Button1</string>
- <object class="NSFont" key="NSSupport" id="168773824">
- <string key="NSName">LucidaGrande</string>
- <double key="NSSize">13</double>
- <int key="NSfFlags">1044</int>
- </object>
- <reference key="NSControlView" ref="934296854"/>
- <int key="NSButtonFlags">-2038284033</int>
- <int key="NSButtonFlags2">129</int>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- <object class="NSButton" id="657027262">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{30, 173}, {100, 32}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="105732693">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">134217728</int>
- <string key="NSContents">^Button2</string>
- <reference key="NSSupport" ref="168773824"/>
- <reference key="NSControlView" ref="657027262"/>
- <int key="NSButtonFlags">-2038284033</int>
- <int key="NSButtonFlags2">129</int>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- <object class="NSTabView" id="1054080138">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">12</int>
- <string key="NSFrame">{{161, 115}, {177, 124}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <object class="NSMutableArray" key="NSTabViewItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSTabViewItem" id="567210703">
- <string key="NSIdentifier">1</string>
- <object class="NSView" key="NSView" id="837485648">
- <nil key="NSNextResponder"/>
- <int key="NSvFlags">256</int>
- <string key="NSFrame">{{10, 33}, {157, 78}}</string>
- </object>
- <string key="NSLabel">^Tab1</string>
- <object class="NSColor" key="NSColor" id="1000162704">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">controlColor</string>
- <object class="NSColor" key="NSColor" id="125228242">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
- </object>
- </object>
- <reference key="NSTabView" ref="1054080138"/>
- </object>
- <object class="NSTabViewItem" id="786693096">
- <string key="NSIdentifier">2</string>
- <object class="NSView" key="NSView" id="75519688">
- <reference key="NSNextResponder" ref="1054080138"/>
- <int key="NSvFlags">256</int>
- <string key="NSFrame">{{10, 33}, {157, 78}}</string>
- <reference key="NSSuperview" ref="1054080138"/>
- </object>
- <string key="NSLabel">^Tab2</string>
- <reference key="NSColor" ref="1000162704"/>
- <reference key="NSTabView" ref="1054080138"/>
- </object>
- </object>
- <reference key="NSSelectedTabViewItem" ref="786693096"/>
- <reference key="NSFont" ref="168773824"/>
- <int key="NSTvFlags">0</int>
- <bool key="NSAllowTruncatedLabels">YES</bool>
- <bool key="NSDrawsBackground">YES</bool>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="75519688"/>
- </object>
- </object>
- <object class="NSTextField" id="39833761">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{71, 61}, {74, 17}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="569396622">
- <int key="NSCellFlags">68288064</int>
- <int key="NSCellFlags2">272630784</int>
- <string key="NSContents">^Label1</string>
- <reference key="NSSupport" ref="168773824"/>
- <reference key="NSControlView" ref="39833761"/>
- <reference key="NSBackgroundColor" ref="1000162704"/>
- <object class="NSColor" key="NSTextColor" id="50010148">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">controlTextColor</string>
- <object class="NSColor" key="NSColor" id="720043000">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MAA</bytes>
- </object>
- </object>
- </object>
- </object>
- <object class="NSTextField" id="18987080">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{153, 66}, {72, 17}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="851209037">
- <int key="NSCellFlags">68288064</int>
- <int key="NSCellFlags2">272630784</int>
- <string key="NSContents">^Label2</string>
- <reference key="NSSupport" ref="168773824"/>
- <reference key="NSControlView" ref="18987080"/>
- <reference key="NSBackgroundColor" ref="1000162704"/>
- <reference key="NSTextColor" ref="50010148"/>
- </object>
- </object>
- <object class="NSPopUpButton" id="197597199">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{315, 67}, {100, 26}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSPopUpButtonCell" key="NSCell" id="1073502186">
- <int key="NSCellFlags">-2076049856</int>
- <int key="NSCellFlags2">2048</int>
- <reference key="NSSupport" ref="168773824"/>
- <reference key="NSControlView" ref="197597199"/>
- <int key="NSButtonFlags">109199615</int>
- <int key="NSButtonFlags2">129</int>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">400</int>
- <int key="NSPeriodicInterval">75</int>
- <object class="NSMenuItem" key="NSMenuItem" id="180141984">
- <reference key="NSMenu" ref="768660937"/>
- <string key="NSTitle">^Item 2</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <int key="NSState">1</int>
- <object class="NSCustomResource" key="NSOnImage" id="149491055">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">NSMenuCheckmark</string>
- </object>
- <object class="NSCustomResource" key="NSMixedImage" id="291068490">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">NSMenuMixedState</string>
- </object>
- <string key="NSAction">_popUpItemAction:</string>
- <reference key="NSTarget" ref="1073502186"/>
- </object>
- <bool key="NSMenuItemRespectAlignment">YES</bool>
- <object class="NSMenu" key="NSMenu" id="768660937">
- <string key="NSTitle">OtherViews</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="662787728">
- <reference key="NSMenu" ref="768660937"/>
- <string key="NSTitle">^Item 1</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="149491055"/>
- <reference key="NSMixedImage" ref="291068490"/>
- <string key="NSAction">_popUpItemAction:</string>
- <reference key="NSTarget" ref="1073502186"/>
- </object>
- <reference ref="180141984"/>
- </object>
- </object>
- <int key="NSSelectedIndex">1</int>
- <int key="NSPreferredEdge">1</int>
- <bool key="NSUsesItemFromMenu">YES</bool>
- <bool key="NSAltersState">YES</bool>
- <int key="NSArrowPosition">2</int>
- </object>
- </object>
- <object class="NSButton" id="739084402">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{154, 33}, {106, 18}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="450501437">
- <int key="NSCellFlags">-2080244224</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">^Checkbox 1</string>
- <reference key="NSSupport" ref="168773824"/>
- <reference key="NSControlView" ref="739084402"/>
- <int key="NSButtonFlags">1211912703</int>
- <int key="NSButtonFlags2">2</int>
- <object class="NSCustomResource" key="NSNormalImage" id="437083559">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">NSSwitch</string>
- </object>
- <object class="NSButtonImageSource" key="NSAlternateImage" id="634128218">
- <string key="NSImageName">NSSwitch</string>
- </object>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- <object class="NSButton" id="484232841">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{291, 33}, {106, 18}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="468013402">
- <int key="NSCellFlags">-2080244224</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">^Checkbox 2</string>
- <reference key="NSSupport" ref="168773824"/>
- <reference key="NSControlView" ref="484232841"/>
- <int key="NSButtonFlags">1211912703</int>
- <int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="437083559"/>
- <reference key="NSAlternateImage" ref="634128218"/>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- <object class="NSMatrix" id="413705031">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{351, 172}, {87, 38}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <bool key="NSEnabled">YES</bool>
- <int key="NSNumRows">2</int>
- <int key="NSNumCols">1</int>
- <object class="NSMutableArray" key="NSCells">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSButtonCell" id="232253570">
- <int key="NSCellFlags">-2080244224</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">^Radio 1</string>
- <reference key="NSSupport" ref="168773824"/>
- <reference key="NSControlView" ref="413705031"/>
- <int key="NSTag">1</int>
- <int key="NSButtonFlags">1211912703</int>
- <int key="NSButtonFlags2">0</int>
- <object class="NSButtonImageSource" key="NSAlternateImage" id="182487189">
- <string key="NSImageName">NSRadioButton</string>
- </object>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- <object class="NSButtonCell" id="310759369">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">^Radio 2</string>
- <reference key="NSSupport" ref="168773824"/>
- <reference key="NSControlView" ref="413705031"/>
- <int key="NSButtonFlags">1211912703</int>
- <int key="NSButtonFlags2">0</int>
- <object class="NSImage" key="NSNormalImage">
- <int key="NSImageFlags">549453824</int>
- <string key="NSSize">{18, 18}</string>
- <object class="NSMutableArray" key="NSReps">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="0"/>
- <object class="NSBitmapImageRep">
- <object class="NSData" key="NSTIFFRepresentation">
- <bytes key="NS.bytes">TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw
-IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/
-29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5
-dXV198PDw//8/Pz////////////////////////////U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAA
-AAAAAxEREUZqamrmtbW1/+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG
-AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z8/P/9fX1//Ly8v/u7u7/
-0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/
-7e3t/+3t7f/i4uL/zs7O/8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/
-5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMAAAADAAAALrCwsPrW1tb/
-3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAAD
-AAAALp2dnezg4OD/5eXl/+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns
-AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5+fn/9/f3//b29v/x8fH/
-6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4uLpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7/
-/v7+//v7+//19fX/8PDw/8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/
-///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAAAAAAAAAAAwAAABcAAABl
-YmJi3NLS0v3////////////////////////////////V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAA
-AAAAAAAAAAUAAAAfAAAAZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMAAACzAAAAnwAAAHcAAABD
-AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu
-AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgEAAAMAAAABABIAAAEB
-AAMAAAABABIAAAECAAMAAAAEAAAFxgEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES
-AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS
-AAMAAAABAAEAAAFTAAMAAAAEAAAFzodzAAcAAAwYAAAF1gAAAAAACAAIAAgACAABAAEAAQABAAAMGGFw
-cGwCAAAAbW50clJHQiBYWVogB9YABAADABMALAASYWNzcEFQUEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAPbWAAEAAAAA0y1hcHBsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAOclhZWgAAASwAAAAUZ1hZWgAAAUAAAAAUYlhZWgAAAVQAAAAUd3RwdAAAAWgAAAAUY2hhZAAA
-AXwAAAAsclRSQwAAAagAAAAOZ1RSQwAAAbgAAAAOYlRSQwAAAcgAAAAOdmNndAAAAdgAAAMSbmRpbgAA
-BOwAAAY+ZGVzYwAACywAAABkZHNjbQAAC5AAAAAubW1vZAAAC8AAAAAoY3BydAAAC+gAAAAtWFlaIAAA
-AAAAAF1KAAA0kQAACCVYWVogAAAAAAAAdCAAALRgAAAjPVhZWiAAAAAAAAAlbAAAFyoAAKfDWFlaIAAA
-AAAAAPNSAAEAAAABFs9zZjMyAAAAAAABDEIAAAXe///zJgAAB5IAAP2R///7ov///aMAAAPcAADAbGN1
-cnYAAAAAAAAAAQHNAABjdXJ2AAAAAAAAAAEBzQAAY3VydgAAAAAAAAABAc0AAHZjZ3QAAAAAAAAAAAAD
-AQAAAQACBAUGBwkKCw0ODxASExQWFxgaGxweHyAiIyQmJygpKywtLzAxMjM1Njc4OTs8PT5AQUJDREZH
-SElKS0xOT1BRUlNUVVZXWFlaW1xdXl9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gIGCg4SF
-hoeIiYqLjI2Oj5CRkpOUlZaXmJmam5ydnZ6foKGio6SlpqanqKmqq6ytra6vsLGysrO0tba3uLi5uru8
-vL2+v8DBwcLDxMXGxsfIycrKy8zNzs7P0NHS0tPU1dbW19jZ2drb3Nzd3t/g4eLi4+Tl5ufo6enq6+zt
-7u/w8fHy8/T19vf4+fr7/P3+/v8AAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR8gISIjJCUnKCkq
-Ky0uLzAxMzQ1Njc4OTo7PD0/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaWltcXV5fYGFiY2RlZmdo
-aWprbG1ub3BxcnN0dXZ3d3h5ent8fH1+f4CBgoKDhIWGh4iIiYqLjI2Oj5CRkpOUlJWWl5iZmpucnZ2e
-n6ChoqOkpaamp6ipqqusra6vsLCxsrO0tba3uLm5uru8vb6/wMHCw8TFx8jJysvMzc7P0NDR0tPU1dbX
-2Nna29ze3+Dh4uPk5ebn6err7O3u7/Hy8/T19vf5+vv8/f7/AAIDAwQFBgcICQoKCwwNDg8QERITFBUW
-FxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODg5Ojs8PT4+P0BBQkNDREVGR0hJSUpLTE1O
-Tk9QUVJSU1RVVVZXWFhZWltbXF1eXl9gYWFiY2RkZWZnZ2hpaWprbGxtbm5vcHFxcnNzdHV1dnd4eHl6
-ent8fH1+fn+AgYGCg4SEhYaHiImJiouMjY6Oj5CRkpOTlJWWl5iZmZqbnJ2en6ChoqOkpaanqKmqq6yt
-rq+xsrO0tba3uLq7vL2+wMHDxMbHycrMzs/R0tTW19nb3d7g4uTm6Ors7vDy9Pb4+vz+/wAAbmRpbgAA
-AAAAAAY2AACXGgAAVjoAAFPKAACJ3gAAJ8IAABaoAABQDQAAVDkAAiuFAAIZmQABeFEAAwEAAAIAAAAA
-AAEABgANABcAIwAxAEAAUgBlAHsAkwCrAMUA4gD/AR8BPwFhAYUBqgHQAfgCIAJLAncCpQLSAwIDMwNl
-A5gDzgQFBD0EdQSvBOsFKQVnBacF6AYqBm4GtQb8B0UHkgfkCDkIkAjnCT4JmAn0ClAKrQsLC2sLygwq
-DIwM8Q1XDcAOKA6SDv4PbA/bEE0QxBE7EbQSMRKwEzITuRREFNAVYBXxFocXHhfAGGIZBBmsGlQa+RuU
-HC4czh1yHhQeux9jIA0gvCFoIhkizyOJJEEk+SW6JnknOygFKMspkypiKzIsASzXLawuhy9gMD4xGzH8
-MtszvzSgNYY2cjdcOEw5OTorOxs8CD0EPfU+6z/nQOFB2ELUQ9VE00XcRttH5EjxSgBLCUwdTTFOUE9v
-UI9Rt1LdVAVVNlZsV6VY4FohW21ct135X09goGH0Y0tkqGYFZ19oxGova5ptCG54b/BxbnLsdG119Xd/
-eQh6knwqfcV/W4D4gpSEO4Xih4CJKorYjIqOOY/jkZuTWJUOlsyYiZpSnB6d4Z+soX+jWqUvpxOo+6rj
-rMuuwLC4sra0rra0uL+60LzfvwDBHcLdxLXGhchYyi7MCs3lz7rRmtOA1WPXR9kq2xPc/97s4M/iveSn
-5o3obupT7ELuLPAM8fLz0PW396H5f/tZ/T3//wAAAAEAAwALABYAJQA3AE0AZQCBAJ8AwQDlAQsBNQFh
-AZABwQH1AisCZAKfAtwDHANfA6MD6gQ0BH8EzQT1BR0FcAXEBhsGdAbPBy0HXAeMB+4IUgi4CSAJVAmK
-CfYKZArVC0cLgQu8DDIMqw0mDaIOIQ6hDyQPqRAvELgQ/RFDEc8SXRLuE4AUFRSrFUMV3RZ5FxcXthhY
-GPwZoRpIGvEbnBxJHPgdqB5bHw8fxSB9ITch8iKwJDAk8yW3Jn4nRigQKNwpqSp5K0osHCzxLccuoC95
-MFUxMzISMvMz1TS5NaA2hzdxOFw5STo4Oyg8Gj4DPvs/9EDuQepD6ETpRexG8Uf3SP9LFEwhTTBOQE9S
-UGZSklOrVMVV4Vb/WB5ZP1phW4Vcq13SXvthUmJ/Y69k4GYSZ0dofGm0au1tZG6ib+FxInJlc6l073Y2
-d396FXtjfLJ+A39VgKmB/4NWhK+GCYjCiiGLgYzjjkePrJESknuT5Ja8mCuZm5sMnH+d9J9qoOGiWqPV
-pVGmz6eOqE6pzqtRrNSuWq/gsWmy8rR+tgu5Kbq6vE294b93wQ7Cp8RBxd3He8kZyrrLisxbzf/Po9FK
-0vHUm9ZF1/HZn9tO3Cbc/96x4GTiGePQ5YjnQegf6Pzquex27jbv9/G583z0X/VC9wj40Pqa/GX+Mf//
-AAAAAQADAAsAJQA3AE0AZQCBAJ8AwQELATUBYQGQAcEB9QIrAmQCnwLcAxwDXwOjA+oENAR/BM0FHQVw
-BcQGGwZ0Bs8HLQeMB+4IUgi4CSAJign2CmQK1QtHC7wMMgyrDSYNog4hDqEPJA+pEC8QuBFDEl0S7hOA
-FBUUqxVDFnkXFxe2GFgY/BpIGvEbnBxJHPgdqB8PH8UgfSE3IfIjbyQwJPMltydGKBAo3Cp5K0osHC3H
-LqAveTEzMhIy8zS5NaA2hzhcOUk6ODwaPQ4+Az/0QO5C6EPoROlG8Uf3SglLFEwhTkBPUlF7UpJUxVXh
-Vv9ZP1phXKtd0mAlYVJjr2TgZhJofGm0au1tZG6ib+FxInJldO92Nnd/eMl6FXyyfgN/VYCpgf+Er4YJ
-h2WIwoohi4GOR4+skRKSe5PklVCWvJgrmZubDJx/nfSfaqDholqj1aVRps+oTqnOq1Gs1K2Xrlqv4LFp
-svK0frYLt5m5Kbnxurq8Tb3hv3fBDsHawqfEQcUPxd3He8hKyRnKusuKzFvN/87Rz6PQdtFK0vHTxtSb
-1kXXG9fx2MjZn9tO3Cbc/93Y3rHfiuBk4hni9ePQ5KzliOZk50HoH+j86drqueuX7HbtVu427xbv9/DX
-8bnymvN89F/1QvYl9wj37PjQ+bX6mvt//GX9S/4x//8AAGRlc2MAAAAAAAAACkNvbG9yIExDRAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAABtbHVjAAAAAAAAAAEAAAAMZW5VUwAAABIAAAAcAEMAbwBsAG8AcgAgAEwAQwBE
-AABtbW9kAAAAAAAABhAAAJxOAAAAAL5zkQAAAAAAAAAAAAAAAAAAAAAAdGV4dAAAAABDb3B5cmlnaHQg
-QXBwbGUgQ29tcHV0ZXIsIEluYy4sIDIwMDUAAAAAA</bytes>
- </object>
- </object>
- </object>
- </object>
- <object class="NSColor" key="NSColor" id="1027339248">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MCAwAA</bytes>
- </object>
- </object>
- <reference key="NSAlternateImage" ref="182487189"/>
- <int key="NSPeriodicDelay">400</int>
- <int key="NSPeriodicInterval">75</int>
- </object>
- </object>
- <string key="NSCellSize">{87, 18}</string>
- <string key="NSIntercellSpacing">{4, 2}</string>
- <int key="NSMatrixFlags">1151868928</int>
- <string key="NSCellClass">NSActionCell</string>
- <object class="NSButtonCell" key="NSProtoCell" id="819072791">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">Radio</string>
- <reference key="NSSupport" ref="168773824"/>
- <int key="NSButtonFlags">1211912703</int>
- <int key="NSButtonFlags2">0</int>
- <object class="NSImage" key="NSNormalImage">
- <int key="NSImageFlags">549453824</int>
- <string key="NSSize">{18, 18}</string>
- <object class="NSMutableArray" key="NSReps">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="0"/>
- <object class="NSBitmapImageRep">
- <object class="NSData" key="NSTIFFRepresentation">
- <bytes key="NS.bytes">TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw
-IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/
-29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5
-dXV198PDw//8/Pz////////////////////////////U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAA
-AAAAAxEREUZqamrmtbW1/+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG
-AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z8/P/9fX1//Ly8v/u7u7/
-0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/
-7e3t/+3t7f/i4uL/zs7O/8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/
-5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMAAAADAAAALrCwsPrW1tb/
-3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAAD
-AAAALp2dnezg4OD/5eXl/+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns
-AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5+fn/9/f3//b29v/x8fH/
-6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4uLpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7/
-/v7+//v7+//19fX/8PDw/8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/
-///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAAAAAAAAAAAwAAABcAAABl
-YmJi3NLS0v3////////////////////////////////V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAA
-AAAAAAAAAAUAAAAfAAAAZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMAAACzAAAAnwAAAHcAAABD
-AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu
-AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQEAAAMAAAABABIAAAEB
-AAMAAAABABIAAAECAAMAAAAEAAAFugEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES
-AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS
-AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
- </object>
- </object>
- </object>
- </object>
- <reference key="NSColor" ref="1027339248"/>
- </object>
- <reference key="NSAlternateImage" ref="182487189"/>
- <int key="NSPeriodicDelay">400</int>
- <int key="NSPeriodicInterval">75</int>
- </object>
- <reference key="NSSelectedCell" ref="232253570"/>
- <reference key="NSBackgroundColor" ref="1000162704"/>
- <object class="NSColor" key="NSCellBackgroundColor" id="695371698">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MQA</bytes>
- </object>
- <reference key="NSFont" ref="168773824"/>
- </object>
- <object class="NSBox" id="323309615">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">36</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSView" id="257999957">
- <reference key="NSNextResponder" ref="323309615"/>
- <int key="NSvFlags">256</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSTextField" id="583665016">
- <reference key="NSNextResponder" ref="257999957"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{18, 44}, {96, 22}}</string>
- <reference key="NSSuperview" ref="257999957"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="601271137">
- <int key="NSCellFlags">-1804468671</int>
- <int key="NSCellFlags2">272630784</int>
- <string key="NSContents"/>
- <reference key="NSSupport" ref="168773824"/>
- <reference key="NSControlView" ref="583665016"/>
- <bool key="NSDrawsBackground">YES</bool>
- <object class="NSColor" key="NSBackgroundColor" id="854948635">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">textBackgroundColor</string>
- <reference key="NSColor" ref="695371698"/>
- </object>
- <object class="NSColor" key="NSTextColor">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">textColor</string>
- <reference key="NSColor" ref="720043000"/>
- </object>
- </object>
- </object>
- <object class="NSSearchField" id="207474363">
- <reference key="NSNextResponder" ref="257999957"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{18, 14}, {96, 22}}</string>
- <reference key="NSSuperview" ref="257999957"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSSearchFieldCell" key="NSCell" id="926559351">
- <int key="NSCellFlags">343014976</int>
- <int key="NSCellFlags2">268436480</int>
- <string key="NSContents"/>
- <reference key="NSSupport" ref="168773824"/>
- <reference key="NSControlView" ref="207474363"/>
- <bool key="NSDrawsBackground">YES</bool>
- <int key="NSTextBezelStyle">1</int>
- <reference key="NSBackgroundColor" ref="854948635"/>
- <reference key="NSTextColor" ref="50010148"/>
- <object class="NSButtonCell" key="NSSearchButtonCell">
- <int key="NSCellFlags">130560</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">search</string>
- <reference key="NSControlView" ref="207474363"/>
- <string key="NSAction">_searchFieldSearch:</string>
- <reference key="NSTarget" ref="926559351"/>
- <int key="NSButtonFlags">138690815</int>
- <int key="NSButtonFlags2">0</int>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">400</int>
- <int key="NSPeriodicInterval">75</int>
- </object>
- <object class="NSButtonCell" key="NSCancelButtonCell">
- <int key="NSCellFlags">130560</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">clear</string>
- <object class="NSMutableArray" key="NSAccessibilityOverriddenAttributes">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMutableDictionary">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>AXDescription</string>
- <string>NSAccessibilityEncodedAttributesValueType</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>cancel</string>
- <integer value="1"/>
- </object>
- </object>
- </object>
- <reference key="NSControlView" ref="207474363"/>
- <string key="NSAction">_searchFieldCancel:</string>
- <reference key="NSTarget" ref="926559351"/>
- <int key="NSButtonFlags">138690815</int>
- <int key="NSButtonFlags2">0</int>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">400</int>
- <int key="NSPeriodicInterval">75</int>
- </object>
- <int key="NSMaximumRecents">255</int>
- </object>
- </object>
- </object>
- <string key="NSFrame">{{1, 1}, {132, 76}}</string>
- <reference key="NSSuperview" ref="323309615"/>
- </object>
- </object>
- <string key="NSFrame">{{13, 80}, {134, 92}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <string key="NSOffsets">{0, 0}</string>
- <object class="NSTextFieldCell" key="NSTitleCell">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">Bindings Tests</string>
- <object class="NSFont" key="NSSupport" id="26">
- <string key="NSName">LucidaGrande</string>
- <double key="NSSize">11</double>
- <int key="NSfFlags">3100</int>
- </object>
- <reference key="NSBackgroundColor" ref="854948635"/>
- <object class="NSColor" key="NSTextColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MCAwLjgwMDAwMDAxAA</bytes>
- </object>
- </object>
- <reference key="NSContentView" ref="257999957"/>
- <int key="NSBorderType">1</int>
- <int key="NSBoxType">0</int>
- <int key="NSTitlePosition">2</int>
- <bool key="NSTransparent">NO</bool>
- </object>
- </object>
- <string key="NSFrameSize">{480, 270}</string>
- <reference key="NSSuperview"/>
- </object>
- <string key="NSScreenRect">{{0, 0}, {1680, 1028}}</string>
- <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
- </object>
- <object class="NSWindowTemplate" id="655734033">
- <int key="NSWindowStyleMask">15</int>
- <int key="NSWindowBacking">2</int>
- <string key="NSWindowRect">{{196, 240}, {480, 270}}</string>
- <int key="NSWTFlags">603979776</int>
- <string key="NSWindowTitle">^WindowTest</string>
- <string key="NSWindowClass">NSWindow</string>
- <nil key="NSViewClass"/>
- <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
- <object class="NSView" key="NSWindowView" id="769884725">
- <reference key="NSNextResponder"/>
- <int key="NSvFlags">256</int>
- <string key="NSFrameSize">{480, 270}</string>
- <reference key="NSSuperview"/>
- </object>
- <string key="NSScreenRect">{{0, 0}, {2560, 1578}}</string>
- <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
- </object>
- <object class="NSMenu" id="526087585">
- <string key="NSTitle">^MenuTest</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="383489140">
- <reference key="NSMenu" ref="526087585"/>
- <string key="NSTitle">^MenuItemTest</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="149491055"/>
- <reference key="NSMixedImage" ref="291068490"/>
- </object>
- </object>
- </object>
- <object class="NSCustomObject" id="92471218">
- <string key="NSClassName">GTMUILocalizer</string>
- </object>
- <object class="NSWindowTemplate" id="158765462">
- <int key="NSWindowStyleMask">15</int>
- <int key="NSWindowBacking">2</int>
- <string key="NSWindowRect">{{196, 240}, {480, 270}}</string>
- <int key="NSWTFlags">603979776</int>
- <string key="NSWindowTitle">^WindowTest</string>
- <string key="NSWindowClass">NSWindow</string>
- <nil key="NSViewClass"/>
- <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
- <object class="NSView" key="NSWindowView" id="405137086">
- <reference key="NSNextResponder"/>
- <int key="NSvFlags">256</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSBox" id="735149545">
- <reference key="NSNextResponder" ref="405137086"/>
- <int key="NSvFlags">36</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSView" id="866377256">
- <reference key="NSNextResponder" ref="735149545"/>
- <int key="NSvFlags">256</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSButton" id="459731495">
- <reference key="NSNextResponder" ref="866377256"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{12, 38}, {100, 32}}</string>
- <reference key="NSSuperview" ref="866377256"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="168106569">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">134217728</int>
- <string key="NSContents">^Button1</string>
- <reference key="NSSupport" ref="168773824"/>
- <reference key="NSControlView" ref="459731495"/>
- <int key="NSButtonFlags">-2038284033</int>
- <int key="NSButtonFlags2">129</int>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- <object class="NSButton" id="668934682">
- <reference key="NSNextResponder" ref="866377256"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{12, 6}, {100, 32}}</string>
- <reference key="NSSuperview" ref="866377256"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="1004837764">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">134217728</int>
- <string key="NSContents">^Button2</string>
- <reference key="NSSupport" ref="168773824"/>
- <reference key="NSControlView" ref="668934682"/>
- <int key="NSButtonFlags">-2038284033</int>
- <int key="NSButtonFlags2">129</int>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- </object>
- <string key="NSFrame">{{1, 1}, {124, 76}}</string>
- <reference key="NSSuperview" ref="735149545"/>
- </object>
- </object>
- <string key="NSFrame">{{32, 158}, {126, 92}}</string>
- <reference key="NSSuperview" ref="405137086"/>
- <string key="NSOffsets">{0, 0}</string>
- <object class="NSTextFieldCell" key="NSTitleCell">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">^Box</string>
- <reference key="NSSupport" ref="26"/>
- <reference key="NSBackgroundColor" ref="854948635"/>
- <object class="NSColor" key="NSTextColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MCAwLjgwMDAwMDAxAA</bytes>
- </object>
- </object>
- <reference key="NSContentView" ref="866377256"/>
- <int key="NSBorderType">1</int>
- <int key="NSBoxType">0</int>
- <int key="NSTitlePosition">2</int>
- <bool key="NSTransparent">NO</bool>
- </object>
- <object class="NSScrollView" id="846591189">
- <reference key="NSNextResponder" ref="405137086"/>
- <int key="NSvFlags">268</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSClipView" id="864274176">
- <reference key="NSNextResponder" ref="846591189"/>
- <int key="NSvFlags">2304</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSCustomView" id="1048920215">
- <reference key="NSNextResponder" ref="864274176"/>
- <int key="NSvFlags">274</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSTextField" id="771041486">
- <reference key="NSNextResponder" ref="1048920215"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{17, 20}, {72, 17}}</string>
- <reference key="NSSuperview" ref="1048920215"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="138037384">
- <int key="NSCellFlags">68288064</int>
- <int key="NSCellFlags2">272630784</int>
- <string key="NSContents">^Label2</string>
- <reference key="NSSupport" ref="168773824"/>
- <reference key="NSControlView" ref="771041486"/>
- <reference key="NSBackgroundColor" ref="1000162704"/>
- <reference key="NSTextColor" ref="50010148"/>
- </object>
- </object>
- <object class="NSMatrix" id="44026604">
- <reference key="NSNextResponder" ref="1048920215"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{20, 45}, {87, 38}}</string>
- <reference key="NSSuperview" ref="1048920215"/>
- <bool key="NSEnabled">YES</bool>
- <int key="NSNumRows">2</int>
- <int key="NSNumCols">1</int>
- <object class="NSMutableArray" key="NSCells">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSButtonCell" id="370153045">
- <int key="NSCellFlags">-2080244224</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">^Radio 1</string>
- <reference key="NSSupport" ref="168773824"/>
- <reference key="NSControlView" ref="44026604"/>
- <int key="NSTag">1</int>
- <int key="NSButtonFlags">1211912703</int>
- <int key="NSButtonFlags2">0</int>
- <reference key="NSAlternateImage" ref="182487189"/>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- <object class="NSButtonCell" id="54210161">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">^Radio 2</string>
- <reference key="NSSupport" ref="168773824"/>
- <reference key="NSControlView" ref="44026604"/>
- <int key="NSButtonFlags">1211912703</int>
- <int key="NSButtonFlags2">0</int>
- <object class="NSImage" key="NSNormalImage">
- <int key="NSImageFlags">549453824</int>
- <string key="NSSize">{18, 18}</string>
- <object class="NSMutableArray" key="NSReps">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="0"/>
- <object class="NSBitmapImageRep">
- <object class="NSData" key="NSTIFFRepresentation">
- <bytes key="NS.bytes">TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw
-IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/
-29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5
-dXV198PDw//8/Pz////////////////////////////U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAA
-AAAAAxEREUZqamrmtbW1/+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG
-AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z8/P/9fX1//Ly8v/u7u7/
-0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/
-7e3t/+3t7f/i4uL/zs7O/8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/
-5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMAAAADAAAALrCwsPrW1tb/
-3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAAD
-AAAALp2dnezg4OD/5eXl/+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns
-AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5+fn/9/f3//b29v/x8fH/
-6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4uLpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7/
-/v7+//v7+//19fX/8PDw/8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/
-///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAAAAAAAAAAAwAAABcAAABl
-YmJi3NLS0v3////////////////////////////////V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAA
-AAAAAAAAAAUAAAAfAAAAZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMAAACzAAAAnwAAAHcAAABD
-AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu
-AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgEAAAMAAAABABIAAAEB
-AAMAAAABABIAAAECAAMAAAAEAAAFxgEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES
-AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS
-AAMAAAABAAEAAAFTAAMAAAAEAAAFzodzAAcAAAwYAAAF1gAAAAAACAAIAAgACAABAAEAAQABAAAMGGFw
-cGwCAAAAbW50clJHQiBYWVogB9YABAADABMALAASYWNzcEFQUEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAPbWAAEAAAAA0y1hcHBsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAOclhZWgAAASwAAAAUZ1hZWgAAAUAAAAAUYlhZWgAAAVQAAAAUd3RwdAAAAWgAAAAUY2hhZAAA
-AXwAAAAsclRSQwAAAagAAAAOZ1RSQwAAAbgAAAAOYlRSQwAAAcgAAAAOdmNndAAAAdgAAAMSbmRpbgAA
-BOwAAAY+ZGVzYwAACywAAABkZHNjbQAAC5AAAAAubW1vZAAAC8AAAAAoY3BydAAAC+gAAAAtWFlaIAAA
-AAAAAF1KAAA0kQAACCVYWVogAAAAAAAAdCAAALRgAAAjPVhZWiAAAAAAAAAlbAAAFyoAAKfDWFlaIAAA
-AAAAAPNSAAEAAAABFs9zZjMyAAAAAAABDEIAAAXe///zJgAAB5IAAP2R///7ov///aMAAAPcAADAbGN1
-cnYAAAAAAAAAAQHNAABjdXJ2AAAAAAAAAAEBzQAAY3VydgAAAAAAAAABAc0AAHZjZ3QAAAAAAAAAAAAD
-AQAAAQACBAUGBwkKCw0ODxASExQWFxgaGxweHyAiIyQmJygpKywtLzAxMjM1Njc4OTs8PT5AQUJDREZH
-SElKS0xOT1BRUlNUVVZXWFlaW1xdXl9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gIGCg4SF
-hoeIiYqLjI2Oj5CRkpOUlZaXmJmam5ydnZ6foKGio6SlpqanqKmqq6ytra6vsLGysrO0tba3uLi5uru8
-vL2+v8DBwcLDxMXGxsfIycrKy8zNzs7P0NHS0tPU1dbW19jZ2drb3Nzd3t/g4eLi4+Tl5ufo6enq6+zt
-7u/w8fHy8/T19vf4+fr7/P3+/v8AAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR8gISIjJCUnKCkq
-Ky0uLzAxMzQ1Njc4OTo7PD0/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaWltcXV5fYGFiY2RlZmdo
-aWprbG1ub3BxcnN0dXZ3d3h5ent8fH1+f4CBgoKDhIWGh4iIiYqLjI2Oj5CRkpOUlJWWl5iZmpucnZ2e
-n6ChoqOkpaamp6ipqqusra6vsLCxsrO0tba3uLm5uru8vb6/wMHCw8TFx8jJysvMzc7P0NDR0tPU1dbX
-2Nna29ze3+Dh4uPk5ebn6err7O3u7/Hy8/T19vf5+vv8/f7/AAIDAwQFBgcICQoKCwwNDg8QERITFBUW
-FxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODg5Ojs8PT4+P0BBQkNDREVGR0hJSUpLTE1O
-Tk9QUVJSU1RVVVZXWFhZWltbXF1eXl9gYWFiY2RkZWZnZ2hpaWprbGxtbm5vcHFxcnNzdHV1dnd4eHl6
-ent8fH1+fn+AgYGCg4SEhYaHiImJiouMjY6Oj5CRkpOTlJWWl5iZmZqbnJ2en6ChoqOkpaanqKmqq6yt
-rq+xsrO0tba3uLq7vL2+wMHDxMbHycrMzs/R0tTW19nb3d7g4uTm6Ors7vDy9Pb4+vz+/wAAbmRpbgAA
-AAAAAAY2AACXGgAAVjoAAFPKAACJ3gAAJ8IAABaoAABQDQAAVDkAAiuFAAIZmQABeFEAAwEAAAIAAAAA
-AAEABgANABcAIwAxAEAAUgBlAHsAkwCrAMUA4gD/AR8BPwFhAYUBqgHQAfgCIAJLAncCpQLSAwIDMwNl
-A5gDzgQFBD0EdQSvBOsFKQVnBacF6AYqBm4GtQb8B0UHkgfkCDkIkAjnCT4JmAn0ClAKrQsLC2sLygwq
-DIwM8Q1XDcAOKA6SDv4PbA/bEE0QxBE7EbQSMRKwEzITuRREFNAVYBXxFocXHhfAGGIZBBmsGlQa+RuU
-HC4czh1yHhQeux9jIA0gvCFoIhkizyOJJEEk+SW6JnknOygFKMspkypiKzIsASzXLawuhy9gMD4xGzH8
-MtszvzSgNYY2cjdcOEw5OTorOxs8CD0EPfU+6z/nQOFB2ELUQ9VE00XcRttH5EjxSgBLCUwdTTFOUE9v
-UI9Rt1LdVAVVNlZsV6VY4FohW21ct135X09goGH0Y0tkqGYFZ19oxGova5ptCG54b/BxbnLsdG119Xd/
-eQh6knwqfcV/W4D4gpSEO4Xih4CJKorYjIqOOY/jkZuTWJUOlsyYiZpSnB6d4Z+soX+jWqUvpxOo+6rj
-rMuuwLC4sra0rra0uL+60LzfvwDBHcLdxLXGhchYyi7MCs3lz7rRmtOA1WPXR9kq2xPc/97s4M/iveSn
-5o3obupT7ELuLPAM8fLz0PW396H5f/tZ/T3//wAAAAEAAwALABYAJQA3AE0AZQCBAJ8AwQDlAQsBNQFh
-AZABwQH1AisCZAKfAtwDHANfA6MD6gQ0BH8EzQT1BR0FcAXEBhsGdAbPBy0HXAeMB+4IUgi4CSAJVAmK
-CfYKZArVC0cLgQu8DDIMqw0mDaIOIQ6hDyQPqRAvELgQ/RFDEc8SXRLuE4AUFRSrFUMV3RZ5FxcXthhY
-GPwZoRpIGvEbnBxJHPgdqB5bHw8fxSB9ITch8iKwJDAk8yW3Jn4nRigQKNwpqSp5K0osHCzxLccuoC95
-MFUxMzISMvMz1TS5NaA2hzdxOFw5STo4Oyg8Gj4DPvs/9EDuQepD6ETpRexG8Uf3SP9LFEwhTTBOQE9S
-UGZSklOrVMVV4Vb/WB5ZP1phW4Vcq13SXvthUmJ/Y69k4GYSZ0dofGm0au1tZG6ib+FxInJlc6l073Y2
-d396FXtjfLJ+A39VgKmB/4NWhK+GCYjCiiGLgYzjjkePrJESknuT5Ja8mCuZm5sMnH+d9J9qoOGiWqPV
-pVGmz6eOqE6pzqtRrNSuWq/gsWmy8rR+tgu5Kbq6vE294b93wQ7Cp8RBxd3He8kZyrrLisxbzf/Po9FK
-0vHUm9ZF1/HZn9tO3Cbc/96x4GTiGePQ5YjnQegf6Pzquex27jbv9/G583z0X/VC9wj40Pqa/GX+Mf//
-AAAAAQADAAsAJQA3AE0AZQCBAJ8AwQELATUBYQGQAcEB9QIrAmQCnwLcAxwDXwOjA+oENAR/BM0FHQVw
-BcQGGwZ0Bs8HLQeMB+4IUgi4CSAJign2CmQK1QtHC7wMMgyrDSYNog4hDqEPJA+pEC8QuBFDEl0S7hOA
-FBUUqxVDFnkXFxe2GFgY/BpIGvEbnBxJHPgdqB8PH8UgfSE3IfIjbyQwJPMltydGKBAo3Cp5K0osHC3H
-LqAveTEzMhIy8zS5NaA2hzhcOUk6ODwaPQ4+Az/0QO5C6EPoROlG8Uf3SglLFEwhTkBPUlF7UpJUxVXh
-Vv9ZP1phXKtd0mAlYVJjr2TgZhJofGm0au1tZG6ib+FxInJldO92Nnd/eMl6FXyyfgN/VYCpgf+Er4YJ
-h2WIwoohi4GOR4+skRKSe5PklVCWvJgrmZubDJx/nfSfaqDholqj1aVRps+oTqnOq1Gs1K2Xrlqv4LFp
-svK0frYLt5m5Kbnxurq8Tb3hv3fBDsHawqfEQcUPxd3He8hKyRnKusuKzFvN/87Rz6PQdtFK0vHTxtSb
-1kXXG9fx2MjZn9tO3Cbc/93Y3rHfiuBk4hni9ePQ5KzliOZk50HoH+j86drqueuX7HbtVu427xbv9/DX
-8bnymvN89F/1QvYl9wj37PjQ+bX6mvt//GX9S/4x//8AAGRlc2MAAAAAAAAACkNvbG9yIExDRAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAABtbHVjAAAAAAAAAAEAAAAMZW5VUwAAABIAAAAcAEMAbwBsAG8AcgAgAEwAQwBE
-AABtbW9kAAAAAAAABhAAAJxOAAAAAL5zkQAAAAAAAAAAAAAAAAAAAAAAdGV4dAAAAABDb3B5cmlnaHQg
-QXBwbGUgQ29tcHV0ZXIsIEluYy4sIDIwMDUAAAAAA</bytes>
- </object>
- </object>
- </object>
- </object>
- <reference key="NSColor" ref="1027339248"/>
- </object>
- <reference key="NSAlternateImage" ref="182487189"/>
- <int key="NSPeriodicDelay">400</int>
- <int key="NSPeriodicInterval">75</int>
- </object>
- </object>
- <string key="NSCellSize">{87, 18}</string>
- <string key="NSIntercellSpacing">{4, 2}</string>
- <int key="NSMatrixFlags">1151868928</int>
- <string key="NSCellClass">NSActionCell</string>
- <object class="NSButtonCell" key="NSProtoCell" id="773257705">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">Radio</string>
- <reference key="NSSupport" ref="168773824"/>
- <int key="NSButtonFlags">1211912703</int>
- <int key="NSButtonFlags2">0</int>
- <object class="NSImage" key="NSNormalImage">
- <int key="NSImageFlags">549453824</int>
- <string key="NSSize">{18, 18}</string>
- <object class="NSMutableArray" key="NSReps">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="0"/>
- <object class="NSBitmapImageRep">
- <object class="NSData" key="NSTIFFRepresentation">
- <bytes key="NS.bytes">TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw
-IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/
-29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5
-dXV198PDw//8/Pz////////////////////////////U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAA
-AAAAAxEREUZqamrmtbW1/+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG
-AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z8/P/9fX1//Ly8v/u7u7/
-0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/
-7e3t/+3t7f/i4uL/zs7O/8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/
-5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMAAAADAAAALrCwsPrW1tb/
-3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAAD
-AAAALp2dnezg4OD/5eXl/+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns
-AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5+fn/9/f3//b29v/x8fH/
-6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4uLpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7/
-/v7+//v7+//19fX/8PDw/8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/
-///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAAAAAAAAAAAwAAABcAAABl
-YmJi3NLS0v3////////////////////////////////V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAA
-AAAAAAAAAAUAAAAfAAAAZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMAAACzAAAAnwAAAHcAAABD
-AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu
-AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQEAAAMAAAABABIAAAEB
-AAMAAAABABIAAAECAAMAAAAEAAAFugEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES
-AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS
-AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
- </object>
- </object>
- </object>
- </object>
- <reference key="NSColor" ref="1027339248"/>
- </object>
- <reference key="NSAlternateImage" ref="182487189"/>
- <int key="NSPeriodicDelay">400</int>
- <int key="NSPeriodicInterval">75</int>
- </object>
- <reference key="NSSelectedCell" ref="370153045"/>
- <reference key="NSBackgroundColor" ref="1000162704"/>
- <reference key="NSCellBackgroundColor" ref="695371698"/>
- <reference key="NSFont" ref="168773824"/>
- </object>
- <object class="NSTextField" id="213996513">
- <reference key="NSNextResponder" ref="1048920215"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{17, 91}, {74, 17}}</string>
- <reference key="NSSuperview" ref="1048920215"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="279566570">
- <int key="NSCellFlags">68288064</int>
- <int key="NSCellFlags2">272630784</int>
- <string key="NSContents">^Label1</string>
- <reference key="NSSupport" ref="168773824"/>
- <reference key="NSControlView" ref="213996513"/>
- <reference key="NSBackgroundColor" ref="1000162704"/>
- <reference key="NSTextColor" ref="50010148"/>
- </object>
- </object>
- </object>
- <string key="NSFrameSize">{127, 128}</string>
- <reference key="NSSuperview" ref="864274176"/>
- <string key="NSClassName">NSView</string>
- </object>
- </object>
- <string key="NSFrame">{{1, 1}, {127, 128}}</string>
- <reference key="NSSuperview" ref="846591189"/>
- <reference key="NSNextKeyView" ref="1048920215"/>
- <reference key="NSDocView" ref="1048920215"/>
- <reference key="NSBGColor" ref="1000162704"/>
- <int key="NScvFlags">4</int>
- </object>
- <object class="NSScroller" id="282042269">
- <reference key="NSNextResponder" ref="846591189"/>
- <int key="NSvFlags">256</int>
- <string key="NSFrame">{{128, 1}, {15, 128}}</string>
- <reference key="NSSuperview" ref="846591189"/>
- <reference key="NSTarget" ref="846591189"/>
- <string key="NSAction">_doScroller:</string>
- <double key="NSCurValue">1</double>
- <double key="NSPercent">0.9636363</double>
- </object>
- <object class="NSScroller" id="383137617">
- <reference key="NSNextResponder" ref="846591189"/>
- <int key="NSvFlags">256</int>
- <string key="NSFrame">{{1, 129}, {127, 15}}</string>
- <reference key="NSSuperview" ref="846591189"/>
- <int key="NSsFlags">1</int>
- <reference key="NSTarget" ref="846591189"/>
- <string key="NSAction">_doScroller:</string>
- <double key="NSPercent">0.50602409999999998</double>
- </object>
- </object>
- <string key="NSFrame">{{219, 101}, {144, 145}}</string>
- <reference key="NSSuperview" ref="405137086"/>
- <reference key="NSNextKeyView" ref="864274176"/>
- <int key="NSsFlags">50</int>
- <reference key="NSVScroller" ref="282042269"/>
- <reference key="NSHScroller" ref="383137617"/>
- <reference key="NSContentView" ref="864274176"/>
- </object>
- <object class="NSSplitView" id="161950549">
- <reference key="NSNextResponder" ref="405137086"/>
- <int key="NSvFlags">256</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSButton" id="485121564">
- <reference key="NSNextResponder" ref="161950549"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrameSize">{106, 18}</string>
- <reference key="NSSuperview" ref="161950549"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="62569003">
- <int key="NSCellFlags">-2080244224</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">^Checkbox 1</string>
- <reference key="NSSupport" ref="168773824"/>
- <reference key="NSControlView" ref="485121564"/>
- <int key="NSButtonFlags">1211912703</int>
- <int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="437083559"/>
- <reference key="NSAlternateImage" ref="634128218"/>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- <object class="NSButton" id="300872861">
- <reference key="NSNextResponder" ref="161950549"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{0, 27}, {106, 18}}</string>
- <reference key="NSSuperview" ref="161950549"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="241630681">
- <int key="NSCellFlags">-2080244224</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">^Checkbox 2</string>
- <reference key="NSSupport" ref="168773824"/>
- <reference key="NSControlView" ref="300872861"/>
- <int key="NSButtonFlags">1211912703</int>
- <int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="437083559"/>
- <reference key="NSAlternateImage" ref="634128218"/>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- </object>
- <string key="NSFrame">{{42, 66}, {106, 45}}</string>
- <reference key="NSSuperview" ref="405137086"/>
- </object>
- <object class="NSSegmentedControl" id="632547328">
- <reference key="NSNextResponder" ref="405137086"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{198, 38}, {185, 24}}</string>
- <reference key="NSSuperview" ref="405137086"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSSegmentedCell" key="NSCell" id="907223470">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">0</int>
- <object class="NSFont" key="NSSupport">
- <string key="NSName">LucidaGrande</string>
- <double key="NSSize">13</double>
- <int key="NSfFlags">16</int>
- </object>
- <reference key="NSControlView" ref="632547328"/>
- <object class="NSMutableArray" key="NSSegmentImages">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSSegmentItem">
- <string key="NSSegmentItemLabel">^Seg1</string>
- <int key="NSSegmentItemImageScaling">0</int>
- </object>
- <object class="NSSegmentItem">
- <string key="NSSegmentItemLabel">^Seg2</string>
- <int key="NSSegmentItemTag">1</int>
- <bool key="NSSegmentItemSelected">YES</bool>
- <int key="NSSegmentItemImageScaling">0</int>
- </object>
- <object class="NSSegmentItem">
- <string key="NSSegmentItemLabel">^Seg3</string>
- <int key="NSSegmentItemImageScaling">0</int>
- </object>
- </object>
- <int key="NSSelectedSegment">1</int>
- <int key="NSSegmentStyle">1</int>
- </object>
- </object>
- <object class="NSComboBox" id="931776629">
- <reference key="NSNextResponder" ref="405137086"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{371, 180}, {92, 26}}</string>
- <reference key="NSSuperview" ref="405137086"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSComboBoxCell" key="NSCell" id="763797856">
- <int key="NSCellFlags">343014976</int>
- <int key="NSCellFlags2">272630784</int>
- <string key="NSContents">^Label1</string>
- <reference key="NSSupport" ref="168773824"/>
- <string key="NSPlaceholderString">^Placeholder1</string>
- <reference key="NSControlView" ref="931776629"/>
- <bool key="NSDrawsBackground">YES</bool>
- <reference key="NSBackgroundColor" ref="854948635"/>
- <reference key="NSTextColor" ref="50010148"/>
- <int key="NSVisibleItemCount">4</int>
- <bool key="NSHasVerticalScroller">YES</bool>
- <object class="NSMutableArray" key="NSPopUpListData">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>^Choice1</string>
- <string>^Choice2</string>
- <string>^Choice3</string>
- <string>^Choice4</string>
- <string>^Choice5</string>
- </object>
- <reference key="NSDelegate" ref="931776629"/>
- <object class="NSComboTableView" key="NSTableView" id="452420746">
- <reference key="NSNextResponder"/>
- <int key="NSvFlags">274</int>
- <string key="NSFrameSize">{13, 105}</string>
- <reference key="NSSuperview"/>
- <reference key="NSWindow"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSMutableArray" key="NSTableColumns">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSTableColumn">
- <integer value="0" key="NSIdentifier"/>
- <double key="NSWidth">10</double>
- <double key="NSMinWidth">10</double>
- <double key="NSMaxWidth">1000</double>
- <object class="NSTableHeaderCell" key="NSHeaderCell">
- <int key="NSCellFlags">75628032</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents"/>
- <object class="NSFont" key="NSSupport">
- <string key="NSName">LucidaGrande</string>
- <double key="NSSize">12</double>
- <int key="NSfFlags">16</int>
- </object>
- <object class="NSColor" key="NSBackgroundColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC4zMzMzMzI5ODU2AA</bytes>
- </object>
- <reference key="NSTextColor" ref="695371698"/>
- </object>
- <object class="NSTextFieldCell" key="NSDataCell">
- <int key="NSCellFlags">338820672</int>
- <int key="NSCellFlags2">1024</int>
- <reference key="NSSupport" ref="168773824"/>
- <reference key="NSControlView" ref="452420746"/>
- <bool key="NSDrawsBackground">YES</bool>
- <object class="NSColor" key="NSBackgroundColor" id="156860821">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">controlBackgroundColor</string>
- <reference key="NSColor" ref="125228242"/>
- </object>
- <reference key="NSTextColor" ref="50010148"/>
- </object>
- <int key="NSResizingMask">3</int>
- <bool key="NSIsResizeable">YES</bool>
- <reference key="NSTableView" ref="452420746"/>
- </object>
- </object>
- <double key="NSIntercellSpacingWidth">3</double>
- <double key="NSIntercellSpacingHeight">2</double>
- <reference key="NSBackgroundColor" ref="156860821"/>
- <object class="NSColor" key="NSGridColor">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">gridColor</string>
- <object class="NSColor" key="NSColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC41AA</bytes>
- </object>
- </object>
- <double key="NSRowHeight">19</double>
- <string key="NSAction">tableViewAction:</string>
- <int key="NSTvFlags">-765427712</int>
- <reference key="NSDelegate" ref="763797856"/>
- <reference key="NSDataSource" ref="763797856"/>
- <reference key="NSTarget" ref="763797856"/>
- <int key="NSColumnAutoresizingStyle">1</int>
- <int key="NSDraggingSourceMaskForLocal">15</int>
- <int key="NSDraggingSourceMaskForNonLocal">0</int>
- <bool key="NSAllowsTypeSelect">YES</bool>
- <int key="NSTableViewDraggingDestinationStyle">0</int>
- </object>
- </object>
- </object>
- </object>
- <string key="NSFrameSize">{480, 270}</string>
- <reference key="NSSuperview"/>
- </object>
- <string key="NSScreenRect">{{0, 0}, {2560, 1578}}</string>
- <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
- </object>
- <object class="NSUserDefaultsController" id="193974147">
- <bool key="NSSharedInstance">YES</bool>
- </object>
- </object>
- <object class="IBObjectContainer" key="IBDocument.Objects">
- <object class="NSMutableArray" key="connectionRecords">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">window</string>
- <reference key="source" ref="1001"/>
- <reference key="destination" ref="1005"/>
- </object>
- <int key="connectionID">3</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">owner_</string>
- <reference key="source" ref="92471218"/>
- <reference key="destination" ref="1001"/>
- </object>
- <int key="connectionID">32</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">otherWindow_</string>
- <reference key="source" ref="1001"/>
- <reference key="destination" ref="655734033"/>
- </object>
- <int key="connectionID">33</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">otherMenu_</string>
- <reference key="source" ref="1001"/>
- <reference key="destination" ref="526087585"/>
- </object>
- <int key="connectionID">34</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">anotherWindow_</string>
- <reference key="source" ref="1001"/>
- <reference key="destination" ref="158765462"/>
- </object>
- <int key="connectionID">53</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBBindingConnection" key="connection">
- <string key="label">displayPatternValue1: values.foo</string>
- <reference key="source" ref="583665016"/>
- <reference key="destination" ref="193974147"/>
- <object class="NSNibBindingConnector" key="connector">
- <reference key="NSSource" ref="583665016"/>
- <reference key="NSDestination" ref="193974147"/>
- <string key="NSLabel">displayPatternValue1: values.foo</string>
- <string key="NSBinding">displayPatternValue1</string>
- <string key="NSKeyPath">values.foo</string>
- <object class="NSDictionary" key="NSOptions">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>NSDisplayPattern</string>
- <string>NSMultipleValuesPlaceholder</string>
- <string>NSNoSelectionPlaceholder</string>
- <string>NSNotApplicablePlaceholder</string>
- <string>NSNullPlaceholder</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>^DisplayPattern</string>
- <string>^MultipleValuesPlaceholder</string>
- <string>^NoSelectionPlaceholder</string>
- <string>^NotApplicablePlaceholder</string>
- <string>^NullPlaceholder</string>
- </object>
- </object>
- <int key="NSNibBindingConnectorVersion">2</int>
- </object>
- </object>
- <int key="connectionID">161</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBBindingConnection" key="connection">
- <string key="label">predicate: values.foo</string>
- <reference key="source" ref="207474363"/>
- <reference key="destination" ref="193974147"/>
- <object class="NSNibBindingConnector" key="connector">
- <reference key="NSSource" ref="207474363"/>
- <reference key="NSDestination" ref="193974147"/>
- <string key="NSLabel">predicate: values.foo</string>
- <string key="NSBinding">predicate</string>
- <string key="NSKeyPath">values.foo</string>
- <object class="NSDictionary" key="NSOptions">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>NSDisplayName</string>
- <string>NSPredicateFormat</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>^DisplayName</string>
- <string>keyPath contains $value</string>
- </object>
- </object>
- <int key="NSNibBindingConnectorVersion">2</int>
- </object>
- </object>
- <int key="connectionID">163</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">bindingsTextField_</string>
- <reference key="source" ref="1001"/>
- <reference key="destination" ref="583665016"/>
- </object>
- <int key="connectionID">167</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">bindingsSearchField_</string>
- <reference key="source" ref="1001"/>
- <reference key="destination" ref="207474363"/>
- </object>
- <int key="connectionID">168</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="1001"/>
- <reference key="parent" ref="0"/>
- <string key="objectName">File's Owner</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-1</int>
- <reference key="object" ref="1003"/>
- <reference key="parent" ref="0"/>
- <string key="objectName">First Responder</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-3</int>
- <reference key="object" ref="1004"/>
- <reference key="parent" ref="0"/>
- <string key="objectName">Application</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">1</int>
- <reference key="object" ref="1005"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1006"/>
- <reference ref="393184701"/>
- </object>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">2</int>
- <reference key="object" ref="1006"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="934296854"/>
- <reference ref="657027262"/>
- <reference ref="1054080138"/>
- <reference ref="18987080"/>
- <reference ref="39833761"/>
- <reference ref="197597199"/>
- <reference ref="739084402"/>
- <reference ref="484232841"/>
- <reference ref="413705031"/>
- <reference ref="323309615"/>
- </object>
- <reference key="parent" ref="1005"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">4</int>
- <reference key="object" ref="934296854"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="768899742"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">5</int>
- <reference key="object" ref="768899742"/>
- <reference key="parent" ref="934296854"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">6</int>
- <reference key="object" ref="657027262"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="105732693"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">7</int>
- <reference key="object" ref="105732693"/>
- <reference key="parent" ref="657027262"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">8</int>
- <reference key="object" ref="1054080138"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="567210703"/>
- <reference ref="786693096"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">9</int>
- <reference key="object" ref="567210703"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="837485648"/>
- </object>
- <reference key="parent" ref="1054080138"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">10</int>
- <reference key="object" ref="786693096"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="75519688"/>
- </object>
- <reference key="parent" ref="1054080138"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">11</int>
- <reference key="object" ref="75519688"/>
- <reference key="parent" ref="786693096"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">12</int>
- <reference key="object" ref="837485648"/>
- <reference key="parent" ref="567210703"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">13</int>
- <reference key="object" ref="39833761"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="569396622"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">14</int>
- <reference key="object" ref="569396622"/>
- <reference key="parent" ref="39833761"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">15</int>
- <reference key="object" ref="18987080"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="851209037"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">16</int>
- <reference key="object" ref="851209037"/>
- <reference key="parent" ref="18987080"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">22</int>
- <reference key="object" ref="655734033"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="769884725"/>
- </object>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">23</int>
- <reference key="object" ref="769884725"/>
- <reference key="parent" ref="655734033"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">24</int>
- <reference key="object" ref="526087585"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="383489140"/>
- </object>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">25</int>
- <reference key="object" ref="383489140"/>
- <reference key="parent" ref="526087585"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">30</int>
- <reference key="object" ref="92471218"/>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">35</int>
- <reference key="object" ref="197597199"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1073502186"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">36</int>
- <reference key="object" ref="1073502186"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="768660937"/>
- </object>
- <reference key="parent" ref="197597199"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">37</int>
- <reference key="object" ref="768660937"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="662787728"/>
- <reference ref="180141984"/>
- </object>
- <reference key="parent" ref="1073502186"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">38</int>
- <reference key="object" ref="662787728"/>
- <reference key="parent" ref="768660937"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">39</int>
- <reference key="object" ref="180141984"/>
- <reference key="parent" ref="768660937"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">41</int>
- <reference key="object" ref="739084402"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="450501437"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">42</int>
- <reference key="object" ref="450501437"/>
- <reference key="parent" ref="739084402"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">45</int>
- <reference key="object" ref="484232841"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="468013402"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">46</int>
- <reference key="object" ref="468013402"/>
- <reference key="parent" ref="484232841"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">47</int>
- <reference key="object" ref="413705031"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="232253570"/>
- <reference ref="310759369"/>
- <reference ref="819072791"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">48</int>
- <reference key="object" ref="232253570"/>
- <reference key="parent" ref="413705031"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">49</int>
- <reference key="object" ref="310759369"/>
- <reference key="parent" ref="413705031"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">50</int>
- <reference key="object" ref="819072791"/>
- <reference key="parent" ref="413705031"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">51</int>
- <reference key="object" ref="158765462"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="405137086"/>
- </object>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">52</int>
- <reference key="object" ref="405137086"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="735149545"/>
- <reference ref="846591189"/>
- <reference ref="161950549"/>
- <reference ref="632547328"/>
- <reference ref="931776629"/>
- </object>
- <reference key="parent" ref="158765462"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">70</int>
- <reference key="object" ref="735149545"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="459731495"/>
- <reference ref="668934682"/>
- </object>
- <reference key="parent" ref="405137086"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">54</int>
- <reference key="object" ref="459731495"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="168106569"/>
- </object>
- <reference key="parent" ref="735149545"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">57</int>
- <reference key="object" ref="168106569"/>
- <reference key="parent" ref="459731495"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">55</int>
- <reference key="object" ref="668934682"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1004837764"/>
- </object>
- <reference key="parent" ref="735149545"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">56</int>
- <reference key="object" ref="1004837764"/>
- <reference key="parent" ref="668934682"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">72</int>
- <reference key="object" ref="846591189"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="282042269"/>
- <reference ref="383137617"/>
- <reference ref="1048920215"/>
- </object>
- <reference key="parent" ref="405137086"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">73</int>
- <reference key="object" ref="282042269"/>
- <reference key="parent" ref="846591189"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">74</int>
- <reference key="object" ref="383137617"/>
- <reference key="parent" ref="846591189"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">71</int>
- <reference key="object" ref="1048920215"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="213996513"/>
- <reference ref="44026604"/>
- <reference ref="771041486"/>
- </object>
- <reference key="parent" ref="846591189"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">62</int>
- <reference key="object" ref="213996513"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="279566570"/>
- </object>
- <reference key="parent" ref="1048920215"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">58</int>
- <reference key="object" ref="44026604"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="773257705"/>
- <reference ref="54210161"/>
- <reference ref="370153045"/>
- </object>
- <reference key="parent" ref="1048920215"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">63</int>
- <reference key="object" ref="771041486"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="138037384"/>
- </object>
- <reference key="parent" ref="1048920215"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">68</int>
- <reference key="object" ref="138037384"/>
- <reference key="parent" ref="771041486"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">59</int>
- <reference key="object" ref="773257705"/>
- <reference key="parent" ref="44026604"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">60</int>
- <reference key="object" ref="54210161"/>
- <reference key="parent" ref="44026604"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">61</int>
- <reference key="object" ref="370153045"/>
- <reference key="parent" ref="44026604"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">69</int>
- <reference key="object" ref="279566570"/>
- <reference key="parent" ref="213996513"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">76</int>
- <reference key="object" ref="161950549"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="485121564"/>
- <reference ref="300872861"/>
- </object>
- <reference key="parent" ref="405137086"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">64</int>
- <reference key="object" ref="485121564"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="62569003"/>
- </object>
- <reference key="parent" ref="161950549"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">67</int>
- <reference key="object" ref="62569003"/>
- <reference key="parent" ref="485121564"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">65</int>
- <reference key="object" ref="300872861"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="241630681"/>
- </object>
- <reference key="parent" ref="161950549"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">66</int>
- <reference key="object" ref="241630681"/>
- <reference key="parent" ref="300872861"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">88</int>
- <reference key="object" ref="393184701"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1041080587"/>
- <reference ref="1052188774"/>
- </object>
- <reference key="parent" ref="1005"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">96</int>
- <reference key="object" ref="1041080587"/>
- <reference key="parent" ref="393184701"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">97</int>
- <reference key="object" ref="1052188774"/>
- <reference key="parent" ref="393184701"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">101</int>
- <reference key="object" ref="193974147"/>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">165</int>
- <reference key="object" ref="323309615"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="583665016"/>
- <reference ref="207474363"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">99</int>
- <reference key="object" ref="583665016"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="601271137"/>
- </object>
- <reference key="parent" ref="323309615"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">100</int>
- <reference key="object" ref="601271137"/>
- <reference key="parent" ref="583665016"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">151</int>
- <reference key="object" ref="207474363"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="926559351"/>
- </object>
- <reference key="parent" ref="323309615"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">152</int>
- <reference key="object" ref="926559351"/>
- <reference key="parent" ref="207474363"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">169</int>
- <reference key="object" ref="632547328"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="907223470"/>
- </object>
- <reference key="parent" ref="405137086"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">170</int>
- <reference key="object" ref="907223470"/>
- <reference key="parent" ref="632547328"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">173</int>
- <reference key="object" ref="931776629"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="763797856"/>
- </object>
- <reference key="parent" ref="405137086"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">174</int>
- <reference key="object" ref="763797856"/>
- <reference key="parent" ref="931776629"/>
- </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.IBPluginDependency</string>
- <string>-2.IBPluginDependency</string>
- <string>-3.IBPluginDependency</string>
- <string>1.IBEditorWindowLastContentRect</string>
- <string>1.IBPluginDependency</string>
- <string>1.IBWindowTemplateEditedContentRect</string>
- <string>1.NSWindowTemplate.visibleAtLaunch</string>
- <string>1.WindowOrigin</string>
- <string>1.editorWindowContentRectSynchronizationRect</string>
- <string>10.IBPluginDependency</string>
- <string>100.IBPluginDependency</string>
- <string>11.IBPluginDependency</string>
- <string>12.IBPluginDependency</string>
- <string>13.IBPluginDependency</string>
- <string>14.IBPluginDependency</string>
- <string>15.IBPluginDependency</string>
- <string>151.IBPluginDependency</string>
- <string>152.IBPluginDependency</string>
- <string>16.IBPluginDependency</string>
- <string>169.IBPluginDependency</string>
- <string>170.IBPluginDependency</string>
- <string>173.IBPluginDependency</string>
- <string>173.IBViewBoundsToFrameTransform</string>
- <string>174.IBPluginDependency</string>
- <string>2.IBPluginDependency</string>
- <string>22.IBEditorWindowLastContentRect</string>
- <string>22.IBPluginDependency</string>
- <string>22.IBWindowTemplateEditedContentRect</string>
- <string>22.NSWindowTemplate.visibleAtLaunch</string>
- <string>23.IBPluginDependency</string>
- <string>24.IBEditorWindowLastContentRect</string>
- <string>24.IBPluginDependency</string>
- <string>25.IBPluginDependency</string>
- <string>30.IBPluginDependency</string>
- <string>35.IBPluginDependency</string>
- <string>36.IBPluginDependency</string>
- <string>37.IBEditorWindowLastContentRect</string>
- <string>37.IBPluginDependency</string>
- <string>38.IBPluginDependency</string>
- <string>39.IBPluginDependency</string>
- <string>4.IBPluginDependency</string>
- <string>41.IBPluginDependency</string>
- <string>42.IBPluginDependency</string>
- <string>45.IBPluginDependency</string>
- <string>46.IBPluginDependency</string>
- <string>47.IBPluginDependency</string>
- <string>48.IBPluginDependency</string>
- <string>49.IBPluginDependency</string>
- <string>5.IBPluginDependency</string>
- <string>50.IBPluginDependency</string>
- <string>51.IBEditorWindowLastContentRect</string>
- <string>51.IBPluginDependency</string>
- <string>51.IBWindowTemplateEditedContentRect</string>
- <string>51.NSWindowTemplate.visibleAtLaunch</string>
- <string>52.IBPluginDependency</string>
- <string>54.IBPluginDependency</string>
- <string>55.IBPluginDependency</string>
- <string>56.IBPluginDependency</string>
- <string>57.IBPluginDependency</string>
- <string>58.IBPluginDependency</string>
- <string>59.IBPluginDependency</string>
- <string>6.IBPluginDependency</string>
- <string>60.IBPluginDependency</string>
- <string>61.IBPluginDependency</string>
- <string>62.IBPluginDependency</string>
- <string>63.IBPluginDependency</string>
- <string>64.IBPluginDependency</string>
- <string>65.IBPluginDependency</string>
- <string>66.IBPluginDependency</string>
- <string>67.IBPluginDependency</string>
- <string>68.IBPluginDependency</string>
- <string>69.IBPluginDependency</string>
- <string>7.IBPluginDependency</string>
- <string>8.IBPluginDependency</string>
- <string>88.IBEditorWindowLastContentRect</string>
- <string>88.IBPluginDependency</string>
- <string>9.IBPluginDependency</string>
- <string>96.IBPluginDependency</string>
- <string>97.IBPluginDependency</string>
- <string>99.IBPluginDependency</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{387, 451}, {480, 270}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{387, 451}, {480, 270}}</string>
- <boolean value="NO"/>
- <string>{196, 240}</string>
- <string>{{357, 418}, {480, 270}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <object class="NSAffineTransform">
- <bytes key="NSTransformStruct">P4AAAL+AAABDuYAAw0wAAA</bytes>
- </object>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{948, 629}, {480, 270}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{948, 629}, {480, 270}}</string>
- <boolean value="NO"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{126, 673}, {161, 23}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{478, 980}, {122, 43}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{960, 285}, {480, 270}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{960, 285}, {480, 270}}</string>
- <boolean value="NO"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{-6, 737}, {616, 0}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</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">174</int>
- </object>
- <object class="IBClassDescriber" key="IBDocument.Classes">
- <object class="NSMutableArray" key="referencedPartialClassDescriptions">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBPartialClassDescription">
- <string key="className">GTMUILocalizer</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>otherObjectToLocalize_</string>
- <string>owner_</string>
- <string>yetAnotherObjectToLocalize_</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>id</string>
- <string>id</string>
- <string>id</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>otherObjectToLocalize_</string>
- <string>owner_</string>
- <string>yetAnotherObjectToLocalize_</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBToOneOutletInfo">
- <string key="name">otherObjectToLocalize_</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBToOneOutletInfo">
- <string key="name">owner_</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBToOneOutletInfo">
- <string key="name">yetAnotherObjectToLocalize_</string>
- <string key="candidateClassName">id</string>
- </object>
- </object>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMUILocalizer.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">GTMUILocalizerTestWindowController</string>
- <string key="superclassName">NSWindowController</string>
- <object class="NSMutableDictionary" key="outlets">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>anotherWindow_</string>
- <string>bindingsSearchField_</string>
- <string>bindingsTextField_</string>
- <string>otherMenu_</string>
- <string>otherWindow_</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>NSWindow</string>
- <string>NSSearchField</string>
- <string>NSTextField</string>
- <string>NSMenu</string>
- <string>NSWindow</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>anotherWindow_</string>
- <string>bindingsSearchField_</string>
- <string>bindingsTextField_</string>
- <string>otherMenu_</string>
- <string>otherWindow_</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBToOneOutletInfo">
- <string key="name">anotherWindow_</string>
- <string key="candidateClassName">NSWindow</string>
- </object>
- <object class="IBToOneOutletInfo">
- <string key="name">bindingsSearchField_</string>
- <string key="candidateClassName">NSSearchField</string>
- </object>
- <object class="IBToOneOutletInfo">
- <string key="name">bindingsTextField_</string>
- <string key="candidateClassName">NSTextField</string>
- </object>
- <object class="IBToOneOutletInfo">
- <string key="name">otherMenu_</string>
- <string key="candidateClassName">NSMenu</string>
- </object>
- <object class="IBToOneOutletInfo">
- <string key="name">otherWindow_</string>
- <string key="candidateClassName">NSWindow</string>
- </object>
- </object>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMUILocalizerTest.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="485269976">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMAppKit+UnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMAppKitUnitTestingUtilities.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSBox</string>
- <reference key="sourceIdentifier" ref="485269976"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSButton</string>
- <reference key="sourceIdentifier" ref="485269976"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSCell</string>
- <reference key="sourceIdentifier" ref="485269976"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSComboBox</string>
- <reference key="sourceIdentifier" ref="485269976"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSControl</string>
- <reference key="sourceIdentifier" ref="485269976"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSMatrix</string>
- <reference key="sourceIdentifier" ref="485269976"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSMenu</string>
- <reference key="sourceIdentifier" ref="485269976"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSMenuItem</string>
- <reference key="sourceIdentifier" ref="485269976"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMCarbonEvent.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMDelegatingTableColumn.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Foundation/GTMNSAppleEventDescriptor+Foundation.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Foundation/GTMNSObject+KeyValueObserving.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMCALayer+UnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMNSObject+BindingUnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMNSObject+UnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSSegmentedControl</string>
- <reference key="sourceIdentifier" ref="485269976"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSTabView</string>
- <reference key="sourceIdentifier" ref="485269976"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSTabViewItem</string>
- <reference key="sourceIdentifier" ref="485269976"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSTextField</string>
- <reference key="sourceIdentifier" ref="485269976"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSToolbar</string>
- <reference key="sourceIdentifier" ref="485269976"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSToolbarItem</string>
- <reference key="sourceIdentifier" ref="485269976"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="308904550">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMNSAnimatablePropertyContainer.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <reference key="sourceIdentifier" ref="485269976"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindow</string>
- <reference key="sourceIdentifier" ref="308904550"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindow</string>
- <reference key="sourceIdentifier" ref="485269976"/>
- </object>
- </object>
- <object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBPartialClassDescription">
- <string key="className">NSActionCell</string>
- <string key="superclassName">NSCell</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSActionCell.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <string key="superclassName">NSResponder</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="1034859396">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSApplication.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="656766238">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSApplicationScripting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="878436355">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSColorPanel.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSHelpManager.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSPageLayout.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSUserInterfaceItemSearching.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSBox</string>
- <string key="superclassName">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSBox.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSButton</string>
- <string key="superclassName">NSControl</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSButton.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSButtonCell</string>
- <string key="superclassName">NSActionCell</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSButtonCell.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSCell</string>
- <string key="superclassName">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSCell.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSComboBox</string>
- <string key="superclassName">NSTextField</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSComboBox.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSComboBoxCell</string>
- <string key="superclassName">NSTextFieldCell</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSComboBoxCell.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSControl</string>
- <string key="superclassName">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="498926182">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSControl.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSController</string>
- <string key="superclassName">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSFormatter</string>
- <string key="superclassName">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSFormatter.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSMatrix</string>
- <string key="superclassName">NSControl</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSMatrix.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSMenu</string>
- <string key="superclassName">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="11882073">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSMenu.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSMenuItem</string>
- <string key="superclassName">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="340398278">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSMenuItem.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSMenuItemCell</string>
- <string key="superclassName">NSButtonCell</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSMenuItemCell.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">AddressBook.framework/Headers/ABActions.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">AppKit.framework/Headers/NSAccessibility.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <reference key="sourceIdentifier" ref="1034859396"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <reference key="sourceIdentifier" ref="656766238"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <reference key="sourceIdentifier" ref="878436355"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <reference key="sourceIdentifier" ref="498926182"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSDictionaryController.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">AppKit.framework/Headers/NSDragging.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">AppKit.framework/Headers/NSFontManager.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">AppKit.framework/Headers/NSFontPanel.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">AppKit.framework/Headers/NSKeyValueBinding.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <reference key="sourceIdentifier" ref="11882073"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSNibLoading.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">AppKit.framework/Headers/NSOutlineView.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">AppKit.framework/Headers/NSPasteboard.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">AppKit.framework/Headers/NSSavePanel.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">AppKit.framework/Headers/NSTableView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="742004913">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSToolbarItem.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="570483478">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSView.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/NSArchiver.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/NSClassDescription.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/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/NSObjectScripting.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/NSPortCoder.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/NSScriptClassDescription.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/NSScriptKeyValueCoding.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/NSScriptObjectSpecifiers.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/NSScriptWhoseTests.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/NSURLDownload.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">PrintCore.framework/Headers/PDEPluginInterface.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">QuartzCore.framework/Headers/CAAnimation.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">QuartzCore.framework/Headers/CALayer.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">QuartzCore.framework/Headers/CIImageProvider.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSPopUpButton</string>
- <string key="superclassName">NSButton</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSPopUpButton.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSPopUpButtonCell</string>
- <string key="superclassName">NSMenuItemCell</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSPopUpButtonCell.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSResponder</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSInterfaceStyle.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSResponder</string>
- <string key="superclassName">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSResponder.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSScrollView</string>
- <string key="superclassName">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSScrollView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSScroller</string>
- <string key="superclassName">NSControl</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSScroller.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSSearchField</string>
- <string key="superclassName">NSTextField</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSSearchField.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSSearchFieldCell</string>
- <string key="superclassName">NSTextFieldCell</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSSearchFieldCell.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSSegmentedCell</string>
- <string key="superclassName">NSActionCell</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSSegmentedCell.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSSegmentedControl</string>
- <string key="superclassName">NSControl</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSSegmentedControl.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSSplitView</string>
- <string key="superclassName">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSSplitView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSTabView</string>
- <string key="superclassName">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSTabView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSTabViewItem</string>
- <string key="superclassName">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSTabViewItem.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSTextField</string>
- <string key="superclassName">NSControl</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSTextField.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSTextFieldCell</string>
- <string key="superclassName">NSActionCell</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSTextFieldCell.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSToolbar</string>
- <string key="superclassName">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSToolbar.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSToolbarItem</string>
- <string key="superclassName">NSObject</string>
- <reference key="sourceIdentifier" ref="742004913"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSUserDefaultsController</string>
- <string key="superclassName">NSController</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSUserDefaultsController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSClipView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <reference key="sourceIdentifier" ref="340398278"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSRulerView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <string key="superclassName">NSResponder</string>
- <reference key="sourceIdentifier" ref="570483478"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindow</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSDrawer.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindow</string>
- <string key="superclassName">NSResponder</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSWindow.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindow</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSWindowScripting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindowController</string>
- <string key="superclassName">NSResponder</string>
- <object class="NSMutableDictionary" key="actions">
- <string key="NS.key.0">showWindow:</string>
- <string key="NS.object.0">id</string>
- </object>
- <object class="NSMutableDictionary" key="actionInfosByName">
- <string key="NS.key.0">showWindow:</string>
- <object class="IBActionInfo" key="NS.object.0">
- <string key="name">showWindow:</string>
- <string key="candidateClassName">id</string>
- </object>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSWindowController.h</string>
- </object>
- </object>
- </object>
- </object>
- <int key="IBDocument.localizationMode">0</int>
- <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
- <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies">
- <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
- <integer value="1050" key="NS.object.0"/>
- </object>
- <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
- <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
- <integer value="1050" key="NS.object.0"/>
- </object>
- <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
- <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
- <integer value="3000" key="NS.object.0"/>
- </object>
- <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
- <string key="IBDocument.LastKnownRelativeProjectPath">../GTM.xcodeproj</string>
- <int key="IBDocument.defaultPropertyAccessControl">3</int>
- <object class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>NSMenuCheckmark</string>
- <string>NSMenuMixedState</string>
- <string>NSPreferencesGeneral</string>
- <string>NSSwitch</string>
- <string>NSUserAccounts</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>{9, 8}</string>
- <string>{7, 2}</string>
- <string>{32, 32}</string>
- <string>{15, 15}</string>
- <string>{32, 32}</string>
- </object>
- </object>
- </data>
-</archive>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="11201" systemVersion="15G1004" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
+ <dependencies>
+ <deployment identifier="macosx"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11201"/>
+ <capability name="box content view" minToolsVersion="7.0"/>
+ </dependencies>
+ <objects>
+ <customObject id="-2" userLabel="File's Owner" customClass="GTMUILocalizerTestWindowController">
+ <connections>
+ <outlet property="_aBox" destination="70" id="DY4-jb-GGU"/>
+ <outlet property="_aButton1" destination="54" id="Ugp-uF-Z7I"/>
+ <outlet property="_aButton2" destination="55" id="3rs-oA-bKx"/>
+ <outlet property="_aCheckbox1" destination="64" id="6zb-jT-coj"/>
+ <outlet property="_aCheckbox2" destination="65" id="4BO-kN-V5H"/>
+ <outlet property="_aComboBox" destination="173" id="lzx-oE-yyJ"/>
+ <outlet property="_aRadio1" destination="61" id="5jN-Rj-MP9"/>
+ <outlet property="_aRadio2" destination="60" id="5LH-uI-QXq"/>
+ <outlet property="_aSegmented" destination="169" id="zAV-Ak-0zy"/>
+ <outlet property="_aTextField1" destination="62" id="E5A-U4-yUF"/>
+ <outlet property="_aTextField2" destination="63" id="euW-U2-ZPk"/>
+ <outlet property="_anotherWindow" destination="51" id="g9Q-68-4Lq"/>
+ <outlet property="_bindingsSearchField" destination="151" id="d04-Qy-Omt"/>
+ <outlet property="_bindingsTextField" destination="99" id="b1u-KQ-66G"/>
+ <outlet property="_button1" destination="4" id="Rtc-Xu-uZA"/>
+ <outlet property="_button2" destination="6" id="84Q-c9-TFl"/>
+ <outlet property="_checkbox1" destination="41" id="89X-pT-2pU"/>
+ <outlet property="_checkbox2" destination="45" id="1jk-cG-El7"/>
+ <outlet property="_otherMenu" destination="24" id="i2e-1m-IFN"/>
+ <outlet property="_radio1" destination="48" id="fDX-DK-1jH"/>
+ <outlet property="_radio2" destination="49" id="meL-Wl-Xo2"/>
+ <outlet property="_tabViewItem1" destination="9" id="dGv-iG-1ax"/>
+ <outlet property="_tabViewItem2" destination="10" id="6wN-Re-m4M"/>
+ <outlet property="_textField1" destination="13" id="aTh-H8-Ppj"/>
+ <outlet property="_textField2" destination="15" id="f4a-e4-4Ih"/>
+ <outlet property="_toolbarItem1" destination="96" id="1TD-AV-La4"/>
+ <outlet property="_toolbarItem2" destination="97" id="v8R-Ax-tR9"/>
+ <outlet property="menuItem1" destination="38" id="u3S-5p-hhh"/>
+ <outlet property="menuItem2" destination="39" id="pib-lI-79A"/>
+ <outlet property="menuItem3" destination="Y3l-JE-3Yv" id="Sfv-80-tdR"/>
+ <outlet property="window" destination="1" id="tHI-7l-T7s"/>
+ </connections>
+ </customObject>
+ <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+ <customObject id="-3" userLabel="Application" customClass="NSObject"/>
+ <window title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" oneShot="NO" visibleAtLaunch="NO" animationBehavior="default" id="1">
+ <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
+ <windowPositionMask key="initialPositionMask" leftStrut="YES" bottomStrut="YES"/>
+ <rect key="contentRect" x="196" y="240" width="480" height="270"/>
+ <rect key="screenRect" x="0.0" y="0.0" width="1680" height="1028"/>
+ <view key="contentView" id="2">
+ <rect key="frame" x="0.0" y="0.0" width="480" height="270"/>
+ <autoresizingMask key="autoresizingMask"/>
+ <subviews>
+ <button verticalHuggingPriority="750" id="4">
+ <rect key="frame" x="30" y="205" width="100" height="32"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="push" title="^Button1" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="5">
+ <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+ <font key="font" metaFont="system"/>
+ </buttonCell>
+ </button>
+ <button verticalHuggingPriority="750" id="6">
+ <rect key="frame" x="30" y="173" width="100" height="32"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="push" title="^Button2" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="7">
+ <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+ <font key="font" metaFont="system"/>
+ </buttonCell>
+ </button>
+ <tabView id="8">
+ <rect key="frame" x="161" y="115" width="177" height="124"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <font key="font" metaFont="system"/>
+ <tabViewItems>
+ <tabViewItem label="^Tab1" identifier="1" id="9">
+ <view key="view" id="12">
+ <rect key="frame" x="10" y="33" width="157" height="78"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ </view>
+ </tabViewItem>
+ <tabViewItem label="^Tab2" identifier="2" id="10">
+ <view key="view" id="11">
+ <rect key="frame" x="10" y="33" width="157" height="78"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ </view>
+ </tabViewItem>
+ </tabViewItems>
+ </tabView>
+ <textField verticalHuggingPriority="750" id="13">
+ <rect key="frame" x="71" y="61" width="74" height="17"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="^Label1" id="14">
+ <font key="font" metaFont="system"/>
+ <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ </textField>
+ <textField verticalHuggingPriority="750" id="15">
+ <rect key="frame" x="153" y="66" width="72" height="17"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="^Label2" id="16">
+ <font key="font" metaFont="system"/>
+ <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ </textField>
+ <popUpButton verticalHuggingPriority="750" id="35">
+ <rect key="frame" x="315" y="67" width="100" height="26"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <popUpButtonCell key="cell" type="push" title="^Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="38" id="36">
+ <behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
+ <font key="font" metaFont="menu"/>
+ <menu key="menu" title="OtherViews" id="37">
+ <items>
+ <menuItem title="^Item 1" state="on" id="38"/>
+ <menuItem title="^Item 2" id="39"/>
+ <menuItem title="^Item 3" id="Y3l-JE-3Yv" userLabel="^Item 3">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ </menuItem>
+ </items>
+ </menu>
+ </popUpButtonCell>
+ </popUpButton>
+ <button id="41">
+ <rect key="frame" x="154" y="33" width="106" height="18"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="check" title="^Checkbox 1" bezelStyle="regularSquare" imagePosition="left" alignment="left" state="on" inset="2" id="42">
+ <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
+ <font key="font" metaFont="system"/>
+ </buttonCell>
+ </button>
+ <button id="45">
+ <rect key="frame" x="291" y="33" width="106" height="18"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="check" title="^Checkbox 2" bezelStyle="regularSquare" imagePosition="left" alignment="left" state="on" inset="2" id="46">
+ <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
+ <font key="font" metaFont="system"/>
+ </buttonCell>
+ </button>
+ <matrix verticalHuggingPriority="750" allowsEmptySelection="NO" id="47">
+ <rect key="frame" x="351" y="172" width="87" height="38"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+ <size key="cellSize" width="87" height="18"/>
+ <size key="intercellSpacing" width="4" height="2"/>
+ <buttonCell key="prototype" type="radio" title="Radio" imagePosition="left" alignment="left" inset="2" id="50">
+ <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
+ <font key="font" metaFont="system"/>
+ </buttonCell>
+ <cells>
+ <column>
+ <buttonCell type="radio" title="^Radio 1" imagePosition="left" alignment="left" state="on" tag="1" inset="2" id="48">
+ <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
+ <font key="font" metaFont="system"/>
+ </buttonCell>
+ <buttonCell type="radio" title="^Radio 2" imagePosition="left" alignment="left" inset="2" id="49">
+ <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
+ <font key="font" metaFont="system"/>
+ </buttonCell>
+ </column>
+ </cells>
+ </matrix>
+ <box autoresizesSubviews="NO" borderType="line" title="Bindings Tests" id="165">
+ <rect key="frame" x="13" y="80" width="134" height="92"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+ <view key="contentView" id="JdY-LY-sn5">
+ <rect key="frame" x="1" y="1" width="132" height="76"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <subviews>
+ <textField verticalHuggingPriority="750" id="99">
+ <rect key="frame" x="18" y="44" width="96" height="22"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="100">
+ <font key="font" metaFont="system"/>
+ <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ <connections>
+ <binding destination="101" name="displayPatternValue1" keyPath="values.foo" id="161">
+ <dictionary key="options">
+ <string key="NSDisplayPattern">^DisplayPattern</string>
+ <string key="NSMultipleValuesPlaceholder">^MultipleValuesPlaceholder</string>
+ <string key="NSNoSelectionPlaceholder">^NoSelectionPlaceholder</string>
+ <string key="NSNotApplicablePlaceholder">^NotApplicablePlaceholder</string>
+ <string key="NSNullPlaceholder">^NullPlaceholder</string>
+ </dictionary>
+ </binding>
+ </connections>
+ </textField>
+ <searchField wantsLayer="YES" verticalHuggingPriority="750" id="151">
+ <rect key="frame" x="18" y="14" width="96" height="22"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <searchFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" borderStyle="bezel" bezelStyle="round" id="152">
+ <font key="font" metaFont="system"/>
+ <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+ </searchFieldCell>
+ <connections>
+ <binding destination="101" name="predicate" keyPath="values.foo" id="163">
+ <dictionary key="options">
+ <string key="NSDisplayName">^DisplayName</string>
+ <string key="NSPredicateFormat">keyPath contains $value</string>
+ </dictionary>
+ </binding>
+ </connections>
+ </searchField>
+ </subviews>
+ </view>
+ </box>
+ </subviews>
+ </view>
+ <toolbar key="toolbar" implicitIdentifier="13B554E3-53CB-4465-BDA3-4F9A8B406FD0" autosavesConfiguration="NO" displayMode="iconAndLabel" sizeMode="regular" id="88">
+ <allowedToolbarItems>
+ <toolbarItem implicitItemIdentifier="927E93A7-3FD1-412D-9C0E-FB7F594FDEF2" label="^ToolbarItemLabel" paletteLabel="^ToolbarItemPaletteLabel" toolTip="^ToolTip" tag="-1" image="NSPreferencesGeneral" id="96"/>
+ <toolbarItem implicitItemIdentifier="44682372-574A-40F6-8822-35F014DDDD4B" label="ToolbarItemLabel" paletteLabel="ToolbarItemPaletteLabel" toolTip="ToolTip" tag="-1" image="NSUserAccounts" id="97"/>
+ </allowedToolbarItems>
+ <defaultToolbarItems>
+ <toolbarItem reference="96"/>
+ <toolbarItem reference="97"/>
+ </defaultToolbarItems>
+ </toolbar>
+ </window>
+ <menu title="^MenuTest" id="24">
+ <items>
+ <menuItem title="^MenuItemTest" id="25">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ </menuItem>
+ </items>
+ </menu>
+ <customObject id="30" customClass="GTMUILocalizer">
+ <connections>
+ <outlet property="owner_" destination="-2" id="32"/>
+ </connections>
+ </customObject>
+ <window title="^WindowTest" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" oneShot="NO" visibleAtLaunch="NO" animationBehavior="default" id="51">
+ <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
+ <windowPositionMask key="initialPositionMask" leftStrut="YES" bottomStrut="YES"/>
+ <rect key="contentRect" x="196" y="240" width="480" height="270"/>
+ <rect key="screenRect" x="0.0" y="0.0" width="2560" height="1578"/>
+ <view key="contentView" id="52">
+ <rect key="frame" x="0.0" y="0.0" width="480" height="270"/>
+ <autoresizingMask key="autoresizingMask"/>
+ <subviews>
+ <box autoresizesSubviews="NO" borderType="line" title="^Box" id="70">
+ <rect key="frame" x="32" y="158" width="126" height="92"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+ <view key="contentView" id="pui-tM-1Td">
+ <rect key="frame" x="1" y="1" width="124" height="76"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <subviews>
+ <button verticalHuggingPriority="750" id="54">
+ <rect key="frame" x="12" y="38" width="100" height="32"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="push" title="^Button1" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="57">
+ <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+ <font key="font" metaFont="system"/>
+ </buttonCell>
+ </button>
+ <button verticalHuggingPriority="750" id="55">
+ <rect key="frame" x="12" y="6" width="100" height="32"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="push" title="^Button2" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="56">
+ <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+ <font key="font" metaFont="system"/>
+ </buttonCell>
+ </button>
+ </subviews>
+ </view>
+ </box>
+ <scrollView horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" usesPredominantAxisScrolling="NO" id="72">
+ <rect key="frame" x="219" y="101" width="144" height="145"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <clipView key="contentView" id="Wgx-mP-QIl">
+ <rect key="frame" x="1" y="1" width="142" height="143"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <subviews>
+ <customView id="71">
+ <rect key="frame" x="0.0" y="0.0" width="142" height="143"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <subviews>
+ <textField verticalHuggingPriority="750" id="62">
+ <rect key="frame" x="17" y="106" width="74" height="17"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="^Label1" id="69">
+ <font key="font" metaFont="system"/>
+ <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ </textField>
+ <matrix verticalHuggingPriority="750" allowsEmptySelection="NO" id="58">
+ <rect key="frame" x="20" y="60" width="87" height="38"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+ <size key="cellSize" width="87" height="18"/>
+ <size key="intercellSpacing" width="4" height="2"/>
+ <buttonCell key="prototype" type="radio" title="Radio" imagePosition="left" alignment="left" inset="2" id="59">
+ <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
+ <font key="font" metaFont="system"/>
+ </buttonCell>
+ <cells>
+ <column>
+ <buttonCell type="radio" title="^Radio 1" imagePosition="left" alignment="left" state="on" tag="1" inset="2" id="61">
+ <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
+ <font key="font" metaFont="system"/>
+ </buttonCell>
+ <buttonCell type="radio" title="^Radio 2" imagePosition="left" alignment="left" inset="2" id="60">
+ <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
+ <font key="font" metaFont="system"/>
+ </buttonCell>
+ </column>
+ </cells>
+ </matrix>
+ <textField verticalHuggingPriority="750" id="63">
+ <rect key="frame" x="17" y="35" width="72" height="17"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="^Label2" id="68">
+ <font key="font" metaFont="system"/>
+ <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ </textField>
+ </subviews>
+ </customView>
+ </subviews>
+ <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+ </clipView>
+ <scroller key="horizontalScroller" verticalHuggingPriority="750" horizontal="YES" id="74">
+ <rect key="frame" x="1" y="128" width="142" height="16"/>
+ <autoresizingMask key="autoresizingMask"/>
+ </scroller>
+ <scroller key="verticalScroller" verticalHuggingPriority="750" doubleValue="1" horizontal="NO" id="73">
+ <rect key="frame" x="127" y="1" width="16" height="143"/>
+ <autoresizingMask key="autoresizingMask"/>
+ </scroller>
+ </scrollView>
+ <splitView id="76">
+ <rect key="frame" x="42" y="66" width="106" height="45"/>
+ <autoresizingMask key="autoresizingMask"/>
+ <subviews>
+ <button id="64">
+ <rect key="frame" x="-2" y="-2" width="110" height="22"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="check" title="^Checkbox 1" bezelStyle="regularSquare" imagePosition="left" alignment="left" state="on" inset="2" id="67">
+ <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
+ <font key="font" metaFont="system"/>
+ </buttonCell>
+ </button>
+ <button id="65">
+ <rect key="frame" x="-2" y="25" width="110" height="22"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="check" title="^Checkbox 2" bezelStyle="regularSquare" imagePosition="left" alignment="left" state="on" inset="2" id="66">
+ <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
+ <font key="font" metaFont="system"/>
+ </buttonCell>
+ </button>
+ </subviews>
+ <holdingPriorities>
+ <real value="250"/>
+ <real value="250"/>
+ </holdingPriorities>
+ </splitView>
+ <segmentedControl verticalHuggingPriority="750" id="169">
+ <rect key="frame" x="198" y="38" width="185" height="24"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <segmentedCell key="cell" borderStyle="border" alignment="left" style="rounded" trackingMode="selectOne" id="170">
+ <font key="font" metaFont="system"/>
+ <segments>
+ <segment label="^Seg1"/>
+ <segment label="^Seg2" selected="YES" tag="1"/>
+ <segment label="^Seg3"/>
+ </segments>
+ </segmentedCell>
+ </segmentedControl>
+ <comboBox verticalHuggingPriority="750" id="173">
+ <rect key="frame" x="371" y="180" width="92" height="26"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <comboBoxCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" title="^Label1" placeholderString="^Placeholder1" drawsBackground="YES" completes="NO" numberOfVisibleItems="4" id="174">
+ <font key="font" metaFont="system"/>
+ <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+ <objectValues>
+ <string>^Choice1</string>
+ <string>^Choice2</string>
+ <string>^Choice3</string>
+ <string>^Choice4</string>
+ <string>^Choice5</string>
+ </objectValues>
+ </comboBoxCell>
+ </comboBox>
+ </subviews>
+ </view>
+ </window>
+ <userDefaultsController representsSharedInstance="YES" id="101"/>
+ </objects>
+ <resources>
+ <image name="NSPreferencesGeneral" width="32" height="32"/>
+ <image name="NSUserAccounts" width="32" height="32"/>
+ </resources>
+</document>
diff --git a/AppKit/GTMUILocalizerTestWindow_10_4.xib b/AppKit/GTMUILocalizerTestWindow_10_4.xib
deleted file mode 100644
index 6316e33..0000000
--- a/AppKit/GTMUILocalizerTestWindow_10_4.xib
+++ /dev/null
@@ -1,2939 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
- <data>
- <int key="IBDocument.SystemTarget">1040</int>
- <string key="IBDocument.SystemVersion">10K549</string>
- <string key="IBDocument.InterfaceBuilderVersion">851</string>
- <string key="IBDocument.AppKitVersion">1038.36</string>
- <string key="IBDocument.HIToolboxVersion">461.00</string>
- <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
- <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string key="NS.object.0">851</string>
- </object>
- <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="35"/>
- <integer value="120"/>
- <integer value="22"/>
- </object>
- <object class="NSArray" key="IBDocument.PluginDependencies">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</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="NSCustomObject" id="1001">
- <string key="NSClassName">GTMUILocalizerTestWindowController</string>
- </object>
- <object class="NSCustomObject" id="1003">
- <string key="NSClassName">FirstResponder</string>
- </object>
- <object class="NSCustomObject" id="1004">
- <string key="NSClassName">NSApplication</string>
- </object>
- <object class="NSWindowTemplate" id="1005">
- <int key="NSWindowStyleMask">15</int>
- <int key="NSWindowBacking">2</int>
- <string key="NSWindowRect">{{196, 240}, {480, 270}}</string>
- <int key="NSWTFlags">536870912</int>
- <string key="NSWindowTitle">Window</string>
- <string key="NSWindowClass">NSWindow</string>
- <nil key="NSViewClass"/>
- <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
- <object class="NSView" key="NSWindowView" id="1006">
- <reference key="NSNextResponder"/>
- <int key="NSvFlags">256</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSButton" id="934296854">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{30, 205}, {100, 32}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="768899742">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">134217728</int>
- <string key="NSContents">^Button1</string>
- <object class="NSFont" key="NSSupport" id="168773824">
- <string key="NSName">LucidaGrande</string>
- <double key="NSSize">13</double>
- <int key="NSfFlags">1044</int>
- </object>
- <reference key="NSControlView" ref="934296854"/>
- <int key="NSButtonFlags">-2038284033</int>
- <int key="NSButtonFlags2">1</int>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- <object class="NSButton" id="657027262">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{30, 173}, {100, 32}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="105732693">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">134217728</int>
- <string key="NSContents">^Button2</string>
- <reference key="NSSupport" ref="168773824"/>
- <reference key="NSControlView" ref="657027262"/>
- <int key="NSButtonFlags">-2038284033</int>
- <int key="NSButtonFlags2">1</int>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- <object class="NSTabView" id="1054080138">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">12</int>
- <string key="NSFrame">{{161, 115}, {177, 124}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <object class="NSMutableArray" key="NSTabViewItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSTabViewItem" id="567210703">
- <string key="NSIdentifier">1</string>
- <object class="NSView" key="NSView" id="837485648">
- <nil key="NSNextResponder"/>
- <int key="NSvFlags">256</int>
- <string key="NSFrame">{{10, 33}, {157, 78}}</string>
- </object>
- <string key="NSLabel">^Tab1</string>
- <object class="NSColor" key="NSColor" id="1000162704">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">controlColor</string>
- <object class="NSColor" key="NSColor" id="792644860">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
- </object>
- </object>
- <reference key="NSTabView" ref="1054080138"/>
- </object>
- <object class="NSTabViewItem" id="786693096">
- <string key="NSIdentifier">2</string>
- <object class="NSView" key="NSView" id="75519688">
- <reference key="NSNextResponder" ref="1054080138"/>
- <int key="NSvFlags">256</int>
- <string key="NSFrame">{{10, 33}, {157, 78}}</string>
- <reference key="NSSuperview" ref="1054080138"/>
- </object>
- <string key="NSLabel">^Tab2</string>
- <reference key="NSColor" ref="1000162704"/>
- <reference key="NSTabView" ref="1054080138"/>
- </object>
- </object>
- <reference key="NSSelectedTabViewItem" ref="786693096"/>
- <reference key="NSFont" ref="168773824"/>
- <int key="NSTvFlags">0</int>
- <bool key="NSAllowTruncatedLabels">YES</bool>
- <bool key="NSDrawsBackground">YES</bool>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="75519688"/>
- </object>
- </object>
- <object class="NSTextField" id="39833761">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{71, 61}, {74, 17}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="569396622">
- <int key="NSCellFlags">68288064</int>
- <int key="NSCellFlags2">272630784</int>
- <string key="NSContents">^Label1</string>
- <reference key="NSSupport" ref="168773824"/>
- <reference key="NSControlView" ref="39833761"/>
- <reference key="NSBackgroundColor" ref="1000162704"/>
- <object class="NSColor" key="NSTextColor" id="50010148">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">controlTextColor</string>
- <object class="NSColor" key="NSColor" id="41421868">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MAA</bytes>
- </object>
- </object>
- </object>
- </object>
- <object class="NSTextField" id="18987080">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{153, 66}, {72, 17}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="851209037">
- <int key="NSCellFlags">68288064</int>
- <int key="NSCellFlags2">272630784</int>
- <string key="NSContents">^Label2</string>
- <reference key="NSSupport" ref="168773824"/>
- <reference key="NSControlView" ref="18987080"/>
- <reference key="NSBackgroundColor" ref="1000162704"/>
- <reference key="NSTextColor" ref="50010148"/>
- </object>
- </object>
- <object class="NSPopUpButton" id="197597199">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{315, 67}, {100, 26}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSPopUpButtonCell" key="NSCell" id="1073502186">
- <int key="NSCellFlags">-2076049856</int>
- <int key="NSCellFlags2">2048</int>
- <reference key="NSSupport" ref="168773824"/>
- <reference key="NSControlView" ref="197597199"/>
- <int key="NSButtonFlags">109199615</int>
- <int key="NSButtonFlags2">1</int>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">400</int>
- <int key="NSPeriodicInterval">75</int>
- <object class="NSMenuItem" key="NSMenuItem" id="180141984">
- <reference key="NSMenu" ref="768660937"/>
- <string key="NSTitle">^Item 2</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <int key="NSState">1</int>
- <object class="NSCustomResource" key="NSOnImage" id="149491055">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">NSMenuCheckmark</string>
- </object>
- <object class="NSCustomResource" key="NSMixedImage" id="291068490">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">NSMenuMixedState</string>
- </object>
- <string key="NSAction">_popUpItemAction:</string>
- <reference key="NSTarget" ref="1073502186"/>
- </object>
- <bool key="NSMenuItemRespectAlignment">YES</bool>
- <object class="NSMenu" key="NSMenu" id="768660937">
- <string key="NSTitle">OtherViews</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="662787728">
- <reference key="NSMenu" ref="768660937"/>
- <string key="NSTitle">^Item 1</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="149491055"/>
- <reference key="NSMixedImage" ref="291068490"/>
- <string key="NSAction">_popUpItemAction:</string>
- <reference key="NSTarget" ref="1073502186"/>
- </object>
- <reference ref="180141984"/>
- </object>
- </object>
- <int key="NSSelectedIndex">1</int>
- <int key="NSPreferredEdge">1</int>
- <bool key="NSUsesItemFromMenu">YES</bool>
- <bool key="NSAltersState">YES</bool>
- <int key="NSArrowPosition">2</int>
- </object>
- </object>
- <object class="NSButton" id="739084402">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{154, 33}, {106, 18}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="450501437">
- <int key="NSCellFlags">-2080244224</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">^Checkbox 1</string>
- <reference key="NSSupport" ref="168773824"/>
- <reference key="NSControlView" ref="739084402"/>
- <int key="NSButtonFlags">1211912703</int>
- <int key="NSButtonFlags2">2</int>
- <object class="NSCustomResource" key="NSNormalImage" id="437083559">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">NSSwitch</string>
- </object>
- <object class="NSButtonImageSource" key="NSAlternateImage" id="634128218">
- <string key="NSImageName">NSSwitch</string>
- </object>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- <object class="NSButton" id="484232841">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{291, 33}, {106, 18}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="468013402">
- <int key="NSCellFlags">-2080244224</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">^Checkbox 2</string>
- <reference key="NSSupport" ref="168773824"/>
- <reference key="NSControlView" ref="484232841"/>
- <int key="NSButtonFlags">1211912703</int>
- <int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="437083559"/>
- <reference key="NSAlternateImage" ref="634128218"/>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- <object class="NSMatrix" id="413705031">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{351, 172}, {87, 38}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <bool key="NSEnabled">YES</bool>
- <int key="NSNumRows">2</int>
- <int key="NSNumCols">1</int>
- <object class="NSMutableArray" key="NSCells">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSButtonCell" id="232253570">
- <int key="NSCellFlags">-2080244224</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">^Radio 1</string>
- <reference key="NSSupport" ref="168773824"/>
- <reference key="NSControlView" ref="413705031"/>
- <int key="NSTag">1</int>
- <int key="NSButtonFlags">1211912703</int>
- <int key="NSButtonFlags2">0</int>
- <object class="NSButtonImageSource" key="NSAlternateImage" id="182487189">
- <string key="NSImageName">NSRadioButton</string>
- </object>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- <object class="NSButtonCell" id="310759369">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">^Radio 2</string>
- <reference key="NSSupport" ref="168773824"/>
- <reference key="NSControlView" ref="413705031"/>
- <int key="NSButtonFlags">1211912703</int>
- <int key="NSButtonFlags2">0</int>
- <object class="NSImage" key="NSNormalImage">
- <int key="NSImageFlags">549453824</int>
- <string key="NSSize">{18, 18}</string>
- <object class="NSMutableArray" key="NSReps">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="0"/>
- <object class="NSBitmapImageRep">
- <object class="NSData" key="NSTIFFRepresentation">
- <bytes key="NS.bytes">TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw
-IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/
-29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5
-dXV198PDw//8/Pz////////////////////////////U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAA
-AAAAAxEREUZqamrmtbW1/+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG
-AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z8/P/9fX1//Ly8v/u7u7/
-0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/
-7e3t/+3t7f/i4uL/zs7O/8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/
-5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMAAAADAAAALrCwsPrW1tb/
-3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAAD
-AAAALp2dnezg4OD/5eXl/+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns
-AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5+fn/9/f3//b29v/x8fH/
-6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4uLpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7/
-/v7+//v7+//19fX/8PDw/8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/
-///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAAAAAAAAAAAwAAABcAAABl
-YmJi3NLS0v3////////////////////////////////V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAA
-AAAAAAAAAAUAAAAfAAAAZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMAAACzAAAAnwAAAHcAAABD
-AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu
-AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgEAAAMAAAABABIAAAEB
-AAMAAAABABIAAAECAAMAAAAEAAAFxgEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES
-AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS
-AAMAAAABAAEAAAFTAAMAAAAEAAAFzodzAAcAAAwYAAAF1gAAAAAACAAIAAgACAABAAEAAQABAAAMGGFw
-cGwCAAAAbW50clJHQiBYWVogB9YABAADABMALAASYWNzcEFQUEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAPbWAAEAAAAA0y1hcHBsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAOclhZWgAAASwAAAAUZ1hZWgAAAUAAAAAUYlhZWgAAAVQAAAAUd3RwdAAAAWgAAAAUY2hhZAAA
-AXwAAAAsclRSQwAAAagAAAAOZ1RSQwAAAbgAAAAOYlRSQwAAAcgAAAAOdmNndAAAAdgAAAMSbmRpbgAA
-BOwAAAY+ZGVzYwAACywAAABkZHNjbQAAC5AAAAAubW1vZAAAC8AAAAAoY3BydAAAC+gAAAAtWFlaIAAA
-AAAAAF1KAAA0kQAACCVYWVogAAAAAAAAdCAAALRgAAAjPVhZWiAAAAAAAAAlbAAAFyoAAKfDWFlaIAAA
-AAAAAPNSAAEAAAABFs9zZjMyAAAAAAABDEIAAAXe///zJgAAB5IAAP2R///7ov///aMAAAPcAADAbGN1
-cnYAAAAAAAAAAQHNAABjdXJ2AAAAAAAAAAEBzQAAY3VydgAAAAAAAAABAc0AAHZjZ3QAAAAAAAAAAAAD
-AQAAAQACBAUGBwkKCw0ODxASExQWFxgaGxweHyAiIyQmJygpKywtLzAxMjM1Njc4OTs8PT5AQUJDREZH
-SElKS0xOT1BRUlNUVVZXWFlaW1xdXl9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gIGCg4SF
-hoeIiYqLjI2Oj5CRkpOUlZaXmJmam5ydnZ6foKGio6SlpqanqKmqq6ytra6vsLGysrO0tba3uLi5uru8
-vL2+v8DBwcLDxMXGxsfIycrKy8zNzs7P0NHS0tPU1dbW19jZ2drb3Nzd3t/g4eLi4+Tl5ufo6enq6+zt
-7u/w8fHy8/T19vf4+fr7/P3+/v8AAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR8gISIjJCUnKCkq
-Ky0uLzAxMzQ1Njc4OTo7PD0/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaWltcXV5fYGFiY2RlZmdo
-aWprbG1ub3BxcnN0dXZ3d3h5ent8fH1+f4CBgoKDhIWGh4iIiYqLjI2Oj5CRkpOUlJWWl5iZmpucnZ2e
-n6ChoqOkpaamp6ipqqusra6vsLCxsrO0tba3uLm5uru8vb6/wMHCw8TFx8jJysvMzc7P0NDR0tPU1dbX
-2Nna29ze3+Dh4uPk5ebn6err7O3u7/Hy8/T19vf5+vv8/f7/AAIDAwQFBgcICQoKCwwNDg8QERITFBUW
-FxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODg5Ojs8PT4+P0BBQkNDREVGR0hJSUpLTE1O
-Tk9QUVJSU1RVVVZXWFhZWltbXF1eXl9gYWFiY2RkZWZnZ2hpaWprbGxtbm5vcHFxcnNzdHV1dnd4eHl6
-ent8fH1+fn+AgYGCg4SEhYaHiImJiouMjY6Oj5CRkpOTlJWWl5iZmZqbnJ2en6ChoqOkpaanqKmqq6yt
-rq+xsrO0tba3uLq7vL2+wMHDxMbHycrMzs/R0tTW19nb3d7g4uTm6Ors7vDy9Pb4+vz+/wAAbmRpbgAA
-AAAAAAY2AACXGgAAVjoAAFPKAACJ3gAAJ8IAABaoAABQDQAAVDkAAiuFAAIZmQABeFEAAwEAAAIAAAAA
-AAEABgANABcAIwAxAEAAUgBlAHsAkwCrAMUA4gD/AR8BPwFhAYUBqgHQAfgCIAJLAncCpQLSAwIDMwNl
-A5gDzgQFBD0EdQSvBOsFKQVnBacF6AYqBm4GtQb8B0UHkgfkCDkIkAjnCT4JmAn0ClAKrQsLC2sLygwq
-DIwM8Q1XDcAOKA6SDv4PbA/bEE0QxBE7EbQSMRKwEzITuRREFNAVYBXxFocXHhfAGGIZBBmsGlQa+RuU
-HC4czh1yHhQeux9jIA0gvCFoIhkizyOJJEEk+SW6JnknOygFKMspkypiKzIsASzXLawuhy9gMD4xGzH8
-MtszvzSgNYY2cjdcOEw5OTorOxs8CD0EPfU+6z/nQOFB2ELUQ9VE00XcRttH5EjxSgBLCUwdTTFOUE9v
-UI9Rt1LdVAVVNlZsV6VY4FohW21ct135X09goGH0Y0tkqGYFZ19oxGova5ptCG54b/BxbnLsdG119Xd/
-eQh6knwqfcV/W4D4gpSEO4Xih4CJKorYjIqOOY/jkZuTWJUOlsyYiZpSnB6d4Z+soX+jWqUvpxOo+6rj
-rMuuwLC4sra0rra0uL+60LzfvwDBHcLdxLXGhchYyi7MCs3lz7rRmtOA1WPXR9kq2xPc/97s4M/iveSn
-5o3obupT7ELuLPAM8fLz0PW396H5f/tZ/T3//wAAAAEAAwALABYAJQA3AE0AZQCBAJ8AwQDlAQsBNQFh
-AZABwQH1AisCZAKfAtwDHANfA6MD6gQ0BH8EzQT1BR0FcAXEBhsGdAbPBy0HXAeMB+4IUgi4CSAJVAmK
-CfYKZArVC0cLgQu8DDIMqw0mDaIOIQ6hDyQPqRAvELgQ/RFDEc8SXRLuE4AUFRSrFUMV3RZ5FxcXthhY
-GPwZoRpIGvEbnBxJHPgdqB5bHw8fxSB9ITch8iKwJDAk8yW3Jn4nRigQKNwpqSp5K0osHCzxLccuoC95
-MFUxMzISMvMz1TS5NaA2hzdxOFw5STo4Oyg8Gj4DPvs/9EDuQepD6ETpRexG8Uf3SP9LFEwhTTBOQE9S
-UGZSklOrVMVV4Vb/WB5ZP1phW4Vcq13SXvthUmJ/Y69k4GYSZ0dofGm0au1tZG6ib+FxInJlc6l073Y2
-d396FXtjfLJ+A39VgKmB/4NWhK+GCYjCiiGLgYzjjkePrJESknuT5Ja8mCuZm5sMnH+d9J9qoOGiWqPV
-pVGmz6eOqE6pzqtRrNSuWq/gsWmy8rR+tgu5Kbq6vE294b93wQ7Cp8RBxd3He8kZyrrLisxbzf/Po9FK
-0vHUm9ZF1/HZn9tO3Cbc/96x4GTiGePQ5YjnQegf6Pzquex27jbv9/G583z0X/VC9wj40Pqa/GX+Mf//
-AAAAAQADAAsAJQA3AE0AZQCBAJ8AwQELATUBYQGQAcEB9QIrAmQCnwLcAxwDXwOjA+oENAR/BM0FHQVw
-BcQGGwZ0Bs8HLQeMB+4IUgi4CSAJign2CmQK1QtHC7wMMgyrDSYNog4hDqEPJA+pEC8QuBFDEl0S7hOA
-FBUUqxVDFnkXFxe2GFgY/BpIGvEbnBxJHPgdqB8PH8UgfSE3IfIjbyQwJPMltydGKBAo3Cp5K0osHC3H
-LqAveTEzMhIy8zS5NaA2hzhcOUk6ODwaPQ4+Az/0QO5C6EPoROlG8Uf3SglLFEwhTkBPUlF7UpJUxVXh
-Vv9ZP1phXKtd0mAlYVJjr2TgZhJofGm0au1tZG6ib+FxInJldO92Nnd/eMl6FXyyfgN/VYCpgf+Er4YJ
-h2WIwoohi4GOR4+skRKSe5PklVCWvJgrmZubDJx/nfSfaqDholqj1aVRps+oTqnOq1Gs1K2Xrlqv4LFp
-svK0frYLt5m5Kbnxurq8Tb3hv3fBDsHawqfEQcUPxd3He8hKyRnKusuKzFvN/87Rz6PQdtFK0vHTxtSb
-1kXXG9fx2MjZn9tO3Cbc/93Y3rHfiuBk4hni9ePQ5KzliOZk50HoH+j86drqueuX7HbtVu427xbv9/DX
-8bnymvN89F/1QvYl9wj37PjQ+bX6mvt//GX9S/4x//8AAGRlc2MAAAAAAAAACkNvbG9yIExDRAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAABtbHVjAAAAAAAAAAEAAAAMZW5VUwAAABIAAAAcAEMAbwBsAG8AcgAgAEwAQwBE
-AABtbW9kAAAAAAAABhAAAJxOAAAAAL5zkQAAAAAAAAAAAAAAAAAAAAAAdGV4dAAAAABDb3B5cmlnaHQg
-QXBwbGUgQ29tcHV0ZXIsIEluYy4sIDIwMDUAAAAAA</bytes>
- </object>
- </object>
- </object>
- </object>
- <object class="NSColor" key="NSColor" id="1027339248">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MCAwAA</bytes>
- </object>
- </object>
- <reference key="NSAlternateImage" ref="182487189"/>
- <int key="NSPeriodicDelay">400</int>
- <int key="NSPeriodicInterval">75</int>
- </object>
- </object>
- <string key="NSCellSize">{87, 18}</string>
- <string key="NSIntercellSpacing">{4, 2}</string>
- <int key="NSMatrixFlags">1151868928</int>
- <string key="NSCellClass">NSActionCell</string>
- <object class="NSButtonCell" key="NSProtoCell" id="819072791">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">Radio</string>
- <reference key="NSSupport" ref="168773824"/>
- <int key="NSButtonFlags">1211912703</int>
- <int key="NSButtonFlags2">0</int>
- <object class="NSImage" key="NSNormalImage">
- <int key="NSImageFlags">549453824</int>
- <string key="NSSize">{18, 18}</string>
- <object class="NSMutableArray" key="NSReps">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="0"/>
- <object class="NSBitmapImageRep">
- <object class="NSData" key="NSTIFFRepresentation">
- <bytes key="NS.bytes">TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw
-IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/
-29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5
-dXV198PDw//8/Pz////////////////////////////U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAA
-AAAAAxEREUZqamrmtbW1/+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG
-AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z8/P/9fX1//Ly8v/u7u7/
-0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/
-7e3t/+3t7f/i4uL/zs7O/8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/
-5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMAAAADAAAALrCwsPrW1tb/
-3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAAD
-AAAALp2dnezg4OD/5eXl/+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns
-AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5+fn/9/f3//b29v/x8fH/
-6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4uLpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7/
-/v7+//v7+//19fX/8PDw/8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/
-///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAAAAAAAAAAAwAAABcAAABl
-YmJi3NLS0v3////////////////////////////////V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAA
-AAAAAAAAAAUAAAAfAAAAZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMAAACzAAAAnwAAAHcAAABD
-AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu
-AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQEAAAMAAAABABIAAAEB
-AAMAAAABABIAAAECAAMAAAAEAAAFugEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES
-AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS
-AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
- </object>
- </object>
- </object>
- </object>
- <reference key="NSColor" ref="1027339248"/>
- </object>
- <reference key="NSAlternateImage" ref="182487189"/>
- <int key="NSPeriodicDelay">400</int>
- <int key="NSPeriodicInterval">75</int>
- </object>
- <reference key="NSSelectedCell" ref="232253570"/>
- <reference key="NSBackgroundColor" ref="1000162704"/>
- <object class="NSColor" key="NSCellBackgroundColor" id="695371698">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MQA</bytes>
- </object>
- <reference key="NSFont" ref="168773824"/>
- </object>
- <object class="NSBox" id="984598066">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">36</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSView" id="100149852">
- <reference key="NSNextResponder" ref="984598066"/>
- <int key="NSvFlags">256</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSTextField" id="4735680">
- <reference key="NSNextResponder" ref="100149852"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{18, 44}, {96, 22}}</string>
- <reference key="NSSuperview" ref="100149852"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="1038573138">
- <int key="NSCellFlags">-1804468671</int>
- <int key="NSCellFlags2">272630784</int>
- <string key="NSContents"/>
- <reference key="NSSupport" ref="168773824"/>
- <reference key="NSControlView" ref="4735680"/>
- <bool key="NSDrawsBackground">YES</bool>
- <object class="NSColor" key="NSBackgroundColor" id="407928047">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">textBackgroundColor</string>
- <reference key="NSColor" ref="695371698"/>
- </object>
- <object class="NSColor" key="NSTextColor">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">textColor</string>
- <reference key="NSColor" ref="41421868"/>
- </object>
- </object>
- </object>
- <object class="NSSearchField" id="774093761">
- <reference key="NSNextResponder" ref="100149852"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{18, 14}, {96, 22}}</string>
- <reference key="NSSuperview" ref="100149852"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSSearchFieldCell" key="NSCell" id="685372699">
- <int key="NSCellFlags">343014976</int>
- <int key="NSCellFlags2">268436480</int>
- <string key="NSContents"/>
- <reference key="NSSupport" ref="168773824"/>
- <reference key="NSControlView" ref="774093761"/>
- <bool key="NSDrawsBackground">YES</bool>
- <int key="NSTextBezelStyle">1</int>
- <reference key="NSBackgroundColor" ref="407928047"/>
- <reference key="NSTextColor" ref="50010148"/>
- <object class="NSButtonCell" key="NSSearchButtonCell">
- <int key="NSCellFlags">130560</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">search</string>
- <reference key="NSControlView" ref="774093761"/>
- <string key="NSAction">_searchFieldSearch:</string>
- <reference key="NSTarget" ref="685372699"/>
- <int key="NSButtonFlags">138690815</int>
- <int key="NSButtonFlags2">0</int>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">400</int>
- <int key="NSPeriodicInterval">75</int>
- </object>
- <object class="NSButtonCell" key="NSCancelButtonCell">
- <int key="NSCellFlags">130560</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">clear</string>
- <object class="NSMutableArray" key="NSAccessibilityOverriddenAttributes">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMutableDictionary">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>AXDescription</string>
- <string>NSAccessibilityEncodedAttributesValueType</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>cancel</string>
- <integer value="1"/>
- </object>
- </object>
- </object>
- <reference key="NSControlView" ref="774093761"/>
- <string key="NSAction">_searchFieldCancel:</string>
- <reference key="NSTarget" ref="685372699"/>
- <int key="NSButtonFlags">138690815</int>
- <int key="NSButtonFlags2">0</int>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">400</int>
- <int key="NSPeriodicInterval">75</int>
- </object>
- <int key="NSMaximumRecents">255</int>
- </object>
- </object>
- </object>
- <string key="NSFrame">{{1, 1}, {132, 76}}</string>
- <reference key="NSSuperview" ref="984598066"/>
- </object>
- </object>
- <string key="NSFrame">{{17, 82}, {134, 92}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <string key="NSOffsets">{0, 0}</string>
- <object class="NSTextFieldCell" key="NSTitleCell">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">Bindings Tests</string>
- <object class="NSFont" key="NSSupport" id="26">
- <string key="NSName">LucidaGrande</string>
- <double key="NSSize">11</double>
- <int key="NSfFlags">3100</int>
- </object>
- <reference key="NSBackgroundColor" ref="407928047"/>
- <object class="NSColor" key="NSTextColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MCAwLjgwMDAwMDAxAA</bytes>
- </object>
- </object>
- <reference key="NSContentView" ref="100149852"/>
- <int key="NSBorderType">1</int>
- <int key="NSBoxType">0</int>
- <int key="NSTitlePosition">2</int>
- <bool key="NSTransparent">NO</bool>
- </object>
- </object>
- <string key="NSFrameSize">{480, 270}</string>
- <reference key="NSSuperview"/>
- </object>
- <string key="NSScreenRect">{{0, 0}, {1680, 1028}}</string>
- <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
- </object>
- <object class="NSWindowTemplate" id="655734033">
- <int key="NSWindowStyleMask">15</int>
- <int key="NSWindowBacking">2</int>
- <string key="NSWindowRect">{{196, 240}, {480, 270}}</string>
- <int key="NSWTFlags">603979776</int>
- <string key="NSWindowTitle">^WindowTest</string>
- <string key="NSWindowClass">NSWindow</string>
- <nil key="NSViewClass"/>
- <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
- <object class="NSView" key="NSWindowView" id="769884725">
- <reference key="NSNextResponder"/>
- <int key="NSvFlags">256</int>
- <string key="NSFrameSize">{480, 270}</string>
- <reference key="NSSuperview"/>
- </object>
- <string key="NSScreenRect">{{0, 0}, {2560, 1578}}</string>
- <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
- </object>
- <object class="NSMenu" id="526087585">
- <string key="NSTitle">^MenuTest</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="383489140">
- <reference key="NSMenu" ref="526087585"/>
- <string key="NSTitle">^MenuItemTest</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="149491055"/>
- <reference key="NSMixedImage" ref="291068490"/>
- </object>
- </object>
- </object>
- <object class="NSCustomObject" id="92471218">
- <string key="NSClassName">GTMUILocalizer</string>
- </object>
- <object class="NSWindowTemplate" id="158765462">
- <int key="NSWindowStyleMask">15</int>
- <int key="NSWindowBacking">2</int>
- <string key="NSWindowRect">{{196, 240}, {480, 270}}</string>
- <int key="NSWTFlags">603979776</int>
- <string key="NSWindowTitle">^WindowTest</string>
- <string key="NSWindowClass">NSWindow</string>
- <nil key="NSViewClass"/>
- <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
- <object class="NSView" key="NSWindowView" id="405137086">
- <reference key="NSNextResponder"/>
- <int key="NSvFlags">256</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSBox" id="735149545">
- <reference key="NSNextResponder" ref="405137086"/>
- <int key="NSvFlags">36</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSView" id="866377256">
- <reference key="NSNextResponder" ref="735149545"/>
- <int key="NSvFlags">256</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSButton" id="459731495">
- <reference key="NSNextResponder" ref="866377256"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{12, 38}, {100, 32}}</string>
- <reference key="NSSuperview" ref="866377256"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="168106569">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">134217728</int>
- <string key="NSContents">^Button1</string>
- <reference key="NSSupport" ref="168773824"/>
- <reference key="NSControlView" ref="459731495"/>
- <int key="NSButtonFlags">-2038284033</int>
- <int key="NSButtonFlags2">1</int>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- <object class="NSButton" id="668934682">
- <reference key="NSNextResponder" ref="866377256"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{12, 6}, {100, 32}}</string>
- <reference key="NSSuperview" ref="866377256"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="1004837764">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">134217728</int>
- <string key="NSContents">^Button2</string>
- <reference key="NSSupport" ref="168773824"/>
- <reference key="NSControlView" ref="668934682"/>
- <int key="NSButtonFlags">-2038284033</int>
- <int key="NSButtonFlags2">1</int>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- </object>
- <string key="NSFrame">{{1, 1}, {124, 76}}</string>
- <reference key="NSSuperview" ref="735149545"/>
- </object>
- </object>
- <string key="NSFrame">{{32, 158}, {126, 92}}</string>
- <reference key="NSSuperview" ref="405137086"/>
- <string key="NSOffsets">{0, 0}</string>
- <object class="NSTextFieldCell" key="NSTitleCell">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">^Box</string>
- <reference key="NSSupport" ref="26"/>
- <reference key="NSBackgroundColor" ref="407928047"/>
- <object class="NSColor" key="NSTextColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MCAwLjgwMDAwMDAxAA</bytes>
- </object>
- </object>
- <reference key="NSContentView" ref="866377256"/>
- <int key="NSBorderType">1</int>
- <int key="NSBoxType">0</int>
- <int key="NSTitlePosition">2</int>
- <bool key="NSTransparent">NO</bool>
- </object>
- <object class="NSScrollView" id="846591189">
- <reference key="NSNextResponder" ref="405137086"/>
- <int key="NSvFlags">268</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSClipView" id="864274176">
- <reference key="NSNextResponder" ref="846591189"/>
- <int key="NSvFlags">2304</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSCustomView" id="1048920215">
- <reference key="NSNextResponder" ref="864274176"/>
- <int key="NSvFlags">274</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSTextField" id="771041486">
- <reference key="NSNextResponder" ref="1048920215"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{17, 20}, {72, 17}}</string>
- <reference key="NSSuperview" ref="1048920215"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="138037384">
- <int key="NSCellFlags">68288064</int>
- <int key="NSCellFlags2">272630784</int>
- <string key="NSContents">^Label2</string>
- <reference key="NSSupport" ref="168773824"/>
- <reference key="NSControlView" ref="771041486"/>
- <reference key="NSBackgroundColor" ref="1000162704"/>
- <reference key="NSTextColor" ref="50010148"/>
- </object>
- </object>
- <object class="NSMatrix" id="44026604">
- <reference key="NSNextResponder" ref="1048920215"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{20, 45}, {87, 38}}</string>
- <reference key="NSSuperview" ref="1048920215"/>
- <bool key="NSEnabled">YES</bool>
- <int key="NSNumRows">2</int>
- <int key="NSNumCols">1</int>
- <object class="NSMutableArray" key="NSCells">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSButtonCell" id="370153045">
- <int key="NSCellFlags">-2080244224</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">^Radio 1</string>
- <reference key="NSSupport" ref="168773824"/>
- <reference key="NSControlView" ref="44026604"/>
- <int key="NSTag">1</int>
- <int key="NSButtonFlags">1211912703</int>
- <int key="NSButtonFlags2">0</int>
- <reference key="NSAlternateImage" ref="182487189"/>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- <object class="NSButtonCell" id="54210161">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">^Radio 2</string>
- <reference key="NSSupport" ref="168773824"/>
- <reference key="NSControlView" ref="44026604"/>
- <int key="NSButtonFlags">1211912703</int>
- <int key="NSButtonFlags2">0</int>
- <object class="NSImage" key="NSNormalImage">
- <int key="NSImageFlags">549453824</int>
- <string key="NSSize">{18, 18}</string>
- <object class="NSMutableArray" key="NSReps">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="0"/>
- <object class="NSBitmapImageRep">
- <object class="NSData" key="NSTIFFRepresentation">
- <bytes key="NS.bytes">TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw
-IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/
-29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5
-dXV198PDw//8/Pz////////////////////////////U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAA
-AAAAAxEREUZqamrmtbW1/+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG
-AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z8/P/9fX1//Ly8v/u7u7/
-0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/
-7e3t/+3t7f/i4uL/zs7O/8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/
-5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMAAAADAAAALrCwsPrW1tb/
-3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAAD
-AAAALp2dnezg4OD/5eXl/+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns
-AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5+fn/9/f3//b29v/x8fH/
-6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4uLpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7/
-/v7+//v7+//19fX/8PDw/8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/
-///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAAAAAAAAAAAwAAABcAAABl
-YmJi3NLS0v3////////////////////////////////V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAA
-AAAAAAAAAAUAAAAfAAAAZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMAAACzAAAAnwAAAHcAAABD
-AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu
-AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgEAAAMAAAABABIAAAEB
-AAMAAAABABIAAAECAAMAAAAEAAAFxgEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES
-AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS
-AAMAAAABAAEAAAFTAAMAAAAEAAAFzodzAAcAAAwYAAAF1gAAAAAACAAIAAgACAABAAEAAQABAAAMGGFw
-cGwCAAAAbW50clJHQiBYWVogB9YABAADABMALAASYWNzcEFQUEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAPbWAAEAAAAA0y1hcHBsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAOclhZWgAAASwAAAAUZ1hZWgAAAUAAAAAUYlhZWgAAAVQAAAAUd3RwdAAAAWgAAAAUY2hhZAAA
-AXwAAAAsclRSQwAAAagAAAAOZ1RSQwAAAbgAAAAOYlRSQwAAAcgAAAAOdmNndAAAAdgAAAMSbmRpbgAA
-BOwAAAY+ZGVzYwAACywAAABkZHNjbQAAC5AAAAAubW1vZAAAC8AAAAAoY3BydAAAC+gAAAAtWFlaIAAA
-AAAAAF1KAAA0kQAACCVYWVogAAAAAAAAdCAAALRgAAAjPVhZWiAAAAAAAAAlbAAAFyoAAKfDWFlaIAAA
-AAAAAPNSAAEAAAABFs9zZjMyAAAAAAABDEIAAAXe///zJgAAB5IAAP2R///7ov///aMAAAPcAADAbGN1
-cnYAAAAAAAAAAQHNAABjdXJ2AAAAAAAAAAEBzQAAY3VydgAAAAAAAAABAc0AAHZjZ3QAAAAAAAAAAAAD
-AQAAAQACBAUGBwkKCw0ODxASExQWFxgaGxweHyAiIyQmJygpKywtLzAxMjM1Njc4OTs8PT5AQUJDREZH
-SElKS0xOT1BRUlNUVVZXWFlaW1xdXl9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gIGCg4SF
-hoeIiYqLjI2Oj5CRkpOUlZaXmJmam5ydnZ6foKGio6SlpqanqKmqq6ytra6vsLGysrO0tba3uLi5uru8
-vL2+v8DBwcLDxMXGxsfIycrKy8zNzs7P0NHS0tPU1dbW19jZ2drb3Nzd3t/g4eLi4+Tl5ufo6enq6+zt
-7u/w8fHy8/T19vf4+fr7/P3+/v8AAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR8gISIjJCUnKCkq
-Ky0uLzAxMzQ1Njc4OTo7PD0/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaWltcXV5fYGFiY2RlZmdo
-aWprbG1ub3BxcnN0dXZ3d3h5ent8fH1+f4CBgoKDhIWGh4iIiYqLjI2Oj5CRkpOUlJWWl5iZmpucnZ2e
-n6ChoqOkpaamp6ipqqusra6vsLCxsrO0tba3uLm5uru8vb6/wMHCw8TFx8jJysvMzc7P0NDR0tPU1dbX
-2Nna29ze3+Dh4uPk5ebn6err7O3u7/Hy8/T19vf5+vv8/f7/AAIDAwQFBgcICQoKCwwNDg8QERITFBUW
-FxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODg5Ojs8PT4+P0BBQkNDREVGR0hJSUpLTE1O
-Tk9QUVJSU1RVVVZXWFhZWltbXF1eXl9gYWFiY2RkZWZnZ2hpaWprbGxtbm5vcHFxcnNzdHV1dnd4eHl6
-ent8fH1+fn+AgYGCg4SEhYaHiImJiouMjY6Oj5CRkpOTlJWWl5iZmZqbnJ2en6ChoqOkpaanqKmqq6yt
-rq+xsrO0tba3uLq7vL2+wMHDxMbHycrMzs/R0tTW19nb3d7g4uTm6Ors7vDy9Pb4+vz+/wAAbmRpbgAA
-AAAAAAY2AACXGgAAVjoAAFPKAACJ3gAAJ8IAABaoAABQDQAAVDkAAiuFAAIZmQABeFEAAwEAAAIAAAAA
-AAEABgANABcAIwAxAEAAUgBlAHsAkwCrAMUA4gD/AR8BPwFhAYUBqgHQAfgCIAJLAncCpQLSAwIDMwNl
-A5gDzgQFBD0EdQSvBOsFKQVnBacF6AYqBm4GtQb8B0UHkgfkCDkIkAjnCT4JmAn0ClAKrQsLC2sLygwq
-DIwM8Q1XDcAOKA6SDv4PbA/bEE0QxBE7EbQSMRKwEzITuRREFNAVYBXxFocXHhfAGGIZBBmsGlQa+RuU
-HC4czh1yHhQeux9jIA0gvCFoIhkizyOJJEEk+SW6JnknOygFKMspkypiKzIsASzXLawuhy9gMD4xGzH8
-MtszvzSgNYY2cjdcOEw5OTorOxs8CD0EPfU+6z/nQOFB2ELUQ9VE00XcRttH5EjxSgBLCUwdTTFOUE9v
-UI9Rt1LdVAVVNlZsV6VY4FohW21ct135X09goGH0Y0tkqGYFZ19oxGova5ptCG54b/BxbnLsdG119Xd/
-eQh6knwqfcV/W4D4gpSEO4Xih4CJKorYjIqOOY/jkZuTWJUOlsyYiZpSnB6d4Z+soX+jWqUvpxOo+6rj
-rMuuwLC4sra0rra0uL+60LzfvwDBHcLdxLXGhchYyi7MCs3lz7rRmtOA1WPXR9kq2xPc/97s4M/iveSn
-5o3obupT7ELuLPAM8fLz0PW396H5f/tZ/T3//wAAAAEAAwALABYAJQA3AE0AZQCBAJ8AwQDlAQsBNQFh
-AZABwQH1AisCZAKfAtwDHANfA6MD6gQ0BH8EzQT1BR0FcAXEBhsGdAbPBy0HXAeMB+4IUgi4CSAJVAmK
-CfYKZArVC0cLgQu8DDIMqw0mDaIOIQ6hDyQPqRAvELgQ/RFDEc8SXRLuE4AUFRSrFUMV3RZ5FxcXthhY
-GPwZoRpIGvEbnBxJHPgdqB5bHw8fxSB9ITch8iKwJDAk8yW3Jn4nRigQKNwpqSp5K0osHCzxLccuoC95
-MFUxMzISMvMz1TS5NaA2hzdxOFw5STo4Oyg8Gj4DPvs/9EDuQepD6ETpRexG8Uf3SP9LFEwhTTBOQE9S
-UGZSklOrVMVV4Vb/WB5ZP1phW4Vcq13SXvthUmJ/Y69k4GYSZ0dofGm0au1tZG6ib+FxInJlc6l073Y2
-d396FXtjfLJ+A39VgKmB/4NWhK+GCYjCiiGLgYzjjkePrJESknuT5Ja8mCuZm5sMnH+d9J9qoOGiWqPV
-pVGmz6eOqE6pzqtRrNSuWq/gsWmy8rR+tgu5Kbq6vE294b93wQ7Cp8RBxd3He8kZyrrLisxbzf/Po9FK
-0vHUm9ZF1/HZn9tO3Cbc/96x4GTiGePQ5YjnQegf6Pzquex27jbv9/G583z0X/VC9wj40Pqa/GX+Mf//
-AAAAAQADAAsAJQA3AE0AZQCBAJ8AwQELATUBYQGQAcEB9QIrAmQCnwLcAxwDXwOjA+oENAR/BM0FHQVw
-BcQGGwZ0Bs8HLQeMB+4IUgi4CSAJign2CmQK1QtHC7wMMgyrDSYNog4hDqEPJA+pEC8QuBFDEl0S7hOA
-FBUUqxVDFnkXFxe2GFgY/BpIGvEbnBxJHPgdqB8PH8UgfSE3IfIjbyQwJPMltydGKBAo3Cp5K0osHC3H
-LqAveTEzMhIy8zS5NaA2hzhcOUk6ODwaPQ4+Az/0QO5C6EPoROlG8Uf3SglLFEwhTkBPUlF7UpJUxVXh
-Vv9ZP1phXKtd0mAlYVJjr2TgZhJofGm0au1tZG6ib+FxInJldO92Nnd/eMl6FXyyfgN/VYCpgf+Er4YJ
-h2WIwoohi4GOR4+skRKSe5PklVCWvJgrmZubDJx/nfSfaqDholqj1aVRps+oTqnOq1Gs1K2Xrlqv4LFp
-svK0frYLt5m5Kbnxurq8Tb3hv3fBDsHawqfEQcUPxd3He8hKyRnKusuKzFvN/87Rz6PQdtFK0vHTxtSb
-1kXXG9fx2MjZn9tO3Cbc/93Y3rHfiuBk4hni9ePQ5KzliOZk50HoH+j86drqueuX7HbtVu427xbv9/DX
-8bnymvN89F/1QvYl9wj37PjQ+bX6mvt//GX9S/4x//8AAGRlc2MAAAAAAAAACkNvbG9yIExDRAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAABtbHVjAAAAAAAAAAEAAAAMZW5VUwAAABIAAAAcAEMAbwBsAG8AcgAgAEwAQwBE
-AABtbW9kAAAAAAAABhAAAJxOAAAAAL5zkQAAAAAAAAAAAAAAAAAAAAAAdGV4dAAAAABDb3B5cmlnaHQg
-QXBwbGUgQ29tcHV0ZXIsIEluYy4sIDIwMDUAAAAAA</bytes>
- </object>
- </object>
- </object>
- </object>
- <reference key="NSColor" ref="1027339248"/>
- </object>
- <reference key="NSAlternateImage" ref="182487189"/>
- <int key="NSPeriodicDelay">400</int>
- <int key="NSPeriodicInterval">75</int>
- </object>
- </object>
- <string key="NSCellSize">{87, 18}</string>
- <string key="NSIntercellSpacing">{4, 2}</string>
- <int key="NSMatrixFlags">1151868928</int>
- <string key="NSCellClass">NSActionCell</string>
- <object class="NSButtonCell" key="NSProtoCell" id="773257705">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">Radio</string>
- <reference key="NSSupport" ref="168773824"/>
- <int key="NSButtonFlags">1211912703</int>
- <int key="NSButtonFlags2">0</int>
- <object class="NSImage" key="NSNormalImage">
- <int key="NSImageFlags">549453824</int>
- <string key="NSSize">{18, 18}</string>
- <object class="NSMutableArray" key="NSReps">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="0"/>
- <object class="NSBitmapImageRep">
- <object class="NSData" key="NSTIFFRepresentation">
- <bytes key="NS.bytes">TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw
-IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/
-29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5
-dXV198PDw//8/Pz////////////////////////////U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAA
-AAAAAxEREUZqamrmtbW1/+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG
-AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z8/P/9fX1//Ly8v/u7u7/
-0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/
-7e3t/+3t7f/i4uL/zs7O/8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/
-5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMAAAADAAAALrCwsPrW1tb/
-3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAAD
-AAAALp2dnezg4OD/5eXl/+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns
-AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5+fn/9/f3//b29v/x8fH/
-6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4uLpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7/
-/v7+//v7+//19fX/8PDw/8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/
-///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAAAAAAAAAAAwAAABcAAABl
-YmJi3NLS0v3////////////////////////////////V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAA
-AAAAAAAAAAUAAAAfAAAAZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMAAACzAAAAnwAAAHcAAABD
-AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu
-AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQEAAAMAAAABABIAAAEB
-AAMAAAABABIAAAECAAMAAAAEAAAFugEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES
-AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS
-AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
- </object>
- </object>
- </object>
- </object>
- <reference key="NSColor" ref="1027339248"/>
- </object>
- <reference key="NSAlternateImage" ref="182487189"/>
- <int key="NSPeriodicDelay">400</int>
- <int key="NSPeriodicInterval">75</int>
- </object>
- <reference key="NSSelectedCell" ref="370153045"/>
- <reference key="NSBackgroundColor" ref="1000162704"/>
- <reference key="NSCellBackgroundColor" ref="695371698"/>
- <reference key="NSFont" ref="168773824"/>
- </object>
- <object class="NSTextField" id="213996513">
- <reference key="NSNextResponder" ref="1048920215"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{17, 91}, {74, 17}}</string>
- <reference key="NSSuperview" ref="1048920215"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="279566570">
- <int key="NSCellFlags">68288064</int>
- <int key="NSCellFlags2">272630784</int>
- <string key="NSContents">^Label1</string>
- <reference key="NSSupport" ref="168773824"/>
- <reference key="NSControlView" ref="213996513"/>
- <reference key="NSBackgroundColor" ref="1000162704"/>
- <reference key="NSTextColor" ref="50010148"/>
- </object>
- </object>
- </object>
- <string key="NSFrameSize">{127, 128}</string>
- <reference key="NSSuperview" ref="864274176"/>
- <string key="NSClassName">NSView</string>
- </object>
- </object>
- <string key="NSFrame">{{1, 1}, {127, 128}}</string>
- <reference key="NSSuperview" ref="846591189"/>
- <reference key="NSNextKeyView" ref="1048920215"/>
- <reference key="NSDocView" ref="1048920215"/>
- <reference key="NSBGColor" ref="1000162704"/>
- <int key="NScvFlags">4</int>
- </object>
- <object class="NSScroller" id="282042269">
- <reference key="NSNextResponder" ref="846591189"/>
- <int key="NSvFlags">256</int>
- <string key="NSFrame">{{128, 1}, {15, 128}}</string>
- <reference key="NSSuperview" ref="846591189"/>
- <reference key="NSTarget" ref="846591189"/>
- <string key="NSAction">_doScroller:</string>
- <double key="NSCurValue">1</double>
- <double key="NSPercent">0.9636363</double>
- </object>
- <object class="NSScroller" id="383137617">
- <reference key="NSNextResponder" ref="846591189"/>
- <int key="NSvFlags">256</int>
- <string key="NSFrame">{{1, 129}, {127, 15}}</string>
- <reference key="NSSuperview" ref="846591189"/>
- <int key="NSsFlags">1</int>
- <reference key="NSTarget" ref="846591189"/>
- <string key="NSAction">_doScroller:</string>
- <double key="NSPercent">0.50602409999999998</double>
- </object>
- </object>
- <string key="NSFrame">{{219, 101}, {144, 145}}</string>
- <reference key="NSSuperview" ref="405137086"/>
- <reference key="NSNextKeyView" ref="864274176"/>
- <int key="NSsFlags">50</int>
- <reference key="NSVScroller" ref="282042269"/>
- <reference key="NSHScroller" ref="383137617"/>
- <reference key="NSContentView" ref="864274176"/>
- </object>
- <object class="NSSplitView" id="161950549">
- <reference key="NSNextResponder" ref="405137086"/>
- <int key="NSvFlags">256</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSButton" id="485121564">
- <reference key="NSNextResponder" ref="161950549"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrameSize">{106, 18}</string>
- <reference key="NSSuperview" ref="161950549"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="62569003">
- <int key="NSCellFlags">-2080244224</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">^Checkbox 1</string>
- <reference key="NSSupport" ref="168773824"/>
- <reference key="NSControlView" ref="485121564"/>
- <int key="NSButtonFlags">1211912703</int>
- <int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="437083559"/>
- <reference key="NSAlternateImage" ref="634128218"/>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- <object class="NSButton" id="300872861">
- <reference key="NSNextResponder" ref="161950549"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{0, 27}, {106, 18}}</string>
- <reference key="NSSuperview" ref="161950549"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="241630681">
- <int key="NSCellFlags">-2080244224</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">^Checkbox 2</string>
- <reference key="NSSupport" ref="168773824"/>
- <reference key="NSControlView" ref="300872861"/>
- <int key="NSButtonFlags">1211912703</int>
- <int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="437083559"/>
- <reference key="NSAlternateImage" ref="634128218"/>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- </object>
- <string key="NSFrame">{{42, 66}, {106, 45}}</string>
- <reference key="NSSuperview" ref="405137086"/>
- </object>
- <object class="NSComboBox" id="311378109">
- <reference key="NSNextResponder" ref="405137086"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{371, 180}, {92, 26}}</string>
- <reference key="NSSuperview" ref="405137086"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSComboBoxCell" key="NSCell" id="693732256">
- <int key="NSCellFlags">343014976</int>
- <int key="NSCellFlags2">272630784</int>
- <string key="NSContents">^Label1</string>
- <reference key="NSSupport" ref="168773824"/>
- <string key="NSPlaceholderString">^Placeholder1</string>
- <reference key="NSControlView" ref="311378109"/>
- <bool key="NSDrawsBackground">YES</bool>
- <reference key="NSBackgroundColor" ref="407928047"/>
- <reference key="NSTextColor" ref="50010148"/>
- <int key="NSVisibleItemCount">4</int>
- <bool key="NSHasVerticalScroller">YES</bool>
- <object class="NSMutableArray" key="NSPopUpListData">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>^Choice1</string>
- <string>^Choice2</string>
- <string>^Choice3</string>
- <string>^Choice4</string>
- <string>^Choice5</string>
- </object>
- <reference key="NSDelegate" ref="311378109"/>
- <object class="NSComboTableView" key="NSTableView" id="743163681">
- <reference key="NSNextResponder"/>
- <int key="NSvFlags">274</int>
- <string key="NSFrameSize">{13, 105}</string>
- <reference key="NSSuperview"/>
- <reference key="NSWindow"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSMutableArray" key="NSTableColumns">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSTableColumn">
- <integer value="0" key="NSIdentifier"/>
- <double key="NSWidth">10</double>
- <double key="NSMinWidth">10</double>
- <double key="NSMaxWidth">1000</double>
- <object class="NSTableHeaderCell" key="NSHeaderCell">
- <int key="NSCellFlags">75628032</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents"/>
- <object class="NSFont" key="NSSupport">
- <string key="NSName">LucidaGrande</string>
- <double key="NSSize">12</double>
- <int key="NSfFlags">16</int>
- </object>
- <object class="NSColor" key="NSBackgroundColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC4zMzMzMzI5ODU2AA</bytes>
- </object>
- <reference key="NSTextColor" ref="695371698"/>
- </object>
- <object class="NSTextFieldCell" key="NSDataCell">
- <int key="NSCellFlags">338820672</int>
- <int key="NSCellFlags2">1024</int>
- <reference key="NSSupport" ref="168773824"/>
- <reference key="NSControlView" ref="743163681"/>
- <bool key="NSDrawsBackground">YES</bool>
- <object class="NSColor" key="NSBackgroundColor" id="619521113">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">controlBackgroundColor</string>
- <reference key="NSColor" ref="792644860"/>
- </object>
- <reference key="NSTextColor" ref="50010148"/>
- </object>
- <int key="NSResizingMask">3</int>
- <bool key="NSIsResizeable">YES</bool>
- <reference key="NSTableView" ref="743163681"/>
- </object>
- </object>
- <double key="NSIntercellSpacingWidth">3</double>
- <double key="NSIntercellSpacingHeight">2</double>
- <reference key="NSBackgroundColor" ref="619521113"/>
- <object class="NSColor" key="NSGridColor">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">gridColor</string>
- <object class="NSColor" key="NSColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC41AA</bytes>
- </object>
- </object>
- <double key="NSRowHeight">19</double>
- <string key="NSAction">tableViewAction:</string>
- <int key="NSTvFlags">-765427712</int>
- <reference key="NSDelegate" ref="693732256"/>
- <reference key="NSDataSource" ref="693732256"/>
- <reference key="NSTarget" ref="693732256"/>
- <int key="NSColumnAutoresizingStyle">1</int>
- <int key="NSDraggingSourceMaskForLocal">15</int>
- <int key="NSDraggingSourceMaskForNonLocal">0</int>
- <bool key="NSAllowsTypeSelect">YES</bool>
- <int key="NSTableViewDraggingDestinationStyle">0</int>
- </object>
- </object>
- </object>
- </object>
- <string key="NSFrameSize">{480, 270}</string>
- <reference key="NSSuperview"/>
- </object>
- <string key="NSScreenRect">{{0, 0}, {2560, 1578}}</string>
- <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
- </object>
- <object class="NSUserDefaultsController" id="129694561">
- <bool key="NSSharedInstance">YES</bool>
- </object>
- </object>
- <object class="IBObjectContainer" key="IBDocument.Objects">
- <object class="NSMutableArray" key="connectionRecords">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">window</string>
- <reference key="source" ref="1001"/>
- <reference key="destination" ref="1005"/>
- </object>
- <int key="connectionID">3</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">owner_</string>
- <reference key="source" ref="92471218"/>
- <reference key="destination" ref="1001"/>
- </object>
- <int key="connectionID">32</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">otherWindow_</string>
- <reference key="source" ref="1001"/>
- <reference key="destination" ref="655734033"/>
- </object>
- <int key="connectionID">33</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">otherMenu_</string>
- <reference key="source" ref="1001"/>
- <reference key="destination" ref="526087585"/>
- </object>
- <int key="connectionID">34</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">anotherWindow_</string>
- <reference key="source" ref="1001"/>
- <reference key="destination" ref="158765462"/>
- </object>
- <int key="connectionID">53</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">bindingsSearchField_</string>
- <reference key="source" ref="1001"/>
- <reference key="destination" ref="774093761"/>
- </object>
- <int key="connectionID">102</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">bindingsTextField_</string>
- <reference key="source" ref="1001"/>
- <reference key="destination" ref="4735680"/>
- </object>
- <int key="connectionID">103</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBBindingConnection" key="connection">
- <string key="label">displayPatternValue1: values.foo</string>
- <reference key="source" ref="1038573138"/>
- <reference key="destination" ref="129694561"/>
- <object class="NSNibBindingConnector" key="connector">
- <reference key="NSSource" ref="1038573138"/>
- <reference key="NSDestination" ref="129694561"/>
- <string key="NSLabel">displayPatternValue1: values.foo</string>
- <string key="NSBinding">displayPatternValue1</string>
- <string key="NSKeyPath">values.foo</string>
- <object class="NSDictionary" key="NSOptions">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>NSDisplayPattern</string>
- <string>NSMultipleValuesPlaceholder</string>
- <string>NSNoSelectionPlaceholder</string>
- <string>NSNotApplicablePlaceholder</string>
- <string>NSNullPlaceholder</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>^DisplayPattern</string>
- <string>^MultipleValuesPlaceholder</string>
- <string>^NoSelectionPlaceholder</string>
- <string>^NotApplicablePlaceholder</string>
- <string>^NullPlaceholder</string>
- </object>
- </object>
- <int key="NSNibBindingConnectorVersion">2</int>
- </object>
- </object>
- <int key="connectionID">111</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBBindingConnection" key="connection">
- <string key="label">predicate: values.foo</string>
- <reference key="source" ref="774093761"/>
- <reference key="destination" ref="129694561"/>
- <object class="NSNibBindingConnector" key="connector">
- <reference key="NSSource" ref="774093761"/>
- <reference key="NSDestination" ref="129694561"/>
- <string key="NSLabel">predicate: values.foo</string>
- <string key="NSBinding">predicate</string>
- <string key="NSKeyPath">values.foo</string>
- <object class="NSDictionary" key="NSOptions">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>NSDisplayName</string>
- <string>NSPredicateFormat</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>^DisplayName</string>
- <string>keyPath contains $value</string>
- </object>
- </object>
- <int key="NSNibBindingConnectorVersion">2</int>
- </object>
- </object>
- <int key="connectionID">114</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBBindingConnection" key="connection">
- <string key="label">displayPatternValue1: values</string>
- <reference key="source" ref="4735680"/>
- <reference key="destination" ref="129694561"/>
- <object class="NSNibBindingConnector" key="connector">
- <reference key="NSSource" ref="4735680"/>
- <reference key="NSDestination" ref="129694561"/>
- <string key="NSLabel">displayPatternValue1: values</string>
- <string key="NSBinding">displayPatternValue1</string>
- <string key="NSKeyPath">values</string>
- <object class="NSDictionary" key="NSOptions">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>NSDisplayPattern</string>
- <string>NSMultipleValuesPlaceholder</string>
- <string>NSNoSelectionPlaceholder</string>
- <string>NSNotApplicablePlaceholder</string>
- <string>NSNullPlaceholder</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>^DisplayPattern</string>
- <string>^MultipleValuesPlaceholder</string>
- <string>^NoSelectionPlaceholder</string>
- <string>^NotApplicablePlaceholder</string>
- <string>^NullPlaceholder</string>
- </object>
- </object>
- <int key="NSNibBindingConnectorVersion">2</int>
- </object>
- </object>
- <int key="connectionID">119</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="1001"/>
- <reference key="parent" ref="0"/>
- <string key="objectName">File's Owner</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-1</int>
- <reference key="object" ref="1003"/>
- <reference key="parent" ref="0"/>
- <string key="objectName">First Responder</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-3</int>
- <reference key="object" ref="1004"/>
- <reference key="parent" ref="0"/>
- <string key="objectName">Application</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">1</int>
- <reference key="object" ref="1005"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1006"/>
- </object>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">2</int>
- <reference key="object" ref="1006"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="934296854"/>
- <reference ref="657027262"/>
- <reference ref="1054080138"/>
- <reference ref="18987080"/>
- <reference ref="39833761"/>
- <reference ref="197597199"/>
- <reference ref="739084402"/>
- <reference ref="484232841"/>
- <reference ref="413705031"/>
- <reference ref="984598066"/>
- </object>
- <reference key="parent" ref="1005"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">4</int>
- <reference key="object" ref="934296854"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="768899742"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">5</int>
- <reference key="object" ref="768899742"/>
- <reference key="parent" ref="934296854"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">6</int>
- <reference key="object" ref="657027262"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="105732693"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">7</int>
- <reference key="object" ref="105732693"/>
- <reference key="parent" ref="657027262"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">8</int>
- <reference key="object" ref="1054080138"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="567210703"/>
- <reference ref="786693096"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">9</int>
- <reference key="object" ref="567210703"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="837485648"/>
- </object>
- <reference key="parent" ref="1054080138"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">10</int>
- <reference key="object" ref="786693096"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="75519688"/>
- </object>
- <reference key="parent" ref="1054080138"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">11</int>
- <reference key="object" ref="75519688"/>
- <reference key="parent" ref="786693096"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">12</int>
- <reference key="object" ref="837485648"/>
- <reference key="parent" ref="567210703"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">13</int>
- <reference key="object" ref="39833761"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="569396622"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">14</int>
- <reference key="object" ref="569396622"/>
- <reference key="parent" ref="39833761"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">15</int>
- <reference key="object" ref="18987080"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="851209037"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">16</int>
- <reference key="object" ref="851209037"/>
- <reference key="parent" ref="18987080"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">22</int>
- <reference key="object" ref="655734033"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="769884725"/>
- </object>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">23</int>
- <reference key="object" ref="769884725"/>
- <reference key="parent" ref="655734033"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">24</int>
- <reference key="object" ref="526087585"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="383489140"/>
- </object>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">25</int>
- <reference key="object" ref="383489140"/>
- <reference key="parent" ref="526087585"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">30</int>
- <reference key="object" ref="92471218"/>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">35</int>
- <reference key="object" ref="197597199"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1073502186"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">36</int>
- <reference key="object" ref="1073502186"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="768660937"/>
- </object>
- <reference key="parent" ref="197597199"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">37</int>
- <reference key="object" ref="768660937"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="662787728"/>
- <reference ref="180141984"/>
- </object>
- <reference key="parent" ref="1073502186"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">38</int>
- <reference key="object" ref="662787728"/>
- <reference key="parent" ref="768660937"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">39</int>
- <reference key="object" ref="180141984"/>
- <reference key="parent" ref="768660937"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">41</int>
- <reference key="object" ref="739084402"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="450501437"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">42</int>
- <reference key="object" ref="450501437"/>
- <reference key="parent" ref="739084402"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">45</int>
- <reference key="object" ref="484232841"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="468013402"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">46</int>
- <reference key="object" ref="468013402"/>
- <reference key="parent" ref="484232841"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">47</int>
- <reference key="object" ref="413705031"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="232253570"/>
- <reference ref="310759369"/>
- <reference ref="819072791"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">48</int>
- <reference key="object" ref="232253570"/>
- <reference key="parent" ref="413705031"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">49</int>
- <reference key="object" ref="310759369"/>
- <reference key="parent" ref="413705031"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">50</int>
- <reference key="object" ref="819072791"/>
- <reference key="parent" ref="413705031"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">51</int>
- <reference key="object" ref="158765462"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="405137086"/>
- </object>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">52</int>
- <reference key="object" ref="405137086"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="735149545"/>
- <reference ref="846591189"/>
- <reference ref="161950549"/>
- <reference ref="311378109"/>
- </object>
- <reference key="parent" ref="158765462"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">70</int>
- <reference key="object" ref="735149545"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="459731495"/>
- <reference ref="668934682"/>
- </object>
- <reference key="parent" ref="405137086"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">54</int>
- <reference key="object" ref="459731495"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="168106569"/>
- </object>
- <reference key="parent" ref="735149545"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">57</int>
- <reference key="object" ref="168106569"/>
- <reference key="parent" ref="459731495"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">55</int>
- <reference key="object" ref="668934682"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1004837764"/>
- </object>
- <reference key="parent" ref="735149545"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">56</int>
- <reference key="object" ref="1004837764"/>
- <reference key="parent" ref="668934682"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">72</int>
- <reference key="object" ref="846591189"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="282042269"/>
- <reference ref="383137617"/>
- <reference ref="1048920215"/>
- </object>
- <reference key="parent" ref="405137086"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">73</int>
- <reference key="object" ref="282042269"/>
- <reference key="parent" ref="846591189"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">74</int>
- <reference key="object" ref="383137617"/>
- <reference key="parent" ref="846591189"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">71</int>
- <reference key="object" ref="1048920215"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="213996513"/>
- <reference ref="44026604"/>
- <reference ref="771041486"/>
- </object>
- <reference key="parent" ref="846591189"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">62</int>
- <reference key="object" ref="213996513"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="279566570"/>
- </object>
- <reference key="parent" ref="1048920215"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">58</int>
- <reference key="object" ref="44026604"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="773257705"/>
- <reference ref="54210161"/>
- <reference ref="370153045"/>
- </object>
- <reference key="parent" ref="1048920215"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">63</int>
- <reference key="object" ref="771041486"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="138037384"/>
- </object>
- <reference key="parent" ref="1048920215"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">68</int>
- <reference key="object" ref="138037384"/>
- <reference key="parent" ref="771041486"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">59</int>
- <reference key="object" ref="773257705"/>
- <reference key="parent" ref="44026604"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">60</int>
- <reference key="object" ref="54210161"/>
- <reference key="parent" ref="44026604"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">61</int>
- <reference key="object" ref="370153045"/>
- <reference key="parent" ref="44026604"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">69</int>
- <reference key="object" ref="279566570"/>
- <reference key="parent" ref="213996513"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">76</int>
- <reference key="object" ref="161950549"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="485121564"/>
- <reference ref="300872861"/>
- </object>
- <reference key="parent" ref="405137086"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">64</int>
- <reference key="object" ref="485121564"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="62569003"/>
- </object>
- <reference key="parent" ref="161950549"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">67</int>
- <reference key="object" ref="62569003"/>
- <reference key="parent" ref="485121564"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">65</int>
- <reference key="object" ref="300872861"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="241630681"/>
- </object>
- <reference key="parent" ref="161950549"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">66</int>
- <reference key="object" ref="241630681"/>
- <reference key="parent" ref="300872861"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">97</int>
- <reference key="object" ref="984598066"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="774093761"/>
- <reference ref="4735680"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">98</int>
- <reference key="object" ref="774093761"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="685372699"/>
- </object>
- <reference key="parent" ref="984598066"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">99</int>
- <reference key="object" ref="4735680"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1038573138"/>
- </object>
- <reference key="parent" ref="984598066"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">100</int>
- <reference key="object" ref="1038573138"/>
- <reference key="parent" ref="4735680"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">101</int>
- <reference key="object" ref="685372699"/>
- <reference key="parent" ref="774093761"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">104</int>
- <reference key="object" ref="129694561"/>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">120</int>
- <reference key="object" ref="311378109"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="693732256"/>
- </object>
- <reference key="parent" ref="405137086"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">121</int>
- <reference key="object" ref="693732256"/>
- <reference key="parent" ref="311378109"/>
- </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.IBPluginDependency</string>
- <string>-2.IBPluginDependency</string>
- <string>-3.IBPluginDependency</string>
- <string>1.IBEditorWindowLastContentRect</string>
- <string>1.IBPluginDependency</string>
- <string>1.IBWindowTemplateEditedContentRect</string>
- <string>1.NSWindowTemplate.visibleAtLaunch</string>
- <string>1.WindowOrigin</string>
- <string>1.editorWindowContentRectSynchronizationRect</string>
- <string>10.IBPluginDependency</string>
- <string>100.IBPluginDependency</string>
- <string>101.IBPluginDependency</string>
- <string>11.IBPluginDependency</string>
- <string>12.IBPluginDependency</string>
- <string>120.IBPluginDependency</string>
- <string>120.IBViewBoundsToFrameTransform</string>
- <string>121.IBPluginDependency</string>
- <string>13.IBPluginDependency</string>
- <string>14.IBPluginDependency</string>
- <string>15.IBPluginDependency</string>
- <string>16.IBPluginDependency</string>
- <string>2.IBPluginDependency</string>
- <string>22.IBEditorWindowLastContentRect</string>
- <string>22.IBPluginDependency</string>
- <string>22.IBWindowTemplateEditedContentRect</string>
- <string>22.NSWindowTemplate.visibleAtLaunch</string>
- <string>23.IBPluginDependency</string>
- <string>24.IBEditorWindowLastContentRect</string>
- <string>24.IBPluginDependency</string>
- <string>25.IBPluginDependency</string>
- <string>30.IBPluginDependency</string>
- <string>35.IBPluginDependency</string>
- <string>36.IBPluginDependency</string>
- <string>37.IBEditorWindowLastContentRect</string>
- <string>37.IBPluginDependency</string>
- <string>38.IBPluginDependency</string>
- <string>39.IBPluginDependency</string>
- <string>4.IBPluginDependency</string>
- <string>41.IBPluginDependency</string>
- <string>42.IBPluginDependency</string>
- <string>45.IBPluginDependency</string>
- <string>46.IBPluginDependency</string>
- <string>47.IBPluginDependency</string>
- <string>48.IBPluginDependency</string>
- <string>49.IBPluginDependency</string>
- <string>5.IBPluginDependency</string>
- <string>50.IBPluginDependency</string>
- <string>51.IBEditorWindowLastContentRect</string>
- <string>51.IBPluginDependency</string>
- <string>51.IBWindowTemplateEditedContentRect</string>
- <string>51.NSWindowTemplate.visibleAtLaunch</string>
- <string>52.IBPluginDependency</string>
- <string>54.IBPluginDependency</string>
- <string>55.IBPluginDependency</string>
- <string>56.IBPluginDependency</string>
- <string>57.IBPluginDependency</string>
- <string>58.IBPluginDependency</string>
- <string>59.IBPluginDependency</string>
- <string>6.IBPluginDependency</string>
- <string>60.IBPluginDependency</string>
- <string>61.IBPluginDependency</string>
- <string>62.IBPluginDependency</string>
- <string>63.IBPluginDependency</string>
- <string>64.IBPluginDependency</string>
- <string>65.IBPluginDependency</string>
- <string>66.IBPluginDependency</string>
- <string>67.IBPluginDependency</string>
- <string>68.IBPluginDependency</string>
- <string>69.IBPluginDependency</string>
- <string>7.IBPluginDependency</string>
- <string>8.IBPluginDependency</string>
- <string>9.IBPluginDependency</string>
- <string>98.IBPluginDependency</string>
- <string>99.IBPluginDependency</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{174, 328}, {480, 270}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{174, 328}, {480, 270}}</string>
- <boolean value="NO"/>
- <string>{196, 240}</string>
- <string>{{357, 418}, {480, 270}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <object class="NSAffineTransform">
- <bytes key="NSTransformStruct">P4AAAL+AAABDuYAAw0wAAA</bytes>
- </object>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{387, 479}, {480, 270}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{387, 479}, {480, 270}}</string>
- <boolean value="NO"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{126, 673}, {161, 23}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{478, 980}, {122, 43}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{324, 285}, {480, 270}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{324, 285}, {480, 270}}</string>
- <boolean value="NO"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</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">121</int>
- </object>
- <object class="IBClassDescriber" key="IBDocument.Classes">
- <object class="NSMutableArray" key="referencedPartialClassDescriptions">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBPartialClassDescription">
- <string key="className">GTMUILocalizer</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>otherObjectToLocalize_</string>
- <string>owner_</string>
- <string>yetAnotherObjectToLocalize_</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>id</string>
- <string>id</string>
- <string>id</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>otherObjectToLocalize_</string>
- <string>owner_</string>
- <string>yetAnotherObjectToLocalize_</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBToOneOutletInfo">
- <string key="name">otherObjectToLocalize_</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBToOneOutletInfo">
- <string key="name">owner_</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBToOneOutletInfo">
- <string key="name">yetAnotherObjectToLocalize_</string>
- <string key="candidateClassName">id</string>
- </object>
- </object>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMUILocalizer.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">GTMUILocalizerTestWindowController</string>
- <string key="superclassName">NSWindowController</string>
- <object class="NSMutableDictionary" key="outlets">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>anotherWindow_</string>
- <string>bindingsSearchField_</string>
- <string>bindingsTextField_</string>
- <string>otherMenu_</string>
- <string>otherWindow_</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>NSWindow</string>
- <string>NSSearchField</string>
- <string>NSTextField</string>
- <string>NSMenu</string>
- <string>NSWindow</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>anotherWindow_</string>
- <string>bindingsSearchField_</string>
- <string>bindingsTextField_</string>
- <string>otherMenu_</string>
- <string>otherWindow_</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBToOneOutletInfo">
- <string key="name">anotherWindow_</string>
- <string key="candidateClassName">NSWindow</string>
- </object>
- <object class="IBToOneOutletInfo">
- <string key="name">bindingsSearchField_</string>
- <string key="candidateClassName">NSSearchField</string>
- </object>
- <object class="IBToOneOutletInfo">
- <string key="name">bindingsTextField_</string>
- <string key="candidateClassName">NSTextField</string>
- </object>
- <object class="IBToOneOutletInfo">
- <string key="name">otherMenu_</string>
- <string key="candidateClassName">NSMenu</string>
- </object>
- <object class="IBToOneOutletInfo">
- <string key="name">otherWindow_</string>
- <string key="candidateClassName">NSWindow</string>
- </object>
- </object>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMUILocalizerTest.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="485269976">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMAppKit+UnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMAppKitUnitTestingUtilities.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSBox</string>
- <reference key="sourceIdentifier" ref="485269976"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSButton</string>
- <reference key="sourceIdentifier" ref="485269976"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSCell</string>
- <reference key="sourceIdentifier" ref="485269976"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSComboBox</string>
- <reference key="sourceIdentifier" ref="485269976"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSControl</string>
- <reference key="sourceIdentifier" ref="485269976"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSMatrix</string>
- <reference key="sourceIdentifier" ref="485269976"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSMenu</string>
- <reference key="sourceIdentifier" ref="485269976"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSMenuItem</string>
- <reference key="sourceIdentifier" ref="485269976"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMCarbonEvent.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMDelegatingTableColumn.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Foundation/GTMNSAppleEventDescriptor+Foundation.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Foundation/GTMNSObject+KeyValueObserving.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMCALayer+UnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMNSObject+BindingUnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMNSObject+UnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSTabView</string>
- <reference key="sourceIdentifier" ref="485269976"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSTabViewItem</string>
- <reference key="sourceIdentifier" ref="485269976"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSTextField</string>
- <reference key="sourceIdentifier" ref="485269976"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="185574222">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMNSAnimatablePropertyContainer.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <reference key="sourceIdentifier" ref="485269976"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindow</string>
- <reference key="sourceIdentifier" ref="185574222"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindow</string>
- <reference key="sourceIdentifier" ref="485269976"/>
- </object>
- </object>
- <object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBPartialClassDescription">
- <string key="className">NSActionCell</string>
- <string key="superclassName">NSCell</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSActionCell.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <string key="superclassName">NSResponder</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="565747449">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSApplication.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="925504769">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSApplicationScripting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="651790410">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSColorPanel.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSHelpManager.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSPageLayout.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSUserInterfaceItemSearching.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSBox</string>
- <string key="superclassName">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSBox.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSButton</string>
- <string key="superclassName">NSControl</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSButton.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSButtonCell</string>
- <string key="superclassName">NSActionCell</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSButtonCell.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSCell</string>
- <string key="superclassName">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSCell.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSComboBox</string>
- <string key="superclassName">NSTextField</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSComboBox.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSComboBoxCell</string>
- <string key="superclassName">NSTextFieldCell</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSComboBoxCell.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSControl</string>
- <string key="superclassName">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="187673849">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSControl.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSController</string>
- <string key="superclassName">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSFormatter</string>
- <string key="superclassName">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSFormatter.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSMatrix</string>
- <string key="superclassName">NSControl</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSMatrix.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSMenu</string>
- <string key="superclassName">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="117596544">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSMenu.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSMenuItem</string>
- <string key="superclassName">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="384663051">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSMenuItem.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSMenuItemCell</string>
- <string key="superclassName">NSButtonCell</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSMenuItemCell.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">AddressBook.framework/Headers/ABActions.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">AppKit.framework/Headers/NSAccessibility.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <reference key="sourceIdentifier" ref="565747449"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <reference key="sourceIdentifier" ref="925504769"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <reference key="sourceIdentifier" ref="651790410"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <reference key="sourceIdentifier" ref="187673849"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSDictionaryController.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">AppKit.framework/Headers/NSDragging.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">AppKit.framework/Headers/NSFontManager.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">AppKit.framework/Headers/NSFontPanel.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">AppKit.framework/Headers/NSKeyValueBinding.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <reference key="sourceIdentifier" ref="117596544"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSNibLoading.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">AppKit.framework/Headers/NSOutlineView.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">AppKit.framework/Headers/NSPasteboard.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">AppKit.framework/Headers/NSSavePanel.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">AppKit.framework/Headers/NSTableView.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">AppKit.framework/Headers/NSToolbarItem.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="380080729">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSView.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/NSArchiver.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/NSClassDescription.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/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/NSObjectScripting.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/NSPortCoder.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/NSScriptClassDescription.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/NSScriptKeyValueCoding.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/NSScriptObjectSpecifiers.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/NSScriptWhoseTests.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/NSURLDownload.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">PrintCore.framework/Headers/PDEPluginInterface.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">QuartzCore.framework/Headers/CAAnimation.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">QuartzCore.framework/Headers/CALayer.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">QuartzCore.framework/Headers/CIImageProvider.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSPopUpButton</string>
- <string key="superclassName">NSButton</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSPopUpButton.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSPopUpButtonCell</string>
- <string key="superclassName">NSMenuItemCell</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSPopUpButtonCell.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSResponder</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSInterfaceStyle.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSResponder</string>
- <string key="superclassName">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSResponder.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSScrollView</string>
- <string key="superclassName">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSScrollView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSScroller</string>
- <string key="superclassName">NSControl</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSScroller.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSSearchField</string>
- <string key="superclassName">NSTextField</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSSearchField.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSSearchFieldCell</string>
- <string key="superclassName">NSTextFieldCell</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSSearchFieldCell.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSSplitView</string>
- <string key="superclassName">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSSplitView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSTabView</string>
- <string key="superclassName">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSTabView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSTabViewItem</string>
- <string key="superclassName">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSTabViewItem.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSTextField</string>
- <string key="superclassName">NSControl</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSTextField.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSTextFieldCell</string>
- <string key="superclassName">NSActionCell</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSTextFieldCell.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSUserDefaultsController</string>
- <string key="superclassName">NSController</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSUserDefaultsController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSClipView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <reference key="sourceIdentifier" ref="384663051"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSRulerView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <string key="superclassName">NSResponder</string>
- <reference key="sourceIdentifier" ref="380080729"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindow</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSDrawer.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindow</string>
- <string key="superclassName">NSResponder</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSWindow.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindow</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSWindowScripting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindowController</string>
- <string key="superclassName">NSResponder</string>
- <object class="NSMutableDictionary" key="actions">
- <string key="NS.key.0">showWindow:</string>
- <string key="NS.object.0">id</string>
- </object>
- <object class="NSMutableDictionary" key="actionInfosByName">
- <string key="NS.key.0">showWindow:</string>
- <object class="IBActionInfo" key="NS.object.0">
- <string key="name">showWindow:</string>
- <string key="candidateClassName">id</string>
- </object>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSWindowController.h</string>
- </object>
- </object>
- </object>
- </object>
- <int key="IBDocument.localizationMode">0</int>
- <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
- <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies">
- <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
- <integer value="1040" key="NS.object.0"/>
- </object>
- <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
- <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
- <integer value="1050" key="NS.object.0"/>
- </object>
- <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
- <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
- <integer value="3000" key="NS.object.0"/>
- </object>
- <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
- <string key="IBDocument.LastKnownRelativeProjectPath">../GTM.xcodeproj</string>
- <int key="IBDocument.defaultPropertyAccessControl">3</int>
- <object class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>NSMenuCheckmark</string>
- <string>NSMenuMixedState</string>
- <string>NSSwitch</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>{9, 8}</string>
- <string>{7, 2}</string>
- <string>{15, 15}</string>
- </object>
- </object>
- </data>
-</archive>
diff --git a/AppKit/GTMWindowSheetControllerTest.m b/AppKit/GTMWindowSheetControllerTest.m
index 65ef084..6117371 100644
--- a/AppKit/GTMWindowSheetControllerTest.m
+++ b/AppKit/GTMWindowSheetControllerTest.m
@@ -18,7 +18,6 @@
#import "GTMSenTestCase.h"
#import "GTMWindowSheetController.h"
-#import "GTMNSObject+UnitTesting.h"
@interface GTMWindowSheetControllerTest : GTMTestCase
<GTMWindowSheetControllerDelegate,
@@ -49,11 +48,11 @@
styleMask:NSTitledWindowMask
backing:NSBackingStoreBuffered
defer:NO] autorelease];
- STAssertNotNil(window, @"Could not allocate window");
+ XCTAssertNotNil(window, @"Could not allocate window");
NSTabView *tabView =
[[[NSTabView alloc] initWithFrame:NSMakeRect(10, 10, 580, 580)]
autorelease];
- STAssertNotNil(tabView, @"Could not allocate tab view");
+ XCTAssertNotNil(tabView, @"Could not allocate tab view");
[[window contentView] addSubview:tabView];
[tabView setDelegate:self];
@@ -70,10 +69,10 @@
[[[GTMWindowSheetController alloc] initWithWindow:window
delegate:self] autorelease];
- STAssertFalse([sheetController_ isSheetAttachedToView:
- [[tabView selectedTabViewItem] view]],
- @"Sheet should not be attached to current view");
- STAssertEquals([[sheetController_ viewsWithAttachedSheets] count],
+ XCTAssertFalse([sheetController_ isSheetAttachedToView:
+ [[tabView selectedTabViewItem] view]],
+ @"Sheet should not be attached to current view");
+ XCTAssertEqual([[sheetController_ viewsWithAttachedSheets] count],
(NSUInteger)0,
@"Should have no views with sheets");
@@ -98,19 +97,19 @@
nil]];
didAlertClose_ = NO;
- STAssertTrue([sheetController_ isSheetAttachedToView:
- [[tabView selectedTabViewItem] view]],
- @"Sheet should be attached to current view");
- STAssertEquals([[sheetController_ viewsWithAttachedSheets] count],
+ XCTAssertTrue([sheetController_ isSheetAttachedToView:
+ [[tabView selectedTabViewItem] view]],
+ @"Sheet should be attached to current view");
+ XCTAssertEqual([[sheetController_ viewsWithAttachedSheets] count],
(NSUInteger)1,
@"Should have one view with sheets");
[tabView selectTabViewItem:item2];
- STAssertFalse([sheetController_ isSheetAttachedToView:
- [[tabView selectedTabViewItem] view]],
- @"Sheet should not be attached to current view");
- STAssertEquals([[sheetController_ viewsWithAttachedSheets] count],
+ XCTAssertFalse([sheetController_ isSheetAttachedToView:
+ [[tabView selectedTabViewItem] view]],
+ @"Sheet should not be attached to current view");
+ XCTAssertEqual([[sheetController_ viewsWithAttachedSheets] count],
(NSUInteger)1,
@"Should have one view with sheets");
@@ -128,52 +127,52 @@
contextInfo:nil];
didSheetClose_ = NO;
- STAssertTrue([sheetController_ isSheetAttachedToView:
- [[tabView selectedTabViewItem] view]],
- @"Sheet should be attached to current view");
- STAssertEquals([[sheetController_ viewsWithAttachedSheets] count],
+ XCTAssertTrue([sheetController_ isSheetAttachedToView:
+ [[tabView selectedTabViewItem] view]],
+ @"Sheet should be attached to current view");
+ XCTAssertEqual([[sheetController_ viewsWithAttachedSheets] count],
(NSUInteger)2,
@"Should have two views with sheets");
[tabView selectTabViewItem:item1];
- STAssertTrue([sheetController_ isSheetAttachedToView:
- [[tabView selectedTabViewItem] view]],
- @"Sheet should be attached to current view");
- STAssertEquals([[sheetController_ viewsWithAttachedSheets] count],
+ XCTAssertTrue([sheetController_ isSheetAttachedToView:
+ [[tabView selectedTabViewItem] view]],
+ @"Sheet should be attached to current view");
+ XCTAssertEqual([[sheetController_ viewsWithAttachedSheets] count],
(NSUInteger)2,
@"Should have two views with sheets");
// Close alert
[alertButton performClick:self];
- STAssertFalse([sheetController_ isSheetAttachedToView:
- [[tabView selectedTabViewItem] view]],
- @"Sheet should not be attached to current view");
- STAssertEquals([[sheetController_ viewsWithAttachedSheets] count],
+ XCTAssertFalse([sheetController_ isSheetAttachedToView:
+ [[tabView selectedTabViewItem] view]],
+ @"Sheet should not be attached to current view");
+ XCTAssertEqual([[sheetController_ viewsWithAttachedSheets] count],
(NSUInteger)1,
@"Should have one view with sheets");
- STAssertTrue(didAlertClose_, @"Alert should have closed");
+ XCTAssertTrue(didAlertClose_, @"Alert should have closed");
[tabView selectTabViewItem:item2];
- STAssertTrue([sheetController_ isSheetAttachedToView:
- [[tabView selectedTabViewItem] view]],
- @"Sheet should be attached to current view");
- STAssertEquals([[sheetController_ viewsWithAttachedSheets] count],
+ XCTAssertTrue([sheetController_ isSheetAttachedToView:
+ [[tabView selectedTabViewItem] view]],
+ @"Sheet should be attached to current view");
+ XCTAssertEqual([[sheetController_ viewsWithAttachedSheets] count],
(NSUInteger)1,
@"Should have one view with sheets");
// Close sheet
[[NSApplication sharedApplication] endSheet:sheet returnCode:NSOKButton];
- STAssertFalse([sheetController_ isSheetAttachedToView:
- [[tabView selectedTabViewItem] view]],
- @"Sheet should not be attached to current view");
- STAssertEquals([[sheetController_ viewsWithAttachedSheets] count],
+ XCTAssertFalse([sheetController_ isSheetAttachedToView:
+ [[tabView selectedTabViewItem] view]],
+ @"Sheet should not be attached to current view");
+ XCTAssertEqual([[sheetController_ viewsWithAttachedSheets] count],
(NSUInteger)0,
@"Should have no views with sheets");
- STAssertTrue(didSheetClose_, @"Sheet should have closed");
+ XCTAssertTrue(didSheetClose_, @"Sheet should have closed");
}
- (void)testOpenSheetAfterFirst {
@@ -183,16 +182,15 @@
styleMask:NSTitledWindowMask
backing:NSBackingStoreBuffered
defer:NO] autorelease];
- STAssertNotNil(window_, @"Could not allocate window");
+ XCTAssertNotNil(window_, @"Could not allocate window");
sheetController_ =
[[[GTMWindowSheetController alloc] initWithWindow:window_
delegate:self] autorelease];
- STAssertFalse([sheetController_ isSheetAttachedToView:
- [window_ contentView]],
- @"Sheet should not be attached to current view");
- STAssertEquals([[sheetController_ viewsWithAttachedSheets] count],
+ XCTAssertFalse([sheetController_ isSheetAttachedToView:[window_ contentView]],
+ @"Sheet should not be attached to current view");
+ XCTAssertEqual([[sheetController_ viewsWithAttachedSheets] count],
(NSUInteger)0,
@"Should have no views with sheets");
@@ -225,34 +223,31 @@
didAlertClose_ = NO;
didSheetClose_ = NO;
- STAssertTrue([sheetController_ isSheetAttachedToView:
- [window_ contentView]],
+ XCTAssertTrue([sheetController_ isSheetAttachedToView:[window_ contentView]],
@"Sheet should be attached to view");
- STAssertEquals([[sheetController_ viewsWithAttachedSheets] count],
+ XCTAssertEqual([[sheetController_ viewsWithAttachedSheets] count],
(NSUInteger)1,
@"Should have one view with sheets");
// Close alert
[alertButton performClick:self];
- STAssertTrue([sheetController_ isSheetAttachedToView:
- [window_ contentView]],
+ XCTAssertTrue([sheetController_ isSheetAttachedToView:[window_ contentView]],
@"Second sheet should be attached to view");
- STAssertEquals([[sheetController_ viewsWithAttachedSheets] count],
+ XCTAssertEqual([[sheetController_ viewsWithAttachedSheets] count],
(NSUInteger)1,
@"Should have one view with sheets");
- STAssertTrue(didAlertClose_, @"Alert should have closed");
+ XCTAssertTrue(didAlertClose_, @"Alert should have closed");
// Close sheet
[[NSApplication sharedApplication] endSheet:sheet returnCode:NSOKButton];
- STAssertFalse([sheetController_ isSheetAttachedToView:
- [window_ contentView]],
- @"Sheet should not be attached to current view");
- STAssertEquals([[sheetController_ viewsWithAttachedSheets] count],
+ XCTAssertFalse([sheetController_ isSheetAttachedToView:[window_ contentView]],
+ @"Sheet should not be attached to current view");
+ XCTAssertEqual([[sheetController_ viewsWithAttachedSheets] count],
(NSUInteger)0,
@"Should have no views with sheets");
- STAssertTrue(didSheetClose_, @"Sheet should have closed");
+ XCTAssertTrue(didSheetClose_, @"Sheet should have closed");
}
- (void)alertDidEnd:(NSAlert *)alert
@@ -283,13 +278,13 @@
}
- (void)tabView:(NSTabView *)tabView
-didSelectTabViewItem:(NSTabViewItem *)tabViewItem {
+ didSelectTabViewItem:(NSTabViewItem *)tabViewItem {
NSView* view = [tabViewItem view];
[sheetController_ setActiveView:view];
}
- (void)gtm_systemRequestsVisibilityForView:(NSView*)view {
- STAssertTrue(false, @"Shouldn't be called");
+ XCTAssertTrue(false, @"Shouldn't be called");
}
@end
diff --git a/AppKit/TestData/GTMFadeTruncatingTextFieldCellTest1.tiff b/AppKit/TestData/GTMFadeTruncatingTextFieldCellTest1.tiff
deleted file mode 100644
index 8c81e1d..0000000
--- a/AppKit/TestData/GTMFadeTruncatingTextFieldCellTest1.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMFadeTruncatingTextFieldCellTest2.tiff b/AppKit/TestData/GTMFadeTruncatingTextFieldCellTest2.tiff
deleted file mode 100644
index d163833..0000000
--- a/AppKit/TestData/GTMFadeTruncatingTextFieldCellTest2.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMFadeTruncatingTextFieldCellTest3.tiff b/AppKit/TestData/GTMFadeTruncatingTextFieldCellTest3.tiff
deleted file mode 100644
index 6d7563a..0000000
--- a/AppKit/TestData/GTMFadeTruncatingTextFieldCellTest3.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMFadeTruncatingTextFieldCellTest4.tiff b/AppKit/TestData/GTMFadeTruncatingTextFieldCellTest4.tiff
deleted file mode 100644
index 77c03de..0000000
--- a/AppKit/TestData/GTMFadeTruncatingTextFieldCellTest4.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMFadeTruncatingTextFieldCellTest5.tiff b/AppKit/TestData/GTMFadeTruncatingTextFieldCellTest5.tiff
deleted file mode 100644
index 4d4635f..0000000
--- a/AppKit/TestData/GTMFadeTruncatingTextFieldCellTest5.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMFadeTruncatingTextFieldCellTest6.tiff b/AppKit/TestData/GTMFadeTruncatingTextFieldCellTest6.tiff
deleted file mode 100644
index c8b435d..0000000
--- a/AppKit/TestData/GTMFadeTruncatingTextFieldCellTest6.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMFadeTruncatingTextFieldCellTest7.tiff b/AppKit/TestData/GTMFadeTruncatingTextFieldCellTest7.tiff
deleted file mode 100644
index ac1dca6..0000000
--- a/AppKit/TestData/GTMFadeTruncatingTextFieldCellTest7.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMFadeTruncatingTextFieldCellTest8.tiff b/AppKit/TestData/GTMFadeTruncatingTextFieldCellTest8.tiff
deleted file mode 100644
index 47d70bd..0000000
--- a/AppKit/TestData/GTMFadeTruncatingTextFieldCellTest8.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMLargeTypeWindowImageTest.gtmUTState b/AppKit/TestData/GTMLargeTypeWindowImageTest.gtmUTState
deleted file mode 100644
index 7a7512c..0000000
--- a/AppKit/TestData/GTMLargeTypeWindowImageTest.gtmUTState
+++ /dev/null
@@ -1,49 +0,0 @@
-<?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>$GTMArchive</key>
- <string>GTMUnitTestingArchive</string>
- <key>$GTMVersion</key>
- <integer>1</integer>
- <key>WindowContent</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>0</integer>
- <key>CellTag</key>
- <integer>-1</integer>
- <key>CellValue</key>
- <dict>
- <key>ImageSize</key>
- <string>{128, 128}</string>
- </dict>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSImageView</string>
- <key>ControlValue</key>
- <dict>
- <key>ImageSize</key>
- <string>{128, 128}</string>
- </dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>WindowIsMain</key>
- <false/>
- <key>WindowIsVisible</key>
- <true/>
- <key>WindowTitle</key>
- <string></string>
-</dict>
-</plist>
diff --git a/AppKit/TestData/GTMLargeTypeWindowLongTextTest.10.6.gtmUTState b/AppKit/TestData/GTMLargeTypeWindowLongTextTest.10.6.gtmUTState
deleted file mode 100644
index 563ae0c..0000000
--- a/AppKit/TestData/GTMLargeTypeWindowLongTextTest.10.6.gtmUTState
+++ /dev/null
@@ -1,1011 +0,0 @@
-<?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>$GTMArchive</key>
- <string>GTMUnitTestingArchive</string>
- <key>$GTMVersion</key>
- <integer>1</integer>
- <key>WindowContent</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewMenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Cut</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Copy</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Paste</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Fonts</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>2</integer>
- <key>MenuItemTitle</key>
- <string>Bold</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>1</integer>
- <key>MenuItemTitle</key>
- <string>Italic</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Underline</string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Outline</string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Styles…</string>
- </dict>
- <key>MenuItem 6</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Colors</string>
- </dict>
- <key>MenuTitle</key>
- <string>Font</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Font</string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Spelling and Grammar</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Check Document Now</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Check Spelling While Typing</string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Check Grammar With Spelling</string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Correct Spelling Automatically</string>
- </dict>
- <key>MenuTitle</key>
- <string>Spelling and Grammar</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Spelling and Grammar</string>
- </dict>
- <key>MenuItem 6</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Replace Quotes</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Replace Dashes</string>
- </dict>
- <key>MenuItem 10</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Smart Links</string>
- </dict>
- <key>MenuItem 11</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Data Detectors</string>
- </dict>
- <key>MenuItem 12</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Text Replacement</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Add Links</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Replace Text</string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Substitutions</string>
- </dict>
- <key>MenuItem 6</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 7</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Smart Copy/Paste</string>
- </dict>
- <key>MenuItem 8</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Smart Quotes</string>
- </dict>
- <key>MenuItem 9</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Smart Dashes</string>
- </dict>
- <key>MenuTitle</key>
- <string>Substitutions</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Substitutions</string>
- </dict>
- <key>MenuItem 7</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Make Upper Case</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Make Lower Case</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Capitalize</string>
- </dict>
- <key>MenuTitle</key>
- <string>Transformations</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Transformations</string>
- </dict>
- <key>MenuItem 8</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Start Speaking</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Stop Speaking</string>
- </dict>
- <key>MenuTitle</key>
- <string>Speech</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Speech</string>
- </dict>
- <key>MenuItem 9</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Paragraph</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>-1</integer>
- <key>MenuItemTitle</key>
- <string> Default</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string> Left to Right</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>1</integer>
- <key>MenuItemTitle</key>
- <string> Right to Left</string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Selection</string>
- </dict>
- <key>MenuItem 6</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>-1</integer>
- <key>MenuItemTitle</key>
- <string> Default</string>
- </dict>
- <key>MenuItem 7</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string> Left to Right</string>
- </dict>
- <key>MenuItem 8</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>1</integer>
- <key>MenuItemTitle</key>
- <string> Right to Left</string>
- </dict>
- <key>MenuTitle</key>
- <string>Writing Direction</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Writing Direction</string>
- </dict>
- <key>MenuTitle</key>
- <string>Menu</string>
- </dict>
- </dict>
- </dict>
- <key>WindowIsMain</key>
- <false/>
- <key>WindowIsVisible</key>
- <true/>
- <key>WindowTitle</key>
- <string></string>
-</dict>
-</plist>
diff --git a/AppKit/TestData/GTMLargeTypeWindowLongTextTest.gtmUTState b/AppKit/TestData/GTMLargeTypeWindowLongTextTest.gtmUTState
deleted file mode 100644
index 32d0b37..0000000
--- a/AppKit/TestData/GTMLargeTypeWindowLongTextTest.gtmUTState
+++ /dev/null
@@ -1,607 +0,0 @@
-<?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>$GTMArchive</key>
- <string>GTMUnitTestingArchive</string>
- <key>$GTMVersion</key>
- <integer>1</integer>
- <key>WindowContent</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewMenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Cut</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Copy</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Paste</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Fonts</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>2</integer>
- <key>MenuItemTitle</key>
- <string>Bold</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>1</integer>
- <key>MenuItemTitle</key>
- <string>Italic</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Underline</string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Outline</string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Styles…</string>
- </dict>
- <key>MenuItem 6</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 7</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Colors</string>
- </dict>
- <key>MenuTitle</key>
- <string>Font</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Font</string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Spelling and Grammar</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Check Document Now</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Check Spelling While Typing</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Check Grammar With Spelling</string>
- </dict>
- <key>MenuTitle</key>
- <string>Spelling and Grammar</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Spelling and Grammar</string>
- </dict>
- <key>MenuItem 6</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Smart Copy/Paste</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Smart Quotes</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Smart Links</string>
- </dict>
- <key>MenuTitle</key>
- <string>Substitutions</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Substitutions</string>
- </dict>
- <key>MenuItem 7</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Start Speaking</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Stop Speaking</string>
- </dict>
- <key>MenuTitle</key>
- <string>Speech</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Speech</string>
- </dict>
- <key>MenuItem 8</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>-1</integer>
- <key>MenuItemTitle</key>
- <string>Default</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Left to Right</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>1</integer>
- <key>MenuItemTitle</key>
- <string>Right to Left</string>
- </dict>
- <key>MenuTitle</key>
- <string>Writing Direction</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Writing Direction</string>
- </dict>
- <key>MenuTitle</key>
- <string>Menu</string>
- </dict>
- </dict>
- </dict>
- <key>WindowIsMain</key>
- <false/>
- <key>WindowIsVisible</key>
- <true/>
- <key>WindowTitle</key>
- <string></string>
-</dict>
-</plist>
diff --git a/AppKit/TestData/GTMLargeTypeWindowMediumTextTest.10.6.gtmUTState b/AppKit/TestData/GTMLargeTypeWindowMediumTextTest.10.6.gtmUTState
deleted file mode 100644
index 563ae0c..0000000
--- a/AppKit/TestData/GTMLargeTypeWindowMediumTextTest.10.6.gtmUTState
+++ /dev/null
@@ -1,1011 +0,0 @@
-<?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>$GTMArchive</key>
- <string>GTMUnitTestingArchive</string>
- <key>$GTMVersion</key>
- <integer>1</integer>
- <key>WindowContent</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewMenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Cut</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Copy</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Paste</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Fonts</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>2</integer>
- <key>MenuItemTitle</key>
- <string>Bold</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>1</integer>
- <key>MenuItemTitle</key>
- <string>Italic</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Underline</string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Outline</string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Styles…</string>
- </dict>
- <key>MenuItem 6</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Colors</string>
- </dict>
- <key>MenuTitle</key>
- <string>Font</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Font</string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Spelling and Grammar</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Check Document Now</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Check Spelling While Typing</string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Check Grammar With Spelling</string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Correct Spelling Automatically</string>
- </dict>
- <key>MenuTitle</key>
- <string>Spelling and Grammar</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Spelling and Grammar</string>
- </dict>
- <key>MenuItem 6</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Replace Quotes</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Replace Dashes</string>
- </dict>
- <key>MenuItem 10</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Smart Links</string>
- </dict>
- <key>MenuItem 11</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Data Detectors</string>
- </dict>
- <key>MenuItem 12</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Text Replacement</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Add Links</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Replace Text</string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Substitutions</string>
- </dict>
- <key>MenuItem 6</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 7</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Smart Copy/Paste</string>
- </dict>
- <key>MenuItem 8</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Smart Quotes</string>
- </dict>
- <key>MenuItem 9</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Smart Dashes</string>
- </dict>
- <key>MenuTitle</key>
- <string>Substitutions</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Substitutions</string>
- </dict>
- <key>MenuItem 7</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Make Upper Case</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Make Lower Case</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Capitalize</string>
- </dict>
- <key>MenuTitle</key>
- <string>Transformations</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Transformations</string>
- </dict>
- <key>MenuItem 8</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Start Speaking</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Stop Speaking</string>
- </dict>
- <key>MenuTitle</key>
- <string>Speech</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Speech</string>
- </dict>
- <key>MenuItem 9</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Paragraph</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>-1</integer>
- <key>MenuItemTitle</key>
- <string> Default</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string> Left to Right</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>1</integer>
- <key>MenuItemTitle</key>
- <string> Right to Left</string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Selection</string>
- </dict>
- <key>MenuItem 6</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>-1</integer>
- <key>MenuItemTitle</key>
- <string> Default</string>
- </dict>
- <key>MenuItem 7</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string> Left to Right</string>
- </dict>
- <key>MenuItem 8</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>1</integer>
- <key>MenuItemTitle</key>
- <string> Right to Left</string>
- </dict>
- <key>MenuTitle</key>
- <string>Writing Direction</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Writing Direction</string>
- </dict>
- <key>MenuTitle</key>
- <string>Menu</string>
- </dict>
- </dict>
- </dict>
- <key>WindowIsMain</key>
- <false/>
- <key>WindowIsVisible</key>
- <true/>
- <key>WindowTitle</key>
- <string></string>
-</dict>
-</plist>
diff --git a/AppKit/TestData/GTMLargeTypeWindowMediumTextTest.gtmUTState b/AppKit/TestData/GTMLargeTypeWindowMediumTextTest.gtmUTState
deleted file mode 100644
index 32d0b37..0000000
--- a/AppKit/TestData/GTMLargeTypeWindowMediumTextTest.gtmUTState
+++ /dev/null
@@ -1,607 +0,0 @@
-<?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>$GTMArchive</key>
- <string>GTMUnitTestingArchive</string>
- <key>$GTMVersion</key>
- <integer>1</integer>
- <key>WindowContent</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewMenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Cut</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Copy</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Paste</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Fonts</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>2</integer>
- <key>MenuItemTitle</key>
- <string>Bold</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>1</integer>
- <key>MenuItemTitle</key>
- <string>Italic</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Underline</string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Outline</string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Styles…</string>
- </dict>
- <key>MenuItem 6</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 7</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Colors</string>
- </dict>
- <key>MenuTitle</key>
- <string>Font</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Font</string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Spelling and Grammar</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Check Document Now</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Check Spelling While Typing</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Check Grammar With Spelling</string>
- </dict>
- <key>MenuTitle</key>
- <string>Spelling and Grammar</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Spelling and Grammar</string>
- </dict>
- <key>MenuItem 6</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Smart Copy/Paste</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Smart Quotes</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Smart Links</string>
- </dict>
- <key>MenuTitle</key>
- <string>Substitutions</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Substitutions</string>
- </dict>
- <key>MenuItem 7</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Start Speaking</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Stop Speaking</string>
- </dict>
- <key>MenuTitle</key>
- <string>Speech</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Speech</string>
- </dict>
- <key>MenuItem 8</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>-1</integer>
- <key>MenuItemTitle</key>
- <string>Default</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Left to Right</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>1</integer>
- <key>MenuItemTitle</key>
- <string>Right to Left</string>
- </dict>
- <key>MenuTitle</key>
- <string>Writing Direction</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Writing Direction</string>
- </dict>
- <key>MenuTitle</key>
- <string>Menu</string>
- </dict>
- </dict>
- </dict>
- <key>WindowIsMain</key>
- <false/>
- <key>WindowIsVisible</key>
- <true/>
- <key>WindowTitle</key>
- <string></string>
-</dict>
-</plist>
diff --git a/AppKit/TestData/GTMLargeTypeWindowShortTextTest.10.6.gtmUTState b/AppKit/TestData/GTMLargeTypeWindowShortTextTest.10.6.gtmUTState
deleted file mode 100644
index 563ae0c..0000000
--- a/AppKit/TestData/GTMLargeTypeWindowShortTextTest.10.6.gtmUTState
+++ /dev/null
@@ -1,1011 +0,0 @@
-<?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>$GTMArchive</key>
- <string>GTMUnitTestingArchive</string>
- <key>$GTMVersion</key>
- <integer>1</integer>
- <key>WindowContent</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewMenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Cut</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Copy</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Paste</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Fonts</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>2</integer>
- <key>MenuItemTitle</key>
- <string>Bold</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>1</integer>
- <key>MenuItemTitle</key>
- <string>Italic</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Underline</string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Outline</string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Styles…</string>
- </dict>
- <key>MenuItem 6</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Colors</string>
- </dict>
- <key>MenuTitle</key>
- <string>Font</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Font</string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Spelling and Grammar</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Check Document Now</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Check Spelling While Typing</string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Check Grammar With Spelling</string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Correct Spelling Automatically</string>
- </dict>
- <key>MenuTitle</key>
- <string>Spelling and Grammar</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Spelling and Grammar</string>
- </dict>
- <key>MenuItem 6</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Replace Quotes</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Replace Dashes</string>
- </dict>
- <key>MenuItem 10</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Smart Links</string>
- </dict>
- <key>MenuItem 11</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Data Detectors</string>
- </dict>
- <key>MenuItem 12</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Text Replacement</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Add Links</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Replace Text</string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Substitutions</string>
- </dict>
- <key>MenuItem 6</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 7</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Smart Copy/Paste</string>
- </dict>
- <key>MenuItem 8</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Smart Quotes</string>
- </dict>
- <key>MenuItem 9</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Smart Dashes</string>
- </dict>
- <key>MenuTitle</key>
- <string>Substitutions</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Substitutions</string>
- </dict>
- <key>MenuItem 7</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Make Upper Case</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Make Lower Case</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Capitalize</string>
- </dict>
- <key>MenuTitle</key>
- <string>Transformations</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Transformations</string>
- </dict>
- <key>MenuItem 8</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Start Speaking</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Stop Speaking</string>
- </dict>
- <key>MenuTitle</key>
- <string>Speech</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Speech</string>
- </dict>
- <key>MenuItem 9</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Paragraph</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>-1</integer>
- <key>MenuItemTitle</key>
- <string> Default</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string> Left to Right</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>1</integer>
- <key>MenuItemTitle</key>
- <string> Right to Left</string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Selection</string>
- </dict>
- <key>MenuItem 6</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>-1</integer>
- <key>MenuItemTitle</key>
- <string> Default</string>
- </dict>
- <key>MenuItem 7</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string> Left to Right</string>
- </dict>
- <key>MenuItem 8</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>1</integer>
- <key>MenuItemTitle</key>
- <string> Right to Left</string>
- </dict>
- <key>MenuTitle</key>
- <string>Writing Direction</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Writing Direction</string>
- </dict>
- <key>MenuTitle</key>
- <string>Menu</string>
- </dict>
- </dict>
- </dict>
- <key>WindowIsMain</key>
- <false/>
- <key>WindowIsVisible</key>
- <true/>
- <key>WindowTitle</key>
- <string></string>
-</dict>
-</plist>
diff --git a/AppKit/TestData/GTMLargeTypeWindowShortTextTest.gtmUTState b/AppKit/TestData/GTMLargeTypeWindowShortTextTest.gtmUTState
deleted file mode 100644
index 32d0b37..0000000
--- a/AppKit/TestData/GTMLargeTypeWindowShortTextTest.gtmUTState
+++ /dev/null
@@ -1,607 +0,0 @@
-<?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>$GTMArchive</key>
- <string>GTMUnitTestingArchive</string>
- <key>$GTMVersion</key>
- <integer>1</integer>
- <key>WindowContent</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewMenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Cut</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Copy</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Paste</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Fonts</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>2</integer>
- <key>MenuItemTitle</key>
- <string>Bold</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>1</integer>
- <key>MenuItemTitle</key>
- <string>Italic</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Underline</string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Outline</string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Styles…</string>
- </dict>
- <key>MenuItem 6</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 7</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Colors</string>
- </dict>
- <key>MenuTitle</key>
- <string>Font</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Font</string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Spelling and Grammar</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Check Document Now</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Check Spelling While Typing</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Check Grammar With Spelling</string>
- </dict>
- <key>MenuTitle</key>
- <string>Spelling and Grammar</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Spelling and Grammar</string>
- </dict>
- <key>MenuItem 6</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Smart Copy/Paste</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Smart Quotes</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Smart Links</string>
- </dict>
- <key>MenuTitle</key>
- <string>Substitutions</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Substitutions</string>
- </dict>
- <key>MenuItem 7</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Start Speaking</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Stop Speaking</string>
- </dict>
- <key>MenuTitle</key>
- <string>Speech</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Speech</string>
- </dict>
- <key>MenuItem 8</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>-1</integer>
- <key>MenuItemTitle</key>
- <string>Default</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Left to Right</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>1</integer>
- <key>MenuItemTitle</key>
- <string>Right to Left</string>
- </dict>
- <key>MenuTitle</key>
- <string>Writing Direction</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Writing Direction</string>
- </dict>
- <key>MenuTitle</key>
- <string>Menu</string>
- </dict>
- </dict>
- </dict>
- <key>WindowIsMain</key>
- <false/>
- <key>WindowIsVisible</key>
- <true/>
- <key>WindowTitle</key>
- <string></string>
-</dict>
-</plist>
diff --git a/AppKit/TestData/GTMNSBezierPath+CGPathTest.ppc64.tiff b/AppKit/TestData/GTMNSBezierPath+CGPathTest.ppc64.tiff
deleted file mode 100644
index 33c3e17..0000000
--- a/AppKit/TestData/GTMNSBezierPath+CGPathTest.ppc64.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMNSBezierPath+CGPathTest.tiff b/AppKit/TestData/GTMNSBezierPath+CGPathTest.tiff
deleted file mode 100644
index 98ec8f8..0000000
--- a/AppKit/TestData/GTMNSBezierPath+CGPathTest.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMNSBezierPath+CGPathTest.x86_64.tiff b/AppKit/TestData/GTMNSBezierPath+CGPathTest.x86_64.tiff
deleted file mode 100644
index 33c3e17..0000000
--- a/AppKit/TestData/GTMNSBezierPath+CGPathTest.x86_64.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMNSBezierPath+RoundRectTest.10.6.tiff b/AppKit/TestData/GTMNSBezierPath+RoundRectTest.10.6.tiff
deleted file mode 100644
index b3e2fce..0000000
--- a/AppKit/TestData/GTMNSBezierPath+RoundRectTest.10.6.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMNSBezierPath+RoundRectTest.10.6.x86_64.tiff b/AppKit/TestData/GTMNSBezierPath+RoundRectTest.10.6.x86_64.tiff
deleted file mode 100644
index 09675b1..0000000
--- a/AppKit/TestData/GTMNSBezierPath+RoundRectTest.10.6.x86_64.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMNSBezierPath+RoundRectTest.ppc64.tiff b/AppKit/TestData/GTMNSBezierPath+RoundRectTest.ppc64.tiff
deleted file mode 100644
index 6e89cc1..0000000
--- a/AppKit/TestData/GTMNSBezierPath+RoundRectTest.ppc64.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMNSBezierPath+RoundRectTest.tiff b/AppKit/TestData/GTMNSBezierPath+RoundRectTest.tiff
deleted file mode 100644
index 6e89cc1..0000000
--- a/AppKit/TestData/GTMNSBezierPath+RoundRectTest.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMNSBezierPath+RoundRectTest.x86_64.tiff b/AppKit/TestData/GTMNSBezierPath+RoundRectTest.x86_64.tiff
deleted file mode 100644
index 0c9c300..0000000
--- a/AppKit/TestData/GTMNSBezierPath+RoundRectTest.x86_64.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMNSBezierPath+ShadingTest.10.6.tiff b/AppKit/TestData/GTMNSBezierPath+ShadingTest.10.6.tiff
deleted file mode 100644
index 95dc623..0000000
--- a/AppKit/TestData/GTMNSBezierPath+ShadingTest.10.6.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMNSBezierPath+ShadingTest.tiff b/AppKit/TestData/GTMNSBezierPath+ShadingTest.tiff
deleted file mode 100644
index b44b5bf..0000000
--- a/AppKit/TestData/GTMNSBezierPath+ShadingTest.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest1-0.10.6.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest1-0.10.6.tiff
deleted file mode 100644
index 6780f1f..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest1-0.10.6.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest1-0.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest1-0.tiff
deleted file mode 100644
index 86814a3..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest1-0.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest1-1.10.6.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest1-1.10.6.tiff
deleted file mode 100644
index 5c35023..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest1-1.10.6.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest1-1.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest1-1.tiff
deleted file mode 100644
index 31a44ba..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest1-1.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest1-2.10.6.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest1-2.10.6.tiff
deleted file mode 100644
index 8946cee..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest1-2.10.6.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest1-2.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest1-2.tiff
deleted file mode 100644
index b4c2375..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest1-2.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest2-0.10.6.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest2-0.10.6.tiff
deleted file mode 100644
index ee94361..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest2-0.10.6.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest2-0.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest2-0.tiff
deleted file mode 100644
index 25c53d9..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest2-0.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest2-1.10.6.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest2-1.10.6.tiff
deleted file mode 100644
index 19cd92e..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest2-1.10.6.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest2-1.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest2-1.tiff
deleted file mode 100644
index 26409a1..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest2-1.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest2-2.10.6.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest2-2.10.6.tiff
deleted file mode 100644
index 479bf2f..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest2-2.10.6.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest2-2.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest2-2.tiff
deleted file mode 100644
index 082e312..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest2-2.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-0.10.6.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-0.10.6.tiff
deleted file mode 100644
index 9225709..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-0.10.6.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-0.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-0.tiff
deleted file mode 100644
index 30c2a89..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-0.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-1.10.6.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-1.10.6.tiff
deleted file mode 100644
index 28e2b17..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-1.10.6.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-1.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-1.tiff
deleted file mode 100644
index d949898..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-1.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-2.10.6.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-2.10.6.tiff
deleted file mode 100644
index e895173..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-2.10.6.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-2.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-2.tiff
deleted file mode 100644
index 2d51e31..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-2.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-3.10.6.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-3.10.6.tiff
deleted file mode 100644
index 410ed84..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-3.10.6.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-3.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-3.tiff
deleted file mode 100644
index eb7b8fa..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-3.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-4.10.6.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-4.10.6.tiff
deleted file mode 100644
index 11e07b9..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-4.10.6.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-4.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-4.tiff
deleted file mode 100644
index 041b683..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest3-4.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-0.10.6.7.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-0.10.6.7.tiff
deleted file mode 100644
index 480b89e..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-0.10.6.7.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-0.10.6.8.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-0.10.6.8.tiff
deleted file mode 100644
index 480b89e..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-0.10.6.8.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-0.10.6.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-0.10.6.tiff
deleted file mode 100644
index 6ff76cc..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-0.10.6.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-0.10_4_SDK.10.6.7.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-0.10_4_SDK.10.6.7.tiff
deleted file mode 100644
index e040930..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-0.10_4_SDK.10.6.7.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-0.10_4_SDK.10.6.8.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-0.10_4_SDK.10.6.8.tiff
deleted file mode 100644
index e040930..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-0.10_4_SDK.10.6.8.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-0.10_4_SDK.10.6.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-0.10_4_SDK.10.6.tiff
deleted file mode 100644
index 29c9762..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-0.10_4_SDK.10.6.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-0.10_4_SDK.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-0.10_4_SDK.tiff
deleted file mode 100644
index 62ff8a1..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-0.10_4_SDK.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-0.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-0.tiff
deleted file mode 100644
index 252ee9a..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-0.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-1.10.6.7.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-1.10.6.7.tiff
deleted file mode 100644
index 9a7e936..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-1.10.6.7.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-1.10.6.8.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-1.10.6.8.tiff
deleted file mode 100644
index 9a7e936..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-1.10.6.8.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-1.10.6.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-1.10.6.tiff
deleted file mode 100644
index 4e9db81..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-1.10.6.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-1.10_4_SDK.10.6.7.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-1.10_4_SDK.10.6.7.tiff
deleted file mode 100644
index 5230658..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-1.10_4_SDK.10.6.7.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-1.10_4_SDK.10.6.8.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-1.10_4_SDK.10.6.8.tiff
deleted file mode 100644
index 5230658..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-1.10_4_SDK.10.6.8.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-1.10_4_SDK.10.6.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-1.10_4_SDK.10.6.tiff
deleted file mode 100644
index eb9815e..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-1.10_4_SDK.10.6.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-1.10_4_SDK.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-1.10_4_SDK.tiff
deleted file mode 100644
index 17748e5..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-1.10_4_SDK.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-1.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-1.tiff
deleted file mode 100644
index 2c1ddc7..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-1.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-2.10.6.7.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-2.10.6.7.tiff
deleted file mode 100644
index 9f9d092..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-2.10.6.7.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-2.10.6.8.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-2.10.6.8.tiff
deleted file mode 100644
index 9f9d092..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-2.10.6.8.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-2.10.6.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-2.10.6.tiff
deleted file mode 100644
index b548bff..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-2.10.6.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-2.10_4_SDK.10.6.7.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-2.10_4_SDK.10.6.7.tiff
deleted file mode 100644
index c50bb1c..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-2.10_4_SDK.10.6.7.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-2.10_4_SDK.10.6.8.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-2.10_4_SDK.10.6.8.tiff
deleted file mode 100644
index c50bb1c..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-2.10_4_SDK.10.6.8.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-2.10_4_SDK.10.6.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-2.10_4_SDK.10.6.tiff
deleted file mode 100644
index f677712..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-2.10_4_SDK.10.6.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-2.10_4_SDK.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-2.10_4_SDK.tiff
deleted file mode 100644
index 294237a..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-2.10_4_SDK.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-2.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-2.tiff
deleted file mode 100644
index b63ef59..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest4-2.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest5-0.10.6.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest5-0.10.6.tiff
deleted file mode 100644
index 46dc417..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest5-0.10.6.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest5-0.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest5-0.tiff
deleted file mode 100644
index 97c6570..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest5-0.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest5-1.10.6.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest5-1.10.6.tiff
deleted file mode 100644
index 3e12963..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest5-1.10.6.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest5-1.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest5-1.tiff
deleted file mode 100644
index e15c2a6..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest5-1.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest5-2.10.6.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest5-2.10.6.tiff
deleted file mode 100644
index ea4c671..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest5-2.10.6.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest5-2.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest5-2.tiff
deleted file mode 100644
index a75f192..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest5-2.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest6-tab0-0.10.6.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest6-tab0-0.10.6.tiff
deleted file mode 100644
index 4102a74..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest6-tab0-0.10.6.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest6-tab0-0.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest6-tab0-0.tiff
deleted file mode 100644
index 0b6ced5..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest6-tab0-0.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest6-tab0-1.10.6.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest6-tab0-1.10.6.tiff
deleted file mode 100644
index 5fe57d1..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest6-tab0-1.10.6.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest6-tab0-1.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest6-tab0-1.tiff
deleted file mode 100644
index 2ba6f64..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest6-tab0-1.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest6-tab0-2.10.6.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest6-tab0-2.10.6.tiff
deleted file mode 100644
index a978d11..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest6-tab0-2.10.6.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest6-tab0-2.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest6-tab0-2.tiff
deleted file mode 100644
index e405f7f..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest6-tab0-2.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest6-tab1-0.10.6.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest6-tab1-0.10.6.tiff
deleted file mode 100644
index 123d153..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest6-tab1-0.10.6.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest6-tab1-0.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest6-tab1-0.tiff
deleted file mode 100644
index 0653128..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest6-tab1-0.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest6-tab1-1.10.6.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest6-tab1-1.10.6.tiff
deleted file mode 100644
index b980cd4..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest6-tab1-1.10.6.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest6-tab1-1.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest6-tab1-1.tiff
deleted file mode 100644
index 37054ee..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest6-tab1-1.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest6-tab1-2.10.6.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest6-tab1-2.10.6.tiff
deleted file mode 100644
index ebb829f..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest6-tab1-2.10.6.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest6-tab1-2.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest6-tab1-2.tiff
deleted file mode 100644
index 5940ef2..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest6-tab1-2.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-Min-0.10.6.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-Min-0.10.6.tiff
deleted file mode 100644
index 77f6aa9..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-Min-0.10.6.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-Min-0.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-Min-0.tiff
deleted file mode 100644
index 8106dd4..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-Min-0.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-Min-1.10.6.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-Min-1.10.6.tiff
deleted file mode 100644
index 21df509..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-Min-1.10.6.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-Min-1.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-Min-1.tiff
deleted file mode 100644
index 1fd16b1..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-Min-1.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-Min-2.10.6.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-Min-2.10.6.tiff
deleted file mode 100644
index 97e5ffc..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-Min-2.10.6.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-Min-2.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-Min-2.tiff
deleted file mode 100644
index 11f0caf..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-Min-2.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-Min-3.10.6.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-Min-3.10.6.tiff
deleted file mode 100644
index 6a7cf51..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-Min-3.10.6.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-Min-3.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-Min-3.tiff
deleted file mode 100644
index ed584fe..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-Min-3.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-NoMin-0.10.6.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-NoMin-0.10.6.tiff
deleted file mode 100644
index cac6f48..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-NoMin-0.10.6.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-NoMin-0.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-NoMin-0.tiff
deleted file mode 100644
index 3fab864..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-NoMin-0.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-NoMin-1.10.6.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-NoMin-1.10.6.tiff
deleted file mode 100644
index 9612f81..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-NoMin-1.10.6.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-NoMin-1.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-NoMin-1.tiff
deleted file mode 100644
index b12cad0..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-NoMin-1.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-NoMin-2.10.6.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-NoMin-2.10.6.tiff
deleted file mode 100644
index b1cc4e7..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-NoMin-2.10.6.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-NoMin-2.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-NoMin-2.tiff
deleted file mode 100644
index 4afb82f..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-NoMin-2.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-NoMin-3.10.6.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-NoMin-3.10.6.tiff
deleted file mode 100644
index 87b52ce..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-NoMin-3.10.6.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-NoMin-3.tiff b/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-NoMin-3.tiff
deleted file mode 100644
index 972271b..0000000
--- a/AppKit/TestData/GTMUILocalizerAndLayoutTweakerTest7-NoMin-3.tiff
+++ /dev/null
Binary files differ
diff --git a/AppKit/TestData/GTMUILocalizerWindow1State.10_4_SDK.gtmUTState b/AppKit/TestData/GTMUILocalizerWindow1State.10_4_SDK.gtmUTState
deleted file mode 100644
index 84dde80..0000000
--- a/AppKit/TestData/GTMUILocalizerWindow1State.10_4_SDK.gtmUTState
+++ /dev/null
@@ -1,405 +0,0 @@
-<?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>$GTMArchive</key>
- <string>GTMUnitTestingArchive</string>
- <key>$GTMVersion</key>
- <integer>1</integer>
- <key>WindowContent</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ButtonAlternateTitle</key>
- <string></string>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>0</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>Localized Button</string>
- <key>CellValue</key>
- <string>0</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSButton</string>
- <key>ControlValue</key>
- <string>0</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 1</key>
- <dict>
- <key>ButtonAlternateTitle</key>
- <string></string>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>0</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>^Button2</string>
- <key>CellValue</key>
- <string>0</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSButton</string>
- <key>ControlValue</key>
- <string>0</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 2</key>
- <dict>
- <key>TabItem 0</key>
- <dict>
- <key>TabLabel</key>
- <string>Localized Tab</string>
- <key>TabView</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>TabItem 1</key>
- <dict>
- <key>TabLabel</key>
- <string>^Tab2</string>
- <key>TabView</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>ViewSubView 3</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>0</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>Localized Label</string>
- <key>CellValue</key>
- <string>Localized Label</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSTextField</string>
- <key>ControlValue</key>
- <string>Localized Label</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 4</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>0</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>^Label2</string>
- <key>CellValue</key>
- <string>^Label2</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSTextField</string>
- <key>ControlValue</key>
- <string>^Label2</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 5</key>
- <dict>
- <key>ButtonAlternateTitle</key>
- <string></string>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>1</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>Localized Item 2</string>
- <key>CellValue</key>
- <string>1</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSPopUpButton</string>
- <key>ControlValue</key>
- <string>1</string>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewMenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Localized Item 1</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>1</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Localized Item 2</string>
- </dict>
- <key>MenuTitle</key>
- <string>OtherViews</string>
- </dict>
- </dict>
- <key>ViewSubView 6</key>
- <dict>
- <key>ButtonAlternateTitle</key>
- <string></string>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>1</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>Localized Checkbox 1</string>
- <key>CellValue</key>
- <string>1</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSButton</string>
- <key>ControlValue</key>
- <string>1</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 7</key>
- <dict>
- <key>ButtonAlternateTitle</key>
- <string></string>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>1</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>Localized Checkbox 2</string>
- <key>CellValue</key>
- <string>1</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSButton</string>
- <key>ControlValue</key>
- <string>1</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 8</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>1</integer>
- <key>CellTag</key>
- <integer>1</integer>
- <key>CellTitle</key>
- <string>Localized Radio 1</string>
- <key>CellValue</key>
- <string>1</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSMatrix</string>
- <key>ControlValue</key>
- <string>1</string>
- <key>MatrixAllowEmptySelection</key>
- <false/>
- <key>MatrixAutosizesCells</key>
- <true/>
- <key>MatrixCell 0</key>
- <dict>
- <key>CellState</key>
- <integer>1</integer>
- <key>CellTag</key>
- <integer>1</integer>
- <key>CellTitle</key>
- <string>Localized Radio 1</string>
- <key>CellValue</key>
- <string>1</string>
- </dict>
- <key>MatrixCell 1</key>
- <dict>
- <key>CellState</key>
- <integer>0</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>Localized Radio 2</string>
- <key>CellValue</key>
- <string>0</string>
- </dict>
- <key>MatrixCellPrototype</key>
- <dict>
- <key>CellState</key>
- <integer>0</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>Radio</string>
- <key>CellValue</key>
- <string>0</string>
- </dict>
- <key>MatrixColumnCount</key>
- <integer>1</integer>
- <key>MatrixIntercellSpacing</key>
- <string>{4, 2}</string>
- <key>MatrixMode</key>
- <integer>0</integer>
- <key>MatrixRowCount</key>
- <integer>2</integer>
- <key>MatrixSelectionByRect</key>
- <true/>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 9</key>
- <dict>
- <key>BoxBorderType</key>
- <integer>1</integer>
- <key>BoxTitle</key>
- <string>Bindings Tests</string>
- <key>BoxTitlePosition</key>
- <integer>2</integer>
- <key>BoxType</key>
- <integer>0</integer>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>1</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>DisplayPattern</string>
- <key>CellValue</key>
- <string>DisplayPattern</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSTextField</string>
- <key>ControlValue</key>
- <string>DisplayPattern</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 1</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>0</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string></string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSSearchField</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- </dict>
- </dict>
- <key>WindowIsMain</key>
- <false/>
- <key>WindowIsVisible</key>
- <false/>
- <key>WindowTitle</key>
- <string>Window</string>
-</dict>
-</plist>
diff --git a/AppKit/TestData/GTMUILocalizerWindow1State.gtmUTState b/AppKit/TestData/GTMUILocalizerWindow1State.gtmUTState
deleted file mode 100644
index ae95f53..0000000
--- a/AppKit/TestData/GTMUILocalizerWindow1State.gtmUTState
+++ /dev/null
@@ -1,426 +0,0 @@
-<?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>$GTMArchive</key>
- <string>GTMUnitTestingArchive</string>
- <key>$GTMVersion</key>
- <integer>1</integer>
- <key>WindowContent</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ButtonAlternateTitle</key>
- <string></string>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>0</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>Localized Button</string>
- <key>CellValue</key>
- <string>0</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSButton</string>
- <key>ControlValue</key>
- <string>0</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 1</key>
- <dict>
- <key>ButtonAlternateTitle</key>
- <string></string>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>0</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>^Button2</string>
- <key>CellValue</key>
- <string>0</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSButton</string>
- <key>ControlValue</key>
- <string>0</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 2</key>
- <dict>
- <key>TabItem 0</key>
- <dict>
- <key>TabLabel</key>
- <string>Localized Tab</string>
- <key>TabView</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>TabItem 1</key>
- <dict>
- <key>TabLabel</key>
- <string>^Tab2</string>
- <key>TabView</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>ViewSubView 3</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>0</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>Localized Label</string>
- <key>CellValue</key>
- <string>Localized Label</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSTextField</string>
- <key>ControlValue</key>
- <string>Localized Label</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 4</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>0</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>^Label2</string>
- <key>CellValue</key>
- <string>^Label2</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSTextField</string>
- <key>ControlValue</key>
- <string>^Label2</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 5</key>
- <dict>
- <key>ButtonAlternateTitle</key>
- <string></string>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>1</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>Localized Item 2</string>
- <key>CellValue</key>
- <string>1</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSPopUpButton</string>
- <key>ControlValue</key>
- <string>1</string>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewMenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Localized Item 1</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>1</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Localized Item 2</string>
- </dict>
- <key>MenuTitle</key>
- <string>OtherViews</string>
- </dict>
- </dict>
- <key>ViewSubView 6</key>
- <dict>
- <key>ButtonAlternateTitle</key>
- <string></string>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>1</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>Localized Checkbox 1</string>
- <key>CellValue</key>
- <string>1</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSButton</string>
- <key>ControlValue</key>
- <string>1</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 7</key>
- <dict>
- <key>ButtonAlternateTitle</key>
- <string></string>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>1</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>Localized Checkbox 2</string>
- <key>CellValue</key>
- <string>1</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSButton</string>
- <key>ControlValue</key>
- <string>1</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 8</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>1</integer>
- <key>CellTag</key>
- <integer>1</integer>
- <key>CellTitle</key>
- <string>Localized Radio 1</string>
- <key>CellValue</key>
- <string>1</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSMatrix</string>
- <key>ControlValue</key>
- <string>1</string>
- <key>MatrixAllowEmptySelection</key>
- <false/>
- <key>MatrixAutosizesCells</key>
- <true/>
- <key>MatrixCell 0</key>
- <dict>
- <key>CellState</key>
- <integer>1</integer>
- <key>CellTag</key>
- <integer>1</integer>
- <key>CellTitle</key>
- <string>Localized Radio 1</string>
- <key>CellValue</key>
- <string>1</string>
- </dict>
- <key>MatrixCell 1</key>
- <dict>
- <key>CellState</key>
- <integer>0</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>Localized Radio 2</string>
- <key>CellValue</key>
- <string>0</string>
- </dict>
- <key>MatrixCellPrototype</key>
- <dict>
- <key>CellState</key>
- <integer>0</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>Radio</string>
- <key>CellValue</key>
- <string>0</string>
- </dict>
- <key>MatrixColumnCount</key>
- <integer>1</integer>
- <key>MatrixIntercellSpacing</key>
- <string>{4, 2}</string>
- <key>MatrixMode</key>
- <integer>0</integer>
- <key>MatrixRowCount</key>
- <integer>2</integer>
- <key>MatrixSelectionByRect</key>
- <true/>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 9</key>
- <dict>
- <key>BoxBorderType</key>
- <integer>1</integer>
- <key>BoxTitle</key>
- <string>Bindings Tests</string>
- <key>BoxTitlePosition</key>
- <integer>2</integer>
- <key>BoxType</key>
- <integer>0</integer>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>1</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>DisplayPattern</string>
- <key>CellValue</key>
- <string>DisplayPattern</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSTextField</string>
- <key>ControlValue</key>
- <string>DisplayPattern</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 1</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>0</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string></string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSSearchField</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- </dict>
- </dict>
- <key>WindowIsMain</key>
- <false/>
- <key>WindowIsVisible</key>
- <false/>
- <key>WindowTitle</key>
- <string>Window</string>
- <key>WindowToolbar</key>
- <dict>
- <key>ToolbarItem 0</key>
- <dict>
- <key>Label</key>
- <string>Localized Toolbar Item Label</string>
- <key>PaletteLabel</key>
- <string>Localized Toolbar Item Palette Label</string>
- <key>ToolTip</key>
- <string>Localized ToolTip</string>
- </dict>
- <key>ToolbarItem 1</key>
- <dict>
- <key>Label</key>
- <string>ToolbarItemLabel</string>
- <key>PaletteLabel</key>
- <string>ToolbarItemPaletteLabel</string>
- <key>ToolTip</key>
- <string>ToolTip</string>
- </dict>
- </dict>
-</dict>
-</plist>
diff --git a/AppKit/TestData/GTMUILocalizerWindow2State.gtmUTState b/AppKit/TestData/GTMUILocalizerWindow2State.gtmUTState
deleted file mode 100644
index fa3e97a..0000000
--- a/AppKit/TestData/GTMUILocalizerWindow2State.gtmUTState
+++ /dev/null
@@ -1,21 +0,0 @@
-<?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>$GTMArchive</key>
- <string>GTMUnitTestingArchive</string>
- <key>$GTMVersion</key>
- <integer>1</integer>
- <key>WindowContent</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>WindowIsMain</key>
- <false/>
- <key>WindowIsVisible</key>
- <false/>
- <key>WindowTitle</key>
- <string>Localized Window</string>
-</dict>
-</plist>
diff --git a/AppKit/TestData/GTMUILocalizerWindow3State.10_4_SDK.gtmUTState b/AppKit/TestData/GTMUILocalizerWindow3State.10_4_SDK.gtmUTState
deleted file mode 100644
index ea1d10c..0000000
--- a/AppKit/TestData/GTMUILocalizerWindow3State.10_4_SDK.gtmUTState
+++ /dev/null
@@ -1,344 +0,0 @@
-<?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>$GTMArchive</key>
- <string>GTMUnitTestingArchive</string>
- <key>$GTMVersion</key>
- <integer>1</integer>
- <key>WindowContent</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>BoxBorderType</key>
- <integer>1</integer>
- <key>BoxTitle</key>
- <string>Localized Box</string>
- <key>BoxTitlePosition</key>
- <integer>2</integer>
- <key>BoxType</key>
- <integer>0</integer>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ButtonAlternateTitle</key>
- <string></string>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>0</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>Localized Button</string>
- <key>CellValue</key>
- <string>0</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSButton</string>
- <key>ControlValue</key>
- <string>0</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 1</key>
- <dict>
- <key>ButtonAlternateTitle</key>
- <string></string>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>0</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>^Button2</string>
- <key>CellValue</key>
- <string>0</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSButton</string>
- <key>ControlValue</key>
- <string>0</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- </dict>
- <key>ViewSubView 1</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>0</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>Localized Label</string>
- <key>CellValue</key>
- <string>Localized Label</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSTextField</string>
- <key>ControlValue</key>
- <string>Localized Label</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 1</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>1</integer>
- <key>CellTag</key>
- <integer>1</integer>
- <key>CellTitle</key>
- <string>Localized Radio 1</string>
- <key>CellValue</key>
- <string>1</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSMatrix</string>
- <key>ControlValue</key>
- <string>1</string>
- <key>MatrixAllowEmptySelection</key>
- <false/>
- <key>MatrixAutosizesCells</key>
- <true/>
- <key>MatrixCell 0</key>
- <dict>
- <key>CellState</key>
- <integer>1</integer>
- <key>CellTag</key>
- <integer>1</integer>
- <key>CellTitle</key>
- <string>Localized Radio 1</string>
- <key>CellValue</key>
- <string>1</string>
- </dict>
- <key>MatrixCell 1</key>
- <dict>
- <key>CellState</key>
- <integer>0</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>Localized Radio 2</string>
- <key>CellValue</key>
- <string>0</string>
- </dict>
- <key>MatrixCellPrototype</key>
- <dict>
- <key>CellState</key>
- <integer>0</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>Radio</string>
- <key>CellValue</key>
- <string>0</string>
- </dict>
- <key>MatrixColumnCount</key>
- <integer>1</integer>
- <key>MatrixIntercellSpacing</key>
- <string>{4, 2}</string>
- <key>MatrixMode</key>
- <integer>0</integer>
- <key>MatrixRowCount</key>
- <integer>2</integer>
- <key>MatrixSelectionByRect</key>
- <true/>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 2</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>0</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>^Label2</string>
- <key>CellValue</key>
- <string>^Label2</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSTextField</string>
- <key>ControlValue</key>
- <string>^Label2</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- </dict>
- <key>ViewSubView 1</key>
- <dict>
- <key>ControlIsEnabled</key>
- <false/>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSScroller</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 2</key>
- <dict>
- <key>ControlIsEnabled</key>
- <false/>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSScroller</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>ViewSubView 2</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ButtonAlternateTitle</key>
- <string></string>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>1</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>Localized Checkbox 1</string>
- <key>CellValue</key>
- <string>1</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSButton</string>
- <key>ControlValue</key>
- <string>1</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 1</key>
- <dict>
- <key>ButtonAlternateTitle</key>
- <string></string>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>1</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>Localized Checkbox 2</string>
- <key>CellValue</key>
- <string>1</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSButton</string>
- <key>ControlValue</key>
- <string>1</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>ViewSubView 3</key>
- <dict>
- <key>ComboBoxNumberOfItems</key>
- <integer>5</integer>
- <key>ComboBoxNumberOfVisibleItems</key>
- <integer>4</integer>
- <key>ComboBoxObjectValue 0</key>
- <string>Localized Choice 1</string>
- <key>ComboBoxObjectValue 1</key>
- <string>Localized Choice 2</string>
- <key>ComboBoxObjectValue 2</key>
- <string>Localized Choice 3</string>
- <key>ComboBoxObjectValue 3</key>
- <string>^Choice4</string>
- <key>ComboBoxObjectValue 4</key>
- <string>^Choice5</string>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>0</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>Localized Label</string>
- <key>CellValue</key>
- <string>Localized Label</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSComboBox</string>
- <key>ControlValue</key>
- <string>Localized Label</string>
- <key>PlaceHolderString</key>
- <string>Localized Placeholder</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>WindowIsMain</key>
- <false/>
- <key>WindowIsVisible</key>
- <false/>
- <key>WindowTitle</key>
- <string>Localized Window</string>
-</dict>
-</plist>
diff --git a/AppKit/TestData/GTMUILocalizerWindow3State.gtmUTState b/AppKit/TestData/GTMUILocalizerWindow3State.gtmUTState
deleted file mode 100644
index 6958e6e..0000000
--- a/AppKit/TestData/GTMUILocalizerWindow3State.gtmUTState
+++ /dev/null
@@ -1,376 +0,0 @@
-<?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>$GTMArchive</key>
- <string>GTMUnitTestingArchive</string>
- <key>$GTMVersion</key>
- <integer>1</integer>
- <key>WindowContent</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>BoxBorderType</key>
- <integer>1</integer>
- <key>BoxTitle</key>
- <string>Localized Box</string>
- <key>BoxTitlePosition</key>
- <integer>2</integer>
- <key>BoxType</key>
- <integer>0</integer>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ButtonAlternateTitle</key>
- <string></string>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>0</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>Localized Button</string>
- <key>CellValue</key>
- <string>0</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSButton</string>
- <key>ControlValue</key>
- <string>0</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 1</key>
- <dict>
- <key>ButtonAlternateTitle</key>
- <string></string>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>0</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>^Button2</string>
- <key>CellValue</key>
- <string>0</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSButton</string>
- <key>ControlValue</key>
- <string>0</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- </dict>
- <key>ViewSubView 1</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>0</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>Localized Label</string>
- <key>CellValue</key>
- <string>Localized Label</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSTextField</string>
- <key>ControlValue</key>
- <string>Localized Label</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 1</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>1</integer>
- <key>CellTag</key>
- <integer>1</integer>
- <key>CellTitle</key>
- <string>Localized Radio 1</string>
- <key>CellValue</key>
- <string>1</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSMatrix</string>
- <key>ControlValue</key>
- <string>1</string>
- <key>MatrixAllowEmptySelection</key>
- <false/>
- <key>MatrixAutosizesCells</key>
- <true/>
- <key>MatrixCell 0</key>
- <dict>
- <key>CellState</key>
- <integer>1</integer>
- <key>CellTag</key>
- <integer>1</integer>
- <key>CellTitle</key>
- <string>Localized Radio 1</string>
- <key>CellValue</key>
- <string>1</string>
- </dict>
- <key>MatrixCell 1</key>
- <dict>
- <key>CellState</key>
- <integer>0</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>Localized Radio 2</string>
- <key>CellValue</key>
- <string>0</string>
- </dict>
- <key>MatrixCellPrototype</key>
- <dict>
- <key>CellState</key>
- <integer>0</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>Radio</string>
- <key>CellValue</key>
- <string>0</string>
- </dict>
- <key>MatrixColumnCount</key>
- <integer>1</integer>
- <key>MatrixIntercellSpacing</key>
- <string>{4, 2}</string>
- <key>MatrixMode</key>
- <integer>0</integer>
- <key>MatrixRowCount</key>
- <integer>2</integer>
- <key>MatrixSelectionByRect</key>
- <true/>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 2</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>0</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>^Label2</string>
- <key>CellValue</key>
- <string>^Label2</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSTextField</string>
- <key>ControlValue</key>
- <string>^Label2</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- </dict>
- <key>ViewSubView 1</key>
- <dict>
- <key>ControlIsEnabled</key>
- <false/>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSScroller</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 2</key>
- <dict>
- <key>ControlIsEnabled</key>
- <false/>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSScroller</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>ViewSubView 2</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ButtonAlternateTitle</key>
- <string></string>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>1</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>Localized Checkbox 1</string>
- <key>CellValue</key>
- <string>1</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSButton</string>
- <key>ControlValue</key>
- <string>1</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 1</key>
- <dict>
- <key>ButtonAlternateTitle</key>
- <string></string>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>1</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>Localized Checkbox 2</string>
- <key>CellValue</key>
- <string>1</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSButton</string>
- <key>ControlValue</key>
- <string>1</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>ViewSubView 3</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>0</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string></string>
- <key>CellValue</key>
- <string>1</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSSegmentedControl</string>
- <key>ControlValue</key>
- <string>1</string>
- <key>Segment 0</key>
- <string>Localized Segment 1</string>
- <key>Segment 1</key>
- <string>Localized Segment 2</string>
- <key>Segment 2</key>
- <string>^Seg3</string>
- <key>SegmentCount</key>
- <integer>3</integer>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 4</key>
- <dict>
- <key>ComboBoxNumberOfItems</key>
- <integer>5</integer>
- <key>ComboBoxNumberOfVisibleItems</key>
- <integer>4</integer>
- <key>ComboBoxObjectValue 0</key>
- <string>Localized Choice 1</string>
- <key>ComboBoxObjectValue 1</key>
- <string>Localized Choice 2</string>
- <key>ComboBoxObjectValue 2</key>
- <string>Localized Choice 3</string>
- <key>ComboBoxObjectValue 3</key>
- <string>^Choice4</string>
- <key>ComboBoxObjectValue 4</key>
- <string>^Choice5</string>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>0</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>Localized Label</string>
- <key>CellValue</key>
- <string>Localized Label</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSComboBox</string>
- <key>ControlValue</key>
- <string>Localized Label</string>
- <key>PlaceHolderString</key>
- <string>Localized Placeholder</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>WindowIsMain</key>
- <false/>
- <key>WindowIsVisible</key>
- <false/>
- <key>WindowTitle</key>
- <string>Localized Window</string>
-</dict>
-</plist>
diff --git a/AppKit/TestData/Resources/English.lproj/Localizable.strings b/AppKit/TestData/Resources/English.lproj/Localizable.strings
index b45dc87..b975f9b 100644
--- a/AppKit/TestData/Resources/English.lproj/Localizable.strings
+++ b/AppKit/TestData/Resources/English.lproj/Localizable.strings
@@ -36,7 +36,6 @@
"Item 1" = "Localized Item 1";
"Item 2" = "Localized Item 2";
"Checkbox 1" = "Localized Checkbox 1";
-"Checkbox 2" = "Localized Checkbox 2";
"Radio 1" = "Localized Radio 1";
"Radio 2" = "Localized Radio 2";
"Box" = "Localized Box";
diff --git a/DebugUtils/GTMDebugThreadValidationTest.m b/DebugUtils/GTMDebugThreadValidationTest.m
deleted file mode 100644
index 66bd51b..0000000
--- a/DebugUtils/GTMDebugThreadValidationTest.m
+++ /dev/null
@@ -1,110 +0,0 @@
-//
-// GTMDebugThreadValidationTest.m
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMSenTestCase.h"
-#import "GTMDebugThreadValidation.h"
-
-// GTMDebugThreadValidation only happens on debug builds
-#if DEBUG
-
-@interface GTMDebugThreadValidationTest : GTMTestCase
-@end
-
-// A cheap flag for knowing when our thread has run
-
-static volatile BOOL gGTMDebugThreadValidationTestDone = NO;
-
-// This is an assertion handler that just records that an assertion has fired.
-@interface GTMDebugThreadValidationCheckAssertionHandler : NSAssertionHandler {
- @private
- BOOL handledAssertion_;
-}
-- (void)handleFailureInMethod:(SEL)selector
- object:(id)object
- file:(NSString *)fileName
- lineNumber:(NSInteger)line
- description:(NSString *)format,...;
-
-- (void)handleFailureInFunction:(NSString *)functionName
- file:(NSString *)fileName
- lineNumber:(NSInteger)line
- description:(NSString *)format,...;
-- (BOOL)didHandleAssertion;
-@end
-
-@implementation GTMDebugThreadValidationTest
-- (void)testOnMainThread {
- STAssertNoThrow(GTMAssertRunningOnMainThread(), nil);
-}
-
-- (void)threadFunc:(NSMutableString *)result {
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- // We'll insert our own assertion handler that will get called on the assert
- // so that we don't have to worry about the log, and exception being thrown.
- GTMDebugThreadValidationCheckAssertionHandler *handler =
- [[[GTMDebugThreadValidationCheckAssertionHandler alloc] init] autorelease];
- NSMutableDictionary *threadDictionary
- = [[NSThread currentThread] threadDictionary];
- [threadDictionary setObject:handler forKey:@"NSAssertionHandler"];
- GTMAssertRunningOnMainThread();
- if ([handler didHandleAssertion]) {
- [result setString:@"ASSERTED"];
- }
- [threadDictionary removeObjectForKey:@"NSAssertionHandler"];
- gGTMDebugThreadValidationTestDone = YES;
- [pool release];
-}
-
-- (void)testOnOtherThread {
- NSMutableString *result = [NSMutableString string];
- gGTMDebugThreadValidationTestDone = NO;
- [NSThread detachNewThreadSelector:@selector(threadFunc:)
- toTarget:self
- withObject:result];
- NSRunLoop *loop = [NSRunLoop currentRunLoop];
-
- while (!gGTMDebugThreadValidationTestDone) {
- NSDate *date = [NSDate dateWithTimeIntervalSinceNow:0.01];
- [loop runUntilDate:date];
- }
- STAssertEqualStrings(result, @"ASSERTED", @"GTMAssertRunningOnMainThread did "
- @"not assert while running on another thread");
-}
-@end
-
-@implementation GTMDebugThreadValidationCheckAssertionHandler
-
-- (void)handleFailureInMethod:(SEL)selector
- object:(id)object
- file:(NSString *)fileName
- lineNumber:(NSInteger)line
- description:(NSString *)format,... {
- handledAssertion_ = YES;
-}
-
-- (void)handleFailureInFunction:(NSString *)functionName
- file:(NSString *)fileName
- lineNumber:(NSInteger)line
- description:(NSString *)format,... {
- handledAssertion_ = YES;
-}
-
-- (BOOL)didHandleAssertion {
- return handledAssertion_;
-}
-@end
-#endif // DEBUG
diff --git a/Foundation/GTMAbstractDOListener.h b/Foundation/GTMAbstractDOListener.h
deleted file mode 100644
index 104ec05..0000000
--- a/Foundation/GTMAbstractDOListener.h
+++ /dev/null
@@ -1,231 +0,0 @@
-//
-// GTMAbstractDOListener.h
-//
-// Copyright 2006-2009 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-#import <Foundation/Foundation.h>
-#import "GTMDefines.h"
-
-#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4
-@class GTMReceivePortDelegate;
-#endif // MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4
-
-// Abstract base class for DO "listeners".
-// A class that needs to vend itself over DO should subclass this abstract
-// class. This class takes care of certain things like creating a new thread
-// to handle requests, setting request/reply timeouts, and ensuring the vended
-// object only gets requests that comply with the specified protocol.
-//
-// Subclassers will want to use the
-// GTM_ABSTRACTDOLISTENER_SUBCLASS_THREADMAIN_IMPL macro for easier debugging
-// of stack traces. Please read it's description below.
-//
-@interface GTMAbstractDOListener : NSObject <NSConnectionDelegate> {
- @protected
- NSString *registeredName_;
- GTM_WEAK Protocol *protocol_;
- NSConnection *connection_;
- BOOL isRunningInNewThread_;
- BOOL shouldShutdown_;
- NSTimeInterval requestTimeout_;
- NSTimeInterval replyTimeout_;
- NSPort *port_;
- NSTimeInterval heartRate_;
-
-#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4
- GTMReceivePortDelegate *receivePortDelegate_; // Strong (only used on Tiger)
-#endif // MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4
-}
-
-// Returns a set of all live instances of GTMAbstractDOListener subclasses.
-// If no listeners have been created, this will return an empty array--not nil.
-//
-// TODO: Remove this method
-//
-+ (NSArray *)allListeners;
-
-// Initializer. This actually calls
-// initWithRegisteredName:protocol:port with [NSMachPort port] as the port.
-//
-// Args:
-// name - the name that the object will register under
-// proto - the protocol that this object (self) should conform to
-//
-- (id)initWithRegisteredName:(NSString *)name protocol:(Protocol *)proto;
-
-// The designated initializer.
-//
-// Args:
-// name - the name used to register the port. While not necessarily required
-// for an NSSocketPort this class still requires it.
-// proto - the protocol that this object (self) should conform to
-// port - the port to be used when creating the NSConnection. If a NSMachPort
-// is being used then initWithRegisteredName:protocol is recommended.
-// Otherwise the port must be allocted by the caller.
-//
-- (id)initWithRegisteredName:(NSString *)name
- protocol:(Protocol *)proto
- port:(NSPort *)port;
-
-// Returns the name that this server will register with the
-// mach port name sever. This is the name of the port that this class
-// will "listen" on when -runInNewThread is called.
-//
-// Returns:
-// The registered name as a string
-//
-- (NSString *)registeredName;
-
-// Sets the registered name to use when listening over DO. This only makes
-// sense to be called before -runInNewThread has been called, because
-// -runInNewThread will listen on this "registered name", so setting it
-// afterwards would do nothing.
-//
-// Args:
-// name - the name to register under. May not be nil.
-//
-- (void)setRegisteredName:(NSString *)name;
-
-// Get/set the request timeout interval. If set to a value less than 0,
-// the default DO connection timeout will be used (maximum possible value).
-//
-- (NSTimeInterval)requestTimeout;
-- (void)setRequestTimeout:(NSTimeInterval)timeout;
-
-// Get/set the reply timeout interval. If set to a value less than 0,
-// the default DO connection timeout will be used (maximum possible value).
-//
-- (NSTimeInterval)replyTimeout;
-- (void)setReplyTimeout:(NSTimeInterval)timeout;
-
-// Get/set how long the thread will spin the run loop. This only takes affect
-// if runInNewThreadWithErrorTarget:selector:withObjectArgument: is used. The
-// default heart rate is 10.0 seconds.
-//
-- (void)setThreadHeartRate:(NSTimeInterval)heartRate;
-- (NSTimeInterval)ThreadHeartRate;
-
-// Returns the listeners associated NSConnection. May be nil if no connection
-// has been setup yet.
-//
-- (NSConnection *)connection;
-
-// Starts the DO system listening using the current thread and current runloop.
-// It only makes sense to call this method -OR- -runInNewThread, but not both.
-// Returns YES if it was able to startup the DO listener, NO otherwise.
-//
-- (BOOL)runInCurrentThread;
-
-// Starts the DO system listening, and creates a new thread to handle the DO
-// connections. It only makes sense to call this method -OR-
-// -runInCurrentThread, but not both.
-// if |errObject| is non nil, it will be used along with |selector| and
-// |argument| to signal that the startup of the listener in the new thread
-// failed. The actual selector will be invoked back on the main thread so
-// it does not have to be thread safe.
-// The most basic way to call this method is as follows:
-// [listener runInNewThreadWithErrorTarget:nil
-// selector:NULL
-// withObjectArgument:nil];
-//
-// Note: Using the example above you will not know if the listener failed to
-// startup due to some error.
-//
-- (void)runInNewThreadWithErrorTarget:(id)errObject
- selector:(SEL)selector
- withObjectArgument:(id)argument;
-
-// Shuts down the connection. If it was running in a new thread, that thread
-// should exit (within about 10 seconds). This call does not block.
-//
-// NOTE: This method is called in -dealloc, so if -runInNewThread had previously
-// been called, -dealloc will return *before* the thread actually exits. This
-// can be a problem as "self" may be gone before the thread exits. This is a
-// bug and needs to be fixed. Currently, to be safe, only call -shutdown if
-// -runInCurrentThread had previously been called.
-//
-- (void)shutdown;
-
-@end
-
-
-// Methods that subclasses may implement to vary the behavior of this abstract
-// class.
-//
-@interface GTMAbstractDOListener (GTMAbstractDOListenerSubclassMethods)
-
-// Called by the -runIn* methods. In the case where a new thread is being used,
-// this method is called on the new thread. The default implementation of this
-// method just returns YES, but subclasses can override it to do subclass
-// specific initialization. If this method returns NO, the -runIn* method that
-// called it will fail with an error.
-//
-// Returns:
-// YES if the -runIn* method should continue successfully, NO if the it should
-// fail.
-//
-- (BOOL)doRunInitialization;
-
-// Called as the "main" for the thread spun off by GTMAbstractDOListener.
-// Not really for use by subclassers, except to use the
-// GTMABSTRACTDOLISTENER_SUBCLASS_THREADMAIN_IMPL macro defined below.
-//
-// This method runs forever in a new thread. This method actually starts the
-// DO connection listening.
-//
-- (void)threadMain:(NSInvocation *)failureCallback;
-
-@end
-
-// GTMAbstractDOListeners used to be hard to debug because crashes in their
-// stacks looked like this:
-//
-// #0 0x90009cd7 in mach_msg_trap ()
-// #1 0x90009c38 in mach_msg ()
-// #2 0x9082d2b3 in CFRunLoopRunSpecific ()
-// #3 0x9082cace in CFRunLoopRunInMode ()
-// #4 0x9282ad3a in -[NSRunLoop runMode:beforeDate:] ()
-// #5 0x928788e4 in -[NSRunLoop runUntilDate:] ()
-// #6 0x00052696 in -[GTMAbstractDOListener(GTMAbstractDOListenerSubclassMethods) threadMain:] ...
-// #7 0x927f52e0 in forkThreadForFunction ()
-// #8 0x90024227 in _pthread_body ()
-//
-// and there was no good way to figure out what thread had the problem because
-// they all originated from
-// -[GTMAbstractDOListener(GTMAbstractDOListenerSubclassMethods) threadMain:]
-//
-// If you add GTMABSTRACTDOLISTENER_SUBCLASS_THREADMAIN_IMPL to the impl of your
-// subclass you will get a stack that looks like this:
-// #0 0x90009cd7 in mach_msg_trap ()
-// #1 0x90009c38 in mach_msg ()
-// #2 0x9082d2b3 in CFRunLoopRunSpecific ()
-// #3 0x9082cace in CFRunLoopRunInMode ()
-// #4 0x9282ad3a in -[NSRunLoop runMode:beforeDate:] ()
-// #5 0x928788e4 in -[NSRunLoop runUntilDate:] ()
-// #6 0x00052696 in -[GTMAbstractDOListener(GTMAbstractDOListenerSubclassMethods) threadMain:] ...
-// #7 0x0004b35c in -[GDStatsListener threadMain:]
-// #8 0x927f52e0 in forkThreadForFunction () #9 0x90024227 in _pthread_body ()
-//
-// so we can see that this was the GDStatsListener thread that failed.
-// It will look something like this
-// @implemetation MySubclassOfGTMAbstractDOListenerSubclassMethods
-// GTM_ABSTRACTDOLISTENER_SUBCLASS_THREADMAIN_IMPL
-// ....
-// @end
-
-#define GTM_ABSTRACTDOLISTENER_SUBCLASS_THREADMAIN_IMPL \
- - (void)threadMain:(NSInvocation *)failureCallback { \
- [super threadMain:failureCallback]; \
- }
diff --git a/Foundation/GTMAbstractDOListener.m b/Foundation/GTMAbstractDOListener.m
deleted file mode 100644
index 4ac69bd..0000000
--- a/Foundation/GTMAbstractDOListener.m
+++ /dev/null
@@ -1,454 +0,0 @@
-//
-// GTMAbstractDOListener.m
-//
-// Copyright 2006-2009 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMAbstractDOListener.h"
-#import "GTMSystemVersion.h"
-#import <mach/mach_init.h>
-
-// Hack workaround suggested by DTS for the DO deadlock bug. Basically, this
-// class intercepts the delegate role for DO's receive port (which is an
-// NSMachPort). When -handlePortMessage: is called, it verifies that the send
-// and receive ports are not nil, then forwards the message on to the original
-// delegate. If the ports are nil, then the resulting NSConnection would
-// eventually cause us to deadlock. In this case, it simply ignores the
-// message. This is only need on Tiger.
-#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4
-@interface GTMReceivePortDelegate : NSObject {
- GTM_WEAK id delegate_;
-}
-- (id)initWithDelegate:(id)delegate;
-- (void)handlePortMessage:(NSPortMessage *)message;
-@end
-#endif // MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4
-
-@interface GTMAbstractDOListener (PrivateMethods)
-- (BOOL)startListening;
-- (void)stopListening;
-
-// Returns a description of the port based on the type of port.
-- (NSString *)portDescription;
-
-#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4
-// Uses the GTMReceivePortDelegate hack (see comments above) if we're on Tiger.
-- (void)hackaroundTigerDOWedgeBug:(NSConnection *)conn;
-#endif // MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4
-@end
-
-// Static global set that holds a pointer to all instances of
-// GTMAbstractDOListener subclasses.
-//
-static NSMutableSet *gAllListeners = nil;
-
-@implementation GTMAbstractDOListener
-
-+ (void)initialize {
- if (self == [GTMAbstractDOListener class]) {
- // We create the set using CFSetCreateMutable because we don't
- // want to retain things in this set. If we retained things in the
- // set we would never be able to dealloc ourselves because we
- // add "self" to this set in it's init routine would cause an
- // extra retain to be added to it.
- gAllListeners = (NSMutableSet*)CFSetCreateMutable(NULL, 0, NULL);
- }
-}
-
-+ (NSArray *)allListeners {
- // We return an NSArray instead of an NSSet here because NSArrays look nicer
- // when displayed as %@
- NSArray *allListeners = nil;
-
- @synchronized (gAllListeners) {
- allListeners = [gAllListeners allObjects];
- }
- return allListeners;
-}
-
-- (id)init {
- return [self initWithRegisteredName:nil protocol:NULL];
-}
-
-- (id)initWithRegisteredName:(NSString *)name protocol:(Protocol *)proto {
- return [self initWithRegisteredName:name
- protocol:proto
- port:[NSMachPort port]];
-}
-
-- (id)initWithRegisteredName:(NSString *)name
- protocol:(Protocol *)proto
- port:(NSPort *)port {
- self = [super init];
- if (!self) {
- return nil;
- }
-
- if ((!proto) || (!port) || (!name)) {
- if (!proto) {
- _GTMDevLog(@"Failed to create a listener, a protocol must be specified");
- }
-
- if (!port) {
- _GTMDevLog(@"Failed to create a listener, a port must be specified");
- }
-
- if (!name) {
- _GTMDevLog(@"Failed to create a listener, a name must be specified");
- }
-
- [self release];
- return nil;
- }
-
- registeredName_ = [name copy];
- protocol_ = proto; // Can't retain protocols
- port_ = [port retain];
-
- requestTimeout_ = -1;
- replyTimeout_ = -1;
-
- heartRate_ = (NSTimeInterval)10.0;
-
- _GTMDevAssert(gAllListeners, @"gAllListeners is not nil");
- @synchronized (gAllListeners) {
- [gAllListeners addObject:self];
- }
-
- return self;
-}
-
-- (void)dealloc {
- _GTMDevAssert(gAllListeners, @"gAllListeners is not nil");
- @synchronized (gAllListeners) {
- [gAllListeners removeObject:self];
- }
-
-#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4
- [receivePortDelegate_ release];
-#endif // MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4
-
- [self shutdown];
- [port_ release];
- [registeredName_ release];
- [super dealloc];
-}
-
-
-#pragma mark Getters and Setters
-
-- (NSString *)registeredName {
- return registeredName_;
-}
-
-- (void)setRegisteredName:(NSString *)name {
- if (!name) {
- return;
- }
- [registeredName_ autorelease];
- registeredName_ = [name copy];
-}
-
-- (NSTimeInterval)requestTimeout {
- return requestTimeout_;
-}
-
-- (void)setRequestTimeout:(NSTimeInterval)timeout {
- requestTimeout_ = timeout;
-}
-
-- (NSTimeInterval)replyTimeout {
- return replyTimeout_;
-}
-
-- (void)setReplyTimeout:(NSTimeInterval)timeout {
- replyTimeout_ = timeout;
-}
-
-- (void)setThreadHeartRate:(NSTimeInterval)heartRate {
- heartRate_ = heartRate;
-}
-
-- (NSTimeInterval)ThreadHeartRate {
- return heartRate_;
-}
-
-- (NSConnection *)connection {
- return connection_;
-}
-
-- (NSString *)description {
- return [NSString stringWithFormat:@"%@<%p> { name=\"%@\", %@ }",
- [self class], self, registeredName_, [self portDescription]];
-}
-
-#pragma mark "Run" methods
-
-- (BOOL)runInCurrentThread {
- return [self startListening];
-}
-
-- (void)runInNewThreadWithErrorTarget:(id)errObject
- selector:(SEL)selector
- withObjectArgument:(id)argument {
- NSInvocation *invocation = nil;
-
- _GTMDevAssert(((errObject != nil && selector != NULL) ||
- (!errObject && !selector)), @"errObject and selector must "
- @"both be nil or not nil");
-
- // create an invocation we can use if things fail
- if (errObject) {
- NSMethodSignature *signature =
- [errObject methodSignatureForSelector:selector];
- invocation = [NSInvocation invocationWithMethodSignature:signature];
- [invocation setSelector:selector];
- [invocation setTarget:errObject];
-
- // If the selector they passed in takes an arg (i.e., it has at least one
- // colon in the selector name), then set the first user-specified arg to be
- // the |argument| they specified. The first two args are self and _cmd.
- if ([signature numberOfArguments] > 2) {
- [invocation setArgument:&argument atIndex:2];
- }
-
- [invocation retainArguments];
- }
-
- shouldShutdown_ = NO;
- [NSThread detachNewThreadSelector:@selector(threadMain:)
- toTarget:self
- withObject:invocation];
-}
-
-- (void)shutdown {
- // If we're not running in a new thread (then we're running in the "current"
- // thread), tear down the NSConnection here. If we are running in a new
- // thread we just set the shouldShutdown_ flag, and the thread will teardown
- // the NSConnection itself.
- if (!isRunningInNewThread_) {
- [self stopListening];
- } else {
- shouldShutdown_ = YES;
- }
-}
-
-@end
-
-@implementation GTMAbstractDOListener (PrivateMethods)
-
-- (BOOL)startListening {
- BOOL result = NO;
-
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
-
- _GTMDevAssert(!connection_, @"Connection_ should not be set. Was this "
- @"listener already started? %@", self);
- connection_ = [[NSConnection alloc] initWithReceivePort:port_ sendPort:nil];
-
- NSProtocolChecker *checker =
- [NSProtocolChecker protocolCheckerWithTarget:self
- protocol:protocol_];
-
- if (requestTimeout_ >= 0) {
- [connection_ setRequestTimeout:requestTimeout_];
- }
-
- if (replyTimeout_ >= 0) {
- [connection_ setReplyTimeout:replyTimeout_];
- }
-
- // Set the connection's root object to be the protocol checker so that only
- // methods listed in the protocol_ are available via DO.
- [connection_ setRootObject:checker];
-
- // Allow subclasses to be the connection delegate
- [connection_ setDelegate:self];
-
- // Because of radar 5493309 we need to do this. [NSConnection registeredName:]
- // returns NO when the connection is created using an NSSocketPort under
- // Leopard.
- //
- // The recommendation from Apple was to use the command:
- // [NSConnection registerName:withNameServer:].
- NSPortNameServer *server;
- if ([port_ isKindOfClass:[NSSocketPort class]]) {
- server = [NSSocketPortNameServer sharedInstance];
- } else {
- server = [NSPortNameServer systemDefaultPortNameServer];
- }
-
- BOOL registered = [connection_ registerName:registeredName_
- withNameServer:server];
-
- if (registeredName_ && registered) {
-#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4
- [self hackaroundTigerDOWedgeBug:connection_];
-#endif // MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4
-
- result = YES;
-
- _GTMDevLog(@"listening on %@ with name '%@'", [self portDescription],
- registeredName_);
- } else {
- _GTMDevLog(@"failed to register %@ with %@", connection_, registeredName_);
- }
-
- // we're good, so call the overrideable initializer
- if (result) {
- // Call the virtual "runIn*" initializer
- result = [self doRunInitialization];
- } else {
- [connection_ invalidate];
- [connection_ release];
- connection_ = nil;
- }
-
- [pool drain];
-
- return result;
-}
-
-- (void)stopListening {
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- [connection_ invalidate];
- [connection_ release];
- connection_ = nil;
- [pool drain];
-}
-
-- (NSString *)portDescription {
- NSString *portDescription;
- if ([port_ isKindOfClass:[NSMachPort class]]) {
- portDescription = [NSString stringWithFormat:@"mach_port=%#x",
- [(NSMachPort *)port_ machPort]];
- } else {
- portDescription = [NSString stringWithFormat:@"port=%@",
- [port_ description]];
- }
- return portDescription;
-}
-
-#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4
-- (void)hackaroundTigerDOWedgeBug:(NSConnection *)conn {
- if ([GTMSystemVersion isTiger]) {
- NSPort *receivePort = [conn receivePort];
- if ([receivePort isKindOfClass:[NSMachPort class]]) {
- id portDelegate = [receivePort delegate];
- receivePortDelegate_ =
- [[GTMReceivePortDelegate alloc] initWithDelegate:portDelegate];
- [receivePort setDelegate:receivePortDelegate_];
- }
- }
-}
-#endif // MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4
-
-@end
-
-@implementation GTMAbstractDOListener (GTMAbstractDOListenerSubclassMethods)
-
-- (BOOL)doRunInitialization {
- return YES;
-}
-
-//
-// -threadMain:
-//
-
-//
-- (void)threadMain:(NSInvocation *)failureCallback {
- isRunningInNewThread_ = YES;
-
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
-
- // register
- if ([self startListening]) {
- // spin
- for (;;) { // Run forever
-
- // check if we were asked to shutdown
- if (shouldShutdown_) {
- break;
- }
-
- NSAutoreleasePool *localPool = [[NSAutoreleasePool alloc] init];
- // Wrap our runloop in case we get an exception from DO
- @try {
- NSDate *waitDate = [NSDate dateWithTimeIntervalSinceNow:heartRate_];
- [[NSRunLoop currentRunLoop] runUntilDate:waitDate];
- } @catch (id e) {
- _GTMDevLog(@"Listener '%@' caught exception: %@", registeredName_, e);
- }
- [localPool drain];
- }
- } else {
- // failed, if we had something to invoke, call it on the main thread
- if (failureCallback) {
- [failureCallback performSelectorOnMainThread:@selector(invoke)
- withObject:nil
- waitUntilDone:NO];
- }
- }
-
- [self stopListening];
- [pool drain];
-
- isRunningInNewThread_ = NO;
-}
-
-@end
-
-#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4
-@implementation GTMReceivePortDelegate
-
-- (id)initWithDelegate:(id)delegate {
- if ((self = [super init])) {
- delegate_ = delegate; // delegates aren't retained
- }
- return self;
-}
-
-- (void)handlePortMessage:(NSPortMessage *)message {
- NSPort *receivePort = [message receivePort];
- NSPort *sendPort = [message sendPort];
-
- // If we don't have a sensible send or receive port, just act like
- // the message never arrived. Otherwise, hand it off to the original
- // delegate (which is the NSMachPort itself).
- if (receivePort == nil || sendPort == nil || [receivePort isEqual:sendPort]) {
- _GTMDevLog(@"Dropping port message destined for itself to avoid DO wedge.");
- } else {
- // Uncomment for super-duper verbose DO message forward logging
- // _GTMDevLog(@"--> Forwarding message %@ to delegate %@",
- // message, delegate_);
- [delegate_ handlePortMessage:message];
- }
-
- // If processing the message caused us to drop no longer being the delegate,
- // set us back. Due to interactions between NSConnection and NSMachPort,
- // it's possible for the NSMachPort's delegate to get set back to its
- // original value. If that happens, we set it back to the value we want.
- if ([delegate_ delegate] != self) {
- if ([delegate_ delegate] == delegate_) {
- _GTMDevLog(@"Restoring DO delegate to %@", self);
- [delegate_ setDelegate:self];
- } else {
- _GTMDevLog(@"GMReceivePortDelegate replaced with %@",
- [delegate_ delegate]);
- }
- }
-}
-@end
-#endif // MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4
diff --git a/Foundation/GTMAbstractDOListenerTest.m b/Foundation/GTMAbstractDOListenerTest.m
deleted file mode 100644
index 6a5a90a..0000000
--- a/Foundation/GTMAbstractDOListenerTest.m
+++ /dev/null
@@ -1,365 +0,0 @@
-//
-// GTMAbstractDOListenerTest.m
-//
-// Copyright 2006-2009 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMSenTestCase.h"
-#import "GTMAbstractDOListener.h"
-
-// Needed for GTMUnitTestDevLog expectPattern
-#import "GTMUnitTestDevLog.h"
-
-// Used for request/reply timeouts
-#define kDefaultTimeout 0.5
-
-// Used when waiting for something to shutdown
-#define kDelayTimeout 30.0
-
-enum {
- kGTMAbstractDOConditionWaiting = 123,
- kGTMAbstractDOConditionReceivedMessage
-};
-
-#pragma mark -
-#pragma mark Test Protocols
-
-@protocol TestServerDOProtocol
-- (oneway void)testCommand;
-- (in bycopy NSNumber *)delayResponseForTime:(in byref NSNumber *)delay;
-@end
-
-@protocol TestServerEvilDOProtocol
-// This command is not implemented, but is declared to remove all compiler
-// warnings.
-//
-- (oneway void)evilCommand;
-@end
-
-@protocol TestServerDelegateProtocol
-- (void)clientSentMessage;
-@end
-
-#pragma mark -
-#pragma mark Test Server
-
-@interface TestServer : GTMAbstractDOListener<TestServerDOProtocol> {
- @private
- GTM_WEAK id delegate_;
-}
-- (void)setDelegate:(id)delegate;
-@end
-
-@implementation TestServer
-
-- (void)setDelegate:(id)delegate {
- delegate_ = delegate;
-}
-
-- (in bycopy NSNumber *)delayResponseForTime:(in byref NSNumber *)delay {
- NSDate *future = [NSDate dateWithTimeIntervalSinceNow:[delay doubleValue]];
- [NSThread sleepUntilDate:future];
- return [NSNumber numberWithDouble:kDefaultTimeout];
-}
-
-- (oneway void)testCommand {
- [delegate_ performSelector:@selector(clientSentMessage)];
-}
-
-@end
-
-#pragma mark -
-#pragma mark Test Client
-
-@interface TestClient : NSObject {
- @private
- id proxy_;
- NSString *serverName_;
-}
-- (id)initWithName:(NSString *)name;
-- (id)connect;
-- (void)disconnect;
-@end
-
-@implementation TestClient
-- (id)initWithName:(NSString *)name {
- self = [super init];
- if (self) {
- serverName_ = [[NSString alloc] initWithString:name];
- if (!serverName_) {
- [self release];
- self = nil;
- }
- }
- return self;
-}
-
-- (void)finalize {
- [self disconnect];
- [super finalize];
-}
-
-- (void)dealloc {
- [self disconnect];
- [serverName_ release];
- [super dealloc];
-}
-
-- (id)connect {
- NSConnection *connection =
- [NSConnection connectionWithRegisteredName:serverName_ host:nil];
-
- [connection setReplyTimeout:kDefaultTimeout];
- [connection setRequestTimeout:kDefaultTimeout];
-
- @try {
- proxy_ = [[connection rootProxy] retain];
- } @catch (NSException *e) {
- [self disconnect];
- }
- return proxy_;
-}
-
-- (void)disconnect {
- NSConnection *connection =
- [NSConnection connectionWithRegisteredName:serverName_ host:nil];
- [connection invalidate];
- [proxy_ release];
- proxy_ = nil;
-}
-
-@end
-
-#pragma mark -
-#pragma mark Tests
-
-@interface GTMAbstractDOListenerTest : GTMTestCase<TestServerDelegateProtocol> {
- @private
- NSConditionLock *lock_;
-}
-@end
-
-@implementation GTMAbstractDOListenerTest
-
-- (void)clientSentMessage {
- NSDate *future = [NSDate dateWithTimeIntervalSinceNow:kDefaultTimeout];
- STAssertTrue([lock_ lockWhenCondition:kGTMAbstractDOConditionWaiting
- beforeDate:future], @"Unable to acquire lock "
- @"for client send message. This is BAD!");
- [lock_ unlockWithCondition:kGTMAbstractDOConditionReceivedMessage];
-}
-
-- (void)listenerErrorEncountered:(id)error {
- // Do nothing
-}
-
-- (void)testAbstractDOListenerProtocol {
- lock_ =
- [[NSConditionLock alloc] initWithCondition:kGTMAbstractDOConditionWaiting];
- [lock_ autorelease];
-
- NSString *serverName = @"ProtoTest";
-
- // Build and start the server
- TestServer *listener =
- [[TestServer alloc] initWithRegisteredName:serverName
- protocol:@protocol(TestServerDOProtocol)];
- [listener autorelease];
- [listener setDelegate:self];
- [GTMUnitTestDevLog expectPattern:@"listening on.*"];
- [listener runInCurrentThread];
-
- // Connect with our simple client
- TestClient *client =
- [[[TestClient alloc] initWithName:serverName] autorelease];
- id proxy = [client connect];
- STAssertNotNil(proxy, @"should have a proxy object");
-
- [proxy testCommand];
-
- NSDate *timeout = [NSDate dateWithTimeIntervalSinceNow:kDelayTimeout];
- while (![lock_ tryLockWhenCondition:kGTMAbstractDOConditionReceivedMessage] &&
- ([timeout compare:[NSDate date]] == NSOrderedDescending)) {
- NSDate* runUntil = [NSDate dateWithTimeIntervalSinceNow:0.1];
- [[NSRunLoop currentRunLoop] runUntilDate:runUntil];
- }
-
- STAssertFalse([lock_ tryLockWhenCondition:kGTMAbstractDOConditionWaiting],
- @"A message was never received from the client.");
-
- STAssertThrows([proxy evilCommand],
- @"An exception should have been thrown for a method not in"
- @"the specified protocol.");
-
- [client disconnect];
- [listener shutdown];
-
- STAssertNil([listener connection], @"The connection should be nil after "
- @"shutdown.");
-
- // We are done with the lock.
- [lock_ unlockWithCondition:kGTMAbstractDOConditionWaiting];
-}
-
-- (void)testAbstractDOListenerBadInitializers {
- [GTMUnitTestDevLog expectString:
- @"Failed to create a listener, a protocol must be specified"];
- [GTMUnitTestDevLog expectString:
- @"Failed to create a listener, a name must be specified"];
- TestServer *listener = [[TestServer alloc] init];
- STAssertNil(listener, @"We should not have created a server using init");
-
- [GTMUnitTestDevLog expectString:
- @"Failed to create a listener, a name must be specified"];
- listener =
- [[TestServer alloc] initWithRegisteredName:nil
- protocol:@protocol(TestServerDOProtocol)
- port:[NSMachPort port]];
- STAssertNil(listener, @"We should not have created a server with a nil name");
-
- [GTMUnitTestDevLog expectString:
- @"Failed to create a listener, a protocol must be specified"];
- listener =
- [[TestServer alloc] initWithRegisteredName:@"NilProtocol"
- protocol:nil
- port:[NSMachPort port]];
- STAssertNil(listener,
- @"We should not have created a server with a nil protocol");
-
- [GTMUnitTestDevLog expectString:
- @"Failed to create a listener, a port must be specified"];
- listener =
- [[TestServer alloc] initWithRegisteredName:@"NilPort"
- protocol:@protocol(TestServerDOProtocol)
- port:nil];
- STAssertNil(listener, @"We should not have created a server with a nil port");
-
-}
-
-- (void)testAbstractDOListenerMultipleRegistration {
- TestServer *listener =
- [[[TestServer alloc] initWithRegisteredName:@"MyUniqueName"
- protocol:@protocol(TestServerDOProtocol)
- port:[NSMachPort port]] autorelease];
- [GTMUnitTestDevLog expectPattern:@"listening on.*"];
- [listener runInCurrentThread];
-
- TestServer *copyCat =
- [[[TestServer alloc] initWithRegisteredName:@"copyCat"
- protocol:@protocol(TestServerDOProtocol)
- port:[NSMachPort port]] autorelease];
- STAssertTrue(([[copyCat registeredName] isEqualToString:@"copyCat"]),
- @"The name we set to register with is not correct.");
-
- TestServer *listener2 =
- [[[TestServer alloc] initWithRegisteredName:@"MyUniqueName"
- protocol:@protocol(TestServerDOProtocol)
- port:[NSMachPort port]] autorelease];
-
- [GTMUnitTestDevLog expectPattern:@"failed to register.*"];
- [listener2 runInCurrentThread];
- STAssertNil([listener2 connection], @"We should not have been able to create "
- @"a server with a name that has already been taken.");
-}
-
-- (void)testAbstractDOListenerRequestTimeout {
- NSString *serverName = @"RequestTimeoutTest";
-
- // Build and start the server
- TestServer *listener =
- [[TestServer alloc] initWithRegisteredName:serverName
- protocol:@protocol(TestServerDOProtocol)];
- [listener autorelease];
- [listener setReplyTimeout:kDefaultTimeout];
- [listener setRequestTimeout:kDefaultTimeout];
-
- STAssertLessThanOrEqual(ABS([listener replyTimeout] - kDefaultTimeout),
- (kDefaultTimeout / pow(kDefaultTimeout, 15)), nil);
-
- STAssertLessThanOrEqual(ABS([listener requestTimeout] - kDefaultTimeout),
- (kDefaultTimeout / pow(kDefaultTimeout, 15)), nil);
-
- NSTimeInterval customHeartRate = 0.25;
- [listener setThreadHeartRate:0.25];
-
- STAssertLessThanOrEqual(ABS([listener ThreadHeartRate] - customHeartRate),
- (customHeartRate / pow(customHeartRate, 15)), nil);
-
- [GTMUnitTestDevLog expectPattern:@"listening on.*"];
- [listener runInNewThreadWithErrorTarget:self
- selector:@selector(listenerErrorEncountered:)
- withObjectArgument:nil];
-
- // It will take a little while for the new thread to spin up and start
- // listening. We will spin here and wait for it to come on-line.
- NSDate *timeout = [NSDate dateWithTimeIntervalSinceNow:kDelayTimeout];
- while (![listener connection] &&
- ([timeout compare:[NSDate date]] == NSOrderedDescending)) {
- NSDate *waitTime = [NSDate dateWithTimeIntervalSinceNow:0.05];
- [[NSRunLoop currentRunLoop] runUntilDate:waitTime];
- }
-
- STAssertNotNil([listener connection],
- @"The server never created a connection.");
-
- // Connect with our simple client
- TestClient *client =
- [[[TestClient alloc] initWithName:serverName] autorelease];
- id proxy = [client connect];
- STAssertNotNil(proxy, @"should have a proxy object");
-
- NSNumber *overDelay = [NSNumber numberWithDouble:(kDefaultTimeout + 0.25)];
- STAssertThrows([proxy delayResponseForTime:overDelay],
- @"An exception should have been thrown for the response taking"
- @"longer than the replyTimout.");
-
- [client disconnect];
- [listener shutdown];
-
- timeout = [NSDate dateWithTimeIntervalSinceNow:kDelayTimeout];
- while ([listener connection] &&
- ([timeout compare:[NSDate date]] == NSOrderedDescending)) {
- NSDate *waitTime = [NSDate dateWithTimeIntervalSinceNow:0.05];
- [[NSRunLoop currentRunLoop] runUntilDate:waitTime];
- }
-
- STAssertNil([listener connection],
- @"The connection should be nil after shutdown.");
-}
-
-- (void)testAbstractDOListenerRelease {
- NSUInteger listenerCount = [[GTMAbstractDOListener allListeners] count];
- GTMAbstractDOListener *listener =
- [[GTMAbstractDOListener alloc] initWithRegisteredName:@"FOO"
- protocol:@protocol(NSObject)
- port:[NSPort port]];
- STAssertNotNil(listener, nil);
-
- // We throw an autorelease pool here because allStores does a couple of
- // autoreleased retains on us which would screws up our retain count
- // numbers.
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- STAssertEquals([[GTMAbstractDOListener allListeners] count],
- listenerCount + 1, nil);
- [pool drain];
-
- STAssertEquals([listener retainCount], (NSUInteger)1, nil);
-
- [listener release];
- STAssertEquals([[GTMAbstractDOListener allListeners] count], listenerCount,
- nil);
-}
-
-@end
diff --git a/Foundation/GTMCalculatedRange.h b/Foundation/GTMCalculatedRange.h
deleted file mode 100644
index c51181a..0000000
--- a/Foundation/GTMCalculatedRange.h
+++ /dev/null
@@ -1,105 +0,0 @@
-//
-// GTMCalculatedRange.h
-//
-// This is a collection that allows you to calculate a value based on
-// defined stops in a range.
-//
-// Copyright 2006-2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import <Foundation/Foundation.h>
-#import "GTMDefines.h"
-#if GTM_IPHONE_SDK
-#import <CoreGraphics/CoreGraphics.h>
-#endif // GTM_IPHONE_SDK
-
-/// Allows you to calculate a value based on defined stops in a range.
-//
-/// For example if you have a range from 0.0 to 1.0 where the stop
-/// located at 0.0 is red and the stop located at 1.0 is blue,
-/// the value based on the position 0.5 would come out as purple assuming
-/// that the valueAtPosition function calculates a purely linear mapping between
-/// the stops at 0.0 and 1.0. Stops have indices and are sorted from lowest to
-/// highest. The example above would have 2 stops. Stop 0 would be red and stop
-/// 1 would be blue.
-///
-/// Subclasses of GTMCalculatedRange are expected to override the valueAtPosition:
-/// method to return a value based on the position passed in, and the stops
-/// that are currently set in the range. Stops do not necessarily have to
-/// be the same type as the values that are calculated, but normally they are.
-@interface GTMCalculatedRange : NSObject {
- NSMutableArray *storage_;
-}
-
-// Adds a stop to the range at |position|. If there is already a stop
-// at position |position| it is replaced.
-//
-// Args:
-// item: the object to place at |position|.
-// position: the position in the range to put |item|.
-//
-- (void)insertStop:(id)item atPosition:(CGFloat)position;
-
-// Removes a stop from the range at |position|.
-//
-// Args:
-// position: the position in the range to remove |item|.
-//
-// Returns:
-// YES if there is a stop at |position| that has been removed
-// NO if there is not a stop at the |position|
-- (BOOL)removeStopAtPosition:(CGFloat)position;
-
-// Removes stop |index| from the range. Stops are ordered
-// based on position where index of x < index of y if position
-// of x < position of y.
-//
-// Args:
-// item: the object to place at |position|.
-// position: the position in the range to put |item|.
-//
-- (void)removeStopAtIndex:(NSUInteger)index;
-
-// Returns the number of stops in the range.
-//
-// Returns:
-// number of stops
-- (NSUInteger)stopCount;
-
-// Returns the value at position |position|.
-// This function should be overridden by subclasses to calculate a
-// value for any given range.
-// The default implementation returns a value if there happens to be
-// a stop for the given position. Otherwise it returns nil.
-//
-// Args:
-// position: the position to calculate a value for.
-//
-// Returns:
-// value for position
-- (id)valueAtPosition:(CGFloat)position;
-
-// Returns the |index|'th stop and position in the set.
-// Throws an exception if out of range.
-//
-// Args:
-// index: the index of the stop
-// outPosition: a pointer to a value to be filled in with a position.
-// this can be NULL, in which case no position is returned.
-//
-// Returns:
-// the stop at the index.
-- (id)stopAtIndex:(NSUInteger)index position:(CGFloat*)outPosition;
-@end
diff --git a/Foundation/GTMCalculatedRange.m b/Foundation/GTMCalculatedRange.m
deleted file mode 100644
index 3e8aa69..0000000
--- a/Foundation/GTMCalculatedRange.m
+++ /dev/null
@@ -1,148 +0,0 @@
-//
-// GTMCalculatedRange.m
-//
-// Copyright 2006-2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMCalculatedRange.h"
-
-// Our internal storage type. It keeps track of an item and it's
-// position.
-@interface GTMCalculatedRangeStopPrivate : NSObject {
- id item_; // the item (STRONG)
- CGFloat position_; //
-}
-+ (id)stopWithObject:(id)item position:(CGFloat)inPosition;
-- (id)initWithObject:(id)item position:(CGFloat)inPosition;
-- (id)item;
-- (CGFloat)position;
-@end
-
-GTM_INLINE BOOL FPEqual(CGFloat a, CGFloat b) {
- return (fpclassify(a - b) == FP_ZERO);
-}
-
-@implementation GTMCalculatedRangeStopPrivate
-+ (id)stopWithObject:(id)item position:(CGFloat)inPosition {
- return [[[self alloc] initWithObject:item position:inPosition] autorelease];
-}
-
-- (id)initWithObject:(id)item position:(CGFloat)inPosition {
- self = [super init];
- if (self != nil) {
- item_ = [item retain];
- position_ = inPosition;
- }
- return self;
-}
-
-- (void)dealloc {
- [item_ release];
- [super dealloc];
-}
-
-- (id)item {
- return item_;
-}
-
-- (CGFloat)position {
- return position_;
-}
-
-- (NSString *)description {
- return [NSString stringWithFormat: @"%f %@", position_, item_];
-}
-@end
-
-@implementation GTMCalculatedRange
-- (id)init {
- self = [super init];
- if (self != nil) {
- storage_ = [[NSMutableArray arrayWithCapacity:0] retain];
- }
- return self;
-}
-- (void)dealloc {
- [storage_ release];
- [super dealloc];
-}
-
-- (void)insertStop:(id)item atPosition:(CGFloat)position {
- NSUInteger positionIndex = 0;
- GTMCalculatedRangeStopPrivate *theStop;
- GTM_FOREACH_OBJECT(theStop, storage_) {
- if ([theStop position] < position) {
- positionIndex += 1;
- }
- else if (FPEqual([theStop position], position)) {
- // remove and stop the enum since we just modified the object
- [storage_ removeObjectAtIndex:positionIndex];
- break;
- }
- }
- [storage_ insertObject:[GTMCalculatedRangeStopPrivate stopWithObject:item position:position]
- atIndex:positionIndex];
-}
-
-- (BOOL)removeStopAtPosition:(CGFloat)position {
- NSUInteger positionIndex = 0;
- BOOL foundStop = NO;
- GTMCalculatedRangeStopPrivate *theStop;
- GTM_FOREACH_OBJECT(theStop, storage_) {
- if (FPEqual([theStop position], position)) {
- break;
- } else {
- positionIndex += 1;
- }
- }
- if (nil != theStop) {
- [self removeStopAtIndex:positionIndex];
- foundStop = YES;
- }
- return foundStop;
-}
-
-- (void)removeStopAtIndex:(NSUInteger)positionIndex {
- [storage_ removeObjectAtIndex:positionIndex];
-}
-
-- (NSUInteger)stopCount {
- return [storage_ count];
-}
-
-- (id)stopAtIndex:(NSUInteger)positionIndex position:(CGFloat*)outPosition {
- GTMCalculatedRangeStopPrivate *theStop = [storage_ objectAtIndex:positionIndex];
- if (nil != outPosition) {
- *outPosition = [theStop position];
- }
- return [theStop item];
-}
-
-- (id)valueAtPosition:(CGFloat)position {
- id theValue = nil;
- GTMCalculatedRangeStopPrivate *theStop;
- GTM_FOREACH_OBJECT(theStop, storage_) {
- if (FPEqual([theStop position], position)) {
- theValue = [theStop item];
- break;
- }
- }
- return theValue;
-}
-
-- (NSString *)description {
- return [storage_ description];
-}
-@end
diff --git a/Foundation/GTMCalculatedRangeTest.m b/Foundation/GTMCalculatedRangeTest.m
deleted file mode 100644
index 0806a0d..0000000
--- a/Foundation/GTMCalculatedRangeTest.m
+++ /dev/null
@@ -1,101 +0,0 @@
-//
-// GTMCalculatedRangeTest.m
-//
-// Copyright 2006-2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMCalculatedRange.h"
-#import "GTMSenTestCase.h"
-
-@interface GTMCalculatedRangeTest : GTMTestCase {
- GTMCalculatedRange *range_;
-}
-@end
-
-@implementation GTMCalculatedRangeTest
-NSString *kStrings[] = { @"Fee", @"Fi", @"Fo", @"Fum" };
-const NSUInteger kStringCount = sizeof(kStrings) / sizeof(NSString*);
-const CGFloat kOddPosition = 0.14159265f;
-const CGFloat kExistingPosition = 0.5f;
-const NSUInteger kExisitingIndex = 2;
-
-- (void)setUp {
- range_ = [[GTMCalculatedRange alloc] init];
- for(NSUInteger i = kStringCount; i > 0; --i) {
- [range_ insertStop:kStrings[kStringCount - i] atPosition:(CGFloat)(1.0 / i)];
- }
-}
-
-- (void)tearDown {
- [range_ release];
-}
-
-- (void)testInsertStop {
- // new position
- NSString *theString = @"I smell the blood of an Englishman!";
- [range_ insertStop:theString atPosition:kOddPosition];
- STAssertEquals([range_ stopCount], kStringCount + 1, @"Stop count was bad");
- NSString *getString = [range_ valueAtPosition:kOddPosition];
- STAssertNotNil(getString, @"String was bad");
- STAssertEquals(theString, getString, @"Stops weren't equal");
- // existing position
- NSString *theStringTake2 = @"I smell the blood of an Englishman! Take 2";
- [range_ insertStop:theStringTake2 atPosition:kOddPosition];
- STAssertEquals([range_ stopCount], kStringCount + 1, @"Stop count was bad");
- getString = [range_ valueAtPosition:kOddPosition];
- STAssertNotNil(getString, @"String was bad");
- STAssertEquals(theStringTake2, getString, @"Stops weren't equal");
- STAssertNotEquals(theString, getString, @"Should be the new value");
- STAssertNotEqualObjects(theString, getString, @"Should be the new value");
-}
-
-- (void)testRemoveStopAtPosition {
- STAssertFalse([range_ removeStopAtPosition: kOddPosition], @"Was able to remove non-existant stop");
- STAssertTrue([range_ removeStopAtPosition: kExistingPosition], @"Was unable to remove good stop");
- STAssertEquals([range_ stopCount], kStringCount - 1, @"Removing stop should adjust stop count");
-}
-
-- (void)testRemoveStopAtIndex {
- STAssertThrows([range_ removeStopAtIndex: kStringCount], @"Was able to remove non-existant stop");
- STAssertNoThrow([range_ removeStopAtIndex: kStringCount - 1], @"Was unable to remove good stop");
- STAssertEquals([range_ stopCount], kStringCount - 1, @"Removing stop should adjust stop count");
-}
-
-- (void)testStopCount {
- STAssertEquals([range_ stopCount], kStringCount, @"Bad stop count");
-}
-
-- (void)testValueAtPosition {
- STAssertEqualObjects([range_ valueAtPosition: kExistingPosition], kStrings[kExisitingIndex], nil);
- STAssertNotEqualObjects([range_ valueAtPosition: kExistingPosition], kStrings[kStringCount - 1], nil);
- STAssertNil([range_ valueAtPosition: kOddPosition], nil);
-}
-
-- (void)testStopAtIndex {
- CGFloat thePosition;
-
- STAssertEqualObjects([range_ stopAtIndex:kStringCount - 1 position:nil], kStrings[kStringCount - 1], nil);
- STAssertEqualObjects([range_ stopAtIndex:kExisitingIndex position:&thePosition], kStrings[kExisitingIndex], nil);
- STAssertEquals(thePosition, kExistingPosition, nil);
- STAssertNotEqualObjects([range_ stopAtIndex:kStringCount - 1 position:nil], kStrings[2], nil);
- STAssertThrows([range_ stopAtIndex:kStringCount position:nil], nil);
-}
-
-- (void)testDescription {
- // we expect a description of atleast a few chars
- STAssertGreaterThan([[range_ description] length], (NSUInteger)10, nil);
-}
-
-@end
diff --git a/Foundation/GTMExceptionalInlines.h b/Foundation/GTMExceptionalInlines.h
deleted file mode 100644
index ee3a3db..0000000
--- a/Foundation/GTMExceptionalInlines.h
+++ /dev/null
@@ -1,56 +0,0 @@
-//
-// GTMExceptionalInlines.h
-//
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import <Foundation/Foundation.h>
-#import "GTMDefines.h"
-#if GTM_IPHONE_SDK
-#import <CoreGraphics/CoreGraphics.h>
-#endif // GTM_IPHONE_SDK
-
-// This file exists because when you have full warnings on you can run into
-// troubles with functions that Apple has inlined that have structures or
-// local variables defined in them.
-// You only see this warning if you have -Wuninitialized turned on,
-// and you will only see them in release mode. -Wno-unitialized turns them
-// off, but you also lose all the good warnings that come with -Wuninitialized.
-// If you have the inline versions of any of the functions below in a
-// @syncronized, or @try block, you will get
-// warning: variable 'r' might be clobbered by 'longjmp' or 'vfork'
-// By moving this local vars "out of line" you fix the problem.
-// These functions do nothing more than act as "out of line" calls to the
-// functions they are masking to avoid the warning.
-// If you run into others, feel free to add them.
-
-// Please only use these to avoid the warning above. Use the Apple defined
-// functions where possible.
-
-FOUNDATION_EXPORT NSRange GTMNSMakeRange(NSUInteger loc, NSUInteger len);
-FOUNDATION_EXPORT CFRange GTMCFRangeMake(NSUInteger loc, NSUInteger len);
-
-FOUNDATION_EXPORT CGPoint GTMCGPointMake(CGFloat x, CGFloat y);
-FOUNDATION_EXPORT CGSize GTMCGSizeMake(CGFloat width, CGFloat height);
-FOUNDATION_EXPORT CGRect GTMCGRectMake(CGFloat x, CGFloat y,
- CGFloat width, CGFloat height);
-
-#if !GTM_IPHONE_SDK
-// iPhone does not have NSTypes defined, only CGTypes. So no NSRect, NSPoint etc.
-FOUNDATION_EXPORT NSPoint GTMNSMakePoint(CGFloat x, CGFloat y);
-FOUNDATION_EXPORT NSSize GTMNSMakeSize(CGFloat w, CGFloat h);
-FOUNDATION_EXPORT NSRect GTMNSMakeRect(CGFloat x, CGFloat y,
- CGFloat w, CGFloat h);
-#endif
diff --git a/Foundation/GTMExceptionalInlines.m b/Foundation/GTMExceptionalInlines.m
deleted file mode 100644
index d803ea9..0000000
--- a/Foundation/GTMExceptionalInlines.m
+++ /dev/null
@@ -1,56 +0,0 @@
-//
-// GTMExceptionalInlines.m
-//
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMExceptionalInlines.h"
-
-NSRange GTMNSMakeRange(NSUInteger loc, NSUInteger len) {
- return NSMakeRange(loc, len);
-}
-
-CFRange GTMCFRangeMake(NSUInteger loc, NSUInteger len) {
- return CFRangeMake(loc, len);
-}
-
-CGPoint GTMCGPointMake(CGFloat x, CGFloat y) {
- return CGPointMake(x, y);
-}
-
-CGSize GTMCGSizeMake(CGFloat width, CGFloat height) {
- return CGSizeMake(width, height);
-}
-
-CGRect GTMCGRectMake(CGFloat x, CGFloat y, CGFloat width, CGFloat height) {
- return CGRectMake(x, y, width, height);
-}
-
-#if !GTM_IPHONE_SDK
-// iPhone does not have NSTypes defined, only CGTypes. So no NSRect, NSPoint etc.
-
-NSPoint GTMNSMakePoint(CGFloat x, CGFloat y) {
- return NSMakePoint(x, y);
-}
-
-NSSize GTMNSMakeSize(CGFloat w, CGFloat h) {
- return NSMakeSize(w, h);
-}
-
-NSRect GTMNSMakeRect(CGFloat x, CGFloat y, CGFloat w, CGFloat h) {
- return NSMakeRect(x, y, w, h);
-}
-
-#endif
diff --git a/Foundation/GTMExceptionalInlinesTest.m b/Foundation/GTMExceptionalInlinesTest.m
deleted file mode 100644
index 6142236..0000000
--- a/Foundation/GTMExceptionalInlinesTest.m
+++ /dev/null
@@ -1,71 +0,0 @@
-//
-// GTMExceptionalInlinesTest.m
-//
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMSenTestCase.h"
-#import "GTMExceptionalInlines.h"
-
-@interface GTMExceptionalInlinesTest : GTMTestCase
-@end
-
-@implementation GTMExceptionalInlinesTest
-- (void)testExceptionalInlines {
- // Numbers chosen basically at random.
- NSUInteger loc = 5;
- NSUInteger len = 10;
- CGFloat x = 22.5;
- CGFloat y = 40.2;
- CGFloat h = 21.6;
- CGFloat w = 54.2;
-
- NSRange range1 = GTMNSMakeRange(loc, len);
- NSRange range2 = NSMakeRange(loc, len);
- STAssertTrue(NSEqualRanges(range1, range2), nil);
-
- CFRange cfrange1 = GTMCFRangeMake(loc, len);
- CFRange cfrange2 = CFRangeMake(loc, len);
- STAssertEquals(cfrange1.length, cfrange2.length, nil);
- STAssertEquals(cfrange1.location, cfrange2.location, nil);
-
-
- CGPoint cgpoint1 = GTMCGPointMake(x, y);
- CGPoint cgpoint2 = CGPointMake(x, y);
- STAssertTrue(CGPointEqualToPoint(cgpoint1, cgpoint2), nil);
-
- CGSize cgsize1 = GTMCGSizeMake(x, y);
- CGSize cgsize2 = CGSizeMake(x, y);
- STAssertTrue(CGSizeEqualToSize(cgsize1, cgsize2), nil);
-
- CGRect cgrect1 = GTMCGRectMake(x, y, w, h);
- CGRect cgrect2 = CGRectMake(x, y, w, h);
- STAssertTrue(CGRectEqualToRect(cgrect1, cgrect2), nil);
-
-#if !GTM_IPHONE_SDK
- NSPoint point1 = GTMNSMakePoint(x, y);
- NSPoint point2 = NSMakePoint(x, y);
- STAssertTrue(NSEqualPoints(point1, point2), nil);
-
- NSSize size1 = GTMNSMakeSize(w, h);
- NSSize size2 = NSMakeSize(w, h);
- STAssertTrue(NSEqualSizes(size1, size2), nil);
-
- NSRect rect1 = GTMNSMakeRect(x, y, w, h);
- NSRect rect2 = NSMakeRect(x, y, w, h);
- STAssertTrue(NSEqualRects(rect1, rect2), nil);
-#endif
-}
-@end
diff --git a/Foundation/GTMFileSystemKQueueTest.m b/Foundation/GTMFileSystemKQueueTest.m
index 3919b86..9ffc046 100644
--- a/Foundation/GTMFileSystemKQueueTest.m
+++ b/Foundation/GTMFileSystemKQueueTest.m
@@ -18,7 +18,6 @@
#import "GTMSenTestCase.h"
#import "GTMFileSystemKQueue.h"
-#import "GTMUnitTestDevLog.h"
// Private methods of GTMFileSystemKQueue we use for some tests
@@ -47,17 +46,9 @@
- (void)callbackForQueue:(GTMFileSystemKQueue *)queue
events:(GTMFileSystemKQueueEvents)event {
- // Can't use standard ST macros here because our helper
- // is not a subclass of GTMTestCase. This is intentional.
if (queue != queue_) {
- NSString *file = [NSString stringWithUTF8String:__FILE__];
- NSException *exception
- = [NSException failureInEqualityBetweenObject:queue
- andObject:queue_
- inFile:file
- atLine:__LINE__
- withDescription:nil];
- [exception raise];
+ // We should never get here.
+ [NSException raise:NSInternalInconsistencyException format:@"Bad Queue!"];
}
if (event & kGTMFileSystemKQueueWriteEvent) {
@@ -132,13 +123,11 @@
- (void)testInit {
GTMFileSystemKQueue *testKQ;
GTMFSKQTestHelper *helper = [[[GTMFSKQTestHelper alloc] init] autorelease];
- STAssertNotNil(helper, nil);
+ XCTAssertNotNil(helper);
// init should fail
- [GTMUnitTestDevLog expectString:@"Don't call init, use "
- @"initWithPath:forEvents:acrossReplace:target:action:"];
testKQ = [[[GTMFileSystemKQueue alloc] init] autorelease];
- STAssertNil(testKQ, nil);
+ XCTAssertNil(testKQ);
// no path
testKQ
@@ -147,7 +136,7 @@
acrossReplace:YES
target:helper
action:@selector(callbackForQueue:events:)] autorelease];
- STAssertNil(testKQ, nil);
+ XCTAssertNil(testKQ);
// not events
testKQ
@@ -156,7 +145,7 @@
acrossReplace:YES
target:helper
action:@selector(callbackForQueue:events:)] autorelease];
- STAssertNil(testKQ, nil);
+ XCTAssertNil(testKQ);
// no target
testKQ
@@ -165,7 +154,7 @@
acrossReplace:YES
target:nil
action:@selector(callbackForQueue:events:)] autorelease];
- STAssertNil(testKQ, nil);
+ XCTAssertNil(testKQ);
// no handler
testKQ
@@ -174,7 +163,7 @@
acrossReplace:YES
target:helper
action:nil] autorelease];
- STAssertNil(testKQ, nil);
+ XCTAssertNil(testKQ);
// path that doesn't exist
@@ -184,7 +173,7 @@
acrossReplace:YES
target:helper
action:@selector(callbackForQueue:events:)] autorelease];
- STAssertNil(testKQ, nil);
+ XCTAssertNil(testKQ);
}
- (void)spinForEvents:(GTMFSKQTestHelper *)helper {
@@ -201,11 +190,11 @@
NSFileManager *fm = [NSFileManager defaultManager];
GTMFSKQTestHelper *helper = [[[GTMFSKQTestHelper alloc] init] autorelease];
- STAssertNotNil(helper, nil);
+ XCTAssertNotNil(helper);
- STAssertTrue([fm createFileAtPath:testPath_ contents:nil attributes:nil], nil);
+ XCTAssertTrue([fm createFileAtPath:testPath_ contents:nil attributes:nil]);
NSFileHandle *testFH = [NSFileHandle fileHandleForWritingAtPath:testPath_];
- STAssertNotNil(testFH, nil);
+ XCTAssertNotNil(testFH);
// Start monitoring the file
GTMFileSystemKQueue *testKQ
@@ -214,8 +203,8 @@
acrossReplace:YES
target:helper
action:@selector(callbackForQueue:events:)];
- STAssertNotNil(testKQ, nil);
- STAssertEqualObjects([testKQ path], testPath_, nil);
+ XCTAssertNotNil(testKQ);
+ XCTAssertEqualObjects([testKQ path], testPath_);
[helper setKQueue:testKQ];
// Write to the file
@@ -223,27 +212,27 @@
// Spin the runloop for a second so that the helper callbacks fire
[self spinForEvents:helper];
- STAssertEquals([helper totals], 1, nil);
+ XCTAssertEqual([helper totals], 1);
// Close and delete
[testFH closeFile];
#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
NSError *error = nil;
- STAssertTrue([fm removeItemAtPath:testPath_ error:&error], @"Err: %@", error);
+ XCTAssertTrue([fm removeItemAtPath:testPath_ error:&error], @"Err: %@", error);
#else
- STAssertTrue([fm removeFileAtPath:testPath_ handler:nil], nil);
+ XCTAssertTrue([fm removeFileAtPath:testPath_ handler:nil]);
#endif // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
[self spinForEvents:helper];
- STAssertEquals([helper totals], 2, nil);
+ XCTAssertEqual([helper totals], 2);
// Clean up the kqueue
[testKQ release];
testKQ = nil;
- STAssertEquals([helper writes], 1, nil);
- STAssertEquals([helper deletes], 1, nil);
- STAssertEquals([helper renames], 0, nil);
+ XCTAssertEqual([helper writes], 1);
+ XCTAssertEqual([helper deletes], 1);
+ XCTAssertEqual([helper renames], 0);
}
- (void)testWriteAndDeleteAndWrite {
@@ -252,14 +241,14 @@
NSFileManager *fm = [NSFileManager defaultManager];
GTMFSKQTestHelper *helper = [[[GTMFSKQTestHelper alloc] init] autorelease];
- STAssertNotNil(helper, nil);
+ XCTAssertNotNil(helper);
GTMFSKQTestHelper *helper2 = [[[GTMFSKQTestHelper alloc] init] autorelease];
- STAssertNotNil(helper, nil);
+ XCTAssertNotNil(helper);
// Create a temp file path
- STAssertTrue([fm createFileAtPath:testPath_ contents:nil attributes:nil], nil);
+ XCTAssertTrue([fm createFileAtPath:testPath_ contents:nil attributes:nil]);
NSFileHandle *testFH = [NSFileHandle fileHandleForWritingAtPath:testPath_];
- STAssertNotNil(testFH, nil);
+ XCTAssertNotNil(testFH);
// Start monitoring the file
GTMFileSystemKQueue *testKQ
@@ -268,8 +257,8 @@
acrossReplace:YES
target:helper
action:@selector(callbackForQueue:events:)];
- STAssertNotNil(testKQ, nil);
- STAssertEqualObjects([testKQ path], testPath_, nil);
+ XCTAssertNotNil(testKQ);
+ XCTAssertEqualObjects([testKQ path], testPath_);
[helper setKQueue:testKQ];
GTMFileSystemKQueue *testKQ2
@@ -278,8 +267,8 @@
acrossReplace:NO
target:helper2
action:@selector(callbackForQueue:events:)];
- STAssertNotNil(testKQ2, nil);
- STAssertEqualObjects([testKQ2 path], testPath_, nil);
+ XCTAssertNotNil(testKQ2);
+ XCTAssertEqualObjects([testKQ2 path], testPath_);
[helper2 setKQueue:testKQ2];
// Write to the file
@@ -287,49 +276,49 @@
// Spin the runloop for a second so that the helper callbacks fire
[self spinForEvents:helper];
- STAssertEquals([helper totals], 1, nil);
- STAssertEquals([helper2 totals], 1, nil);
+ XCTAssertEqual([helper totals], 1);
+ XCTAssertEqual([helper2 totals], 1);
// Close and delete
[testFH closeFile];
#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
NSError *error = nil;
- STAssertTrue([fm removeItemAtPath:testPath_ error:&error], @"Err: %@", error);
+ XCTAssertTrue([fm removeItemAtPath:testPath_ error:&error], @"Err: %@", error);
#else
- STAssertTrue([fm removeFileAtPath:testPath_ handler:nil], nil);
+ XCTAssertTrue([fm removeFileAtPath:testPath_ handler:nil]);
#endif // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
// Recreate
- STAssertTrue([fm createFileAtPath:testPath_ contents:nil attributes:nil], nil);
+ XCTAssertTrue([fm createFileAtPath:testPath_ contents:nil attributes:nil]);
testFH = [NSFileHandle fileHandleForWritingAtPath:testPath_];
- STAssertNotNil(testFH, nil);
+ XCTAssertNotNil(testFH);
[testFH writeData:[@"ha!" dataUsingEncoding:NSUnicodeStringEncoding]];
// Spin the runloop for a second so that the helper callbacks fire
[self spinForEvents:helper];
- STAssertEquals([helper totals], 2, nil);
- STAssertEquals([helper2 totals], 2, nil);
+ XCTAssertEqual([helper totals], 2);
+ XCTAssertEqual([helper2 totals], 2);
// Write to it again
[testFH writeData:[@"continued..." dataUsingEncoding:NSUnicodeStringEncoding]];
// Spin the runloop for a second so that the helper callbacks fire
[self spinForEvents:helper];
- STAssertEquals([helper totals], 3, nil);
- STAssertEquals([helper2 totals], 2, nil);
+ XCTAssertEqual([helper totals], 3);
+ XCTAssertEqual([helper2 totals], 2);
// Close and delete
[testFH closeFile];
#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
- STAssertTrue([fm removeItemAtPath:testPath_ error:&error], @"Err: %@", error);
+ XCTAssertTrue([fm removeItemAtPath:testPath_ error:&error], @"Err: %@", error);
#else
- STAssertTrue([fm removeFileAtPath:testPath_ handler:nil], nil);
+ XCTAssertTrue([fm removeFileAtPath:testPath_ handler:nil]);
#endif // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
// Spin the runloop for a second so that the helper callbacks fire
[self spinForEvents:helper];
- STAssertEquals([helper totals], 4, nil);
- STAssertEquals([helper2 totals], 2, nil);
+ XCTAssertEqual([helper totals], 4);
+ XCTAssertEqual([helper2 totals], 2);
// Clean up the kqueue
[testKQ release];
@@ -337,12 +326,12 @@
[testKQ2 release];
testKQ2 = nil;
- STAssertEquals([helper writes], 2, nil);
- STAssertEquals([helper deletes], 2, nil);
- STAssertEquals([helper renames], 0, nil);
- STAssertEquals([helper2 writes], 1, nil);
- STAssertEquals([helper2 deletes], 1, nil);
- STAssertEquals([helper2 renames], 0, nil);
+ XCTAssertEqual([helper writes], 2);
+ XCTAssertEqual([helper deletes], 2);
+ XCTAssertEqual([helper renames], 0);
+ XCTAssertEqual([helper2 writes], 1);
+ XCTAssertEqual([helper2 deletes], 1);
+ XCTAssertEqual([helper2 renames], 0);
}
- (void)testWriteAndRenameAndWrite {
@@ -351,14 +340,14 @@
NSFileManager *fm = [NSFileManager defaultManager];
GTMFSKQTestHelper *helper = [[[GTMFSKQTestHelper alloc] init] autorelease];
- STAssertNotNil(helper, nil);
+ XCTAssertNotNil(helper);
GTMFSKQTestHelper *helper2 = [[[GTMFSKQTestHelper alloc] init] autorelease];
- STAssertNotNil(helper2, nil);
+ XCTAssertNotNil(helper2);
// Create a temp file path
- STAssertTrue([fm createFileAtPath:testPath_ contents:nil attributes:nil], nil);
+ XCTAssertTrue([fm createFileAtPath:testPath_ contents:nil attributes:nil]);
NSFileHandle *testFH = [NSFileHandle fileHandleForWritingAtPath:testPath_];
- STAssertNotNil(testFH, nil);
+ XCTAssertNotNil(testFH);
// Start monitoring the file
GTMFileSystemKQueue *testKQ
@@ -367,8 +356,8 @@
acrossReplace:YES
target:helper
action:@selector(callbackForQueue:events:)];
- STAssertNotNil(testKQ, nil);
- STAssertEqualObjects([testKQ path], testPath_, nil);
+ XCTAssertNotNil(testKQ);
+ XCTAssertEqualObjects([testKQ path], testPath_);
[helper setKQueue:testKQ];
GTMFileSystemKQueue *testKQ2
@@ -377,8 +366,8 @@
acrossReplace:NO
target:helper2
action:@selector(callbackForQueue:events:)];
- STAssertNotNil(testKQ2, nil);
- STAssertEqualObjects([testKQ2 path], testPath_, nil);
+ XCTAssertNotNil(testKQ2);
+ XCTAssertEqualObjects([testKQ2 path], testPath_);
[helper2 setKQueue:testKQ2];
// Write to the file
@@ -386,70 +375,70 @@
// Spin the runloop for a second so that the helper callbacks fire
[self spinForEvents:helper];
- STAssertEquals([helper totals], 1, nil);
- STAssertEquals([helper2 totals], 1, nil);
+ XCTAssertEqual([helper totals], 1);
+ XCTAssertEqual([helper2 totals], 1);
// Move it and create the file again
#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
NSError *error = nil;
- STAssertTrue([fm moveItemAtPath:testPath_ toPath:testPath2_ error:&error],
- @"Error: %@", error);
+ XCTAssertTrue([fm moveItemAtPath:testPath_ toPath:testPath2_ error:&error],
+ @"Error: %@", error);
#else
- STAssertTrue([fm movePath:testPath_ toPath:testPath2_ handler:nil], nil);
+ XCTAssertTrue([fm movePath:testPath_ toPath:testPath2_ handler:nil]);
#endif // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
- STAssertTrue([fm createFileAtPath:testPath_ contents:nil attributes:nil], nil);
+ XCTAssertTrue([fm createFileAtPath:testPath_ contents:nil attributes:nil]);
NSFileHandle *testFHPrime
= [NSFileHandle fileHandleForWritingAtPath:testPath_];
- STAssertNotNil(testFHPrime, nil);
+ XCTAssertNotNil(testFHPrime);
[testFHPrime writeData:[@"eh?" dataUsingEncoding:NSUnicodeStringEncoding]];
// Spin the runloop for a second so that the helper callbacks fire
[self spinForEvents:helper];
- STAssertEquals([helper totals], 2, nil);
- STAssertEquals([helper2 totals], 2, nil);
+ XCTAssertEqual([helper totals], 2);
+ XCTAssertEqual([helper2 totals], 2);
// Write to the new file
[testFHPrime writeData:[@"continue..." dataUsingEncoding:NSUnicodeStringEncoding]];
// Spin the runloop for a second so that the helper callbacks fire
[self spinForEvents:helper];
- STAssertEquals([helper totals], 3, nil);
- STAssertEquals([helper2 totals], 2, nil);
+ XCTAssertEqual([helper totals], 3);
+ XCTAssertEqual([helper2 totals], 2);
// Write to the old file
[testFH writeData:[@"continue old..." dataUsingEncoding:NSUnicodeStringEncoding]];
// Spin the runloop for a second so that the helper callbacks fire
[self spinForEvents:helper];
- STAssertEquals([helper totals], 3, nil);
- STAssertEquals([helper2 totals], 3, nil);
+ XCTAssertEqual([helper totals], 3);
+ XCTAssertEqual([helper2 totals], 3);
// and now close old
[testFH closeFile];
#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
- STAssertTrue([fm removeItemAtPath:testPath2_ error:&error], @"Err: %@", error);
+ XCTAssertTrue([fm removeItemAtPath:testPath2_ error:&error], @"Err: %@", error);
#else
- STAssertTrue([fm removeFileAtPath:testPath2_ handler:nil], nil);
+ XCTAssertTrue([fm removeFileAtPath:testPath2_ handler:nil]);
#endif // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
// Spin the runloop for a second so that the helper callbacks fire
[self spinForEvents:helper];
- STAssertEquals([helper totals], 3, nil);
- STAssertEquals([helper2 totals], 4, nil);
+ XCTAssertEqual([helper totals], 3);
+ XCTAssertEqual([helper2 totals], 4);
// and now close new
[testFHPrime closeFile];
#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
- STAssertTrue([fm removeItemAtPath:testPath_ error:&error], @"Err: %@", error);
+ XCTAssertTrue([fm removeItemAtPath:testPath_ error:&error], @"Err: %@", error);
#else
- STAssertTrue([fm removeFileAtPath:testPath_ handler:nil], nil);
+ XCTAssertTrue([fm removeFileAtPath:testPath_ handler:nil]);
#endif // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
// Spin the runloop for a second so that the helper callbacks fire
[self spinForEvents:helper];
- STAssertEquals([helper totals], 4, nil);
- STAssertEquals([helper2 totals], 4, nil);
+ XCTAssertEqual([helper totals], 4);
+ XCTAssertEqual([helper2 totals], 4);
// Clean up the kqueue
[testKQ release];
@@ -457,12 +446,12 @@
[testKQ2 release];
testKQ2 = nil;
- STAssertEquals([helper writes], 2, nil);
- STAssertEquals([helper deletes], 1, nil);
- STAssertEquals([helper renames], 1, nil);
- STAssertEquals([helper2 writes], 2, nil);
- STAssertEquals([helper2 deletes], 1, nil);
- STAssertEquals([helper2 renames], 1, nil);
+ XCTAssertEqual([helper writes], 2);
+ XCTAssertEqual([helper deletes], 1);
+ XCTAssertEqual([helper renames], 1);
+ XCTAssertEqual([helper2 writes], 2);
+ XCTAssertEqual([helper2 deletes], 1);
+ XCTAssertEqual([helper2 renames], 1);
}
- (void)testNoSpinHang {
@@ -480,10 +469,10 @@
NSFileManager *fm = [NSFileManager defaultManager];
GTMFSKQTestHelper *helper = [[[GTMFSKQTestHelper alloc] init] autorelease];
- STAssertNotNil(helper, nil);
- STAssertTrue([fm createFileAtPath:testPath_ contents:nil attributes:nil], nil);
+ XCTAssertNotNil(helper);
+ XCTAssertTrue([fm createFileAtPath:testPath_ contents:nil attributes:nil]);
NSFileHandle *testFH = [NSFileHandle fileHandleForWritingAtPath:testPath_];
- STAssertNotNil(testFH, nil);
+ XCTAssertNotNil(testFH);
// Start monitoring the file
GTMFileSystemKQueue *testKQ
@@ -492,8 +481,8 @@
acrossReplace:YES
target:helper
action:@selector(callbackForQueue:events:)];
- STAssertNotNil(testKQ, nil);
- STAssertEqualObjects([testKQ path], testPath_, nil);
+ XCTAssertNotNil(testKQ);
+ XCTAssertEqualObjects([testKQ path], testPath_);
[helper setKQueue:testKQ];
// Write to the file
@@ -502,20 +491,20 @@
[testFH closeFile];
#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
NSError *error = nil;
- STAssertTrue([fm removeItemAtPath:testPath_ error:&error], @"Err: %@", error);
+ XCTAssertTrue([fm removeItemAtPath:testPath_ error:&error], @"Err: %@", error);
#else
- STAssertTrue([fm removeFileAtPath:testPath_ handler:nil], nil);
+ XCTAssertTrue([fm removeFileAtPath:testPath_ handler:nil]);
#endif // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
// Now destroy the queue, with events outstanding from the CFSocket, but
// unconsumed.
- STAssertEquals([testKQ retainCount], (NSUInteger)1, nil);
+ XCTAssertEqual([testKQ retainCount], (NSUInteger)1);
[testKQ release];
testKQ = nil;
// Spin the runloop, no events were delivered (and we should not hang)
[self spinForEvents:helper];
- STAssertEquals([helper totals], 0, nil);
+ XCTAssertEqual([helper totals], 0);
}
@end
diff --git a/Foundation/GTMFourCharCode.h b/Foundation/GTMFourCharCode.h
deleted file mode 100644
index 90853b5..0000000
--- a/Foundation/GTMFourCharCode.h
+++ /dev/null
@@ -1,51 +0,0 @@
-//
-// GTMFourCharCode
-// Wrapper for FourCharCodes
-//
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import <Foundation/Foundation.h>
-
-// FourCharCodes are OSTypes, ResTypes etc. This class wraps them if
-// you need to store them in dictionaries etc.
-@interface GTMFourCharCode : NSObject <NSCopying, NSCoding> {
- FourCharCode code_;
-}
-
-// returns a string for a FourCharCode
-+ (id)stringWithFourCharCode:(FourCharCode)code;
-
-// String must be 4 chars or less, or you will get nil back.
-+ (id)fourCharCodeWithString:(NSString*)string;
-+ (id)fourCharCodeWithFourCharCode:(FourCharCode)code;
-
-// String must be 4 chars or less, or you will get nil back.
-- (id)initWithString:(NSString*)string;
-
-// Designated Initializer
-- (id)initWithFourCharCode:(FourCharCode)code;
-
-// Returns 'APPL' for "APPL"
-- (FourCharCode)fourCharCode;
-
-// For FourCharCode of 'APPL' returns "APPL". For 1 returns "\0\0\0\1"
-- (NSString*)stringValue;
-
-// For FourCharCode of "APPL" returns an NSNumber with 1095782476 (0x4150504C).
-// For 1 returns 1.
-- (NSNumber*)numberValue;
-
-@end
diff --git a/Foundation/GTMFourCharCode.m b/Foundation/GTMFourCharCode.m
deleted file mode 100644
index 02eea23..0000000
--- a/Foundation/GTMFourCharCode.m
+++ /dev/null
@@ -1,97 +0,0 @@
-//
-// GTMFourCharCode.m
-// Wrapper for FourCharCodes
-//
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMDefines.h"
-#import "GTMFourCharCode.h"
-#import <CoreServices/CoreServices.h>
-
-@implementation GTMFourCharCode
-
-+ (id)stringWithFourCharCode:(FourCharCode)code {
- return GTMCFAutorelease(UTCreateStringForOSType(code));
-}
-
-+ (id)fourCharCodeWithString:(NSString*)string {
- return [[[self alloc] initWithString:string] autorelease];
-}
-
-+ (id)fourCharCodeWithFourCharCode:(FourCharCode)code {
- return [[[self alloc] initWithFourCharCode:code] autorelease];
-}
-
-- (id)initWithString:(NSString*)string {
- NSUInteger length = [string length];
- if (length == 0 || length > 4) {
- [self release];
- return nil;
- } else {
- return [self initWithFourCharCode:UTGetOSTypeFromString((CFStringRef)string)];
- }
-}
-
-- (id)initWithFourCharCode:(FourCharCode)code {
- if ((self = [super init])) {
- code_ = code;
- }
- return self;
-}
-
-- (id)initWithCoder:(NSCoder *)aDecoder {
- if ((self = [super init])) {
- code_ = [aDecoder decodeInt32ForKey:@"FourCharCode"];
- }
- return self;
-}
-
-- (void)encodeWithCoder:(NSCoder *)aCoder {
- [aCoder encodeInt32:code_ forKey:@"FourCharCode"];
-}
-
-- (id)copyWithZone:(NSZone *)zone {
- return [[[self class] alloc] initWithFourCharCode:code_];
-}
-
-- (BOOL)isEqual:(id)object {
- return [object isKindOfClass:[self class]] && [object fourCharCode] == code_;
-}
-
-- (NSUInteger)hash {
- return (NSUInteger)code_;
-}
-
-- (NSString *)description {
- return [NSString stringWithFormat:@"%@ - %@ (0x%lX)",
- [self class],
- [self stringValue],
- (unsigned long)code_];
-}
-
-- (FourCharCode)fourCharCode {
- return code_;
-}
-
-- (NSString*)stringValue {
- return GTMCFAutorelease(UTCreateStringForOSType(code_));
-}
-
-- (NSNumber*)numberValue {
- return [NSNumber numberWithUnsignedInt:code_];
-}
-
-@end
diff --git a/Foundation/GTMFourCharCodeTest.m b/Foundation/GTMFourCharCodeTest.m
deleted file mode 100644
index 1799629..0000000
--- a/Foundation/GTMFourCharCodeTest.m
+++ /dev/null
@@ -1,122 +0,0 @@
-//
-// GTMFourCharCodeTest.m
-//
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMSenTestCase.h"
-#import "GTMFourCharCode.h"
-
-@interface GTMFourCharCodeTest : GTMTestCase {
- @private
- NSString *lowAsciiString_;
- NSString *highMacOSRomanString_;
-}
-
-@end
-
-@implementation GTMFourCharCodeTest
-
-static const FourCharCode kGTMHighMacOSRomanCode = 0xA5A8A9AA; // '•®©™'
-
-- (void)setUp {
- // There appears to be a bug in the gcc 4.0 that is included with Xcode
- // 3.2.5 where in release mode it doesn't like some string constants
- // that include high or low ascii using the @"blah" string style.
- // So we build them by hand.
- // Use 8 bytes instead of 4, because stack protection gives us a warning
- // if we have a buffer smaller than 8 bytes.
- char string[8] = { 0, 0, 0, 1, 0, 0, 0, 0 };
- lowAsciiString_ = [[NSString alloc] initWithBytes:string
- length:4
- encoding:NSASCIIStringEncoding];
-
- // Must make sure our bytes are in the right order for building strings with,
- // otherwise the string comes out in the wrong order on low-endian systems.
- FourCharCode orderedString = htonl(kGTMHighMacOSRomanCode);
- highMacOSRomanString_
- = [[NSString alloc] initWithBytes:&orderedString
- length:sizeof(orderedString)
- encoding:NSMacOSRomanStringEncoding];
-}
-
-- (void)tearDown {
- [lowAsciiString_ release];
- [highMacOSRomanString_ release];
-}
-
-- (void)testFourCharCode {
- GTMFourCharCode *fcc = [GTMFourCharCode fourCharCodeWithString:@"APPL"];
- STAssertNotNil(fcc, nil);
- STAssertEqualObjects([fcc stringValue], @"APPL", nil);
- STAssertEqualObjects([fcc numberValue],
- [NSNumber numberWithUnsignedInt:'APPL'], nil);
- STAssertEquals([fcc fourCharCode], (FourCharCode)'APPL', nil);
-
- STAssertEqualObjects([fcc description],
- @"GTMFourCharCode - APPL (0x4150504C)", nil);
- STAssertEquals([fcc hash], (NSUInteger)'APPL', nil);
-
- NSData *data = [NSKeyedArchiver archivedDataWithRootObject:fcc];
- STAssertNotNil(data, nil);
- GTMFourCharCode *fcc2
- = (GTMFourCharCode*)[NSKeyedUnarchiver unarchiveObjectWithData:data];
- STAssertNotNil(fcc2, nil);
- STAssertEqualObjects(fcc, fcc2, nil);
-
- fcc = [[[GTMFourCharCode alloc] initWithFourCharCode:'\?\?\?\?'] autorelease];
- STAssertNotNil(fcc, nil);
- STAssertEqualObjects([fcc stringValue], @"????", nil);
- STAssertEqualObjects([fcc numberValue],
- [NSNumber numberWithUnsignedInt:'\?\?\?\?'], nil);
- STAssertEquals([fcc fourCharCode], (FourCharCode)'\?\?\?\?', nil);
-
- fcc = [[[GTMFourCharCode alloc] initWithString:@"????"] autorelease];
- STAssertNotNil(fcc, nil);
- STAssertEqualObjects([fcc stringValue], @"????", nil);
- STAssertEqualObjects([fcc numberValue],
- [NSNumber numberWithUnsignedInt:'\?\?\?\?'], nil);
- STAssertEquals([fcc fourCharCode], (FourCharCode)'\?\?\?\?', nil);
-
- fcc = [GTMFourCharCode fourCharCodeWithFourCharCode:1];
- STAssertNotNil(fcc, nil);
- STAssertTrue([[fcc stringValue] isEqualToString:lowAsciiString_], nil);
- STAssertEqualObjects([fcc numberValue],
- [NSNumber numberWithUnsignedInt:1], nil);
- STAssertEquals([fcc fourCharCode], (FourCharCode)1, nil);
-
- fcc = [GTMFourCharCode fourCharCodeWithString:@"BADDSTRING"];
- STAssertNil(fcc, nil);
-
- fcc2 = [GTMFourCharCode fourCharCodeWithFourCharCode:kGTMHighMacOSRomanCode];
- STAssertNotNil(fcc2, nil);
- STAssertEqualObjects([fcc2 stringValue], highMacOSRomanString_, nil);
- STAssertEqualObjects([fcc2 numberValue],
- [NSNumber numberWithUnsignedInt:kGTMHighMacOSRomanCode],
- nil);
- STAssertEquals([fcc2 fourCharCode],
- (FourCharCode)kGTMHighMacOSRomanCode, nil);
-}
-
-- (void)testStringWithCode {
- STAssertEqualObjects([GTMFourCharCode stringWithFourCharCode:'APPL'],
- @"APPL", nil);
- STAssertEqualObjects([GTMFourCharCode stringWithFourCharCode:1],
- lowAsciiString_, nil);
- STAssertEqualObjects([GTMFourCharCode stringWithFourCharCode:kGTMHighMacOSRomanCode],
- highMacOSRomanString_, nil);
-}
-
-@end
diff --git a/Foundation/GTMGeometryUtilsTest.m b/Foundation/GTMGeometryUtilsTest.m
index f765526..f4cf731 100644
--- a/Foundation/GTMGeometryUtilsTest.m
+++ b/Foundation/GTMGeometryUtilsTest.m
@@ -6,9 +6,9 @@
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy
// of the License at
-//
+//
// http://www.apache.org/licenses/LICENSE-2.0
-//
+//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
@@ -28,49 +28,49 @@
- (void)testGTMNSRectToCGRect {
NSRect nsRect = NSMakeRect(4.6,3.2,22.1,45.0);
CGRect cgRect = GTMNSRectToCGRect(nsRect);
- STAssertTrue(CGRectEqualToRect(cgRect, *(CGRect*)&nsRect), nil);
+ XCTAssertTrue(CGRectEqualToRect(cgRect, *(CGRect*)&nsRect));
}
- (void)testGTMNSSizeToCGSize {
NSSize nsSize = {22,15};
CGSize cgSize = GTMNSSizeToCGSize(nsSize);
- STAssertTrue(CGSizeEqualToSize(cgSize, *(CGSize*)&nsSize), nil);
+ XCTAssertTrue(CGSizeEqualToSize(cgSize, *(CGSize*)&nsSize));
}
- (void)testGTMNSPointsOnRect {
NSRect rect = NSMakeRect(0, 0, 2, 2);
-
+
NSPoint point = GTMNSMidMinX(rect);
- STAssertEqualsWithAccuracy(point.y, (CGFloat)1.0, (CGFloat)0.01, nil);
- STAssertEqualsWithAccuracy(point.x, (CGFloat)0.0, (CGFloat)0.01, nil);
-
+ XCTAssertEqualWithAccuracy(point.y, 1.0, 0.01);
+ XCTAssertEqualWithAccuracy(point.x, 0.0, 0.01);
+
point = GTMNSMidMaxX(rect);
- STAssertEqualsWithAccuracy(point.y, (CGFloat)1.0, (CGFloat)0.01, nil);
- STAssertEqualsWithAccuracy(point.x, (CGFloat)2.0, (CGFloat)0.01, nil);
-
+ XCTAssertEqualWithAccuracy(point.y, 1.0, 0.01);
+ XCTAssertEqualWithAccuracy(point.x, 2.0, 0.01);
+
point = GTMNSMidMaxY(rect);
- STAssertEqualsWithAccuracy(point.y, (CGFloat)2.0, (CGFloat)0.01, nil);
- STAssertEqualsWithAccuracy(point.x, (CGFloat)1.0, (CGFloat)0.01, nil);
-
+ XCTAssertEqualWithAccuracy(point.y, 2.0, 0.01);
+ XCTAssertEqualWithAccuracy(point.x, 1.0, 0.01);
+
point = GTMNSMidMinY(rect);
- STAssertEqualsWithAccuracy(point.y, (CGFloat)0.0, (CGFloat)0.01, nil);
- STAssertEqualsWithAccuracy(point.x, (CGFloat)1.0, (CGFloat)0.01, nil);
+ XCTAssertEqualWithAccuracy(point.y, 0.0, 0.01);
+ XCTAssertEqualWithAccuracy(point.x, 1.0, 0.01);
point = GTMNSCenter(rect);
- STAssertEqualsWithAccuracy(point.y, (CGFloat)1.0, (CGFloat)0.01, nil);
- STAssertEqualsWithAccuracy(point.x, (CGFloat)1.0, (CGFloat)0.01, nil);
+ XCTAssertEqualWithAccuracy(point.y, 1.0, 0.01);
+ XCTAssertEqualWithAccuracy(point.x, 1.0, 0.01);
}
- (void)testGTMNSRectSize {
NSSize nsSize = GTMNSRectSize(NSMakeRect(1, 1, 10, 5));
- STAssertEqualsWithAccuracy(nsSize.width, (CGFloat)10.0, (CGFloat)0.01, nil);
- STAssertEqualsWithAccuracy(nsSize.height, (CGFloat)5.0, (CGFloat)0.01, nil);
+ XCTAssertEqualWithAccuracy(nsSize.width, 10.0, 0.01);
+ XCTAssertEqualWithAccuracy(nsSize.height, 5.0, 0.01);
}
- (void)testGTMNSRectOfSize {
NSRect outRect = GTMNSRectOfSize(NSMakeSize(10, 5));
NSRect expectedRect = NSMakeRect(0, 0, 10, 5);
- STAssertEquals(outRect, expectedRect, nil);
+ XCTAssertTrue(NSEqualRects(outRect, expectedRect));
}
- (void)testGTMNSAlignRectangles {
@@ -78,7 +78,7 @@
NSPoint expectedOrigin;
GTMRectAlignment alignment;
} TestData;
-
+
TestData data[] = {
{ {1,2}, GTMRectAlignTop },
{ {0,2}, GTMRectAlignTopLeft },
@@ -90,17 +90,17 @@
{ {2,1}, GTMRectAlignRight },
{ {1,1}, GTMRectAlignCenter },
};
-
+
NSRect rect1 = NSMakeRect(0, 0, 4, 4);
NSRect rect2 = NSMakeRect(0, 0, 2, 2);
-
+
NSRect expectedRect;
expectedRect.size = NSMakeSize(2, 2);
-
+
for (size_t i = 0; i < sizeof(data) / sizeof(TestData); i++) {
expectedRect.origin = data[i].expectedOrigin;
NSRect outRect = GTMNSAlignRectangles(rect2, rect1, data[i].alignment);
- STAssertEquals(outRect, expectedRect, nil);
+ XCTAssertTrue(NSEqualRects(outRect, expectedRect));
}
}
@@ -120,24 +120,25 @@
{ { 2.0, 2.0 }, { 2.0, 2.0 } },
{ { 0.0, 10.0 }, { 0.0, 0.0 } }
};
-
+
for (size_t i = 0; i < sizeof(tests) / sizeof(Test); ++i) {
NSRect result = GTMNSScaleRectangleToSize(rect, tests[i].size_,
GTMScaleProportionally);
- STAssertEquals(result, GTMNSRectOfSize(tests[i].newSize_), @"failed on test %zd", i);
+ XCTAssertTrue(NSEqualRects(result, GTMNSRectOfSize(tests[i].newSize_)),
+ @"failed on test %zd", i);
}
-
+
NSRect result = GTMNSScaleRectangleToSize(NSZeroRect, tests[0].size_,
GTMScaleProportionally);
- STAssertEquals(result, NSZeroRect, nil);
-
+ XCTAssertTrue(NSEqualRects(result, NSZeroRect));
+
result = GTMNSScaleRectangleToSize(rect, tests[0].size_,
GTMScaleToFit);
- STAssertEquals(result, GTMNSRectOfSize(tests[0].size_), nil);
-
+ XCTAssertTrue(NSEqualRects(result, GTMNSRectOfSize(tests[0].size_)));
+
result = GTMNSScaleRectangleToSize(rect, tests[0].size_,
GTMScaleNone);
- STAssertEquals(result, rect, nil);
+ XCTAssertTrue(NSEqualRects(result, rect));
}
@@ -147,20 +148,20 @@
GTMScaling scaling;
GTMRectAlignment alignment;
} TestData;
-
+
NSRect rect1 = NSMakeRect(0, 0, 4, 4);
NSRect rect2 = NSMakeRect(0, 0, 2, 1);
-
+
TestData data[] = {
{ NSMakeRect(2, 3, 2, 1), GTMScaleToFillProportionally, GTMRectAlignTopRight },
{ NSMakeRect(0, 0, 4, 4), GTMScaleToFit, GTMRectAlignCenter },
{ NSMakeRect(1, 1.5, 2, 1), GTMScaleNone, GTMRectAlignCenter },
{ NSMakeRect(1, 0, 2, 1), GTMScaleProportionally, GTMRectAlignBottom },
};
-
+
for (size_t i = 0; i < sizeof(data) / sizeof(TestData); i++) {
NSRect outRect = GTMNSScaleRectToRect(rect2, rect1, data[i].scaling, data[i].alignment);
- STAssertEquals(outRect, data[i].expectedRect, nil);
+ XCTAssertTrue(NSEqualRects(outRect, data[i].expectedRect));
}
}
@@ -168,18 +169,17 @@
- (void)testGTMNSDistanceBetweenPoints {
NSPoint pt1 = NSMakePoint(0, 0);
NSPoint pt2 = NSMakePoint(3, 4);
- STAssertEquals(GTMNSDistanceBetweenPoints(pt1, pt2), (CGFloat)5.0, nil);
- STAssertEquals(GTMNSDistanceBetweenPoints(pt2, pt1), (CGFloat)5.0, nil);
+ XCTAssertEqualWithAccuracy(GTMNSDistanceBetweenPoints(pt1, pt2), 5.0, 0.01);
+ XCTAssertEqualWithAccuracy(GTMNSDistanceBetweenPoints(pt2, pt1), 5.0, 0.01);
pt1 = NSMakePoint(1, 1);
pt2 = NSMakePoint(1, 1);
- STAssertEquals(GTMNSDistanceBetweenPoints(pt1, pt2), (CGFloat)0.0, nil);
+ XCTAssertEqualWithAccuracy(GTMNSDistanceBetweenPoints(pt1, pt2), 0.0, 0.01);
}
- (void)testGTMNSRectScaling {
NSRect rect = NSMakeRect(1.0f, 2.0f, 5.0f, 10.0f);
- NSRect rect2 = NSMakeRect((CGFloat)1.0, (CGFloat)2.0, (CGFloat)1.0, (CGFloat)12.0);
- STAssertEquals(GTMNSRectScale(rect, (CGFloat)0.2, (CGFloat)1.2),
- rect2, nil);
+ NSRect rect2 = NSMakeRect(1.0, 2.0, 1.0, 12.0);
+ XCTAssertTrue(NSEqualRects(GTMNSRectScale(rect, 0.2, 1.2), rect2));
}
#endif // !GTM_IPHONE_SDK
@@ -187,11 +187,11 @@
- (void)testGTMCGDistanceBetweenPoints {
CGPoint pt1 = CGPointMake(0, 0);
CGPoint pt2 = CGPointMake(3, 4);
- STAssertEquals(GTMCGDistanceBetweenPoints(pt1, pt2), (CGFloat)5.0, nil);
- STAssertEquals(GTMCGDistanceBetweenPoints(pt2, pt1), (CGFloat)5.0, nil);
+ XCTAssertEqualWithAccuracy(GTMCGDistanceBetweenPoints(pt1, pt2), 5.0, 0.01);
+ XCTAssertEqualWithAccuracy(GTMCGDistanceBetweenPoints(pt2, pt1), 5.0, 0.01);
pt1 = CGPointMake(1, 1);
pt2 = CGPointMake(1, 1);
- STAssertEquals(GTMCGDistanceBetweenPoints(pt1, pt2), (CGFloat)0.0, nil);
+ XCTAssertEqualWithAccuracy(GTMCGDistanceBetweenPoints(pt1, pt2), 0.0, 0.01);
}
- (void)testGTMCGAlignRectangles {
@@ -199,7 +199,7 @@
CGPoint expectedOrigin;
GTMRectAlignment alignment;
} TestData;
-
+
TestData data[] = {
{ {1,2}, GTMRectAlignTop },
{ {0,2}, GTMRectAlignTopLeft },
@@ -211,61 +211,60 @@
{ {2,1}, GTMRectAlignRight },
{ {1,1}, GTMRectAlignCenter },
};
-
+
CGRect rect1 = CGRectMake(0, 0, 4, 4);
CGRect rect2 = CGRectMake(0, 0, 2, 2);
-
+
CGRect expectedRect;
expectedRect.size = CGSizeMake(2, 2);
-
+
for (size_t i = 0; i < sizeof(data) / sizeof(TestData); i++) {
expectedRect.origin = data[i].expectedOrigin;
CGRect outRect = GTMCGAlignRectangles(rect2, rect1, data[i].alignment);
- STAssertEquals(outRect, expectedRect, nil);
+ XCTAssertTrue(CGRectEqualToRect(outRect, expectedRect));
}
}
- (void)testGTMCGPointsOnRect {
CGRect rect = CGRectMake(0, 0, 2, 2);
-
+
CGPoint point = GTMCGMidMinX(rect);
- STAssertEqualsWithAccuracy(point.y, (CGFloat)1.0, (CGFloat)0.01, nil);
- STAssertEqualsWithAccuracy(point.x, (CGFloat)0.0, (CGFloat)0.01, nil);
-
+ XCTAssertEqualWithAccuracy(point.y, 1.0, 0.01);
+ XCTAssertEqualWithAccuracy(point.x, 0.0, 0.01);
+
point = GTMCGMidMaxX(rect);
- STAssertEqualsWithAccuracy(point.y, (CGFloat)1.0, (CGFloat)0.01, nil);
- STAssertEqualsWithAccuracy(point.x, (CGFloat)2.0, (CGFloat)0.01, nil);
-
+ XCTAssertEqualWithAccuracy(point.y, 1.0, 0.01);
+ XCTAssertEqualWithAccuracy(point.x, 2.0, 0.01);
+
point = GTMCGMidMaxY(rect);
- STAssertEqualsWithAccuracy(point.y, (CGFloat)2.0, (CGFloat)0.01, nil);
- STAssertEqualsWithAccuracy(point.x, (CGFloat)1.0, (CGFloat)0.01, nil);
-
+ XCTAssertEqualWithAccuracy(point.y, 2.0, 0.01);
+ XCTAssertEqualWithAccuracy(point.x, 1.0, 0.01);
+
point = GTMCGMidMinY(rect);
- STAssertEqualsWithAccuracy(point.y, (CGFloat)0.0, (CGFloat)0.01, nil);
- STAssertEqualsWithAccuracy(point.x, (CGFloat)1.0, (CGFloat)0.01, nil);
-
+ XCTAssertEqualWithAccuracy(point.y, 0.0, 0.01);
+ XCTAssertEqualWithAccuracy(point.x, 1.0, 0.01);
+
point = GTMCGCenter(rect);
- STAssertEqualsWithAccuracy(point.y, (CGFloat)1.0, (CGFloat)0.01, nil);
- STAssertEqualsWithAccuracy(point.x, (CGFloat)1.0, (CGFloat)0.01, nil);
+ XCTAssertEqualWithAccuracy(point.y, 1.0, 0.01);
+ XCTAssertEqualWithAccuracy(point.x, 1.0, 0.01);
}
- (void)testGTMCGRectSize {
CGSize cgSize = GTMCGRectSize(CGRectMake(1, 1, 10, 5));
- STAssertEqualsWithAccuracy(cgSize.width, (CGFloat)10.0, (CGFloat)0.01, nil);
- STAssertEqualsWithAccuracy(cgSize.height, (CGFloat)5.0, (CGFloat)0.01, nil);
+ XCTAssertEqualWithAccuracy(cgSize.width, 10.0, 0.01);
+ XCTAssertEqualWithAccuracy(cgSize.height, 5.0, 0.01);
}
- (void)testGTMCGRectOfSize {
CGRect outRect = GTMCGRectOfSize(CGSizeMake(10, 5));
CGRect expectedRect = CGRectMake(0, 0, 10, 5);
- STAssertEquals(outRect, expectedRect, nil);
+ XCTAssertTrue(CGRectEqualToRect(outRect, expectedRect));
}
- (void)testGTMCGRectScaling {
CGRect rect = CGRectMake(1.0f, 2.0f, 5.0f, 10.0f);
- CGRect rect2 = CGRectMake((CGFloat)1.0, (CGFloat)2.0, (CGFloat)1.0, (CGFloat)12.0);
- STAssertEquals(GTMCGRectScale(rect, (CGFloat)0.2, (CGFloat)1.2),
- rect2, nil);
+ CGRect rect2 = CGRectMake(1.0, 2.0, 1.0, 12.0);
+ XCTAssertTrue(CGRectEqualToRect(GTMCGRectScale(rect, 0.2, 1.2), rect2));
}
- (void)testGTMCGScaleRectangleToSize {
@@ -284,24 +283,25 @@
{ { 2.0, 2.0 }, { 2.0, 2.0 } },
{ { 0.0, 10.0 }, { 0.0, 0.0 } }
};
-
+
for (size_t i = 0; i < sizeof(tests) / sizeof(Test); ++i) {
CGRect result = GTMCGScaleRectangleToSize(rect, tests[i].size_,
GTMScaleProportionally);
- STAssertEquals(result, GTMCGRectOfSize(tests[i].newSize_), @"failed on test %zd", i);
+ XCTAssertTrue(CGRectEqualToRect(result, GTMCGRectOfSize(tests[i].newSize_)),
+ @"failed on test %zd", i);
}
-
+
CGRect result = GTMCGScaleRectangleToSize(CGRectZero, tests[0].size_,
GTMScaleProportionally);
- STAssertEquals(result, CGRectZero, nil);
-
+ XCTAssertTrue(CGRectEqualToRect(result, CGRectZero));
+
result = GTMCGScaleRectangleToSize(rect, tests[0].size_,
GTMScaleToFit);
- STAssertEquals(result, GTMCGRectOfSize(tests[0].size_), nil);
-
+ XCTAssertTrue(CGRectEqualToRect(result, GTMCGRectOfSize(tests[0].size_)));
+
result = GTMCGScaleRectangleToSize(rect, tests[0].size_,
GTMScaleNone);
- STAssertEquals(result, rect, nil);
+ XCTAssertTrue(CGRectEqualToRect(result, rect));
}
@end
diff --git a/Foundation/GTMLightweightProxyTest.m b/Foundation/GTMLightweightProxyTest.m
index 03a1979..cdf29b6 100644
--- a/Foundation/GTMLightweightProxyTest.m
+++ b/Foundation/GTMLightweightProxyTest.m
@@ -37,59 +37,59 @@
- (void)testInit {
id proxy = [[[GTMLightweightProxy alloc]
initWithRepresentedObject:self] autorelease];
- STAssertNotNil(proxy, nil);
+ XCTAssertNotNil(proxy);
proxy = [[[GTMLightweightProxy alloc] init] autorelease];
- STAssertNotNil(proxy, nil);
+ XCTAssertNotNil(proxy);
}
- (void)testProxy {
id proxy
= [[[GTMLightweightProxy alloc] initWithRepresentedObject:self] autorelease];
- STAssertEqualObjects(self, [proxy representedObject],
- @"Represented object setup failed");
+ XCTAssertEqualObjects(self, [proxy representedObject],
+ @"Represented object setup failed");
// Check that it identifies itself as a proxy.
- STAssertTrue([proxy isProxy], @"Should identify as a proxy");
+ XCTAssertTrue([proxy isProxy], @"Should identify as a proxy");
// Check that it passes class requests on
- STAssertTrue([proxy isMemberOfClass:[self class]],
- @"Should pass class requests through");
+ XCTAssertTrue([proxy isMemberOfClass:[self class]],
+ @"Should pass class requests through");
// Check that it claims to respond to its selectors.
- STAssertTrue([proxy respondsToSelector:@selector(initWithRepresentedObject:)],
- @"Claims not to respond to initWithRepresentedObject:");
- STAssertTrue([proxy respondsToSelector:@selector(representedObject)],
- @"Claims not to respond to representedObject:");
- STAssertTrue([proxy respondsToSelector:@selector(setRepresentedObject:)],
- @"Claims not to respond to setRepresentedObject:");
+ XCTAssertTrue([proxy respondsToSelector:@selector(initWithRepresentedObject:)],
+ @"Claims not to respond to initWithRepresentedObject:");
+ XCTAssertTrue([proxy respondsToSelector:@selector(representedObject)],
+ @"Claims not to respond to representedObject:");
+ XCTAssertTrue([proxy respondsToSelector:@selector(setRepresentedObject:)],
+ @"Claims not to respond to setRepresentedObject:");
// Check that it responds to its represented object's selectors
- STAssertTrue([proxy respondsToSelector:@selector(returnYes)],
- @"Claims not to respond to returnYes");
+ XCTAssertTrue([proxy respondsToSelector:@selector(returnYes)],
+ @"Claims not to respond to returnYes");
// ... but not to made up selectors.
#if !(__IPHONE_OS_VERSION_MIN_REQUIRED == __IPHONE_3_2 || __IPHONE_OS_VERSION_MIN_REQUIRED == __IPHONE_4_0)
// Exceptions thrown by - (void)doesNotRecognizeSelector:(SEL)aSelector
// does not get caught on iOS 3.2 and greater.
// http://openradar.appspot.com/radar?id=420401
- STAssertThrows([proxy someMadeUpMethod],
- @"Calling a bogus method should throw");
+ XCTAssertThrows([proxy someMadeUpMethod],
+ @"Calling a bogus method should throw");
#endif
// Check that callthrough works.
- STAssertTrue([proxy returnYes],
- @"Calling through to the represented object failed");
+ XCTAssertTrue([proxy returnYes],
+ @"Calling through to the represented object failed");
// Check that nilling out the represented object works.
[proxy setRepresentedObject:nil];
- STAssertTrue([proxy respondsToSelector:@selector(setRepresentedObject:)],
- @"Claims not to respond to setRepresentedObject: after nilling"
- @" out represented object");
- STAssertFalse([proxy respondsToSelector:@selector(returnYes)],
- @"Claims to respond to returnYes after nilling out represented"
- @" object");
+ XCTAssertTrue([proxy respondsToSelector:@selector(setRepresentedObject:)],
+ @"Claims not to respond to setRepresentedObject: after nilling"
+ @" out represented object");
+ XCTAssertFalse([proxy respondsToSelector:@selector(returnYes)],
+ @"Claims to respond to returnYes after nilling out represented"
+ @" object");
// Calling through once the represented object is nil should fail silently
- STAssertNoThrow([proxy returnYes],
- @"Calling through without a represented object should fail"
- @" silently");
+ XCTAssertNoThrow([proxy returnYes],
+ @"Calling through without a represented object should fail"
+ @" silently");
// ... even when they are made up.
#if !(__IPHONE_OS_VERSION_MIN_REQUIRED == __IPHONE_3_2 || __IPHONE_OS_VERSION_MIN_REQUIRED == __IPHONE_4_0)
@@ -97,8 +97,8 @@
// does not get caught on iOS 3.2 and greater.
// http://openradar.appspot.com/radar?id=420401
- STAssertNoThrow([proxy someMadeUpMethod],
- @"Calling a bogus method on a nilled proxy should not throw");
+ XCTAssertNoThrow([proxy someMadeUpMethod],
+ @"Calling a bogus method on a nilled proxy should not throw");
#endif
}
diff --git a/Foundation/GTMLogger+ASLTest.m b/Foundation/GTMLogger+ASLTest.m
index 2756bfc..db85d70 100644
--- a/Foundation/GTMLogger+ASLTest.m
+++ b/Foundation/GTMLogger+ASLTest.m
@@ -57,10 +57,10 @@ static NSMutableArray *gDummyLog; // weak
- (void)testCreation {
GTMLogger *aslLogger = [GTMLogger standardLoggerWithASL];
- STAssertNotNil(aslLogger, nil);
+ XCTAssertNotNil(aslLogger);
GTMLogASLWriter *writer = [GTMLogASLWriter aslWriter];
- STAssertNotNil(writer, nil);
+ XCTAssertNotNil(writer);
}
- (void)testLogWriter {
@@ -71,8 +71,8 @@ static NSMutableArray *gDummyLog; // weak
autorelease];
- STAssertNotNil(writer, nil);
- STAssertEquals([gDummyLog count], (NSUInteger)0, nil);
+ XCTAssertNotNil(writer);
+ XCTAssertEqual([gDummyLog count], (NSUInteger)0);
// Log some messages
[writer logMessage:@"unknown" level:kGTMLoggerLevelUnknown];
@@ -93,7 +93,7 @@ static NSMutableArray *gDummyLog; // weak
@"-assert-1",
nil];
- STAssertEqualObjects(gDummyLog, expected, nil);
+ XCTAssertEqualObjects(gDummyLog, expected);
[gDummyLog removeAllObjects];
// Same test with facility
@@ -102,8 +102,8 @@ static NSMutableArray *gDummyLog; // weak
facility:@"testfac"] autorelease];
- STAssertNotNil(writer, nil);
- STAssertEquals([gDummyLog count], (NSUInteger)0, nil);
+ XCTAssertNotNil(writer);
+ XCTAssertEqual([gDummyLog count], (NSUInteger)0);
[writer logMessage:@"unknown" level:kGTMLoggerLevelUnknown];
[writer logMessage:@"debug" level:kGTMLoggerLevelDebug];
@@ -117,14 +117,14 @@ static NSMutableArray *gDummyLog; // weak
@"testfac-error-3",
@"testfac-assert-1",
nil];
- STAssertEqualObjects(gDummyLog, expected, nil);
+ XCTAssertEqualObjects(gDummyLog, expected);
gDummyLog = nil;
}
- (void)testASLClient {
GTMLoggerASLClient *client = [[GTMLoggerASLClient alloc] init];
- STAssertNotNil(client, nil);
+ XCTAssertNotNil(client);
[client release];
}
diff --git a/Foundation/GTMLogger.m b/Foundation/GTMLogger.m
index 3ace20f..e6b2ba1 100644
--- a/Foundation/GTMLogger.m
+++ b/Foundation/GTMLogger.m
@@ -367,7 +367,7 @@ static GTMLogger *gSharedLogger = nil;
- (void)logMessage:(NSString *)msg level:(GTMLoggerLevel)level {
@synchronized(self) {
id<GTMLogWriter> child = nil;
- GTM_FOREACH_OBJECT(child, self) {
+ for (child in self) {
if ([child conformsToProtocol:@protocol(GTMLogWriter)])
[child logMessage:msg level:level];
}
diff --git a/Foundation/GTMLoggerRingBufferWriterTest.m b/Foundation/GTMLoggerRingBufferWriterTest.m
index 1c5d72b..73cc306 100644
--- a/Foundation/GTMLoggerRingBufferWriterTest.m
+++ b/Foundation/GTMLoggerRingBufferWriterTest.m
@@ -6,9 +6,9 @@
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy
// of the License at
-//
+//
// http://www.apache.org/licenses/LICENSE-2.0
-//
+//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
@@ -19,7 +19,6 @@
#import "GTMSenTestCase.h"
#import "GTMLoggerRingBufferWriter.h"
#import "GTMLogger.h"
-#import "GTMUnitTestDevLog.h"
// --------------------------------------------------
// CountingWriter keeps a count of the number of times it has been
@@ -87,16 +86,16 @@
line:(int)line {
NSArray *loggedContents = [writer loggedContents];
- STAssertEquals([expected count], [loggedContents count],
+ XCTAssertEqual([expected count], [loggedContents count],
@"count mismatch from line %d", line);
for (unsigned int i = 0; i < [expected count]; i++) {
- STAssertEqualObjects([expected objectAtIndex:i],
- [loggedContents objectAtIndex:i],
- @"logging mistmatch at index %d from line %d",
- i, line);
+ XCTAssertEqualObjects([expected objectAtIndex:i],
+ [loggedContents objectAtIndex:i],
+ @"logging mistmatch at index %d from line %d",
+ i, line);
}
-
+
} // compareWithExpectedLogging
@@ -118,24 +117,24 @@
GTMLoggerRingBufferWriter *writer =
[GTMLoggerRingBufferWriter ringBufferWriterWithCapacity:32
writer:countingWriter_];
- STAssertEquals([writer capacity], (NSUInteger)32, nil);
- STAssertTrue([writer writer] == countingWriter_, nil);
- STAssertEquals([writer count], (NSUInteger)0, nil);
- STAssertEquals([writer droppedLogCount], (NSUInteger)0, nil);
- STAssertEquals([writer totalLogged], (NSUInteger)0, nil);
+ XCTAssertEqual([writer capacity], (NSUInteger)32);
+ XCTAssertTrue([writer writer] == countingWriter_);
+ XCTAssertEqual([writer count], (NSUInteger)0);
+ XCTAssertEqual([writer droppedLogCount], (NSUInteger)0);
+ XCTAssertEqual([writer totalLogged], (NSUInteger)0);
// Try with invalid arguments. Should always get nil back.
writer =
[GTMLoggerRingBufferWriter ringBufferWriterWithCapacity:0
writer:countingWriter_];
- STAssertNil(writer, nil);
+ XCTAssertNil(writer);
writer = [GTMLoggerRingBufferWriter ringBufferWriterWithCapacity:32
writer:nil];
- STAssertNil(writer, nil);
+ XCTAssertNil(writer);
writer = [[GTMLoggerRingBufferWriter alloc] init];
- STAssertNil(writer, nil);
+ XCTAssertNil(writer);
} // testCreation
@@ -145,31 +144,31 @@
[GTMLoggerRingBufferWriter ringBufferWriterWithCapacity:4
writer:countingWriter_];
[logger_ setWriter:writer];
-
+
// Shouldn't do anything if there are no contents.
[writer dumpContents];
- STAssertEquals([writer count], (NSUInteger)0, nil);
- STAssertEquals([countingWriter_ count], (NSUInteger)0, nil);
+ XCTAssertEqual([writer count], (NSUInteger)0);
+ XCTAssertEqual([countingWriter_ count], (NSUInteger)0);
// Log a single item. Make sure the counts are accurate.
[logger_ logDebug:@"oop"];
- STAssertEquals([writer count], (NSUInteger)1, nil);
- STAssertEquals([writer totalLogged], (NSUInteger)1, nil);
- STAssertEquals([writer droppedLogCount], (NSUInteger)0, nil);
- STAssertEquals([countingWriter_ count], (NSUInteger)0, nil);
+ XCTAssertEqual([writer count], (NSUInteger)1);
+ XCTAssertEqual([writer totalLogged], (NSUInteger)1);
+ XCTAssertEqual([writer droppedLogCount], (NSUInteger)0);
+ XCTAssertEqual([countingWriter_ count], (NSUInteger)0);
// Log a second item. Also make sure counts are accurate.
[logger_ logDebug:@"ack"];
- STAssertEquals([writer count], (NSUInteger)2, nil);
- STAssertEquals([writer totalLogged], (NSUInteger)2, nil);
- STAssertEquals([writer droppedLogCount], (NSUInteger)0, nil);
- STAssertEquals([countingWriter_ count], (NSUInteger)0, nil);
+ XCTAssertEqual([writer count], (NSUInteger)2);
+ XCTAssertEqual([writer totalLogged], (NSUInteger)2);
+ XCTAssertEqual([writer droppedLogCount], (NSUInteger)0);
+ XCTAssertEqual([countingWriter_ count], (NSUInteger)0);
// Print them, and make sure the countingWriter sees the right stuff.
[writer dumpContents];
- STAssertEquals([countingWriter_ count], (NSUInteger)2, nil);
- STAssertEquals([writer count], (NSUInteger)2, nil); // Should not be zeroed.
- STAssertEquals([writer totalLogged], (NSUInteger)2, nil);
+ XCTAssertEqual([countingWriter_ count], (NSUInteger)2);
+ XCTAssertEqual([writer count], (NSUInteger)2); // Should not be zeroed.
+ XCTAssertEqual([writer totalLogged], (NSUInteger)2);
[self compareWriter:countingWriter_
withExpectedLogging:[NSArray arrayWithObjects:@"oop",@"ack", nil]
@@ -179,18 +178,18 @@
// Wipe the slates clean.
[writer reset];
[countingWriter_ reset];
- STAssertEquals([writer count], (NSUInteger)0, nil);
- STAssertEquals([writer totalLogged], (NSUInteger)0, nil);
+ XCTAssertEqual([writer count], (NSUInteger)0);
+ XCTAssertEqual([writer totalLogged], (NSUInteger)0);
// An error log level should print the buffer and empty it.
[logger_ logDebug:@"oop"];
[logger_ logInfo:@"ack"];
- STAssertEquals([writer droppedLogCount], (NSUInteger)0, nil);
- STAssertEquals([writer totalLogged], (NSUInteger)2, nil);
+ XCTAssertEqual([writer droppedLogCount], (NSUInteger)0);
+ XCTAssertEqual([writer totalLogged], (NSUInteger)2);
[logger_ logError:@"blargh"];
- STAssertEquals([countingWriter_ count], (NSUInteger)3, nil);
- STAssertEquals([writer droppedLogCount], (NSUInteger)0, nil);
+ XCTAssertEqual([countingWriter_ count], (NSUInteger)3);
+ XCTAssertEqual([writer droppedLogCount], (NSUInteger)0);
[self compareWriter:countingWriter_
withExpectedLogging:[NSArray arrayWithObjects:@"oop", @"ack",
@@ -204,13 +203,13 @@
[logger_ logDebug:@"oop"];
[logger_ logInfo:@"ack"];
[logger_ logDebug:@"blargh"];
- STAssertEquals([writer droppedLogCount], (NSUInteger)0, nil);
- STAssertEquals([writer count], (NSUInteger)3, nil);
- STAssertEquals([writer totalLogged], (NSUInteger)3, nil);
+ XCTAssertEqual([writer droppedLogCount], (NSUInteger)0);
+ XCTAssertEqual([writer count], (NSUInteger)3);
+ XCTAssertEqual([writer totalLogged], (NSUInteger)3);
[logger_ logAssert:@"ouch"];
- STAssertEquals([countingWriter_ count], (NSUInteger)4, nil);
- STAssertEquals([writer droppedLogCount], (NSUInteger)0, nil);
+ XCTAssertEqual([countingWriter_ count], (NSUInteger)4);
+ XCTAssertEqual([writer droppedLogCount], (NSUInteger)0);
[self compareWriter:countingWriter_
withExpectedLogging:[NSArray arrayWithObjects:@"oop", @"ack",
@"blargh", @"ouch", nil]
@@ -223,11 +222,11 @@
[logger_ logDebug:@"oop"];
[logger_ logDebug:@"blargh"];
[logger_ logDebug:@"flong"]; // Fills buffer
- STAssertEquals([writer droppedLogCount], (NSUInteger)0, nil);
- STAssertEquals([writer count], (NSUInteger)4, nil);
+ XCTAssertEqual([writer droppedLogCount], (NSUInteger)0);
+ XCTAssertEqual([writer count], (NSUInteger)4);
[logger_ logAssert:@"ouch"]; // should drop "ack"
- STAssertEquals([countingWriter_ count], (NSUInteger)4, nil);
+ XCTAssertEqual([countingWriter_ count], (NSUInteger)4);
[self compareWriter:countingWriter_
withExpectedLogging:[NSArray arrayWithObjects:@"oop", @"blargh",
@@ -242,11 +241,11 @@
[logger_ logDebug:@"blargh"];
[logger_ logDebug:@"flong"]; // Fills buffer
[logger_ logDebug:@"bloogie"]; // should drop "ack"
- STAssertEquals([writer droppedLogCount], (NSUInteger)1, nil);
- STAssertEquals([writer count], (NSUInteger)4, nil);
+ XCTAssertEqual([writer droppedLogCount], (NSUInteger)1);
+ XCTAssertEqual([writer count], (NSUInteger)4);
[logger_ logAssert:@"ouch"]; // should drop "oop"
- STAssertEquals([countingWriter_ count], (NSUInteger)4, nil);
+ XCTAssertEqual([countingWriter_ count], (NSUInteger)4);
[self compareWriter:countingWriter_
withExpectedLogging:[NSArray arrayWithObjects:@"blargh",
@@ -264,22 +263,22 @@
[logger_ setWriter:writer];
[logger_ logInfo:@"ack"];
- STAssertEquals([countingWriter_ count], (NSUInteger)0, nil);
- STAssertEquals([writer count], (NSUInteger)1, nil);
+ XCTAssertEqual([countingWriter_ count], (NSUInteger)0);
+ XCTAssertEqual([writer count], (NSUInteger)1);
[writer dumpContents];
- STAssertEquals([countingWriter_ count], (NSUInteger)1, nil);
+ XCTAssertEqual([countingWriter_ count], (NSUInteger)1);
[self compareWriter:countingWriter_
- withExpectedLogging:[NSArray arrayWithObjects:@"ack", nil]
+ withExpectedLogging:[NSArray arrayWithObject:@"ack"]
line:__LINE__];
[logger_ logDebug:@"oop"]; // should drop "ack"
- STAssertEquals([writer count], (NSUInteger)1, nil);
- STAssertEquals([writer droppedLogCount], (NSUInteger)1, nil);
+ XCTAssertEqual([writer count], (NSUInteger)1);
+ XCTAssertEqual([writer droppedLogCount], (NSUInteger)1);
[countingWriter_ reset];
[logger_ logError:@"snoogy"]; // should drop "oop"
- STAssertEquals([countingWriter_ count], (NSUInteger)1, nil);
+ XCTAssertEqual([countingWriter_ count], (NSUInteger)1);
[self compareWriter:countingWriter_
withExpectedLogging:[NSArray arrayWithObjects:@"snoogy", nil]
@@ -289,7 +288,7 @@
-// Run 10 threads, all logging through the same logger.
+// Run 10 threads, all logging through the same logger.
static volatile NSUInteger gStoppedThreads = 0; // Total number that have stopped.
@@ -343,15 +342,15 @@ static volatile NSUInteger gStoppedThreads = 0; // Total number that have stoppe
}
// Now make sure we get back what's expected.
- STAssertEquals([writer count], kThreadCount, nil);
- STAssertEquals([countingWriter_ count], (NSUInteger)0, nil); // Nothing should be logged
- STAssertEquals([writer totalLogged], (NSUInteger)420, nil);
+ XCTAssertEqual([writer count], kThreadCount);
+ XCTAssertEqual([countingWriter_ count], (NSUInteger)0); // Nothing should be logged
+ XCTAssertEqual([writer totalLogged], (NSUInteger)420);
[logger_ logError:@"bork"];
- STAssertEquals([countingWriter_ count], kCapacity, nil);
-
+ XCTAssertEqual([countingWriter_ count], kCapacity);
+
NSArray *expected = [NSArray arrayWithObjects:
- @"ack", @"ack", @"ack", @"ack", @"ack",
+ @"ack", @"ack", @"ack", @"ack", @"ack",
@"ack", @"ack", @"ack", @"ack", @"bork",
nil];
[self compareWriter:countingWriter_
diff --git a/Foundation/GTMLoggerTest.m b/Foundation/GTMLoggerTest.m
index bea75b2..6ce60bd 100644
--- a/Foundation/GTMLoggerTest.m
+++ b/Foundation/GTMLoggerTest.m
@@ -112,22 +112,14 @@
- (void)setUp {
path_ = [[NSTemporaryDirectory() stringByAppendingPathComponent:
@"GTMLoggerUnitTest.log"] retain];
- STAssertNotNil(path_, nil);
+ XCTAssertNotNil(path_);
// Make sure we're cleaned up from the last run
-#if GTM_MACOS_SDK && (MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5)
- [[NSFileManager defaultManager] removeFileAtPath:path_ handler:nil];
-#else
[[NSFileManager defaultManager] removeItemAtPath:path_ error:NULL];
-#endif
}
- (void)tearDown {
- STAssertNotNil(path_, nil);
-#if GTM_MACOS_SDK && (MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5)
- [[NSFileManager defaultManager] removeFileAtPath:path_ handler:nil];
-#else
+ XCTAssertNotNil(path_);
[[NSFileManager defaultManager] removeItemAtPath:path_ error:NULL];
-#endif
[path_ release];
path_ = nil;
}
@@ -138,58 +130,58 @@
logger1 = [GTMLogger sharedLogger];
logger2 = [GTMLogger sharedLogger];
- STAssertTrue(logger1 == logger2, nil);
+ XCTAssertTrue(logger1 == logger2);
- STAssertNotNil([logger1 writer], nil);
- STAssertNotNil([logger1 formatter], nil);
- STAssertNotNil([logger1 filter], nil);
+ XCTAssertNotNil([logger1 writer]);
+ XCTAssertNotNil([logger1 formatter]);
+ XCTAssertNotNil([logger1 filter]);
// Get a new instance; not the shared instance
logger2 = [GTMLogger standardLogger];
- STAssertTrue(logger1 != logger2, nil);
- STAssertNotNil([logger2 writer], nil);
- STAssertNotNil([logger2 formatter], nil);
- STAssertNotNil([logger2 filter], nil);
+ XCTAssertTrue(logger1 != logger2);
+ XCTAssertNotNil([logger2 writer]);
+ XCTAssertNotNil([logger2 formatter]);
+ XCTAssertNotNil([logger2 filter]);
// Set the new instance to be the shared logger.
[GTMLogger setSharedLogger:logger2];
- STAssertTrue(logger2 == [GTMLogger sharedLogger], nil);
- STAssertTrue(logger1 != [GTMLogger sharedLogger], nil);
+ XCTAssertTrue(logger2 == [GTMLogger sharedLogger]);
+ XCTAssertTrue(logger1 != [GTMLogger sharedLogger]);
// Set the shared logger to nil, which should reset it to a new "standard"
// logger.
[GTMLogger setSharedLogger:nil];
- STAssertNotNil([GTMLogger sharedLogger], nil);
- STAssertTrue(logger2 != [GTMLogger sharedLogger], nil);
- STAssertTrue(logger1 != [GTMLogger sharedLogger], nil);
+ XCTAssertNotNil([GTMLogger sharedLogger]);
+ XCTAssertTrue(logger2 != [GTMLogger sharedLogger]);
+ XCTAssertTrue(logger1 != [GTMLogger sharedLogger]);
GTMLogger *logger = [GTMLogger logger];
- STAssertNotNil(logger, nil);
+ XCTAssertNotNil(logger);
logger = [GTMLogger standardLoggerWithStderr];
- STAssertNotNil(logger, nil);
+ XCTAssertNotNil(logger);
logger = [GTMLogger standardLoggerWithPath:path_];
- STAssertNotNil(logger, nil);
+ XCTAssertNotNil(logger);
}
- (void)testAccessors {
GTMLogger *logger = [GTMLogger standardLogger];
- STAssertNotNil(logger, nil);
+ XCTAssertNotNil(logger);
- STAssertNotNil([logger writer], nil);
- STAssertNotNil([logger formatter], nil);
- STAssertNotNil([logger filter], nil);
+ XCTAssertNotNil([logger writer]);
+ XCTAssertNotNil([logger formatter]);
+ XCTAssertNotNil([logger filter]);
[logger setWriter:nil];
[logger setFormatter:nil];
[logger setFilter:nil];
// These attributes should NOT be nil. They should be set to their defaults.
- STAssertNotNil([logger writer], nil);
- STAssertNotNil([logger formatter], nil);
- STAssertNotNil([logger filter], nil);
+ XCTAssertNotNil([logger writer]);
+ XCTAssertNotNil([logger formatter]);
+ XCTAssertNotNil([logger filter]);
}
- (void)testLogger {
@@ -212,7 +204,7 @@
formatter:nil // basic formatter
filter:filter];
- STAssertNotNil(logger, nil);
+ XCTAssertNotNil(logger);
// Log a few messages to test with
[logger logInfo:@"hi"];
@@ -222,22 +214,22 @@
// Makes sure the messages got logged
NSArray *messages = [writer messages];
- STAssertNotNil(messages, nil);
- STAssertEquals([messages count], (NSUInteger)4, nil);
- STAssertEqualObjects([messages objectAtIndex:0], @"hi", nil);
- STAssertEqualObjects([messages objectAtIndex:1], @"foo", nil);
- STAssertEqualObjects([messages objectAtIndex:2], @"blah", nil);
- STAssertEqualObjects([messages objectAtIndex:3], @"baz", nil);
+ XCTAssertNotNil(messages);
+ XCTAssertEqual([messages count], (NSUInteger)4);
+ XCTAssertEqualObjects([messages objectAtIndex:0], @"hi");
+ XCTAssertEqualObjects([messages objectAtIndex:1], @"foo");
+ XCTAssertEqualObjects([messages objectAtIndex:2], @"blah");
+ XCTAssertEqualObjects([messages objectAtIndex:3], @"baz");
// Log a message that should be ignored, and make sure it did NOT get logged
[logger logInfo:@"please ignore this"];
messages = [writer messages];
- STAssertNotNil(messages, nil);
- STAssertEquals([messages count], (NSUInteger)4, nil);
- STAssertEqualObjects([messages objectAtIndex:0], @"hi", nil);
- STAssertEqualObjects([messages objectAtIndex:1], @"foo", nil);
- STAssertEqualObjects([messages objectAtIndex:2], @"blah", nil);
- STAssertEqualObjects([messages objectAtIndex:3], @"baz", nil);
+ XCTAssertNotNil(messages);
+ XCTAssertEqual([messages count], (NSUInteger)4);
+ XCTAssertEqualObjects([messages objectAtIndex:0], @"hi");
+ XCTAssertEqualObjects([messages objectAtIndex:1], @"foo");
+ XCTAssertEqualObjects([messages objectAtIndex:2], @"blah");
+ XCTAssertEqualObjects([messages objectAtIndex:3], @"baz");
// Change the formatter to our "dumb formatter"
id<GTMLogFormatter> formatter = [[[DumbFormatter alloc] init] autorelease];
@@ -245,14 +237,14 @@
[logger logInfo:@"bleh"];
messages = [writer messages];
- STAssertNotNil(messages, nil);
- STAssertEquals([messages count], (NSUInteger)5, nil); // Message count should increase
+ XCTAssertNotNil(messages);
+ XCTAssertEqual([messages count], (NSUInteger)5); // Message count should increase
// The previously logged messages should not change
- STAssertEqualObjects([messages objectAtIndex:0], @"hi", nil);
- STAssertEqualObjects([messages objectAtIndex:1], @"foo", nil);
- STAssertEqualObjects([messages objectAtIndex:2], @"blah", nil);
- STAssertEqualObjects([messages objectAtIndex:3], @"baz", nil);
- STAssertEqualObjects([messages objectAtIndex:4], @"DUMB [2] bleh", nil);
+ XCTAssertEqualObjects([messages objectAtIndex:0], @"hi");
+ XCTAssertEqualObjects([messages objectAtIndex:1], @"foo");
+ XCTAssertEqualObjects([messages objectAtIndex:2], @"blah");
+ XCTAssertEqualObjects([messages objectAtIndex:3], @"baz");
+ XCTAssertEqualObjects([messages objectAtIndex:4], @"DUMB [2] bleh");
}
- (void)testConvenienceMacros {
@@ -267,10 +259,10 @@
// test to make sure the logged message does indeed contain the name of the
// current function "testConvenienceMacros".
GTMLoggerError(@"test ========================");
- STAssertEquals([[writer messages] count], (NSUInteger)1, nil);
+ XCTAssertEqual([[writer messages] count], (NSUInteger)1);
NSRange rangeOfFuncName =
[[[writer messages] objectAtIndex:0] rangeOfString:@"testConvenienceMacros"];
- STAssertTrue(rangeOfFuncName.location != NSNotFound, nil);
+ XCTAssertTrue(rangeOfFuncName.location != NSNotFound);
[writer clear];
[[GTMLogger sharedLogger] setFormatter:nil];
@@ -281,19 +273,19 @@
GTMLoggerAssert(@"test %d", 4);
NSArray *messages = [writer messages];
- STAssertNotNil(messages, nil);
+ XCTAssertNotNil(messages);
#ifdef DEBUG
- STAssertEquals([messages count], (NSUInteger)4, nil);
- STAssertEqualObjects([messages objectAtIndex:0], @"test 1", nil);
- STAssertEqualObjects([messages objectAtIndex:1], @"test 2", nil);
- STAssertEqualObjects([messages objectAtIndex:2], @"test 3", nil);
- STAssertEqualObjects([messages objectAtIndex:3], @"test 4", nil);
+ XCTAssertEqual([messages count], (NSUInteger)4);
+ XCTAssertEqualObjects([messages objectAtIndex:0], @"test 1");
+ XCTAssertEqualObjects([messages objectAtIndex:1], @"test 2");
+ XCTAssertEqualObjects([messages objectAtIndex:2], @"test 3");
+ XCTAssertEqualObjects([messages objectAtIndex:3], @"test 4");
#else
// In Release builds, only the Error and Assert messages will be logged
- STAssertEquals([messages count], (NSUInteger)2, nil);
- STAssertEqualObjects([messages objectAtIndex:0], @"test 3", nil);
- STAssertEqualObjects([messages objectAtIndex:1], @"test 4", nil);
+ XCTAssertEqual([messages count], (NSUInteger)2);
+ XCTAssertEqualObjects([messages objectAtIndex:0], @"test 3");
+ XCTAssertEqualObjects([messages objectAtIndex:1], @"test 4");
#endif
}
@@ -302,10 +294,10 @@
NSFileHandle *fh = nil;
fh = [NSFileHandle fileHandleForWritingAtPath:path_];
- STAssertNil(fh, nil);
+ XCTAssertNil(fh);
fh = [NSFileHandle fileHandleForLoggingAtPath:path_ mode:0644];
- STAssertNotNil(fh, nil);
+ XCTAssertNotNil(fh);
[fh logMessage:@"test 0" level:kGTMLoggerLevelUnknown];
[fh logMessage:@"test 1" level:kGTMLoggerLevelDebug];
@@ -318,24 +310,24 @@
NSString *contents = [NSString stringWithContentsOfFile:path_
encoding:NSUTF8StringEncoding
error:&err];
- STAssertNotNil(contents, @"Error loading log file: %@", err);
- STAssertEqualObjects(@"test 0\ntest 1\ntest 2\ntest 3\ntest 4\n", contents, nil);
+ XCTAssertNotNil(contents, @"Error loading log file: %@", err);
+ XCTAssertEqualObjects(@"test 0\ntest 1\ntest 2\ntest 3\ntest 4\n", contents);
}
- (void)testLoggerAdapterWriter {
ArrayWriter *writer = [[[ArrayWriter alloc] init] autorelease];
- STAssertNotNil(writer, nil);
+ XCTAssertNotNil(writer);
GTMLogger *sublogger = [GTMLogger loggerWithWriter:writer
formatter:nil
filter:nil];
- STAssertNotNil(sublogger, nil);
+ XCTAssertNotNil(sublogger);
GTMLogger *logger = [GTMLogger loggerWithWriter:sublogger
formatter:nil
filter:nil];
- STAssertNotNil(logger, nil);
+ XCTAssertNotNil(logger);
// Log a few messages to test with
[logger logInfo:@"hi"];
@@ -345,12 +337,12 @@
// Makes sure the messages got logged
NSArray *messages = [writer messages];
- STAssertNotNil(messages, nil);
- STAssertEquals([messages count], (NSUInteger)4, nil);
- STAssertEqualObjects([messages objectAtIndex:0], @"hi", nil);
- STAssertEqualObjects([messages objectAtIndex:1], @"foo", nil);
- STAssertEqualObjects([messages objectAtIndex:2], @"blah", nil);
- STAssertEqualObjects([messages objectAtIndex:3], @"assert", nil);
+ XCTAssertNotNil(messages);
+ XCTAssertEqual([messages count], (NSUInteger)4);
+ XCTAssertEqualObjects([messages objectAtIndex:0], @"hi");
+ XCTAssertEqualObjects([messages objectAtIndex:1], @"foo");
+ XCTAssertEqualObjects([messages objectAtIndex:2], @"blah");
+ XCTAssertEqualObjects([messages objectAtIndex:3], @"assert");
}
// Helper method to help testing GTMLogFormatters
@@ -370,211 +362,177 @@
- (void)testFunctionPrettifier {
GTMLogBasicFormatter *fmtr = [[[GTMLogBasicFormatter alloc] init]
autorelease];
- STAssertNotNil(fmtr, nil);
+ XCTAssertNotNil(fmtr);
// Nil, empty and whitespace
- STAssertEqualObjects([fmtr prettyNameForFunc:nil], @"(unknown)", nil);
- STAssertEqualObjects([fmtr prettyNameForFunc:@""], @"(unknown)", nil);
- STAssertEqualObjects([fmtr prettyNameForFunc:@" \n\t"], @"(unknown)", nil);
+ XCTAssertEqualObjects([fmtr prettyNameForFunc:nil], @"(unknown)");
+ XCTAssertEqualObjects([fmtr prettyNameForFunc:@""], @"(unknown)");
+ XCTAssertEqualObjects([fmtr prettyNameForFunc:@" \n\t"], @"(unknown)");
// C99 __func__
- STAssertEqualObjects([fmtr prettyNameForFunc:@"main"], @"main()", nil);
- STAssertEqualObjects([fmtr prettyNameForFunc:@"main"], @"main()", nil);
- STAssertEqualObjects([fmtr prettyNameForFunc:@" main "], @"main()", nil);
+ XCTAssertEqualObjects([fmtr prettyNameForFunc:@"main"], @"main()");
+ XCTAssertEqualObjects([fmtr prettyNameForFunc:@"main"], @"main()");
+ XCTAssertEqualObjects([fmtr prettyNameForFunc:@" main "], @"main()");
// GCC Obj-C __func__ and __PRETTY_FUNCTION__
- STAssertEqualObjects([fmtr prettyNameForFunc:@"+[Foo bar]"], @"+[Foo bar]",
- nil);
- STAssertEqualObjects([fmtr prettyNameForFunc:@" +[Foo bar] "], @"+[Foo bar]",
- nil);
- STAssertEqualObjects([fmtr prettyNameForFunc:@"-[Foo baz]"], @"-[Foo baz]",
- nil);
- STAssertEqualObjects([fmtr prettyNameForFunc:@" -[Foo baz] "], @"-[Foo baz]",
- nil);
+ XCTAssertEqualObjects([fmtr prettyNameForFunc:@"+[Foo bar]"], @"+[Foo bar]");
+ XCTAssertEqualObjects([fmtr prettyNameForFunc:@" +[Foo bar] "], @"+[Foo bar]");
+ XCTAssertEqualObjects([fmtr prettyNameForFunc:@"-[Foo baz]"], @"-[Foo baz]");
+ XCTAssertEqualObjects([fmtr prettyNameForFunc:@" -[Foo baz] "], @"-[Foo baz]");
// GCC C++ __PRETTY_FUNCTION__
- STAssertEqualObjects([fmtr prettyNameForFunc:@"void a::sub(int)"],
- @"void a::sub(int)", nil);
- STAssertEqualObjects([fmtr prettyNameForFunc:@" void a::sub(int) "],
- @"void a::sub(int)", nil);
+ XCTAssertEqualObjects([fmtr prettyNameForFunc:@"void a::sub(int)"],
+ @"void a::sub(int)");
+ XCTAssertEqualObjects([fmtr prettyNameForFunc:@" void a::sub(int) "],
+ @"void a::sub(int)");
}
- (void)testBasicFormatter {
id<GTMLogFormatter> fmtr = [[[GTMLogBasicFormatter alloc] init] autorelease];
- STAssertNotNil(fmtr, nil);
+ XCTAssertNotNil(fmtr);
NSString *msg = nil;
msg = [self stringFromFormatter:fmtr
level:kGTMLoggerLevelDebug
format:@"test"];
- STAssertEqualObjects(msg, @"test", nil);
+ XCTAssertEqualObjects(msg, @"test");
msg = [self stringFromFormatter:fmtr
level:kGTMLoggerLevelDebug
format:@"test %d", 1];
- STAssertEqualObjects(msg, @"test 1", nil);
+ XCTAssertEqualObjects(msg, @"test 1");
msg = [self stringFromFormatter:fmtr
level:kGTMLoggerLevelDebug
format:@"test %@", @"foo"];
- STAssertEqualObjects(msg, @"test foo", nil);
+ XCTAssertEqualObjects(msg, @"test foo");
msg = [self stringFromFormatter:fmtr
level:kGTMLoggerLevelDebug
format:@""];
- STAssertEqualObjects(msg, @"", nil);
+ XCTAssertEqualObjects(msg, @"");
msg = [self stringFromFormatter:fmtr
level:kGTMLoggerLevelDebug
format:@" "];
- STAssertEqualObjects(msg, @" ", nil);
+ XCTAssertEqualObjects(msg, @" ");
}
- (void)testStandardFormatter {
id<GTMLogFormatter> fmtr = [[[GTMLogStandardFormatter alloc] init] autorelease];
- STAssertNotNil(fmtr, nil);
-
- NSString * kFormatBasePattern;
-#if GTM_MACOS_SDK
- // E.g. 2008-01-04 09:16:26.906 otest[5567/0xa07d0f60] [lvl=1] (no func) test
- // E.g. 2009-10-26 22:26:25.086 otest-i386[53200/0xa0438500] [lvl=1] (no func) test
- kFormatBasePattern =
- @"[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}\\.[0-9]{3} ((otest)|(otest-i386)|(otest-x86_64)|(otest-ppc))\\[[0-9]+/0x[0-9a-f]+\\] \\[lvl=[0-3]\\] \\(unknown\\) ";
-#else // GTM_MACOS_SDK
- // E.g. 2008-01-04 09:16:26.906 otest[5567/0xa07d0f60] [lvl=1] (no func) test
- // 2011-11-29 12:32:24.129 GTMiPhoneUnitTestingOCUnitTestRig[31540/0xa04dd540] [lvl=1] (unknown) test
- kFormatBasePattern =
- @"[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}\\.[0-9]{3} (GTMiPhoneTest|GTMiPhoneUnitTestingOCUnitTestRig)\\[[0-9]+/0x[0-9a-f]+\\] \\[lvl=[0-3]\\] \\(unknown\\) ";
-#endif // GTM_MACOS_SDK
+ XCTAssertNotNil(fmtr);
+
+ // E.g. 2008-01-04 09:16:26.906 xctest[5567/0xa07d0f60] [lvl=1] (no func) test
+ #define kFormatBasePattern @"[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}\\.[0-9]{3} %@\\[[0-9]+/0x[0-9a-f]+\\] \\[lvl=[0-3]\\] \\(unknown\\) %@"
NSString *msg = nil;
+ NSString *executableName = [[[NSBundle mainBundle] executablePath] lastPathComponent];
msg = [self stringFromFormatter:fmtr
level:kGTMLoggerLevelDebug
format:@"test"];
- STAssertTrue([msg gtm_matchesPattern:[kFormatBasePattern stringByAppendingString:@"test"]],
- @"msg: %@", msg);
+ NSString *pattern = [NSString stringWithFormat:kFormatBasePattern, executableName, @"test"];
+ XCTAssertTrue([msg gtm_matchesPattern:pattern], @"msg: %@", msg);
msg = [self stringFromFormatter:fmtr
level:kGTMLoggerLevelError
format:@"test %d", 1];
- STAssertTrue([msg gtm_matchesPattern:[kFormatBasePattern stringByAppendingString:@"test 1"]],
- @"msg: %@", msg);
-
+ pattern = [NSString stringWithFormat:kFormatBasePattern, executableName, @"test 1"];
+ XCTAssertTrue([msg gtm_matchesPattern:pattern], @"msg: %@", msg);
msg = [self stringFromFormatter:fmtr
level:kGTMLoggerLevelInfo
format:@"test %@", @"hi"];
- STAssertTrue([msg gtm_matchesPattern:[kFormatBasePattern stringByAppendingString:@"test hi"]],
- @"msg: %@", msg);
+ pattern = [NSString stringWithFormat:kFormatBasePattern, executableName, @"test hi"];
+ XCTAssertTrue([msg gtm_matchesPattern:pattern], @"msg: %@", msg);
msg = [self stringFromFormatter:fmtr
level:kGTMLoggerLevelUnknown
format:@"test"];
- STAssertTrue([msg gtm_matchesPattern:[kFormatBasePattern stringByAppendingString:@"test"]],
- @"msg: %@", msg);
+ pattern = [NSString stringWithFormat:kFormatBasePattern, executableName, @"test"];
+ XCTAssertTrue([msg gtm_matchesPattern:pattern], @"msg: %@", msg);
}
- (void)testNoFilter {
id<GTMLogFilter> filter = [[[GTMLogNoFilter alloc] init] autorelease];
- STAssertNotNil(filter, nil);
-
- STAssertTrue([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelUnknown], nil);
- STAssertTrue([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelDebug], nil);
- STAssertTrue([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelInfo], nil);
- STAssertTrue([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelError], nil);
- STAssertTrue([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelAssert], nil);
- STAssertTrue([filter filterAllowsMessage:@"" level:kGTMLoggerLevelDebug], nil);
- STAssertTrue([filter filterAllowsMessage:nil level:kGTMLoggerLevelDebug], nil);
+ XCTAssertNotNil(filter);
+
+ XCTAssertTrue([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelUnknown]);
+ XCTAssertTrue([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelDebug]);
+ XCTAssertTrue([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelInfo]);
+ XCTAssertTrue([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelError]);
+ XCTAssertTrue([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelAssert]);
+ XCTAssertTrue([filter filterAllowsMessage:@"" level:kGTMLoggerLevelDebug]);
+ XCTAssertTrue([filter filterAllowsMessage:nil level:kGTMLoggerLevelDebug]);
}
- (void)testMinimumFilter {
id<GTMLogFilter> filter = [[[GTMLogMininumLevelFilter alloc]
initWithMinimumLevel:kGTMLoggerLevelInfo]
autorelease];
- STAssertNotNil(filter, nil);
- STAssertFalse([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelUnknown],
- nil);
- STAssertFalse([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelDebug],
- nil);
- STAssertTrue([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelInfo],
- nil);
- STAssertTrue([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelError],
- nil);
- STAssertTrue([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelAssert],
- nil);
+ XCTAssertNotNil(filter);
+ XCTAssertFalse([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelUnknown]);
+ XCTAssertFalse([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelDebug]);
+ XCTAssertTrue([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelInfo]);
+ XCTAssertTrue([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelError]);
+ XCTAssertTrue([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelAssert]);
filter = [[[GTMLogMininumLevelFilter alloc]
initWithMinimumLevel:kGTMLoggerLevelDebug] autorelease];
- STAssertNotNil(filter, nil);
- STAssertFalse([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelUnknown],
- nil);
- STAssertTrue([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelDebug],
- nil);
- STAssertTrue([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelInfo],
- nil);
- STAssertTrue([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelError],
- nil);
- STAssertTrue([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelAssert],
- nil);
+ XCTAssertNotNil(filter);
+ XCTAssertFalse([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelUnknown]);
+ XCTAssertTrue([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelDebug]);
+ XCTAssertTrue([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelInfo]);
+ XCTAssertTrue([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelError]);
+ XCTAssertTrue([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelAssert]);
// Cannot exceed min/max levels filter
filter = [[[GTMLogMininumLevelFilter alloc]
initWithMinimumLevel:kGTMLoggerLevelAssert + 1] autorelease];
- STAssertNil(filter, nil);
+ XCTAssertNil(filter);
filter = [[[GTMLogMininumLevelFilter alloc]
initWithMinimumLevel:kGTMLoggerLevelUnknown - 1] autorelease];
- STAssertNil(filter, nil);
+ XCTAssertNil(filter);
}
- (void)testMaximumFilter {
id<GTMLogFilter> filter = [[[GTMLogMaximumLevelFilter alloc]
initWithMaximumLevel:kGTMLoggerLevelInfo]
autorelease];
- STAssertNotNil(filter, nil);
- STAssertTrue([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelUnknown],
- nil);
- STAssertTrue([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelDebug],
- nil);
- STAssertTrue([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelInfo],
- nil);
- STAssertFalse([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelError],
- nil);
- STAssertFalse([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelAssert],
- nil);
+ XCTAssertNotNil(filter);
+ XCTAssertTrue([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelUnknown]);
+ XCTAssertTrue([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelDebug]);
+ XCTAssertTrue([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelInfo]);
+ XCTAssertFalse([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelError]);
+ XCTAssertFalse([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelAssert]);
filter = [[[GTMLogMaximumLevelFilter alloc]
initWithMaximumLevel:kGTMLoggerLevelDebug] autorelease];
- STAssertNotNil(filter, nil);
- STAssertTrue([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelUnknown],
- nil);
- STAssertTrue([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelDebug],
- nil);
- STAssertFalse([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelInfo],
- nil);
- STAssertFalse([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelError],
- nil);
- STAssertFalse([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelAssert],
- nil);
+ XCTAssertNotNil(filter);
+ XCTAssertTrue([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelUnknown]);
+ XCTAssertTrue([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelDebug]);
+ XCTAssertFalse([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelInfo]);
+ XCTAssertFalse([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelError]);
+ XCTAssertFalse([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelAssert]);
// Cannot exceed min/max levels filter
filter = [[[GTMLogMaximumLevelFilter alloc]
initWithMaximumLevel:kGTMLoggerLevelAssert + 1] autorelease];
- STAssertNil(filter, nil);
+ XCTAssertNil(filter);
filter = [[[GTMLogMaximumLevelFilter alloc]
initWithMaximumLevel:kGTMLoggerLevelUnknown - 1] autorelease];
- STAssertNil(filter, nil);
+ XCTAssertNil(filter);
}
- (void)testFileHandleCreation {
NSFileHandle *fh = nil;
fh = [NSFileHandle fileHandleForLoggingAtPath:nil mode:0644];
- STAssertNil(fh, nil);
+ XCTAssertNil(fh);
fh = [NSFileHandle fileHandleForLoggingAtPath:path_ mode:0644];
- STAssertNotNil(fh, nil);
+ XCTAssertNotNil(fh);
[fh logMessage:@"test 1" level:kGTMLoggerLevelInfo];
[fh logMessage:@"test 2" level:kGTMLoggerLevelInfo];
@@ -583,7 +541,7 @@
// Re-open file and make sure our log messages get appended
fh = [NSFileHandle fileHandleForLoggingAtPath:path_ mode:0644];
- STAssertNotNil(fh, nil);
+ XCTAssertNotNil(fh);
[fh logMessage:@"test 4" level:kGTMLoggerLevelInfo];
[fh logMessage:@"test 5" level:kGTMLoggerLevelInfo];
@@ -594,8 +552,8 @@
NSString *contents = [NSString stringWithContentsOfFile:path_
encoding:NSUTF8StringEncoding
error:&err];
- STAssertNotNil(contents, @"Error loading log file: %@", err);
- STAssertEqualObjects(@"test 1\ntest 2\ntest 3\ntest 4\ntest 5\ntest 6\n", contents, nil);
+ XCTAssertNotNil(contents, @"Error loading log file: %@", err);
+ XCTAssertEqualObjects(@"test 1\ntest 2\ntest 3\ntest 4\ntest 5\ntest 6\n", contents);
}
@end
diff --git a/Foundation/GTMNSAppleEvent+HandlerTest.applescript b/Foundation/GTMNSAppleEvent+HandlerTest.applescript
deleted file mode 100644
index 377d733..0000000
--- a/Foundation/GTMNSAppleEvent+HandlerTest.applescript
+++ /dev/null
@@ -1,60 +0,0 @@
---
--- Copyright 2008 Google Inc.
---
--- Licensed under the Apache License, Version 2.0 (the "License"); you may not
--- use this file except in compliance with the License. You may obtain a copy
--- of the License at
---
--- http://www.apache.org/licenses/LICENSE-2.0
---
--- Unless required by applicable law or agreed to in writing, software
--- distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
--- WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
--- License for the specific language governing permissions and limitations under
--- the License.
---
-
-script parentTestScript
- property parentTestScriptProperty : 6
- on parentTestScriptFunc()
- return "parent"
- end parentTestScriptFunc
-end script
-
-script testScript
- property parent : parentTestScript
- property testScriptProperty : 5
- on testScriptFunc()
- return "child"
- end testScriptFunc
- on open foo
- end open
-end script
-
-property foo : 1
-
-on test()
-end test
-
-on testReturnOne()
- return 1
-end testReturnOne
-
-on testReturnParam(param)
- return param
-end testReturnParam
-
-on testAddParams(param1, param2)
- return param1 + param2
-end testAddParams
-
-on testAdd of a onto b given otherValue:d
- return a + b + d
-end testAdd
-
-on testGetScript()
- return testScript
-end testGetScript
-
-on print
-end print
diff --git a/Foundation/GTMNSAppleEventDescriptor+Foundation.h b/Foundation/GTMNSAppleEventDescriptor+Foundation.h
deleted file mode 100644
index 8e62bcc..0000000
--- a/Foundation/GTMNSAppleEventDescriptor+Foundation.h
+++ /dev/null
@@ -1,102 +0,0 @@
-//
-// GTMNSAppleEventDescriptor+Foundation.h
-//
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import <Foundation/Foundation.h>
-#import "GTMDefines.h"
-#import "GTMFourCharCode.h"
-
-// A category for dealing with NSAppleEventDescriptors and NSArrays.
-@interface NSAppleEventDescriptor (GTMAppleEventDescriptorArrayAdditions)
-// Used to register the types you know how to convert into
-// NSAppleEventDescriptors.
-// See examples in GTMNSAppleEventDescriptor+Foundation.
-// Args:
-// selector - selector to call for any of the types in |types|
-// -(NSAppleEventDesc *)selector_name;
-// types - an std c array of types of length |count|
-// count - number of types in |types|
-+ (void)gtm_registerSelector:(SEL)selector
- forTypes:(DescType*)types
- count:(NSUInteger)count;
-
-// Returns an NSObject for any NSAppleEventDescriptor
-// Uses types registerd by registerSelector:forTypes:count: to determine
-// what type of object to create. If it doesn't know a type, it attempts
-// to return [self stringValue].
-- (id)gtm_objectValue;
-
-// Return an NSArray for an AEList
-// Returns nil on failure.
-- (NSArray*)gtm_arrayValue;
-
-// Return an NSDictionary for an AERecord
-// Returns nil on failure.
-- (NSDictionary*)gtm_dictionaryValue;
-
-// Return an NSNull for a desc of typeNull
-// Returns nil on failure.
-- (NSNull*)gtm_nullValue;
-
-// Return a NSAppleEventDescriptor for a double value.
-+ (NSAppleEventDescriptor*)gtm_descriptorWithDouble:(double)real;
-
-// Return a NSAppleEventDescriptor for a float value.
-+ (NSAppleEventDescriptor*)gtm_descriptorWithFloat:(float)real;
-
-// Return a NSAppleEventDescriptor for a CGFloat value.
-+ (NSAppleEventDescriptor*)gtm_descriptorWithCGFloat:(CGFloat)real;
-
-// Attempt to extract a double value. Returns NAN on error.
-- (double)gtm_doubleValue;
-
-// Attempt to extract a float value. Returns NAN on error.
-- (float)gtm_floatValue;
-
-// Attempt to extract a CGFloat value. Returns NAN on error.
-- (CGFloat)gtm_cgFloatValue;
-
-// Attempt to extract a NSNumber. Returns nil on error.
-- (NSNumber*)gtm_numberValue;
-
-// Attempt to return a GTMFourCharCode. Returns nil on error.
-- (GTMFourCharCode*)gtm_fourCharCodeValue;
-@end
-
-@interface NSObject (GTMAppleEventDescriptorObjectAdditions)
-// A informal protocol that objects can override to return appleEventDescriptors
-// for their type. The default is to return [self description] rolled up
-// in an NSAppleEventDescriptor. Built in support for:
-// NSArray, NSDictionary, NSNull, NSString, NSNumber and NSProcessInfo
-- (NSAppleEventDescriptor*)gtm_appleEventDescriptor;
-@end
-
-@interface NSAppleEventDescriptor (GTMAppleEventDescriptorAdditions)
-// Allows you to send events.
-// Returns YES if send was successful.
-- (BOOL)gtm_sendEventWithMode:(AESendMode)mode
- timeOut:(NSTimeInterval)timeout
- reply:(NSAppleEventDescriptor**)reply;
-@end
-
-@interface GTMFourCharCode (GTMAppleEventDescriptorObjectAdditions)
-
-// if you call gtm_appleEventDescriptor on GTMFourCharCode it will be of
-// type typeType. If you need something different (like typeProperty) this
-// allows you to define the type you want.
-- (NSAppleEventDescriptor*)gtm_appleEventDescriptorOfType:(DescType)type;
-@end
diff --git a/Foundation/GTMNSAppleEventDescriptor+Foundation.m b/Foundation/GTMNSAppleEventDescriptor+Foundation.m
deleted file mode 100644
index f9828d4..0000000
--- a/Foundation/GTMNSAppleEventDescriptor+Foundation.m
+++ /dev/null
@@ -1,536 +0,0 @@
-//
-// GTMNSAppleEventDescriptor+Foundation.m
-//
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMNSAppleEventDescriptor+Foundation.h"
-#import "GTMDebugSelectorValidation.h"
-#import <Carbon/Carbon.h> // Needed Solely For keyASUserRecordFields
-
-// Map of types to selectors.
-static NSMutableDictionary *gTypeMap = nil;
-
-@implementation NSAppleEventDescriptor (GTMAppleEventDescriptorArrayAdditions)
-
-+ (void)gtm_registerSelector:(SEL)selector
- forTypes:(DescType*)types
- count:(NSUInteger)count {
- if (selector && types && count > 0) {
-#if DEBUG
- NSAppleEventDescriptor *desc
- = [[[NSAppleEventDescriptor alloc] initListDescriptor] autorelease];
- GTMAssertSelectorNilOrImplementedWithReturnTypeAndArguments(desc,
- selector,
- @encode(id),
- NULL);
-#endif
- @synchronized(self) {
- if (!gTypeMap) {
- gTypeMap = [[NSMutableDictionary alloc] init];
- }
- NSString *selString = NSStringFromSelector(selector);
- for (NSUInteger i = 0; i < count; ++i) {
- NSNumber *key = [NSNumber numberWithUnsignedInt:types[i]];
- NSString *exists = [gTypeMap objectForKey:key];
- if (exists) {
- _GTMDevLog(@"%@ being replaced with %@ exists for type: %@",
- exists, selString, key);
- }
- [gTypeMap setObject:selString forKey:key];
- }
- }
- }
-}
-
-- (id)gtm_objectValue {
- id value = nil;
-
- // Check our registered types to see if we have anything
- if (gTypeMap) {
- @synchronized(gTypeMap) {
- DescType type = [self descriptorType];
- NSNumber *key = [NSNumber numberWithUnsignedInt:type];
- NSString *selectorString = [gTypeMap objectForKey:key];
- if (selectorString) {
- SEL selector = NSSelectorFromString(selectorString);
- value = [self performSelector:selector];
- } else {
- value = [self stringValue];
- }
- }
- }
- return value;
-}
-
-- (NSArray*)gtm_arrayValue {
- NSUInteger count = [self numberOfItems];
- NSAppleEventDescriptor *workingDesc = self;
- if (count == 0) {
- // Create a list to work with.
- workingDesc = [self coerceToDescriptorType:typeAEList];
- count = [workingDesc numberOfItems];
- }
- NSMutableArray *items = [NSMutableArray arrayWithCapacity:count];
- for (NSUInteger i = 1; i <= count; ++i) {
- NSAppleEventDescriptor *desc = [workingDesc descriptorAtIndex:i];
- id value = [desc gtm_objectValue];
- if (!value) {
- _GTMDevLog(@"Unknown type of descriptor %@", [desc description]);
- return nil;
- }
- [items addObject:value];
- }
- return items;
-}
-
-- (NSDictionary*)gtm_dictionaryValue {
- NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];
- NSAppleEventDescriptor *userRecord = [self descriptorForKeyword:keyASUserRecordFields];
- if (userRecord) {
- NSArray *userItems = [userRecord gtm_arrayValue];
- NSString *key = nil;
- NSString *item;
- GTM_FOREACH_OBJECT(item, userItems) {
- if (key) {
- // Save the pair and reset our state
- [dictionary setObject:item forKey:key];
- key = nil;
- } else {
- // Save it for the next pair
- key = item;
- }
- }
- if (key) {
- _GTMDevLog(@"Got a key %@ with no value in %@", key, userItems);
- return nil;
- }
- } else {
- NSUInteger count = [self numberOfItems];
- for (NSUInteger i = 1; i <= count; ++i) {
- AEKeyword key = [self keywordForDescriptorAtIndex:i];
- NSAppleEventDescriptor *desc = [self descriptorForKeyword:key];
- id value = [desc gtm_objectValue];
- if (!value) {
- _GTMDevLog(@"Unknown type of descriptor %@", [desc description]);
- return nil;
- }
- [dictionary setObject:value
- forKey:[GTMFourCharCode fourCharCodeWithFourCharCode:key]];
- }
- }
- return dictionary;
-}
-
-- (NSNull*)gtm_nullValue {
- return [NSNull null];
-}
-
-+ (NSAppleEventDescriptor*)gtm_descriptorWithDouble:(double)real {
- return [NSAppleEventDescriptor descriptorWithDescriptorType:typeIEEE64BitFloatingPoint
- bytes:&real
- length:sizeof(real)];
-}
-
-+ (NSAppleEventDescriptor*)gtm_descriptorWithFloat:(float)real {
- return [NSAppleEventDescriptor descriptorWithDescriptorType:typeIEEE32BitFloatingPoint
- bytes:&real
- length:sizeof(real)];
-}
-
-
-+ (NSAppleEventDescriptor*)gtm_descriptorWithCGFloat:(CGFloat)real {
-#if CGFLOAT_IS_DOUBLE
- return [self gtm_descriptorWithDouble:real];
-#else
- return [self gtm_descriptorWithFloat:real];
-#endif
-}
-
-- (double)gtm_doubleValue {
- // Be careful modifying this code as Xcode 3.2.5 gcc 4.2.1 (5664) was
- // generating bad code with a previous incarnation.
- NSNumber *number = [self gtm_numberValue];
- if (number) {
- return [number doubleValue];
- }
- return NAN;
-}
-
-- (float)gtm_floatValue {
- NSNumber *number = [self gtm_numberValue];
- if (number) {
- return [number floatValue];
- }
- return NAN;
-}
-
-- (CGFloat)gtm_cgFloatValue {
-#if CGFLOAT_IS_DOUBLE
- return [self gtm_doubleValue];
-#else
- return [self gtm_floatValue];
-#endif
-}
-
-- (NSNumber*)gtm_numberValue {
- typedef struct {
- DescType type;
- SEL selector;
- } TypeSelectorMap;
- TypeSelectorMap typeSelectorMap[] = {
- { typeFalse, @selector(numberWithBool:) },
- { typeTrue, @selector(numberWithBool:) },
- { typeBoolean, @selector(numberWithBool:) },
- { typeSInt16, @selector(numberWithShort:) },
- { typeSInt32, @selector(numberWithInt:) },
- { typeUInt32, @selector(numberWithUnsignedInt:) },
- { typeSInt64, @selector(numberWithLongLong:) },
- { typeIEEE32BitFloatingPoint, @selector(numberWithFloat:) },
- { typeIEEE64BitFloatingPoint, @selector(numberWithDouble:) }
- };
- DescType type = [self descriptorType];
- SEL selector = nil;
- for (size_t i = 0; i < sizeof(typeSelectorMap) / sizeof(TypeSelectorMap); ++i) {
- if (type == typeSelectorMap[i].type) {
- selector = typeSelectorMap[i].selector;
- break;
- }
- }
- NSAppleEventDescriptor *desc = self;
- if (!selector) {
- // COV_NF_START - Don't know how to force this in a unittest
- _GTMDevLog(@"Didn't get a valid selector?");
- desc = [self coerceToDescriptorType:typeIEEE64BitFloatingPoint];
- selector = @selector(numberWithDouble:);
- // COV_NF_END
- }
- NSData *descData = [desc data];
- const void *bytes = [descData bytes];
- if (!bytes) {
- // COV_NF_START - Don't know how to force this in a unittest
- _GTMDevLog(@"Unable to get bytes from %@", desc);
- return nil;
- // COV_NF_END
- }
- Class numberClass = [NSNumber class];
- NSMethodSignature *signature = [numberClass methodSignatureForSelector:selector];
- NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature];
- [invocation setSelector:selector];
- [invocation setArgument:(void*)bytes atIndex:2];
- [invocation setTarget:numberClass];
- [invocation invoke];
- NSNumber *value = nil;
- [invocation getReturnValue:&value];
- return value;
-}
-
-- (GTMFourCharCode*)gtm_fourCharCodeValue {
- return [GTMFourCharCode fourCharCodeWithFourCharCode:[self typeCodeValue]];
-}
-
-- (NSAppleEventDescriptor*)gtm_appleEventDescriptor {
- return self;
-}
-
-@end
-
-@implementation NSObject (GTMAppleEventDescriptorObjectAdditions)
-- (NSAppleEventDescriptor*)gtm_appleEventDescriptor {
- return [NSAppleEventDescriptor descriptorWithString:[self description]];
-}
-@end
-
-@implementation NSArray (GTMAppleEventDescriptorObjectAdditions)
-
-+ (void)load {
- DescType types[] = {
- typeAEList,
- };
-
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- [NSAppleEventDescriptor gtm_registerSelector:@selector(gtm_arrayValue)
- forTypes:types
- count:sizeof(types)/sizeof(DescType)];
- [pool drain];
-}
-
-- (NSAppleEventDescriptor*)gtm_appleEventDescriptor {
- NSAppleEventDescriptor *desc = [NSAppleEventDescriptor listDescriptor];
- NSUInteger count = [self count];
- for (NSUInteger i = 1; i <= count; ++i) {
- id item = [self objectAtIndex:i-1];
- NSAppleEventDescriptor *itemDesc = [item gtm_appleEventDescriptor];
- if (!itemDesc) {
- _GTMDevLog(@"Unable to create Apple Event Descriptor for %@", [self description]);
- return nil;
- }
- [desc insertDescriptor:itemDesc atIndex:i];
- }
- return desc;
-}
-@end
-
-@implementation NSDictionary (GTMAppleEventDescriptorObjectAdditions)
-
-+ (void)load {
- DescType types[] = {
- typeAERecord,
- };
-
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- [NSAppleEventDescriptor gtm_registerSelector:@selector(gtm_dictionaryValue)
- forTypes:types
- count:sizeof(types)/sizeof(DescType)];
- [pool drain];
-}
-
-- (NSAppleEventDescriptor*)gtm_appleEventDescriptor {
- Class keyClass = nil;
- id key = nil;
- GTM_FOREACH_KEY(key, self) {
- if (!keyClass) {
- if ([key isKindOfClass:[GTMFourCharCode class]]) {
- keyClass = [GTMFourCharCode class];
- } else if ([key isKindOfClass:[NSString class]]) {
- keyClass = [NSString class];
- } else {
- _GTMDevLog(@"Keys must be of type NSString or GTMFourCharCode: %@", key);
- return nil;
- }
- }
- if (![key isKindOfClass:keyClass]) {
- _GTMDevLog(@"Keys must be homogenous (first key was of type %@) "
- "and of type NSString or GTMFourCharCode: %@", keyClass, key);
- return nil;
- }
- }
- NSAppleEventDescriptor *desc = [NSAppleEventDescriptor recordDescriptor];
- if ([keyClass isEqual:[NSString class]]) {
- NSMutableArray *array = [NSMutableArray arrayWithCapacity:[self count] * 2];
- GTM_FOREACH_KEY(key, self) {
- [array addObject:key];
- [array addObject:[self objectForKey:key]];
- }
- NSAppleEventDescriptor *userRecord = [array gtm_appleEventDescriptor];
- if (!userRecord) {
- return nil;
- }
- [desc setDescriptor:userRecord forKeyword:keyASUserRecordFields];
- } else {
- GTM_FOREACH_KEY(key, self) {
- id value = [self objectForKey:key];
- NSAppleEventDescriptor *valDesc = [value gtm_appleEventDescriptor];
- if (!valDesc) {
- return nil;
- }
- [desc setDescriptor:valDesc forKeyword:[key fourCharCode]];
- }
- }
- return desc;
-}
-
-@end
-
-@implementation NSNull (GTMAppleEventDescriptorObjectAdditions)
-+ (void)load {
- DescType types[] = {
- typeNull
- };
-
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- [NSAppleEventDescriptor gtm_registerSelector:@selector(gtm_nullValue)
- forTypes:types
- count:sizeof(types)/sizeof(DescType)];
- [pool drain];
-}
-
-- (NSAppleEventDescriptor*)gtm_appleEventDescriptor {
- return [NSAppleEventDescriptor nullDescriptor];
-}
-@end
-
-@implementation NSString (GTMAppleEventDescriptorObjectAdditions)
-
-+ (void)load {
- DescType types[] = {
- typeUTF16ExternalRepresentation,
- typeUnicodeText,
- typeUTF8Text,
- typeCString,
- typePString,
- typeChar,
- typeIntlText };
-
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- [NSAppleEventDescriptor gtm_registerSelector:@selector(stringValue)
- forTypes:types
- count:sizeof(types)/sizeof(DescType)];
- [pool drain];
-}
-
-- (NSAppleEventDescriptor*)gtm_appleEventDescriptor {
- return [NSAppleEventDescriptor descriptorWithString:self];
-}
-@end
-
-@implementation NSNumber (GTMAppleEventDescriptorObjectAdditions)
-
-+ (void)load {
- DescType types[] = {
- typeTrue,
- typeFalse,
- typeBoolean,
- typeSInt16,
- typeSInt32,
- typeUInt32,
- typeSInt64,
- typeIEEE32BitFloatingPoint,
- typeIEEE64BitFloatingPoint };
-
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- [NSAppleEventDescriptor gtm_registerSelector:@selector(gtm_numberValue)
- forTypes:types
- count:sizeof(types)/sizeof(DescType)];
- [pool drain];
-}
-
-- (NSAppleEventDescriptor*)gtm_appleEventDescriptor {
- const char *type = [self objCType];
- if (!type || strlen(type) != 1) return nil;
-
- DescType desiredType = typeNull;
- NSAppleEventDescriptor *desc = nil;
- switch (type[0]) {
- // COV_NF_START
- // I can't seem to convince objcType to return something of this type
- case 'B':
- desc = [NSAppleEventDescriptor descriptorWithBoolean:[self boolValue]];
- break;
- // COV_NF_END
-
- case 'c':
- case 'C':
- case 's':
- case 'S':
- desiredType = typeSInt16;
- break;
-
- case 'i':
- case 'l':
- desiredType = typeSInt32;
- break;
-
- // COV_NF_START
- // I can't seem to convince objcType to return something of this type
- case 'I':
- case 'L':
- desiredType = typeUInt32;
- break;
- // COV_NF_END
-
- case 'q':
- case 'Q':
- desiredType = typeSInt64;
- break;
-
- case 'f':
- desiredType = typeIEEE32BitFloatingPoint;
- break;
-
- case 'd':
- default:
- desiredType = typeIEEE64BitFloatingPoint;
- break;
- }
-
- if (!desc) {
- desc = [NSAppleEventDescriptor gtm_descriptorWithDouble:[self doubleValue]];
- if (desc && desiredType != typeIEEE64BitFloatingPoint) {
- desc = [desc coerceToDescriptorType:desiredType];
- }
- }
- return desc;
-}
-
-@end
-
-@implementation NSProcessInfo (GTMAppleEventDescriptorObjectAdditions)
-
-- (NSAppleEventDescriptor*)gtm_appleEventDescriptor {
- ProcessSerialNumber psn = { 0, kCurrentProcess };
- return [NSAppleEventDescriptor descriptorWithDescriptorType:typeProcessSerialNumber
- bytes:&psn
- length:sizeof(ProcessSerialNumber)];
-}
-
-@end
-
-@implementation GTMFourCharCode (GTMAppleEventDescriptorObjectAdditions)
-
-+ (void)load {
- DescType types[] = {
- typeType,
- typeKeyword,
- typeApplSignature,
- typeEnumerated,
- };
-
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- [NSAppleEventDescriptor gtm_registerSelector:@selector(gtm_fourCharCodeValue)
- forTypes:types
- count:sizeof(types)/sizeof(DescType)];
- [pool drain];
-}
-
-- (NSAppleEventDescriptor*)gtm_appleEventDescriptor {
- return [self gtm_appleEventDescriptorOfType:typeType];
-}
-
-- (NSAppleEventDescriptor*)gtm_appleEventDescriptorOfType:(DescType)type {
- FourCharCode code = [self fourCharCode];
- return [NSAppleEventDescriptor descriptorWithDescriptorType:type
- bytes:&code
- length:sizeof(code)];
-}
-@end
-
-@implementation NSAppleEventDescriptor (GTMAppleEventDescriptorAdditions)
-
-- (BOOL)gtm_sendEventWithMode:(AESendMode)mode
- timeOut:(NSTimeInterval)timeout
- reply:(NSAppleEventDescriptor**)reply {
- BOOL isGood = YES;
- AppleEvent replyEvent = { typeNull, NULL };
- OSStatus err = AESendMessage([self aeDesc], &replyEvent, mode, timeout * 60);
- NSAppleEventDescriptor *replyDesc
- = [[[NSAppleEventDescriptor alloc] initWithAEDescNoCopy:&replyEvent] autorelease];
- if (err) {
- isGood = NO;
- _GTMDevLog(@"Unable to send message: %@ %d", self, (int)err);
- }
- if (isGood) {
- NSAppleEventDescriptor *errorDesc = [replyDesc descriptorForKeyword:keyErrorNumber];
- if (errorDesc && [errorDesc int32Value]) {
- isGood = NO;
- }
- }
- if (reply) {
- *reply = replyDesc;
- }
- return isGood;
-}
-
-@end
diff --git a/Foundation/GTMNSAppleEventDescriptor+FoundationTest.m b/Foundation/GTMNSAppleEventDescriptor+FoundationTest.m
deleted file mode 100644
index f346e99..0000000
--- a/Foundation/GTMNSAppleEventDescriptor+FoundationTest.m
+++ /dev/null
@@ -1,643 +0,0 @@
-//
-// GTMNSAppleEventDescriptor+FoundationTest.m
-//
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMSenTestCase.h"
-#import <Carbon/Carbon.h>
-#import "GTMNSAppleEventDescriptor+Foundation.h"
-#import "GTMFourCharCode.h"
-#import "GTMUnitTestDevLog.h"
-
-@interface GTMNSAppleEventDescriptor_TestObject : NSObject
-@end
-
-@implementation GTMNSAppleEventDescriptor_TestObject
-
-- (NSAppleEventDescriptor*)gtm_appleEventDescriptor {
- return nil;
-}
-
-@end
-
-@interface GTMNSAppleEventDescriptor_FoundationTest : GTMTestCase {
- BOOL gotEvent_;
-}
-- (void)handleEvent:(NSAppleEventDescriptor*)event
- withReply:(NSAppleEventDescriptor*)reply;
-- (void)handleEvent:(NSAppleEventDescriptor*)event
- withError:(NSAppleEventDescriptor*)reply;
-
-@end
-
-@implementation GTMNSAppleEventDescriptor_FoundationTest
-- (void)testRegisterSelectorForTypesCount {
- // Weird edge casey stuff.
- // + (void)registerSelector:(SEL)selector
- // forTypes:(DescType*)types count:(int)count
- // is tested heavily by the other NSAppleEventDescriptor+foo categories.
- DescType type;
- [NSAppleEventDescriptor gtm_registerSelector:nil
- forTypes:&type count:1];
- [NSAppleEventDescriptor gtm_registerSelector:@selector(initListDescriptor)
- forTypes:nil count:1];
- [NSAppleEventDescriptor gtm_registerSelector:@selector(initListDescriptor)
- forTypes:&type count:0];
- // Test the duplicate case
- [NSAppleEventDescriptor gtm_registerSelector:@selector(initListDescriptor)
- forTypes:&type count:1];
- [GTMUnitTestDevLog expectPattern:@"initListDescriptor being replaced with "
- "initListDescriptor exists for type: [0-9]+"];
- [NSAppleEventDescriptor gtm_registerSelector:@selector(initListDescriptor)
- forTypes:&type count:1];
-}
-
-- (void)testObjectValue {
- // - (void)testObjectValue is tested heavily by the other
- // NSAppleEventDescriptor+foo categories.
- long data = 1;
- // v@#f is just a bogus descriptor type that we don't recognize.
- NSAppleEventDescriptor *desc
- = [NSAppleEventDescriptor descriptorWithDescriptorType:'v@#f'
- bytes:&data
- length:sizeof(data)];
- id value = [desc gtm_objectValue];
- STAssertNil(value, nil);
-}
-
-- (void)testAppleEventDescriptor {
- // - (NSAppleEventDescriptor*)appleEventDescriptor is tested heavily by the
- // other NSAppleEventDescriptor+foo categories.
- NSAppleEventDescriptor *desc = [self gtm_appleEventDescriptor];
- STAssertNotNil(desc, nil);
- STAssertEquals([desc descriptorType], (DescType)typeUnicodeText, nil);
-}
-
-- (void)testDescriptorWithArrayAndArrayValue {
- // Test empty array
- NSAppleEventDescriptor *desc = [[NSArray array] gtm_appleEventDescriptor];
- STAssertNotNil(desc, nil);
- STAssertEquals([desc numberOfItems], (NSInteger)0, nil);
-
- // Complex array
- NSArray *array = [NSArray arrayWithObjects:
- [NSNumber numberWithInt:4],
- @"foo",
- [NSNumber numberWithInt:2],
- @"bar",
- [NSArray arrayWithObjects:
- @"bam",
- [NSArray arrayWithObject:[NSNumber numberWithFloat:4.2f]],
- nil],
- nil];
- STAssertNotNil(array, nil);
- desc = [array gtm_appleEventDescriptor];
- STAssertNotNil(desc, nil);
- NSArray *array2 = [desc gtm_objectValue];
- STAssertNotNil(array2, nil);
- NSArray *array3 = [desc gtm_arrayValue];
- STAssertNotNil(array3, nil);
- STAssertTrue([array isEqualToArray:array2],
- @"array: %@\narray2: %@\ndesc: %@",
- [array description], [array2 description], [desc description]);
- STAssertTrue([array2 isEqualToArray:array3],
- @"array: %@\narray2: %@\ndesc: %@",
- [array description], [array2 description], [desc description]);
-
- // Test a single object
- array = [NSArray arrayWithObject:@"foo"];
- desc = [NSAppleEventDescriptor descriptorWithString:@"foo"];
- STAssertNotNil(desc, nil);
- array2 = [desc gtm_arrayValue];
- STAssertTrue([array isEqualToArray:array2],
- @"array: %@\narray2: %@\ndesc: %@",
- [array description], [array2 description], [desc description]);
-
- // Something that doesn't know how to register itself.
- GTMNSAppleEventDescriptor_TestObject *obj
- = [[[GTMNSAppleEventDescriptor_TestObject alloc] init] autorelease];
- [GTMUnitTestDevLog expectPattern:@"Unable to create Apple Event Descriptor for .*"];
- desc = [[NSArray arrayWithObject:obj] gtm_appleEventDescriptor];
- STAssertNil(desc, @"Should be nil");
-
- // A list containing something we don't know how to deal with
- desc = [NSAppleEventDescriptor listDescriptor];
- NSAppleEventDescriptor *desc2
- = [NSAppleEventDescriptor descriptorWithDescriptorType:'@!@#'
- bytes:&desc
- length:sizeof(desc)];
- [GTMUnitTestDevLog expectPattern:@"Unknown type of descriptor "
- "<NSAppleEventDescriptor: '@!@#'\\(\\$[0-9A-F]*\\$\\)>"];
- [desc insertDescriptor:desc2 atIndex:0];
- array = [desc gtm_objectValue];
- STAssertEquals([array count], (NSUInteger)0, @"Should have 0 items");
-}
-
-- (void)testDescriptorWithDictionaryAndDictionaryValue {
- // Test empty dictionary
- NSAppleEventDescriptor *desc
- = [[NSDictionary dictionary] gtm_appleEventDescriptor];
- STAssertNotNil(desc, nil);
- STAssertEquals([desc numberOfItems], (NSInteger)0, nil);
-
- // Complex dictionary
- NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:
- @"fooobject",
- @"fookey",
- @"barobject",
- @"barkey",
- [NSDictionary dictionaryWithObjectsAndKeys:
- @"january",
- [GTMFourCharCode fourCharCodeWithFourCharCode:cJanuary],
- @"february",
- [GTMFourCharCode fourCharCodeWithFourCharCode:cFebruary],
- nil],
- @"dictkey",
- nil];
- STAssertNotNil(dictionary, nil);
- desc = [dictionary gtm_appleEventDescriptor];
- STAssertNotNil(desc, nil);
- NSDictionary *dictionary2 = [desc gtm_objectValue];
- STAssertNotNil(dictionary2, nil);
- NSDictionary *dictionary3 = [desc gtm_dictionaryValue];
- STAssertNotNil(dictionary3, nil);
- STAssertEqualObjects(dictionary, dictionary2,
- @"desc: %@", [desc description]);
- STAssertEqualObjects(dictionary2, dictionary3,
- @"desc: %@", [desc description]);
-
- // Something that doesn't know how to register itself.
- GTMNSAppleEventDescriptor_TestObject *obj
- = [[[GTMNSAppleEventDescriptor_TestObject alloc] init] autorelease];
- [GTMUnitTestDevLog expectPattern:@"Unable to create Apple Event Descriptor for .*"];
- desc = [[NSDictionary dictionaryWithObject:obj
- forKey:@"foo"] gtm_appleEventDescriptor];
- STAssertNil(desc, @"Should be nil");
-
- GTMFourCharCode *fcc = [GTMFourCharCode fourCharCodeWithFourCharCode:cJanuary];
- desc = [[NSDictionary dictionaryWithObject:obj
- forKey:fcc] gtm_appleEventDescriptor];
- STAssertNil(desc, @"Should be nil");
-
- // A list containing something we don't know how to deal with
- desc = [NSAppleEventDescriptor recordDescriptor];
- NSAppleEventDescriptor *desc2
- = [NSAppleEventDescriptor descriptorWithDescriptorType:'@!@#'
- bytes:&desc
- length:sizeof(desc)];
- [desc setDescriptor:desc2 forKeyword:cJanuary];
- [GTMUnitTestDevLog expectPattern:@"Unknown type of descriptor "
- "<NSAppleEventDescriptor: '@!@#'\\(\\$[0-9A-F]+\\$\\)>"];
- dictionary = [desc gtm_objectValue];
- STAssertEquals([dictionary count], (NSUInteger)0, @"Should have 0 items");
-
- // A bad dictionary
- dictionary = [NSDictionary dictionaryWithObjectsAndKeys:
- @"foo",
- [GTMFourCharCode fourCharCodeWithFourCharCode:'APPL'],
- @"bam",
- @"bar",
- nil];
- STAssertNotNil(dictionary, nil);
- // I cannot use expectString here to the exact string because interestingly
- // dictionaries in 64 bit enumerate in a different order from dictionaries
- // on 32 bit. This is the closest pattern I can match.
- [GTMUnitTestDevLog expectPattern:@"Keys must be homogenous .*"];
- desc = [dictionary gtm_appleEventDescriptor];
- STAssertNil(desc, nil);
-
- // Another bad dictionary
- dictionary = [NSDictionary dictionaryWithObjectsAndKeys:
- @"foo",
- [NSNumber numberWithInt:4],
- @"bam",
- @"bar",
- nil];
- STAssertNotNil(dictionary, nil);
- // I cannot use expectString here to the exact string because interestingly
- // dictionaries in 64 bit enumerate in a different order from dictionaries
- // on 32 bit. This is the closest pattern I can match.
- [GTMUnitTestDevLog expectPattern:@"Keys must be .*"];
- desc = [dictionary gtm_appleEventDescriptor];
- STAssertNil(desc, nil);
-
- // A bad descriptor
- desc = [NSAppleEventDescriptor recordDescriptor];
- STAssertNotNil(desc, @"");
- NSArray *array = [NSArray arrayWithObjects:@"foo", @"bar", @"bam", nil];
- STAssertNotNil(array, @"");
- NSAppleEventDescriptor *userRecord = [array gtm_appleEventDescriptor];
- STAssertNotNil(userRecord, @"");
- [desc setDescriptor:userRecord forKeyword:keyASUserRecordFields];
- [GTMUnitTestDevLog expectPattern:@"Got a key bam with no value in \\(.*"];
- dictionary = [desc gtm_objectValue];
- STAssertNil(dictionary, @"Should be nil");
-}
-
-- (void)testDescriptorWithNull {
- // Test Null
- NSNull *null = [NSNull null];
- NSAppleEventDescriptor *desc = [null gtm_appleEventDescriptor];
- STAssertNotNil(desc, nil);
- NSNull *null2 = [desc gtm_objectValue];
- STAssertNotNil(null2, nil);
- NSNull *null3 = [desc gtm_nullValue];
- STAssertNotNil(null2, nil);
- STAssertEqualObjects(null, null2,
- @"null: %@\null2: %@\ndesc: %@",
- [null description], [null2 description],
- [desc description]);
- STAssertEqualObjects(null, null3,
- @"null: %@\null3: %@\ndesc: %@",
- [null description], [null3 description],
- [desc description]);
-}
-
-- (void)testDescriptorWithString {
- // Test empty String
- NSAppleEventDescriptor *desc = [[NSString string] gtm_appleEventDescriptor];
- STAssertNotNil(desc, nil);
-
- // Test String
- NSString *string = @"Ratatouille!";
- desc = [string gtm_appleEventDescriptor];
- STAssertNotNil(desc, nil);
- NSString *string2 = [desc gtm_objectValue];
- STAssertNotNil(string2, nil);
- STAssertEqualObjects(string, string2,
- @"string: %@\nstring: %@\ndesc: %@",
- [string description], [string2 description], [desc description]);
-
-}
-
-- (void)testDescriptorWithNumberAndNumberValue {
- // There's really no good way to make this into a loop sadly due
- // to me having to pass a pointer of bytes to NSInvocation as an argument.
- // I want the compiler to convert my int to the appropriate type.
-
- NSNumber *original = [NSNumber numberWithBool:YES];
- STAssertNotNil(original, @"Value: YES");
- NSAppleEventDescriptor *desc = [original gtm_appleEventDescriptor];
- STAssertNotNil(desc, @"Value: YES");
- id returned = [desc gtm_objectValue];
- STAssertNotNil(returned, @"Value: YES");
- STAssertTrue([returned isKindOfClass:[NSNumber class]], @"Value: YES");
- STAssertEqualObjects(original, returned, @"Value: YES");
- desc = [desc coerceToDescriptorType:typeBoolean];
- NSNumber *number = [desc gtm_numberValue];
- STAssertEqualObjects(number, original, @"Value: YES");
-
- original = [NSNumber numberWithBool:NO];
- STAssertNotNil(original, @"Value: NO");
- desc = [original gtm_appleEventDescriptor];
- STAssertNotNil(desc, @"Value: NO");
- returned = [desc gtm_objectValue];
- STAssertNotNil(returned, @"Value: NO");
- STAssertTrue([returned isKindOfClass:[NSNumber class]], @"Value: NO");
- STAssertEqualObjects(original, returned, @"Value: NO");
-
- sranddev();
- double value = rand();
-
- original = [NSNumber numberWithChar:value];
- STAssertNotNil(original, @"Value: %g", value);
- desc = [original gtm_appleEventDescriptor];
- STAssertNotNil(desc, @"Value: %g", value);
- returned = [desc gtm_objectValue];
- STAssertNotNil(returned, @"Value: %g", value);
- STAssertTrue([returned isKindOfClass:[NSNumber class]], @"Value: %g", value);
- STAssertEqualObjects(original, returned, @"Value: %g", value);
-
- value = rand();
- original = [NSNumber numberWithUnsignedChar:value];
- STAssertNotNil(original, @"Value: %g", value);
- desc = [original gtm_appleEventDescriptor];
- STAssertNotNil(desc, @"Value: %g", value);
- returned = [desc gtm_objectValue];
- STAssertNotNil(returned, @"Value: %g", value);
- STAssertTrue([returned isKindOfClass:[NSNumber class]], @"Value: %g", value);
- STAssertEqualObjects(original, returned, @"Value: %g", value);
-
- value = rand();
- original = [NSNumber numberWithShort:value];
- STAssertNotNil(original, @"Value: %g", value);
- desc = [original gtm_appleEventDescriptor];
- STAssertNotNil(desc, @"Value: %g", value);
- returned = [desc gtm_objectValue];
- STAssertNotNil(returned, @"Value: %g", value);
- STAssertTrue([returned isKindOfClass:[NSNumber class]], @"Value: %g", value);
- STAssertEqualObjects(original, returned, @"Value: %g", value);
-
- value = rand();
- original = [NSNumber numberWithUnsignedShort:value];
- STAssertNotNil(original, @"Value: %g", value);
- desc = [original gtm_appleEventDescriptor];
- STAssertNotNil(desc, @"Value: %g", value);
- returned = [desc gtm_objectValue];
- STAssertNotNil(returned, @"Value: %g", value);
- STAssertTrue([returned isKindOfClass:[NSNumber class]], @"Value: %g", value);
- STAssertEqualObjects(original, returned, @"Value: %g", value);
-
- value = rand();
- original = [NSNumber numberWithInt:(int)value];
- STAssertNotNil(original, @"Value: %g", value);
- desc = [original gtm_appleEventDescriptor];
- STAssertNotNil(desc, @"Value: %g", value);
- returned = [desc gtm_objectValue];
- STAssertNotNil(returned, @"Value: %g", value);
- STAssertTrue([returned isKindOfClass:[NSNumber class]], @"Value: %g", value);
- STAssertEqualObjects(original, returned, @"Value: %g", value);
-
- value = rand();
- original = [NSNumber numberWithUnsignedInt:(unsigned int)value];
- STAssertNotNil(original, @"Value: %g", value);
- desc = [original gtm_appleEventDescriptor];
- STAssertNotNil(desc, @"Value: %g", value);
- returned = [desc gtm_objectValue];
- STAssertNotNil(returned, @"Value: %g", value);
- STAssertTrue([returned isKindOfClass:[NSNumber class]], @"Value: %g", value);
- STAssertEqualObjects(original, returned, @"Value: %g", value);
-
- value = rand();
- original = [NSNumber numberWithLong:value];
- STAssertNotNil(original, @"Value: %g", value);
- desc = [original gtm_appleEventDescriptor];
- STAssertNotNil(desc, @"Value: %g", value);
- returned = [desc gtm_objectValue];
- STAssertNotNil(returned, @"Value: %g", value);
- STAssertTrue([returned isKindOfClass:[NSNumber class]], @"Value: %g", value);
- STAssertEqualObjects(original, returned, @"Value: %g", value);
-
- value = rand();
- original = [NSNumber numberWithUnsignedLong:value];
- STAssertNotNil(original, @"Value: %g", value);
- desc = [original gtm_appleEventDescriptor];
- STAssertNotNil(desc, @"Value: %g", value);
- returned = [desc gtm_objectValue];
- STAssertNotNil(returned, @"Value: %g", value);
- STAssertTrue([returned isKindOfClass:[NSNumber class]], @"Value: %g", value);
- STAssertEqualObjects(original, returned, @"Value: %g", value);
-
- value = rand();
- original = [NSNumber numberWithLongLong:value];
- STAssertNotNil(original, @"Value: %g", value);
- desc = [original gtm_appleEventDescriptor];
- STAssertNotNil(desc, @"Value: %g", value);
- returned = [desc gtm_objectValue];
- STAssertNotNil(returned, @"Value: %g", value);
- STAssertTrue([returned isKindOfClass:[NSNumber class]], @"Value: %g", value);
- STAssertEqualObjects(original, returned, @"Value: %g", value);
-
- value = rand();
- original = [NSNumber numberWithUnsignedLongLong:value];
- STAssertNotNil(original, @"Value: %g", value);
- desc = [original gtm_appleEventDescriptor];
- STAssertNotNil(desc, @"Value: %g", value);
- returned = [desc gtm_objectValue];
- STAssertNotNil(returned, @"Value: %g", value);
- STAssertTrue([returned isKindOfClass:[NSNumber class]], @"Value: %g", value);
- STAssertEqualObjects(original, returned, @"Value: %g", value);
-
- float floatA = rand();
- float floatB = rand();
- value = floatA / floatB;
- original = [NSNumber numberWithFloat:(float)value];
- STAssertNotNil(original, @"Value: %g", value);
- desc = [original gtm_appleEventDescriptor];
- STAssertNotNil(desc, @"Value: %g", value);
- returned = [desc gtm_objectValue];
- STAssertNotNil(returned, @"Value: %g", value);
- STAssertTrue([returned isKindOfClass:[NSNumber class]], @"Value: %g", value);
- STAssertEqualObjects(original, returned, @"Value: %g", value);
-
- double doubleA = rand();
- double doubleB = rand();
- value = doubleA / doubleB;
- original = [NSNumber numberWithDouble:value];
- STAssertNotNil(original, @"Value: %g", value);
- desc = [original gtm_appleEventDescriptor];
- STAssertNotNil(desc, @"Value: %g", value);
- returned = [desc gtm_objectValue];
- STAssertNotNil(returned, @"Value: %g", value);
- STAssertTrue([returned isKindOfClass:[NSNumber class]], @"Value: %g", value);
- STAssertEqualObjects(original, returned, @"Value: %g", value);
-
- value = rand();
- original = [NSNumber numberWithBool:value];
- STAssertNotNil(original, @"Value: %g", value);
- desc = [original gtm_appleEventDescriptor];
- STAssertNotNil(desc, @"Value: %g", value);
- returned = [desc gtm_objectValue];
- STAssertNotNil(returned, @"Value: %g", value);
- STAssertTrue([returned isKindOfClass:[NSNumber class]], @"Value: %g", value);
- STAssertEqualObjects(original, returned, @"Value: %g", value);
-
- value = NAN;
- original = [NSNumber numberWithDouble:value];
- STAssertNotNil(original, @"Value: %g", value);
- desc = [original gtm_appleEventDescriptor];
- STAssertNotNil(desc, @"Value: %g", value);
- returned = [desc gtm_objectValue];
- STAssertNotNil(returned, @"Value: %g", value);
- STAssertTrue([returned isKindOfClass:[NSNumber class]], @"Value: %g", value);
- STAssertEqualObjects(original, returned, @"Value: %g", value);
-
- value = INFINITY;
- original = [NSNumber numberWithDouble:value];
- STAssertNotNil(original, @"Value: %g", value);
- desc = [original gtm_appleEventDescriptor];
- STAssertNotNil(desc, @"Value: %g", value);
- returned = [desc gtm_objectValue];
- STAssertNotNil(returned, @"Value: %g", value);
- STAssertTrue([returned isKindOfClass:[NSNumber class]], @"Value: %g", value);
- STAssertEqualObjects(original, returned, @"Value: %g", value);
-
- value = -0.0;
- original = [NSNumber numberWithDouble:value];
- STAssertNotNil(original, @"Value: %g", value);
- desc = [original gtm_appleEventDescriptor];
- STAssertNotNil(desc, @"Value: %g", value);
- returned = [desc gtm_objectValue];
- STAssertNotNil(returned, @"Value: %g", value);
- STAssertTrue([returned isKindOfClass:[NSNumber class]], @"Value: %g", value);
- STAssertEqualObjects(original, returned, @"Value: %g", value);
-
- value = -INFINITY;
- original = [NSNumber numberWithDouble:value];
- STAssertNotNil(original, @"Value: %g", value);
- desc = [original gtm_appleEventDescriptor];
- STAssertNotNil(desc, @"Value: %g", value);
- returned = [desc gtm_objectValue];
- STAssertNotNil(returned, @"Value: %g", value);
- STAssertTrue([returned isKindOfClass:[NSNumber class]], @"Value: %g", value);
- STAssertEqualObjects(original, returned, @"Value: %g", value);
-}
-
-- (void)testDescriptorWithDoubleAndDoubleValue {
- sranddev();
- for (int i = 0; i < 1000; ++i) {
- double value1 = rand();
- double value2 = rand();
- double value = value1 / value2;
- NSAppleEventDescriptor *desc
- = [NSAppleEventDescriptor gtm_descriptorWithDouble:value];
- STAssertNotNil(desc, @"Value: %g", value);
- double returnedValue = [desc gtm_doubleValue];
- STAssertEquals(value, returnedValue, @"Value: %g", value);
- }
-
- double specialCases[] = { 0.0f, __DBL_MIN__, __DBL_EPSILON__, INFINITY, NAN };
- for (size_t i = 0; i < sizeof(specialCases) / sizeof(double); ++i) {
- double value = specialCases[i];
- NSAppleEventDescriptor *desc
- = [NSAppleEventDescriptor gtm_descriptorWithDouble:value];
- STAssertNotNil(desc, @"Value: %g", value);
- double returnedValue = [desc gtm_doubleValue];
- STAssertEquals(value, returnedValue, @"Value: %g", value);
- }
-}
-
-- (void)testDescriptorWithFloatAndFloatValue {
- sranddev();
- for (int i = 0; i < 1000; ++i) {
- float value1 = rand();
- float value2 = rand();
- float value = value1 / value2;
- NSAppleEventDescriptor *desc
- = [NSAppleEventDescriptor gtm_descriptorWithFloat:value];
- STAssertNotNil(desc, @"Value: %f", value);
- float returnedValue = [desc gtm_floatValue];
- STAssertEquals(value, returnedValue, @"Value: %f", value);
- }
-
- float specialCases[] = { 0.0f, FLT_MIN, FLT_MAX, FLT_EPSILON, INFINITY, NAN };
- for (size_t i = 0; i < sizeof(specialCases) / sizeof(float); ++i) {
- float value = specialCases[i];
- NSAppleEventDescriptor *desc
- = [NSAppleEventDescriptor gtm_descriptorWithFloat:value];
- STAssertNotNil(desc, @"Value: %f", value);
- float returnedValue = [desc gtm_floatValue];
- STAssertEquals(value, returnedValue, @"Value: %f", value);
- }
-}
-
-- (void)testDescriptorWithCGFloatAndCGFloatValue {
- sranddev();
- for (int i = 0; i < 1000; ++i) {
- CGFloat value1 = rand();
- CGFloat value2 = rand();
- CGFloat value = value1 / value2;
- NSAppleEventDescriptor *desc
- = [NSAppleEventDescriptor gtm_descriptorWithCGFloat:value];
- STAssertNotNil(desc, @"Value: %g", (double)value);
- CGFloat returnedValue = [desc gtm_cgFloatValue];
- STAssertEquals(value, returnedValue, @"Value: %g", (double)value);
- }
-
- CGFloat specialCases[] = { 0.0f, CGFLOAT_MIN, CGFLOAT_MAX, NAN };
- for (size_t i = 0; i < sizeof(specialCases) / sizeof(CGFloat); ++i) {
- CGFloat value = specialCases[i];
- NSAppleEventDescriptor *desc
- = [NSAppleEventDescriptor gtm_descriptorWithCGFloat:value];
- STAssertNotNil(desc, @"Value: %g", (double)value);
- CGFloat returnedValue = [desc gtm_cgFloatValue];
- STAssertEquals(value, returnedValue, @"Value: %g", (double)value);
- }
-}
-
-- (void)testDescriptorWithGTMFourCharCode {
- GTMFourCharCode *fcc = [GTMFourCharCode fourCharCodeWithFourCharCode:'APPL'];
- STAssertNotNil(fcc, nil);
- NSAppleEventDescriptor *desc = [fcc gtm_appleEventDescriptor];
- STAssertNotNil(desc, nil);
- GTMFourCharCode *fcc2 = [desc gtm_objectValue];
- STAssertNotNil(fcc2, nil);
- STAssertEqualObjects(fcc, fcc2, nil);
- STAssertEquals([desc descriptorType], (DescType)typeType, nil);
- desc = [fcc gtm_appleEventDescriptorOfType:typeKeyword];
- STAssertNotNil(desc, nil);
- fcc2 = [desc gtm_objectValue];
- STAssertNotNil(fcc2, nil);
- STAssertEqualObjects(fcc, fcc2, nil);
- STAssertEquals([desc descriptorType], (DescType)typeKeyword, nil);
-}
-
-- (void)testDescriptorWithDescriptor {
- NSAppleEventDescriptor *desc
- = [NSAppleEventDescriptor descriptorWithString:@"foo"];
- NSAppleEventDescriptor *desc2 = [desc gtm_appleEventDescriptor];
- STAssertEqualObjects(desc, desc2, nil);
-}
-
-- (void)handleEvent:(NSAppleEventDescriptor*)event
- withReply:(NSAppleEventDescriptor*)reply {
- gotEvent_ = YES;
- NSAppleEventDescriptor *answer = [NSAppleEventDescriptor descriptorWithInt32:1];
- [reply setDescriptor:answer forKeyword:keyDirectObject];
-}
-
-- (void)handleEvent:(NSAppleEventDescriptor*)event
- withError:(NSAppleEventDescriptor*)error {
- gotEvent_ = YES;
- NSAppleEventDescriptor *answer = [NSAppleEventDescriptor descriptorWithInt32:1];
- [error setDescriptor:answer forKeyword:keyErrorNumber];
-}
-
-- (void)testSend {
- const AEEventClass eventClass = 'Fooz';
- const AEEventID eventID = 'Ball';
- NSAppleEventManager *mgr = [NSAppleEventManager sharedAppleEventManager];
- [mgr setEventHandler:self
- andSelector:@selector(handleEvent:withReply:)
- forEventClass:eventClass
- andEventID:'Ball'];
- NSAppleEventDescriptor *currentProcess
- = [[NSProcessInfo processInfo] gtm_appleEventDescriptor];
- NSAppleEventDescriptor *event
- = [NSAppleEventDescriptor appleEventWithEventClass:eventClass
- eventID:eventID
- targetDescriptor:currentProcess
- returnID:kAutoGenerateReturnID
- transactionID:kAnyTransactionID];
- gotEvent_ = NO;
- NSAppleEventDescriptor *reply;
- BOOL goodEvent = [event gtm_sendEventWithMode:kAEWaitReply timeOut:60 reply:&reply];
- [mgr removeEventHandlerForEventClass:eventClass andEventID:eventID];
- STAssertTrue(goodEvent, @"bad event?");
- STAssertTrue(gotEvent_, @"Handler not called");
- NSAppleEventDescriptor *value = [reply descriptorForKeyword:keyDirectObject];
- STAssertEquals([value int32Value], (SInt32)1, @"didn't get reply");
-
-
- gotEvent_ = NO;
- [GTMUnitTestDevLog expectString:@"Unable to send message: "
- "<NSAppleEventDescriptor: 'Fooz'\\'Ball'{ }> -1708"];
- goodEvent = [event gtm_sendEventWithMode:kAEWaitReply timeOut:60 reply:&reply];
- STAssertFalse(goodEvent, @"good event?");
- STAssertFalse(gotEvent_, @"Handler called?");
-
- [mgr setEventHandler:self
- andSelector:@selector(handleEvent:withError:)
- forEventClass:eventClass
- andEventID:eventID];
- gotEvent_ = NO;
- goodEvent = [event gtm_sendEventWithMode:kAEWaitReply timeOut:60 reply:&reply];
- STAssertFalse(goodEvent, @"good event?");
- STAssertTrue(gotEvent_, @"Handler not called?");
- [mgr removeEventHandlerForEventClass:eventClass andEventID:eventID];
-}
-
-@end
diff --git a/Foundation/GTMNSAppleEventDescriptor+Handler.h b/Foundation/GTMNSAppleEventDescriptor+Handler.h
deleted file mode 100644
index 29c9c1e..0000000
--- a/Foundation/GTMNSAppleEventDescriptor+Handler.h
+++ /dev/null
@@ -1,45 +0,0 @@
-//
-// GTMNSAppleEventDescriptor+Handler.h
-//
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import <Foundation/Foundation.h>
-#import "GTMDefines.h"
-
-@interface NSAppleEventDescriptor (GTMAppleEventDescriptorHandlerAdditions)
-+ (id)gtm_descriptorWithPositionalHandler:(NSString*)handler
- parametersArray:(NSArray*)params;
-+ (id)gtm_descriptorWithPositionalHandler:(NSString*)handler
- parametersDescriptor:(NSAppleEventDescriptor*)params;
-+ (id)gtm_descriptorWithLabeledHandler:(NSString*)handler
- labels:(AEKeyword*)labels
- parameters:(id*)params
- count:(NSUInteger)count;
-
-- (id)gtm_initWithPositionalHandler:(NSString*)handler
- parametersArray:(NSArray*)params
- NS_RETURNS_RETAINED NS_CONSUMES_SELF;
-
-- (id)gtm_initWithPositionalHandler:(NSString*)handler
- parametersDescriptor:(NSAppleEventDescriptor*)params
- NS_RETURNS_RETAINED NS_CONSUMES_SELF;
-
-- (id)gtm_initWithLabeledHandler:(NSString*)handler
- labels:(AEKeyword*)labels
- parameters:(id*)params
- count:(NSUInteger)count
- NS_RETURNS_RETAINED NS_CONSUMES_SELF;
-@end
diff --git a/Foundation/GTMNSAppleEventDescriptor+Handler.m b/Foundation/GTMNSAppleEventDescriptor+Handler.m
deleted file mode 100644
index 76b6e85..0000000
--- a/Foundation/GTMNSAppleEventDescriptor+Handler.m
+++ /dev/null
@@ -1,130 +0,0 @@
-//
-// GTMNSAppleEventDescriptor+Handler.m
-//
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMNSAppleEventDescriptor+Handler.h"
-#import "GTMNSAppleEventDescriptor+Foundation.h"
-#import "GTMMethodCheck.h"
-#import <Carbon/Carbon.h>
-
-@implementation NSAppleEventDescriptor (GTMAppleEventDescriptorHandlerAdditions)
-GTM_METHOD_CHECK(NSProcessInfo, gtm_appleEventDescriptor);
-
-+ (id)gtm_descriptorWithPositionalHandler:(NSString*)handler
- parametersArray:(NSArray*)params {
- return [[[self alloc] gtm_initWithPositionalHandler:handler
- parametersArray:params] autorelease];
-}
-
-+ (id)gtm_descriptorWithPositionalHandler:(NSString*)handler
- parametersDescriptor:(NSAppleEventDescriptor*)params {
- return [[[self alloc] gtm_initWithPositionalHandler:handler
- parametersDescriptor:params] autorelease];
-}
-
-+ (id)gtm_descriptorWithLabeledHandler:(NSString*)handler
- labels:(AEKeyword*)labels
- parameters:(id*)params
- count:(NSUInteger)count {
- return [[[self alloc] gtm_initWithLabeledHandler:handler
- labels:labels
- parameters:params
- count:count] autorelease];
-}
-
-- (id)gtm_initWithPositionalHandler:(NSString*)handler
- parametersArray:(NSArray*)params {
- return [self gtm_initWithPositionalHandler:handler
- parametersDescriptor:[params gtm_appleEventDescriptor]];
-}
-
-- (id)gtm_initWithPositionalHandler:(NSString*)handler
- parametersDescriptor:(NSAppleEventDescriptor*)params {
- if ((self = [self initWithEventClass:kASAppleScriptSuite
- eventID:kASSubroutineEvent
- targetDescriptor:[[NSProcessInfo processInfo] gtm_appleEventDescriptor]
- returnID:kAutoGenerateReturnID
- transactionID:kAnyTransactionID])) {
- // Create an NSAppleEventDescriptor with the method handler. Note that the
- // name must be lowercase (even if it is uppercase in AppleScript).
- // http://developer.apple.com/qa/qa2001/qa1111.html
- // has details.
- handler = [handler lowercaseString];
- if (!handler) {
- [self release];
- return nil;
- }
- NSAppleEventDescriptor *handlerDesc
- = [NSAppleEventDescriptor descriptorWithString:handler];
- [self setParamDescriptor:handlerDesc forKeyword:keyASSubroutineName];
- if (params) {
- [self setParamDescriptor:params forKeyword:keyDirectObject];
- }
- }
- return self;
-}
-
-
-- (id)gtm_initWithLabeledHandler:(NSString*)handler
- labels:(AEKeyword*)labels
- parameters:(id*)params
- count:(NSUInteger)count {
- if ((self = [self initWithEventClass:kASAppleScriptSuite
- eventID:kASSubroutineEvent
- targetDescriptor:[[NSProcessInfo processInfo] gtm_appleEventDescriptor]
- returnID:kAutoGenerateReturnID
- transactionID:kAnyTransactionID])) {
- if (!handler) {
- [self release];
- return nil;
- }
- // Create an NSAppleEventDescriptor with the method handler. Note that the
- // name must be lowercase (even if it is uppercase in AppleScript).
- NSAppleEventDescriptor *handlerDesc
- = [NSAppleEventDescriptor descriptorWithString:[handler lowercaseString]];
- [self setParamDescriptor:handlerDesc forKeyword:keyASSubroutineName];
- for (NSUInteger i = 0; i < count; i++) {
- NSAppleEventDescriptor *paramDesc = [params[i] gtm_appleEventDescriptor];
- if(labels[i] == keyASPrepositionGiven) {
- if (![params[i] isKindOfClass:[NSDictionary class]]) {
- _GTMDevLog(@"Must pass in dictionary for keyASPrepositionGiven "
- "(got %@)", params[i]);
- [self release];
- self = nil;
- break;
- }
- NSAppleEventDescriptor *userDesc
- = [paramDesc descriptorForKeyword:keyASUserRecordFields];
- if (!userDesc) {
- _GTMDevLog(@"Dictionary for keyASPrepositionGiven must be a user "
- "record field dictionary (got %@)", params[i]);
- [self release];
- self = nil;
- break;
- }
- [self setParamDescriptor:userDesc
- forKeyword:keyASUserRecordFields];
- } else {
- [self setParamDescriptor:paramDesc
- forKeyword:labels[i]];
- }
- }
- }
- return self;
-}
-
-@end
diff --git a/Foundation/GTMNSAppleEventDescriptor+HandlerTest.m b/Foundation/GTMNSAppleEventDescriptor+HandlerTest.m
deleted file mode 100644
index a137d8a..0000000
--- a/Foundation/GTMNSAppleEventDescriptor+HandlerTest.m
+++ /dev/null
@@ -1,70 +0,0 @@
-//
-// GTNNSAppleEventDescriptor+HandlerTest.m
-//
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import <Carbon/Carbon.h>
-#import "GTMSenTestCase.h"
-#import "GTMNSAppleEventDescriptor+Foundation.h"
-#import "GTMNSAppleEventDescriptor+Handler.h"
-#import "GTMUnitTestDevLog.h"
-
-@interface GTMNSAppleEventDescriptor_HandlerTest : GTMTestCase
-@end
-
-@implementation GTMNSAppleEventDescriptor_HandlerTest
-// Most of this gets tested by the NSAppleScript+Handler tests.
-- (void)testPositionalHandlers {
- NSAppleEventDescriptor *desc
- = [NSAppleEventDescriptor gtm_descriptorWithPositionalHandler:nil
- parametersArray:[NSArray array]];
- STAssertNil(desc, @"got a desc?");
-
- desc = [NSAppleEventDescriptor gtm_descriptorWithPositionalHandler:@"happy"
- parametersDescriptor:nil];
- STAssertNotNil(desc, @"didn't get a desc?");
-
- desc = [NSAppleEventDescriptor gtm_descriptorWithLabeledHandler:nil
- labels:nil
- parameters:nil
- count:0];
- STAssertNil(desc, @"got a desc?");
-
- AEKeyword keys[] = { keyASPrepositionGiven };
- NSString *string = @"foo";
- [GTMUnitTestDevLog expectString:@"Must pass in dictionary for "
- "keyASPrepositionGiven (got foo)"];
- desc = [NSAppleEventDescriptor gtm_descriptorWithLabeledHandler:@"happy"
- labels:keys
- parameters:&string
- count:1];
- STAssertNil(desc, @"got a desc?");
-
- NSDictionary *dict = [NSDictionary dictionaryWithObject:@"bart"
- forKey:[NSNumber numberWithInt:4]];
- [GTMUnitTestDevLog expectString:@"Keys must be of type NSString or "
- "GTMFourCharCode: 4"];
- [GTMUnitTestDevLog expectPattern:@"Dictionary for keyASPrepositionGiven must "
- "be a user record field dictionary \\(got .*"];
- desc = [NSAppleEventDescriptor gtm_descriptorWithLabeledHandler:@"happy"
- labels:keys
- parameters:&dict
- count:1];
- STAssertNil(desc, @"got a desc?");
-
-}
-
-@end
diff --git a/Foundation/GTMNSAppleScript+Handler.h b/Foundation/GTMNSAppleScript+Handler.h
deleted file mode 100644
index ba4fe72..0000000
--- a/Foundation/GTMNSAppleScript+Handler.h
+++ /dev/null
@@ -1,132 +0,0 @@
-//
-// GTMNSAppleScript+Handler.h
-//
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import <Foundation/Foundation.h>
-#import "GTMDefines.h"
-
-// A category for calling handlers in NSAppleScript
-
-enum {
- // Data type is OSAID. These will generally be representing
- // scripts.
- typeGTMOSAID = 'GTMO'
-};
-
-@interface NSAppleScript(GTMAppleScriptHandlerAdditions)
-// Allows us to call a specific handler in an AppleScript.
-// parameters are passed in left-right order 0-n.
-//
-// Args:
-// handler - name of the handler to call in the Applescript
-// params - the parameters to pass to the handler
-// error - in non-nil returns any error that may have occurred.
-//
-// Returns:
-// The result of the handler being called. nil on failure.
-- (NSAppleEventDescriptor*)gtm_executePositionalHandler:(NSString*)handler
- parameters:(NSArray*)params
- error:(NSDictionary**)error;
-
-
-// Allows us to call a specific labeled handler in an AppleScript.
-// Parameters for a labeled handler can be in any order, as long as the
-// order of the params array corresponds to the order of the labels array
-// such that labels are associated with their correct parameter values.
-//
-// Args:
-// handler - name of the handler to call in the Applescript
-// labels - the labels to associate with the parameters
-// params - the parameters to pass to the handler
-// count - number of labels/parameters
-// error - in non-nil returns any error that may have occurred.
-//
-// Returns:
-// The result of the handler being called. nil on failure.
-- (NSAppleEventDescriptor*)gtm_executeLabeledHandler:(NSString*)handler
- labels:(AEKeyword*)labels
- parameters:(id*)params
- count:(NSUInteger)count
- error:(NSDictionary **)error;
-
-// Same as executeAppleEvent:error: except that it handles return values of
-// script correctly. Return values containing scripts will have the
-// typeGTMOSAID. Calling gtm_objectValue on a NSAppleEventDescriptor of
-// typeGTMOSAID will resolve correctly to a script value. We don't use
-// typeScript because that actually copies the script instead of returning the
-// actual value. Therefore if you called executeAppleEvent:error: (instead of
-// the GTM version) to execute an event that returns a script, you will
-// get a completely new Applescript, instead of the actual script you wanted. If
-// you are working with script information, use gtm_executeAppleEvent:error
-// instead of executeAppleEvent:error: to avoid the problem.
-- (NSAppleEventDescriptor *)gtm_executeAppleEvent:(NSAppleEventDescriptor *)event
- error:(NSDictionary **)error;
-
-// The set of all handlers that are defined in this script and its parents.
-// Remember that handlers that are defined in an sdef will have their
-// eventclass/eventid as their handler instead of the name seen in the script.
-// So:
-// on open(a)
-// blah
-// end open
-// won't be "open" it will be "aevtodoc".
-- (NSSet*)gtm_handlers;
-
-// The set of all properties that are defined in this script and its parents.
-// Note that properties can be strings or GTMNSFourCharCodes, so expect both
-// coming back in the set.
-- (NSSet*)gtm_properties;
-
-// Return a value for a property. Will look up the inheritence tree.
-// Property must be an NSString or a GTMFourCharCode.
-- (id)gtm_valueForProperty:(id)property;
-
-// Return a value for a property by type (eg pASParent). Will look up the
-// inheritence tree
-- (id)gtm_valueForPropertyEnum:(DescType)property;
-
-// Set a script property value. Returns YES/NO on success/failure.
-// Property must be of kind NSString or GTMFourCharCode.
-// If addingDefinition is YES, it will add a definition to the script
-// if the value doesn't exist in the script or one of it's parents.
-- (BOOL)gtm_setValue:(id)value
- forProperty:(id)property
- addingDefinition:(BOOL)adding;
-
-// Set a value for a property by type (eg pASParent). See note above
-// for gtm_setValue:forProperty.
-- (BOOL)gtm_setValue:(id)value
- forPropertyEnum:(DescType)property
- addingDefinition:(BOOL)adding;
-
-// Return YES if the script has an open documents (odoc) handler
-// Does not require script compilation, so it's a fast check.
-- (BOOL)gtm_hasOpenDocumentsHandler;
-
-@end
-
-// Error keys that we may return in the error dictionary on top of the standard
-// NSAppleScriptError* keys.
-extern NSString const* GTMNSAppleScriptErrorPartialResult; // id
-extern NSString const* GTMNSAppleScriptErrorOffendingObject; // id
-extern NSString const* GTMNSAppleScriptErrorExpectedType; // GTMFourCharCode
-
-@interface NSAppleEventDescriptor (GTMAppleEventDescriptorOSAAdditions)
-// Returns an NSValue containing an NSRange of script source when an error
-// occurs while compiling and/or executing a script.
-- (id)gtm_OSAErrorRangeValue;
-@end
diff --git a/Foundation/GTMNSAppleScript+Handler.m b/Foundation/GTMNSAppleScript+Handler.m
deleted file mode 100644
index 850de58..0000000
--- a/Foundation/GTMNSAppleScript+Handler.m
+++ /dev/null
@@ -1,662 +0,0 @@
-//
-// GTMNSAppleScript+Handler.m
-//
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import <Carbon/Carbon.h>
-#import "GTMNSAppleScript+Handler.h"
-#import "GTMNSAppleEventDescriptor+Foundation.h"
-#import "GTMNSAppleEventDescriptor+Handler.h"
-#import "GTMFourCharCode.h"
-#import "GTMMethodCheck.h"
-
-// Keys for passing AppleScript calls from other threads to the main thread
-// and back through gtm_internalExecuteAppleEvent:
-static NSString *const GTMNSAppleScriptEventKey = @"GTMNSAppleScriptEvent";
-static NSString *const GTMNSAppleScriptResultKey = @"GTMNSAppleScriptResult";
-static NSString *const GTMNSAppleScriptErrorKey = @"GTMNSAppleScriptError";
-
-// Error keys that we may return in the error dictionary on top of the standard
-// NSAppleScriptError* keys.
-NSString const* GTMNSAppleScriptErrorPartialResult
- = @"GTMNSAppleScriptErrorPartialResult";
-NSString const* GTMNSAppleScriptErrorOffendingObject
- = @"GTMNSAppleScriptErrorOffendingObject";
-NSString const* GTMNSAppleScriptErrorExpectedType
- = @"GTMNSAppleScriptErrorExpectedType";
-
-// Some private methods that we need to call
-@interface NSAppleScript (NSPrivate)
-+ (ComponentInstance)_defaultScriptingComponent;
-- (OSAID) _compiledScriptID;
-- (id)_initWithData:(NSData*)data error:(NSDictionary**)error;
-- (id)_initWithScriptIDNoCopy:(OSAID)osaID;
-@end
-
-@interface NSMethodSignature (NSPrivate)
-+ (id)signatureWithObjCTypes:(const char *)fp8;
-@end
-
-// Our own private interfaces.
-@interface NSAppleScript (GTMAppleScriptHandlerAdditionsPrivate)
-
-// Return an descriptor for a property. Properties are only supposed to be
-// of type NSString or GTMFourCharCode. GTMFourCharCode's need special handling
-// as they must be turned into NSAppleEventDescriptors of typeProperty.
-- (NSAppleEventDescriptor*)gtm_descriptorForPropertyValue:(id)property;
-
-// Return an NSAppleEventDescriptor for a given property.
-// |property| must be kind of class GTMFourCharCode
-- (NSAppleEventDescriptor*)gtm_valueDescriptorForProperty:(id)property;
-
-// Utility routine for extracting multiple values in scripts and their
-// parents.
-- (NSSet*)gtm_allValuesUsingSelector:(SEL)selector;
-
-// Utility routine for extracting the handlers for a specific script without
-// referring to parent scripts.
-- (NSSet*)gtm_scriptHandlers;
-
-// Utility routine for extracting the properties for a specific script without
-// referring to parent scripts.
-- (NSSet*)gtm_scriptProperties;
-
-// Handles creating an NSAppleEventDescriptor from an OSAID
-- (NSAppleEventDescriptor*)descForScriptID:(OSAID)scriptID
- component:(ComponentInstance)component;
-
-// Utility methods for converting between real and generic OSAIDs.
-- (OSAID)gtm_genericID:(OSAID)osaID forComponent:(ComponentInstance)component;
-- (OSAID)gtm_realIDAndComponent:(ComponentInstance*)component;
-
-- (void)gtm_internalExecuteAppleEvent:(NSMutableDictionary *)data;
-
-- (NSDictionary *)gtm_errorDictionaryFromOSStatus:(OSStatus)status
- component:(ComponentInstance)component;
-@end
-
-// Private methods for dealing with Scripts/Events and NSAppleEventDescriptors
-@interface NSAppleEventDescriptor (GTMAppleEventDescriptorScriptAdditions)
-
-// Return an NSAppleScript for a desc of typeScript. This will create a new
-// Applescript that is a copy of the script that you want.
-// Returns nil on failure.
-- (NSAppleScript*)gtm_scriptValue;
-
-// Return an NSAppleScript for a desc of typeGTMOSAID. This will not copy the
-// script, but will create an NSAppleScript wrapping the script represented
-// by the OSAID.
-// Returns nil on failure.
-- (NSAppleScript*)gtm_osaIDValue;
-
-// Return a NSString with [eventClass][eventID] for typeEvent 'evnt'
-- (NSString*)gtm_eventValue;
-@end
-
-@implementation NSAppleScript(GTMAppleScriptHandlerAdditions)
-GTM_METHOD_CHECK(NSAppleEventDescriptor, gtm_descriptorWithPositionalHandler:parametersArray:);
-GTM_METHOD_CHECK(NSAppleEventDescriptor, gtm_descriptorWithLabeledHandler:labels:parameters:count:);
-GTM_METHOD_CHECK(NSAppleEventDescriptor, gtm_registerSelector:forTypes:count:);
-
-+ (void)load {
- DescType types[] = {
- typeScript
- };
-
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- [NSAppleEventDescriptor gtm_registerSelector:@selector(gtm_scriptValue)
- forTypes:types
- count:sizeof(types)/sizeof(DescType)];
-
- DescType types2[] = {
- 'evnt' // No type code for this one
- };
-
- [NSAppleEventDescriptor gtm_registerSelector:@selector(gtm_eventValue)
- forTypes:types2
- count:sizeof(types2)/sizeof(DescType)];
-
- DescType types3[] = {
- typeGTMOSAID
- };
-
- [NSAppleEventDescriptor gtm_registerSelector:@selector(gtm_osaIDValue)
- forTypes:types3
- count:sizeof(types3)/sizeof(DescType)];
- [pool drain];
-}
-
-- (NSAppleEventDescriptor *)gtm_executeAppleEvent:(NSAppleEventDescriptor *)event
- error:(NSDictionary **)error {
- NSMutableDictionary *data = [NSMutableDictionary dictionaryWithObjectsAndKeys:
- event, GTMNSAppleScriptEventKey, nil];
- [self performSelectorOnMainThread:@selector(gtm_internalExecuteAppleEvent:)
- withObject:data
- waitUntilDone:YES];
- if (error) {
- *error = [data objectForKey:GTMNSAppleScriptErrorKey];
- }
- return [data objectForKey:GTMNSAppleScriptResultKey];
-}
-
-- (NSAppleEventDescriptor*)gtm_executePositionalHandler:(NSString*)handler
- parameters:(NSArray*)params
- error:(NSDictionary**)error {
- NSAppleEventDescriptor *event
- = [NSAppleEventDescriptor gtm_descriptorWithPositionalHandler:handler
- parametersArray:params];
- return [self gtm_executeAppleEvent:event error:error];
-}
-
-- (NSAppleEventDescriptor*)gtm_executeLabeledHandler:(NSString*)handler
- labels:(AEKeyword*)labels
- parameters:(id*)params
- count:(NSUInteger)count
- error:(NSDictionary **)error {
- NSAppleEventDescriptor *event
- = [NSAppleEventDescriptor gtm_descriptorWithLabeledHandler:handler
- labels:labels
- parameters:params
- count:count];
- return [self gtm_executeAppleEvent:event error:error];
-}
-
-- (NSSet*)gtm_handlers {
- return [self gtm_allValuesUsingSelector:@selector(gtm_scriptHandlers)];
-}
-
-- (NSSet*)gtm_properties {
- return [self gtm_allValuesUsingSelector:@selector(gtm_scriptProperties)];
-}
-
-// Set a value for a property by type (eg pASTopLevelScript)
-- (BOOL)gtm_setValue:(id)value
- forPropertyEnum:(DescType)property
- addingDefinition:(BOOL)adding {
- GTMFourCharCode *fcc
- = [GTMFourCharCode fourCharCodeWithFourCharCode:property];
- return [self gtm_setValue:value forProperty:fcc addingDefinition:adding];
-}
-
-- (BOOL)gtm_setValue:(id)value
- forProperty:(id)property
- addingDefinition:(BOOL)adding{
- OSAError error = paramErr;
- BOOL wasGood = NO;
- NSAppleEventDescriptor *propertyName
- = [self gtm_descriptorForPropertyValue:property];
- NSAppleEventDescriptor *desc = [value gtm_appleEventDescriptor];
- if (propertyName && desc) {
- NSAppleScript *script = self;
- OSAID valueID = kOSANullScript;
- ComponentInstance component = NULL;
- OSAID scriptID = [script gtm_realIDAndComponent:&component];
- error = OSACoerceFromDesc(component,
- [desc aeDesc],
- kOSAModeNull,
- &valueID);
- if (error == noErr) {
- error = OSASetProperty(component,
- adding ? kOSAModeNull : kOSAModeDontDefine,
- scriptID,
- [propertyName aeDesc],
- valueID);
- if (error == noErr) {
- wasGood = YES;
- }
- }
- }
- if (!wasGood) {
- _GTMDevLog(@"Unable to setValue:%@ forProperty:%@ from %@ (%d)",
- value, property, self, (int)error);
- }
- return wasGood;
-}
-
-- (id)gtm_valueForProperty:(id)property {
- return [[self gtm_valueDescriptorForProperty:property] gtm_objectValue];
-}
-
-- (id)gtm_valueForPropertyEnum:(DescType)property {
- GTMFourCharCode *fcc = [GTMFourCharCode fourCharCodeWithFourCharCode:property];
- return [self gtm_valueForProperty:fcc];
-}
-
-- (NSAppleEventDescriptor*)gtm_appleEventDescriptor {
- ComponentInstance component;
- OSAID osaID = [self gtm_realIDAndComponent:&component];
- AEDesc result = { typeNull, NULL };
- NSAppleEventDescriptor *desc = nil;
- OSAError error = OSACoerceToDesc(component,
- osaID,
- typeScript,
- kOSAModeNull,
- &result);
- if (error == noErr) {
- desc = [[[NSAppleEventDescriptor alloc] initWithAEDescNoCopy:&result]
- autorelease];
- } else {
- _GTMDevLog(@"Unable to coerce script %ld", (long)error);
- }
- return desc;
-}
-
-- (BOOL)gtm_hasOpenDocumentsHandler {
- ComponentInstance component = NULL;
- OSAID osaID = [self gtm_realIDAndComponent:&component];
- long value = 0;
- OSAError error = OSAGetScriptInfo(component,
- osaID,
- kASHasOpenHandler,
- &value);
- if (error) {
- _GTMDevLog(@"Unable to get script info about open handler %ld", (long)error);
- value = 0;
- }
- return value != 0;
-}
-
-- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector {
- NSMethodSignature *signature = [super methodSignatureForSelector:aSelector];
- if (!signature) {
- NSMutableString *types = [NSMutableString stringWithString:@"@@:"];
- NSString *selName = NSStringFromSelector(aSelector);
- NSArray *selArray = [selName componentsSeparatedByString:@":"];
- NSUInteger count = [selArray count];
- for (NSUInteger i = 1; i < count; i++) {
- [types appendString:@"@"];
- }
- signature = [NSMethodSignature signatureWithObjCTypes:[types UTF8String]];
- }
- return signature;
-}
-
-- (void)forwardInvocation:(NSInvocation *)invocation {
- SEL sel = [invocation selector];
- NSMutableString *handlerName
- = [NSMutableString stringWithString:NSStringFromSelector(sel)];
- NSUInteger handlerOrigLength = [handlerName length];
- [handlerName replaceOccurrencesOfString:@":"
- withString:@""
- options:0
- range:NSMakeRange(0,handlerOrigLength)];
- NSUInteger argCount = handlerOrigLength - [handlerName length];
- NSMutableArray *args = [NSMutableArray arrayWithCapacity:argCount];
- for (NSUInteger i = 0; i < argCount; ++i) {
- id arg;
- // +2 to ignore _sel and _cmd
- [invocation getArgument:&arg atIndex:i + 2];
- [args addObject:arg];
- }
- NSDictionary *error = nil;
- NSAppleEventDescriptor *desc = [self gtm_executePositionalHandler:handlerName
- parameters:args
- error:&error];
- if ([[invocation methodSignature] methodReturnLength] > 0) {
- id returnValue = [desc gtm_objectValue];
- [invocation setReturnValue:&returnValue];
- }
-}
-@end
-
-@implementation NSAppleScript (GTMAppleScriptHandlerAdditionsPrivate)
-
-- (NSAppleEventDescriptor*)gtm_descriptorForPropertyValue:(id)property {
- NSAppleEventDescriptor *propDesc = nil;
- if ([property isKindOfClass:[GTMFourCharCode class]]) {
- propDesc = [property gtm_appleEventDescriptorOfType:typeProperty];
- } else if ([property isKindOfClass:[NSString class]]) {
- propDesc = [property gtm_appleEventDescriptor];
- }
- return propDesc;
-}
-
-- (NSAppleEventDescriptor*)gtm_valueDescriptorForProperty:(id)property {
- _GTMDevAssert([NSThread isMainThread], @"Requires main thread.");
- OSAError error = paramErr;
- NSAppleEventDescriptor *desc = nil;
- NSAppleEventDescriptor *propertyName
- = [self gtm_descriptorForPropertyValue:property];
- if (propertyName) {
- ComponentInstance component = NULL;
- OSAID scriptID = [self gtm_realIDAndComponent:&component];
- OSAID valueID = kOSANullScript;
- error = OSAGetProperty(component,
- kOSAModeNull,
- scriptID,
- [propertyName aeDesc],
- &valueID);
- if (error == noErr) {
- desc = [self descForScriptID:valueID component:component];
- }
- }
- if (error) {
- _GTMDevLog(@"Unable to get valueForProperty:%@ from %@ (%d)",
- property, self, (int)error);
- }
- return desc;
-}
-
-- (NSSet*)gtm_allValuesUsingSelector:(SEL)selector {
- NSMutableSet *resultSet = [NSMutableSet set];
- NSAppleEventDescriptor *scriptDesc = [self gtm_appleEventDescriptor];
- NSMutableSet *scriptDescsWeveSeen = [NSMutableSet set];
- GTMFourCharCode *fcc = [GTMFourCharCode fourCharCodeWithFourCharCode:pASParent];
- Class appleScriptClass = [NSAppleScript class];
- while (scriptDesc) {
- NSAppleScript *script = [scriptDesc gtm_objectValue];
- if ([script isKindOfClass:appleScriptClass]) {
- NSData *data = [scriptDesc data];
- if (!data || [scriptDescsWeveSeen containsObject:data]) {
- break;
- } else {
- [scriptDescsWeveSeen addObject:data];
- }
- NSSet *newSet = [script performSelector:selector];
- [resultSet unionSet:newSet];
- scriptDesc = [script gtm_valueDescriptorForProperty:fcc];
- } else {
- break;
- }
- }
- return resultSet;
-}
-
-- (NSSet*)gtm_scriptHandlers {
- _GTMDevAssert([NSThread isMainThread], @"Requires main thread.");
- AEDescList names = { typeNull, NULL };
- NSArray *array = nil;
- ComponentInstance component = NULL;
- OSAID osaID = [self gtm_realIDAndComponent:&component];
- OSAError error = OSAGetHandlerNames(component, kOSAModeNull, osaID, &names);
- if (error == noErr) {
- NSAppleEventDescriptor *desc
- = [[[NSAppleEventDescriptor alloc] initWithAEDescNoCopy:&names]
- autorelease];
- array = [desc gtm_objectValue];
- }
- if (error != noErr) {
- _GTMDevLog(@"Error getting handlers: %d", (int)error); // COV_NF_LINE
- }
- return [NSSet setWithArray:array];
-}
-
-- (NSSet*)gtm_scriptProperties {
- _GTMDevAssert([NSThread isMainThread], @"Requires main thread.");
- AEDescList names = { typeNull, NULL };
- NSArray *array = nil;
- ComponentInstance component = NULL;
- OSAID osaID = [self gtm_realIDAndComponent:&component];
- OSAError error = OSAGetPropertyNames(component, kOSAModeNull, osaID, &names);
- if (error == noErr) {
- NSAppleEventDescriptor *desc
- = [[[NSAppleEventDescriptor alloc] initWithAEDescNoCopy:&names]
- autorelease];
- array = [desc gtm_objectValue];
- }
- if (error != noErr) {
- _GTMDevLog(@"Error getting properties: %d", (int)error); // COV_NF_LINE
- }
- return [NSSet setWithArray:array];
-}
-
-- (OSAID)gtm_genericID:(OSAID)osaID forComponent:(ComponentInstance)component {
- _GTMDevAssert([NSThread isMainThread], @"Requires main thread.");
- ComponentInstance genericComponent = [NSAppleScript _defaultScriptingComponent];
- OSAID exactID = osaID;
- OSAError error = OSARealToGenericID(genericComponent, &exactID, component);
- if (error != noErr) {
- _GTMDevLog(@"Unable to get real id script: %@ %d", self, (int)error); // COV_NF_LINE
- exactID = kOSANullScript; // COV_NF_LINE
- }
- return exactID;
-}
-
-- (NSAppleEventDescriptor*)descForScriptID:(OSAID)osaID
- component:(ComponentInstance)component {
- _GTMDevAssert([NSThread isMainThread], @"Requires main thread.");
- NSAppleEventDescriptor *desc = nil;
- // If we have a script, return a typeGTMOSAID, otherwise convert it to
- // it's default AEDesc using OSACoerceToDesc with typeWildCard.
- long value = 0;
- OSAError err = noErr;
- if (osaID == 0) {
- desc = [NSAppleEventDescriptor nullDescriptor];
- } else {
- err = OSAGetScriptInfo(component,
- osaID,
- kOSAScriptBestType,
- &value);
- if (err == noErr) {
- if (value == typeScript) {
- osaID = [self gtm_genericID:osaID forComponent:component];
- desc = [NSAppleEventDescriptor descriptorWithDescriptorType:typeGTMOSAID
- bytes:&osaID
- length:sizeof(osaID)];
- } else {
- AEDesc aeDesc;
- err = OSACoerceToDesc(component,
- osaID,
- typeWildCard,
- kOSAModeNull,
- &aeDesc);
- if (err == noErr) {
- desc = [[[NSAppleEventDescriptor alloc]
- initWithAEDescNoCopy:&aeDesc] autorelease];
- }
- }
- }
- }
- if (err != noErr) {
- _GTMDevLog(@"Unable to create desc for id:%lu (%ld)", (unsigned long)osaID, (long)err); // COV_NF_LINE
- }
- return desc;
-}
-
-- (OSAID)gtm_realIDAndComponent:(ComponentInstance*)component {
- _GTMDevAssert([NSThread isMainThread], @"Requires main thread.");
- if (![self isCompiled]) {
- NSDictionary *error;
- if (![self compileAndReturnError:&error]) {
- _GTMDevLog(@"Unable to compile script: %@ %@", self, error);
- return kOSANullScript;
- }
- }
- OSAID genericID = [self _compiledScriptID];
- ComponentInstance genericComponent = [NSAppleScript _defaultScriptingComponent];
- OSAError error = OSAGenericToRealID(genericComponent, &genericID, component);
- if (error != noErr) {
- _GTMDevLog(@"Unable to get real id script: %@ %d", self, (int)error); // COV_NF_LINE
- genericID = kOSANullScript; // COV_NF_LINE
- }
- return genericID;
-}
-
-- (void)gtm_internalExecuteAppleEvent:(NSMutableDictionary *)data {
- _GTMDevAssert([NSThread isMainThread], @"Requires main thread.");
- NSDictionary *error = nil;
- if (![self isCompiled]) {
- [self compileAndReturnError:&error];
- }
- if (!error) {
- NSAppleEventDescriptor *desc = nil;
- NSAppleEventDescriptor *event = [data objectForKey:GTMNSAppleScriptEventKey];
- ComponentInstance component = NULL;
- OSAID scriptID = [self gtm_realIDAndComponent:&component];
- OSAID valueID;
- OSAError err = OSAExecuteEvent(component, [event aeDesc], scriptID,
- kOSAModeNull, &valueID);
- if (err == noErr) {
- // descForScriptID:component: is what sets this apart from the
- // standard executeAppleEvent:error: in that it handles
- // taking script results and turning them into AEDescs of typeGTMOSAID
- // instead of typeScript.
- desc = [self descForScriptID:valueID component:component];
- if (desc) {
- [data setObject:desc forKey:GTMNSAppleScriptResultKey];
- }
- } else {
- error = [self gtm_errorDictionaryFromOSStatus:err component:component];
- }
- }
- if (error) {
- [data setObject:error forKey:GTMNSAppleScriptErrorKey];
- }
-}
-
-- (NSDictionary *)gtm_errorDictionaryFromOSStatus:(OSStatus)status
- component:(ComponentInstance)component {
- NSMutableDictionary *error = nil;
- if (status == errOSAScriptError) {
- error = [NSMutableDictionary dictionary];
- struct {
- OSType selector;
- DescType desiredType;
- SEL extractor;
- id key;
- } errMap[] = {
- {
- kOSAErrorNumber,
- typeSInt16,
- @selector(gtm_numberValue),
- NSAppleScriptErrorNumber
- },
- {
- kOSAErrorMessage,
- typeText,
- @selector(stringValue),
- NSAppleScriptErrorMessage
- },
- {
- kOSAErrorBriefMessage,
- typeText,
- @selector(stringValue),
- NSAppleScriptErrorBriefMessage
- },
- { kOSAErrorApp,
- typeText,
- @selector(stringValue),
- NSAppleScriptErrorAppName
- },
- { kOSAErrorRange,
- typeOSAErrorRange,
- @selector(gtm_OSAErrorRangeValue),
- NSAppleScriptErrorRange
- },
- {
- kOSAErrorPartialResult,
- typeBest,
- @selector(gtm_objectValue),
- GTMNSAppleScriptErrorPartialResult
- },
- {
- kOSAErrorOffendingObject,
- typeBest,
- @selector(gtm_objectValue),
- GTMNSAppleScriptErrorOffendingObject
- },
- {
- kOSAErrorExpectedType,
- typeType,
- @selector(gtm_fourCharCodeValue),
- GTMNSAppleScriptErrorExpectedType
- },
- };
- for (size_t i = 0; i < sizeof(errMap) / sizeof(errMap[0]); ++i) {
- AEDesc errorResult = { typeNull, NULL };
- OSStatus err = OSAScriptError(component,
- errMap[i].selector,
- errMap[i].desiredType,
- &errorResult);
- if (err == noErr) {
- NSAppleEventDescriptor *desc = [[[NSAppleEventDescriptor alloc]
- initWithAEDescNoCopy:&errorResult] autorelease];
- id value = [desc performSelector:errMap[i].extractor];
- if (value) {
- [error setObject:value forKey:errMap[i].key];
- }
- }
- }
- } else if (status != noErr) {
- // Unknown error. Do our best to give the user something good.
- NSNumber *errNum = [NSNumber numberWithInt:status];
- error
- = [NSMutableDictionary dictionaryWithObject:errNum
- forKey:NSAppleScriptErrorNumber];
- NSString *briefMessage
- = [NSString stringWithUTF8String:GetMacOSStatusErrorString(status)];
- if (briefMessage) {
- [error setValue:briefMessage forKey:NSAppleScriptErrorBriefMessage];
- }
- NSString *message
- = [NSString stringWithUTF8String:GetMacOSStatusCommentString(status)];
- if (message) {
- [error setValue:message forKey:NSAppleScriptErrorMessage];
- }
- }
- return error;
-}
-@end
-
-@implementation NSAppleEventDescriptor (GMAppleEventDescriptorScriptAdditions)
-
-- (NSAppleScript*)gtm_scriptValue {
- NSDictionary *error;
- NSAppleScript *script = [[[NSAppleScript alloc] _initWithData:[self data]
- error:&error] autorelease];
- if (!script) {
- _GTMDevLog(@"Unable to create script: %@", error); // COV_NF_LINE
- }
- return script;
-}
-
-- (NSAppleScript*)gtm_osaIDValue {
- _GTMDevAssert([[self data] length] == sizeof(OSAID), nil);
- OSAID osaID = *(const OSAID*)[[self data] bytes];
- return [[[NSAppleScript alloc] _initWithScriptIDNoCopy:osaID] autorelease];
-}
-
-- (NSString*)gtm_eventValue {
- struct AEEventRecordStruct {
- AEEventClass eventClass;
- AEEventID eventID;
- };
- NSData *data = [self data];
- const struct AEEventRecordStruct *record
- = (const struct AEEventRecordStruct*)[data bytes];
- NSString *eClass = [GTMFourCharCode stringWithFourCharCode:record->eventClass];
- NSString *eID = [GTMFourCharCode stringWithFourCharCode:record->eventID];
- return [eClass stringByAppendingString:eID];
-}
-@end
-
-@implementation NSAppleEventDescriptor (GTMAppleEventDescriptorOSAAdditions)
-
-- (id)gtm_OSAErrorRangeValue {
- id value = nil;
- NSAppleEventDescriptor *start = [self descriptorForKeyword:keyOSASourceStart];
- if (start) {
- NSAppleEventDescriptor *end = [self descriptorForKeyword:keyOSASourceEnd];
- if (end) {
- NSRange range = NSMakeRange([start int32Value], [end int32Value]);
- value = [NSValue valueWithRange:range];
- }
- }
- return value;
-}
-
-@end
-
diff --git a/Foundation/GTMNSAppleScript+HandlerTest.m b/Foundation/GTMNSAppleScript+HandlerTest.m
deleted file mode 100644
index 6a064dd..0000000
--- a/Foundation/GTMNSAppleScript+HandlerTest.m
+++ /dev/null
@@ -1,504 +0,0 @@
-//
-// GTMNSAppleScript+HandlerTest.m
-//
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMSenTestCase.h"
-#import <Carbon/Carbon.h>
-#import "GTMNSAppleScript+Handler.h"
-#import "GTMNSAppleEventDescriptor+Foundation.h"
-#import "GTMUnitTestDevLog.h"
-#import "GTMSystemVersion.h"
-#import "GTMFourCharCode.h"
-
-@protocol ScriptInterface
-- (id)test;
-- (id)testReturnParam:(id)param;
-- (id)testAddParams:(id)param1 :(id)param2;
-@end
-
-@interface GTMNSAppleScript_HandlerTest : GTMTestCase {
- NSAppleScript *script_;
-}
-@end
-
-@implementation GTMNSAppleScript_HandlerTest
-
-- (void)setUp {
- NSBundle *bundle
- = [NSBundle bundleForClass:[GTMNSAppleScript_HandlerTest class]];
- STAssertNotNil(bundle, nil);
- NSString *path = [bundle pathForResource:@"GTMNSAppleEvent+HandlerTest"
- ofType:@"scpt"
- inDirectory:@"Scripts"];
- STAssertNotNil(path, [bundle description]);
- NSDictionary *error = nil;
- script_
- = [[NSAppleScript alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path]
- error:&error];
- STAssertNotNil(script_, [error description]);
- STAssertNil(error, @"Error should be nil. Error = %@", [error description]);
-}
-
-- (void)tearDown {
- [script_ release];
- script_ = nil;
-}
-
-- (void)testExecuteAppleEvent {
- NSString *source = @"on test()\nreturn 1\nend test";
- NSAppleScript *script
- = [[[NSAppleScript alloc] initWithSource:source] autorelease];
- STAssertNotNil(script, nil);
- NSDictionary *error = nil;
- NSAppleEventDescriptor *desc = [script gtm_executePositionalHandler:@"test"
- parameters:nil
- error:&error];
- STAssertNotNil(desc, [error description]);
- STAssertNil(error, @"Error should be nil. Error = %@", [error description]);
- STAssertEquals([desc gtm_objectValue], [NSNumber numberWithInt:1], nil);
-
- // bogus script
- source = @"adf872345ba asdf asdf gr";
- script = [[[NSAppleScript alloc] initWithSource:source] autorelease];
- STAssertNotNil(script, nil);
- desc = [script gtm_executePositionalHandler:@"test"
- parameters:nil
- error:&error];
- STAssertNil(desc, nil);
- STAssertNotNil(error, @"Error should not be nil");
-}
-
-- (void)testHandlerNoParamsNoReturn {
- NSDictionary *error = nil;
- NSAppleEventDescriptor *desc = [script_ gtm_executePositionalHandler:@"test"
- parameters:nil
- error:&error];
- STAssertNotNil(desc, [error description]);
- STAssertNil(error, @"Error should be nil. Error = %@", [error description]);
- STAssertEquals([desc descriptorType], (DescType)typeNull, nil);
- desc = [script_ gtm_executePositionalHandler:@"test"
- parameters:[NSArray array]
- error:&error];
- STAssertNotNil(desc, [error description]);
- STAssertNil(error, @"Error should be nil. Error = %@", [error description]);
- STAssertEquals([desc descriptorType], (DescType)typeNull, nil);
-
- //Applescript doesn't appear to get upset about extra params
- desc = [script_ gtm_executePositionalHandler:@"test"
- parameters:[NSArray arrayWithObject:@"foo"]
- error:&error];
- STAssertNotNil(desc, [error description]);
- STAssertNil(error, @"Error should be nil. Error = %@", [error description]);
- STAssertEquals([desc descriptorType], (DescType)typeNull, nil);
-}
-
-- (void)testHandlerNoParamsWithReturn {
- NSDictionary *error = nil;
- NSAppleEventDescriptor *desc
- = [script_ gtm_executePositionalHandler:@"testReturnOne"
- parameters:nil
- error:&error];
- STAssertNotNil(desc, [error description]);
- STAssertNil(error, @"Error should be nil. Error = %@", [error description]);
- STAssertEquals([desc descriptorType], (DescType)typeSInt32, nil);
- STAssertEquals([desc int32Value], (SInt32)1, nil);
- desc = [script_ gtm_executePositionalHandler:@"testReturnOne"
- parameters:[NSArray array]
- error:&error];
- STAssertNotNil(desc, [error description]);
- STAssertNil(error, @"Error should be nil. Error = %@", [error description]);
- STAssertEquals([desc descriptorType], (DescType)typeSInt32, nil);
- STAssertEquals([desc int32Value], (SInt32)1, nil);
-
- //Applescript doesn't appear to get upset about extra params
- desc = [script_ gtm_executePositionalHandler:@"testReturnOne"
- parameters:[NSArray arrayWithObject:@"foo"]
- error:&error];
- STAssertNotNil(desc, [error description]);
- STAssertNil(error, @"Error should be nil. Error = %@", [error description]);
- STAssertEquals([desc descriptorType], (DescType)typeSInt32, nil);
- STAssertEquals([desc int32Value], (SInt32)1, nil);
-}
-
-- (void)testHandlerOneParamWithReturn {
- NSDictionary *error = nil;
- // Note case change in executeHandler call
- NSAppleEventDescriptor *desc
- = [script_ gtm_executePositionalHandler:@"testreturnParam"
- parameters:nil
- error:&error];
- STAssertNil(desc, @"Desc should by nil %@", desc);
- STAssertNotNil(error, nil);
- error = nil;
-
- desc = [script_ gtm_executePositionalHandler:@"testReturnParam"
- parameters:[NSArray array]
- error:&error];
- STAssertNil(desc, @"Desc should by nil %@", desc);
-
- // Verify that our error handling is working correctly.
- STAssertEquals([[error allKeys] count], (NSUInteger)6, @"%@", error);
- STAssertNotNil([error objectForKey:GTMNSAppleScriptErrorOffendingObject],
- @"%@", error);
- STAssertNotNil([error objectForKey:GTMNSAppleScriptErrorPartialResult],
- @"%@", error);
-
- error = nil;
-
- desc = [script_ gtm_executePositionalHandler:@"testReturnParam"
- parameters:[NSArray arrayWithObject:@"foo"]
- error:&error];
- STAssertNotNil(desc, [error description]);
- STAssertNil(error, @"Error should be nil. Error = %@", [error description]);
- STAssertEquals([desc descriptorType], (DescType)typeUnicodeText, nil);
- STAssertEqualObjects([desc gtm_objectValue], @"foo", nil);
-}
-
-- (void)testHandlerTwoParamsWithReturn {
- NSDictionary *error = nil;
- // Note case change in executeHandler call
- // Test case and empty params
- NSAppleEventDescriptor *desc
- = [script_ gtm_executePositionalHandler:@"testADDPArams"
- parameters:nil
- error:&error];
- STAssertNil(desc, @"Desc should by nil %@", desc);
- STAssertNotNil(error, nil);
-
- // Test empty params
- error = nil;
- desc = [script_ gtm_executePositionalHandler:@"testAddParams"
- parameters:[NSArray array]
- error:&error];
- STAssertNil(desc, @"Desc should by nil %@", desc);
- STAssertNotNil(error, nil);
-
- error = nil;
- NSArray *args = [NSArray arrayWithObjects:
- [NSNumber numberWithInt:1],
- [NSNumber numberWithInt:2],
- nil];
- desc = [script_ gtm_executePositionalHandler:@"testAddParams"
- parameters:args
- error:&error];
- STAssertNotNil(desc, [error description]);
- STAssertNil(error, @"Error should be nil. Error = %@", [error description]);
- STAssertEquals([desc descriptorType], (DescType)typeSInt32, nil);
- STAssertEquals([desc int32Value], (SInt32)3, nil);
-
- // Test bad params
- error = nil;
- args = [NSArray arrayWithObjects:
- @"foo",
- @"bar",
- nil];
- desc = [script_ gtm_executePositionalHandler:@"testAddParams"
- parameters:args
- error:&error];
- STAssertNil(desc, @"Desc should by nil %@", desc);
- STAssertNotNil(error, nil);
-
- // Test too many params. Currently Applescript allows this so it should pass
- error = nil;
- args = [NSArray arrayWithObjects:
- [NSNumber numberWithInt:1],
- [NSNumber numberWithInt:2],
- [NSNumber numberWithInt:3],
- nil];
- desc = [script_ gtm_executePositionalHandler:@"testAddParams"
- parameters:args
- error:&error];
- STAssertNotNil(desc, [error description]);
- STAssertNil(error, @"Error should be nil. Error = %@", [error description]);
- STAssertEquals([desc descriptorType], (DescType)typeSInt32, nil);
- STAssertEquals([desc int32Value], (SInt32)3, nil);}
-
-- (void)testLabeledHandler {
- NSDictionary *error = nil;
- AEKeyword labels[] = { keyDirectObject,
- keyASPrepositionOnto,
- keyASPrepositionGiven };
- id params[3];
- params[0] = [NSNumber numberWithInt:1];
- params[1] = [NSNumber numberWithInt:3];
- params[2] = [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:4]
- forKey:@"othervalue"];
-
- NSAppleEventDescriptor *desc
- = [script_ gtm_executeLabeledHandler:@"testAdd"
- labels:labels
- parameters:params
- count:sizeof(params) / sizeof(id)
- error:&error];
- STAssertNotNil(desc, [error description]);
- STAssertNil(error, @"Error should be nil. Error = %@", [error description]);
- STAssertEquals([desc descriptorType], (DescType)typeSInt32, nil);
- STAssertEquals([desc int32Value], (SInt32)8, nil);
-
- // Test too many params. Currently Applescript allows this so it should pass
- AEKeyword labels2[] = { keyDirectObject,
- keyASPrepositionOnto,
- keyASPrepositionBetween,
- keyASPrepositionGiven };
- id params2[4];
- params2[0] = [NSNumber numberWithInt:1];
- params2[1] = [NSNumber numberWithInt:3];
- params2[2] = [NSNumber numberWithInt:5];
- params2[3] = [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:4]
- forKey:@"othervalue"];
-
- error = nil;
- desc = [script_ gtm_executeLabeledHandler:@"testAdd"
- labels:labels2
- parameters:params2
- count:sizeof(params2) / sizeof(id)
- error:&error];
- STAssertNotNil(desc, [error description]);
- STAssertNil(error, @"Error should be nil. Error = %@", [error description]);
- STAssertEquals([desc descriptorType], (DescType)typeSInt32, nil);
- STAssertEquals([desc int32Value], (SInt32)8, nil);}
-
-- (void)testHandlers {
- NSSet *handlers = [script_ gtm_handlers];
- NSSet *expected = [NSSet setWithObjects:
- @"aevtpdoc",
- @"test",
- @"testreturnone",
- @"testreturnparam",
- @"testaddparams",
- @"testadd",
- @"testgetscript",
- nil];
- if ([GTMSystemVersion isSnowLeopardOrGreater]) {
- // Workaround for bug in SnowLeopard
- // rdar://66688601 OSAGetHandlersNames returns names in camelcase instead
- // of smallcaps.
- handlers = [handlers valueForKey:@"lowercaseString"];
- }
- STAssertEqualObjects(handlers, expected, @"Unexpected handlers?");
-}
-
-- (void)testInheritedHandlers {
- NSDictionary *error = nil;
- NSAppleEventDescriptor *desc
- = [script_ gtm_executePositionalHandler:@"testGetScript"
- parameters:nil
- error:&error];
- STAssertNil(error, nil);
- STAssertNotNil(desc, nil);
- NSAppleScript *script = [desc gtm_objectValue];
- STAssertTrue([script isKindOfClass:[NSAppleScript class]], nil);
- error = nil;
- desc = [script gtm_executePositionalHandler:@"parentTestScriptFunc"
- parameters:nil error:&error];
- STAssertNil(error, nil);
- STAssertNotNil(desc, nil);
- NSString *value = [desc gtm_objectValue];
- STAssertEqualObjects(value, @"parent", nil);
-}
-
-- (void)testProperties {
- NSDictionary *error = nil;
- NSAppleEventDescriptor *desc
- = [script_ gtm_executePositionalHandler:@"testGetScript"
- parameters:nil
- error:&error];
- STAssertNil(error, nil);
- STAssertNotNil(desc, nil);
- NSAppleScript *script = [desc gtm_objectValue];
- STAssertTrue([script isKindOfClass:[NSAppleScript class]], nil);
-
- NSSet *properties = [script gtm_properties];
- NSSet *expected
- = [NSSet setWithObjects:
- @"testscriptproperty",
- @"parenttestscriptproperty",
- @"foo",
- @"testscript",
- @"parenttestscript",
- @"asdscriptuniqueidentifier",
- [GTMFourCharCode fourCharCodeWithFourCharCode:pVersion],
- [GTMFourCharCode fourCharCodeWithFourCharCode:pASPrintDepth],
- [GTMFourCharCode fourCharCodeWithFourCharCode:pASTopLevelScript],
- [GTMFourCharCode fourCharCodeWithFourCharCode:pASResult],
- [GTMFourCharCode fourCharCodeWithFourCharCode:pASMinutes],
- [GTMFourCharCode fourCharCodeWithFourCharCode:pASDays],
- // No constant for linefeed in the 10.5 sdk
- // Radar 6132775 Need a constant for the Applescript Property 'lnfd'
- [GTMFourCharCode fourCharCodeWithFourCharCode:'lnfd'],
- [GTMFourCharCode fourCharCodeWithFourCharCode:pASPi],
- [GTMFourCharCode fourCharCodeWithFourCharCode:pASReturn],
- [GTMFourCharCode fourCharCodeWithFourCharCode:pASSpace],
- [GTMFourCharCode fourCharCodeWithFourCharCode:pASPrintLength],
- [GTMFourCharCode fourCharCodeWithFourCharCode:pASQuote],
- [GTMFourCharCode fourCharCodeWithFourCharCode:pASWeeks],
- [GTMFourCharCode fourCharCodeWithFourCharCode:pTextItemDelimiters],
- // Applescript properties should be pASSeconds, but
- // on 10.5.4/10.5.5 it is actually using cSeconds.
- // Radar 6132696 Applescript root level property is cSeconds
- // instead of pASSeconds
- [GTMFourCharCode fourCharCodeWithFourCharCode:cSeconds],
- [GTMFourCharCode fourCharCodeWithFourCharCode:pASHours],
- [GTMFourCharCode fourCharCodeWithFourCharCode:pASTab],
- nil];
- if ([GTMSystemVersion isSnowLeopardOrGreater]) {
- // Workaround for bug in SnowLeopard
- // rdar://6289077 OSAGetPropertyNames returns names in camelcase instead
- // of lowercase.
- id obj;
- NSMutableSet *properties2 = [NSMutableSet set];
- GTM_FOREACH_OBJECT(obj, properties) {
- if ([obj isKindOfClass:[NSString class]]) {
- obj = [obj lowercaseString];
- }
- [properties2 addObject:obj];
- }
- properties = properties2;
- }
- STAssertEqualObjects(properties, expected, @"Unexpected properties?");
- id value = [script gtm_valueForProperty:@"testScriptProperty"];
- STAssertEqualObjects(value, [NSNumber numberWithInt:5], @"bad property?");
- BOOL goodSet = [script gtm_setValue:@"bar"
- forProperty:@"foo"
- addingDefinition:NO];
- STAssertTrue(goodSet, @"Couldn't set property");
-
- // Test local set
- value = [script gtm_valueForProperty:@"foo"];
- STAssertEqualObjects(value, @"bar", @"bad property?");
-
- // Test inherited set
- value = [script_ gtm_valueForProperty:@"foo"];
- STAssertEqualObjects(value, @"bar", @"bad property?");
-
- [GTMUnitTestDevLog expectPattern:@"Unable to setValue:bar forProperty:"
- "\\(null\\) from <NSAppleScript: 0x[0-9a-f]+> \\(-50\\)"];
- goodSet = [script gtm_setValue:@"bar"
- forProperty:nil
- addingDefinition:NO];
- STAssertFalse(goodSet, @"Set property?");
-
- [GTMUnitTestDevLog expectPattern:@"Unable to setValue:bar forProperty:3"
- " from <NSAppleScript: 0x[0-9a-f]+> \\(-50\\)"];
- goodSet = [script gtm_setValue:@"bar"
- forProperty:[NSNumber numberWithInt:3]
- addingDefinition:YES];
- STAssertFalse(goodSet, @"Set property?");
-
-
- [GTMUnitTestDevLog expectPattern:@"Unable to get valueForProperty:gargle "
- "from <NSAppleScript: 0x[0-9a-f]+> \\(-1753\\)"];
- value = [script gtm_valueForProperty:@"gargle"];
- STAssertNil(value, @"Property named gargle?");
-
- goodSet = [script_ gtm_setValue:@"wow"
- forProperty:@"addedProperty"
- addingDefinition:YES];
- STAssertTrue(goodSet, @"Unable to addProperty");
-
- value = [script gtm_valueForProperty:@"addedProperty"];
- STAssertNotNil(value, nil);
- STAssertEqualObjects(value, @"wow", nil);
-
- // http://www.straightdope.com/classics/a3_341.html
- NSNumber *newPI = [NSNumber numberWithInt:3];
- goodSet = [script gtm_setValue:newPI
- forPropertyEnum:pASPi
- addingDefinition:NO];
- STAssertTrue(goodSet, @"Unable to set property");
- value = [script_ gtm_valueForPropertyEnum:pASPi];
- STAssertNotNil(value, nil);
- STAssertEqualObjects(value, newPI, @"bad property");
-}
-
-- (void)testFailures {
- NSDictionary *error = nil;
- NSAppleEventDescriptor *desc
- = [script_ gtm_executePositionalHandler:@"noSuchTest"
- parameters:nil
- error:&error];
- STAssertNil(desc, nil);
- STAssertNotNil(error, nil);
-
- // Test with empty handler name
- error = nil;
- desc = [script_ gtm_executePositionalHandler:@""
- parameters:[NSArray array]
- error:&error];
- STAssertNil(desc, nil);
- STAssertNotNil(error, nil);
-
- // Test with nil handler
- error = nil;
- desc = [script_ gtm_executePositionalHandler:nil
- parameters:[NSArray array]
- error:&error];
- STAssertNil(desc, nil);
- STAssertNotNil(error, nil);
-
- // Test with nil handler and nil error
- desc = [script_ gtm_executePositionalHandler:nil
- parameters:nil
- error:nil];
- STAssertNil(desc, nil);
-
- // Test with a bad script
- NSAppleScript *script
- = [[[NSAppleScript alloc] initWithSource:@"david hasselhoff"] autorelease];
- [GTMUnitTestDevLog expectPattern:@"Unable to compile script: .*"];
- [GTMUnitTestDevLog expectString:@"Unable to coerce script -2147450879"];
- NSSet *handlers = [script gtm_handlers];
- STAssertEquals([handlers count], (NSUInteger)0, @"Should have no handlers");
- [GTMUnitTestDevLog expectPattern:@"Unable to compile script: .*"];
- [GTMUnitTestDevLog expectString:@"Unable to coerce script -2147450879"];
- NSSet *properties = [script gtm_properties];
- STAssertEquals([properties count],
- (NSUInteger)0,
- @"Should have no properties");
- [GTMUnitTestDevLog expectPattern:@"Unable to compile script: .*"];
- [GTMUnitTestDevLog expectString:@"Unable to get script info about "
- @"open handler -2147450879"];
- STAssertFalse([script gtm_hasOpenDocumentsHandler],
- @"Has an opendoc handler?");
-}
-
-- (void)testScriptDescriptors {
- NSAppleEventDescriptor *desc = [script_ gtm_appleEventDescriptor];
- STAssertNotNil(desc, @"Couldn't make a script desc");
- NSAppleScript *script = [desc gtm_objectValue];
- STAssertNotNil(script, @"Couldn't get a script back");
- NSSet *handlers = [script gtm_handlers];
- STAssertNotNil(handlers, @"Couldn't get handlers");
-}
-
-- (void)testOpenHandler {
- STAssertFalse([script_ gtm_hasOpenDocumentsHandler], nil);
- id script = [script_ gtm_valueForProperty:@"testscript"];
- STAssertNotNil(script, nil);
- STAssertTrue([script gtm_hasOpenDocumentsHandler], nil);
-}
-
-- (void)testForwarding {
- id<ScriptInterface> foo = (id<ScriptInterface>)script_;
- [foo test];
- NSNumber *val = [foo testReturnParam:[NSNumber numberWithInt:2]];
- STAssertEquals([val intValue], 2, @"should be 2");
- val = [foo testAddParams:[NSNumber numberWithInt:2]
- :[NSNumber numberWithInt:3]];
- STAssertEquals([val intValue], 5, @"should be 5");
-}
-@end
diff --git a/Foundation/GTMNSArray+Merge.m b/Foundation/GTMNSArray+Merge.m
index 5bf07c8..4b67853 100644
--- a/Foundation/GTMNSArray+Merge.m
+++ b/Foundation/GTMNSArray+Merge.m
@@ -6,13 +6,13 @@
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy
// of the License at
-//
+//
// http://www.apache.org/licenses/LICENSE-2.0
-//
+//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations
+// License for the specific language governing permissions and limitations
// under the License.
//
@@ -48,20 +48,20 @@
[mergingArray sortUsingSelector:comparer];
NSArray *sortedNewArray
= [newArray sortedArrayUsingSelector:comparer];
-
+
NSUInteger oldIndex = 0;
NSUInteger oldCount = [mergingArray count];
id oldItem = (oldIndex < oldCount)
? [mergingArray objectAtIndex:0]
: nil;
-
+
id newItem = nil;
- GTM_FOREACH_OBJECT(newItem, sortedNewArray) {
+ for (newItem in sortedNewArray) {
BOOL stillLooking = YES;
while (oldIndex < oldCount && stillLooking) {
// We must take care here, since Intel leaves junk in high bytes of
// return register for predicates that return BOOL.
- // For details see:
+ // For details see:
// http://developer.apple.com/documentation/MacOSX/Conceptual/universal_binary/universal_binary_tips/chapter_5_section_23.html
// and
// http://www.red-sweater.com/blog/320/abusing-objective-c-with-class#comment-83187
diff --git a/Foundation/GTMNSArray+MergeTest.m b/Foundation/GTMNSArray+MergeTest.m
index 9148ba7..535e0ce 100644
--- a/Foundation/GTMNSArray+MergeTest.m
+++ b/Foundation/GTMNSArray+MergeTest.m
@@ -37,8 +37,8 @@
NSArray *emptyArrayB = [NSArray array];
NSArray *mergedArray = [emptyArrayA gtm_mergeArray:emptyArrayB
mergeSelector:nil];
- STAssertNil(mergedArray,
- @"merge of two empty arrays with no merger should render nil");
+ XCTAssertNil(mergedArray,
+ @"merge of two empty arrays with no merger should render nil");
}
- (void)testMergingTwoEmptyArraysWithMerger {
@@ -47,8 +47,8 @@
NSArray *mergedArray
= [emptyArrayA gtm_mergeArray:emptyArrayB
mergeSelector:@selector(mergeString:)];
- STAssertNil(mergedArray,
- @"merge of two empty arrays with merger should render nil");
+ XCTAssertNil(mergedArray,
+ @"merge of two empty arrays with merger should render nil");
}
- (void)testMergingEmptyWithNilArray {
@@ -56,8 +56,8 @@
NSArray *nilArrayB = nil;
NSArray *mergedArray = [emptyArrayA gtm_mergeArray:nilArrayB
mergeSelector:nil];
- STAssertNil(mergedArray,
- @"merge of empty with nil array with no merger should render nil");
+ XCTAssertNil(mergedArray,
+ @"merge of empty with nil array with no merger should render nil");
}
- (void)testMergingEmptyWithNilArrayWithMerger {
@@ -66,8 +66,8 @@
NSArray *mergedArray
= [emptyArrayA gtm_mergeArray:nilArrayB
mergeSelector:@selector(mergeString:)];
- STAssertNil(mergedArray,
- @"merge of empty with nil array with merger should render nil");
+ XCTAssertNil(mergedArray,
+ @"merge of empty with nil array with merger should render nil");
}
- (void)testMergingTwoOneItemArraysThatDontMatch {
@@ -75,13 +75,13 @@
NSArray *arrayB = [NSArray arrayWithObject:@"abc.ghi"];
NSArray *mergedArray = [arrayA gtm_mergeArray:arrayB
mergeSelector:nil];
- STAssertNotNil(mergedArray,
- @"merge of two non empty arrays with no merger should render "
- @"an array");
- STAssertEquals([mergedArray count], (NSUInteger)2,
+ XCTAssertNotNil(mergedArray,
+ @"merge of two non empty arrays with no merger should render "
+ @"an array");
+ XCTAssertEqual([mergedArray count], (NSUInteger)2,
@"merged array should have two items");
- STAssertEqualObjects([mergedArray objectAtIndex:0], @"abc.def", nil);
- STAssertEqualObjects([mergedArray objectAtIndex:1], @"abc.ghi", nil);
+ XCTAssertEqualObjects([mergedArray objectAtIndex:0], @"abc.def");
+ XCTAssertEqualObjects([mergedArray objectAtIndex:1], @"abc.ghi");
}
- (void)testMergingTwoOneItemArraysThatDontMatchWithMerger {
@@ -89,13 +89,13 @@
NSArray *arrayB = [NSArray arrayWithObject:@"abc.ghi"];
NSArray *mergedArray = [arrayA gtm_mergeArray:arrayB
mergeSelector:@selector(mergeString:)];
- STAssertNotNil(mergedArray,
- @"merge of two non empty arrays with merger should render "
- @"an array");
- STAssertEquals([mergedArray count], (NSUInteger)2,
+ XCTAssertNotNil(mergedArray,
+ @"merge of two non empty arrays with merger should render "
+ @"an array");
+ XCTAssertEqual([mergedArray count], (NSUInteger)2,
@"merged array should have two items");
- STAssertEqualObjects([mergedArray objectAtIndex:0], @"abc.def", nil);
- STAssertEqualObjects([mergedArray objectAtIndex:1], @"abc.ghi", nil);
+ XCTAssertEqualObjects([mergedArray objectAtIndex:0], @"abc.def");
+ XCTAssertEqualObjects([mergedArray objectAtIndex:1], @"abc.ghi");
}
- (void)testMergingTwoOneItemArraysThatMatch {
@@ -103,13 +103,13 @@
NSArray *arrayB = [NSArray arrayWithObject:@"abc.def"];
NSArray *mergedArray = [arrayA gtm_mergeArray:arrayB
mergeSelector:nil];
- STAssertNotNil(mergedArray,
- @"merge of two matching arrays with no merger should render "
- @"an array");
- STAssertEquals([mergedArray count], (NSUInteger)2,
+ XCTAssertNotNil(mergedArray,
+ @"merge of two matching arrays with no merger should render "
+ @"an array");
+ XCTAssertEqual([mergedArray count], (NSUInteger)2,
@"merged array with no merger should have two items");
- STAssertEqualObjects([mergedArray objectAtIndex:0], @"abc.def", nil);
- STAssertEqualObjects([mergedArray objectAtIndex:1], @"abc.def", nil);
+ XCTAssertEqualObjects([mergedArray objectAtIndex:0], @"abc.def");
+ XCTAssertEqualObjects([mergedArray objectAtIndex:1], @"abc.def");
}
- (void)testMergingTwoOneItemArraysThatMatchWithMerger {
@@ -117,12 +117,12 @@
NSArray *arrayB = [NSArray arrayWithObject:@"abc.def"];
NSArray *mergedArray = [arrayA gtm_mergeArray:arrayB
mergeSelector:@selector(mergeString:)];
- STAssertNotNil(mergedArray,
- @"merge of two matching arrays with merger should render "
- @"an array");
- STAssertEquals([mergedArray count], (NSUInteger)1,
+ XCTAssertNotNil(mergedArray,
+ @"merge of two matching arrays with merger should render "
+ @"an array");
+ XCTAssertEqual([mergedArray count], (NSUInteger)1,
@"merged array with merger should have one items");
- STAssertEqualObjects([mergedArray objectAtIndex:0], @"abc.def", nil);
+ XCTAssertEqualObjects([mergedArray objectAtIndex:0], @"abc.def");
}
- (void)testMergingMultipleItemArray {
@@ -141,10 +141,10 @@
nil];
NSArray *mergedArray = [arrayA gtm_mergeArray:arrayB
mergeSelector:nil];
- STAssertNotNil(mergedArray,
- @"merge of two non empty arrays with no merger should render "
- @"an array");
- STAssertEquals([mergedArray count], (NSUInteger)9,
+ XCTAssertNotNil(mergedArray,
+ @"merge of two non empty arrays with no merger should render "
+ @"an array");
+ XCTAssertEqual([mergedArray count], (NSUInteger)9,
@"merged array should have 9 items");
}
@@ -164,10 +164,10 @@
nil];
NSArray *mergedArray = [arrayA gtm_mergeArray:arrayB
mergeSelector:@selector(mergeString:)];
- STAssertNotNil(mergedArray,
- @"merge of two non empty arrays with merger should render "
- @"an array");
- STAssertEquals([mergedArray count], (NSUInteger)7,
+ XCTAssertNotNil(mergedArray,
+ @"merge of two non empty arrays with merger should render "
+ @"an array");
+ XCTAssertEqual([mergedArray count], (NSUInteger)7,
@"merged array should have 7 items");
}
@@ -175,35 +175,34 @@
NSArray *arrayA = [NSArray arrayWithObjects:@"xyz", @"abc", @"mno", nil];
NSArray *arrayB = [NSArray array];
NSArray *expected = [NSArray arrayWithObjects:@"abc", @"mno", @"xyz", nil];
- STAssertNotNil(arrayA, nil);
- STAssertNotNil(arrayB, nil);
- STAssertNotNil(expected, nil);
+ XCTAssertNotNil(arrayA);
+ XCTAssertNotNil(arrayB);
+ XCTAssertNotNil(expected);
NSArray *mergedArray;
// no merger
mergedArray = [arrayA gtm_mergeArray:arrayB
mergeSelector:nil];
- STAssertNotNil(mergedArray, nil);
- STAssertEqualObjects(mergedArray, expected, nil);
+ XCTAssertNotNil(mergedArray);
+ XCTAssertEqualObjects(mergedArray, expected);
// w/ merger
mergedArray = [arrayA gtm_mergeArray:arrayB
mergeSelector:@selector(mergeString:)];
- STAssertNotNil(mergedArray, nil);
- STAssertEqualObjects(mergedArray, expected, nil);
+ XCTAssertNotNil(mergedArray);
+ XCTAssertEqualObjects(mergedArray, expected);
// no merger and array args reversed
mergedArray = [arrayB gtm_mergeArray:arrayA
mergeSelector:nil];
- STAssertNotNil(mergedArray, nil);
- STAssertEqualObjects(mergedArray, expected, nil);
+ XCTAssertNotNil(mergedArray);
+ XCTAssertEqualObjects(mergedArray, expected);
// w/ merger and array args reversed
mergedArray = [arrayB gtm_mergeArray:arrayA
mergeSelector:@selector(mergeString:)];
- STAssertNotNil(mergedArray, nil);
- STAssertEqualObjects(mergedArray, expected, nil);
-
+ XCTAssertNotNil(mergedArray);
+ XCTAssertEqualObjects(mergedArray, expected);
}
@end
diff --git a/Foundation/GTMNSData+zlib.h b/Foundation/GTMNSData+zlib.h
index 08fbb9a..dceadc4 100644
--- a/Foundation/GTMNSData+zlib.h
+++ b/Foundation/GTMNSData+zlib.h
@@ -33,22 +33,34 @@
// Uses the default compression level.
+ (NSData *)gtm_dataByGzippingBytes:(const void *)bytes
length:(NSUInteger)length;
++ (NSData *)gtm_dataByGzippingBytes:(const void *)bytes
+ length:(NSUInteger)length
+ error:(NSError **)error;
/// Return an autoreleased NSData w/ the result of gzipping the payload of |data|.
//
// Uses the default compression level.
-+ (NSData *)gtm_dataByGzippingData:(NSData *)data;
++ (NSData *)gtm_dataByGzippingData:(NSData *)data __attribute__((deprecated("Use error variant")));
++ (NSData *)gtm_dataByGzippingData:(NSData *)data
+ error:(NSError **)error;
/// Return an autoreleased NSData w/ the result of gzipping the bytes using |level| compression level.
//
// |level| can be 1-9, any other values will be clipped to that range.
+ (NSData *)gtm_dataByGzippingBytes:(const void *)bytes
length:(NSUInteger)length
- compressionLevel:(int)level;
+ compressionLevel:(int)level __attribute__((deprecated("Use error variant")));
++ (NSData *)gtm_dataByGzippingBytes:(const void *)bytes
+ length:(NSUInteger)length
+ compressionLevel:(int)level
+ error:(NSError **)error;
/// Return an autoreleased NSData w/ the result of gzipping the payload of |data| using |level| compression level.
+ (NSData *)gtm_dataByGzippingData:(NSData *)data
- compressionLevel:(int)level;
+ compressionLevel:(int)level __attribute__((deprecated("Use error variant")));
++ (NSData *)gtm_dataByGzippingData:(NSData *)data
+ compressionLevel:(int)level
+ error:(NSError **)error;
#pragma mark Zlib "Stream" Compression
@@ -59,23 +71,35 @@
//
// Uses the default compression level.
+ (NSData *)gtm_dataByDeflatingBytes:(const void *)bytes
- length:(NSUInteger)length;
+ length:(NSUInteger)length __attribute__((deprecated("Use error variant")));
++ (NSData *)gtm_dataByDeflatingBytes:(const void *)bytes
+ length:(NSUInteger)length
+ error:(NSError **)error;
/// Return an autoreleased NSData w/ the result of deflating the payload of |data|.
//
// Uses the default compression level.
-+ (NSData *)gtm_dataByDeflatingData:(NSData *)data;
++ (NSData *)gtm_dataByDeflatingData:(NSData *)data __attribute__((deprecated("Use error variant")));
++ (NSData *)gtm_dataByDeflatingData:(NSData *)data
+ error:(NSError **)error;
/// Return an autoreleased NSData w/ the result of deflating the bytes using |level| compression level.
//
// |level| can be 1-9, any other values will be clipped to that range.
+ (NSData *)gtm_dataByDeflatingBytes:(const void *)bytes
length:(NSUInteger)length
- compressionLevel:(int)level;
+ compressionLevel:(int)level __attribute__((deprecated("Use error variant")));
++ (NSData *)gtm_dataByDeflatingBytes:(const void *)bytes
+ length:(NSUInteger)length
+ compressionLevel:(int)level
+ error:(NSError **)error;
/// Return an autoreleased NSData w/ the result of deflating the payload of |data| using |level| compression level.
+ (NSData *)gtm_dataByDeflatingData:(NSData *)data
- compressionLevel:(int)level;
+ compressionLevel:(int)level __attribute__((deprecated("Use error variant")));
++ (NSData *)gtm_dataByDeflatingData:(NSData *)data
+ compressionLevel:(int)level
+ error:(NSError **)error;
#pragma mark Uncompress of Gzip or Zlib
@@ -83,13 +107,17 @@
//
// The bytes to decompress can be zlib or gzip payloads.
+ (NSData *)gtm_dataByInflatingBytes:(const void *)bytes
- length:(NSUInteger)length;
+ length:(NSUInteger)length __attribute__((deprecated("Use error variant")));
++ (NSData *)gtm_dataByInflatingBytes:(const void *)bytes
+ length:(NSUInteger)length
+ error:(NSError **)error;
/// Return an autoreleased NSData w/ the result of decompressing the payload of |data|.
//
// The data to decompress can be zlib or gzip payloads.
-+ (NSData *)gtm_dataByInflatingData:(NSData *)data;
-
++ (NSData *)gtm_dataByInflatingData:(NSData *)data __attribute__((deprecated("Use error variant")));
++ (NSData *)gtm_dataByInflatingData:(NSData *)data
+ error:(NSError **)error;
#pragma mark "Raw" Compression Support
@@ -103,13 +131,18 @@
// Uses the default compression level.
// *No* header is added to the resulting data.
+ (NSData *)gtm_dataByRawDeflatingBytes:(const void *)bytes
- length:(NSUInteger)length;
+ length:(NSUInteger)length __attribute__((deprecated("Use error variant")));
++ (NSData *)gtm_dataByRawDeflatingBytes:(const void *)bytes
+ length:(NSUInteger)length
+ error:(NSError **)error;
/// Return an autoreleased NSData w/ the result of *raw* deflating the payload of |data|.
//
// Uses the default compression level.
// *No* header is added to the resulting data.
-+ (NSData *)gtm_dataByRawDeflatingData:(NSData *)data;
++ (NSData *)gtm_dataByRawDeflatingData:(NSData *)data __attribute__((deprecated("Use error variant")));
++ (NSData *)gtm_dataByRawDeflatingData:(NSData *)data
+ error:(NSError **)error;
/// Return an autoreleased NSData w/ the result of *raw* deflating the bytes using |level| compression level.
//
@@ -117,22 +150,50 @@
// *No* header is added to the resulting data.
+ (NSData *)gtm_dataByRawDeflatingBytes:(const void *)bytes
length:(NSUInteger)length
- compressionLevel:(int)level;
+ compressionLevel:(int)level __attribute__((deprecated("Use error variant")));
++ (NSData *)gtm_dataByRawDeflatingBytes:(const void *)bytes
+ length:(NSUInteger)length
+ compressionLevel:(int)level
+ error:(NSError **)error;
/// Return an autoreleased NSData w/ the result of *raw* deflating the payload of |data| using |level| compression level.
// *No* header is added to the resulting data.
+ (NSData *)gtm_dataByRawDeflatingData:(NSData *)data
- compressionLevel:(int)level;
+ compressionLevel:(int)level __attribute__((deprecated("Use error variant")));
++ (NSData *)gtm_dataByRawDeflatingData:(NSData *)data
+ compressionLevel:(int)level
+ error:(NSError **)error;
/// Return an autoreleased NSData w/ the result of *raw* decompressing the bytes.
//
// The data to decompress, it should *not* have any header (zlib nor gzip).
+ (NSData *)gtm_dataByRawInflatingBytes:(const void *)bytes
- length:(NSUInteger)length;
+ length:(NSUInteger)length __attribute__((deprecated("Use error variant")));
++ (NSData *)gtm_dataByRawInflatingBytes:(const void *)bytes
+ length:(NSUInteger)length
+ error:(NSError **)error;
/// Return an autoreleased NSData w/ the result of *raw* decompressing the payload of |data|.
//
// The data to decompress, it should *not* have any header (zlib nor gzip).
-+ (NSData *)gtm_dataByRawInflatingData:(NSData *)data;
++ (NSData *)gtm_dataByRawInflatingData:(NSData *)data __attribute__((deprecated("Use error variant")));
++ (NSData *)gtm_dataByRawInflatingData:(NSData *)data
+ error:(NSError **)error;
@end
+
+FOUNDATION_EXPORT NSString *const GTMNSDataZlibErrorDomain;
+FOUNDATION_EXPORT NSString *const GTMNSDataZlibErrorKey; // NSNumber
+FOUNDATION_EXPORT NSString *const GTMNSDataZlibRemainingBytesKey; // NSNumber
+
+typedef NS_ENUM(NSInteger, GTMNSDataZlibError) {
+ GTMNSDataZlibErrorGreaterThan32BitsToCompress = 1024,
+ // An internal zlib error.
+ // GTMNSDataZlibErrorKey will contain the error value.
+ // NSLocalizedDescriptionKey may contain an error string from zlib.
+ // Look in zlib.h for list of errors.
+ GTMNSDataZlibErrorInternal,
+ // There was left over data in the buffer that was not used.
+ // GTMNSDataZlibRemainingBytesKey will contain number of remaining bytes.
+ GTMNSDataZlibErrorDataRemaining
+};
diff --git a/Foundation/GTMNSData+zlib.m b/Foundation/GTMNSData+zlib.m
index 4f8df8c..bf74b2d 100644
--- a/Foundation/GTMNSData+zlib.m
+++ b/Foundation/GTMNSData+zlib.m
@@ -20,12 +20,12 @@
#import <zlib.h>
#import "GTMDefines.h"
-// Export a nonsense symbol to suppress a libtool warning when this is linked alone in a static lib.
-__attribute__((visibility("default"))) char GTMNSDataZLibExportToSuppressLibToolWarning = 0;
-
-
#define kChunkSize 1024
+NSString *const GTMNSDataZlibErrorDomain = @"com.google.GTMNSDataZlibErrorDomain";
+NSString *const GTMNSDataZlibErrorKey = @"GTMNSDataZlibErrorKey";
+NSString *const GTMNSDataZlibRemainingBytesKey = @"GTMNSDataZlibRemainingBytesKey";
+
typedef enum {
CompressionModeZlib,
CompressionModeGzip,
@@ -36,10 +36,12 @@ typedef enum {
+ (NSData *)gtm_dataByCompressingBytes:(const void *)bytes
length:(NSUInteger)length
compressionLevel:(int)level
- mode:(CompressionMode)mode;
+ mode:(CompressionMode)mode
+ error:(NSError **)error;
+ (NSData *)gtm_dataByInflatingBytes:(const void *)bytes
length:(NSUInteger)length
- isRawData:(BOOL)isRawData;
+ isRawData:(BOOL)isRawData
+ error:(NSError **)error;
@end
@implementation NSData (GTMZlibAdditionsPrivate)
@@ -47,7 +49,8 @@ typedef enum {
+ (NSData *)gtm_dataByCompressingBytes:(const void *)bytes
length:(NSUInteger)length
compressionLevel:(int)level
- mode:(CompressionMode)mode {
+ mode:(CompressionMode)mode
+ error:(NSError **)error {
if (!bytes || !length) {
return nil;
}
@@ -55,6 +58,11 @@ typedef enum {
#if defined(__LP64__) && __LP64__
// Don't support > 32bit length for 64 bit, see note in header.
if (length > UINT_MAX) {
+ if (error) {
+ *error = [NSError errorWithDomain:GTMNSDataZlibErrorDomain
+ code:GTMNSDataZlibErrorGreaterThan32BitsToCompress
+ userInfo:nil];
+ }
return nil;
}
#endif
@@ -90,8 +98,13 @@ typedef enum {
if ((retCode = deflateInit2(&strm, level, Z_DEFLATED, windowBits,
memLevel, Z_DEFAULT_STRATEGY)) != Z_OK) {
// COV_NF_START - no real way to force this in a unittest (we guard all args)
- _GTMDevLog(@"Failed to init for deflate w/ level %d, error %d",
- level, retCode);
+ if (error) {
+ NSDictionary *userInfo = [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:retCode]
+ forKey:GTMNSDataZlibErrorKey];
+ *error = [NSError errorWithDomain:GTMNSDataZlibErrorDomain
+ code:GTMNSDataZlibErrorInternal
+ userInfo:userInfo];
+ }
return nil;
// COV_NF_END
}
@@ -115,8 +128,13 @@ typedef enum {
// (in inflate, we can feed bogus/truncated data to test, but an error
// here would be some internal issue w/in zlib, and there isn't any real
// way to test it)
- _GTMDevLog(@"Error trying to deflate some of the payload, error %d",
- retCode);
+ if (error) {
+ NSDictionary *userInfo = [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:retCode]
+ forKey:GTMNSDataZlibErrorKey];
+ *error = [NSError errorWithDomain:GTMNSDataZlibErrorDomain
+ code:GTMNSDataZlibErrorInternal
+ userInfo:userInfo];
+ }
deflateEnd(&strm);
return nil;
// COV_NF_END
@@ -145,7 +163,8 @@ typedef enum {
+ (NSData *)gtm_dataByInflatingBytes:(const void *)bytes
length:(NSUInteger)length
- isRawData:(BOOL)isRawData {
+ isRawData:(BOOL)isRawData
+ error:(NSError **)error {
if (!bytes || !length) {
return nil;
}
@@ -174,7 +193,13 @@ typedef enum {
int retCode;
if ((retCode = inflateInit2(&strm, windowBits)) != Z_OK) {
// COV_NF_START - no real way to force this in a unittest (we guard all args)
- _GTMDevLog(@"Failed to init for inflate, error %d", retCode);
+ if (error) {
+ NSDictionary *userInfo = [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:retCode]
+ forKey:GTMNSDataZlibErrorKey];
+ *error = [NSError errorWithDomain:GTMNSDataZlibErrorDomain
+ code:GTMNSDataZlibErrorInternal
+ userInfo:userInfo];
+ }
return nil;
// COV_NF_END
}
@@ -190,8 +215,20 @@ typedef enum {
strm.next_out = output;
retCode = inflate(&strm, Z_NO_FLUSH);
if ((retCode != Z_OK) && (retCode != Z_STREAM_END)) {
- _GTMDevLog(@"Error trying to inflate some of the payload, error %d: %s",
- retCode, strm.msg);
+ if (error) {
+ NSMutableDictionary *userInfo =
+ [NSMutableDictionary dictionaryWithObject:[NSNumber numberWithInt:retCode]
+ forKey:GTMNSDataZlibErrorKey];
+ if (strm.msg) {
+ NSString *message = [NSString stringWithUTF8String:strm.msg];
+ if (message) {
+ [userInfo setObject:message forKey:NSLocalizedDescriptionKey];
+ }
+ }
+ *error = [NSError errorWithDomain:GTMNSDataZlibErrorDomain
+ code:GTMNSDataZlibErrorInternal
+ userInfo:userInfo];
+ }
inflateEnd(&strm);
return nil;
}
@@ -206,8 +243,14 @@ typedef enum {
// make sure there wasn't more data tacked onto the end of a valid compressed
// stream.
if (strm.avail_in != 0) {
- _GTMDevLog(@"thought we finished inflate w/o using all input, %u bytes left",
- strm.avail_in);
+ if (error) {
+ NSDictionary *userInfo =
+ [NSDictionary dictionaryWithObject:[NSNumber numberWithUnsignedInt:strm.avail_in]
+ forKey:GTMNSDataZlibRemainingBytesKey];
+ *error = [NSError errorWithDomain:GTMNSDataZlibErrorDomain
+ code:GTMNSDataZlibErrorDataRemaining
+ userInfo:userInfo];
+ }
result = nil;
}
// the only way out of the loop was by hitting the end of the stream
@@ -228,69 +271,135 @@ typedef enum {
+ (NSData *)gtm_dataByGzippingBytes:(const void *)bytes
length:(NSUInteger)length {
+ return [self gtm_dataByGzippingBytes:bytes length:length error:NULL];
+} // gtm_dataByGzippingBytes:length:
+
++ (NSData *)gtm_dataByGzippingBytes:(const void *)bytes
+ length:(NSUInteger)length
+ error:(NSError **)error {
return [self gtm_dataByCompressingBytes:bytes
length:length
compressionLevel:Z_DEFAULT_COMPRESSION
- mode:CompressionModeGzip];
-} // gtm_dataByGzippingBytes:length:
+ mode:CompressionModeGzip
+ error:error];
+} // gtm_dataByGzippingBytes:length:error:
+ (NSData *)gtm_dataByGzippingData:(NSData *)data {
+ return [self gtm_dataByGzippingData:data error:NULL];
+} // gtm_dataByGzippingData:
+
++ (NSData *)gtm_dataByGzippingData:(NSData *)data error:(NSError **)error {
return [self gtm_dataByCompressingBytes:[data bytes]
length:[data length]
compressionLevel:Z_DEFAULT_COMPRESSION
- mode:CompressionModeGzip];
-} // gtm_dataByGzippingData:
+ mode:CompressionModeGzip
+ error:error];
+} // gtm_dataByGzippingData:error:
+ (NSData *)gtm_dataByGzippingBytes:(const void *)bytes
length:(NSUInteger)length
compressionLevel:(int)level {
+ return [self gtm_dataByGzippingBytes:bytes
+ length:length
+ compressionLevel:level
+ error:NULL];
+} // gtm_dataByGzippingBytes:length:level:
+
++ (NSData *)gtm_dataByGzippingBytes:(const void *)bytes
+ length:(NSUInteger)length
+ compressionLevel:(int)level
+ error:(NSError **)error{
return [self gtm_dataByCompressingBytes:bytes
length:length
compressionLevel:level
- mode:CompressionModeGzip];
-} // gtm_dataByGzippingBytes:length:level:
+ mode:CompressionModeGzip
+ error:error];
+} // gtm_dataByGzippingBytes:length:level:error
+ (NSData *)gtm_dataByGzippingData:(NSData *)data
compressionLevel:(int)level {
+ return [self gtm_dataByGzippingData:data
+ compressionLevel:level
+ error:NULL];
+} // gtm_dataByGzippingData:level:
+
++ (NSData *)gtm_dataByGzippingData:(NSData *)data
+ compressionLevel:(int)level
+ error:(NSError **)error{
return [self gtm_dataByCompressingBytes:[data bytes]
length:[data length]
compressionLevel:level
- mode:CompressionModeGzip];
-} // gtm_dataByGzippingData:level:
+ mode:CompressionModeGzip
+ error:error];
+} // gtm_dataByGzippingData:level:error
#pragma mark -
+ (NSData *)gtm_dataByDeflatingBytes:(const void *)bytes
length:(NSUInteger)length {
+ return [self gtm_dataByDeflatingBytes:bytes
+ length:length
+ error:NULL];
+} // gtm_dataByDeflatingBytes:length:
+
++ (NSData *)gtm_dataByDeflatingBytes:(const void *)bytes
+ length:(NSUInteger)length
+ error:(NSError **)error{
return [self gtm_dataByCompressingBytes:bytes
length:length
compressionLevel:Z_DEFAULT_COMPRESSION
- mode:CompressionModeZlib];
-} // gtm_dataByDeflatingBytes:length:
+ mode:CompressionModeZlib
+ error:error];
+} // gtm_dataByDeflatingBytes:length:error
+ (NSData *)gtm_dataByDeflatingData:(NSData *)data {
+ return [self gtm_dataByDeflatingData:data error:NULL];
+} // gtm_dataByDeflatingData:
+
++ (NSData *)gtm_dataByDeflatingData:(NSData *)data error:(NSError **)error {
return [self gtm_dataByCompressingBytes:[data bytes]
length:[data length]
compressionLevel:Z_DEFAULT_COMPRESSION
- mode:CompressionModeZlib];
+ mode:CompressionModeZlib
+ error:error];
} // gtm_dataByDeflatingData:
+ (NSData *)gtm_dataByDeflatingBytes:(const void *)bytes
length:(NSUInteger)length
compressionLevel:(int)level {
+ return [self gtm_dataByDeflatingBytes:bytes
+ length:length
+ compressionLevel:level
+ error:NULL];
+} // gtm_dataByDeflatingBytes:length:level:
+
++ (NSData *)gtm_dataByDeflatingBytes:(const void *)bytes
+ length:(NSUInteger)length
+ compressionLevel:(int)level
+ error:(NSError **)error {
return [self gtm_dataByCompressingBytes:bytes
length:length
compressionLevel:level
- mode:CompressionModeZlib];
-} // gtm_dataByDeflatingBytes:length:level:
+ mode:CompressionModeZlib
+ error:error];
+} // gtm_dataByDeflatingBytes:length:level:error:
+ (NSData *)gtm_dataByDeflatingData:(NSData *)data
compressionLevel:(int)level {
+ return [self gtm_dataByDeflatingData:data
+ compressionLevel:level
+ error:NULL];
+} // gtm_dataByDeflatingData:level:
+
++ (NSData *)gtm_dataByDeflatingData:(NSData *)data
+ compressionLevel:(int)level
+ error:(NSError **)error {
return [self gtm_dataByCompressingBytes:[data bytes]
length:[data length]
compressionLevel:level
- mode:CompressionModeZlib];
-} // gtm_dataByDeflatingData:level:
+ mode:CompressionModeZlib
+ error:error];
+} // gtm_dataByDeflatingData:level:error:
#pragma mark -
@@ -298,60 +407,125 @@ typedef enum {
length:(NSUInteger)length {
return [self gtm_dataByInflatingBytes:bytes
length:length
- isRawData:NO];
+ error:NULL];
} // gtm_dataByInflatingBytes:length:
++ (NSData *)gtm_dataByInflatingBytes:(const void *)bytes
+ length:(NSUInteger)length
+ error:(NSError **)error {
+ return [self gtm_dataByInflatingBytes:bytes
+ length:length
+ isRawData:NO
+ error:error];
+} // gtm_dataByInflatingBytes:length:error:
+
+ (NSData *)gtm_dataByInflatingData:(NSData *)data {
+ return [self gtm_dataByInflatingData:data error:NULL];
+} // gtm_dataByInflatingData:
+
++ (NSData *)gtm_dataByInflatingData:(NSData *)data
+ error:(NSError **)error {
return [self gtm_dataByInflatingBytes:[data bytes]
length:[data length]
- isRawData:NO];
+ isRawData:NO
+ error:error];
} // gtm_dataByInflatingData:
#pragma mark -
+ (NSData *)gtm_dataByRawDeflatingBytes:(const void *)bytes
length:(NSUInteger)length {
+ return [self gtm_dataByRawDeflatingBytes:(const void *)bytes
+ length:(NSUInteger)length
+ error:NULL];
+} // gtm_dataByRawDeflatingBytes:length:
+
++ (NSData *)gtm_dataByRawDeflatingBytes:(const void *)bytes
+ length:(NSUInteger)length
+ error:(NSError **)error {
return [self gtm_dataByCompressingBytes:bytes
length:length
compressionLevel:Z_DEFAULT_COMPRESSION
- mode:CompressionModeRaw];
-} // gtm_dataByRawDeflatingBytes:length:
+ mode:CompressionModeRaw
+ error:error];
+} // gtm_dataByRawDeflatingBytes:length:error:
+ (NSData *)gtm_dataByRawDeflatingData:(NSData *)data {
+ return [self gtm_dataByRawDeflatingData:data error:NULL];
+} // gtm_dataByRawDeflatingData:
+
++ (NSData *)gtm_dataByRawDeflatingData:(NSData *)data error:(NSError **)error {
return [self gtm_dataByCompressingBytes:[data bytes]
length:[data length]
compressionLevel:Z_DEFAULT_COMPRESSION
- mode:CompressionModeRaw];
-} // gtm_dataByRawDeflatingData:
+ mode:CompressionModeRaw
+ error:error];
+} // gtm_dataByRawDeflatingData:error:
+ (NSData *)gtm_dataByRawDeflatingBytes:(const void *)bytes
length:(NSUInteger)length
compressionLevel:(int)level {
+ return [self gtm_dataByRawDeflatingBytes:bytes
+ length:length
+ compressionLevel:level
+ error:NULL];
+} // gtm_dataByRawDeflatingBytes:length:compressionLevel:
+
++ (NSData *)gtm_dataByRawDeflatingBytes:(const void *)bytes
+ length:(NSUInteger)length
+ compressionLevel:(int)level
+ error:(NSError **)error{
return [self gtm_dataByCompressingBytes:bytes
length:length
compressionLevel:level
- mode:CompressionModeRaw];
-} // gtm_dataByRawDeflatingBytes:length:compressionLevel:
+ mode:CompressionModeRaw
+ error:error];
+} // gtm_dataByRawDeflatingBytes:length:compressionLevel:error:
+ (NSData *)gtm_dataByRawDeflatingData:(NSData *)data
compressionLevel:(int)level {
+ return [self gtm_dataByRawDeflatingData:data
+ compressionLevel:level
+ error:NULL];
+} // gtm_dataByRawDeflatingData:compressionLevel:
+
++ (NSData *)gtm_dataByRawDeflatingData:(NSData *)data
+ compressionLevel:(int)level
+ error:(NSError **)error {
return [self gtm_dataByCompressingBytes:[data bytes]
length:[data length]
compressionLevel:level
- mode:CompressionModeRaw];
-} // gtm_dataByRawDeflatingData:compressionLevel:
+ mode:CompressionModeRaw
+ error:error];
+} // gtm_dataByRawDeflatingData:compressionLevel:error:
+ (NSData *)gtm_dataByRawInflatingBytes:(const void *)bytes
length:(NSUInteger)length {
return [self gtm_dataByInflatingBytes:bytes
length:length
- isRawData:YES];
+ error:NULL];
} // gtm_dataByRawInflatingBytes:length:
++ (NSData *)gtm_dataByRawInflatingBytes:(const void *)bytes
+ length:(NSUInteger)length
+ error:(NSError **)error{
+ return [self gtm_dataByInflatingBytes:bytes
+ length:length
+ isRawData:YES
+ error:error];
+} // gtm_dataByRawInflatingBytes:length:error:
+
+ (NSData *)gtm_dataByRawInflatingData:(NSData *)data {
+ return [self gtm_dataByRawInflatingData:data
+ error:NULL];
+} // gtm_dataByRawInflatingData:
+
++ (NSData *)gtm_dataByRawInflatingData:(NSData *)data
+ error:(NSError **)error {
return [self gtm_dataByInflatingBytes:[data bytes]
length:[data length]
- isRawData:YES];
-} // gtm_dataByRawInflatingData:
+ isRawData:YES
+ error:error];
+} // gtm_dataByRawInflatingData:error:
@end
diff --git a/Foundation/GTMNSData+zlibTest.m b/Foundation/GTMNSData+zlibTest.m
index 8a14919..4f3acc1 100644
--- a/Foundation/GTMNSData+zlibTest.m
+++ b/Foundation/GTMNSData+zlibTest.m
@@ -17,9 +17,8 @@
//
#import "GTMSenTestCase.h"
-#import "GTMUnitTestDevLog.h"
#import "GTMNSData+zlib.h"
-#import <stdlib.h> // for randiom/srandomdev
+#import <stdlib.h> // for random/srandomdev
#import <zlib.h>
@interface GTMNSData_zlibTest : GTMTestCase
@@ -91,405 +90,526 @@ static BOOL HasGzipHeader(NSData *data) {
((bytes[0] == 0x1f) && (bytes[1] == 0x8b));
}
+#define GTMCheckZLibError(error, errorCode) \
+ XCTAssertEqual([error code], GTMNSDataZlibErrorInternal); \
+ XCTAssertEqualObjects([error domain], GTMNSDataZlibErrorDomain); \
+ XCTAssertEqualObjects([[error userInfo] objectForKey:GTMNSDataZlibErrorKey], \
+ [NSNumber numberWithInt:errorCode]); \
+ error = nil
+
+#define GTMCheckRemainingError(error, bytes) \
+ XCTAssertEqual([error code], GTMNSDataZlibErrorDataRemaining); \
+ XCTAssertEqualObjects([error domain], GTMNSDataZlibErrorDomain); \
+ XCTAssertEqualObjects([[error userInfo] objectForKey:GTMNSDataZlibRemainingBytesKey], \
+ [NSNumber numberWithInt:bytes]); \
+ error = nil
@implementation GTMNSData_zlibTest
-- (void)testBoundryValues {
+- (void)testBoundaryValues {
// build some test data
NSData *data = [NSData dataWithBytes:randomDataLarge
length:sizeof(randomDataLarge)];
- STAssertNotNil(data, @"failed to alloc data block");
+ XCTAssertNotNil(data, @"failed to alloc data block");
// bogus args to start
- STAssertNil([NSData gtm_dataByDeflatingData:nil], nil);
- STAssertNil([NSData gtm_dataByDeflatingBytes:nil length:666], nil);
- STAssertNil([NSData gtm_dataByDeflatingBytes:[data bytes] length:0], nil);
- STAssertNil([NSData gtm_dataByGzippingData:nil], nil);
- STAssertNil([NSData gtm_dataByGzippingBytes:nil length:666], nil);
- STAssertNil([NSData gtm_dataByGzippingBytes:[data bytes] length:0], nil);
- STAssertNil([NSData gtm_dataByInflatingData:nil], nil);
- STAssertNil([NSData gtm_dataByInflatingBytes:nil length:666], nil);
- STAssertNil([NSData gtm_dataByInflatingBytes:[data bytes] length:0], nil);
- STAssertNil([NSData gtm_dataByRawDeflatingData:nil], nil);
- STAssertNil([NSData gtm_dataByRawDeflatingBytes:nil length:666], nil);
- STAssertNil([NSData gtm_dataByRawDeflatingBytes:[data bytes] length:0], nil);
- STAssertNil([NSData gtm_dataByRawInflatingData:nil], nil);
- STAssertNil([NSData gtm_dataByRawInflatingBytes:nil length:666], nil);
- STAssertNil([NSData gtm_dataByRawInflatingBytes:[data bytes] length:0], nil);
+ NSError *error = nil;
+ XCTAssertNil([NSData gtm_dataByDeflatingData:nil error:&error]);
+ XCTAssertNil(error);
+ error = nil;
+ XCTAssertNil([NSData gtm_dataByDeflatingBytes:nil length:666 error:&error]);
+ XCTAssertNil(error);
+ error = nil;
+ XCTAssertNil([NSData gtm_dataByDeflatingBytes:[data bytes] length:0 error:&error]);
+ XCTAssertNil(error);
+ error = nil;
+ XCTAssertNil([NSData gtm_dataByGzippingData:nil error:&error]);
+ XCTAssertNil(error);
+ error = nil;
+ XCTAssertNil([NSData gtm_dataByGzippingBytes:nil length:666 error:&error]);
+ XCTAssertNil(error);
+ error = nil;
+ XCTAssertNil([NSData gtm_dataByGzippingBytes:[data bytes] length:0 error:&error]);
+ XCTAssertNil(error);
+ error = nil;
+ XCTAssertNil([NSData gtm_dataByInflatingData:nil error:&error]);
+ XCTAssertNil(error);
+ error = nil;
+ XCTAssertNil([NSData gtm_dataByInflatingBytes:nil length:666 error:&error]);
+ XCTAssertNil(error);
+ error = nil;
+ XCTAssertNil([NSData gtm_dataByInflatingBytes:[data bytes] length:0 error:&error]);
+ XCTAssertNil(error);
+ error = nil;
+ XCTAssertNil([NSData gtm_dataByRawDeflatingData:nil error:&error]);
+ XCTAssertNil(error);
+ error = nil;
+ XCTAssertNil([NSData gtm_dataByRawDeflatingBytes:nil length:666 error:&error]);
+ XCTAssertNil(error);
+ error = nil;
+ XCTAssertNil([NSData gtm_dataByRawDeflatingBytes:[data bytes] length:0 error:&error]);
+ XCTAssertNil(error);
+ error = nil;
+ XCTAssertNil([NSData gtm_dataByRawInflatingData:nil error:&error]);
+ XCTAssertNil(error);
+ error = nil;
+ XCTAssertNil([NSData gtm_dataByRawInflatingBytes:nil length:666 error:&error]);
+ XCTAssertNil(error);
+ error = nil;
+ XCTAssertNil([NSData gtm_dataByRawInflatingBytes:[data bytes] length:0 error:&error]);
+ XCTAssertNil(error);
+ error = nil;
// test deflate w/ compression levels out of range
NSData *deflated = [NSData gtm_dataByDeflatingData:data
- compressionLevel:-4];
- STAssertNotNil(deflated, nil);
- STAssertFalse(HasGzipHeader(deflated), nil);
- NSData *dataPrime = [NSData gtm_dataByInflatingData:deflated];
- STAssertNotNil(dataPrime, nil);
- STAssertEqualObjects(data, dataPrime, nil);
+ compressionLevel:-4
+ error:&error];
+ XCTAssertNotNil(deflated);
+ XCTAssertNil(error);
+ error = nil;
+ XCTAssertFalse(HasGzipHeader(deflated));
+ NSData *dataPrime = [NSData gtm_dataByInflatingData:deflated error:&error];
+ XCTAssertNotNil(dataPrime);
+ XCTAssertEqualObjects(data, dataPrime);
+ XCTAssertNil(error);
+ error = nil;
deflated = [NSData gtm_dataByDeflatingData:data
- compressionLevel:20];
- STAssertNotNil(deflated, nil);
- STAssertFalse(HasGzipHeader(deflated), nil);
- dataPrime = [NSData gtm_dataByInflatingData:deflated];
- STAssertNotNil(dataPrime, nil);
- STAssertEqualObjects(data, dataPrime, nil);
+ compressionLevel:20
+ error:&error];
+ XCTAssertNotNil(deflated);
+ XCTAssertFalse(HasGzipHeader(deflated));
+ XCTAssertNil(error);
+ error = nil;
+ dataPrime = [NSData gtm_dataByInflatingData:deflated error:&error];
+ XCTAssertNotNil(dataPrime);
+ XCTAssertEqualObjects(data, dataPrime);
+ XCTAssertNil(error);
+ error = nil;
// test gzip w/ compression levels out of range
NSData *gzipped = [NSData gtm_dataByGzippingData:data
- compressionLevel:-4];
- STAssertNotNil(gzipped, nil);
- STAssertTrue(HasGzipHeader(gzipped), nil);
- dataPrime = [NSData gtm_dataByInflatingData:gzipped];
- STAssertNotNil(dataPrime, nil);
- STAssertEqualObjects(data, dataPrime, nil);
+ compressionLevel:-4
+ error:&error];
+ XCTAssertNotNil(gzipped);
+ XCTAssertNil(error);
+ error = nil;
+ XCTAssertTrue(HasGzipHeader(gzipped));
+ dataPrime = [NSData gtm_dataByInflatingData:gzipped error:&error];
+ XCTAssertNotNil(dataPrime);
+ XCTAssertEqualObjects(data, dataPrime);
+ XCTAssertNil(error);
+ error = nil;
gzipped = [NSData gtm_dataByGzippingData:data
- compressionLevel:20];
- STAssertNotNil(gzipped, nil);
- STAssertTrue(HasGzipHeader(gzipped), nil);
- dataPrime = [NSData gtm_dataByInflatingData:gzipped];
- STAssertNotNil(dataPrime, nil);
- STAssertEqualObjects(data, dataPrime, nil);
+ compressionLevel:20
+ error:&error];
+ XCTAssertNotNil(gzipped);
+ XCTAssertTrue(HasGzipHeader(gzipped));
+ XCTAssertNil(error);
+ error = nil;
+ dataPrime = [NSData gtm_dataByInflatingData:gzipped error:&error];
+ XCTAssertNotNil(dataPrime);
+ XCTAssertEqualObjects(data, dataPrime);
+ XCTAssertNil(error);
+ error = nil;
// test raw deflate w/ compression levels out of range
NSData *rawDeflated = [NSData gtm_dataByRawDeflatingData:data
- compressionLevel:-4];
- STAssertNotNil(rawDeflated, nil);
- STAssertFalse(HasGzipHeader(rawDeflated), nil);
- dataPrime = [NSData gtm_dataByRawInflatingData:rawDeflated];
- STAssertNotNil(dataPrime, nil);
- STAssertEqualObjects(data, dataPrime, nil);
+ compressionLevel:-4
+ error:&error];
+ XCTAssertNotNil(rawDeflated);
+ XCTAssertFalse(HasGzipHeader(rawDeflated));
+ XCTAssertNil(error);
+ error = nil;
+ dataPrime = [NSData gtm_dataByRawInflatingData:rawDeflated error:&error];
+ XCTAssertNotNil(dataPrime);
+ XCTAssertEqualObjects(data, dataPrime);
+ XCTAssertNil(error);
+ error = nil;
rawDeflated = [NSData gtm_dataByRawDeflatingData:data
- compressionLevel:20];
- STAssertNotNil(rawDeflated, nil);
- STAssertFalse(HasGzipHeader(rawDeflated), nil);
- dataPrime = [NSData gtm_dataByRawInflatingData:rawDeflated];
- STAssertNotNil(dataPrime, nil);
- STAssertEqualObjects(data, dataPrime, nil);
+ compressionLevel:20
+ error:&error];
+ XCTAssertNotNil(rawDeflated);
+ XCTAssertFalse(HasGzipHeader(rawDeflated));
+ XCTAssertNil(error);
+ error = nil;
+ dataPrime = [NSData gtm_dataByRawInflatingData:rawDeflated error:&error];
+ XCTAssertNotNil(dataPrime);
+ XCTAssertEqualObjects(data, dataPrime);
+ XCTAssertNil(error);
+ error = nil;
// test non-compressed data data itself
- [GTMUnitTestDevLog expectString:@"Error trying to inflate some of the "
- @"payload, error -3: incorrect header check"];
- STAssertNil([NSData gtm_dataByInflatingData:data], nil);
-
+ XCTAssertNil([NSData gtm_dataByInflatingData:data error:&error]);
+ GTMCheckZLibError(error, -3);
// test deflated data runs that end before they are done
- [GTMUnitTestDevLog expect:([deflated length] / 11) + 1
- casesOfString:@"Error trying to inflate some of the payload, "
- @"error -5: (null)"];
for (NSUInteger x = 1 ; x < [deflated length] ; x += 11) {
- STAssertNil([NSData gtm_dataByInflatingBytes:[deflated bytes]
- length:x], nil);
+ XCTAssertNil([NSData gtm_dataByInflatingBytes:[deflated bytes]
+ length:x
+ error:&error]);
+ GTMCheckZLibError(error, -5);
}
// test gzipped data runs that end before they are done
- [GTMUnitTestDevLog expect:([gzipped length] / 11) + 1
- casesOfString:@"Error trying to inflate some of the payload, "
- @"error -5: (null)"];
for (NSUInteger x = 1 ; x < [gzipped length] ; x += 11) {
- STAssertNil([NSData gtm_dataByInflatingBytes:[gzipped bytes]
- length:x], nil);
+ XCTAssertNil([NSData gtm_dataByInflatingBytes:[gzipped bytes]
+ length:x
+ error:&error]);
+ GTMCheckZLibError(error, -5);
}
// test raw deflated data runs that end before they are done
- [GTMUnitTestDevLog expectString:@"Error trying to inflate some of the "
- @"payload, error -5: (null)"];
- [GTMUnitTestDevLog expect:([rawDeflated length] / 11) - 1
- casesOfString:@"Error trying to inflate some of the payload, "
- @"error -3: incorrect header check"];
for (NSUInteger x = 1 ; x < [rawDeflated length] ; x += 11) {
- STAssertNil([NSData gtm_dataByInflatingBytes:[rawDeflated bytes]
- length:x], nil);
+ XCTAssertNil([NSData gtm_dataByInflatingBytes:[rawDeflated bytes]
+ length:x
+ error:&error]);
+ int expectedError = (x == 1) ? -5 : -3;
+ GTMCheckZLibError(error, expectedError);
}
// test extra data before the deflated/gzipped data (just to make sure we
// don't seek to the "real" data)
NSMutableData *prefixedDeflated =
[NSMutableData dataWithBytes:randomDataSmall length:sizeof(randomDataSmall)];
- STAssertNotNil(prefixedDeflated, @"failed to alloc data block");
+ XCTAssertNotNil(prefixedDeflated, @"failed to alloc data block");
[prefixedDeflated appendData:deflated];
- [GTMUnitTestDevLog expectString:@"Error trying to inflate some of the "
- @"payload, error -3: incorrect header check"];
- STAssertNil([NSData gtm_dataByInflatingData:prefixedDeflated], nil);
- [GTMUnitTestDevLog expectString:@"Error trying to inflate some of the "
- @"payload, error -3: incorrect header check"];
- STAssertNil([NSData gtm_dataByInflatingBytes:[prefixedDeflated bytes]
- length:[prefixedDeflated length]],
- nil);
+ XCTAssertNil([NSData gtm_dataByInflatingData:prefixedDeflated error:&error]);
+ GTMCheckZLibError(error, -3);
+ XCTAssertNil([NSData gtm_dataByInflatingBytes:[prefixedDeflated bytes]
+ length:[prefixedDeflated length]
+ error:&error]);
+ GTMCheckZLibError(error, -3);
NSMutableData *prefixedGzipped =
[NSMutableData dataWithBytes:randomDataSmall length:sizeof(randomDataSmall)];
- STAssertNotNil(prefixedDeflated, @"failed to alloc data block");
+ XCTAssertNotNil(prefixedDeflated, @"failed to alloc data block");
[prefixedGzipped appendData:gzipped];
- [GTMUnitTestDevLog expectString:@"Error trying to inflate some of the "
- @"payload, error -3: incorrect header check"];
- STAssertNil([NSData gtm_dataByInflatingData:prefixedGzipped], nil);
- [GTMUnitTestDevLog expectString:@"Error trying to inflate some of the "
- @"payload, error -3: incorrect header check"];
- STAssertNil([NSData gtm_dataByInflatingBytes:[prefixedGzipped bytes]
- length:[prefixedGzipped length]],
- nil);
+ XCTAssertNil([NSData gtm_dataByInflatingData:prefixedGzipped error:&error]);
+ GTMCheckZLibError(error, -3);
+ XCTAssertNil([NSData gtm_dataByInflatingBytes:[prefixedGzipped bytes]
+ length:[prefixedGzipped length]
+ error:&error]);
+ GTMCheckZLibError(error, -3);
NSMutableData *prefixedRawDeflated =
[NSMutableData dataWithBytes:randomDataSmall length:sizeof(randomDataSmall)];
- STAssertNotNil(prefixedRawDeflated, @"failed to alloc data block");
+ XCTAssertNotNil(prefixedRawDeflated, @"failed to alloc data block");
[prefixedRawDeflated appendData:rawDeflated];
- [GTMUnitTestDevLog expectString:@"Error trying to inflate some of the "
- @"payload, error -3: invalid stored block lengths"];
- STAssertNil([NSData gtm_dataByRawInflatingData:prefixedRawDeflated], nil);
- [GTMUnitTestDevLog expectString:@"Error trying to inflate some of the "
- @"payload, error -3: invalid stored block lengths"];
- STAssertNil([NSData gtm_dataByRawInflatingBytes:[prefixedRawDeflated bytes]
- length:[prefixedRawDeflated length]],
- nil);
+ XCTAssertNil([NSData gtm_dataByRawInflatingData:prefixedRawDeflated error:&error]);
+ GTMCheckZLibError(error, -3);
+ XCTAssertNil([NSData gtm_dataByRawInflatingBytes:[prefixedRawDeflated bytes]
+ length:[prefixedRawDeflated length]
+ error:&error]);
+ GTMCheckZLibError(error, -3);
// test extra data after the deflated/gzipped data (just to make sure we
// don't ignore some of the data)
NSMutableData *suffixedDeflated = [NSMutableData data];
- STAssertNotNil(suffixedDeflated, @"failed to alloc data block");
+ XCTAssertNotNil(suffixedDeflated, @"failed to alloc data block");
[suffixedDeflated appendData:deflated];
[suffixedDeflated appendBytes:[data bytes] length:20];
- [GTMUnitTestDevLog expectString:@"thought we finished inflate w/o using "
- @"all input, 20 bytes left"];
- STAssertNil([NSData gtm_dataByInflatingData:suffixedDeflated], nil);
- [GTMUnitTestDevLog expectString:@"thought we finished inflate w/o using "
- @"all input, 20 bytes left"];
- STAssertNil([NSData gtm_dataByInflatingBytes:[suffixedDeflated bytes]
- length:[suffixedDeflated length]],
- nil);
+ XCTAssertNil([NSData gtm_dataByInflatingData:suffixedDeflated
+ error:&error]);
+ GTMCheckRemainingError(error, 20);
+ XCTAssertNil([NSData gtm_dataByInflatingBytes:[suffixedDeflated bytes]
+ length:[suffixedDeflated length]
+ error:&error]);
+ GTMCheckRemainingError(error, 20);
NSMutableData *suffixedGZipped = [NSMutableData data];
- STAssertNotNil(suffixedGZipped, @"failed to alloc data block");
+ XCTAssertNotNil(suffixedGZipped, @"failed to alloc data block");
[suffixedGZipped appendData:gzipped];
[suffixedGZipped appendBytes:[data bytes] length:20];
- [GTMUnitTestDevLog expectString:@"thought we finished inflate w/o using "
- @"all input, 20 bytes left"];
- STAssertNil([NSData gtm_dataByInflatingData:suffixedGZipped], nil);
- [GTMUnitTestDevLog expectString:@"thought we finished inflate w/o using "
- @"all input, 20 bytes left"];
- STAssertNil([NSData gtm_dataByInflatingBytes:[suffixedGZipped bytes]
- length:[suffixedGZipped length]],
- nil);
+ XCTAssertNil([NSData gtm_dataByInflatingData:suffixedGZipped error:&error]);
+ GTMCheckRemainingError(error, 20);
+ XCTAssertNil([NSData gtm_dataByInflatingBytes:[suffixedGZipped bytes]
+ length:[suffixedGZipped length]
+ error:&error]);
+ GTMCheckRemainingError(error, 20);
NSMutableData *suffixedRawDeflated = [NSMutableData data];
- STAssertNotNil(suffixedRawDeflated, @"failed to alloc data block");
+ XCTAssertNotNil(suffixedRawDeflated, @"failed to alloc data block");
[suffixedRawDeflated appendData:rawDeflated];
[suffixedRawDeflated appendBytes:[data bytes] length:20];
- [GTMUnitTestDevLog expectString:@"thought we finished inflate w/o using "
- @"all input, 20 bytes left"];
- STAssertNil([NSData gtm_dataByRawInflatingData:suffixedRawDeflated], nil);
- [GTMUnitTestDevLog expectString:@"thought we finished inflate w/o using "
- @"all input, 20 bytes left"];
- STAssertNil([NSData gtm_dataByRawInflatingBytes:[suffixedRawDeflated bytes]
- length:[suffixedRawDeflated length]],
- nil);
+ XCTAssertNil([NSData gtm_dataByRawInflatingData:suffixedRawDeflated error:&error]);
+ GTMCheckRemainingError(error, 20);
+ XCTAssertNil([NSData gtm_dataByRawInflatingBytes:[suffixedRawDeflated bytes]
+ length:[suffixedRawDeflated length]
+ error:&error]);
+ GTMCheckRemainingError(error, 20);
}
- (void)testInflateDeflate {
NSData *data = [NSData dataWithBytes:randomDataLarge
length:sizeof(randomDataLarge)];
- STAssertNotNil(data, @"failed to alloc data block");
+ XCTAssertNotNil(data, @"failed to alloc data block");
// w/ *Bytes apis, default level
+ NSError *error = nil;
NSData *deflated = [NSData gtm_dataByDeflatingBytes:[data bytes]
- length:[data length]];
- STAssertNotNil(deflated, @"failed to deflate data block");
- STAssertGreaterThan([deflated length],
- (NSUInteger)0, @"failed to deflate data block");
- STAssertFalse(HasGzipHeader(deflated), @"has gzip header on zlib data");
+ length:[data length]
+ error:&error];
+ XCTAssertNotNil(deflated, @"failed to deflate data block");
+ XCTAssertGreaterThan([deflated length], (NSUInteger)0,
+ @"failed to deflate data block");
+ XCTAssertFalse(HasGzipHeader(deflated), @"has gzip header on zlib data");
+ XCTAssertNil(error);
+ error = nil;
+
NSData *dataPrime = [NSData gtm_dataByInflatingBytes:[deflated bytes]
- length:[deflated length]];
- STAssertNotNil(dataPrime, @"failed to inflate data block");
- STAssertGreaterThan([dataPrime length],
- (NSUInteger)0, @"failed to inflate data block");
- STAssertEqualObjects(data,
- dataPrime, @"failed to round trip via *Bytes apis");
+ length:[deflated length]
+ error:&error];
+ XCTAssertNotNil(dataPrime, @"failed to inflate data block");
+ XCTAssertGreaterThan([dataPrime length], (NSUInteger)0,
+ @"failed to inflate data block");
+ XCTAssertEqualObjects(data, dataPrime,
+ @"failed to round trip via *Bytes apis");
+ XCTAssertNil(error);
+ error = nil;
// w/ *Data apis, default level
- deflated = [NSData gtm_dataByDeflatingData:data];
- STAssertNotNil(deflated, @"failed to deflate data block");
- STAssertGreaterThan([deflated length],
- (NSUInteger)0, @"failed to deflate data block");
- STAssertFalse(HasGzipHeader(deflated), @"has gzip header on zlib data");
- dataPrime = [NSData gtm_dataByInflatingData:deflated];
- STAssertNotNil(dataPrime, @"failed to inflate data block");
- STAssertGreaterThan([dataPrime length],
- (NSUInteger)0, @"failed to inflate data block");
- STAssertEqualObjects(data,
- dataPrime, @"failed to round trip via *Data apis");
+ deflated = [NSData gtm_dataByDeflatingData:data error:&error];
+ XCTAssertNotNil(deflated, @"failed to deflate data block");
+ XCTAssertGreaterThan([deflated length], (NSUInteger)0,
+ @"failed to deflate data block");
+ XCTAssertFalse(HasGzipHeader(deflated), @"has gzip header on zlib data");
+ XCTAssertNil(error);
+ error = nil;
+ dataPrime = [NSData gtm_dataByInflatingData:deflated error:&error];
+
+ XCTAssertNotNil(dataPrime, @"failed to inflate data block");
+ XCTAssertGreaterThan([dataPrime length], (NSUInteger)0,
+ @"failed to inflate data block");
+ XCTAssertEqualObjects(data, dataPrime,
+ @"failed to round trip via *Data apis");
+ XCTAssertNil(error);
+ error = nil;
// loop over the compression levels
for (int level = 1 ; level <= 9 ; ++level) {
// w/ *Bytes apis, using our level
deflated = [NSData gtm_dataByDeflatingBytes:[data bytes]
length:[data length]
- compressionLevel:level];
- STAssertNotNil(deflated, @"failed to deflate data block");
- STAssertGreaterThan([deflated length],
- (NSUInteger)0, @"failed to deflate data block");
- STAssertFalse(HasGzipHeader(deflated), @"has gzip header on zlib data");
+ compressionLevel:level
+ error:&error];
+ XCTAssertNotNil(deflated, @"failed to deflate data block");
+ XCTAssertGreaterThan([deflated length],
+ (NSUInteger)0, @"failed to deflate data block");
+ XCTAssertFalse(HasGzipHeader(deflated), @"has gzip header on zlib data");
+ XCTAssertNil(error);
+ error = nil;
dataPrime = [NSData gtm_dataByInflatingBytes:[deflated bytes]
- length:[deflated length]];
- STAssertNotNil(dataPrime, @"failed to inflate data block");
- STAssertGreaterThan([dataPrime length],
- (NSUInteger)0, @"failed to inflate data block");
- STAssertEqualObjects(data,
- dataPrime, @"failed to round trip via *Bytes apis");
+ length:[deflated length]
+ error:&error];
+ XCTAssertNotNil(dataPrime, @"failed to inflate data block");
+ XCTAssertGreaterThan([dataPrime length],
+ (NSUInteger)0, @"failed to inflate data block");
+ XCTAssertEqualObjects(data,
+ dataPrime, @"failed to round trip via *Bytes apis");
+ XCTAssertNil(error);
+ error = nil;
// w/ *Data apis, using our level
- deflated = [NSData gtm_dataByDeflatingData:data compressionLevel:level];
- STAssertNotNil(deflated, @"failed to deflate data block");
- STAssertGreaterThan([deflated length],
- (NSUInteger)0, @"failed to deflate data block");
- STAssertFalse(HasGzipHeader(deflated), @"has gzip header on zlib data");
- dataPrime = [NSData gtm_dataByInflatingData:deflated];
- STAssertNotNil(dataPrime, @"failed to inflate data block");
- STAssertGreaterThan([dataPrime length],
- (NSUInteger)0, @"failed to inflate data block");
- STAssertEqualObjects(data,
- dataPrime, @"failed to round trip via *Data apis");
+ deflated = [NSData gtm_dataByDeflatingData:data compressionLevel:level error:&error];
+ XCTAssertNotNil(deflated, @"failed to deflate data block");
+ XCTAssertGreaterThan([deflated length],
+ (NSUInteger)0, @"failed to deflate data block");
+ XCTAssertFalse(HasGzipHeader(deflated), @"has gzip header on zlib data");
+ XCTAssertNil(error);
+ error = nil;
+ dataPrime = [NSData gtm_dataByInflatingData:deflated error:&error];
+ XCTAssertNotNil(dataPrime, @"failed to inflate data block");
+ XCTAssertGreaterThan([dataPrime length],
+ (NSUInteger)0, @"failed to inflate data block");
+ XCTAssertEqualObjects(data,
+ dataPrime, @"failed to round trip via *Data apis");
+ XCTAssertNil(error);
+ error = nil;
}
}
- (void)testInflateGzip {
NSData *data = [NSData dataWithBytes:randomDataLarge
length:sizeof(randomDataLarge)];
- STAssertNotNil(data, @"failed to alloc data block");
+ XCTAssertNotNil(data, @"failed to alloc data block");
// w/ *Bytes apis, default level
+ NSError *error = nil;
NSData *gzipped = [NSData gtm_dataByGzippingBytes:[data bytes]
length:[data length]];
- STAssertNotNil(gzipped, @"failed to gzip data block");
- STAssertGreaterThan([gzipped length],
- (NSUInteger)0, @"failed to gzip data block");
- STAssertTrue(HasGzipHeader(gzipped),
- @"doesn't have gzip header on gzipped data");
+ XCTAssertNotNil(gzipped, @"failed to gzip data block");
+ XCTAssertGreaterThan([gzipped length],
+ (NSUInteger)0, @"failed to gzip data block");
+ XCTAssertTrue(HasGzipHeader(gzipped),
+ @"doesn't have gzip header on gzipped data");
NSData *dataPrime = [NSData gtm_dataByInflatingBytes:[gzipped bytes]
- length:[gzipped length]];
- STAssertNotNil(dataPrime, @"failed to inflate data block");
- STAssertGreaterThan([dataPrime length],
- (NSUInteger)0, @"failed to inflate data block");
- STAssertEqualObjects(data,
- dataPrime, @"failed to round trip via *Bytes apis");
+ length:[gzipped length]
+ error:&error];
+ XCTAssertNotNil(dataPrime, @"failed to inflate data block");
+ XCTAssertGreaterThan([dataPrime length],
+ (NSUInteger)0, @"failed to inflate data block");
+ XCTAssertEqualObjects(data,
+ dataPrime, @"failed to round trip via *Bytes apis");
+ XCTAssertNil(error);
+ error = nil;
// w/ *Data apis, default level
- gzipped = [NSData gtm_dataByGzippingData:data];
- STAssertNotNil(gzipped, @"failed to gzip data block");
- STAssertGreaterThan([gzipped length],
+ gzipped = [NSData gtm_dataByGzippingData:data error:&error];
+ XCTAssertNotNil(gzipped, @"failed to gzip data block");
+ XCTAssertGreaterThan([gzipped length],
(NSUInteger)0, @"failed to gzip data block");
- STAssertTrue(HasGzipHeader(gzipped),
- @"doesn't have gzip header on gzipped data");
- dataPrime = [NSData gtm_dataByInflatingData:gzipped];
- STAssertNotNil(dataPrime, @"failed to inflate data block");
- STAssertGreaterThan([dataPrime length],
- (NSUInteger)0, @"failed to inflate data block");
- STAssertEqualObjects(data, dataPrime,
- @"failed to round trip via *Data apis");
+ XCTAssertTrue(HasGzipHeader(gzipped),
+ @"doesn't have gzip header on gzipped data");
+ XCTAssertNil(error);
+ error = nil;
+ dataPrime = [NSData gtm_dataByInflatingData:gzipped error:&error];
+ XCTAssertNotNil(dataPrime, @"failed to inflate data block");
+ XCTAssertGreaterThan([dataPrime length],
+ (NSUInteger)0, @"failed to inflate data block");
+ XCTAssertEqualObjects(data, dataPrime,
+ @"failed to round trip via *Data apis");
+ XCTAssertNil(error);
+ error = nil;
// loop over the compression levels
for (int level = 1 ; level <= 9 ; ++level) {
// w/ *Bytes apis, using our level
gzipped = [NSData gtm_dataByGzippingBytes:[data bytes]
length:[data length]
- compressionLevel:level];
- STAssertNotNil(gzipped, @"failed to gzip data block");
- STAssertGreaterThan([gzipped length],
- (NSUInteger)0, @"failed to gzip data block");
- STAssertTrue(HasGzipHeader(gzipped),
- @"doesn't have gzip header on gzipped data");
+ compressionLevel:level
+ error:&error];
+ XCTAssertNotNil(gzipped, @"failed to gzip data block");
+ XCTAssertGreaterThan([gzipped length],
+ (NSUInteger)0, @"failed to gzip data block");
+ XCTAssertTrue(HasGzipHeader(gzipped),
+ @"doesn't have gzip header on gzipped data");
+ XCTAssertNil(error);
+ error = nil;
dataPrime = [NSData gtm_dataByInflatingBytes:[gzipped bytes]
- length:[gzipped length]];
- STAssertNotNil(dataPrime, @"failed to inflate data block");
- STAssertGreaterThan([dataPrime length],
- (NSUInteger)0, @"failed to inflate data block");
- STAssertEqualObjects(data, dataPrime,
- @"failed to round trip via *Bytes apis");
+ length:[gzipped length]
+ error:&error];
+ XCTAssertNotNil(dataPrime, @"failed to inflate data block");
+ XCTAssertGreaterThan([dataPrime length],
+ (NSUInteger)0, @"failed to inflate data block");
+ XCTAssertEqualObjects(data, dataPrime,
+ @"failed to round trip via *Bytes apis");
+ XCTAssertNil(error);
+ error = nil;
// w/ *Data apis, using our level
- gzipped = [NSData gtm_dataByGzippingData:data compressionLevel:level];
- STAssertNotNil(gzipped, @"failed to gzip data block");
- STAssertGreaterThan([gzipped length],
- (NSUInteger)0, @"failed to gzip data block");
- STAssertTrue(HasGzipHeader(gzipped),
- @"doesn't have gzip header on gzipped data");
- dataPrime = [NSData gtm_dataByInflatingData:gzipped];
- STAssertNotNil(dataPrime, @"failed to inflate data block");
- STAssertGreaterThan([dataPrime length],
- (NSUInteger)0, @"failed to inflate data block");
- STAssertEqualObjects(data,
- dataPrime, @"failed to round trip via *Data apis");
+ gzipped = [NSData gtm_dataByGzippingData:data compressionLevel:level error:&error];
+ XCTAssertNotNil(gzipped, @"failed to gzip data block");
+ XCTAssertGreaterThan([gzipped length],
+ (NSUInteger)0, @"failed to gzip data block");
+ XCTAssertTrue(HasGzipHeader(gzipped),
+ @"doesn't have gzip header on gzipped data");
+ XCTAssertNil(error);
+ error = nil;
+ dataPrime = [NSData gtm_dataByInflatingData:gzipped error:&error];
+ XCTAssertNotNil(dataPrime, @"failed to inflate data block");
+ XCTAssertGreaterThan([dataPrime length],
+ (NSUInteger)0, @"failed to inflate data block");
+ XCTAssertEqualObjects(data,
+ dataPrime, @"failed to round trip via *Data apis");
+ XCTAssertNil(error);
+ error = nil;
}
}
- (void)testRawtInflateRawDeflate {
+ NSError *error = nil;
NSData *data = [NSData dataWithBytes:randomDataLarge
length:sizeof(randomDataLarge)];
- STAssertNotNil(data, @"failed to alloc data block");
+ XCTAssertNotNil(data, @"failed to alloc data block");
// w/ *Bytes apis, default level
NSData *rawDeflated = [NSData gtm_dataByRawDeflatingBytes:[data bytes]
- length:[data length]];
- STAssertNotNil(rawDeflated, @"failed to raw deflate data block");
- STAssertGreaterThan([rawDeflated length],
- (NSUInteger)0, @"failed to raw deflate data block");
- STAssertFalse(HasGzipHeader(rawDeflated), @"has gzip header on raw data");
+ length:[data length]
+ error:&error];
+ XCTAssertNotNil(rawDeflated, @"failed to raw deflate data block");
+ XCTAssertGreaterThan([rawDeflated length],
+ (NSUInteger)0, @"failed to raw deflate data block");
+ XCTAssertFalse(HasGzipHeader(rawDeflated), @"has gzip header on raw data");
+ XCTAssertNil(error);
+ error = nil;
NSData *dataPrime = [NSData gtm_dataByRawInflatingBytes:[rawDeflated bytes]
- length:[rawDeflated length]];
- STAssertNotNil(dataPrime, @"failed to raw inflate data block");
- STAssertGreaterThan([dataPrime length],
- (NSUInteger)0, @"failed to raw inflate data block");
- STAssertEqualObjects(data,
- dataPrime, @"failed to round trip via *Bytes apis");
+ length:[rawDeflated length]
+ error:&error];
+ XCTAssertNotNil(dataPrime, @"failed to raw inflate data block");
+ XCTAssertGreaterThan([dataPrime length],
+ (NSUInteger)0, @"failed to raw inflate data block");
+ XCTAssertEqualObjects(data,
+ dataPrime, @"failed to round trip via *Bytes apis");
+ XCTAssertNil(error);
+ error = nil;
// w/ *Data apis, default level
- rawDeflated = [NSData gtm_dataByRawDeflatingData:data];
- STAssertNotNil(rawDeflated, @"failed to raw deflate data block");
- STAssertGreaterThan([rawDeflated length],
- (NSUInteger)0, @"failed to raw deflate data block");
- STAssertFalse(HasGzipHeader(rawDeflated), @"has gzip header on raw data");
- dataPrime = [NSData gtm_dataByRawInflatingData:rawDeflated];
- STAssertNotNil(dataPrime, @"failed to raw inflate data block");
- STAssertGreaterThan([dataPrime length],
- (NSUInteger)0, @"failed to raw inflate data block");
- STAssertEqualObjects(data,
- dataPrime, @"failed to round trip via *Data apis");
+ rawDeflated = [NSData gtm_dataByRawDeflatingData:data error:&error];
+ XCTAssertNotNil(rawDeflated, @"failed to raw deflate data block");
+ XCTAssertGreaterThan([rawDeflated length],
+ (NSUInteger)0, @"failed to raw deflate data block");
+ XCTAssertFalse(HasGzipHeader(rawDeflated), @"has gzip header on raw data");
+ XCTAssertNil(error);
+ error = nil;
+ dataPrime = [NSData gtm_dataByRawInflatingData:rawDeflated error:&error];
+ XCTAssertNotNil(dataPrime, @"failed to raw inflate data block");
+ XCTAssertGreaterThan([dataPrime length],
+ (NSUInteger)0, @"failed to raw inflate data block");
+ XCTAssertEqualObjects(data,
+ dataPrime, @"failed to round trip via *Data apis");
+ XCTAssertNil(error);
+ error = nil;
// loop over the compression levels
for (int level = 1 ; level <= 9 ; ++level) {
// w/ *Bytes apis, using our level
rawDeflated = [NSData gtm_dataByRawDeflatingBytes:[data bytes]
length:[data length]
- compressionLevel:level];
- STAssertNotNil(rawDeflated, @"failed to rawDeflate data block");
- STAssertGreaterThan([rawDeflated length],
- (NSUInteger)0, @"failed to raw deflate data block");
- STAssertFalse(HasGzipHeader(rawDeflated), @"has gzip header on raw data");
+ compressionLevel:level
+ error:&error];
+ XCTAssertNotNil(rawDeflated, @"failed to rawDeflate data block");
+ XCTAssertGreaterThan([rawDeflated length],
+ (NSUInteger)0, @"failed to raw deflate data block");
+ XCTAssertFalse(HasGzipHeader(rawDeflated), @"has gzip header on raw data");
+ XCTAssertNil(error);
+ error = nil;
dataPrime = [NSData gtm_dataByRawInflatingBytes:[rawDeflated bytes]
- length:[rawDeflated length]];
- STAssertNotNil(dataPrime, @"failed to raw inflate data block");
- STAssertGreaterThan([dataPrime length],
- (NSUInteger)0, @"failed to raw inflate data block");
- STAssertEqualObjects(data,
- dataPrime, @"failed to round trip via *Bytes apis");
+ length:[rawDeflated length]
+ error:&error];
+ XCTAssertNotNil(dataPrime, @"failed to raw inflate data block");
+ XCTAssertGreaterThan([dataPrime length],
+ (NSUInteger)0, @"failed to raw inflate data block");
+ XCTAssertEqualObjects(data,
+ dataPrime, @"failed to round trip via *Bytes apis");
+ XCTAssertNil(error);
+ error = nil;
// w/ *Data apis, using our level
rawDeflated = [NSData gtm_dataByRawDeflatingData:data
- compressionLevel:level];
- STAssertNotNil(rawDeflated, @"failed to deflate data block");
- STAssertGreaterThan([rawDeflated length],
- (NSUInteger)0, @"failed to raw deflate data block");
- STAssertFalse(HasGzipHeader(rawDeflated), @"has gzip header on raw data");
- dataPrime = [NSData gtm_dataByRawInflatingData:rawDeflated];
- STAssertNotNil(dataPrime, @"failed to raw inflate data block");
- STAssertGreaterThan([dataPrime length],
- (NSUInteger)0, @"failed to raw inflate data block");
- STAssertEqualObjects(data,
- dataPrime, @"failed to round trip via *Data apis");
+ compressionLevel:level
+ error:&error];
+ XCTAssertNotNil(rawDeflated, @"failed to deflate data block");
+ XCTAssertGreaterThan([rawDeflated length],
+ (NSUInteger)0, @"failed to raw deflate data block");
+ XCTAssertFalse(HasGzipHeader(rawDeflated), @"has gzip header on raw data");
+ XCTAssertNil(error);
+ error = nil;
+ dataPrime = [NSData gtm_dataByRawInflatingData:rawDeflated error:&error];
+ XCTAssertNotNil(dataPrime, @"failed to raw inflate data block");
+ XCTAssertGreaterThan([dataPrime length],
+ (NSUInteger)0, @"failed to raw inflate data block");
+ XCTAssertEqualObjects(data,
+ dataPrime, @"failed to round trip via *Data apis");
+ XCTAssertNil(error);
+ error = nil;
}
}
- (void)testLargeData {
// Generate some large data out of the random chunk by xoring over it
// to make sure it changes and isn't too repeated.
+ NSError *error = nil;
NSData *data = [NSData dataWithBytes:randomDataLarge
length:sizeof(randomDataLarge)];
- STAssertNotNil(data, @"failed to alloc data block");
+ XCTAssertNotNil(data, @"failed to alloc data block");
const uint8_t *dataBytes = [data bytes];
NSMutableData *scratch = [NSMutableData dataWithLength:[data length]];
- STAssertNotNil(scratch, @"failed to alloc data block");
+ XCTAssertNotNil(scratch, @"failed to alloc data block");
uint8_t *scratchBytes = [scratch mutableBytes];
NSMutableData *input = [NSMutableData dataWithCapacity:200 * [data length]];
for (NSUInteger i = 0; i < 200; ++i) {
@@ -505,22 +625,27 @@ static BOOL HasGzipHeader(NSData *data) {
// Should deflate to more then one buffer size to make sure the internal loop
// is working.
NSData *compressed = [NSData gtm_dataByDeflatingData:input
- compressionLevel:9];
- STAssertNotNil(compressed, @"failed to deflate");
- STAssertGreaterThan([compressed length], internalBufferSize,
- @"should have been more then %d bytes",
- (int)internalBufferSize);
+ compressionLevel:9
+ error:&error];
+ XCTAssertNotNil(compressed, @"failed to deflate");
+ XCTAssertGreaterThan([compressed length], internalBufferSize,
+ @"should have been more then %d bytes",
+ (int)internalBufferSize);
+ XCTAssertNil(error);
+ error = nil;
// Should inflate to more then one buffer size to make sure the internal loop
// is working.
- NSData *uncompressed = [NSData gtm_dataByInflatingData:compressed];
- STAssertNotNil(uncompressed, @"fail to inflate");
- STAssertGreaterThan([uncompressed length], internalBufferSize,
- @"should have been more then %d bytes",
- (int)internalBufferSize);
-
- STAssertEqualObjects(uncompressed, input,
- @"didn't get the same thing back");
+ NSData *uncompressed = [NSData gtm_dataByInflatingData:compressed error:&error];
+ XCTAssertNotNil(uncompressed, @"fail to inflate");
+ XCTAssertGreaterThan([uncompressed length], internalBufferSize,
+ @"should have been more then %d bytes",
+ (int)internalBufferSize);
+
+ XCTAssertEqualObjects(uncompressed, input,
+ @"didn't get the same thing back");
+ XCTAssertNil(error);
+ error = nil;
}
@end
diff --git a/Foundation/GTMNSDictionary+CaseInsensitive.h b/Foundation/GTMNSDictionary+CaseInsensitive.h
deleted file mode 100644
index 890af4b..0000000
--- a/Foundation/GTMNSDictionary+CaseInsensitive.h
+++ /dev/null
@@ -1,44 +0,0 @@
-//
-// GTMNSDictionary+CaseInsensitive.h
-//
-// Copyright 2009 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import <Foundation/Foundation.h>
-#import "GTMDefines.h"
-
-/// Utility for building case-insensitive NSDictionary objects.
-@interface NSDictionary (GTMNSDictionaryCaseInsensitiveAdditions)
-
-/// Initializes an NSDictionary with a case-insensitive comparison function
-/// for NSString keys, while non-NSString keys are treated normally.
-///
-/// The case for NSString keys is preserved, though duplicate keys (when
-/// compared in a case-insensitive fashion) have one of their values dropped
-/// arbitrarily.
-///
-/// An example of use with HTTP headers in an NSHTTPURLResponse object:
-///
-/// NSDictionary *headers =
-/// [NSDictionary gtm_dictionaryWithDictionaryCaseInsensitive:
-/// [response allHeaderFields]];
-/// NSString *contentType = [headers objectForKey:@"Content-Type"];
-- (id)gtm_initWithDictionaryCaseInsensitive:(NSDictionary *)dictionary
- NS_RETURNS_RETAINED NS_CONSUMES_SELF;
-
-/// Returns a newly created and autoreleased NSDictionary object as above.
-+ (id)gtm_dictionaryWithDictionaryCaseInsensitive:(NSDictionary *)dictionary;
-
-@end
diff --git a/Foundation/GTMNSDictionary+CaseInsensitive.m b/Foundation/GTMNSDictionary+CaseInsensitive.m
deleted file mode 100644
index 96494c2..0000000
--- a/Foundation/GTMNSDictionary+CaseInsensitive.m
+++ /dev/null
@@ -1,116 +0,0 @@
-//
-// GTMNSDictionary+CaseInsensitive.m
-//
-// Copyright 2009 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMNSDictionary+CaseInsensitive.h"
-#import "GTMDefines.h"
-#import <CoreFoundation/CoreFoundation.h>
-
-@interface NSMutableDictionary (GTMNSMutableDictionaryCaseInsensitiveAdditions)
-
-// Returns a mutable equivalent to GTMNSDictionaryCaseInsensitiveAdditions.
-- (id)gtm_initWithDictionaryCaseInsensitive:(NSDictionary *)dictionary;
-
-@end
-
-static Boolean CaseInsensitiveEqualCallback(const void *a, const void *b) {
- id idA = (id)a;
- id idB = (id)b;
- Boolean ret = FALSE;
- if ([idA isKindOfClass:[NSString class]] &&
- [idB isKindOfClass:[NSString class]]) {
- ret = ([idA compare:idB options:NSCaseInsensitiveSearch|NSLiteralSearch]
- == NSOrderedSame);
- } else {
- ret = [idA isEqual:idB];
- }
- return ret;
-}
-
-static CFHashCode CaseInsensitiveHashCallback(const void *value) {
- id idValue = (id)value;
- CFHashCode ret = 0;
- if ([idValue isKindOfClass:[NSString class]]) {
- ret = [[idValue lowercaseString] hash];
- } else {
- ret = [idValue hash];
- }
- return ret;
-}
-
-@implementation NSDictionary (GTMNSDictionaryCaseInsensitiveAdditions)
-
-- (id)gtm_initWithDictionaryCaseInsensitive:(NSDictionary *)dictionary {
- [self release];
- self = nil;
-
- CFIndex count = 0;
- void *keys = NULL;
- void *values = NULL;
-
- if (dictionary) {
- count = CFDictionaryGetCount((CFDictionaryRef)dictionary);
-
- if (count) {
- keys = malloc(count * sizeof(void *));
- values = malloc(count * sizeof(void *));
- if (!keys || !values) {
- free(keys);
- free(values);
- return self;
- }
-
- CFDictionaryGetKeysAndValues((CFDictionaryRef)dictionary, keys, values);
- }
- }
-
- CFDictionaryKeyCallBacks keyCallbacks = kCFCopyStringDictionaryKeyCallBacks;
- _GTMDevAssert(keyCallbacks.version == 0,
- @"CFDictionaryKeyCallBacks structure updated");
- keyCallbacks.equal = CaseInsensitiveEqualCallback;
- keyCallbacks.hash = CaseInsensitiveHashCallback;
-
- self = (id)CFDictionaryCreate(kCFAllocatorDefault,
- keys, values, count, &keyCallbacks,
- &kCFTypeDictionaryValueCallBacks);
-
- free(keys);
- free(values);
-
- return self;
-}
-
-+ (id)gtm_dictionaryWithDictionaryCaseInsensitive:(NSDictionary *)dictionary {
- return [[[self alloc]
- gtm_initWithDictionaryCaseInsensitive:dictionary] autorelease];
-}
-
-@end
-
-@implementation NSMutableDictionary (GTMNSMutableDictionaryCaseInsensitiveAdditions)
-
-- (id)gtm_initWithDictionaryCaseInsensitive:(NSDictionary *)dictionary {
- if ((self = [super gtm_initWithDictionaryCaseInsensitive:dictionary])) {
- id copy = (id)CFDictionaryCreateMutableCopy(kCFAllocatorDefault, 0,
- (CFDictionaryRef)self);
- [self release];
- self = copy;
- }
- return self;
-}
-
-@end
diff --git a/Foundation/GTMNSDictionary+CaseInsensitiveTest.m b/Foundation/GTMNSDictionary+CaseInsensitiveTest.m
deleted file mode 100644
index 67584ff..0000000
--- a/Foundation/GTMNSDictionary+CaseInsensitiveTest.m
+++ /dev/null
@@ -1,119 +0,0 @@
-//
-// GTMNSDictionary+CaseInsensitiveTest.m
-//
-// Copyright 2009 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMSenTestCase.h"
-#import "GTMNSDictionary+CaseInsensitive.h"
-
-@interface GTMNSDictionary_CaseInsensitiveTest : GTMTestCase
-@end
-
-@implementation GTMNSDictionary_CaseInsensitiveTest
-
-- (void)testNSDictionaryCaseInsensitiveAdditions {
- NSURL *objKey = [NSURL URLWithString:@"http://WWW.Google.COM/"];
- NSURL *lcObjKey = [NSURL URLWithString:[[objKey absoluteString]
- lowercaseString]];
-
- NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
- @"value", @"key",
- @"value", @"KEY",
- @"bar", @"FOO",
- @"yes", objKey,
- nil];
-
- NSDictionary *ciDict =
- [NSDictionary gtm_dictionaryWithDictionaryCaseInsensitive:dict];
-
- STAssertNotNil(ciDict, @"gtm_dictionaryWithDictionaryCaseInsensitive failed");
-
- STAssertTrue([ciDict count] == 3,
- @"wrong count, multiple 'key' entries should be folded.");
-
- STAssertEqualStrings([ciDict objectForKey:@"foo"], @"bar",
- @"case insensitive key lookup failed");
-
- STAssertEqualStrings([ciDict objectForKey:@"kEy"], @"value",
- @"case insensitive key lookup failed");
-
- STAssertNotNil([ciDict objectForKey:objKey],
- @"exact matches on non-NSString objects should still work.");
-
- STAssertNil([ciDict objectForKey:lcObjKey],
- @"only NSString and subclasses are case-insensitive.");
-
- STAssertNotNil([NSDictionary gtm_dictionaryWithDictionaryCaseInsensitive:
- [NSDictionary dictionary]],
- @"empty dictionary should not return nil");
-
- STAssertNotNil([NSDictionary gtm_dictionaryWithDictionaryCaseInsensitive:
- nil],
- @"nil dictionary should return empty dictionary");
-
- STAssertNotNil([[[NSDictionary alloc] gtm_initWithDictionaryCaseInsensitive:
- nil] autorelease],
- @"nil dictionary should return empty dictionary");
-}
-
-- (void)testNSMutableDictionaryCaseInsensitiveAdditions {
- NSURL *objKey = [NSURL URLWithString:@"http://WWW.Google.COM/"];
- NSURL *lcObjKey = [NSURL URLWithString:[[objKey absoluteString]
- lowercaseString]];
-
- NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
- @"value", @"key",
- @"value", @"KEY",
- @"bar", @"FOO",
- @"yes", objKey,
- nil];
-
- NSMutableDictionary *ciDict =
- [NSMutableDictionary gtm_dictionaryWithDictionaryCaseInsensitive:dict];
-
- STAssertNotNil(ciDict, @"gtm_dictionaryWithDictionaryCaseInsensitive failed");
-
- STAssertTrue([ciDict count] == 3,
- @"wrong count, multiple 'key' entries should be folded.");
-
- STAssertEqualStrings([ciDict objectForKey:@"foo"], @"bar",
- @"case insensitive key lookup failed");
-
- STAssertEqualStrings([ciDict objectForKey:@"kEy"], @"value",
- @"case insensitive key lookup failed");
-
- STAssertNotNil([ciDict objectForKey:objKey],
- @"exact matches on non-NSString objects should still work.");
-
- STAssertNil([ciDict objectForKey:lcObjKey],
- @"only NSString and subclasses are case-insensitive.");
-
- NSObject *obj = [[[NSObject alloc] init] autorelease];
- [ciDict setObject:obj forKey:@"kEy"];
- STAssertEquals([ciDict objectForKey:@"key"], obj,
- @"mutable dictionary value not overwritten");
-
- STAssertNotNil(
- [NSMutableDictionary gtm_dictionaryWithDictionaryCaseInsensitive:
- [NSDictionary dictionary]],
- @"empty dictionary should not return nil");
-
- STAssertNotNil(
- [NSMutableDictionary gtm_dictionaryWithDictionaryCaseInsensitive:nil],
- @"nil dictionary should return empty dictionary");
-}
-
-@end
diff --git a/Foundation/GTMNSDictionary+URLArguments.m b/Foundation/GTMNSDictionary+URLArguments.m
index 5a7aa5f..e9fa766 100644
--- a/Foundation/GTMNSDictionary+URLArguments.m
+++ b/Foundation/GTMNSDictionary+URLArguments.m
@@ -38,7 +38,7 @@ GTM_METHOD_CHECK(NSString, gtm_stringByUnescapingFromURLArgument);
NSString* component;
// Use reverse order so that the first occurrence of a key replaces
// those subsequent.
- GTM_FOREACH_ENUMEREE(component, [components reverseObjectEnumerator]) {
+ for (component in [components reverseObjectEnumerator]) {
if ([component length] == 0)
continue;
NSRange pos = [component rangeOfString:@"="];
@@ -65,7 +65,7 @@ GTM_METHOD_CHECK(NSString, gtm_stringByUnescapingFromURLArgument);
- (NSString *)gtm_httpArgumentsString {
NSMutableArray* arguments = [NSMutableArray arrayWithCapacity:[self count]];
NSString* key;
- GTM_FOREACH_KEY(key, self) {
+ for (key in self) {
[arguments addObject:[NSString stringWithFormat:@"%@=%@",
[key gtm_stringByEscapingForURLArgument],
[[[self objectForKey:key] description] gtm_stringByEscapingForURLArgument]]];
diff --git a/Foundation/GTMNSDictionary+URLArgumentsTest.m b/Foundation/GTMNSDictionary+URLArgumentsTest.m
index 8ec9520..11ceb8a 100644
--- a/Foundation/GTMNSDictionary+URLArgumentsTest.m
+++ b/Foundation/GTMNSDictionary+URLArgumentsTest.m
@@ -6,9 +6,9 @@
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy
// of the License at
-//
+//
// http://www.apache.org/licenses/LICENSE-2.0
-//
+//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
@@ -26,42 +26,42 @@
@implementation GTMNSDictionary_URLArgumentsTest
- (void)testFromArgumentsString {
- STAssertEqualObjects([NSDictionary gtm_dictionaryWithHttpArgumentsString:@""],
- [NSDictionary dictionary],
- @"- empty arguments string should give an empty dictionary");
- STAssertEqualObjects([NSDictionary gtm_dictionaryWithHttpArgumentsString:@"a"],
- [NSDictionary dictionaryWithObject:@"" forKey:@"a"],
- @"- missing '=' should result in an empty string value");
- STAssertEqualObjects([NSDictionary gtm_dictionaryWithHttpArgumentsString:@"a="],
- [NSDictionary dictionaryWithObject:@"" forKey:@"a"],
- @"- no value");
- STAssertEqualObjects([NSDictionary gtm_dictionaryWithHttpArgumentsString:@"&a=1"],
- [NSDictionary dictionaryWithObject:@"1" forKey:@"a"],
- @"- empty segment should be skipped");
- STAssertEqualObjects([NSDictionary gtm_dictionaryWithHttpArgumentsString:@"abc=123"],
- [NSDictionary dictionaryWithObject:@"123" forKey:@"abc"],
- @"- simple one-pair dictionary should work");
- STAssertEqualObjects([NSDictionary gtm_dictionaryWithHttpArgumentsString:@"a=1&a=2&a=3"],
- [NSDictionary dictionaryWithObject:@"1" forKey:@"a"],
- @"- only first occurrence of a key is returned");
+ XCTAssertEqualObjects([NSDictionary gtm_dictionaryWithHttpArgumentsString:@""],
+ [NSDictionary dictionary],
+ @"- empty arguments string should give an empty dictionary");
+ XCTAssertEqualObjects([NSDictionary gtm_dictionaryWithHttpArgumentsString:@"a"],
+ [NSDictionary dictionaryWithObject:@"" forKey:@"a"],
+ @"- missing '=' should result in an empty string value");
+ XCTAssertEqualObjects([NSDictionary gtm_dictionaryWithHttpArgumentsString:@"a="],
+ [NSDictionary dictionaryWithObject:@"" forKey:@"a"],
+ @"- no value");
+ XCTAssertEqualObjects([NSDictionary gtm_dictionaryWithHttpArgumentsString:@"&a=1"],
+ [NSDictionary dictionaryWithObject:@"1" forKey:@"a"],
+ @"- empty segment should be skipped");
+ XCTAssertEqualObjects([NSDictionary gtm_dictionaryWithHttpArgumentsString:@"abc=123"],
+ [NSDictionary dictionaryWithObject:@"123" forKey:@"abc"],
+ @"- simple one-pair dictionary should work");
+ XCTAssertEqualObjects([NSDictionary gtm_dictionaryWithHttpArgumentsString:@"a=1&a=2&a=3"],
+ [NSDictionary dictionaryWithObject:@"1" forKey:@"a"],
+ @"- only first occurrence of a key is returned");
NSString* complex = @"a%2Bb=specialkey&complex=1%2B1%21%3D3%20%26%202%2A6%2F3%3D4&c";
NSDictionary* result = [NSDictionary dictionaryWithObjectsAndKeys:
@"1+1!=3 & 2*6/3=4", @"complex",
@"specialkey", @"a+b",
@"", @"c",
nil];
- STAssertEqualObjects([NSDictionary gtm_dictionaryWithHttpArgumentsString:complex],
- result,
- @"- keys and values should be unescaped correctly");
- STAssertEqualObjects([NSDictionary gtm_dictionaryWithHttpArgumentsString:@"a=%FC"],
- [NSDictionary dictionaryWithObject:@"" forKey:@"a"],
- @"- invalid UTF8 characters result in an empty value, not a crash");
+ XCTAssertEqualObjects([NSDictionary gtm_dictionaryWithHttpArgumentsString:complex],
+ result,
+ @"- keys and values should be unescaped correctly");
+ XCTAssertEqualObjects([NSDictionary gtm_dictionaryWithHttpArgumentsString:@"a=%FC"],
+ [NSDictionary dictionaryWithObject:@"" forKey:@"a"],
+ @"- invalid UTF8 characters result in an empty value, not a crash");
}
- (void)testArgumentsString {
- STAssertEqualObjects([[NSDictionary dictionary] gtm_httpArgumentsString], @"",
- @"- empty dictionary should give an empty string");
- STAssertEqualObjects([[NSDictionary dictionaryWithObject:@"123" forKey:@"abc"] gtm_httpArgumentsString],
+ XCTAssertEqualObjects([[NSDictionary dictionary] gtm_httpArgumentsString], @"",
+ @"- empty dictionary should give an empty string");
+ XCTAssertEqualObjects([[NSDictionary dictionaryWithObject:@"123" forKey:@"abc"] gtm_httpArgumentsString],
@"abc=123",
@"- simple one-pair dictionary should work");
NSDictionary* arguments = [NSDictionary dictionaryWithObjectsAndKeys:
@@ -72,15 +72,15 @@
// check for individual pieces since order is not guaranteed
NSString* component1 = @"a%2Bb=specialkey";
NSString* component2 = @"complex=1%2B1%21%3D3%20%26%202%2A6%2F3%3D4";
- STAssertNotEquals([argumentString rangeOfString:component1].location, (NSUInteger)NSNotFound,
+ XCTAssertNotEqual([argumentString rangeOfString:component1].location, (NSUInteger)NSNotFound,
@"- '%@' not found in '%@'", component1, argumentString);
- STAssertNotEquals([argumentString rangeOfString:component2].location, (NSUInteger)NSNotFound,
+ XCTAssertNotEqual([argumentString rangeOfString:component2].location, (NSUInteger)NSNotFound,
@"- '%@' not found in '%@'", component2, argumentString);
- STAssertNotEquals([argumentString rangeOfString:@"&"].location, (NSUInteger)NSNotFound,
+ XCTAssertNotEqual([argumentString rangeOfString:@"&"].location, (NSUInteger)NSNotFound,
@"- special characters should be escaped");
- STAssertNotEquals([argumentString characterAtIndex:0], (unichar)'&',
+ XCTAssertNotEqual([argumentString characterAtIndex:0], (unichar)'&',
@"- there should be no & at the beginning of the string");
- STAssertNotEquals([argumentString characterAtIndex:([argumentString length] - 1)], (unichar)'&',
+ XCTAssertNotEqual([argumentString characterAtIndex:([argumentString length] - 1)], (unichar)'&',
@"- there should be no & at the end of the string");
}
diff --git a/Foundation/GTMNSEnumerator+Filter.h b/Foundation/GTMNSEnumerator+Filter.h
deleted file mode 100644
index 8e4a6b7..0000000
--- a/Foundation/GTMNSEnumerator+Filter.h
+++ /dev/null
@@ -1,69 +0,0 @@
-//
-// GTMNSEnumerator+Filter.h
-//
-// Copyright 2007-2009 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import <Foundation/Foundation.h>
-
-// A generic category for methods that allow us to filter enumeratable
-// containers, inspired by C++ Standard Library's use of iterators.
-// Like in C++, these assume the underlying container is not modified during
-// the lifetime of the iterator.
-//
-@interface NSEnumerator (GTMEnumeratorFilterAdditions)
-
-// Performs -[element predicate:argument] on each object in self.
-// Returns an enumerator where -[element predicate:argument] returned YES.
-// Predicate must be of form -(BOOL)predicate:(id)argument.
-- (NSEnumerator *)gtm_filteredEnumeratorByMakingEachObjectPerformSelector:(SEL)predicate
- withObject:(id)argument;
-
-// Performs -[element selector:argument] on each object in self.
-// Returns an enumerator of the return values of -[element selector:argument].
-// Selector must be of form -(id)selector:(id)argument.
-- (NSEnumerator *)gtm_enumeratorByMakingEachObjectPerformSelector:(SEL)selector
- withObject:(id)argument;
-
-// Performs -[target predicate:element] on each object in self.
-// Returns an enumerator where -[target predicate:element] returned YES.
-// Predicate must be of form -(BOOL)predicate:(id)element.
-- (NSEnumerator *)gtm_filteredEnumeratorByTarget:(id)target
- performOnEachSelector:(SEL)predicate;
-
-// Performs -[target predicate:element withObject:object] on each object in self.
-// Returns an enumerator where -[target predicate:element withObject:object]
-// returned YES.
-// Predicate must be of form -(BOOL)predicate:(id)element withObject:(id)object.
-- (NSEnumerator *)gtm_filteredEnumeratorByTarget:(id)target
- performOnEachSelector:(SEL)predicate
- withObject:(id)object;
-
-// Performs -[target selector:element] on each object in self.
-// Returns an enumerator of the return values of -[target selector:element].
-// Selector must be of form -(id)selector:(id)element.
-- (NSEnumerator *)gtm_enumeratorByTarget:(id)target
- performOnEachSelector:(SEL)selector;
-
-// Performs -[target selector:element withObject:object] on each object in self.
-// Returns an enumerator of the return values of
-// -[target selector:element withObject:object].
-// Selector must be of form -(id)selector:(id)element withObject:(id)object.
-- (NSEnumerator *)gtm_enumeratorByTarget:(id)target
- performOnEachSelector:(SEL)selector
- withObject:(id)object;
-
-@end
-
diff --git a/Foundation/GTMNSEnumerator+Filter.m b/Foundation/GTMNSEnumerator+Filter.m
deleted file mode 100644
index cc1cb41..0000000
--- a/Foundation/GTMNSEnumerator+Filter.m
+++ /dev/null
@@ -1,221 +0,0 @@
-//
-// GTMNSEnumerator+Filter.m
-//
-// Copyright 2007-2009 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMNSEnumerator+Filter.h"
-#import "GTMDebugSelectorValidation.h"
-#import "GTMDefines.h"
-#if GTM_IPHONE_SDK
-#import <objc/message.h>
-#import <objc/runtime.h>
-#else
-#import <objc/objc-runtime.h>
-#endif
-
-// a private subclass of NSEnumerator that does all the work.
-// public interface just returns one of these.
-// This top level class contains all the additional boilerplate. Specific
-// behavior is in the subclasses.
-@interface GTMEnumeratorPrivateBase : NSEnumerator {
- @protected
- NSEnumerator *base_;
- SEL operation_; // either a predicate or a transform depending on context.
- id target_; // may be nil
- id object_; // may be nil
-}
-@end
-
-@interface GTMEnumeratorPrivateBase (SubclassesMustProvide)
-- (BOOL)filterObject:(id)obj returning:(id *)resultp;
-@end
-
-@implementation GTMEnumeratorPrivateBase
-- (id)initWithBase:(NSEnumerator *)base
- sel:(SEL)filter
- target:(id)optionalTarget
- object:(id)optionalOther {
- self = [super init];
- if (self) {
-
- // someone would have to subclass or directly create an object of this
- // class, and this class is private to this impl.
- _GTMDevAssert(base, @"can't initWithBase: a nil base enumerator");
- base_ = [base retain];
- operation_ = filter;
- target_ = [optionalTarget retain];
- object_ = [optionalOther retain];
- }
- return self;
-}
-
-// we don't provide an init because this base class is private to this
-// impl, and no one would be able to create it (if they do, they get whatever
-// they happens...).
-
-- (void)dealloc {
- [base_ release];
- [target_ release];
- [object_ release];
- [super dealloc];
-}
-
-- (id)nextObject {
- for (id obj = [base_ nextObject]; obj; obj = [base_ nextObject]) {
- id result = nil;
- if ([self filterObject:obj returning:&result]) {
- return result;
- }
- }
- return nil;
-}
-@end
-
-// a transformer, for each item in the enumerator, returns a f(item).
-@interface GTMEnumeratorTransformer : GTMEnumeratorPrivateBase
-@end
-@implementation GTMEnumeratorTransformer
-- (BOOL)filterObject:(id)obj returning:(id *)resultp {
- *resultp = [obj performSelector:operation_ withObject:object_];
- return nil != *resultp;
-}
-@end
-
-// a transformer, for each item in the enumerator, returns a f(item).
-// a target transformer swaps the target and the argument.
-@interface GTMEnumeratorTargetTransformer : GTMEnumeratorPrivateBase
-@end
-@implementation GTMEnumeratorTargetTransformer
-- (BOOL)filterObject:(id)obj returning:(id *)resultp {
- *resultp = [target_ performSelector:operation_
- withObject:obj
- withObject:object_];
- return nil != *resultp;
-}
-@end
-
-// a filter, for each item in the enumerator, if(f(item)) { returns item. }
-@interface GTMEnumeratorFilter : GTMEnumeratorPrivateBase
-@end
-@implementation GTMEnumeratorFilter
-// We must take care here, since Intel leaves junk in high bytes of return
-// register for predicates that return BOOL.
-// For details see:
-// http://developer.apple.com/legacy/mac/library/documentation/MacOSX/Conceptual/universal_binary/universal_binary_tips/universal_binary_tips.html#//apple_ref/doc/uid/TP40002217-CH239-280661
-// and
-// http://www.red-sweater.com/blog/320/abusing-objective-c-with-class#comment-83187
-- (BOOL)filterObject:(id)obj returning:(id *)resultp {
- *resultp = obj;
- return ((BOOL (*)(id, SEL, id))objc_msgSend)(obj, operation_, object_);
-}
-@end
-
-// a target filter, for each item in the enumerator, if(f(item)) { returns item. }
-// a target transformer swaps the target and the argument.
-@interface GTMEnumeratorTargetFilter : GTMEnumeratorPrivateBase
-@end
-@implementation GTMEnumeratorTargetFilter
-// We must take care here, since Intel leaves junk in high bytes of return
-// register for predicates that return BOOL.
-// For details see:
-// http://developer.apple.com/legacy/mac/library/documentation/MacOSX/Conceptual/universal_binary/universal_binary_tips/universal_binary_tips.html#//apple_ref/doc/uid/TP40002217-CH239-280661
-// and
-// http://www.red-sweater.com/blog/320/abusing-objective-c-with-class#comment-83187
-- (BOOL)filterObject:(id)obj returning:(id *)resultp {
- *resultp = obj;
- return ((BOOL (*)(id, SEL, id, id))objc_msgSend)(target_, operation_, obj, object_);
-}
-@end
-
-@implementation NSEnumerator (GTMEnumeratorFilterAdditions)
-
-- (NSEnumerator *)gtm_filteredEnumeratorByMakingEachObjectPerformSelector:(SEL)selector
- withObject:(id)argument {
- return [[[GTMEnumeratorFilter alloc] initWithBase:self
- sel:selector
- target:nil
- object:argument] autorelease];
-}
-
-- (NSEnumerator *)gtm_enumeratorByMakingEachObjectPerformSelector:(SEL)selector
- withObject:(id)argument {
- return [[[GTMEnumeratorTransformer alloc] initWithBase:self
- sel:selector
- target:nil
- object:argument] autorelease];
-}
-
-
-- (NSEnumerator *)gtm_filteredEnumeratorByTarget:(id)target
- performOnEachSelector:(SEL)predicate {
- // make sure the object impls this selector taking an object as an arg.
- GTMAssertSelectorNilOrImplementedWithReturnTypeAndArguments(target, predicate,
- @encode(BOOL),
- @encode(id),
- NULL);
- return [[[GTMEnumeratorTargetFilter alloc] initWithBase:self
- sel:predicate
- target:target
- object:nil] autorelease];
-}
-
-- (NSEnumerator *)gtm_filteredEnumeratorByTarget:(id)target
- performOnEachSelector:(SEL)predicate
- withObject:(id)object {
- // make sure the object impls this selector taking an object as an arg.
- GTMAssertSelectorNilOrImplementedWithReturnTypeAndArguments(target, predicate,
- @encode(BOOL),
- @encode(id),
- @encode(id),
- NULL);
- return [[[GTMEnumeratorTargetFilter alloc] initWithBase:self
- sel:predicate
- target:target
- object:object] autorelease];
-}
-
-- (NSEnumerator *)gtm_enumeratorByTarget:(id)target
- performOnEachSelector:(SEL)selector {
- // make sure the object impls this selector taking an object as an arg.
- GTMAssertSelectorNilOrImplementedWithReturnTypeAndArguments(target, selector,
- @encode(id),
- @encode(id),
- NULL);
- return [[[GTMEnumeratorTargetTransformer alloc] initWithBase:self
- sel:selector
- target:target
- object:nil]
- autorelease];
-}
-
-- (NSEnumerator *)gtm_enumeratorByTarget:(id)target
- performOnEachSelector:(SEL)selector
- withObject:(id)object {
- // make sure the object impls this selector taking an object as an arg.
- GTMAssertSelectorNilOrImplementedWithReturnTypeAndArguments(target, selector,
- @encode(id),
- @encode(id),
- @encode(id),
- NULL);
- return [[[GTMEnumeratorTargetTransformer alloc] initWithBase:self
- sel:selector
- target:target
- object:object]
- autorelease];
-}
-
-@end
-
diff --git a/Foundation/GTMNSEnumerator+FilterTest.m b/Foundation/GTMNSEnumerator+FilterTest.m
deleted file mode 100644
index 969a5a5..0000000
--- a/Foundation/GTMNSEnumerator+FilterTest.m
+++ /dev/null
@@ -1,208 +0,0 @@
-//
-// GTMNSEnumerator+FilterTest.m
-//
-// Copyright 2007-2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMSenTestCase.h"
-#import "GTMNSEnumerator+Filter.h"
-
-@interface GTMNSEnumerator_FilterTest : GTMTestCase
-@end
-
-@implementation GTMNSEnumerator_FilterTest
-
-- (void)testEnumeratorByMakingEachObjectPerformSelector {
- // test w/ a set of strings
- NSSet *numbers = [NSSet setWithObjects: @"1", @"2", @"3", nil];
- NSEnumerator *e = [[numbers objectEnumerator]
- gtm_enumeratorByMakingEachObjectPerformSelector:@selector(stringByAppendingString:)
- withObject:@" "];
- NSMutableSet *trailingSpaces = [NSMutableSet set];
- id obj;
- while (nil != (obj = [e nextObject])) {
- [trailingSpaces addObject:obj];
- }
- NSSet *trailingSpacesGood = [NSSet setWithObjects: @"1 ", @"2 ", @"3 ", nil];
- STAssertEqualObjects(trailingSpaces, trailingSpacesGood, @"");
-
- // test an empty set
- NSSet *empty = [NSSet set];
- e = [[empty objectEnumerator]
- gtm_enumeratorByMakingEachObjectPerformSelector:@selector(stringByAppendingString:)
- withObject:@" "];
- STAssertNil([e nextObject],
- @"shouldn't have gotten anything from first advance of "
- @"enumerator");
-}
-
-- (void)testFilteredEnumeratorByMakingEachObjectPerformSelector {
- // test with a dict of strings
- NSDictionary *testDict = [NSDictionary dictionaryWithObjectsAndKeys:
- @"foo", @"1",
- @"bar", @"2",
- @"foobar", @"3",
- nil];
- // test those that have prefixes
- NSEnumerator *e = [[testDict objectEnumerator]
- gtm_filteredEnumeratorByMakingEachObjectPerformSelector:@selector(hasPrefix:)
- withObject:@"foo"];
- // since the dictionary iterates in any order, compare as sets
- NSSet *filteredValues = [NSSet setWithArray:[e allObjects]];
- NSSet *expectedValues = [NSSet setWithObjects:@"foo", @"foobar", nil];
- STAssertEqualObjects(filteredValues, expectedValues, @"");
-
- // test an empty set
- NSSet *empty = [NSSet set];
- e = [[empty objectEnumerator]
- gtm_filteredEnumeratorByMakingEachObjectPerformSelector:@selector(hasPrefix:)
- withObject:@"foo"];
- STAssertNil([e nextObject],
- @"shouldn't have gotten anything from first advance of "
- @"enumerator");
-
- // test an set that will filter out
- NSSet *filterAway = [NSSet setWithObjects:@"bar", @"baz", nil];
- e = [[filterAway objectEnumerator]
- gtm_filteredEnumeratorByMakingEachObjectPerformSelector:@selector(hasPrefix:)
- withObject:@"foo"];
- STAssertNil([e nextObject],
- @"shouldn't have gotten anything from first advance of "
- @"enumerator");
-}
-
-- (void)testEnumeratorByTargetPerformOnEachSelector {
- // test w/ a set of strings
- NSSet *numbers = [NSSet setWithObjects: @"1", @"2", @"3", nil];
- NSString *target = @"foo";
- NSEnumerator *e = [[numbers objectEnumerator]
- gtm_enumeratorByTarget:target
- performOnEachSelector:@selector(stringByAppendingString:)];
- // since the set iterates in any order, compare as sets
- NSSet *collectedValues = [NSSet setWithArray:[e allObjects]];
- NSSet *expectedValues = [NSSet setWithObjects:@"foo1", @"foo2", @"foo3", nil];
- STAssertEqualObjects(collectedValues, expectedValues, @"");
-
- // test an empty set
- NSSet *empty = [NSSet set];
- e = [[empty objectEnumerator]
- gtm_enumeratorByTarget:target
- performOnEachSelector:@selector(stringByAppendingString:)];
- STAssertNil([e nextObject],
- @"shouldn't have gotten anything from first advance of "
- @"enumerator");
-}
-
-- (id)prependString:(NSString*)pre toString:(NSString *)post {
- return [pre stringByAppendingString:post];
-}
-
-- (void)testEnumeratorByTargetPerformOnEachSelectorWithObject {
- // test w/ a set of strings
- NSSet *numbers = [NSSet setWithObjects: @"1", @"2", @"3", nil];
- NSEnumerator *e = [[numbers objectEnumerator]
- gtm_enumeratorByTarget:self
- performOnEachSelector:@selector(prependString:toString:)
- withObject:@"bar"];
- // since the set iterates in any order, compare as sets
- NSSet *collectedValues = [NSSet setWithArray:[e allObjects]];
- NSSet *expectedValues = [NSSet setWithObjects:@"1bar",
- @"2bar",
- @"3bar",
- nil];
- STAssertEqualObjects(collectedValues, expectedValues, @"");
-
- // test an empty set
- NSSet *empty = [NSSet set];
- e = [[empty objectEnumerator]
- gtm_enumeratorByTarget:self
- performOnEachSelector:@selector(prependString:toString:)
- withObject:@"bar"];
- STAssertNil([e nextObject],
- @"shouldn't have gotten anything from first advance of "
- @"enumerator");
-}
-
-
-- (void)testFilteredEnumeratorByTargetPerformOnEachSelector {
- // test w/ a set of strings
- NSSet *numbers = [NSSet setWithObjects:@"1", @"2", @"3", @"4", nil];
- NSSet *target = [NSSet setWithObjects:@"2", @"4", @"6", nil];
- NSEnumerator *e = [[numbers objectEnumerator]
- gtm_filteredEnumeratorByTarget:target
- performOnEachSelector:@selector(containsObject:)];
- // since the set iterates in any order, compare as sets
- NSSet *filteredValues = [NSSet setWithArray:[e allObjects]];
- NSSet *expectedValues = [NSSet setWithObjects:@"2", @"4", nil];
- STAssertEqualObjects(filteredValues, expectedValues, @"");
-
- // test an empty set
- NSSet *empty = [NSSet set];
- e = [[empty objectEnumerator]
- gtm_filteredEnumeratorByTarget:target
- performOnEachSelector:@selector(containsObject:)];
- STAssertNil([e nextObject],
- @"shouldn't have gotten anything from first advance of "
- @"enumerator");
-
- // test a set that will filter out
- NSSet *filterAway = [NSSet setWithObjects:@"bar", @"baz", nil];
- e = [[filterAway objectEnumerator]
- gtm_filteredEnumeratorByTarget:target
- performOnEachSelector:@selector(containsObject:)];
- STAssertNil([e nextObject],
- @"shouldn't have gotten anything from first advance of "
- @"enumerator");
-}
-
-- (BOOL)is:(id)a equalTo:(id)b {
- return [a isEqual:b];
-}
-
-- (void)testFilteredEnumeratorByTargetPerformOnEachSelectorWithObject {
- // test w/ a set of strings
- NSSet *numbers = [NSSet setWithObjects:@"1", @"2", @"3", @"4", nil];
- NSEnumerator *e = [[numbers objectEnumerator]
- gtm_filteredEnumeratorByTarget:self
- performOnEachSelector:@selector(is:equalTo:)
- withObject:@"2"];
- // since the set iterates in any order, compare as sets
- NSSet *filteredValues = [NSSet setWithArray:[e allObjects]];
- NSSet *expectedValues = [NSSet setWithObjects:@"2", nil];
- STAssertEqualObjects(filteredValues, expectedValues, @"");
-
- // test an empty set
- NSSet *empty = [NSSet set];
- e = [[empty objectEnumerator]
- gtm_filteredEnumeratorByTarget:self
- performOnEachSelector:@selector(is:equalTo:)
- withObject:@"2"];
- STAssertNil([e nextObject],
- @"shouldn't have gotten anything from first advance of "
- @"enumerator");
-
- // test a set that will filter out
- NSSet *filterAway = [NSSet setWithObjects:@"bar", @"baz", nil];
- e = [[filterAway objectEnumerator]
- gtm_filteredEnumeratorByTarget:self
- performOnEachSelector:@selector(is:equalTo:)
- withObject:@"2"];
- STAssertNil([e nextObject],
- @"shouldn't have gotten anything from first advance of "
- @"enumerator");
-}
-
-
-@end
diff --git a/Foundation/GTMNSFileHandle+UniqueNameTest.m b/Foundation/GTMNSFileHandle+UniqueNameTest.m
index 45cd8c7..0f0dc49 100644
--- a/Foundation/GTMNSFileHandle+UniqueNameTest.m
+++ b/Foundation/GTMNSFileHandle+UniqueNameTest.m
@@ -28,69 +28,63 @@
NSFileHandle *handle
= [NSFileHandle gtm_fileHandleWithUniqueNameBasedOn:nil
finalPath:nil];
- STAssertNil(handle, nil);
+ XCTAssertNil(handle);
// Try and create a file where we shouldn't be able to.
NSString *path = nil;
handle = [NSFileHandle gtm_fileHandleWithUniqueNameBasedOn:@"/System/HappyXXX.txt"
finalPath:&path];
- STAssertNil(handle, nil);
- STAssertNil(path, nil);
+ XCTAssertNil(handle);
+ XCTAssertNil(path);
NSFileManager *fm = [NSFileManager defaultManager];
NSString *tempDir
= [fm gtm_createTemporaryDirectoryBasedOn:@"GTMNSFileHandle_UniqueNameTestXXXXXX"];
- STAssertNotNil(tempDir, nil);
+ XCTAssertNotNil(tempDir);
BOOL isDirectory = NO;
- STAssertTrue([fm fileExistsAtPath:tempDir isDirectory:&isDirectory]
- && isDirectory, nil);
+ XCTAssertTrue([fm fileExistsAtPath:tempDir isDirectory:&isDirectory] && isDirectory);
// Test with extension
handle = [NSFileHandle gtm_fileHandleWithUniqueNameBasedOn:@"HappyXXX.txt"
inDirectory:tempDir
finalPath:&path];
- STAssertNotNil(handle, nil);
- STAssertEqualObjects([path pathExtension], @"txt", nil);
- STAssertTrue([fm fileExistsAtPath:path], nil);
+ XCTAssertNotNil(handle);
+ XCTAssertEqualObjects([path pathExtension], @"txt");
+ XCTAssertTrue([fm fileExistsAtPath:path]);
// Test without extension
handle = [NSFileHandle gtm_fileHandleWithUniqueNameBasedOn:@"HappyXXX"
inDirectory:tempDir
finalPath:&path];
- STAssertNotNil(handle, nil);
- STAssertEqualObjects([path pathExtension], @"", nil);
- STAssertTrue([fm fileExistsAtPath:path], nil);
+ XCTAssertNotNil(handle);
+ XCTAssertEqualObjects([path pathExtension], @"");
+ XCTAssertTrue([fm fileExistsAtPath:path]);
// Test passing in same name twice
NSString *fullPath = [tempDir stringByAppendingPathComponent:@"HappyXXX"];
NSString *newPath = nil;
handle = [NSFileHandle gtm_fileHandleWithUniqueNameBasedOn:fullPath
finalPath:&newPath];
- STAssertNotNil(handle, nil);
- STAssertNotNil(newPath, nil);
- STAssertNotEqualObjects(path, newPath, nil);
- STAssertTrue([fm fileExistsAtPath:newPath], nil);
+ XCTAssertNotNil(handle);
+ XCTAssertNotNil(newPath);
+ XCTAssertNotEqualObjects(path, newPath);
+ XCTAssertTrue([fm fileExistsAtPath:newPath]);
// Test passing in same name twice with no template
fullPath = [tempDir stringByAppendingPathComponent:@"Sad"];
newPath = nil;
handle = [NSFileHandle gtm_fileHandleWithUniqueNameBasedOn:fullPath
finalPath:&newPath];
- STAssertNotNil(handle, nil);
- STAssertNotNil(newPath, nil);
+ XCTAssertNotNil(handle);
+ XCTAssertNotNil(newPath);
newPath = nil;
handle = [NSFileHandle gtm_fileHandleWithUniqueNameBasedOn:fullPath
finalPath:&newPath];
- STAssertNil(handle, nil);
- STAssertNil(newPath, nil);
+ XCTAssertNil(handle);
+ XCTAssertNil(newPath);
-#if GTM_MACOS_SDK && (MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5)
- [fm removeFileAtPath:tempDir handler:nil];
-#else // MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5
[fm removeItemAtPath:tempDir error:nil];
-#endif
-
}
- (void)testFileHandleWithUniqueNameBasedOnInDirectorySearchMaskFinalPath {
@@ -101,21 +95,17 @@
inDirectory:NSCachesDirectory
domainMask:NSUserDomainMask
finalPath:&path];
- STAssertNil(handle, nil);
- STAssertNil(path, nil);
+ XCTAssertNil(handle);
+ XCTAssertNil(path);
handle = [NSFileHandle gtm_fileHandleWithUniqueNameBasedOn:@"HappyXXX.txt"
inDirectory:NSCachesDirectory
domainMask:NSUserDomainMask
finalPath:&path];
- STAssertNotNil(handle, nil);
- STAssertNotNil(path, nil);
- STAssertTrue([fm fileExistsAtPath:path], nil);
-#if GTM_MACOS_SDK && (MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5)
- [fm removeFileAtPath:path handler:nil];
-#else // MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5
+ XCTAssertNotNil(handle);
+ XCTAssertNotNil(path);
+ XCTAssertTrue([fm fileExistsAtPath:path]);
[fm removeItemAtPath:path error:nil];
-#endif
}
@end
@@ -129,7 +119,7 @@
NSFileManager *fm = [NSFileManager defaultManager];
NSString *path
= [fm gtm_createDirectoryWithUniqueNameBasedOn:@"/System/HappyXXX.txt"];
- STAssertNil(path, nil);
+ XCTAssertNil(path);
}
- (void)testCreateDirectoryWithUniqueNameBasedOnInDirectorySearchMask {
@@ -137,20 +127,16 @@
NSString *path = [fm gtm_createDirectoryWithUniqueNameBasedOn:nil
inDirectory:NSCachesDirectory
domainMask:NSUserDomainMask];
- STAssertNil(path, nil);
+ XCTAssertNil(path);
path = [fm gtm_createDirectoryWithUniqueNameBasedOn:@"HappyXXX.txt"
inDirectory:NSCachesDirectory
domainMask:NSUserDomainMask];
- STAssertNotNil(path, nil);
+ XCTAssertNotNil(path);
BOOL isDirectory = NO;
- STAssertTrue([fm fileExistsAtPath:path isDirectory:&isDirectory]
- && isDirectory, nil);
-#if GTM_MACOS_SDK && (MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5)
- [fm removeFileAtPath:path handler:nil];
-#else // MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5
- [fm removeItemAtPath:path error:nil];
-#endif
+ XCTAssertTrue([fm fileExistsAtPath:path isDirectory:&isDirectory] && isDirectory);
+ NSError *error;
+ XCTAssertTrue([fm removeItemAtPath:path error:&error], "%@", error);
}
@end
diff --git a/Foundation/GTMNSFileManager+CarbonTest.m b/Foundation/GTMNSFileManager+CarbonTest.m
index 95f8814..f42ece4 100644
--- a/Foundation/GTMNSFileManager+CarbonTest.m
+++ b/Foundation/GTMNSFileManager+CarbonTest.m
@@ -6,9 +6,9 @@
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy
// of the License at
-//
+//
// http://www.apache.org/licenses/LICENSE-2.0
-//
+//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
@@ -18,62 +18,56 @@
#import "GTMSenTestCase.h"
#import "GTMNSFileManager+Carbon.h"
-#import "GTMUnitTestDevLog.h"
#import <CoreServices/CoreServices.h>
@interface GTMNSFileManager_CarbonTest : GTMTestCase
@end
-
+
@implementation GTMNSFileManager_CarbonTest
- (void)testAliasPathFSRefConversion {
NSString *path = NSHomeDirectory();
- STAssertNotNil(path, nil);
+ XCTAssertNotNil(path);
NSFileManager *fileManager = [NSFileManager defaultManager];
FSRef *fsRef = [fileManager gtm_FSRefForPath:path];
- STAssertNotNULL(fsRef, nil);
+ XCTAssertNotNULL(fsRef);
AliasHandle alias;
- STAssertNoErr(FSNewAlias(nil, fsRef, &alias), nil);
- STAssertNotNULL(alias, nil);
- NSData *aliasData = [NSData dataWithBytes:*alias
+ XCTAssertNoErr(FSNewAlias(nil, fsRef, &alias));
+ XCTAssertNotNULL(alias);
+ NSData *aliasData = [NSData dataWithBytes:*alias
length:GetAliasSize(alias)];
- STAssertNotNil(aliasData, nil);
+ XCTAssertNotNil(aliasData);
NSString *path2 = [fileManager gtm_pathFromAliasData:aliasData];
- STAssertEqualObjects(path, path2, nil);
+ XCTAssertEqualObjects(path, path2);
path2 = [fileManager gtm_pathFromAliasData:aliasData
resolve:YES
withUI:NO];
- STAssertEqualObjects(path, path2, nil);
-
+ XCTAssertEqualObjects(path, path2);
+
path2 = [fileManager gtm_pathFromAliasData:aliasData
resolve:NO
withUI:NO];
- STAssertEqualObjects(path, path2, nil);
+ XCTAssertEqualObjects(path, path2);
NSData *aliasData2 = [fileManager gtm_aliasDataForPath:path2];
- STAssertNotNil(aliasData2, nil);
+ XCTAssertNotNil(aliasData2);
NSString *path3 = [fileManager gtm_pathFromAliasData:aliasData2];
- STAssertEqualObjects(path2, path3, nil);
+ XCTAssertEqualObjects(path2, path3);
NSString *path4 = [fileManager gtm_pathFromFSRef:fsRef];
- STAssertEqualObjects(path, path4, nil);
-
+ XCTAssertEqualObjects(path, path4);
+
// Failure cases
- [GTMUnitTestDevLogDebug expectPattern:@"DebugAssert: "
- @"GoogleToolboxForMac: FSPathMakeRef.*"];
- STAssertNULL([fileManager gtm_FSRefForPath:@"/ptah/taht/dosent/esixt/"],
- nil);
+ XCTAssertNULL([fileManager gtm_FSRefForPath:@"/ptah/taht/dosent/esixt/"]);
+
+ XCTAssertNULL([fileManager gtm_FSRefForPath:@""]);
+ XCTAssertNULL([fileManager gtm_FSRefForPath:nil]);
+ XCTAssertNil([fileManager gtm_pathFromFSRef:nil]);
+ XCTAssertNil([fileManager gtm_pathFromAliasData:nil]);
+ XCTAssertNil([fileManager gtm_pathFromAliasData:[NSData data]]);
- STAssertNULL([fileManager gtm_FSRefForPath:@""], nil);
- STAssertNULL([fileManager gtm_FSRefForPath:nil], nil);
- STAssertNil([fileManager gtm_pathFromFSRef:nil], nil);
- STAssertNil([fileManager gtm_pathFromAliasData:nil], nil);
- STAssertNil([fileManager gtm_pathFromAliasData:[NSData data]], nil);
-
- [GTMUnitTestDevLogDebug expectPattern:@"DebugAssert: "
- @"GoogleToolboxForMac: FSPathMakeRef.*"];
- STAssertNil([fileManager gtm_aliasDataForPath:@"/ptah/taht/dosent/esixt/"], nil);
- STAssertNil([fileManager gtm_aliasDataForPath:@""], nil);
- STAssertNil([fileManager gtm_aliasDataForPath:nil], nil);
+ XCTAssertNil([fileManager gtm_aliasDataForPath:@"/ptah/taht/dosent/esixt/"]);
+ XCTAssertNil([fileManager gtm_aliasDataForPath:@""]);
+ XCTAssertNil([fileManager gtm_aliasDataForPath:nil]);
}
@end
diff --git a/Foundation/GTMNSFileManager+Path.h b/Foundation/GTMNSFileManager+Path.h
index 80977b3..eea55df 100644
--- a/Foundation/GTMNSFileManager+Path.h
+++ b/Foundation/GTMNSFileManager+Path.h
@@ -22,33 +22,6 @@
/// A few useful methods for dealing with paths.
@interface NSFileManager (GMFileManagerPathAdditions)
-#if GTM_MACOS_SDK && (MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5)
-
-/// For the Unix-y at heart, this is "mkdir -p". It tries to create
-/// the directory specified by |path|, and any intervening directories that
-/// are needed. Each directory that is created is created with |attributes|
-/// (see other NSFileManager doco for the details on |attributes|).
-///
-/// If you are building for 10.5 or later, you should just use the new api:
-/// createDirectoryAtPath:withIntermediateDirectories:attributes:error:
-///
-/// Also if you need more control over the creation of paths and their
-/// attributes, look into using GTMPath.
-///
-/// Args:
-/// path - the path of the directory to create.
-/// attributes - these are defined in the "Constants" section of Apple's
-/// NSFileManager doco
-///
-/// Returns:
-/// YES if |path| exists or was able to be created successfully
-/// NO otherwise
-///
-- (BOOL)gtm_createFullPathToDirectory:(NSString *)path
- attributes:(NSDictionary *)attributes;
-
-#endif // GTM_MACOS_SDK && (MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5)
-
/// Return an the paths for all resources in |directoryPath| that have the
/// |extension| file extension.
///
diff --git a/Foundation/GTMNSFileManager+Path.m b/Foundation/GTMNSFileManager+Path.m
index c29697b..165cee1 100644
--- a/Foundation/GTMNSFileManager+Path.m
+++ b/Foundation/GTMNSFileManager+Path.m
@@ -21,39 +21,6 @@
@implementation NSFileManager (GMFileManagerPathAdditions)
-#if GTM_MACOS_SDK && (MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5)
-
-- (BOOL)gtm_createFullPathToDirectory:(NSString *)path
- attributes:(NSDictionary *)attributes {
- if (!path) return NO;
-
- BOOL isDir;
- BOOL exists = [self fileExistsAtPath:path isDirectory:&isDir];
-
- // Quick check for the case where we have nothing to do.
- if (exists && isDir)
- return YES;
-
- NSString *actualPath = @"/";
- NSString *directory;
-
- GTM_FOREACH_OBJECT(directory, [path pathComponents]) {
- actualPath = [actualPath stringByAppendingPathComponent:directory];
-
- if ([self fileExistsAtPath:actualPath isDirectory:&isDir] && isDir) {
- continue;
- } else if ([self createDirectoryAtPath:actualPath attributes:attributes]) {
- continue;
- } else {
- return NO;
- }
- }
-
- return YES;
-}
-
-#endif // GTM_MACOS_SDK && (MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5)
-
- (NSArray *)gtm_filePathsWithExtension:(NSString *)extension
inDirectory:(NSString *)directoryPath {
NSArray *extensions = nil;
@@ -73,12 +40,9 @@
}
// |basenames| will contain only the matching file names, not their full paths.
-#if GTM_IPHONE_SDK || (MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5)
NSArray *basenames = [self contentsOfDirectoryAtPath:directoryPath
error:nil];
-#else
- NSArray *basenames = [self directoryContentsAtPath:directoryPath];
-#endif // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
+
// Check if dir doesn't exist or couldn't be opened.
if (!basenames) {
@@ -94,7 +58,7 @@
NSString *basename;
// Convert all the |basenames| to full paths.
- GTM_FOREACH_OBJECT(basename, basenames) {
+ for (basename in basenames) {
NSString *fullPath = [directoryPath stringByAppendingPathComponent:basename];
[paths addObject:fullPath];
}
diff --git a/Foundation/GTMNSFileManager+PathTest.m b/Foundation/GTMNSFileManager+PathTest.m
index 749c151..a0f61fb 100644
--- a/Foundation/GTMNSFileManager+PathTest.m
+++ b/Foundation/GTMNSFileManager+PathTest.m
@@ -39,53 +39,17 @@
if (baseDir_) {
// clean up our directory
NSFileManager *fm = [NSFileManager defaultManager];
-#if GTM_IPHONE_SDK || (MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5)
NSError *error = nil;
[fm removeItemAtPath:baseDir_ error:&error];
- STAssertNil(error,
- @"Unable to delete %@: %@", baseDir_, error);
-#else
- [fm removeFileAtPath:baseDir_ handler:nil];
-#endif
+ XCTAssertNil(error, @"Unable to delete %@: %@", baseDir_, error);
[baseDir_ release];
baseDir_ = nil;
}
}
-#if GTM_MACOS_SDK && (MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5)
-
-- (void)testCreateFullPathToDirectoryAttributes {
- STAssertNotNil(baseDir_, @"setUp failed");
-
- NSString *testPath =
- [baseDir_ stringByAppendingPathComponent:@"/foo/bar/baz"];
- STAssertNotNil(testPath, nil);
- NSFileManager *fm = [NSFileManager defaultManager];
-
- STAssertFalse([fm fileExistsAtPath:testPath],
- @"You must delete '%@' before running this test", testPath);
-
- STAssertFalse([fm gtm_createFullPathToDirectory:nil attributes:nil],
- @"didn't fail on nil input");
-
- STAssertTrue([fm gtm_createFullPathToDirectory:testPath attributes:nil],
- @"Failed to create nested testPath");
- STAssertTrue([fm gtm_createFullPathToDirectory:testPath attributes:nil],
- @"Failed to succeed on second create of testPath");
-
- NSString *pathToFail = [@"/etc" stringByAppendingPathComponent:testPath];
- STAssertFalse([fm gtm_createFullPathToDirectory:pathToFail attributes:nil],
- @"We were allowed to create a dir in '/etc'?!");
-
- STAssertFalse([fm gtm_createFullPathToDirectory:nil attributes:nil],
- @"Should have failed when passed (nil)");
-}
-
-#endif // GTM_MACOS_SDK && (MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5)
-
- (void)testfilePathsWithExtensionsInDirectory {
- STAssertNotNil(baseDir_, @"setUp failed");
+ XCTAssertNotNil(baseDir_, @"setUp failed");
NSFileManager *fm = [NSFileManager defaultManager];
NSString *bogusPath = @"/some/place/that/does/not/exist";
@@ -94,23 +58,23 @@
// test fail cases first
// single
- STAssertNil([fm gtm_filePathsWithExtension:nil inDirectory:nil],
- @"shouldn't have gotten anything for nil dir");
- STAssertNil([fm gtm_filePathsWithExtension:@"txt" inDirectory:nil],
- @"shouldn't have gotten anything for nil dir");
- STAssertNil([fm gtm_filePathsWithExtension:@"txt" inDirectory:bogusPath],
- @"shouldn't have gotten anything for a bogus dir");
+ XCTAssertNil([fm gtm_filePathsWithExtension:nil inDirectory:nil],
+ @"shouldn't have gotten anything for nil dir");
+ XCTAssertNil([fm gtm_filePathsWithExtension:@"txt" inDirectory:nil],
+ @"shouldn't have gotten anything for nil dir");
+ XCTAssertNil([fm gtm_filePathsWithExtension:@"txt" inDirectory:bogusPath],
+ @"shouldn't have gotten anything for a bogus dir");
// array
- STAssertNil([fm gtm_filePathsWithExtensions:nil inDirectory:nil],
- @"shouldn't have gotten anything for nil dir");
- STAssertNil([fm gtm_filePathsWithExtensions:[NSArray array] inDirectory:nil],
- @"shouldn't have gotten anything for nil dir");
- STAssertNil([fm gtm_filePathsWithExtensions:[NSArray arrayWithObject:@"txt"]
- inDirectory:nil],
- @"shouldn't have gotten anything for nil dir");
- STAssertNil([fm gtm_filePathsWithExtensions:[NSArray arrayWithObject:@"txt"]
- inDirectory:bogusPath],
- @"shouldn't have gotten anything for a bogus dir");
+ XCTAssertNil([fm gtm_filePathsWithExtensions:nil inDirectory:nil],
+ @"shouldn't have gotten anything for nil dir");
+ XCTAssertNil([fm gtm_filePathsWithExtensions:[NSArray array] inDirectory:nil],
+ @"shouldn't have gotten anything for nil dir");
+ XCTAssertNil([fm gtm_filePathsWithExtensions:[NSArray arrayWithObject:@"txt"]
+ inDirectory:nil],
+ @"shouldn't have gotten anything for nil dir");
+ XCTAssertNil([fm gtm_filePathsWithExtensions:[NSArray arrayWithObject:@"txt"]
+ inDirectory:bogusPath],
+ @"shouldn't have gotten anything for a bogus dir");
// --------------------------------------------------------------------------
// create some test data
@@ -126,26 +90,22 @@
NSString *testDir = nil;
if ([testDirs[i] length]) {
testDir = [baseDir_ stringByAppendingPathComponent:testDirs[i]];
-#if GTM_IPHONE_SDK || (MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5)
NSError *error = nil;
- STAssertTrue([fm createDirectoryAtPath:testDir
- withIntermediateDirectories:YES
- attributes:nil
- error:&error],
- @"Can't create %@ (%@)", testDir, error);
-#else
- STAssertTrue([fm createDirectoryAtPath:testDir attributes:nil], nil);
-#endif // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
+ XCTAssertTrue([fm createDirectoryAtPath:testDir
+ withIntermediateDirectories:YES
+ attributes:nil
+ error:&error],
+ @"Can't create %@ (%@)", testDir, error);
} else {
testDir = baseDir_;
}
for (size_t j = 0; j < sizeof(testFiles) / sizeof(NSString*); j++) {
NSString *testFile = [testDir stringByAppendingPathComponent:testFiles[j]];
NSError *err = nil;
- STAssertTrue([@"test" writeToFile:testFile
- atomically:YES
- encoding:NSUTF8StringEncoding
- error:&err], @"Error: %@", err);
+ XCTAssertTrue([@"test" writeToFile:testFile
+ atomically:YES
+ encoding:NSUTF8StringEncoding
+ error:&err], @"Error: %@", err);
}
}
@@ -173,23 +133,23 @@
// single
matches = [fm gtm_filePathsWithExtension:nil inDirectory:baseDir_];
- STAssertEqualObjects([NSSet setWithArray:matches],
- [NSSet setWithArray:allFiles],
- @"didn't get all files for nil extension");
+ XCTAssertEqualObjects([NSSet setWithArray:matches],
+ [NSSet setWithArray:allFiles],
+ @"didn't get all files for nil extension");
matches = [fm gtm_filePathsWithExtension:@"" inDirectory:baseDir_];
- STAssertEqualObjects([NSSet setWithArray:matches],
- [NSSet setWithArray:allFiles],
- @"didn't get all files for nil extension");
+ XCTAssertEqualObjects([NSSet setWithArray:matches],
+ [NSSet setWithArray:allFiles],
+ @"didn't get all files for nil extension");
// array
matches = [fm gtm_filePathsWithExtensions:nil inDirectory:baseDir_];
- STAssertEqualObjects([NSSet setWithArray:matches],
- [NSSet setWithArray:allFiles],
- @"didn't get all files for nil extension");
+ XCTAssertEqualObjects([NSSet setWithArray:matches],
+ [NSSet setWithArray:allFiles],
+ @"didn't get all files for nil extension");
matches = [fm gtm_filePathsWithExtensions:[NSArray array]
inDirectory:baseDir_];
- STAssertEqualObjects([NSSet setWithArray:matches],
- [NSSet setWithArray:allFiles],
- @"didn't get all files for nil extension");
+ XCTAssertEqualObjects([NSSet setWithArray:matches],
+ [NSSet setWithArray:allFiles],
+ @"didn't get all files for nil extension");
// --------------------------------------------------------------------------
// test match something
@@ -198,21 +158,21 @@
extensions = [NSArray arrayWithObject:@"txt"];
matches = [fm gtm_filePathsWithExtension:@"txt" inDirectory:baseDir_];
expectedMatches = [allFiles pathsMatchingExtensions:extensions];
- STAssertEqualObjects([NSSet setWithArray:matches],
- [NSSet setWithArray:expectedMatches],
- @"didn't get expected files");
+ XCTAssertEqualObjects([NSSet setWithArray:matches],
+ [NSSet setWithArray:expectedMatches],
+ @"didn't get expected files");
// array
matches = [fm gtm_filePathsWithExtensions:extensions inDirectory:baseDir_];
expectedMatches = [allFiles pathsMatchingExtensions:extensions];
- STAssertEqualObjects([NSSet setWithArray:matches],
- [NSSet setWithArray:expectedMatches],
- @"didn't get expected files");
+ XCTAssertEqualObjects([NSSet setWithArray:matches],
+ [NSSet setWithArray:expectedMatches],
+ @"didn't get expected files");
extensions = [NSArray arrayWithObjects:@"txt", @"rtf", @"xyz", nil];
matches = [fm gtm_filePathsWithExtensions:extensions inDirectory:baseDir_];
expectedMatches = [allFiles pathsMatchingExtensions:extensions];
- STAssertEqualObjects([NSSet setWithArray:matches],
- [NSSet setWithArray:expectedMatches],
- @"didn't get expected files");
+ XCTAssertEqualObjects([NSSet setWithArray:matches],
+ [NSSet setWithArray:expectedMatches],
+ @"didn't get expected files");
// --------------------------------------------------------------------------
// test match nothing
@@ -221,43 +181,37 @@
extensions = [NSArray arrayWithObject:@"xyz"];
matches = [fm gtm_filePathsWithExtension:@"xyz" inDirectory:baseDir_];
expectedMatches = [allFiles pathsMatchingExtensions:extensions];
- STAssertEqualObjects([NSSet setWithArray:matches],
- [NSSet setWithArray:expectedMatches],
- @"didn't get expected files");
+ XCTAssertEqualObjects([NSSet setWithArray:matches],
+ [NSSet setWithArray:expectedMatches],
+ @"didn't get expected files");
// array
matches = [fm gtm_filePathsWithExtensions:extensions inDirectory:baseDir_];
expectedMatches = [allFiles pathsMatchingExtensions:extensions];
- STAssertEqualObjects([NSSet setWithArray:matches],
- [NSSet setWithArray:expectedMatches],
- @"didn't get expected files");
+ XCTAssertEqualObjects([NSSet setWithArray:matches],
+ [NSSet setWithArray:expectedMatches],
+ @"didn't get expected files");
// --------------------------------------------------------------------------
// test match an empty dir
// create the empty dir
NSString *emptyDir = [baseDir_ stringByAppendingPathComponent:@"emptyDir"];
-#if GTM_IPHONE_SDK || (MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5)
NSError *error = nil;
- STAssertTrue([fm createDirectoryAtPath:emptyDir
- withIntermediateDirectories:YES
- attributes:nil
- error:&error],
- @"Can't create %@ (%@)", emptyDir, error);
-#else
- STAssertTrue([fm createDirectoryAtPath:emptyDir attributes:nil], nil);
-#endif // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
-
+ XCTAssertTrue([fm createDirectoryAtPath:emptyDir
+ withIntermediateDirectories:YES
+ attributes:nil
+ error:&error],
+ @"Can't create %@ (%@)", emptyDir, error);
// single
matches = [fm gtm_filePathsWithExtension:@"txt" inDirectory:emptyDir];
- STAssertEqualObjects([NSSet setWithArray:matches], [NSSet set],
- @"expected empty dir");
+ XCTAssertEqualObjects([NSSet setWithArray:matches], [NSSet set],
+ @"expected empty dir");
// array
matches = [fm gtm_filePathsWithExtensions:[NSArray arrayWithObject:@"txt"]
inDirectory:emptyDir];
- STAssertEqualObjects([NSSet setWithArray:matches], [NSSet set],
- @"expected empty dir");
-
+ XCTAssertEqualObjects([NSSet setWithArray:matches], [NSSet set],
+ @"expected empty dir");
}
@end
diff --git a/Foundation/GTMNSObject+KeyValueObserving.m b/Foundation/GTMNSObject+KeyValueObserving.m
index c4a589d..45eb6fe 100644
--- a/Foundation/GTMNSObject+KeyValueObserving.m
+++ b/Foundation/GTMNSObject+KeyValueObserving.m
@@ -25,11 +25,13 @@
// This code is based on code by Michael Ash.
// See comment in header.
-#import "GTMDefines.h"
#import "GTMNSObject+KeyValueObserving.h"
+
+#import <libkern/OSAtomic.h>
+#include <objc/runtime.h>
+
#import "GTMDefines.h"
#import "GTMDebugSelectorValidation.h"
-#import "GTMObjC2Runtime.h"
#import "GTMMethodCheck.h"
// A singleton that works as a dispatch center for KVO
@@ -172,9 +174,9 @@ static char* GTMKeyValueObservingHelperContext
// and the other will set things up so that the failing thread
// gets the shared center
GTMKeyValueObservingCenter *newCenter = [[self alloc] init];
- if(!objc_atomicCompareAndSwapGlobalBarrier(nil,
- newCenter,
- (void *)&center)) {
+ if(!OSAtomicCompareAndSwapPtrBarrier(NULL,
+ newCenter,
+ (void *)&center)) {
[newCenter release]; // COV_NF_LINE no guarantee we'll hit this line
}
}
@@ -252,7 +254,7 @@ static char* GTMKeyValueObservingHelperContext
@synchronized(self) {
NSString *helperKey;
- GTM_FOREACH_OBJECT(helperKey, [observerHelpers_ allKeys]) {
+ for (helperKey in [observerHelpers_ allKeys]) {
if ([helperKey hasPrefix:key]) {
[allValidHelperKeys addObject:helperKey];
}
diff --git a/Foundation/GTMNSObject+KeyValueObservingTest.m b/Foundation/GTMNSObject+KeyValueObservingTest.m
index 43a1bba..66ae799 100644
--- a/Foundation/GTMNSObject+KeyValueObservingTest.m
+++ b/Foundation/GTMNSObject+KeyValueObservingTest.m
@@ -29,7 +29,6 @@
#import "GTMSenTestCase.h"
#import "GTMNSObject+KeyValueObserving.h"
#import "GTMDefines.h"
-#import "GTMUnitTestDevLog.h"
@interface GTMNSObject_KeyValueObservingTest : GTMTestCase {
int32_t count_;
@@ -61,12 +60,12 @@
options:NSKeyValueObservingOptionNew];
expectedValue_ = @"bar";
[dict_ setObject:expectedValue_ forKey:@"key"];
- STAssertEquals(count_, (int32_t)1, nil);
+ XCTAssertEqual(count_, (int32_t)1);
[dict_ gtm_removeObserver:self
forKeyPath:@"key"
selector:@selector(observeValueChange:)];
[dict_ setObject:@"foo" forKey:@"key"];
- STAssertEquals(count_, (int32_t)1, nil);
+ XCTAssertEqual(count_, (int32_t)1);
}
- (void)testStopObservingAllKeyPaths {
@@ -78,17 +77,14 @@
options:NSKeyValueObservingOptionNew];
expectedValue_ = @"bar";
[dict_ setObject:expectedValue_ forKey:@"key"];
- STAssertEquals(count_, (int32_t)1, nil);
+ XCTAssertEqual(count_, (int32_t)1);
[self gtm_stopObservingAllKeyPaths];
[dict_ setObject:@"foo" forKey:@"key"];
- STAssertEquals(count_, (int32_t)1, nil);
+ XCTAssertEqual(count_, (int32_t)1);
}
- (void)testRemoving {
- [GTMUnitTestDevLogDebug expectPattern:@"-\\[GTMNSObject_KeyValueObservingTest"
- @" testRemoving\\] was not observing.*"];
-
[dict_ gtm_removeObserver:self
forKeyPath:@"key"
selector:@selector(observeValueChange:)];
@@ -100,8 +96,6 @@
selector:@selector(observeValueChange:)
userInfo:@"userInfo"
options:NSKeyValueObservingOptionNew];
- [GTMUnitTestDevLog expectPattern:@"-\\[GTMNSObject_KeyValueObservingTest"
- @" testAdding\\] already observing.*"];
[dict_ gtm_addObserver:self
forKeyPath:@"key"
selector:@selector(observeValueChange:)
@@ -113,17 +107,17 @@
}
- (void)observeValueChange:(GTMKeyValueChangeNotification *)notification {
- STAssertEqualObjects([notification userInfo], @"userInfo", nil);
- STAssertEqualObjects([notification keyPath], @"key", nil);
- STAssertEqualObjects([notification object], dict_, nil);
+ XCTAssertEqualObjects([notification userInfo], @"userInfo");
+ XCTAssertEqualObjects([notification keyPath], @"key");
+ XCTAssertEqualObjects([notification object], dict_);
NSDictionary *change = [notification change];
NSString *value = [change objectForKey:NSKeyValueChangeNewKey];
- STAssertEqualObjects(value, expectedValue_, nil);
+ XCTAssertEqualObjects(value, expectedValue_);
++count_;
GTMKeyValueChangeNotification *copy = [[notification copy] autorelease];
- STAssertEqualObjects(notification, copy, nil);
- STAssertEquals([notification hash], [copy hash], nil);
+ XCTAssertEqualObjects(notification, copy);
+ XCTAssertEqual([notification hash], [copy hash]);
}
@end
diff --git a/Foundation/GTMNSScanner+JSON.m b/Foundation/GTMNSScanner+JSON.m
index 1216698..308eae2 100644
--- a/Foundation/GTMNSScanner+JSON.m
+++ b/Foundation/GTMNSScanner+JSON.m
@@ -6,9 +6,9 @@
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy
// of the License at
-//
+//
// http://www.apache.org/licenses/LICENSE-2.0
-//
+//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
@@ -19,10 +19,15 @@
#import "GTMDefines.h"
#import "GTMNSScanner+JSON.h"
+// Export a nonsense symbol to suppress a libtool warning when this is linked
+// alone in a static lib.
+__attribute__((visibility("default")))
+ char NSScanner_GTMNSScannerJSONAdditionsExportToSuppressLibToolWarning = 0;
+
@implementation NSScanner (GTMNSScannerJSONAdditions)
-- (BOOL)gtm_scanJSONString:(NSString **)jsonString
- startChar:(unichar)startChar
+- (BOOL)gtm_scanJSONString:(NSString **)jsonString
+ startChar:(unichar)startChar
endChar:(unichar)endChar {
BOOL isGood = NO;
NSRange jsonRange = { NSNotFound, 0 };
@@ -73,11 +78,11 @@
}
- (BOOL)gtm_scanJSONObjectString:(NSString **)jsonString {
- return [self gtm_scanJSONString:jsonString startChar:'{' endChar:'}'];
+ return [self gtm_scanJSONString:jsonString startChar:'{' endChar:'}'];
}
- (BOOL)gtm_scanJSONArrayString:(NSString**)jsonString {
- return [self gtm_scanJSONString:jsonString startChar:'[' endChar:']'];
+ return [self gtm_scanJSONString:jsonString startChar:'[' endChar:']'];
}
@end
diff --git a/Foundation/GTMNSScanner+JSONTest.m b/Foundation/GTMNSScanner+JSONTest.m
index 8085148..d78f41d 100644
--- a/Foundation/GTMNSScanner+JSONTest.m
+++ b/Foundation/GTMNSScanner+JSONTest.m
@@ -86,27 +86,27 @@ struct {
BOOL goodObject = [scanner gtm_scanJSONObjectString:&object];
if (testStrings[i].resultString_) {
if (testStrings[i].isObject_) {
- STAssertEqualStrings(testStrings[i].resultString_,
- object, @"Test String: %@",
- testStrings[i].testString_);
- STAssertNil(array, @"Test String: %@", testStrings[i].testString_);
- STAssertTrue(goodObject, @"Test String: %@",
- testStrings[i].testString_);
- STAssertFalse(goodArray, @"Test String: %@",
+ XCTAssertEqualStrings(testStrings[i].resultString_,
+ object, @"Test String: %@",
+ testStrings[i].testString_);
+ XCTAssertNil(array, @"Test String: %@", testStrings[i].testString_);
+ XCTAssertTrue(goodObject, @"Test String: %@",
testStrings[i].testString_);
+ XCTAssertFalse(goodArray, @"Test String: %@",
+ testStrings[i].testString_);
} else {
- STAssertEqualStrings(testStrings[i].resultString_, array,
- @"Test String: %@", testStrings[i].testString_);
- STAssertNil(object, @"Test String: %@", testStrings[i].testString_);
- STAssertTrue(goodArray, @"Test String: %@", testStrings[i].testString_);
- STAssertFalse(goodObject, @"Test String: %@",
- testStrings[i].testString_);
+ XCTAssertEqualStrings(testStrings[i].resultString_, array,
+ @"Test String: %@", testStrings[i].testString_);
+ XCTAssertNil(object, @"Test String: %@", testStrings[i].testString_);
+ XCTAssertTrue(goodArray, @"Test String: %@", testStrings[i].testString_);
+ XCTAssertFalse(goodObject, @"Test String: %@",
+ testStrings[i].testString_);
}
} else {
- STAssertNil(object, @"Test String: %@", testStrings[i].testString_);
- STAssertNil(array, @"Test String: %@", testStrings[i].testString_);
- STAssertFalse(goodArray, @"Test String: %@", testStrings[i].testString_);
- STAssertFalse(goodObject, @"Test String: %@", testStrings[i].testString_);
+ XCTAssertNil(object, @"Test String: %@", testStrings[i].testString_);
+ XCTAssertNil(array, @"Test String: %@", testStrings[i].testString_);
+ XCTAssertFalse(goodArray, @"Test String: %@", testStrings[i].testString_);
+ XCTAssertFalse(goodObject, @"Test String: %@", testStrings[i].testString_);
}
}
}
@@ -117,13 +117,13 @@ struct {
NSScanner *scanner = [NSScanner scannerWithString:testString];
[scanner setCharactersToBeSkipped:alphaSet];
NSString *array = nil;
- STAssertTrue([scanner gtm_scanJSONArrayString:&array], nil);
- STAssertEqualStrings(array, @"[]", nil);
+ XCTAssertTrue([scanner gtm_scanJSONArrayString:&array]);
+ XCTAssertEqualStrings(array, @"[]");
NSString *nextValue = nil;
- STAssertTrue([scanner scanString:@":," intoString:&nextValue], nil);
- STAssertEqualStrings(@":,", nextValue, nil);
+ XCTAssertTrue([scanner scanString:@":," intoString:&nextValue]);
+ XCTAssertEqualStrings(@":,", nextValue);
scanner = [NSScanner scannerWithString:testString];
- STAssertFalse([scanner gtm_scanJSONArrayString:&array], nil);
+ XCTAssertFalse([scanner gtm_scanJSONArrayString:&array]);
}
@end
diff --git a/Foundation/GTMNSScanner+Unsigned.h b/Foundation/GTMNSScanner+Unsigned.h
deleted file mode 100644
index 80fdcc4..0000000
--- a/Foundation/GTMNSScanner+Unsigned.h
+++ /dev/null
@@ -1,32 +0,0 @@
-//
-// GTMNSScanner+Unsigned.h
-//
-// Copyright 2010 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import <Foundation/Foundation.h>
-
-#import "GTMDefines.h"
-
-// Adds support for working with unsigned values. Unsigned values are digits
-// only [0-9]. There is no support for "+" or "-" signs. Overflow is handled
-// by returning "YES" and the maximum value allowed for the type.
-@interface NSScanner (GTMUnsignedAdditions)
-
-- (BOOL)gtm_scanUnsignedInt:(unsigned int *)value;
-- (BOOL)gtm_scanUInteger:(NSUInteger *)value;
-- (BOOL)gtm_scanUnsignedLongLong:(unsigned long long *)value;
-
-@end
diff --git a/Foundation/GTMNSScanner+Unsigned.m b/Foundation/GTMNSScanner+Unsigned.m
deleted file mode 100644
index 9228ba2..0000000
--- a/Foundation/GTMNSScanner+Unsigned.m
+++ /dev/null
@@ -1,60 +0,0 @@
-//
-// GTMNSScanner+Unsigned.m
-//
-// Copyright 2010 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMNSScanner+Unsigned.h"
-#include <stdlib.h>
-#include <limits.h>
-
-@implementation NSScanner (GTMUnsignedAdditions)
-
-- (BOOL)gtm_scanUnsignedInt:(unsigned int *)value {
- unsigned long long uLongLongValue = 0;
- BOOL wasGood = [self gtm_scanUnsignedLongLong:&uLongLongValue];
- if (wasGood && value) {
- if (uLongLongValue > UINT_MAX) {
- *value = UINT_MAX;
- } else {
- *value = (unsigned int)uLongLongValue;
- }
- }
- return wasGood;
-}
-
-- (BOOL)gtm_scanUInteger:(NSUInteger *)value {
-#if defined(__LP64__) && __LP64__
- return [self gtm_scanUnsignedLongLong:(unsigned long long*)value];
-#else
- return [self gtm_scanUnsignedInt:value];
-#endif // defined(__LP64__) && __LP64__
-}
-
-- (BOOL)gtm_scanUnsignedLongLong:(unsigned long long *)value {
- // Slow path
- NSCharacterSet *decimalSet = [NSCharacterSet decimalDigitCharacterSet];
- NSString *digitString = nil;
- BOOL wasGood = [self scanCharactersFromSet:decimalSet intoString:&digitString];
- if (wasGood) {
- const char *digitChars = [digitString UTF8String];
- if (value) {
- *value = strtoull(digitChars, NULL, 10);
- }
- }
- return wasGood;
-}
-
-@end
diff --git a/Foundation/GTMNSScanner+UnsignedTest.m b/Foundation/GTMNSScanner+UnsignedTest.m
deleted file mode 100644
index aab92f3..0000000
--- a/Foundation/GTMNSScanner+UnsignedTest.m
+++ /dev/null
@@ -1,116 +0,0 @@
-//
-// GTMNSScanner+UnsignedTest.m
-//
-// Copyright 2010 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMSenTestCase.h"
-#import "GTMNSScanner+Unsigned.h"
-
-@interface GTMNSScanner_UnsignedTest : GTMTestCase
-@end
-
-@implementation GTMNSScanner_UnsignedTest
-
-#define TEST_BLOCK(A_MAX_VALUE) \
- { @"-1", 0, NO, 0 }, \
- { @"- 1", 0, NO, 0 }, \
- { @" - 1", 0, NO, 0 }, \
- { @"+ 1", 1, NO, 0 }, \
- { @" + 1", 1, NO, 0 }, \
- { @"0", 0, YES, 1 }, \
- { @"a", 0, NO, 0 }, \
- { @" ", 0, NO, 0 }, \
- { @"-1a", 0, NO, 0 }, \
- { @"a1", 0, NO, 0 }, \
- { @"1 ", 1, YES, 1 }, \
- { @"2 1 ", 2, YES, 1 }, \
- { @" 2 1 ", 2, YES, 2 }, \
- { @"99999999999999999999999999999999999", A_MAX_VALUE, YES, 35 }
-
-- (void)testScanUnsignedInt {
- struct {
- NSString *string;
- unsigned int val;
- BOOL goodScan;
- NSUInteger location;
- } testStruct[] = {
- TEST_BLOCK(UINT_MAX),
- };
- for (size_t i = 0; i < sizeof(testStruct) / sizeof(testStruct[0]); ++i) {
- NSScanner *scanner = [NSScanner scannerWithString:testStruct[i].string];
- STAssertNotNil(scanner, nil);
- unsigned int value;
- BOOL isGood = [scanner gtm_scanUnsignedInt:&value];
- STAssertEquals((int)isGood, (int)testStruct[i].goodScan,
- @"%@", testStruct[i].string);
- if (isGood && testStruct[i].goodScan) {
- STAssertEquals(value, testStruct[i].val, @"%@", testStruct[i].string);
- }
- STAssertEquals(testStruct[i].location, [scanner scanLocation],
- @"%@", testStruct[i].string);
- }
-}
-
-- (void)testScanUInteger {
- struct {
- NSString *string;
- NSUInteger val;
- BOOL goodScan;
- NSUInteger location;
- } testStruct[] = {
- TEST_BLOCK(NSUIntegerMax),
- };
- for (size_t i = 0; i < sizeof(testStruct) / sizeof(testStruct[0]); ++i) {
- NSScanner *scanner = [NSScanner scannerWithString:testStruct[i].string];
- STAssertNotNil(scanner, nil);
- NSUInteger value;
- BOOL isGood = [scanner gtm_scanUInteger:&value];
- STAssertEquals((int)isGood, (int)testStruct[i].goodScan,
- @"%@", testStruct[i].string);
- if (isGood && testStruct[i].goodScan) {
- STAssertEquals(value, testStruct[i].val, @"%@", testStruct[i].string);
- }
- STAssertEquals(testStruct[i].location, [scanner scanLocation],
- @"%@", testStruct[i].string);
- }
-}
-
-- (void)testScanUnsignedLongLong {
- struct {
- NSString *string;
- unsigned long long val;
- BOOL goodScan;
- NSUInteger location;
- } testStruct[] = {
- TEST_BLOCK(ULLONG_MAX),
- { @"4294967296", ((unsigned long long)UINT_MAX) + 1, YES, 10 }
- };
- for (size_t i = 0; i < sizeof(testStruct) / sizeof(testStruct[0]); ++i) {
- NSScanner *scanner = [NSScanner scannerWithString:testStruct[i].string];
- STAssertNotNil(scanner, nil);
- unsigned long long value;
- BOOL isGood = [scanner gtm_scanUnsignedLongLong:&value];
- STAssertEquals((int)isGood, (int)testStruct[i].goodScan,
- @"%@", testStruct[i].string);
- if (isGood && testStruct[i].goodScan) {
- STAssertEquals(value, testStruct[i].val, @"%@", testStruct[i].string);
- }
- STAssertEquals(testStruct[i].location, [scanner scanLocation],
- @"%@", testStruct[i].string);
- }
-}
-
-@end
diff --git a/Foundation/GTMNSString+FindFolderTest.m b/Foundation/GTMNSString+FindFolderTest.m
index aae48cb..2f53d76 100644
--- a/Foundation/GTMNSString+FindFolderTest.m
+++ b/Foundation/GTMNSString+FindFolderTest.m
@@ -6,9 +6,9 @@
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy
// of the License at
-//
+//
// http://www.apache.org/licenses/LICENSE-2.0
-//
+//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
@@ -32,20 +32,20 @@
inDomain:kUserDomain
doCreate:NO];
NSString *realPrefsPath = [@"~/Library/Preferences" stringByExpandingTildeInPath];
- STAssertEqualObjects(realPrefsPath, prefsPath, @"Found incorrect prefs path");
+ XCTAssertEqualObjects(realPrefsPath, prefsPath, @"Found incorrect prefs path");
+
-
// test the subfolder method; it should return nil if we pass NO and the
// subfolder doesn't already exist
-
+
NSString *googCacheNoCreatePath = [NSString gtm_stringWithPathForFolder:kCachedDataFolderType
subfolderName:@"GTMUnitTestDuzntExist"
inDomain:kUserDomain
doCreate:NO];
- STAssertNil(googCacheNoCreatePath, @"Should not exist: %@", googCacheNoCreatePath);
+ XCTAssertNil(googCacheNoCreatePath, @"Should not exist: %@", googCacheNoCreatePath);
// test creating ~/Library/Cache/GTMUnitTestCreated
-
+
NSString *folderName = @"GTMUnitTestCreated";
NSString *gtmCachePath = [NSString gtm_stringWithPathForFolder:kCachedDataFolderType
subfolderName:folderName
@@ -55,28 +55,28 @@
inDomain:kUserDomain
doCreate:NO];
NSString *testPathAppended = [testPath stringByAppendingPathComponent:folderName];
- STAssertEqualObjects(gtmCachePath, testPathAppended, @"Unexpected path name");
-
+ XCTAssertEqualObjects(gtmCachePath, testPathAppended, @"Unexpected path name");
+
NSFileManager* fileMgr = [NSFileManager defaultManager];
BOOL isDir = NO;
BOOL pathExists = [fileMgr fileExistsAtPath:gtmCachePath isDirectory:&isDir] && isDir;
- STAssertTrue(pathExists, @"Path %@ is not existing like it should", gtmCachePath);
+ XCTAssertTrue(pathExists, @"Path %@ is not existing like it should", gtmCachePath);
// test finding it again w/o having to create it
NSString *gtmCachePath2 = [NSString gtm_stringWithPathForFolder:kCachedDataFolderType
subfolderName:folderName
inDomain:kUserDomain
doCreate:NO];
- STAssertEqualObjects(gtmCachePath2, gtmCachePath, nil);
-
+ XCTAssertEqualObjects(gtmCachePath2, gtmCachePath);
+
#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
NSError *error = nil;
BOOL didRemove = [fileMgr removeItemAtPath:gtmCachePath error:&error];
- STAssertTrue(didRemove, @"Error removing %@ (%@)", gtmCachePath, error);
+ XCTAssertTrue(didRemove, @"Error removing %@ (%@)", gtmCachePath, error);
#else
BOOL didRemove = [fileMgr removeFileAtPath:gtmCachePath
handler:nil];
- STAssertTrue(didRemove, @"Error removing %@", gtmCachePath);
+ XCTAssertTrue(didRemove, @"Error removing %@", gtmCachePath);
#endif // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
}
diff --git a/Foundation/GTMNSString+HTML.m b/Foundation/GTMNSString+HTML.m
index d580b9e..04ec23a 100644
--- a/Foundation/GTMNSString+HTML.m
+++ b/Foundation/GTMNSString+HTML.m
@@ -7,9 +7,9 @@
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy
// of the License at
-//
+//
// http://www.apache.org/licenses/LICENSE-2.0
-//
+//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
@@ -20,6 +20,11 @@
#import "GTMDefines.h"
#import "GTMNSString+HTML.h"
+// Export a nonsense symbol to suppress a libtool warning when this is linked
+// alone in a static lib.
+__attribute__((visibility("default")))
+ char GTMNSString_HTMLExportToSuppressLibToolWarning = 0;
+
typedef struct {
NSString *escapeSequence;
unichar uchar;
@@ -34,105 +39,105 @@ static HTMLEscapeMap gAsciiHTMLEscapeMap[] = {
{ @"&apos;", 39 },
{ @"&lt;", 60 },
{ @"&gt;", 62 },
-
+
// A.2.1. Latin-1 characters
- { @"&nbsp;", 160 },
- { @"&iexcl;", 161 },
- { @"&cent;", 162 },
- { @"&pound;", 163 },
- { @"&curren;", 164 },
- { @"&yen;", 165 },
- { @"&brvbar;", 166 },
- { @"&sect;", 167 },
- { @"&uml;", 168 },
- { @"&copy;", 169 },
- { @"&ordf;", 170 },
- { @"&laquo;", 171 },
- { @"&not;", 172 },
- { @"&shy;", 173 },
- { @"&reg;", 174 },
- { @"&macr;", 175 },
- { @"&deg;", 176 },
- { @"&plusmn;", 177 },
- { @"&sup2;", 178 },
- { @"&sup3;", 179 },
- { @"&acute;", 180 },
- { @"&micro;", 181 },
- { @"&para;", 182 },
- { @"&middot;", 183 },
- { @"&cedil;", 184 },
- { @"&sup1;", 185 },
- { @"&ordm;", 186 },
- { @"&raquo;", 187 },
- { @"&frac14;", 188 },
- { @"&frac12;", 189 },
- { @"&frac34;", 190 },
- { @"&iquest;", 191 },
- { @"&Agrave;", 192 },
- { @"&Aacute;", 193 },
- { @"&Acirc;", 194 },
- { @"&Atilde;", 195 },
- { @"&Auml;", 196 },
- { @"&Aring;", 197 },
- { @"&AElig;", 198 },
- { @"&Ccedil;", 199 },
- { @"&Egrave;", 200 },
- { @"&Eacute;", 201 },
- { @"&Ecirc;", 202 },
- { @"&Euml;", 203 },
- { @"&Igrave;", 204 },
- { @"&Iacute;", 205 },
- { @"&Icirc;", 206 },
- { @"&Iuml;", 207 },
- { @"&ETH;", 208 },
- { @"&Ntilde;", 209 },
- { @"&Ograve;", 210 },
- { @"&Oacute;", 211 },
- { @"&Ocirc;", 212 },
- { @"&Otilde;", 213 },
- { @"&Ouml;", 214 },
- { @"&times;", 215 },
- { @"&Oslash;", 216 },
- { @"&Ugrave;", 217 },
- { @"&Uacute;", 218 },
- { @"&Ucirc;", 219 },
- { @"&Uuml;", 220 },
- { @"&Yacute;", 221 },
- { @"&THORN;", 222 },
- { @"&szlig;", 223 },
- { @"&agrave;", 224 },
- { @"&aacute;", 225 },
- { @"&acirc;", 226 },
- { @"&atilde;", 227 },
- { @"&auml;", 228 },
- { @"&aring;", 229 },
- { @"&aelig;", 230 },
- { @"&ccedil;", 231 },
- { @"&egrave;", 232 },
- { @"&eacute;", 233 },
- { @"&ecirc;", 234 },
- { @"&euml;", 235 },
- { @"&igrave;", 236 },
- { @"&iacute;", 237 },
- { @"&icirc;", 238 },
- { @"&iuml;", 239 },
- { @"&eth;", 240 },
- { @"&ntilde;", 241 },
- { @"&ograve;", 242 },
- { @"&oacute;", 243 },
- { @"&ocirc;", 244 },
- { @"&otilde;", 245 },
- { @"&ouml;", 246 },
- { @"&divide;", 247 },
- { @"&oslash;", 248 },
- { @"&ugrave;", 249 },
- { @"&uacute;", 250 },
- { @"&ucirc;", 251 },
- { @"&uuml;", 252 },
- { @"&yacute;", 253 },
- { @"&thorn;", 254 },
+ { @"&nbsp;", 160 },
+ { @"&iexcl;", 161 },
+ { @"&cent;", 162 },
+ { @"&pound;", 163 },
+ { @"&curren;", 164 },
+ { @"&yen;", 165 },
+ { @"&brvbar;", 166 },
+ { @"&sect;", 167 },
+ { @"&uml;", 168 },
+ { @"&copy;", 169 },
+ { @"&ordf;", 170 },
+ { @"&laquo;", 171 },
+ { @"&not;", 172 },
+ { @"&shy;", 173 },
+ { @"&reg;", 174 },
+ { @"&macr;", 175 },
+ { @"&deg;", 176 },
+ { @"&plusmn;", 177 },
+ { @"&sup2;", 178 },
+ { @"&sup3;", 179 },
+ { @"&acute;", 180 },
+ { @"&micro;", 181 },
+ { @"&para;", 182 },
+ { @"&middot;", 183 },
+ { @"&cedil;", 184 },
+ { @"&sup1;", 185 },
+ { @"&ordm;", 186 },
+ { @"&raquo;", 187 },
+ { @"&frac14;", 188 },
+ { @"&frac12;", 189 },
+ { @"&frac34;", 190 },
+ { @"&iquest;", 191 },
+ { @"&Agrave;", 192 },
+ { @"&Aacute;", 193 },
+ { @"&Acirc;", 194 },
+ { @"&Atilde;", 195 },
+ { @"&Auml;", 196 },
+ { @"&Aring;", 197 },
+ { @"&AElig;", 198 },
+ { @"&Ccedil;", 199 },
+ { @"&Egrave;", 200 },
+ { @"&Eacute;", 201 },
+ { @"&Ecirc;", 202 },
+ { @"&Euml;", 203 },
+ { @"&Igrave;", 204 },
+ { @"&Iacute;", 205 },
+ { @"&Icirc;", 206 },
+ { @"&Iuml;", 207 },
+ { @"&ETH;", 208 },
+ { @"&Ntilde;", 209 },
+ { @"&Ograve;", 210 },
+ { @"&Oacute;", 211 },
+ { @"&Ocirc;", 212 },
+ { @"&Otilde;", 213 },
+ { @"&Ouml;", 214 },
+ { @"&times;", 215 },
+ { @"&Oslash;", 216 },
+ { @"&Ugrave;", 217 },
+ { @"&Uacute;", 218 },
+ { @"&Ucirc;", 219 },
+ { @"&Uuml;", 220 },
+ { @"&Yacute;", 221 },
+ { @"&THORN;", 222 },
+ { @"&szlig;", 223 },
+ { @"&agrave;", 224 },
+ { @"&aacute;", 225 },
+ { @"&acirc;", 226 },
+ { @"&atilde;", 227 },
+ { @"&auml;", 228 },
+ { @"&aring;", 229 },
+ { @"&aelig;", 230 },
+ { @"&ccedil;", 231 },
+ { @"&egrave;", 232 },
+ { @"&eacute;", 233 },
+ { @"&ecirc;", 234 },
+ { @"&euml;", 235 },
+ { @"&igrave;", 236 },
+ { @"&iacute;", 237 },
+ { @"&icirc;", 238 },
+ { @"&iuml;", 239 },
+ { @"&eth;", 240 },
+ { @"&ntilde;", 241 },
+ { @"&ograve;", 242 },
+ { @"&oacute;", 243 },
+ { @"&ocirc;", 244 },
+ { @"&otilde;", 245 },
+ { @"&ouml;", 246 },
+ { @"&divide;", 247 },
+ { @"&oslash;", 248 },
+ { @"&ugrave;", 249 },
+ { @"&uacute;", 250 },
+ { @"&ucirc;", 251 },
+ { @"&uuml;", 252 },
+ { @"&yacute;", 253 },
+ { @"&thorn;", 254 },
{ @"&yuml;", 255 },
-
+
// A.2.2. Special characters cont'd
{ @"&OElig;", 338 },
{ @"&oelig;", 339 },
@@ -141,66 +146,66 @@ static HTMLEscapeMap gAsciiHTMLEscapeMap[] = {
{ @"&Yuml;", 376 },
// A.2.3. Symbols
- { @"&fnof;", 402 },
+ { @"&fnof;", 402 },
// A.2.2. Special characters cont'd
{ @"&circ;", 710 },
{ @"&tilde;", 732 },
-
+
// A.2.3. Symbols cont'd
- { @"&Alpha;", 913 },
- { @"&Beta;", 914 },
- { @"&Gamma;", 915 },
- { @"&Delta;", 916 },
- { @"&Epsilon;", 917 },
- { @"&Zeta;", 918 },
- { @"&Eta;", 919 },
- { @"&Theta;", 920 },
- { @"&Iota;", 921 },
- { @"&Kappa;", 922 },
- { @"&Lambda;", 923 },
- { @"&Mu;", 924 },
- { @"&Nu;", 925 },
- { @"&Xi;", 926 },
- { @"&Omicron;", 927 },
- { @"&Pi;", 928 },
- { @"&Rho;", 929 },
- { @"&Sigma;", 931 },
- { @"&Tau;", 932 },
- { @"&Upsilon;", 933 },
- { @"&Phi;", 934 },
- { @"&Chi;", 935 },
- { @"&Psi;", 936 },
- { @"&Omega;", 937 },
- { @"&alpha;", 945 },
- { @"&beta;", 946 },
- { @"&gamma;", 947 },
- { @"&delta;", 948 },
- { @"&epsilon;", 949 },
- { @"&zeta;", 950 },
- { @"&eta;", 951 },
- { @"&theta;", 952 },
- { @"&iota;", 953 },
- { @"&kappa;", 954 },
- { @"&lambda;", 955 },
- { @"&mu;", 956 },
- { @"&nu;", 957 },
- { @"&xi;", 958 },
- { @"&omicron;", 959 },
- { @"&pi;", 960 },
- { @"&rho;", 961 },
- { @"&sigmaf;", 962 },
- { @"&sigma;", 963 },
- { @"&tau;", 964 },
- { @"&upsilon;", 965 },
- { @"&phi;", 966 },
- { @"&chi;", 967 },
- { @"&psi;", 968 },
- { @"&omega;", 969 },
- { @"&thetasym;", 977 },
- { @"&upsih;", 978 },
- { @"&piv;", 982 },
-
+ { @"&Alpha;", 913 },
+ { @"&Beta;", 914 },
+ { @"&Gamma;", 915 },
+ { @"&Delta;", 916 },
+ { @"&Epsilon;", 917 },
+ { @"&Zeta;", 918 },
+ { @"&Eta;", 919 },
+ { @"&Theta;", 920 },
+ { @"&Iota;", 921 },
+ { @"&Kappa;", 922 },
+ { @"&Lambda;", 923 },
+ { @"&Mu;", 924 },
+ { @"&Nu;", 925 },
+ { @"&Xi;", 926 },
+ { @"&Omicron;", 927 },
+ { @"&Pi;", 928 },
+ { @"&Rho;", 929 },
+ { @"&Sigma;", 931 },
+ { @"&Tau;", 932 },
+ { @"&Upsilon;", 933 },
+ { @"&Phi;", 934 },
+ { @"&Chi;", 935 },
+ { @"&Psi;", 936 },
+ { @"&Omega;", 937 },
+ { @"&alpha;", 945 },
+ { @"&beta;", 946 },
+ { @"&gamma;", 947 },
+ { @"&delta;", 948 },
+ { @"&epsilon;", 949 },
+ { @"&zeta;", 950 },
+ { @"&eta;", 951 },
+ { @"&theta;", 952 },
+ { @"&iota;", 953 },
+ { @"&kappa;", 954 },
+ { @"&lambda;", 955 },
+ { @"&mu;", 956 },
+ { @"&nu;", 957 },
+ { @"&xi;", 958 },
+ { @"&omicron;", 959 },
+ { @"&pi;", 960 },
+ { @"&rho;", 961 },
+ { @"&sigmaf;", 962 },
+ { @"&sigma;", 963 },
+ { @"&tau;", 964 },
+ { @"&upsilon;", 965 },
+ { @"&phi;", 966 },
+ { @"&chi;", 967 },
+ { @"&psi;", 968 },
+ { @"&omega;", 969 },
+ { @"&thetasym;", 977 },
+ { @"&upsih;", 978 },
+ { @"&piv;", 982 },
+
// A.2.2. Special characters cont'd
{ @"&ensp;", 8194 },
{ @"&emsp;", 8195 },
@@ -219,93 +224,93 @@ static HTMLEscapeMap gAsciiHTMLEscapeMap[] = {
{ @"&bdquo;", 8222 },
{ @"&dagger;", 8224 },
{ @"&Dagger;", 8225 },
- // A.2.3. Symbols cont'd
- { @"&bull;", 8226 },
- { @"&hellip;", 8230 },
-
+ // A.2.3. Symbols cont'd
+ { @"&bull;", 8226 },
+ { @"&hellip;", 8230 },
+
// A.2.2. Special characters cont'd
{ @"&permil;", 8240 },
-
- // A.2.3. Symbols cont'd
- { @"&prime;", 8242 },
- { @"&Prime;", 8243 },
+
+ // A.2.3. Symbols cont'd
+ { @"&prime;", 8242 },
+ { @"&Prime;", 8243 },
// A.2.2. Special characters cont'd
{ @"&lsaquo;", 8249 },
{ @"&rsaquo;", 8250 },
- // A.2.3. Symbols cont'd
- { @"&oline;", 8254 },
- { @"&frasl;", 8260 },
-
+ // A.2.3. Symbols cont'd
+ { @"&oline;", 8254 },
+ { @"&frasl;", 8260 },
+
// A.2.2. Special characters cont'd
{ @"&euro;", 8364 },
- // A.2.3. Symbols cont'd
+ // A.2.3. Symbols cont'd
{ @"&image;", 8465 },
- { @"&weierp;", 8472 },
- { @"&real;", 8476 },
- { @"&trade;", 8482 },
- { @"&alefsym;", 8501 },
- { @"&larr;", 8592 },
- { @"&uarr;", 8593 },
- { @"&rarr;", 8594 },
- { @"&darr;", 8595 },
- { @"&harr;", 8596 },
- { @"&crarr;", 8629 },
- { @"&lArr;", 8656 },
- { @"&uArr;", 8657 },
- { @"&rArr;", 8658 },
- { @"&dArr;", 8659 },
- { @"&hArr;", 8660 },
- { @"&forall;", 8704 },
- { @"&part;", 8706 },
- { @"&exist;", 8707 },
- { @"&empty;", 8709 },
- { @"&nabla;", 8711 },
- { @"&isin;", 8712 },
- { @"&notin;", 8713 },
- { @"&ni;", 8715 },
- { @"&prod;", 8719 },
- { @"&sum;", 8721 },
- { @"&minus;", 8722 },
- { @"&lowast;", 8727 },
- { @"&radic;", 8730 },
- { @"&prop;", 8733 },
- { @"&infin;", 8734 },
- { @"&ang;", 8736 },
- { @"&and;", 8743 },
- { @"&or;", 8744 },
- { @"&cap;", 8745 },
- { @"&cup;", 8746 },
- { @"&int;", 8747 },
- { @"&there4;", 8756 },
- { @"&sim;", 8764 },
- { @"&cong;", 8773 },
- { @"&asymp;", 8776 },
- { @"&ne;", 8800 },
- { @"&equiv;", 8801 },
- { @"&le;", 8804 },
- { @"&ge;", 8805 },
- { @"&sub;", 8834 },
- { @"&sup;", 8835 },
- { @"&nsub;", 8836 },
- { @"&sube;", 8838 },
- { @"&supe;", 8839 },
- { @"&oplus;", 8853 },
- { @"&otimes;", 8855 },
- { @"&perp;", 8869 },
- { @"&sdot;", 8901 },
- { @"&lceil;", 8968 },
- { @"&rceil;", 8969 },
- { @"&lfloor;", 8970 },
- { @"&rfloor;", 8971 },
- { @"&lang;", 9001 },
- { @"&rang;", 9002 },
- { @"&loz;", 9674 },
- { @"&spades;", 9824 },
- { @"&clubs;", 9827 },
- { @"&hearts;", 9829 },
+ { @"&weierp;", 8472 },
+ { @"&real;", 8476 },
+ { @"&trade;", 8482 },
+ { @"&alefsym;", 8501 },
+ { @"&larr;", 8592 },
+ { @"&uarr;", 8593 },
+ { @"&rarr;", 8594 },
+ { @"&darr;", 8595 },
+ { @"&harr;", 8596 },
+ { @"&crarr;", 8629 },
+ { @"&lArr;", 8656 },
+ { @"&uArr;", 8657 },
+ { @"&rArr;", 8658 },
+ { @"&dArr;", 8659 },
+ { @"&hArr;", 8660 },
+ { @"&forall;", 8704 },
+ { @"&part;", 8706 },
+ { @"&exist;", 8707 },
+ { @"&empty;", 8709 },
+ { @"&nabla;", 8711 },
+ { @"&isin;", 8712 },
+ { @"&notin;", 8713 },
+ { @"&ni;", 8715 },
+ { @"&prod;", 8719 },
+ { @"&sum;", 8721 },
+ { @"&minus;", 8722 },
+ { @"&lowast;", 8727 },
+ { @"&radic;", 8730 },
+ { @"&prop;", 8733 },
+ { @"&infin;", 8734 },
+ { @"&ang;", 8736 },
+ { @"&and;", 8743 },
+ { @"&or;", 8744 },
+ { @"&cap;", 8745 },
+ { @"&cup;", 8746 },
+ { @"&int;", 8747 },
+ { @"&there4;", 8756 },
+ { @"&sim;", 8764 },
+ { @"&cong;", 8773 },
+ { @"&asymp;", 8776 },
+ { @"&ne;", 8800 },
+ { @"&equiv;", 8801 },
+ { @"&le;", 8804 },
+ { @"&ge;", 8805 },
+ { @"&sub;", 8834 },
+ { @"&sup;", 8835 },
+ { @"&nsub;", 8836 },
+ { @"&sube;", 8838 },
+ { @"&supe;", 8839 },
+ { @"&oplus;", 8853 },
+ { @"&otimes;", 8855 },
+ { @"&perp;", 8869 },
+ { @"&sdot;", 8901 },
+ { @"&lceil;", 8968 },
+ { @"&rceil;", 8969 },
+ { @"&lfloor;", 8970 },
+ { @"&rfloor;", 8971 },
+ { @"&lang;", 9001 },
+ { @"&rang;", 9002 },
+ { @"&loz;", 9674 },
+ { @"&spades;", 9824 },
+ { @"&clubs;", 9827 },
+ { @"&hearts;", 9829 },
{ @"&diams;", 9830 }
};
@@ -325,11 +330,11 @@ static HTMLEscapeMap gUnicodeHTMLEscapeMap[] = {
{ @"&Scaron;", 352 },
{ @"&scaron;", 353 },
{ @"&Yuml;", 376 },
-
+
// Spacing Modifier Letters
{ @"&circ;", 710 },
{ @"&tilde;", 732 },
-
+
// General Punctuation
{ @"&ensp;", 8194 },
{ @"&emsp;", 8195 },
@@ -372,14 +377,14 @@ static int EscapeMapCompare(const void *ucharVoid, const void *mapVoid) {
@implementation NSString (GTMNSStringHTMLAdditions)
-- (NSString *)gtm_stringByEscapingHTMLUsingTable:(HTMLEscapeMap*)table
- ofSize:(NSUInteger)size
- escapingUnicode:(BOOL)escapeUnicode {
+- (NSString *)gtm_stringByEscapingHTMLUsingTable:(HTMLEscapeMap*)table
+ ofSize:(NSUInteger)size
+ escapingUnicode:(BOOL)escapeUnicode {
NSUInteger length = [self length];
if (!length) {
return self;
}
-
+
NSMutableString *finalString = [NSMutableString string];
NSMutableData *data2 = [NSMutableData dataWithCapacity:sizeof(unichar) * length];
@@ -405,19 +410,19 @@ static int EscapeMapCompare(const void *ucharVoid, const void *mapVoid) {
return nil;
// COV_NF_END
}
-
+
unichar *buffer2 = (unichar *)[data2 mutableBytes];
-
+
NSUInteger buffer2Length = 0;
-
+
for (NSUInteger i = 0; i < length; ++i) {
- HTMLEscapeMap *val = bsearch(&buffer[i], table,
- size / sizeof(HTMLEscapeMap),
+ HTMLEscapeMap *val = bsearch(&buffer[i], table,
+ size / sizeof(HTMLEscapeMap),
sizeof(HTMLEscapeMap), EscapeMapCompare);
if (val || (escapeUnicode && buffer[i] > 127)) {
if (buffer2Length) {
- CFStringAppendCharacters((CFMutableStringRef)finalString,
- buffer2,
+ CFStringAppendCharacters((CFMutableStringRef)finalString,
+ buffer2,
buffer2Length);
buffer2Length = 0;
}
@@ -434,29 +439,29 @@ static int EscapeMapCompare(const void *ucharVoid, const void *mapVoid) {
}
}
if (buffer2Length) {
- CFStringAppendCharacters((CFMutableStringRef)finalString,
- buffer2,
+ CFStringAppendCharacters((CFMutableStringRef)finalString,
+ buffer2,
buffer2Length);
}
return finalString;
}
- (NSString *)gtm_stringByEscapingForHTML {
- return [self gtm_stringByEscapingHTMLUsingTable:gUnicodeHTMLEscapeMap
- ofSize:sizeof(gUnicodeHTMLEscapeMap)
+ return [self gtm_stringByEscapingHTMLUsingTable:gUnicodeHTMLEscapeMap
+ ofSize:sizeof(gUnicodeHTMLEscapeMap)
escapingUnicode:NO];
} // gtm_stringByEscapingHTML
- (NSString *)gtm_stringByEscapingForAsciiHTML {
- return [self gtm_stringByEscapingHTMLUsingTable:gAsciiHTMLEscapeMap
- ofSize:sizeof(gAsciiHTMLEscapeMap)
+ return [self gtm_stringByEscapingHTMLUsingTable:gAsciiHTMLEscapeMap
+ ofSize:sizeof(gAsciiHTMLEscapeMap)
escapingUnicode:YES];
} // gtm_stringByEscapingAsciiHTML
- (NSString *)gtm_stringByUnescapingFromHTML {
NSRange range = NSMakeRange(0, [self length]);
NSRange subrange = [self rangeOfString:@"&" options:NSBackwardsSearch range:range];
-
+
// if no ampersands, we've got a quick way out
if (subrange.length == 0) return self;
NSMutableString *finalString = [NSMutableString stringWithString:self];
@@ -480,9 +485,9 @@ static int EscapeMapCompare(const void *ucharVoid, const void *mapVoid) {
NSString *hexSequence = [escapeString substringWithRange:NSMakeRange(3, length - 4)];
NSScanner *scanner = [NSScanner scannerWithString:hexSequence];
unsigned value;
- if ([scanner scanHexInt:&value] &&
+ if ([scanner scanHexInt:&value] &&
value < USHRT_MAX &&
- value > 0
+ value > 0
&& [scanner scanLocation] == length - 4) {
unichar uchar = (unichar)value;
NSString *charString = [NSString stringWithCharacters:&uchar length:1];
@@ -494,9 +499,9 @@ static int EscapeMapCompare(const void *ucharVoid, const void *mapVoid) {
NSString *numberSequence = [escapeString substringWithRange:NSMakeRange(2, length - 3)];
NSScanner *scanner = [NSScanner scannerWithString:numberSequence];
int value;
- if ([scanner scanInt:&value] &&
+ if ([scanner scanInt:&value] &&
value < USHRT_MAX &&
- value > 0
+ value > 0
&& [scanner scanLocation] == length - 3) {
unichar uchar = (unichar)value;
NSString *charString = [NSString stringWithCharacters:&uchar length:1];
diff --git a/Foundation/GTMNSString+HTMLTest.m b/Foundation/GTMNSString+HTMLTest.m
index 1c7baf0..52c7b6a 100644
--- a/Foundation/GTMNSString+HTMLTest.m
+++ b/Foundation/GTMNSString+HTMLTest.m
@@ -6,9 +6,9 @@
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy
// of the License at
-//
+//
// http://www.apache.org/licenses/LICENSE-2.0
-//
+//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
@@ -25,65 +25,65 @@
@implementation GTMNSString_HTMLTest
- (void)testStringByEscapingHTML {
- unichar chars[] =
+ unichar chars[] =
{ 34, 38, 39, 60, 62, 338, 339, 352, 353, 376, 710, 732,
- 8194, 8195, 8201, 8204, 8205, 8206, 8207, 8211, 8212, 8216, 8217, 8218,
+ 8194, 8195, 8201, 8204, 8205, 8206, 8207, 8211, 8212, 8216, 8217, 8218,
8220, 8221, 8222, 8224, 8225, 8240, 8249, 8250, 8364, };
-
+
NSString *string1 = [NSString stringWithCharacters:chars
length:sizeof(chars) / sizeof(unichar)];
- NSString *string2 =
+ NSString *string2 =
@"&quot;&amp;&apos;&lt;&gt;&OElig;&oelig;&Scaron;&scaron;&Yuml;"
"&circ;&tilde;&ensp;&emsp;&thinsp;&zwnj;&zwj;&lrm;&rlm;&ndash;"
"&mdash;&lsquo;&rsquo;&sbquo;&ldquo;&rdquo;&bdquo;&dagger;&Dagger;"
"&permil;&lsaquo;&rsaquo;&euro;";
- STAssertEqualObjects([string1 gtm_stringByEscapingForHTML],
- string2,
- @"HTML escaping failed");
-
- STAssertEqualObjects([@"<this & that>" gtm_stringByEscapingForHTML],
- @"&lt;this &amp; that&gt;",
- @"HTML escaping failed");
+ XCTAssertEqualObjects([string1 gtm_stringByEscapingForHTML],
+ string2,
+ @"HTML escaping failed");
+
+ XCTAssertEqualObjects([@"<this & that>" gtm_stringByEscapingForHTML],
+ @"&lt;this &amp; that&gt;",
+ @"HTML escaping failed");
NSString *string = [NSString stringWithUTF8String:"パン・&ド・カンパーニュ"];
NSString *escapeStr = [NSString stringWithUTF8String:"パン・&amp;ド・カンパーニュ"];
- STAssertEqualObjects([string gtm_stringByEscapingForHTML],
- escapeStr,
- @"HTML escaping failed");
-
+ XCTAssertEqualObjects([string gtm_stringByEscapingForHTML],
+ escapeStr,
+ @"HTML escaping failed");
+
string = [NSString stringWithUTF8String:"abcا1ب<تdef&"];
- STAssertEqualObjects([string gtm_stringByEscapingForHTML],
- [NSString stringWithUTF8String:"abcا1ب&lt;تdef&amp;"],
- @"HTML escaping failed");
-
+ XCTAssertEqualObjects([string gtm_stringByEscapingForHTML],
+ [NSString stringWithUTF8String:"abcا1ب&lt;تdef&amp;"],
+ @"HTML escaping failed");
+
// test empty string
- STAssertEqualObjects([@"" gtm_stringByEscapingForHTML], @"", nil);
+ XCTAssertEqualObjects([@"" gtm_stringByEscapingForHTML], @"");
} // testStringByEscapingHTML
- (void)testStringByEscapingAsciiHTML {
- unichar chars[] =
+ unichar chars[] =
{ 34, 38, 39, 60, 62, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170,
- 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185,
- 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200,
- 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
- 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
- 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
- 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 338, 339, 352, 353, 376,
- 402, 710, 732, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924,
- 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 945, 946, 947,
- 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962,
- 963, 964, 965, 966, 967, 968, 969, 977, 978, 982, 8194, 8195, 8201, 8204,
- 8205, 8206, 8207, 8211, 8212, 8216, 8217, 8218, 8220, 8221, 8222, 8224, 8225,
- 8226, 8230, 8240, 8242, 8243, 8249, 8250, 8254, 8260, 8364, 8472, 8465, 8476,
- 8482, 8501, 8592, 8593, 8594, 8595, 8596, 8629, 8656, 8657, 8658, 8659, 8660,
- 8704, 8706, 8707, 8709, 8711, 8712, 8713, 8715, 8719, 8721, 8722, 8727, 8730,
- 8733, 8734, 8736, 8743, 8744, 8745, 8746, 8747, 8756, 8764, 8773, 8776, 8800,
- 8801, 8804, 8805, 8834, 8835, 8836, 8838, 8839, 8853, 8855, 8869, 8901, 8968,
+ 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185,
+ 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200,
+ 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
+ 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
+ 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 338, 339, 352, 353, 376,
+ 402, 710, 732, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924,
+ 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 945, 946, 947,
+ 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962,
+ 963, 964, 965, 966, 967, 968, 969, 977, 978, 982, 8194, 8195, 8201, 8204,
+ 8205, 8206, 8207, 8211, 8212, 8216, 8217, 8218, 8220, 8221, 8222, 8224, 8225,
+ 8226, 8230, 8240, 8242, 8243, 8249, 8250, 8254, 8260, 8364, 8472, 8465, 8476,
+ 8482, 8501, 8592, 8593, 8594, 8595, 8596, 8629, 8656, 8657, 8658, 8659, 8660,
+ 8704, 8706, 8707, 8709, 8711, 8712, 8713, 8715, 8719, 8721, 8722, 8727, 8730,
+ 8733, 8734, 8736, 8743, 8744, 8745, 8746, 8747, 8756, 8764, 8773, 8776, 8800,
+ 8801, 8804, 8805, 8834, 8835, 8836, 8838, 8839, 8853, 8855, 8869, 8901, 8968,
8969, 8970, 8971, 9001, 9002, 9674, 9824, 9827, 9829, 9830 };
-
+
NSString *string1 = [NSString stringWithCharacters:chars
length:sizeof(chars) / sizeof(unichar)];
- NSString *string2 =
+ NSString *string2 =
@"&quot;&amp;&apos;&lt;&gt;&nbsp;&iexcl;&cent;&pound;&curren;&yen;"
"&brvbar;&sect;&uml;&copy;&ordf;&laquo;&not;&shy;&reg;&macr;&deg;"
"&plusmn;&sup2;&sup3;&acute;&micro;&para;&middot;&cedil;&sup1;"
@@ -112,29 +112,29 @@
"&sub;&sup;&nsub;&sube;&supe;&oplus;&otimes;&perp;&sdot;&lceil;"
"&rceil;&lfloor;&rfloor;&lang;&rang;&loz;&spades;&clubs;&hearts;"
"&diams;";
-
- STAssertEqualObjects([string1 gtm_stringByEscapingForAsciiHTML],
- string2,
- @"HTML escaping failed");
-
- STAssertEqualObjects([@"<this & that>" gtm_stringByEscapingForAsciiHTML],
- @"&lt;this &amp; that&gt;",
- @"HTML escaping failed");
+
+ XCTAssertEqualObjects([string1 gtm_stringByEscapingForAsciiHTML],
+ string2,
+ @"HTML escaping failed");
+
+ XCTAssertEqualObjects([@"<this & that>" gtm_stringByEscapingForAsciiHTML],
+ @"&lt;this &amp; that&gt;",
+ @"HTML escaping failed");
NSString *string = [NSString stringWithUTF8String:"パン・ド・カンパーニュ"];
- STAssertEqualObjects([string gtm_stringByEscapingForAsciiHTML],
- @"&#12497;&#12531;&#12539;&#12489;&#12539;&#12459;"
- "&#12531;&#12497;&#12540;&#12491;&#12517;",
- @"HTML escaping failed");
-
+ XCTAssertEqualObjects([string gtm_stringByEscapingForAsciiHTML],
+ @"&#12497;&#12531;&#12539;&#12489;&#12539;&#12459;"
+ "&#12531;&#12497;&#12540;&#12491;&#12517;",
+ @"HTML escaping failed");
+
// Mix in some right - to left
string = [NSString stringWithUTF8String:"abcا1ب<تdef&"];
- STAssertEqualObjects([string gtm_stringByEscapingForAsciiHTML],
- @"abc&#1575;1&#1576;&lt;&#1578;def&amp;",
- @"HTML escaping failed");
+ XCTAssertEqualObjects([string gtm_stringByEscapingForAsciiHTML],
+ @"abc&#1575;1&#1576;&lt;&#1578;def&amp;",
+ @"HTML escaping failed");
} // stringByEscapingAsciiHTML
- (void)testStringByUnescapingHTML {
- NSString *string1 =
+ NSString *string1 =
@"&quot;&amp;&apos;&lt;&gt;&nbsp;&iexcl;&cent;&pound;&curren;&yen;"
"&brvbar;&sect;&uml;&copy;&ordf;&laquo;&not;&shy;&reg;&macr;&deg;"
"&plusmn;&sup2;&sup3;&acute;&micro;&para;&middot;&cedil;&sup1;"
@@ -163,80 +163,81 @@
"&sub;&sup;&nsub;&sube;&supe;&oplus;&otimes;&perp;&sdot;&lceil;"
"&rceil;&lfloor;&rfloor;&lang;&rang;&loz;&spades;&clubs;&hearts;"
"&diams;";
-
- unichar chars[] =
+
+ unichar chars[] =
{ 34, 38, 39, 60, 62, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170,
- 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185,
- 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200,
- 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
- 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
- 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
- 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 338, 339, 352, 353, 376,
- 402, 710, 732, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924,
- 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 945, 946, 947,
- 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962,
- 963, 964, 965, 966, 967, 968, 969, 977, 978, 982, 8194, 8195, 8201, 8204,
- 8205, 8206, 8207, 8211, 8212, 8216, 8217, 8218, 8220, 8221, 8222, 8224, 8225,
- 8226, 8230, 8240, 8242, 8243, 8249, 8250, 8254, 8260, 8364, 8472, 8465, 8476,
- 8482, 8501, 8592, 8593, 8594, 8595, 8596, 8629, 8656, 8657, 8658, 8659, 8660,
- 8704, 8706, 8707, 8709, 8711, 8712, 8713, 8715, 8719, 8721, 8722, 8727, 8730,
- 8733, 8734, 8736, 8743, 8744, 8745, 8746, 8747, 8756, 8764, 8773, 8776, 8800,
- 8801, 8804, 8805, 8834, 8835, 8836, 8838, 8839, 8853, 8855, 8869, 8901, 8968,
+ 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185,
+ 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200,
+ 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
+ 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
+ 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 338, 339, 352, 353, 376,
+ 402, 710, 732, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924,
+ 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 945, 946, 947,
+ 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962,
+ 963, 964, 965, 966, 967, 968, 969, 977, 978, 982, 8194, 8195, 8201, 8204,
+ 8205, 8206, 8207, 8211, 8212, 8216, 8217, 8218, 8220, 8221, 8222, 8224, 8225,
+ 8226, 8230, 8240, 8242, 8243, 8249, 8250, 8254, 8260, 8364, 8472, 8465, 8476,
+ 8482, 8501, 8592, 8593, 8594, 8595, 8596, 8629, 8656, 8657, 8658, 8659, 8660,
+ 8704, 8706, 8707, 8709, 8711, 8712, 8713, 8715, 8719, 8721, 8722, 8727, 8730,
+ 8733, 8734, 8736, 8743, 8744, 8745, 8746, 8747, 8756, 8764, 8773, 8776, 8800,
+ 8801, 8804, 8805, 8834, 8835, 8836, 8838, 8839, 8853, 8855, 8869, 8901, 8968,
8969, 8970, 8971, 9001, 9002, 9674, 9824, 9827, 9829, 9830 };
-
+
NSString *string2 = [NSString stringWithCharacters:chars
length:sizeof(chars) / sizeof(unichar)];
- STAssertEqualObjects([string1 gtm_stringByUnescapingFromHTML],
- string2,
- @"HTML unescaping failed");
-
- STAssertEqualObjects([@"&#65;&#x42;&#X43;" gtm_stringByUnescapingFromHTML],
- @"ABC", @"HTML unescaping failed");
-
- STAssertEqualObjects([@"" gtm_stringByUnescapingFromHTML],
- @"", @"HTML unescaping failed");
-
- STAssertEqualObjects([@"&#65;&Bang;&#X43;" gtm_stringByUnescapingFromHTML],
- @"A&Bang;C", @"HTML unescaping failed");
-
- STAssertEqualObjects([@"&#65&Bang;&#X43;" gtm_stringByUnescapingFromHTML],
- @"&#65&Bang;C", @"HTML unescaping failed");
-
- STAssertEqualObjects([@"&#65;&Bang;&#X43" gtm_stringByUnescapingFromHTML],
- @"A&Bang;&#X43", @"HTML unescaping failed");
-
- STAssertEqualObjects([@"&#65A;" gtm_stringByUnescapingFromHTML],
- @"&#65A;", @"HTML unescaping failed");
-
- STAssertEqualObjects([@"&" gtm_stringByUnescapingFromHTML],
- @"&", @"HTML unescaping failed");
-
- STAssertEqualObjects([@"&;" gtm_stringByUnescapingFromHTML],
- @"&;", @"HTML unescaping failed");
-
- STAssertEqualObjects([@"&x;" gtm_stringByUnescapingFromHTML],
- @"&x;", @"HTML unescaping failed");
-
- STAssertEqualObjects([@"&X;" gtm_stringByUnescapingFromHTML],
- @"&X;", @"HTML unescaping failed");
-
- STAssertEqualObjects([@";" gtm_stringByUnescapingFromHTML],
- @";", @"HTML unescaping failed");
-
- STAssertEqualObjects([@"&lt;this &amp; that&gt;" gtm_stringByUnescapingFromHTML],
- @"<this & that>", @"HTML unescaping failed");
-
-
+ XCTAssertEqualObjects([string1 gtm_stringByUnescapingFromHTML],
+ string2,
+ @"HTML unescaping failed");
+
+ XCTAssertEqualObjects([@"&#65;&#x42;&#X43;" gtm_stringByUnescapingFromHTML],
+ @"ABC", @"HTML unescaping failed");
+
+ XCTAssertEqualObjects([@"" gtm_stringByUnescapingFromHTML],
+ @"", @"HTML unescaping failed");
+
+ XCTAssertEqualObjects([@"&#65;&Bang;&#X43;" gtm_stringByUnescapingFromHTML],
+ @"A&Bang;C", @"HTML unescaping failed");
+
+ XCTAssertEqualObjects([@"&#65&Bang;&#X43;" gtm_stringByUnescapingFromHTML],
+ @"&#65&Bang;C", @"HTML unescaping failed");
+
+ XCTAssertEqualObjects([@"&#65;&Bang;&#X43" gtm_stringByUnescapingFromHTML],
+ @"A&Bang;&#X43", @"HTML unescaping failed");
+
+ XCTAssertEqualObjects([@"&#65A;" gtm_stringByUnescapingFromHTML],
+ @"&#65A;", @"HTML unescaping failed");
+
+ XCTAssertEqualObjects([@"&" gtm_stringByUnescapingFromHTML],
+ @"&", @"HTML unescaping failed");
+
+ XCTAssertEqualObjects([@"&;" gtm_stringByUnescapingFromHTML],
+ @"&;", @"HTML unescaping failed");
+
+ XCTAssertEqualObjects([@"&x;" gtm_stringByUnescapingFromHTML],
+ @"&x;", @"HTML unescaping failed");
+
+ XCTAssertEqualObjects([@"&X;" gtm_stringByUnescapingFromHTML],
+ @"&X;", @"HTML unescaping failed");
+
+ XCTAssertEqualObjects([@";" gtm_stringByUnescapingFromHTML],
+ @";", @"HTML unescaping failed");
+
+ XCTAssertEqualObjects([@"&lt;this &amp; that&gt;" gtm_stringByUnescapingFromHTML],
+ @"<this & that>", @"HTML unescaping failed");
+
+
} // testStringByUnescapingHTML
- (void)testStringRoundtrippingEscapedHTML {
NSString *string = [NSString stringWithUTF8String:"This test ©™®๒०᠐٧"];
- STAssertEqualObjects(string,
- [[string gtm_stringByEscapingForHTML] gtm_stringByUnescapingFromHTML],
- @"HTML Roundtripping failed");
+ XCTAssertEqualObjects(string,
+ [[string gtm_stringByEscapingForHTML] gtm_stringByUnescapingFromHTML],
+ @"HTML Roundtripping failed");
string = [NSString stringWithUTF8String:"This test ©™®๒०᠐٧"];
- STAssertEqualObjects(string,
- [[string gtm_stringByEscapingForAsciiHTML] gtm_stringByUnescapingFromHTML],
- @"HTML Roundtripping failed");
+ XCTAssertEqualObjects(string,
+ [[string gtm_stringByEscapingForAsciiHTML] gtm_stringByUnescapingFromHTML],
+ @"HTML Roundtripping failed");
}
+
@end
diff --git a/Foundation/GTMNSString+URLArgumentsTest.m b/Foundation/GTMNSString+URLArgumentsTest.m
index 5555acf..308b5d6 100644
--- a/Foundation/GTMNSString+URLArgumentsTest.m
+++ b/Foundation/GTMNSString+URLArgumentsTest.m
@@ -6,9 +6,9 @@
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy
// of the License at
-//
+//
// http://www.apache.org/licenses/LICENSE-2.0
-//
+//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
@@ -27,68 +27,68 @@
- (void)testEscaping {
// should be done already by the basic code
- STAssertEqualObjects([@"this that" gtm_stringByEscapingForURLArgument], @"this%20that", @"- space should be escaped");
- STAssertEqualObjects([@"this\"that" gtm_stringByEscapingForURLArgument], @"this%22that", @"- double quote should be escaped");
+ XCTAssertEqualObjects([@"this that" gtm_stringByEscapingForURLArgument], @"this%20that", @"- space should be escaped");
+ XCTAssertEqualObjects([@"this\"that" gtm_stringByEscapingForURLArgument], @"this%22that", @"- double quote should be escaped");
// make sure our additions are handled
- STAssertEqualObjects([@"this!that" gtm_stringByEscapingForURLArgument], @"this%21that", @"- exclamation mark should be escaped");
- STAssertEqualObjects([@"this*that" gtm_stringByEscapingForURLArgument], @"this%2Athat", @"- asterisk should be escaped");
- STAssertEqualObjects([@"this'that" gtm_stringByEscapingForURLArgument], @"this%27that", @"- single quote should be escaped");
- STAssertEqualObjects([@"this(that" gtm_stringByEscapingForURLArgument], @"this%28that", @"- left paren should be escaped");
- STAssertEqualObjects([@"this)that" gtm_stringByEscapingForURLArgument], @"this%29that", @"- right paren should be escaped");
- STAssertEqualObjects([@"this;that" gtm_stringByEscapingForURLArgument], @"this%3Bthat", @"- semi-colon should be escaped");
- STAssertEqualObjects([@"this:that" gtm_stringByEscapingForURLArgument], @"this%3Athat", @"- colon should be escaped");
- STAssertEqualObjects([@"this@that" gtm_stringByEscapingForURLArgument], @"this%40that", @"- at sign should be escaped");
- STAssertEqualObjects([@"this&that" gtm_stringByEscapingForURLArgument], @"this%26that", @"- ampersand should be escaped");
- STAssertEqualObjects([@"this=that" gtm_stringByEscapingForURLArgument], @"this%3Dthat", @"- equals should be escaped");
- STAssertEqualObjects([@"this+that" gtm_stringByEscapingForURLArgument], @"this%2Bthat", @"- plus should be escaped");
- STAssertEqualObjects([@"this$that" gtm_stringByEscapingForURLArgument], @"this%24that", @"- dollar-sign should be escaped");
- STAssertEqualObjects([@"this,that" gtm_stringByEscapingForURLArgument], @"this%2Cthat", @"- comma should be escaped");
- STAssertEqualObjects([@"this/that" gtm_stringByEscapingForURLArgument], @"this%2Fthat", @"- slash should be escaped");
- STAssertEqualObjects([@"this?that" gtm_stringByEscapingForURLArgument], @"this%3Fthat", @"- question mark should be escaped");
- STAssertEqualObjects([@"this%that" gtm_stringByEscapingForURLArgument], @"this%25that", @"- percent should be escaped");
- STAssertEqualObjects([@"this#that" gtm_stringByEscapingForURLArgument], @"this%23that", @"- pound should be escaped");
- STAssertEqualObjects([@"this[that" gtm_stringByEscapingForURLArgument], @"this%5Bthat", @"- left bracket should be escaped");
- STAssertEqualObjects([@"this]that" gtm_stringByEscapingForURLArgument], @"this%5Dthat", @"- right bracket should be escaped");
+ XCTAssertEqualObjects([@"this!that" gtm_stringByEscapingForURLArgument], @"this%21that", @"- exclamation mark should be escaped");
+ XCTAssertEqualObjects([@"this*that" gtm_stringByEscapingForURLArgument], @"this%2Athat", @"- asterisk should be escaped");
+ XCTAssertEqualObjects([@"this'that" gtm_stringByEscapingForURLArgument], @"this%27that", @"- single quote should be escaped");
+ XCTAssertEqualObjects([@"this(that" gtm_stringByEscapingForURLArgument], @"this%28that", @"- left paren should be escaped");
+ XCTAssertEqualObjects([@"this)that" gtm_stringByEscapingForURLArgument], @"this%29that", @"- right paren should be escaped");
+ XCTAssertEqualObjects([@"this;that" gtm_stringByEscapingForURLArgument], @"this%3Bthat", @"- semi-colon should be escaped");
+ XCTAssertEqualObjects([@"this:that" gtm_stringByEscapingForURLArgument], @"this%3Athat", @"- colon should be escaped");
+ XCTAssertEqualObjects([@"this@that" gtm_stringByEscapingForURLArgument], @"this%40that", @"- at sign should be escaped");
+ XCTAssertEqualObjects([@"this&that" gtm_stringByEscapingForURLArgument], @"this%26that", @"- ampersand should be escaped");
+ XCTAssertEqualObjects([@"this=that" gtm_stringByEscapingForURLArgument], @"this%3Dthat", @"- equals should be escaped");
+ XCTAssertEqualObjects([@"this+that" gtm_stringByEscapingForURLArgument], @"this%2Bthat", @"- plus should be escaped");
+ XCTAssertEqualObjects([@"this$that" gtm_stringByEscapingForURLArgument], @"this%24that", @"- dollar-sign should be escaped");
+ XCTAssertEqualObjects([@"this,that" gtm_stringByEscapingForURLArgument], @"this%2Cthat", @"- comma should be escaped");
+ XCTAssertEqualObjects([@"this/that" gtm_stringByEscapingForURLArgument], @"this%2Fthat", @"- slash should be escaped");
+ XCTAssertEqualObjects([@"this?that" gtm_stringByEscapingForURLArgument], @"this%3Fthat", @"- question mark should be escaped");
+ XCTAssertEqualObjects([@"this%that" gtm_stringByEscapingForURLArgument], @"this%25that", @"- percent should be escaped");
+ XCTAssertEqualObjects([@"this#that" gtm_stringByEscapingForURLArgument], @"this%23that", @"- pound should be escaped");
+ XCTAssertEqualObjects([@"this[that" gtm_stringByEscapingForURLArgument], @"this%5Bthat", @"- left bracket should be escaped");
+ XCTAssertEqualObjects([@"this]that" gtm_stringByEscapingForURLArgument], @"this%5Dthat", @"- right bracket should be escaped");
// make sure plus and space are handled in the right order
- STAssertEqualObjects([@"this that+the other" gtm_stringByEscapingForURLArgument], @"this%20that%2Bthe%20other", @"- pluses and spaces should be different");
+ XCTAssertEqualObjects([@"this that+the other" gtm_stringByEscapingForURLArgument], @"this%20that%2Bthe%20other", @"- pluses and spaces should be different");
// high char test
NSString *tester = [NSString stringWithUTF8String:"caf\xC3\xA9"];
- STAssertNotNil(tester, @"failed to create from utf8 run");
- STAssertEqualObjects([tester gtm_stringByEscapingForURLArgument], @"caf%C3%A9", @"- high chars should work");
+ XCTAssertNotNil(tester, @"failed to create from utf8 run");
+ XCTAssertEqualObjects([tester gtm_stringByEscapingForURLArgument], @"caf%C3%A9", @"- high chars should work");
}
- (void)testUnescaping {
// should be done already by the basic code
- STAssertEqualObjects([@"this%20that" gtm_stringByUnescapingFromURLArgument], @"this that", @"- space should be unescaped");
- STAssertEqualObjects([@"this%22that" gtm_stringByUnescapingFromURLArgument], @"this\"that", @"- double quote should be unescaped");
+ XCTAssertEqualObjects([@"this%20that" gtm_stringByUnescapingFromURLArgument], @"this that", @"- space should be unescaped");
+ XCTAssertEqualObjects([@"this%22that" gtm_stringByUnescapingFromURLArgument], @"this\"that", @"- double quote should be unescaped");
// make sure our additions are handled
- STAssertEqualObjects([@"this%21that" gtm_stringByUnescapingFromURLArgument], @"this!that", @"- exclamation mark should be unescaped");
- STAssertEqualObjects([@"this%2Athat" gtm_stringByUnescapingFromURLArgument], @"this*that", @"- asterisk should be unescaped");
- STAssertEqualObjects([@"this%27that" gtm_stringByUnescapingFromURLArgument], @"this'that", @"- single quote should be unescaped");
- STAssertEqualObjects([@"this%28that" gtm_stringByUnescapingFromURLArgument], @"this(that", @"- left paren should be unescaped");
- STAssertEqualObjects([@"this%29that" gtm_stringByUnescapingFromURLArgument], @"this)that", @"- right paren should be unescaped");
- STAssertEqualObjects([@"this%3Bthat" gtm_stringByUnescapingFromURLArgument], @"this;that", @"- semi-colon should be unescaped");
- STAssertEqualObjects([@"this%3Athat" gtm_stringByUnescapingFromURLArgument], @"this:that", @"- colon should be unescaped");
- STAssertEqualObjects([@"this%40that" gtm_stringByUnescapingFromURLArgument], @"this@that", @"- at sign should be unescaped");
- STAssertEqualObjects([@"this%26that" gtm_stringByUnescapingFromURLArgument], @"this&that", @"- ampersand should be unescaped");
- STAssertEqualObjects([@"this%3Dthat" gtm_stringByUnescapingFromURLArgument], @"this=that", @"- equals should be unescaped");
- STAssertEqualObjects([@"this%2Bthat" gtm_stringByUnescapingFromURLArgument], @"this+that", @"- plus should be unescaped");
- STAssertEqualObjects([@"this%24that" gtm_stringByUnescapingFromURLArgument], @"this$that", @"- dollar-sign should be unescaped");
- STAssertEqualObjects([@"this%2Cthat" gtm_stringByUnescapingFromURLArgument], @"this,that", @"- comma should be unescaped");
- STAssertEqualObjects([@"this%2Fthat" gtm_stringByUnescapingFromURLArgument], @"this/that", @"- slash should be unescaped");
- STAssertEqualObjects([@"this%3Fthat" gtm_stringByUnescapingFromURLArgument], @"this?that", @"- question mark should be unescaped");
- STAssertEqualObjects([@"this%25that" gtm_stringByUnescapingFromURLArgument], @"this%that", @"- percent should be unescaped");
- STAssertEqualObjects([@"this%23that" gtm_stringByUnescapingFromURLArgument], @"this#that", @"- pound should be unescaped");
- STAssertEqualObjects([@"this%5Bthat" gtm_stringByUnescapingFromURLArgument], @"this[that", @"- left bracket should be unescaped");
- STAssertEqualObjects([@"this%5Dthat" gtm_stringByUnescapingFromURLArgument], @"this]that", @"- right bracket should be unescaped");
+ XCTAssertEqualObjects([@"this%21that" gtm_stringByUnescapingFromURLArgument], @"this!that", @"- exclamation mark should be unescaped");
+ XCTAssertEqualObjects([@"this%2Athat" gtm_stringByUnescapingFromURLArgument], @"this*that", @"- asterisk should be unescaped");
+ XCTAssertEqualObjects([@"this%27that" gtm_stringByUnescapingFromURLArgument], @"this'that", @"- single quote should be unescaped");
+ XCTAssertEqualObjects([@"this%28that" gtm_stringByUnescapingFromURLArgument], @"this(that", @"- left paren should be unescaped");
+ XCTAssertEqualObjects([@"this%29that" gtm_stringByUnescapingFromURLArgument], @"this)that", @"- right paren should be unescaped");
+ XCTAssertEqualObjects([@"this%3Bthat" gtm_stringByUnescapingFromURLArgument], @"this;that", @"- semi-colon should be unescaped");
+ XCTAssertEqualObjects([@"this%3Athat" gtm_stringByUnescapingFromURLArgument], @"this:that", @"- colon should be unescaped");
+ XCTAssertEqualObjects([@"this%40that" gtm_stringByUnescapingFromURLArgument], @"this@that", @"- at sign should be unescaped");
+ XCTAssertEqualObjects([@"this%26that" gtm_stringByUnescapingFromURLArgument], @"this&that", @"- ampersand should be unescaped");
+ XCTAssertEqualObjects([@"this%3Dthat" gtm_stringByUnescapingFromURLArgument], @"this=that", @"- equals should be unescaped");
+ XCTAssertEqualObjects([@"this%2Bthat" gtm_stringByUnescapingFromURLArgument], @"this+that", @"- plus should be unescaped");
+ XCTAssertEqualObjects([@"this%24that" gtm_stringByUnescapingFromURLArgument], @"this$that", @"- dollar-sign should be unescaped");
+ XCTAssertEqualObjects([@"this%2Cthat" gtm_stringByUnescapingFromURLArgument], @"this,that", @"- comma should be unescaped");
+ XCTAssertEqualObjects([@"this%2Fthat" gtm_stringByUnescapingFromURLArgument], @"this/that", @"- slash should be unescaped");
+ XCTAssertEqualObjects([@"this%3Fthat" gtm_stringByUnescapingFromURLArgument], @"this?that", @"- question mark should be unescaped");
+ XCTAssertEqualObjects([@"this%25that" gtm_stringByUnescapingFromURLArgument], @"this%that", @"- percent should be unescaped");
+ XCTAssertEqualObjects([@"this%23that" gtm_stringByUnescapingFromURLArgument], @"this#that", @"- pound should be unescaped");
+ XCTAssertEqualObjects([@"this%5Bthat" gtm_stringByUnescapingFromURLArgument], @"this[that", @"- left bracket should be unescaped");
+ XCTAssertEqualObjects([@"this%5Dthat" gtm_stringByUnescapingFromURLArgument], @"this]that", @"- right bracket should be unescaped");
// make sure a plus come back out as a space
- STAssertEqualObjects([@"this+that" gtm_stringByUnescapingFromURLArgument], @"this that", @"- plus should be unescaped");
+ XCTAssertEqualObjects([@"this+that" gtm_stringByUnescapingFromURLArgument], @"this that", @"- plus should be unescaped");
// make sure plus and %2B are handled in the right order
- STAssertEqualObjects([@"this+that%2Bthe%20other" gtm_stringByUnescapingFromURLArgument], @"this that+the other", @"- pluses and spaces should be different");
+ XCTAssertEqualObjects([@"this+that%2Bthe%20other" gtm_stringByUnescapingFromURLArgument], @"this that+the other", @"- pluses and spaces should be different");
// high char test
NSString *tester = [NSString stringWithUTF8String:"caf\xC3\xA9"];
- STAssertNotNil(tester, @"failed to create from utf8 run");
- STAssertEqualObjects([@"caf%C3%A9" gtm_stringByUnescapingFromURLArgument], tester, @"- high chars should work");
+ XCTAssertNotNil(tester, @"failed to create from utf8 run");
+ XCTAssertEqualObjects([@"caf%C3%A9" gtm_stringByUnescapingFromURLArgument], tester, @"- high chars should work");
}
@end
diff --git a/Foundation/GTMNSString+XML.m b/Foundation/GTMNSString+XML.m
index 2e165e6..a9021ad 100644
--- a/Foundation/GTMNSString+XML.m
+++ b/Foundation/GTMNSString+XML.m
@@ -19,6 +19,10 @@
#import "GTMDefines.h"
#import "GTMNSString+XML.h"
+// Export a nonsense symbol to suppress a libtool warning when this is linked alone in a static lib.
+__attribute__((visibility("default")))
+ char NSString_GTMNSStringXMLAdditionsExportToSuppressLibToolWarning = 0;
+
enum {
kGTMXMLCharModeEncodeQUOT = 0,
kGTMXMLCharModeEncodeAMP = 1,
diff --git a/Foundation/GTMNSString+XMLTest.m b/Foundation/GTMNSString+XMLTest.m
index 7e37e31..1832d90 100644
--- a/Foundation/GTMNSString+XMLTest.m
+++ b/Foundation/GTMNSString+XMLTest.m
@@ -6,9 +6,9 @@
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy
// of the License at
-//
+//
// http://www.apache.org/licenses/LICENSE-2.0
-//
+//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
@@ -39,10 +39,10 @@
[NSString stringWithFormat:@"zzzzz&quot;z&amp;z&apos;z&lt;z&gt;z zzz%Czzz\nz\rz\tz",
(unsigned short)0xE000];
- STAssertEqualObjects([string1 gtm_stringBySanitizingAndEscapingForXML],
- string2,
- @"Sanitize and Escape for XML failed");
-
+ XCTAssertEqualObjects([string1 gtm_stringBySanitizingAndEscapingForXML],
+ string2,
+ @"Sanitize and Escape for XML failed");
+
// force the backing store of the NSString to test extraction paths
char ascBuffer[] = "a\01bcde\nf";
NSString *ascString =
@@ -50,12 +50,12 @@
length:sizeof(ascBuffer) / sizeof(char)
encoding:NSASCIIStringEncoding
freeWhenDone:NO] autorelease];
- STAssertEqualObjects([ascString gtm_stringBySanitizingAndEscapingForXML],
- @"abcde\nf",
- @"Sanitize and Escape for XML from asc buffer failed");
+ XCTAssertEqualObjects([ascString gtm_stringBySanitizingAndEscapingForXML],
+ @"abcde\nf",
+ @"Sanitize and Escape for XML from asc buffer failed");
// test empty string
- STAssertEqualObjects([@"" gtm_stringBySanitizingAndEscapingForXML], @"", nil);
+ XCTAssertEqualObjects([@"" gtm_stringBySanitizingAndEscapingForXML], @"");
}
- (void)testStringBySanitizingToXMLSpec {
@@ -64,16 +64,16 @@
'z', 0, 'z', 1, 'z', 4, 'z', 5, 'z', 34, 'z', 38, 'z', 39, 'z',
60, 'z', 62, 'z', ' ', 'z', 0xd800, 'z', 0xDFFF, 'z', 0xE000,
'z', 0xFFFE, 'z', 0xFFFF, 'z', '\n', 'z', '\r', 'z', '\t', 'z' };
-
+
NSString *string1 = [NSString stringWithCharacters:chars
length:sizeof(chars) / sizeof(UniChar)];
NSString *string2 =
[NSString stringWithFormat:@"zzzzz\"z&z'z<z>z zzz%Czzz\nz\rz\tz",
(unsigned short)0xE000];
-
- STAssertEqualObjects([string1 gtm_stringBySanitizingToXMLSpec],
- string2,
- @"Sanitize for XML failed");
+
+ XCTAssertEqualObjects([string1 gtm_stringBySanitizingToXMLSpec],
+ string2,
+ @"Sanitize for XML failed");
// force the backing store of the NSString to test extraction paths
char ascBuffer[] = "a\01bcde\nf";
@@ -82,12 +82,12 @@
length:sizeof(ascBuffer) / sizeof(char)
encoding:NSASCIIStringEncoding
freeWhenDone:NO] autorelease];
- STAssertEqualObjects([ascString gtm_stringBySanitizingToXMLSpec],
- @"abcde\nf",
- @"Sanitize and Escape for XML from asc buffer failed");
+ XCTAssertEqualObjects([ascString gtm_stringBySanitizingToXMLSpec],
+ @"abcde\nf",
+ @"Sanitize and Escape for XML from asc buffer failed");
// test empty string
- STAssertEqualObjects([@"" gtm_stringBySanitizingToXMLSpec], @"", nil);
+ XCTAssertEqualObjects([@"" gtm_stringBySanitizingToXMLSpec], @"");
}
@end
diff --git a/Foundation/GTMNSThread+Blocks.h b/Foundation/GTMNSThread+Blocks.h
index 23e4e60..e3700bb 100644
--- a/Foundation/GTMNSThread+Blocks.h
+++ b/Foundation/GTMNSThread+Blocks.h
@@ -38,10 +38,6 @@
#endif // NS_BLOCKS_AVAILABLE
-// [NSObject performSelector:onThread:...] 10.5 and later, so this makes no
-// sense on any earlier SDK.
-#if GTM_IPHONE_SDK || (MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5)
-
// A simple thread that does nothing but handle performBlock and
// performSelector calls.
@interface GTMSimpleWorkerThread : NSThread {
@@ -54,5 +50,3 @@
- (void)stop;
@end
-
-#endif // GTM_IPHONE_SDK || (MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5)
diff --git a/Foundation/GTMNSThread+Blocks.m b/Foundation/GTMNSThread+Blocks.m
index 2476ad5..4ab3ee5 100644
--- a/Foundation/GTMNSThread+Blocks.m
+++ b/Foundation/GTMNSThread+Blocks.m
@@ -53,17 +53,6 @@
#endif // NS_BLOCKS_AVAILABLE
-#if GTM_IPHONE_SDK || (MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5)
-
-// Only available 10.6 and later.
-typedef int (*PThreadSetNameNPPTr)(const char*);
-#if !GTM_IPHONE_SDK
-static PThreadSetNameNPPTr gPThreadSetNameNP = NULL;
-#else
-// Defined on iPhone since 3.2
-static PThreadSetNameNPPTr gPThreadSetNameNP = pthread_setname_np;
-#endif // !GTM_IPHONE_SDK
-
enum {
kGTMSimpleThreadInitialized = 0,
kGTMSimpleThreadStarting,
@@ -74,15 +63,6 @@ enum {
@implementation GTMSimpleWorkerThread
-#if !GTM_IPHONE_SDK
-+ (void)initialize {
- if (self == [GTMSimpleWorkerThread class]) {
- // Resolve pthread_setname_np() on 10.6 and later.
- gPThreadSetNameNP = dlsym(RTLD_DEFAULT, "pthread_setname_np");
- }
-}
-#endif // !GTM_IPHONE_SDK
-
- (id)init {
if ((self = [super init])) {
runLock_ =
@@ -100,12 +80,10 @@ enum {
}
- (void)setThreadDebuggerName:(NSString *)name {
- if (gPThreadSetNameNP) {
- if ([name length]) {
- gPThreadSetNameNP([name UTF8String]);
- } else {
- gPThreadSetNameNP("");
- }
+ if ([name length]) {
+ pthread_setname_np([name UTF8String]);
+ } else {
+ pthread_setname_np("");
}
}
@@ -292,5 +270,3 @@ enum {
}
@end
-
-#endif // GTM_IPHONE_SDK || (MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5)
diff --git a/Foundation/GTMNSThread+BlocksTest.m b/Foundation/GTMNSThread+BlocksTest.m
index 606de6d..4b685fd 100644
--- a/Foundation/GTMNSThread+BlocksTest.m
+++ b/Foundation/GTMNSThread+BlocksTest.m
@@ -20,8 +20,6 @@
#import "GTMSenTestCase.h"
#import "GTMNSThread+Blocks.h"
-#if GTM_IPHONE_SDK || (MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5)
-
#import "GTMFoundationUnitTestingUtilities.h"
@interface GTMNSThread_BlocksTest : GTMTestCase {
@@ -56,8 +54,8 @@
runThread = [NSThread currentThread];
[context setShouldStop:YES];
}];
- STAssertEqualObjects(runThread, currentThread, nil);
- STAssertTrue([context shouldStop], nil);
+ XCTAssertEqualObjects(runThread, currentThread);
+ XCTAssertTrue([context shouldStop]);
// Block with waiting runs immediately as well.
runThread = nil;
@@ -66,8 +64,8 @@
runThread = [NSThread currentThread];
[context setShouldStop:YES];
}];
- STAssertEqualObjects(runThread, currentThread, nil);
- STAssertTrue([context shouldStop], nil);
+ XCTAssertEqualObjects(runThread, currentThread);
+ XCTAssertTrue([context shouldStop]);
// Block without waiting requires a runloop spin.
runThread = nil;
@@ -76,10 +74,10 @@
runThread = [NSThread currentThread];
[context setShouldStop:YES];
}];
- STAssertTrue([[NSRunLoop currentRunLoop]
- gtm_runUpToSixtySecondsWithContext:context], nil);
- STAssertEqualObjects(runThread, currentThread, nil);
- STAssertTrue([context shouldStop], nil);
+ XCTAssertTrue([[NSRunLoop currentRunLoop]
+ gtm_runUpToSixtySecondsWithContext:context]);
+ XCTAssertEqualObjects(runThread, currentThread);
+ XCTAssertTrue([context shouldStop]);
}
- (void)testPerformBlockInBackground {
@@ -90,52 +88,52 @@
runThread = [NSThread currentThread];
[context setShouldStop:YES];
}];
- STAssertTrue([[NSRunLoop currentRunLoop]
- gtm_runUpToSixtySecondsWithContext:context], nil);
- STAssertNotNil(runThread, nil);
- STAssertNotEqualObjects(runThread, [NSThread currentThread], nil);
+ XCTAssertTrue([[NSRunLoop currentRunLoop]
+ gtm_runUpToSixtySecondsWithContext:context]);
+ XCTAssertNotNil(runThread);
+ XCTAssertNotEqualObjects(runThread, [NSThread currentThread]);
}
- (void)testWorkerThreadBasics {
// Unstarted worker isn't running.
GTMSimpleWorkerThread *worker = [[GTMSimpleWorkerThread alloc] init];
- STAssertFalse([worker isExecuting], nil);
- STAssertFalse([worker isFinished], nil);
+ XCTAssertFalse([worker isExecuting]);
+ XCTAssertFalse([worker isFinished]);
// Unstarted worker can be stopped without error.
[worker stop];
- STAssertFalse([worker isExecuting], nil);
- STAssertTrue([worker isFinished], nil);
+ XCTAssertFalse([worker isExecuting]);
+ XCTAssertTrue([worker isFinished]);
// And can be stopped again
[worker stop];
- STAssertFalse([worker isExecuting], nil);
- STAssertTrue([worker isFinished], nil);
+ XCTAssertFalse([worker isExecuting]);
+ XCTAssertTrue([worker isFinished]);
// A thread we start can be stopped with correct state.
worker = [[GTMSimpleWorkerThread alloc] init];
- STAssertFalse([worker isExecuting], nil);
- STAssertFalse([worker isFinished], nil);
+ XCTAssertFalse([worker isExecuting]);
+ XCTAssertFalse([worker isFinished]);
[worker start];
- STAssertTrue([worker isExecuting], nil);
- STAssertFalse([worker isFinished], nil);
+ XCTAssertTrue([worker isExecuting]);
+ XCTAssertFalse([worker isFinished]);
[worker stop];
- STAssertFalse([worker isExecuting], nil);
- STAssertTrue([worker isFinished], nil);
+ XCTAssertFalse([worker isExecuting]);
+ XCTAssertTrue([worker isFinished]);
// A cancel is also honored
worker = [[GTMSimpleWorkerThread alloc] init];
- STAssertFalse([worker isExecuting], nil);
- STAssertFalse([worker isFinished], nil);
+ XCTAssertFalse([worker isExecuting]);
+ XCTAssertFalse([worker isFinished]);
[worker start];
- STAssertTrue([worker isExecuting], nil);
- STAssertFalse([worker isFinished], nil);
+ XCTAssertTrue([worker isExecuting]);
+ XCTAssertFalse([worker isFinished]);
[worker cancel];
// And after some time we're done. We're generous here, this needs to
// exceed the worker thread's runloop timeout.
sleep(5);
- STAssertFalse([worker isExecuting], nil);
- STAssertTrue([worker isFinished], nil);
+ XCTAssertFalse([worker isExecuting]);
+ XCTAssertTrue([worker isFinished]);
}
- (void)testWorkerThreadStopTiming {
@@ -146,14 +144,14 @@
[workerThread_ gtm_performBlock:^{
[threadLock lock];
[threadLock unlockWithCondition:1];
- sleep(10);
+ [NSThread sleepForTimeInterval:.25];
}];
[threadLock lockWhenCondition:1];
[threadLock unlock];
[workerThread_ stop];
- STAssertFalse([workerThread_ isExecuting], nil);
- STAssertTrue([workerThread_ isFinished], nil);
- STAssertEqualsWithAccuracy(-[start timeIntervalSinceNow], 10.0, 2.0, nil);
+ XCTAssertFalse([workerThread_ isExecuting]);
+ XCTAssertTrue([workerThread_ isFinished]);
+ XCTAssertEqualWithAccuracy(-[start timeIntervalSinceNow], 0.25, 0.25);
}
- (void)testPerformBlockOnWorkerThread {
@@ -168,10 +166,10 @@
runThread = [NSThread currentThread];
[context setShouldStop:YES];
}];
- STAssertTrue([[NSRunLoop currentRunLoop]
- gtm_runUpToSixtySecondsWithContext:context], nil);
- STAssertNotNil(runThread, nil);
- STAssertEqualObjects(runThread, workerThread_, nil);
+ XCTAssertTrue([[NSRunLoop currentRunLoop]
+ gtm_runUpToSixtySecondsWithContext:context]);
+ XCTAssertNotNil(runThread);
+ XCTAssertEqualObjects(runThread, workerThread_);
// Other thread no wait.
runThread = nil;
@@ -180,10 +178,10 @@
runThread = [NSThread currentThread];
[context setShouldStop:YES];
}];
- STAssertTrue([[NSRunLoop currentRunLoop]
- gtm_runUpToSixtySecondsWithContext:context], nil);
- STAssertNotNil(runThread, nil);
- STAssertEqualObjects(runThread, workerThread_, nil);
+ XCTAssertTrue([[NSRunLoop currentRunLoop]
+ gtm_runUpToSixtySecondsWithContext:context]);
+ XCTAssertNotNil(runThread);
+ XCTAssertEqualObjects(runThread, workerThread_);
// Waiting requires no runloop spin
runThread = nil;
@@ -192,9 +190,9 @@
runThread = [NSThread currentThread];
[context setShouldStop:YES];
}];
- STAssertTrue([context shouldStop], nil);
- STAssertNotNil(runThread, nil);
- STAssertEqualObjects(runThread, workerThread_, nil);
+ XCTAssertTrue([context shouldStop]);
+ XCTAssertNotNil(runThread);
+ XCTAssertEqualObjects(runThread, workerThread_);
}
- (void)testExitingBlockIsExecuting {
@@ -208,10 +206,10 @@
[threadLock lockWhenCondition:1];
[threadLock unlock];
// Give the pthread_exit() a bit of time
- sleep(5);
+ [NSThread sleepForTimeInterval:.25];
// Did we notice the thread died? Does [... isExecuting] clean up?
- STAssertFalse([workerThread_ isExecuting], nil);
- STAssertTrue([workerThread_ isFinished], nil);
+ XCTAssertFalse([workerThread_ isExecuting]);
+ XCTAssertTrue([workerThread_ isFinished]);
}
- (void)testExitingBlockCancel {
@@ -225,12 +223,12 @@
[threadLock lockWhenCondition:1];
[threadLock unlock];
// Give the pthread_exit() a bit of time
- sleep(5);
+ [NSThread sleepForTimeInterval:.25];
// Cancel/stop the thread
[workerThread_ stop];
// Did we notice the thread died? Did we clean up?
- STAssertFalse([workerThread_ isExecuting], nil);
- STAssertTrue([workerThread_ isFinished], nil);
+ XCTAssertFalse([workerThread_ isExecuting]);
+ XCTAssertTrue([workerThread_ isFinished]);
}
- (void)testStopFromThread {
@@ -245,23 +243,20 @@
[threadLock lockWhenCondition:1];
[threadLock unlock];
// Still need to give the thread a moment to not be executing
- sleep(5);
- STAssertFalse([workerThread_ isExecuting], nil);
- STAssertTrue([workerThread_ isFinished], nil);
+ sleep(1);
+ XCTAssertFalse([workerThread_ isExecuting]);
+ XCTAssertTrue([workerThread_ isFinished]);
}
- (void)testPThreadName {
NSString *testName = @"InigoMontoya";
[workerThread_ setName:testName];
[workerThread_ gtm_performWaitingUntilDone:NO block:^{
- STAssertEqualObjects([workerThread_ name], testName, nil);
+ XCTAssertEqualObjects([workerThread_ name], testName);
char threadName[100];
pthread_getname_np(pthread_self(), threadName, 100);
- STAssertEqualObjects([NSString stringWithUTF8String:threadName],
- testName, nil);
+ XCTAssertEqualObjects([NSString stringWithUTF8String:threadName], testName);
}];
}
@end
-
-#endif // GTM_IPHONE_SDK || (MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5)
diff --git a/Foundation/GTMObjC2Runtime.h b/Foundation/GTMObjC2Runtime.h
index e4e2ac7..e14df70 100644
--- a/Foundation/GTMObjC2Runtime.h
+++ b/Foundation/GTMObjC2Runtime.h
@@ -16,98 +16,16 @@
// the License.
//
+// These headers only being pulled in to avoid breaking changes.
+
+#pragma GCC warning "GTMObjcRuntime.h is deprecated and should no longer be used."
+
#import <objc/objc-api.h>
#import <objc/objc-auto.h>
#import "GTMDefines.h"
-// These functions exist for code that we want to compile on both the < 10.5
-// sdks and on the >= 10.5 sdks without warnings. It basically reimplements
-// certain parts of the objc2 runtime in terms of the objc1 runtime. It is not
-// a complete implementation as I've only implemented the routines I know we
-// use. Feel free to add more as necessary.
-// These functions are not documented because they conform to the documentation
-// for the ObjC2 Runtime.
-
-#if OBJC_API_VERSION >= 2 // Only have optional and req'd keywords in ObjC2.
-#define AT_OPTIONAL @optional
-#define AT_REQUIRED @required
-#else
-#define AT_OPTIONAL
-#define AT_REQUIRED
-#endif
-
-// The file objc-runtime.h was moved to runtime.h and in Leopard, objc-runtime.h
-// was just a wrapper around runtime.h. For the iPhone SDK, this objc-runtime.h
-// is removed in the iPhoneOS2.0 SDK.
-//
-// The |Object| class was removed in the iPhone2.0 SDK too.
-#if GTM_IPHONE_SDK
#import <objc/message.h>
#import <objc/runtime.h>
-#else
-#import <objc/objc-runtime.h>
-#import <objc/Object.h>
-#endif
#import <libkern/OSAtomic.h>
-#if GTM_MACOS_SDK && (MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5)
-#import "objc/Protocol.h"
-
-OBJC_EXPORT Class object_getClass(id obj);
-OBJC_EXPORT const char *class_getName(Class cls);
-OBJC_EXPORT BOOL class_conformsToProtocol(Class cls, Protocol *protocol);
-OBJC_EXPORT BOOL class_respondsToSelector(Class cls, SEL sel);
-OBJC_EXPORT Class class_getSuperclass(Class cls);
-OBJC_EXPORT Method *class_copyMethodList(Class cls, unsigned int *outCount);
-OBJC_EXPORT SEL method_getName(Method m);
-OBJC_EXPORT void method_exchangeImplementations(Method m1, Method m2);
-OBJC_EXPORT IMP method_getImplementation(Method method);
-OBJC_EXPORT IMP method_setImplementation(Method method, IMP imp);
-OBJC_EXPORT struct objc_method_description protocol_getMethodDescription(Protocol *p,
- SEL aSel,
- BOOL isRequiredMethod,
- BOOL isInstanceMethod);
-OBJC_EXPORT BOOL sel_isEqual(SEL lhs, SEL rhs);
-
-// If building for 10.4 but using the 10.5 SDK, don't include these.
-#if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_5
-// atomics
-// On Leopard these are GC aware
-// Intentionally did not include the non-barrier versions, because I couldn't
-// come up with a case personally where you wouldn't want to use the
-// barrier versions.
-GTM_INLINE bool OSAtomicCompareAndSwapPtrBarrier(void *predicate,
- void *replacement,
- void * volatile *theValue) {
-#if defined(__LP64__) && __LP64__
- return OSAtomicCompareAndSwap64Barrier((int64_t)predicate,
- (int64_t)replacement,
- (int64_t *)theValue);
-#else // defined(__LP64__) && __LP64__
- return OSAtomicCompareAndSwap32Barrier((int32_t)predicate,
- (int32_t)replacement,
- (int32_t *)theValue);
-#endif // defined(__LP64__) && __LP64__
-}
-
-#endif // MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_5
-#endif // GTM_MACOS_SDK && (MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5)
-
-#if GTM_MACOS_SDK && (MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_5)
-
-GTM_INLINE BOOL objc_atomicCompareAndSwapGlobalBarrier(id predicate,
- id replacement,
- volatile id *objectLocation) {
- return OSAtomicCompareAndSwapPtrBarrier(predicate,
- replacement,
- (void * volatile *)objectLocation);
-}
-GTM_INLINE BOOL objc_atomicCompareAndSwapInstanceVariableBarrier(id predicate,
- id replacement,
- volatile id *objectLocation) {
- return OSAtomicCompareAndSwapPtrBarrier(predicate,
- replacement,
- (void * volatile *)objectLocation);
-}
-#endif // GTM_MACOS_SDK && (MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_5)
diff --git a/Foundation/GTMObjC2Runtime.m b/Foundation/GTMObjC2Runtime.m
index 1475103..9bd937c 100644
--- a/Foundation/GTMObjC2Runtime.m
+++ b/Foundation/GTMObjC2Runtime.m
@@ -16,158 +16,6 @@
// the License.
//
-#import "GTMObjC2Runtime.h"
+// This source file is no longer necessary.
-// Export a nonsense symbol to suppress a libtool warning when this is linked alone in a static lib.
-__attribute__((visibility("default"))) char GTMObjC2RuntimeExportToSuppressLibToolWarning = 0;
-
-
-#if GTM_MACOS_SDK && (MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5) && !__OBJC2__
-#import <objc/objc-runtime.h>
-#import <stdlib.h>
-#import <string.h>
-
-Class object_getClass(id obj) {
- if (!obj) return NULL;
- return obj->isa;
-}
-
-const char *class_getName(Class cls) {
- if (!cls) return "nil";
- return cls->name;
-}
-
-BOOL class_conformsToProtocol(Class cls, Protocol *protocol) {
- // We intentionally don't check cls as it crashes on Leopard so we want
- // to crash on Tiger as well.
- // I logged
- // Radar 5572978 class_conformsToProtocol crashes when arg1 is passed as nil
- // because it seems odd that this API won't accept nil for cls considering
- // all the other apis will accept nil args.
- // If this does get fixed, remember to enable the unit tests.
- if (!protocol) return NO;
-
- struct objc_protocol_list *protos;
- for (protos = cls->protocols; protos != NULL; protos = protos->next) {
- for (long i = 0; i < protos->count; i++) {
- if ([protos->list[i] conformsTo:protocol]) {
- return YES;
- }
- }
- }
- return NO;
-}
-
-Class class_getSuperclass(Class cls) {
- if (!cls) return NULL;
- return cls->super_class;
-}
-
-BOOL class_respondsToSelector(Class cls, SEL sel) {
- return class_getInstanceMethod(cls, sel) != nil;
-}
-
-Method *class_copyMethodList(Class cls, unsigned int *outCount) {
- if (!cls) return NULL;
-
- unsigned int count = 0;
- void *iterator = NULL;
- struct objc_method_list *mlist;
- Method *methods = NULL;
- if (outCount) *outCount = 0;
-
- while ( (mlist = class_nextMethodList(cls, &iterator)) ) {
- if (mlist->method_count == 0) continue;
- Method *new_methods = (Method *)realloc(methods,
- sizeof(Method) * (count + mlist->method_count + 1));
- if (!new_methods) {
- // COV_NF_START
- //Memory alloc failed, so what can we do?
- free(methods);
- return NULL;
- // COV_NF_END
- } else {
- methods = new_methods;
- }
- for (int i = 0; i < mlist->method_count; i++) {
- methods[i + count] = &mlist->method_list[i];
- }
- count += mlist->method_count;
- }
-
- // List must be NULL terminated
- if (methods) {
- methods[count] = NULL;
- }
- if (outCount) *outCount = count;
- return methods;
-}
-
-SEL method_getName(Method method) {
- if (!method) return NULL;
- return method->method_name;
-}
-
-IMP method_getImplementation(Method method) {
- if (!method) return NULL;
- return method->method_imp;
-}
-
-IMP method_setImplementation(Method method, IMP imp) {
- // We intentionally don't test method for nil.
- // Leopard fails here, so should we.
- // I logged this as Radar:
- // 5572981 method_setImplementation crashes if you pass nil for the
- // method arg (arg 1)
- // because it seems odd that this API won't accept nil for method considering
- // all the other apis will accept nil args.
- // If this does get fixed, remember to enable the unit tests.
- // This method works differently on SnowLeopard than
- // on Leopard. If you pass in a nil for IMP on SnowLeopard
- // it doesn't change anything. On Leopard it will. Since
- // attempting to change a sel to nil is probably an error
- // we follow the SnowLeopard way of doing things.
- IMP oldImp = NULL;
- if (imp) {
- oldImp = method->method_imp;
- method->method_imp = imp;
- }
- return oldImp;
-}
-
-void method_exchangeImplementations(Method m1, Method m2) {
- if (m1 == m2) return;
- if (!m1 || !m2) return;
- IMP imp2 = method_getImplementation(m2);
- IMP imp1 = method_setImplementation(m1, imp2);
- method_setImplementation(m2, imp1);
-}
-
-struct objc_method_description protocol_getMethodDescription(Protocol *p,
- SEL aSel,
- BOOL isRequiredMethod,
- BOOL isInstanceMethod) {
- struct objc_method_description *descPtr = NULL;
- // No such thing as required in ObjC1.
- if (isInstanceMethod) {
- descPtr = [p descriptionForInstanceMethod:aSel];
- } else {
- descPtr = [p descriptionForClassMethod:aSel];
- }
-
- struct objc_method_description desc;
- if (descPtr) {
- desc = *descPtr;
- } else {
- bzero(&desc, sizeof(desc));
- }
- return desc;
-}
-
-BOOL sel_isEqual(SEL lhs, SEL rhs) {
- // Apple (informally) promises this will work in the future:
- // http://twitter.com/#!/gparker/status/2400099786
- return (lhs == rhs) ? YES : NO;
-}
-
-#endif // GTM_MACOS_SDK && (MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5)
+#pragma GCC warning "GTMObjc2Runtime.m is deprecated and should no longer be used."
diff --git a/Foundation/GTMObjC2RuntimeTest.m b/Foundation/GTMObjC2RuntimeTest.m
deleted file mode 100644
index 2e6362c..0000000
--- a/Foundation/GTMObjC2RuntimeTest.m
+++ /dev/null
@@ -1,445 +0,0 @@
-//
-// GTMObjC2RuntimeTest.m
-//
-// Copyright 2007-2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMObjC2Runtime.h"
-#import "GTMSenTestCase.h"
-#import "GTMSystemVersion.h"
-#import "GTMTypeCasting.h"
-
-#import <string.h>
-
-@protocol GTMObjC2Runtime_TestProtocol
-@end
-
-@protocol GTMObjC2Runtime_Test2Protocol
-AT_OPTIONAL
-- (NSString*)optional;
-AT_REQUIRED
-- (NSString*)required;
-AT_OPTIONAL
-+ (NSString*)class_optional;
-AT_REQUIRED
-+ (NSString*)class_required;
-@end
-
-@interface GTMObjC2RuntimeTest : GTMTestCase {
- Class cls_;
-}
-@end
-
-@interface GTMObjC2Runtime_TestClass : NSObject <GTMObjC2Runtime_TestProtocol>
-- (NSString*)kwyjibo;
-
-@end
-
-@interface GTMObjC2Runtime_TestClass (GMObjC2Runtime_TestClassCategory)
-- (NSString*)eatMyShorts;
-@end
-
-@implementation GTMObjC2Runtime_TestClass
-
-+ (NSString*)dontHaveACow {
- return @"dontHaveACow";
-}
-
-- (NSString*)kwyjibo {
- return @"kwyjibo";
-}
-@end
-
-@implementation GTMObjC2Runtime_TestClass (GMObjC2Runtime_TestClassCategory)
-- (NSString*)eatMyShorts {
- return @"eatMyShorts";
-}
-
-+ (NSString*)brokeHisBrain {
- return @"brokeHisBrain";
-}
-
-@end
-
-@interface GTMObjC2NotificationWatcher : NSObject
-- (void)startedTest:(NSNotification *)notification;
-@end
-
-@implementation GTMObjC2NotificationWatcher
-- (id)init {
- if ((self = [super init])) {
- NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
- // We release ourselves when we are notified.
- [self retain];
- [nc addObserver:self
- selector:@selector(startedTest:)
- name:SenTestSuiteDidStartNotification
- object:nil];
-
- }
- return self;
-}
-
-- (void)startedTest:(NSNotification *)notification {
- // Logs if we are testing on Tiger or Leopard runtime.
- SenTestSuiteRun *suiteRun = GTM_STATIC_CAST(SenTestSuiteRun,
- [notification object]);
- NSString *testName = [[suiteRun test] name];
- NSString *className = NSStringFromClass([GTMObjC2RuntimeTest class]);
- if ([testName isEqualToString:className]) {
- NSString *runtimeString;
-#ifndef OBJC2_UNAVAILABLE
- runtimeString = @"ObjC1";
-#else
- runtimeString = @"ObjC2";
-#endif
- NSLog(@"Running GTMObjC2RuntimeTests using %@ runtime.", runtimeString);
- NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
- [nc removeObserver:self];
- [self autorelease];
- }
-}
-@end
-
-@implementation GTMObjC2RuntimeTest
-
-+ (void)initialize {
- // This allows us to track which runtime we are actually testing.
- [[[GTMObjC2NotificationWatcher alloc] init] autorelease];
-}
-
-- (void)setUp {
- cls_ = [[GTMObjC2Runtime_TestClass class] retain];
-}
-
-- (void)tearDown {
- [cls_ release];
-}
-
-- (void)test_object_getClass {
- // Nil Checks
- STAssertNil(object_getClass(nil), nil);
-
- // Standard use check
- GTMObjC2Runtime_TestClass *test = [[[cls_ alloc] init] autorelease];
- Class cls = object_getClass(test);
- STAssertEqualObjects(cls, cls_, nil);
-}
-
-- (void)test_class_getName {
- // Nil Checks
- const char *name = class_getName(nil);
- STAssertEqualCStrings(name, "nil", nil);
-
- // Standard use check
- STAssertEqualCStrings(class_getName(cls_), "GTMObjC2Runtime_TestClass", nil);
-}
-
-- (void)test_class_conformsToProtocol {
- // Nil Checks
- STAssertFalse(class_conformsToProtocol(cls_, @protocol(NSObject)), nil);
- STAssertFalse(class_conformsToProtocol(cls_, nil), nil);
- // The following two tests intentionally commented out as they fail on
- // Leopard with a crash, so we fail on Tiger intentionally as well.
- // STAssertFalse(class_conformsToProtocol(nil, @protocol(NSObject)), nil);
- // STAssertFalse(class_conformsToProtocol(nil, nil), nil);
-
- // Standard use check
- STAssertTrue(class_conformsToProtocol(cls_,
- @protocol(GTMObjC2Runtime_TestProtocol)),
- nil);
-}
-
-- (void)test_class_respondsToSelector {
- // Nil Checks
- STAssertFalse(class_respondsToSelector(cls_, @selector(setUp)), nil);
- STAssertFalse(class_respondsToSelector(cls_, nil), nil);
-
- // Standard use check
- STAssertTrue(class_respondsToSelector(cls_, @selector(kwyjibo)), nil);
-}
-
-- (void)test_class_getSuperclass {
- // Nil Checks
- STAssertNil(class_getSuperclass(nil), nil);
-
- // Standard use check
- STAssertEqualObjects(class_getSuperclass(cls_), [NSObject class], nil);
-}
-
-- (void)test_class_copyMethodList {
- // Nil Checks
- Method *list = class_copyMethodList(nil, nil);
- STAssertNULL(list, nil);
-
- // Standard use check
- list = class_copyMethodList(cls_, nil);
- STAssertNotNULL(list, nil);
- free(list);
- unsigned int count = 0;
- list = class_copyMethodList(cls_, &count);
- STAssertNotNULL(list, nil);
- STAssertEquals(count, 2U, nil);
- STAssertNULL(list[count], nil);
- free(list);
-
- // Now test meta class
- count = 0;
- list = class_copyMethodList((Class)objc_getMetaClass(class_getName(cls_)),
- &count);
- STAssertNotNULL(list, nil);
- STAssertEquals(count, 2U, nil);
- STAssertNULL(list[count], nil);
- free(list);
-}
-
-- (void)test_method_getName {
- // Nil Checks
- STAssertNULL(method_getName(nil), nil);
-
- // Standard use check
- Method *list = class_copyMethodList(cls_, nil);
- STAssertNotNULL(list, nil);
- const char* selName1 = sel_getName(method_getName(list[0]));
- const char* selName2 = sel_getName(@selector(kwyjibo));
- const char* selName3 = sel_getName(@selector(eatMyShorts));
- BOOL isGood = ((strcmp(selName1, selName2)) == 0 || (strcmp(selName1, selName3) == 0));
- STAssertTrue(isGood, nil);
- free(list);
-}
-
-- (void)test_method_exchangeImplementations {
- // nil checks
- method_exchangeImplementations(nil, nil);
-
- // Standard use check
- GTMObjC2Runtime_TestClass *test = [[GTMObjC2Runtime_TestClass alloc] init];
- STAssertNotNil(test, nil);
-
- // Get initial values
- NSString *val1 = [test kwyjibo];
- STAssertNotNil(val1, nil);
- NSString *val2 = [test eatMyShorts];
- STAssertNotNil(val2, nil);
- NSString *val3 = [GTMObjC2Runtime_TestClass dontHaveACow];
- STAssertNotNil(val3, nil);
- NSString *val4 = [GTMObjC2Runtime_TestClass brokeHisBrain];
- STAssertNotNil(val4, nil);
-
- // exchange the imps
- Method *list = class_copyMethodList(cls_, nil);
- STAssertNotNULL(list, nil);
- method_exchangeImplementations(list[0], list[1]);
-
- // test against initial values
- NSString *val5 = [test kwyjibo];
- STAssertNotNil(val5, nil);
- NSString *val6 = [test eatMyShorts];
- STAssertNotNil(val6, nil);
- STAssertEqualStrings(val1, val6, nil);
- STAssertEqualStrings(val2, val5, nil);
-
- // Check that other methods not affected
- STAssertEqualStrings([GTMObjC2Runtime_TestClass dontHaveACow], val3, nil);
- STAssertEqualStrings([GTMObjC2Runtime_TestClass brokeHisBrain], val4, nil);
-
- // exchange the imps back
- method_exchangeImplementations(list[0], list[1]);
-
- // and test against initial values again
- NSString *val7 = [test kwyjibo];
- STAssertNotNil(val7, nil);
- NSString *val8 = [test eatMyShorts];
- STAssertNotNil(val8, nil);
- STAssertEqualStrings(val1, val7, nil);
- STAssertEqualStrings(val2, val8, nil);
-
- method_exchangeImplementations(list[0], nil);
- method_exchangeImplementations(nil, list[0]);
-
- val7 = [test kwyjibo];
- STAssertNotNil(val7, nil);
- val8 = [test eatMyShorts];
- STAssertNotNil(val8, nil);
- STAssertEqualStrings(val1, val7, nil);
- STAssertEqualStrings(val2, val8, nil);
-
- free(list);
- [test release];
-}
-
-- (void)test_method_getImplementation {
- // Nil Checks
- STAssertNULL(method_getImplementation(nil), nil);
-
- // Standard use check
- Method *list = class_copyMethodList(cls_, nil);
- STAssertNotNULL(list, nil);
- STAssertNotNULL(method_getImplementation(list[0]), nil);
- free(list);
-}
-
-- (void)test_method_setImplementation {
- // Standard use check
- GTMObjC2Runtime_TestClass *test = [[GTMObjC2Runtime_TestClass alloc] init];
- Method *list = class_copyMethodList(cls_, nil);
-
- // Get initial value
- NSString *str1 = objc_msgSend(test, method_getName(list[0]));
- STAssertNotNil(str1, nil);
-
- // set the imp to something else
- IMP oldImp = method_setImplementation(list[0], method_getImplementation(list[1]));
- STAssertNotNULL(oldImp, nil);
-
- // make sure they are different
- NSString *str2 = objc_msgSend(test,method_getName(list[0]));
- STAssertNotNil(str2, nil);
- STAssertNotEqualStrings(str1, str2, nil);
-
- // reset the imp
- IMP newImp = method_setImplementation(list[0], oldImp);
- STAssertNotEquals(oldImp, newImp, nil);
-
- // test nils
- // Apparently it was a bug that we could call setImplementation with a nil
- // so we now test to make sure that setting to nil works as expected on
- // all systems.
-#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5
- // Built for less then leopard gives us the behaviors we defined...
- // (doesn't take nil)
- IMP nullImp = method_setImplementation(list[0], nil);
- STAssertNULL(nullImp, nil);
- IMP testImp = method_setImplementation(list[0], newImp);
- STAssertEquals(testImp, oldImp, nil);
-#else
- // Built for leopard or later means we get the os runtime behavior...
- if ([GTMSystemVersion isLeopard]) {
- // (takes nil)
- oldImp = method_setImplementation(list[0], nil);
- STAssertNotNULL(oldImp, nil);
- newImp = method_setImplementation(list[0], oldImp);
- STAssertNULL(newImp, nil);
- } else {
- // (doesn't take nil)
- IMP nullImp = method_setImplementation(list[0], nil);
- STAssertNULL(nullImp, nil);
- IMP testImp = method_setImplementation(list[0], newImp);
- STAssertEquals(testImp, oldImp, nil);
- }
-#endif
-
- // This case intentionally not tested. Passing nil to method_setImplementation
- // on Leopard crashes. It does on Tiger as well. Half works on SnowLeopard.
- // We made our Tiger implementation the same as the SnowLeopard
- // implementation.
- // Logged as radar 5572981.
- if (![GTMSystemVersion isLeopardOrGreater]) {
- STAssertNULL(method_setImplementation(nil, nil), nil);
- }
-#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
- if ([GTMSystemVersion isSnowLeopardOrGreater]) {
- STAssertNULL(method_setImplementation(nil, newImp), nil);
- }
-#endif
-
- [test release];
- free(list);
-}
-
-- (void)test_protocol_getMethodDescription {
- // Check nil cases
- struct objc_method_description desc = protocol_getMethodDescription(nil, nil,
- YES, YES);
- STAssertNULL(desc.name, nil);
- desc = protocol_getMethodDescription(nil, @selector(optional), YES, YES);
- STAssertNULL(desc.name, nil);
- desc = protocol_getMethodDescription(@protocol(GTMObjC2Runtime_Test2Protocol),
- nil, YES, YES);
- STAssertNULL(desc.name, nil);
-
- // Instance Methods
- // Check Required case. Only OBJC2 supports required.
- desc = protocol_getMethodDescription(@protocol(GTMObjC2Runtime_Test2Protocol),
- @selector(optional), YES, YES);
-#if OBJC_API_VERSION >= 2
- STAssertNULL(desc.name, nil);
-#else
- STAssertNotNULL(desc.name, nil);
-#endif
-
- // Check Required case. Only OBJC2 supports required.
- desc = protocol_getMethodDescription(@protocol(GTMObjC2Runtime_Test2Protocol),
- @selector(required), YES, YES);
-
- STAssertNotNULL(desc.name, nil);
-
- // Check Optional case. Only OBJC2 supports optional.
- desc = protocol_getMethodDescription(@protocol(GTMObjC2Runtime_Test2Protocol),
- @selector(optional), NO, YES);
-
- STAssertNotNULL(desc.name, nil);
-
- // Check Optional case. Only OBJC2 supports optional.
- desc = protocol_getMethodDescription(@protocol(GTMObjC2Runtime_Test2Protocol),
- @selector(required), NO, YES);
-#if OBJC_API_VERSION >= 2
- STAssertNULL(desc.name, nil);
-#else
- STAssertNotNULL(desc.name, nil);
-#endif
-
- // Class Methods
- // Check Required case. Only OBJC2 supports required.
- desc = protocol_getMethodDescription(@protocol(GTMObjC2Runtime_Test2Protocol),
- @selector(class_optional), YES, NO);
-#if OBJC_API_VERSION >= 2
- STAssertNULL(desc.name, nil);
-#else
- STAssertNotNULL(desc.name, nil);
-#endif
-
- // Check Required case. Only OBJC2 supports required.
- desc = protocol_getMethodDescription(@protocol(GTMObjC2Runtime_Test2Protocol),
- @selector(class_required), YES, NO);
-
- STAssertNotNULL(desc.name, nil);
-
- // Check Optional case. Only OBJC2 supports optional.
- desc = protocol_getMethodDescription(@protocol(GTMObjC2Runtime_Test2Protocol),
- @selector(class_optional), NO, NO);
-
- STAssertNotNULL(desc.name, nil);
-
- // Check Optional case. Only OBJC2 supports optional.
- desc = protocol_getMethodDescription(@protocol(GTMObjC2Runtime_Test2Protocol),
- @selector(class_required), NO, NO);
-#if OBJC_API_VERSION >= 2
- STAssertNULL(desc.name, nil);
-#else
- STAssertNotNULL(desc.name, nil);
-#endif
-
-}
-
-- (void)test_sel_isEqual {
- STAssertTrue(sel_isEqual(@selector(kwyjibo), @selector(kwyjibo)), nil);
- STAssertFalse(sel_isEqual(@selector(kwyjibo), @selector(dontHaveACow)), nil);
- STAssertTrue(sel_isEqual(_cmd, @selector(test_sel_isEqual)), nil);
- STAssertTrue(sel_isEqual(_cmd, _cmd), nil);
- STAssertFalse(sel_isEqual(_cmd, @selector(kwyjibo)), nil);
-}
-
-@end
diff --git a/Foundation/GTMPathTest.m b/Foundation/GTMPathTest.m
index 54fa83b..dff1f02 100644
--- a/Foundation/GTMPathTest.m
+++ b/Foundation/GTMPathTest.m
@@ -18,7 +18,6 @@
#import "GTMSenTestCase.h"
#import "GTMPath.h"
-#import "GTMUnitTestDevLog.h"
#import "GTMNSFileHandle+UniqueName.h"
#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5
diff --git a/Foundation/GTMRegex.m b/Foundation/GTMRegex.m
index 238ca48..7ac4665 100644
--- a/Foundation/GTMRegex.m
+++ b/Foundation/GTMRegex.m
@@ -133,7 +133,7 @@ static NSString *const kReplacementPattern =
- (id)initWithPattern:(NSString *)pattern
options:(GTMRegexOptions)options
withError:(NSError **)outErrorOrNULL {
-
+
self = [super init];
if (!self) return nil;
@@ -275,7 +275,7 @@ static NSString *const kReplacementPattern =
- (NSString *)firstSubStringMatchedInString:(NSString *)str {
NSString *result = nil;
-
+
regmatch_t regMatch;
const char *utf8Str = [str UTF8String];
if ([self runRegexOnUTF8:utf8Str
@@ -380,7 +380,7 @@ static NSString *const kReplacementPattern =
} else {
// spin over the split up replacement
GTMRegexStringSegment *replacementSegment = nil;
- GTM_FOREACH_OBJECT(replacementSegment, replacements) {
+ for (replacementSegment in replacements) {
if (![replacementSegment isMatch]) {
// not a match, raw text to put in
[result appendString:[replacementSegment string]];
@@ -687,14 +687,14 @@ static NSString *const kReplacementPattern =
return nil;
// pick off when it wasn't found
- if ((regMatches_[patternIndex].rm_so == -1) &&
+ if ((regMatches_[patternIndex].rm_so == -1) &&
(regMatches_[patternIndex].rm_eo == -1))
return nil;
// fetch the string
- const char *base = (const char*)[utf8StrBuf_ bytes]
+ const char *base = (const char*)[utf8StrBuf_ bytes]
+ regMatches_[patternIndex].rm_so;
- regoff_t len = regMatches_[patternIndex].rm_eo
+ regoff_t len = regMatches_[patternIndex].rm_eo
- regMatches_[patternIndex].rm_so;
return [[[NSString alloc] initWithBytes:base
length:(NSUInteger)len
@@ -707,7 +707,7 @@ static NSString *const kReplacementPattern =
[self class], self, (isMatch_ ? "YES" : "NO")];
for (NSUInteger x = 0; x <= numRegMatches_; ++x) {
int length = (int)(regMatches_[x].rm_eo - regMatches_[x].rm_so);
- const char* string
+ const char* string
= (((const char*)[utf8StrBuf_ bytes]) + regMatches_[x].rm_so);
if (x == 0) {
[result appendFormat:@" \"%.*s\"", length , string];
diff --git a/Foundation/GTMRegexTest.m b/Foundation/GTMRegexTest.m
index 6f41d60..65aadd5 100644
--- a/Foundation/GTMRegexTest.m
+++ b/Foundation/GTMRegexTest.m
@@ -6,9 +6,9 @@
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy
// of the License at
-//
+//
// http://www.apache.org/licenses/LICENSE-2.0
-//
+//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
@@ -18,7 +18,6 @@
#import "GTMSenTestCase.h"
#import "GTMRegex.h"
-#import "GTMUnitTestDevLog.h"
//
// NOTE:
@@ -36,104 +35,97 @@
@implementation GTMRegexTest
- (void)testEscapedPatternForString {
- STAssertEqualStrings([GTMRegex escapedPatternForString:@"abcdefghijklmnopqrstuvwxyz0123456789"],
- @"abcdefghijklmnopqrstuvwxyz0123456789",
- nil);
- STAssertEqualStrings([GTMRegex escapedPatternForString:@"^.[$()|*+?{\\"],
- @"\\^\\.\\[\\$\\(\\)\\|\\*\\+\\?\\{\\\\",
- nil);
- STAssertEqualStrings([GTMRegex escapedPatternForString:@"a^b.c[d$e(f)g|h*i+j?k{l\\m"],
- @"a\\^b\\.c\\[d\\$e\\(f\\)g\\|h\\*i\\+j\\?k\\{l\\\\m",
- nil);
-
- STAssertNil([GTMRegex escapedPatternForString:nil], nil);
- STAssertEqualStrings([GTMRegex escapedPatternForString:@""], @"", nil);
+ XCTAssertEqualStrings([GTMRegex escapedPatternForString:@"abcdefghijklmnopqrstuvwxyz0123456789"],
+ @"abcdefghijklmnopqrstuvwxyz0123456789");
+ XCTAssertEqualStrings([GTMRegex escapedPatternForString:@"^.[$()|*+?{\\"],
+ @"\\^\\.\\[\\$\\(\\)\\|\\*\\+\\?\\{\\\\");
+ XCTAssertEqualStrings([GTMRegex escapedPatternForString:@"a^b.c[d$e(f)g|h*i+j?k{l\\m"],
+ @"a\\^b\\.c\\[d\\$e\\(f\\)g\\|h\\*i\\+j\\?k\\{l\\\\m");
+
+ XCTAssertNil([GTMRegex escapedPatternForString:nil]);
+ XCTAssertEqualStrings([GTMRegex escapedPatternForString:@""], @"");
}
- (void)testInit {
// fail cases
- STAssertNil([[[GTMRegex alloc] init] autorelease], nil);
- STAssertNil([[[GTMRegex alloc] initWithPattern:nil] autorelease], nil);
- STAssertNil([[[GTMRegex alloc] initWithPattern:nil
- options:kGTMRegexOptionIgnoreCase] autorelease], nil);
- [GTMUnitTestDevLog expectString:@"Invalid pattern \"(.\", error: \"parentheses not balanced\""];
- STAssertNil([[[GTMRegex alloc] initWithPattern:@"(."] autorelease], nil);
- [GTMUnitTestDevLog expectString:@"Invalid pattern \"(.\", error: \"parentheses not balanced\""];
- STAssertNil([[[GTMRegex alloc] initWithPattern:@"(."
- options:kGTMRegexOptionIgnoreCase] autorelease], nil);
+ XCTAssertNil([[[GTMRegex alloc] init] autorelease]);
+ XCTAssertNil([[[GTMRegex alloc] initWithPattern:nil] autorelease]);
+ XCTAssertNil([[[GTMRegex alloc] initWithPattern:nil
+ options:kGTMRegexOptionIgnoreCase] autorelease]);
+ XCTAssertNil([[[GTMRegex alloc] initWithPattern:@"(."] autorelease]);
+ XCTAssertNil([[[GTMRegex alloc] initWithPattern:@"(."
+ options:kGTMRegexOptionIgnoreCase] autorelease]);
// fail cases w/ error param
NSError *error = nil;
- STAssertNil([[[GTMRegex alloc] initWithPattern:nil
- options:kGTMRegexOptionIgnoreCase
- withError:&error] autorelease], nil);
- STAssertNil(error, @"no pattern, shouldn't get error object");
- STAssertNil([[[GTMRegex alloc] initWithPattern:@"(."
- options:kGTMRegexOptionIgnoreCase
- withError:&error] autorelease], nil);
- STAssertNotNil(error, nil);
- STAssertEqualObjects([error domain], kGTMRegexErrorDomain, nil);
- STAssertEquals([error code], (NSInteger)kGTMRegexPatternParseFailedError, nil);
+ XCTAssertNil([[[GTMRegex alloc] initWithPattern:nil
+ options:kGTMRegexOptionIgnoreCase
+ withError:&error] autorelease]);
+ XCTAssertNil(error, @"no pattern, shouldn't get error object");
+ XCTAssertNil([[[GTMRegex alloc] initWithPattern:@"(."
+ options:kGTMRegexOptionIgnoreCase
+ withError:&error] autorelease]);
+ XCTAssertNotNil(error);
+ XCTAssertEqualObjects([error domain], kGTMRegexErrorDomain);
+ XCTAssertEqual([error code], (NSInteger)kGTMRegexPatternParseFailedError);
NSDictionary *userInfo = [error userInfo];
- STAssertNotNil(userInfo, @"failed to get userInfo from error");
- STAssertEqualObjects([userInfo objectForKey:kGTMRegexPatternErrorPattern], @"(.", nil);
- STAssertNotNil([userInfo objectForKey:kGTMRegexPatternErrorErrorString], nil);
+ XCTAssertNotNil(userInfo, @"failed to get userInfo from error");
+ XCTAssertEqualObjects([userInfo objectForKey:kGTMRegexPatternErrorPattern], @"(.");
+ XCTAssertNotNil([userInfo objectForKey:kGTMRegexPatternErrorErrorString]);
// basic pattern w/ options
- STAssertNotNil([[[GTMRegex alloc] initWithPattern:@"(.*)"] autorelease], nil);
- STAssertNotNil([[[GTMRegex alloc] initWithPattern:@"(.*)"
- options:0] autorelease], nil);
- STAssertNotNil([[[GTMRegex alloc] initWithPattern:@"(.*)"
- options:kGTMRegexOptionIgnoreCase] autorelease], nil);
+ XCTAssertNotNil([[[GTMRegex alloc] initWithPattern:@"(.*)"] autorelease]);
+ XCTAssertNotNil([[[GTMRegex alloc] initWithPattern:@"(.*)"
+ options:0] autorelease]);
+ XCTAssertNotNil([[[GTMRegex alloc] initWithPattern:@"(.*)"
+ options:kGTMRegexOptionIgnoreCase] autorelease]);
error = nil;
- STAssertNotNil([[[GTMRegex alloc] initWithPattern:@"(.*)"
- options:kGTMRegexOptionIgnoreCase
- withError:&error] autorelease], nil);
- STAssertNil(error, @"shouldn't have been any error");
+ XCTAssertNotNil([[[GTMRegex alloc] initWithPattern:@"(.*)"
+ options:kGTMRegexOptionIgnoreCase
+ withError:&error] autorelease]);
+ XCTAssertNil(error, @"shouldn't have been any error");
// fail cases (helper)
- STAssertNil([GTMRegex regexWithPattern:nil], nil);
- STAssertNil([GTMRegex regexWithPattern:nil
- options:0], nil);
- [GTMUnitTestDevLog expectString:@"Invalid pattern \"(.\", error: \"parentheses not balanced\""];
- STAssertNil([GTMRegex regexWithPattern:@"(."], nil);
- [GTMUnitTestDevLog expectString:@"Invalid pattern \"(.\", error: \"parentheses not balanced\""];
- STAssertNil([GTMRegex regexWithPattern:@"(."
- options:0], nil);
+ XCTAssertNil([GTMRegex regexWithPattern:nil]);
+ XCTAssertNil([GTMRegex regexWithPattern:nil
+ options:0]);
+ XCTAssertNil([GTMRegex regexWithPattern:@"(."]);
+ XCTAssertNil([GTMRegex regexWithPattern:@"(."
+ options:0]);
// fail cases (helper) w/ error param
- STAssertNil([GTMRegex regexWithPattern:nil
- options:kGTMRegexOptionIgnoreCase
- withError:&error], nil);
- STAssertNil(error, @"no pattern, shouldn't get error object");
- STAssertNil([GTMRegex regexWithPattern:@"(."
- options:kGTMRegexOptionIgnoreCase
- withError:&error], nil);
- STAssertNotNil(error, nil);
- STAssertEqualObjects([error domain], kGTMRegexErrorDomain, nil);
- STAssertEquals([error code], (NSInteger)kGTMRegexPatternParseFailedError, nil);
+ XCTAssertNil([GTMRegex regexWithPattern:nil
+ options:kGTMRegexOptionIgnoreCase
+ withError:&error]);
+ XCTAssertNil(error, @"no pattern, shouldn't get error object");
+ XCTAssertNil([GTMRegex regexWithPattern:@"(."
+ options:kGTMRegexOptionIgnoreCase
+ withError:&error]);
+ XCTAssertNotNil(error);
+ XCTAssertEqualObjects([error domain], kGTMRegexErrorDomain);
+ XCTAssertEqual([error code], (NSInteger)kGTMRegexPatternParseFailedError);
userInfo = [error userInfo];
- STAssertNotNil(userInfo, @"failed to get userInfo from error");
- STAssertEqualObjects([userInfo objectForKey:kGTMRegexPatternErrorPattern], @"(.", nil);
- STAssertNotNil([userInfo objectForKey:kGTMRegexPatternErrorErrorString], nil);
-
+ XCTAssertNotNil(userInfo, @"failed to get userInfo from error");
+ XCTAssertEqualObjects([userInfo objectForKey:kGTMRegexPatternErrorPattern], @"(.");
+ XCTAssertNotNil([userInfo objectForKey:kGTMRegexPatternErrorErrorString]);
+
// basic pattern w/ options (helper)
- STAssertNotNil([GTMRegex regexWithPattern:@"(.*)"], nil);
- STAssertNotNil([GTMRegex regexWithPattern:@"(.*)"
- options:0], nil);
- STAssertNotNil([GTMRegex regexWithPattern:@"(.*)"
- options:kGTMRegexOptionIgnoreCase], nil);
+ XCTAssertNotNil([GTMRegex regexWithPattern:@"(.*)"]);
+ XCTAssertNotNil([GTMRegex regexWithPattern:@"(.*)"
+ options:0]);
+ XCTAssertNotNil([GTMRegex regexWithPattern:@"(.*)"
+ options:kGTMRegexOptionIgnoreCase]);
error = nil;
- STAssertNotNil([GTMRegex regexWithPattern:@"(.*)"
- options:kGTMRegexOptionIgnoreCase
- withError:&error], nil);
- STAssertNil(error, @"shouldn't have been any error");
-
+ XCTAssertNotNil([GTMRegex regexWithPattern:@"(.*)"
+ options:kGTMRegexOptionIgnoreCase
+ withError:&error]);
+ XCTAssertNil(error, @"shouldn't have been any error");
+
// not really a test on GTMRegex, but make sure we block attempts to directly
// alloc/init a GTMRegexStringSegment.
- STAssertThrowsSpecificNamed([[[GTMRegexStringSegment alloc] init] autorelease],
- NSException, NSInvalidArgumentException,
- @"shouldn't have been able to alloc/init a GTMRegexStringSegment");
+ XCTAssertThrowsSpecificNamed([[[GTMRegexStringSegment alloc] init] autorelease],
+ NSException, NSInvalidArgumentException,
+ @"shouldn't have been able to alloc/init a GTMRegexStringSegment");
}
- (void)testOptions {
@@ -142,767 +134,759 @@
// default options
GTMRegex *regex = [GTMRegex regexWithPattern:@"a+"];
- STAssertNotNil(regex, nil);
+ XCTAssertNotNil(regex);
NSEnumerator *enumerator = [regex segmentEnumeratorForString:testString];
- STAssertNotNil(enumerator, nil);
+ XCTAssertNotNil(enumerator);
// "aaa"
GTMRegexStringSegment *seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertTrue([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"aaa", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertTrue([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"aaa");
// " AAA\nbbb BBB\n "
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertFalse([seg isMatch], nil);
- STAssertEqualStrings([seg string], @" AAA\nbbb BBB\n ", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertFalse([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @" AAA\nbbb BBB\n ");
// "aaa"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertTrue([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"aaa", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertTrue([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"aaa");
// " "
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertFalse([seg isMatch], nil);
- STAssertEqualStrings([seg string], @" ", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertFalse([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @" ");
// "a"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertTrue([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"a", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertTrue([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"a");
// "A"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertFalse([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"A", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertFalse([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"A");
// "a"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertTrue([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"a", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertTrue([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"a");
// "\n bbb BbB"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertFalse([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"\n bbb BbB", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertFalse([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"\n bbb BbB");
// (end)
seg = [enumerator nextObject];
- STAssertNil(seg, nil);
+ XCTAssertNil(seg);
// kGTMRegexOptionIgnoreCase
regex = [GTMRegex regexWithPattern:@"a+" options:kGTMRegexOptionIgnoreCase];
- STAssertNotNil(regex, nil);
+ XCTAssertNotNil(regex);
enumerator = [regex segmentEnumeratorForString:testString];
- STAssertNotNil(enumerator, nil);
+ XCTAssertNotNil(enumerator);
// "aaa"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertTrue([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"aaa", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertTrue([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"aaa");
// " "
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertFalse([seg isMatch], nil);
- STAssertEqualStrings([seg string], @" ", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertFalse([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @" ");
// "AAA"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertTrue([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"AAA", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertTrue([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"AAA");
// "\nbbb BBB\n "
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertFalse([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"\nbbb BBB\n ", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertFalse([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"\nbbb BBB\n ");
// "aaa"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertTrue([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"aaa", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertTrue([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"aaa");
// " "
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertFalse([seg isMatch], nil);
- STAssertEqualStrings([seg string], @" ", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertFalse([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @" ");
// "aAa"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertTrue([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"aAa", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertTrue([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"aAa");
// "\n bbb BbB"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertFalse([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"\n bbb BbB", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertFalse([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"\n bbb BbB");
// (end)
seg = [enumerator nextObject];
- STAssertNil(seg, nil);
+ XCTAssertNil(seg);
// defaults w/ '^'
regex = [GTMRegex regexWithPattern:@"^a+"];
- STAssertNotNil(regex, nil);
+ XCTAssertNotNil(regex);
enumerator = [regex segmentEnumeratorForString:testString];
- STAssertNotNil(enumerator, nil);
+ XCTAssertNotNil(enumerator);
// "aaa"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertTrue([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"aaa", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertTrue([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"aaa");
// " AAA\nbbb BBB\n aaa aAa\n bbb BbB"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertFalse([seg isMatch], nil);
- STAssertEqualStrings([seg string], @" AAA\nbbb BBB\n aaa aAa\n bbb BbB", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertFalse([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @" AAA\nbbb BBB\n aaa aAa\n bbb BbB");
// (end)
seg = [enumerator nextObject];
- STAssertNil(seg, nil);
+ XCTAssertNil(seg);
// defaults w/ '$'
regex = [GTMRegex regexWithPattern:@"B+$"];
- STAssertNotNil(regex, nil);
+ XCTAssertNotNil(regex);
enumerator = [regex segmentEnumeratorForString:testString];
- STAssertNotNil(enumerator, nil);
+ XCTAssertNotNil(enumerator);
// "aaa AAA\nbbb "
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertFalse([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"aaa AAA\nbbb ", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertFalse([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"aaa AAA\nbbb ");
// "BBB"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertTrue([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"BBB", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertTrue([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"BBB");
// "\n aaa aAa\n bbb Bb"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertFalse([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"\n aaa aAa\n bbb Bb", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertFalse([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"\n aaa aAa\n bbb Bb");
// "B"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertTrue([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"B", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertTrue([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"B");
// (end)
seg = [enumerator nextObject];
- STAssertNil(seg, nil);
+ XCTAssertNil(seg);
// kGTMRegexOptionIgnoreCase w/ '$'
regex = [GTMRegex regexWithPattern:@"B+$"
- options:kGTMRegexOptionIgnoreCase];
- STAssertNotNil(regex, nil);
+ options:kGTMRegexOptionIgnoreCase];
+ XCTAssertNotNil(regex);
enumerator = [regex segmentEnumeratorForString:testString];
- STAssertNotNil(enumerator, nil);
+ XCTAssertNotNil(enumerator);
// "aaa AAA\nbbb "
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertFalse([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"aaa AAA\nbbb ", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertFalse([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"aaa AAA\nbbb ");
// "BBB"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertTrue([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"BBB", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertTrue([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"BBB");
// "\n aaa aAa\n bbb "
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertFalse([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"\n aaa aAa\n bbb ", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertFalse([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"\n aaa aAa\n bbb ");
// "BbB"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertTrue([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"BbB", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertTrue([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"BbB");
// (end)
seg = [enumerator nextObject];
- STAssertNil(seg, nil);
+ XCTAssertNil(seg);
// test w/ kGTMRegexOptionSupressNewlineSupport and \n in the string
regex = [GTMRegex regexWithPattern:@"a.*b" options:kGTMRegexOptionSupressNewlineSupport];
- STAssertNotNil(regex, nil);
+ XCTAssertNotNil(regex);
enumerator = [regex segmentEnumeratorForString:testString];
- STAssertNotNil(enumerator, nil);
+ XCTAssertNotNil(enumerator);
// "aaa AAA\nbbb BBB\n aaa aAa\n bbb Bb"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertTrue([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"aaa AAA\nbbb BBB\n aaa aAa\n bbb Bb", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertTrue([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"aaa AAA\nbbb BBB\n aaa aAa\n bbb Bb");
// "B"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertFalse([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"B", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertFalse([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"B");
// (end)
seg = [enumerator nextObject];
- STAssertNil(seg, nil);
+ XCTAssertNil(seg);
// test w/o kGTMRegexOptionSupressNewlineSupport and \n in the string
// (this is no match since it '.' can't match the '\n')
regex = [GTMRegex regexWithPattern:@"a.*b"];
- STAssertNotNil(regex, nil);
+ XCTAssertNotNil(regex);
enumerator = [regex segmentEnumeratorForString:testString];
- STAssertNotNil(enumerator, nil);
+ XCTAssertNotNil(enumerator);
// "aaa AAA\nbbb BBB\n aaa aAa\n bbb BbB"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertFalse([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"aaa AAA\nbbb BBB\n aaa aAa\n bbb BbB", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertFalse([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"aaa AAA\nbbb BBB\n aaa aAa\n bbb BbB");
// (end)
seg = [enumerator nextObject];
- STAssertNil(seg, nil);
-
+ XCTAssertNil(seg);
+
// kGTMRegexOptionSupressNewlineSupport w/ '^'
regex = [GTMRegex regexWithPattern:@"^a+" options:kGTMRegexOptionSupressNewlineSupport];
- STAssertNotNil(regex, nil);
+ XCTAssertNotNil(regex);
enumerator = [regex segmentEnumeratorForString:testString];
- STAssertNotNil(enumerator, nil);
+ XCTAssertNotNil(enumerator);
// "aaa"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertTrue([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"aaa", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertTrue([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"aaa");
// " AAA\nbbb BBB\n aaa aAa\n bbb BbB"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertFalse([seg isMatch], nil);
- STAssertEqualStrings([seg string], @" AAA\nbbb BBB\n aaa aAa\n bbb BbB", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertFalse([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @" AAA\nbbb BBB\n aaa aAa\n bbb BbB");
// (end)
seg = [enumerator nextObject];
- STAssertNil(seg, nil);
+ XCTAssertNil(seg);
// kGTMRegexOptionSupressNewlineSupport w/ '$'
regex = [GTMRegex regexWithPattern:@"B+$" options:kGTMRegexOptionSupressNewlineSupport];
- STAssertNotNil(regex, nil);
+ XCTAssertNotNil(regex);
enumerator = [regex segmentEnumeratorForString:testString];
- STAssertNotNil(enumerator, nil);
+ XCTAssertNotNil(enumerator);
// "aaa AAA\nbbb BBB\n aaa aAa\n bbb Bb"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertFalse([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"aaa AAA\nbbb BBB\n aaa aAa\n bbb Bb", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertFalse([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"aaa AAA\nbbb BBB\n aaa aAa\n bbb Bb");
// "B"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertTrue([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"B", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertTrue([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"B");
// (end)
seg = [enumerator nextObject];
- STAssertNil(seg, nil);
+ XCTAssertNil(seg);
}
- (void)testSubPatternCount {
- STAssertEquals((NSUInteger)0, [[GTMRegex regexWithPattern:@".*"] subPatternCount], nil);
- STAssertEquals((NSUInteger)1, [[GTMRegex regexWithPattern:@"(.*)"] subPatternCount], nil);
- STAssertEquals((NSUInteger)1, [[GTMRegex regexWithPattern:@"[fo]*(.*)[bar]*"] subPatternCount], nil);
- STAssertEquals((NSUInteger)3, [[GTMRegex regexWithPattern:@"([fo]*)(.*)([bar]*)"] subPatternCount], nil);
- STAssertEquals((NSUInteger)7, [[GTMRegex regexWithPattern:@"(([bar]*)|([fo]*))(.*)(([bar]*)|([fo]*))"] subPatternCount], nil);
+ XCTAssertEqual((NSUInteger)0, [[GTMRegex regexWithPattern:@".*"] subPatternCount]);
+ XCTAssertEqual((NSUInteger)1, [[GTMRegex regexWithPattern:@"(.*)"] subPatternCount]);
+ XCTAssertEqual((NSUInteger)1, [[GTMRegex regexWithPattern:@"[fo]*(.*)[bar]*"] subPatternCount]);
+ XCTAssertEqual((NSUInteger)3,
+ [[GTMRegex regexWithPattern:@"([fo]*)(.*)([bar]*)"] subPatternCount]);
+ XCTAssertEqual((NSUInteger)7,
+ [[GTMRegex regexWithPattern:@"(([bar]*)|([fo]*))(.*)(([bar]*)|([fo]*))"] subPatternCount]);
}
- (void)testMatchesString {
// simple pattern
GTMRegex *regex = [GTMRegex regexWithPattern:@"foo.*bar"];
- STAssertNotNil(regex, nil);
- STAssertTrue([regex matchesString:@"foobar"], nil);
- STAssertTrue([regex matchesString:@"foobydoo spambar"], nil);
- STAssertFalse([regex matchesString:@"zzfoobarzz"], nil);
- STAssertFalse([regex matchesString:@"zzfoobydoo spambarzz"], nil);
- STAssertFalse([regex matchesString:@"abcdef"], nil);
- STAssertFalse([regex matchesString:@""], nil);
- STAssertFalse([regex matchesString:nil], nil);
+ XCTAssertNotNil(regex);
+ XCTAssertTrue([regex matchesString:@"foobar"]);
+ XCTAssertTrue([regex matchesString:@"foobydoo spambar"]);
+ XCTAssertFalse([regex matchesString:@"zzfoobarzz"]);
+ XCTAssertFalse([regex matchesString:@"zzfoobydoo spambarzz"]);
+ XCTAssertFalse([regex matchesString:@"abcdef"]);
+ XCTAssertFalse([regex matchesString:@""]);
+ XCTAssertFalse([regex matchesString:nil]);
// pattern w/ sub patterns
regex = [GTMRegex regexWithPattern:@"(foo)(.*)(bar)"];
- STAssertNotNil(regex, nil);
- STAssertTrue([regex matchesString:@"foobar"], nil);
- STAssertTrue([regex matchesString:@"foobydoo spambar"], nil);
- STAssertFalse([regex matchesString:@"zzfoobarzz"], nil);
- STAssertFalse([regex matchesString:@"zzfoobydoo spambarzz"], nil);
- STAssertFalse([regex matchesString:@"abcdef"], nil);
- STAssertFalse([regex matchesString:@""], nil);
- STAssertFalse([regex matchesString:nil], nil);
+ XCTAssertNotNil(regex);
+ XCTAssertTrue([regex matchesString:@"foobar"]);
+ XCTAssertTrue([regex matchesString:@"foobydoo spambar"]);
+ XCTAssertFalse([regex matchesString:@"zzfoobarzz"]);
+ XCTAssertFalse([regex matchesString:@"zzfoobydoo spambarzz"]);
+ XCTAssertFalse([regex matchesString:@"abcdef"]);
+ XCTAssertFalse([regex matchesString:@""]);
+ XCTAssertFalse([regex matchesString:nil]);
}
- (void)testSubPatternsOfString {
GTMRegex *regex = [GTMRegex regexWithPattern:@"(fo(o+))((bar)|(baz))"];
- STAssertNotNil(regex, nil);
- STAssertEquals((NSUInteger)5, [regex subPatternCount], nil);
+ XCTAssertNotNil(regex);
+ XCTAssertEqual((NSUInteger)5, [regex subPatternCount]);
NSArray *subPatterns = [regex subPatternsOfString:@"foooooobaz"];
- STAssertNotNil(subPatterns, nil);
- STAssertEquals((NSUInteger)6, [subPatterns count], nil);
- STAssertEqualStrings(@"foooooobaz", [subPatterns objectAtIndex:0], nil);
- STAssertEqualStrings(@"foooooo", [subPatterns objectAtIndex:1], nil);
- STAssertEqualStrings(@"ooooo", [subPatterns objectAtIndex:2], nil);
- STAssertEqualStrings(@"baz", [subPatterns objectAtIndex:3], nil);
- STAssertEqualObjects([NSNull null], [subPatterns objectAtIndex:4], nil);
- STAssertEqualStrings(@"baz", [subPatterns objectAtIndex:5], nil);
+ XCTAssertNotNil(subPatterns);
+ XCTAssertEqual((NSUInteger)6, [subPatterns count]);
+ XCTAssertEqualStrings(@"foooooobaz", [subPatterns objectAtIndex:0]);
+ XCTAssertEqualStrings(@"foooooo", [subPatterns objectAtIndex:1]);
+ XCTAssertEqualStrings(@"ooooo", [subPatterns objectAtIndex:2]);
+ XCTAssertEqualStrings(@"baz", [subPatterns objectAtIndex:3]);
+ XCTAssertEqualObjects([NSNull null], [subPatterns objectAtIndex:4]);
+ XCTAssertEqualStrings(@"baz", [subPatterns objectAtIndex:5]);
// not there
subPatterns = [regex subPatternsOfString:@"aaa"];
- STAssertNil(subPatterns, nil);
+ XCTAssertNil(subPatterns);
// not extra stuff on either end
subPatterns = [regex subPatternsOfString:@"ZZZfoooooobaz"];
- STAssertNil(subPatterns, nil);
+ XCTAssertNil(subPatterns);
subPatterns = [regex subPatternsOfString:@"foooooobazZZZ"];
- STAssertNil(subPatterns, nil);
+ XCTAssertNil(subPatterns);
subPatterns = [regex subPatternsOfString:@"ZZZfoooooobazZZZ"];
- STAssertNil(subPatterns, nil);
+ XCTAssertNil(subPatterns);
}
- (void)testFirstSubStringMatchedInString {
// simple pattern
GTMRegex *regex = [GTMRegex regexWithPattern:@"foo.*bar"];
- STAssertNotNil(regex, nil);
- STAssertEqualStrings([regex firstSubStringMatchedInString:@"foobar"],
- @"foobar", nil);
- STAssertEqualStrings([regex firstSubStringMatchedInString:@"foobydoo spambar"],
- @"foobydoo spambar", nil);
- STAssertEqualStrings([regex firstSubStringMatchedInString:@"zzfoobarzz"],
- @"foobar", nil);
- STAssertEqualStrings([regex firstSubStringMatchedInString:@"zzfoobydoo spambarzz"],
- @"foobydoo spambar", nil);
- STAssertNil([regex firstSubStringMatchedInString:@"abcdef"], nil);
- STAssertNil([regex firstSubStringMatchedInString:@""], nil);
+ XCTAssertNotNil(regex);
+ XCTAssertEqualStrings([regex firstSubStringMatchedInString:@"foobar"],
+ @"foobar");
+ XCTAssertEqualStrings([regex firstSubStringMatchedInString:@"foobydoo spambar"],
+ @"foobydoo spambar");
+ XCTAssertEqualStrings([regex firstSubStringMatchedInString:@"zzfoobarzz"],
+ @"foobar");
+ XCTAssertEqualStrings([regex firstSubStringMatchedInString:@"zzfoobydoo spambarzz"],
+ @"foobydoo spambar");
+ XCTAssertNil([regex firstSubStringMatchedInString:@"abcdef"]);
+ XCTAssertNil([regex firstSubStringMatchedInString:@""]);
// pattern w/ sub patterns
regex = [GTMRegex regexWithPattern:@"(foo)(.*)(bar)"];
- STAssertNotNil(regex, nil);
- STAssertEqualStrings([regex firstSubStringMatchedInString:@"foobar"],
- @"foobar", nil);
- STAssertEqualStrings([regex firstSubStringMatchedInString:@"foobydoo spambar"],
- @"foobydoo spambar", nil);
- STAssertEqualStrings([regex firstSubStringMatchedInString:@"zzfoobarzz"],
- @"foobar", nil);
- STAssertEqualStrings([regex firstSubStringMatchedInString:@"zzfoobydoo spambarzz"],
- @"foobydoo spambar", nil);
- STAssertNil([regex firstSubStringMatchedInString:@"abcdef"], nil);
- STAssertNil([regex firstSubStringMatchedInString:@""], nil);
+ XCTAssertNotNil(regex);
+ XCTAssertEqualStrings([regex firstSubStringMatchedInString:@"foobar"],
+ @"foobar");
+ XCTAssertEqualStrings([regex firstSubStringMatchedInString:@"foobydoo spambar"],
+ @"foobydoo spambar");
+ XCTAssertEqualStrings([regex firstSubStringMatchedInString:@"zzfoobarzz"],
+ @"foobar");
+ XCTAssertEqualStrings([regex firstSubStringMatchedInString:@"zzfoobydoo spambarzz"],
+ @"foobydoo spambar");
+ XCTAssertNil([regex firstSubStringMatchedInString:@"abcdef"]);
+ XCTAssertNil([regex firstSubStringMatchedInString:@""]);
}
- (void)testMatchesSubStringInString {
// simple pattern
GTMRegex *regex = [GTMRegex regexWithPattern:@"foo.*bar"];
- STAssertNotNil(regex, nil);
- STAssertTrue([regex matchesSubStringInString:@"foobar"], nil);
- STAssertTrue([regex matchesSubStringInString:@"foobydoo spambar"], nil);
- STAssertTrue([regex matchesSubStringInString:@"zzfoobarzz"], nil);
- STAssertTrue([regex matchesSubStringInString:@"zzfoobydoo spambarzz"], nil);
- STAssertFalse([regex matchesSubStringInString:@"abcdef"], nil);
- STAssertFalse([regex matchesSubStringInString:@""], nil);
+ XCTAssertNotNil(regex);
+ XCTAssertTrue([regex matchesSubStringInString:@"foobar"]);
+ XCTAssertTrue([regex matchesSubStringInString:@"foobydoo spambar"]);
+ XCTAssertTrue([regex matchesSubStringInString:@"zzfoobarzz"]);
+ XCTAssertTrue([regex matchesSubStringInString:@"zzfoobydoo spambarzz"]);
+ XCTAssertFalse([regex matchesSubStringInString:@"abcdef"]);
+ XCTAssertFalse([regex matchesSubStringInString:@""]);
// pattern w/ sub patterns
regex = [GTMRegex regexWithPattern:@"(foo)(.*)(bar)"];
- STAssertNotNil(regex, nil);
- STAssertTrue([regex matchesSubStringInString:@"foobar"], nil);
- STAssertTrue([regex matchesSubStringInString:@"foobydoo spambar"], nil);
- STAssertTrue([regex matchesSubStringInString:@"zzfoobarzz"], nil);
- STAssertTrue([regex matchesSubStringInString:@"zzfoobydoo spambarzz"], nil);
- STAssertFalse([regex matchesSubStringInString:@"abcdef"], nil);
- STAssertFalse([regex matchesSubStringInString:@""], nil);
+ XCTAssertNotNil(regex);
+ XCTAssertTrue([regex matchesSubStringInString:@"foobar"]);
+ XCTAssertTrue([regex matchesSubStringInString:@"foobydoo spambar"]);
+ XCTAssertTrue([regex matchesSubStringInString:@"zzfoobarzz"]);
+ XCTAssertTrue([regex matchesSubStringInString:@"zzfoobydoo spambarzz"]);
+ XCTAssertFalse([regex matchesSubStringInString:@"abcdef"]);
+ XCTAssertFalse([regex matchesSubStringInString:@""]);
}
- (void)testSegmentEnumeratorForString {
GTMRegex *regex = [GTMRegex regexWithPattern:@"foo+ba+r"];
- STAssertNotNil(regex, nil);
-
+ XCTAssertNotNil(regex);
+
// test odd input
NSEnumerator *enumerator = [regex segmentEnumeratorForString:@""];
- STAssertNotNil(enumerator, nil);
+ XCTAssertNotNil(enumerator);
enumerator = [regex segmentEnumeratorForString:nil];
- STAssertNil(enumerator, nil);
-
+ XCTAssertNil(enumerator);
+
// on w/ the normal tests
enumerator = [regex segmentEnumeratorForString:@"afoobarbfooobaarfoobarzz"];
- STAssertNotNil(enumerator, nil);
+ XCTAssertNotNil(enumerator);
// "a"
GTMRegexStringSegment *seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertFalse([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"a", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertFalse([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"a");
// "foobar"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertTrue([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"foobar", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertTrue([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"foobar");
// "b"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertFalse([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"b", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertFalse([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"b");
// "fooobaar"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertTrue([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"fooobaar", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertTrue([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"fooobaar");
// "foobar"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertTrue([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"foobar", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertTrue([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"foobar");
// "zz"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertFalse([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"zz", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertFalse([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"zz");
// (end)
seg = [enumerator nextObject];
- STAssertNil(seg, nil);
+ XCTAssertNil(seg);
// test no match
enumerator = [regex segmentEnumeratorForString:@"aaa"];
- STAssertNotNil(enumerator, nil);
+ XCTAssertNotNil(enumerator);
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertFalse([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"aaa", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertFalse([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"aaa");
seg = [enumerator nextObject];
- STAssertNil(seg, nil);
+ XCTAssertNil(seg);
// test only match
enumerator = [regex segmentEnumeratorForString:@"foobar"];
- STAssertNotNil(enumerator, nil);
+ XCTAssertNotNil(enumerator);
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertTrue([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"foobar", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertTrue([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"foobar");
seg = [enumerator nextObject];
- STAssertNil(seg, nil);
+ XCTAssertNil(seg);
// now test the saved sub segments
regex = [GTMRegex regexWithPattern:@"(foo)((bar)|(baz))"];
- STAssertNotNil(regex, nil);
- STAssertEquals((NSUInteger)4, [regex subPatternCount], nil);
+ XCTAssertNotNil(regex);
+ XCTAssertEqual((NSUInteger)4, [regex subPatternCount]);
enumerator = [regex segmentEnumeratorForString:@"foobarxxfoobaz"];
- STAssertNotNil(enumerator, nil);
+ XCTAssertNotNil(enumerator);
// "foobar"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertTrue([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"foobar", nil);
- STAssertEqualStrings([seg subPatternString:0], @"foobar", nil);
- STAssertEqualStrings([seg subPatternString:1], @"foo", nil);
- STAssertEqualStrings([seg subPatternString:2], @"bar", nil);
- STAssertEqualStrings([seg subPatternString:3], @"bar", nil);
- STAssertNil([seg subPatternString:4], nil); // nothing matched "(baz)"
- STAssertNil([seg subPatternString:5], nil);
+ XCTAssertNotNil(seg);
+ XCTAssertTrue([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"foobar");
+ XCTAssertEqualStrings([seg subPatternString:0], @"foobar");
+ XCTAssertEqualStrings([seg subPatternString:1], @"foo");
+ XCTAssertEqualStrings([seg subPatternString:2], @"bar");
+ XCTAssertEqualStrings([seg subPatternString:3], @"bar");
+ XCTAssertNil([seg subPatternString:4]); // nothing matched "(baz)"
+ XCTAssertNil([seg subPatternString:5]);
// "xx"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertFalse([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"xx", nil);
- STAssertEqualStrings([seg subPatternString:0], @"xx", nil);
- STAssertNil([seg subPatternString:1], nil);
+ XCTAssertNotNil(seg);
+ XCTAssertFalse([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"xx");
+ XCTAssertEqualStrings([seg subPatternString:0], @"xx");
+ XCTAssertNil([seg subPatternString:1]);
// "foobaz"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertTrue([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"foobaz", nil);
- STAssertEqualStrings([seg subPatternString:0], @"foobaz", nil);
- STAssertEqualStrings([seg subPatternString:1], @"foo", nil);
- STAssertEqualStrings([seg subPatternString:2], @"baz", nil);
- STAssertNil([seg subPatternString:3], nil); // (nothing matched "(bar)"
- STAssertEqualStrings([seg subPatternString:4], @"baz", nil);
- STAssertNil([seg subPatternString:5], nil);
+ XCTAssertNotNil(seg);
+ XCTAssertTrue([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"foobaz");
+ XCTAssertEqualStrings([seg subPatternString:0], @"foobaz");
+ XCTAssertEqualStrings([seg subPatternString:1], @"foo");
+ XCTAssertEqualStrings([seg subPatternString:2], @"baz");
+ XCTAssertNil([seg subPatternString:3]); // (nothing matched "(bar)"
+ XCTAssertEqualStrings([seg subPatternString:4], @"baz");
+ XCTAssertNil([seg subPatternString:5]);
// (end)
seg = [enumerator nextObject];
- STAssertNil(seg, nil);
+ XCTAssertNil(seg);
// test all objects
regex = [GTMRegex regexWithPattern:@"foo+ba+r"];
- STAssertNotNil(regex, nil);
+ XCTAssertNotNil(regex);
enumerator = [regex segmentEnumeratorForString:@"afoobarbfooobaarfoobarzz"];
- STAssertNotNil(enumerator, nil);
+ XCTAssertNotNil(enumerator);
NSArray *allSegments = [enumerator allObjects];
- STAssertNotNil(allSegments, nil);
- STAssertEquals((NSUInteger)6, [allSegments count], nil);
+ XCTAssertNotNil(allSegments);
+ XCTAssertEqual((NSUInteger)6, [allSegments count]);
// test we are getting the flags right for newline
regex = [GTMRegex regexWithPattern:@"^a"];
- STAssertNotNil(regex, nil);
+ XCTAssertNotNil(regex);
enumerator = [regex segmentEnumeratorForString:@"aa\naa"];
- STAssertNotNil(enumerator, nil);
+ XCTAssertNotNil(enumerator);
// "a"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertTrue([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"a", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertTrue([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"a");
// "a\n"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertFalse([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"a\n", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertFalse([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"a\n");
// "a"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertTrue([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"a", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertTrue([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"a");
// "a"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertFalse([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"a", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertFalse([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"a");
// (end)
seg = [enumerator nextObject];
- STAssertNil(seg, nil);
+ XCTAssertNil(seg);
// test we are getting the flags right for newline, part 2
regex = [GTMRegex regexWithPattern:@"^a*$"];
- STAssertNotNil(regex, nil);
+ XCTAssertNotNil(regex);
enumerator = [regex segmentEnumeratorForString:@"aa\naa\nbb\naa"];
- STAssertNotNil(enumerator, nil);
+ XCTAssertNotNil(enumerator);
// "aa"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertTrue([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"aa", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertTrue([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"aa");
// "\n"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertFalse([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"\n", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertFalse([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"\n");
// "aa"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertTrue([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"aa", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertTrue([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"aa");
// "\nbb\n"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertFalse([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"\nbb\n", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertFalse([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"\nbb\n");
// "aa"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertTrue([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"aa", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertTrue([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"aa");
// (end)
seg = [enumerator nextObject];
- STAssertNil(seg, nil);
+ XCTAssertNil(seg);
// make sure the enum cleans up if not walked to the end
regex = [GTMRegex regexWithPattern:@"b+"];
- STAssertNotNil(regex, nil);
+ XCTAssertNotNil(regex);
enumerator = [regex segmentEnumeratorForString:@"aabbcc"];
- STAssertNotNil(enumerator, nil);
+ XCTAssertNotNil(enumerator);
// "aa"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertFalse([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"aa", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertFalse([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"aa");
// and done w/o walking the rest
}
- (void)testMatchSegmentEnumeratorForString {
GTMRegex *regex = [GTMRegex regexWithPattern:@"foo+ba+r"];
- STAssertNotNil(regex, nil);
+ XCTAssertNotNil(regex);
// test odd input
NSEnumerator *enumerator = [regex matchSegmentEnumeratorForString:@""];
- STAssertNotNil(enumerator, nil);
+ XCTAssertNotNil(enumerator);
enumerator = [regex matchSegmentEnumeratorForString:nil];
- STAssertNil(enumerator, nil);
-
+ XCTAssertNil(enumerator);
+
// on w/ the normal tests
enumerator = [regex matchSegmentEnumeratorForString:@"afoobarbfooobaarfoobarzz"];
- STAssertNotNil(enumerator, nil);
+ XCTAssertNotNil(enumerator);
// "a" - skipped
// "foobar"
GTMRegexStringSegment *seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertTrue([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"foobar", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertTrue([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"foobar");
// "b" - skipped
// "fooobaar"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertTrue([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"fooobaar", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertTrue([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"fooobaar");
// "foobar"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertTrue([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"foobar", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertTrue([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"foobar");
// "zz" - skipped
// (end)
seg = [enumerator nextObject];
- STAssertNil(seg, nil);
+ XCTAssertNil(seg);
// test no match
enumerator = [regex matchSegmentEnumeratorForString:@"aaa"];
- STAssertNotNil(enumerator, nil);
+ XCTAssertNotNil(enumerator);
seg = [enumerator nextObject];
- STAssertNil(seg, nil); // should have gotten nothing
+ XCTAssertNil(seg); // should have gotten nothing
// test only match
enumerator = [regex matchSegmentEnumeratorForString:@"foobar"];
- STAssertNotNil(enumerator, nil);
+ XCTAssertNotNil(enumerator);
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertTrue([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"foobar", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertTrue([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"foobar");
seg = [enumerator nextObject];
- STAssertNil(seg, nil);
+ XCTAssertNil(seg);
// now test the saved sub segments
regex = [GTMRegex regexWithPattern:@"(foo)((bar)|(baz))"];
- STAssertNotNil(regex, nil);
- STAssertEquals((NSUInteger)4, [regex subPatternCount], nil);
+ XCTAssertNotNil(regex);
+ XCTAssertEqual((NSUInteger)4, [regex subPatternCount]);
enumerator = [regex matchSegmentEnumeratorForString:@"foobarxxfoobaz"];
- STAssertNotNil(enumerator, nil);
+ XCTAssertNotNil(enumerator);
// "foobar"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertTrue([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"foobar", nil);
- STAssertEqualStrings([seg subPatternString:0], @"foobar", nil);
- STAssertEqualStrings([seg subPatternString:1], @"foo", nil);
- STAssertEqualStrings([seg subPatternString:2], @"bar", nil);
- STAssertEqualStrings([seg subPatternString:3], @"bar", nil);
- STAssertNil([seg subPatternString:4], nil); // nothing matched "(baz)"
- STAssertNil([seg subPatternString:5], nil);
+ XCTAssertNotNil(seg);
+ XCTAssertTrue([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"foobar");
+ XCTAssertEqualStrings([seg subPatternString:0], @"foobar");
+ XCTAssertEqualStrings([seg subPatternString:1], @"foo");
+ XCTAssertEqualStrings([seg subPatternString:2], @"bar");
+ XCTAssertEqualStrings([seg subPatternString:3], @"bar");
+ XCTAssertNil([seg subPatternString:4]); // nothing matched "(baz)"
+ XCTAssertNil([seg subPatternString:5]);
// "xx" - skipped
// "foobaz"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertTrue([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"foobaz", nil);
- STAssertEqualStrings([seg subPatternString:0], @"foobaz", nil);
- STAssertEqualStrings([seg subPatternString:1], @"foo", nil);
- STAssertEqualStrings([seg subPatternString:2], @"baz", nil);
- STAssertNil([seg subPatternString:3], nil); // (nothing matched "(bar)"
- STAssertEqualStrings([seg subPatternString:4], @"baz", nil);
- STAssertNil([seg subPatternString:5], nil);
+ XCTAssertNotNil(seg);
+ XCTAssertTrue([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"foobaz");
+ XCTAssertEqualStrings([seg subPatternString:0], @"foobaz");
+ XCTAssertEqualStrings([seg subPatternString:1], @"foo");
+ XCTAssertEqualStrings([seg subPatternString:2], @"baz");
+ XCTAssertNil([seg subPatternString:3]); // (nothing matched "(bar)"
+ XCTAssertEqualStrings([seg subPatternString:4], @"baz");
+ XCTAssertNil([seg subPatternString:5]);
// (end)
seg = [enumerator nextObject];
- STAssertNil(seg, nil);
+ XCTAssertNil(seg);
// test all objects
regex = [GTMRegex regexWithPattern:@"foo+ba+r"];
- STAssertNotNil(regex, nil);
+ XCTAssertNotNil(regex);
enumerator = [regex matchSegmentEnumeratorForString:@"afoobarbfooobaarfoobarzz"];
- STAssertNotNil(enumerator, nil);
+ XCTAssertNotNil(enumerator);
NSArray *allSegments = [enumerator allObjects];
- STAssertNotNil(allSegments, nil);
- STAssertEquals((NSUInteger)3, [allSegments count], nil);
-
+ XCTAssertNotNil(allSegments);
+ XCTAssertEqual((NSUInteger)3, [allSegments count]);
+
// test we are getting the flags right for newline
regex = [GTMRegex regexWithPattern:@"^a"];
- STAssertNotNil(regex, nil);
+ XCTAssertNotNil(regex);
enumerator = [regex matchSegmentEnumeratorForString:@"aa\naa"];
- STAssertNotNil(enumerator, nil);
+ XCTAssertNotNil(enumerator);
// "a"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertTrue([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"a", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertTrue([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"a");
// "a\n" - skipped
// "a"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertTrue([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"a", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertTrue([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"a");
// "a" - skipped
// (end)
seg = [enumerator nextObject];
- STAssertNil(seg, nil);
+ XCTAssertNil(seg);
// test we are getting the flags right for newline, part 2
regex = [GTMRegex regexWithPattern:@"^a*$"];
- STAssertNotNil(regex, nil);
+ XCTAssertNotNil(regex);
enumerator = [regex matchSegmentEnumeratorForString:@"aa\naa\nbb\naa"];
- STAssertNotNil(enumerator, nil);
+ XCTAssertNotNil(enumerator);
// "aa"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertTrue([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"aa", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertTrue([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"aa");
// "\n" - skipped
// "aa"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertTrue([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"aa", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertTrue([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"aa");
// "\nbb\n" - skipped
// "aa"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertTrue([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"aa", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertTrue([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"aa");
// (end)
seg = [enumerator nextObject];
- STAssertNil(seg, nil);
+ XCTAssertNil(seg);
}
- (void)testStringByReplacingMatchesInStringWithReplacement {
GTMRegex *regex = [GTMRegex regexWithPattern:@"(foo)(.*)(bar)"];
- STAssertNotNil(regex, nil);
+ XCTAssertNotNil(regex);
// the basics
- STAssertEqualStrings(@"weeZbarZbydoo spamZfooZdoggies",
- [regex stringByReplacingMatchesInString:@"weefoobydoo spambardoggies"
- withReplacement:@"Z\\3Z\\2Z\\1Z"],
- nil);
+ XCTAssertEqualStrings(@"weeZbarZbydoo spamZfooZdoggies",
+ [regex stringByReplacingMatchesInString:@"weefoobydoo spambardoggies"
+ withReplacement:@"Z\\3Z\\2Z\\1Z"]);
// nil/empty replacement
- STAssertEqualStrings(@"weedoggies",
- [regex stringByReplacingMatchesInString:@"weefoobydoo spambardoggies"
- withReplacement:nil],
- nil);
- STAssertEqualStrings(@"weedoggies",
- [regex stringByReplacingMatchesInString:@"weefoobydoo spambardoggies"
- withReplacement:@""],
- nil);
- STAssertEqualStrings(@"",
- [regex stringByReplacingMatchesInString:@""
- withReplacement:@"abc"],
- nil);
- STAssertNil([regex stringByReplacingMatchesInString:nil
- withReplacement:@"abc"],
- nil);
+ XCTAssertEqualStrings(@"weedoggies",
+ [regex stringByReplacingMatchesInString:@"weefoobydoo spambardoggies"
+ withReplacement:nil]);
+ XCTAssertEqualStrings(@"weedoggies",
+ [regex stringByReplacingMatchesInString:@"weefoobydoo spambardoggies"
+ withReplacement:@""]);
+ XCTAssertEqualStrings(@"",
+ [regex stringByReplacingMatchesInString:@""
+ withReplacement:@"abc"]);
+ XCTAssertNil([regex stringByReplacingMatchesInString:nil
+ withReplacement:@"abc"]);
// use optional and invale subexpression parts to confirm that works
regex = [GTMRegex regexWithPattern:@"(fo(o+))((bar)|(baz))"];
- STAssertNotNil(regex, nil);
- STAssertEqualStrings(@"aaa baz bar bar foo baz aaa",
- [regex stringByReplacingMatchesInString:@"aaa foooooobaz fooobar bar foo baz aaa"
- withReplacement:@"\\4\\5"],
- nil);
- STAssertEqualStrings(@"aaa ZZZ ZZZ bar foo baz aaa",
- [regex stringByReplacingMatchesInString:@"aaa foooooobaz fooobar bar foo baz aaa"
- withReplacement:@"Z\\10Z\\12Z"],
- nil);
+ XCTAssertNotNil(regex);
+ XCTAssertEqualStrings(@"aaa baz bar bar foo baz aaa",
+ [regex stringByReplacingMatchesInString:@"aaa foooooobaz fooobar bar foo baz aaa"
+ withReplacement:@"\\4\\5"]);
+ XCTAssertEqualStrings(@"aaa ZZZ ZZZ bar foo baz aaa",
+ [regex stringByReplacingMatchesInString:@"aaa foooooobaz fooobar bar foo baz aaa"
+ withReplacement:@"Z\\10Z\\12Z"]);
// test slashes in replacement that aren't part of the subpattern reference
regex = [GTMRegex regexWithPattern:@"a+"];
- STAssertNotNil(regex, nil);
- STAssertEqualStrings(@"z\\\\0 \\\\a \\\\\\\\0z",
- [regex stringByReplacingMatchesInString:@"zaz"
- withReplacement:@"\\\\0 \\\\\\0 \\\\\\\\0"],
- nil);
- STAssertEqualStrings(@"z\\\\a \\\\\\\\0 \\\\\\\\az",
- [regex stringByReplacingMatchesInString:@"zaz"
- withReplacement:@"\\\\\\0 \\\\\\\\0 \\\\\\\\\\0"],
- nil);
- STAssertEqualStrings(@"z\\\\\\\\0 \\\\\\\\a \\\\\\\\\\\\0z",
- [regex stringByReplacingMatchesInString:@"zaz"
- withReplacement:@"\\\\\\\\0 \\\\\\\\\\0 \\\\\\\\\\\\0"],
- nil);
+ XCTAssertNotNil(regex);
+ XCTAssertEqualStrings(@"z\\\\0 \\\\a \\\\\\\\0z",
+ [regex stringByReplacingMatchesInString:@"zaz"
+ withReplacement:@"\\\\0 \\\\\\0 \\\\\\\\0"]);
+ XCTAssertEqualStrings(@"z\\\\a \\\\\\\\0 \\\\\\\\az",
+ [regex stringByReplacingMatchesInString:@"zaz"
+ withReplacement:@"\\\\\\0 \\\\\\\\0 \\\\\\\\\\0"]);
+ XCTAssertEqualStrings(@"z\\\\\\\\0 \\\\\\\\a \\\\\\\\\\\\0z",
+ [regex stringByReplacingMatchesInString:@"zaz"
+ withReplacement:@"\\\\\\\\0 \\\\\\\\\\0 \\\\\\\\\\\\0"]);
}
- (void)testDescriptions {
// default options
GTMRegex *regex = [GTMRegex regexWithPattern:@"a+"];
- STAssertNotNil(regex, nil);
- STAssertGreaterThan([[regex description] length], (NSUInteger)10,
- @"failed to get a reasonable description for regex");
+ XCTAssertNotNil(regex);
+ XCTAssertGreaterThan([[regex description] length], (NSUInteger)10,
+ @"failed to get a reasonable description for regex");
// enumerator
NSEnumerator *enumerator = [regex segmentEnumeratorForString:@"aaabbbccc"];
- STAssertNotNil(enumerator, nil);
- STAssertGreaterThan([[enumerator description] length], (NSUInteger)10,
- @"failed to get a reasonable description for regex enumerator");
+ XCTAssertNotNil(enumerator);
+ XCTAssertGreaterThan([[enumerator description] length], (NSUInteger)10,
+ @"failed to get a reasonable description for regex enumerator");
// string segment
GTMRegexStringSegment *seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertGreaterThan([[seg description] length], (NSUInteger)10,
- @"failed to get a reasonable description for regex string segment");
+ XCTAssertNotNil(seg);
+ XCTAssertGreaterThan([[seg description] length], (NSUInteger)10,
+ @"failed to get a reasonable description for regex string segment");
// regex w/ other options
regex = [GTMRegex regexWithPattern:@"a+"
options:(kGTMRegexOptionIgnoreCase | kGTMRegexOptionSupressNewlineSupport)];
- STAssertNotNil(regex, nil);
- STAssertGreaterThan([[regex description] length], (NSUInteger)10,
- @"failed to get a reasonable description for regex w/ options");
+ XCTAssertNotNil(regex);
+ XCTAssertGreaterThan([[regex description] length], (NSUInteger)10,
+ @"failed to get a reasonable description for regex w/ options");
}
@end
@@ -913,333 +897,324 @@
- (void)testMatchesPattern {
// simple pattern
- STAssertTrue([@"foobar" gtm_matchesPattern:@"foo.*bar"], nil);
- STAssertTrue([@"foobydoo spambar" gtm_matchesPattern:@"foo.*bar"], nil);
- STAssertFalse([@"zzfoobarzz" gtm_matchesPattern:@"foo.*bar"], nil);
- STAssertFalse([@"zzfoobydoo spambarzz" gtm_matchesPattern:@"foo.*bar"], nil);
- STAssertFalse([@"abcdef" gtm_matchesPattern:@"foo.*bar"], nil);
- STAssertFalse([@"" gtm_matchesPattern:@"foo.*bar"], nil);
+ XCTAssertTrue([@"foobar" gtm_matchesPattern:@"foo.*bar"]);
+ XCTAssertTrue([@"foobydoo spambar" gtm_matchesPattern:@"foo.*bar"]);
+ XCTAssertFalse([@"zzfoobarzz" gtm_matchesPattern:@"foo.*bar"]);
+ XCTAssertFalse([@"zzfoobydoo spambarzz" gtm_matchesPattern:@"foo.*bar"]);
+ XCTAssertFalse([@"abcdef" gtm_matchesPattern:@"foo.*bar"]);
+ XCTAssertFalse([@"" gtm_matchesPattern:@"foo.*bar"]);
// pattern w/ sub patterns
- STAssertTrue([@"foobar" gtm_matchesPattern:@"(foo)(.*)(bar)"], nil);
- STAssertTrue([@"foobydoo spambar" gtm_matchesPattern:@"(foo)(.*)(bar)"], nil);
- STAssertFalse([@"zzfoobarzz" gtm_matchesPattern:@"(foo)(.*)(bar)"], nil);
- STAssertFalse([@"zzfoobydoo spambarzz" gtm_matchesPattern:@"(foo)(.*)(bar)"], nil);
- STAssertFalse([@"abcdef" gtm_matchesPattern:@"(foo)(.*)(bar)"], nil);
- STAssertFalse([@"" gtm_matchesPattern:@"(foo)(.*)(bar)"], nil);
+ XCTAssertTrue([@"foobar" gtm_matchesPattern:@"(foo)(.*)(bar)"]);
+ XCTAssertTrue([@"foobydoo spambar" gtm_matchesPattern:@"(foo)(.*)(bar)"]);
+ XCTAssertFalse([@"zzfoobarzz" gtm_matchesPattern:@"(foo)(.*)(bar)"]);
+ XCTAssertFalse([@"zzfoobydoo spambarzz" gtm_matchesPattern:@"(foo)(.*)(bar)"]);
+ XCTAssertFalse([@"abcdef" gtm_matchesPattern:@"(foo)(.*)(bar)"]);
+ XCTAssertFalse([@"" gtm_matchesPattern:@"(foo)(.*)(bar)"]);
}
- (void)testSubPatternsOfPattern {
NSArray *subPatterns = [@"foooooobaz" gtm_subPatternsOfPattern:@"(fo(o+))((bar)|(baz))"];
- STAssertNotNil(subPatterns, nil);
- STAssertEquals((NSUInteger)6, [subPatterns count], nil);
- STAssertEqualStrings(@"foooooobaz", [subPatterns objectAtIndex:0], nil);
- STAssertEqualStrings(@"foooooo", [subPatterns objectAtIndex:1], nil);
- STAssertEqualStrings(@"ooooo", [subPatterns objectAtIndex:2], nil);
- STAssertEqualStrings(@"baz", [subPatterns objectAtIndex:3], nil);
- STAssertEqualObjects([NSNull null], [subPatterns objectAtIndex:4], nil);
- STAssertEqualStrings(@"baz", [subPatterns objectAtIndex:5], nil);
+ XCTAssertNotNil(subPatterns);
+ XCTAssertEqual((NSUInteger)6, [subPatterns count]);
+ XCTAssertEqualStrings(@"foooooobaz", [subPatterns objectAtIndex:0]);
+ XCTAssertEqualStrings(@"foooooo", [subPatterns objectAtIndex:1]);
+ XCTAssertEqualStrings(@"ooooo", [subPatterns objectAtIndex:2]);
+ XCTAssertEqualStrings(@"baz", [subPatterns objectAtIndex:3]);
+ XCTAssertEqualObjects([NSNull null], [subPatterns objectAtIndex:4]);
+ XCTAssertEqualStrings(@"baz", [subPatterns objectAtIndex:5]);
// not there
subPatterns = [@"aaa" gtm_subPatternsOfPattern:@"(fo(o+))((bar)|(baz))"];
- STAssertNil(subPatterns, nil);
+ XCTAssertNil(subPatterns);
// not extra stuff on either end
subPatterns = [@"ZZZfoooooobaz" gtm_subPatternsOfPattern:@"(fo(o+))((bar)|(baz))"];
- STAssertNil(subPatterns, nil);
+ XCTAssertNil(subPatterns);
subPatterns = [@"foooooobazZZZ" gtm_subPatternsOfPattern:@"(fo(o+))((bar)|(baz))"];
- STAssertNil(subPatterns, nil);
+ XCTAssertNil(subPatterns);
subPatterns = [@"ZZZfoooooobazZZZ" gtm_subPatternsOfPattern:@"(fo(o+))((bar)|(baz))"];
- STAssertNil(subPatterns, nil);
+ XCTAssertNil(subPatterns);
}
- (void)testFirstSubStringMatchedByPattern {
// simple pattern
- STAssertEqualStrings([@"foobar" gtm_firstSubStringMatchedByPattern:@"foo.*bar"],
- @"foobar", nil);
- STAssertEqualStrings([@"foobydoo spambar" gtm_firstSubStringMatchedByPattern:@"foo.*bar"],
- @"foobydoo spambar", nil);
- STAssertEqualStrings([@"zzfoobarzz" gtm_firstSubStringMatchedByPattern:@"foo.*bar"],
- @"foobar", nil);
- STAssertEqualStrings([@"zzfoobydoo spambarzz" gtm_firstSubStringMatchedByPattern:@"foo.*bar"],
- @"foobydoo spambar", nil);
- STAssertNil([@"abcdef" gtm_firstSubStringMatchedByPattern:@"foo.*bar"], nil);
- STAssertNil([@"" gtm_firstSubStringMatchedByPattern:@"foo.*bar"], nil);
+ XCTAssertEqualStrings([@"foobar" gtm_firstSubStringMatchedByPattern:@"foo.*bar"],
+ @"foobar");
+ XCTAssertEqualStrings([@"foobydoo spambar" gtm_firstSubStringMatchedByPattern:@"foo.*bar"],
+ @"foobydoo spambar");
+ XCTAssertEqualStrings([@"zzfoobarzz" gtm_firstSubStringMatchedByPattern:@"foo.*bar"],
+ @"foobar");
+ XCTAssertEqualStrings([@"zzfoobydoo spambarzz" gtm_firstSubStringMatchedByPattern:@"foo.*bar"],
+ @"foobydoo spambar");
+ XCTAssertNil([@"abcdef" gtm_firstSubStringMatchedByPattern:@"foo.*bar"]);
+ XCTAssertNil([@"" gtm_firstSubStringMatchedByPattern:@"foo.*bar"]);
// pattern w/ sub patterns
- STAssertEqualStrings([@"foobar" gtm_firstSubStringMatchedByPattern:@"(foo)(.*)(bar)"],
- @"foobar", nil);
- STAssertEqualStrings([@"foobydoo spambar" gtm_firstSubStringMatchedByPattern:@"(foo)(.*)(bar)"],
- @"foobydoo spambar", nil);
- STAssertEqualStrings([@"zzfoobarzz" gtm_firstSubStringMatchedByPattern:@"(foo)(.*)(bar)"],
- @"foobar", nil);
- STAssertEqualStrings([@"zzfoobydoo spambarzz" gtm_firstSubStringMatchedByPattern:@"(foo)(.*)(bar)"],
- @"foobydoo spambar", nil);
- STAssertNil([@"abcdef" gtm_firstSubStringMatchedByPattern:@"(foo)(.*)(bar)"], nil);
- STAssertNil([@"" gtm_firstSubStringMatchedByPattern:@"(foo)(.*)(bar)"], nil);
+ XCTAssertEqualStrings([@"foobar" gtm_firstSubStringMatchedByPattern:@"(foo)(.*)(bar)"],
+ @"foobar");
+ XCTAssertEqualStrings([@"foobydoo spambar" gtm_firstSubStringMatchedByPattern:@"(foo)(.*)(bar)"],
+ @"foobydoo spambar");
+ XCTAssertEqualStrings([@"zzfoobarzz" gtm_firstSubStringMatchedByPattern:@"(foo)(.*)(bar)"],
+ @"foobar");
+ XCTAssertEqualStrings([@"zzfoobydoo spambarzz" gtm_firstSubStringMatchedByPattern:@"(foo)(.*)(bar)"],
+ @"foobydoo spambar");
+ XCTAssertNil([@"abcdef" gtm_firstSubStringMatchedByPattern:@"(foo)(.*)(bar)"]);
+ XCTAssertNil([@"" gtm_firstSubStringMatchedByPattern:@"(foo)(.*)(bar)"]);
}
- (void)testSubStringMatchesPattern {
// simple pattern
- STAssertTrue([@"foobar" gtm_subStringMatchesPattern:@"foo.*bar"], nil);
- STAssertTrue([@"foobydoo spambar" gtm_subStringMatchesPattern:@"foo.*bar"], nil);
- STAssertTrue([@"zzfoobarzz" gtm_subStringMatchesPattern:@"foo.*bar"], nil);
- STAssertTrue([@"zzfoobydoo spambarzz" gtm_subStringMatchesPattern:@"foo.*bar"], nil);
- STAssertFalse([@"abcdef" gtm_subStringMatchesPattern:@"foo.*bar"], nil);
- STAssertFalse([@"" gtm_subStringMatchesPattern:@"foo.*bar"], nil);
+ XCTAssertTrue([@"foobar" gtm_subStringMatchesPattern:@"foo.*bar"]);
+ XCTAssertTrue([@"foobydoo spambar" gtm_subStringMatchesPattern:@"foo.*bar"]);
+ XCTAssertTrue([@"zzfoobarzz" gtm_subStringMatchesPattern:@"foo.*bar"]);
+ XCTAssertTrue([@"zzfoobydoo spambarzz" gtm_subStringMatchesPattern:@"foo.*bar"]);
+ XCTAssertFalse([@"abcdef" gtm_subStringMatchesPattern:@"foo.*bar"]);
+ XCTAssertFalse([@"" gtm_subStringMatchesPattern:@"foo.*bar"]);
// pattern w/ sub patterns
- STAssertTrue([@"foobar" gtm_subStringMatchesPattern:@"(foo)(.*)(bar)"], nil);
- STAssertTrue([@"foobydoo spambar" gtm_subStringMatchesPattern:@"(foo)(.*)(bar)"], nil);
- STAssertTrue([@"zzfoobarzz" gtm_subStringMatchesPattern:@"(foo)(.*)(bar)"], nil);
- STAssertTrue([@"zzfoobydoo spambarzz" gtm_subStringMatchesPattern:@"(foo)(.*)(bar)"], nil);
- STAssertFalse([@"abcdef" gtm_subStringMatchesPattern:@"(foo)(.*)(bar)"], nil);
- STAssertFalse([@"" gtm_subStringMatchesPattern:@"(foo)(.*)(bar)"], nil);
+ XCTAssertTrue([@"foobar" gtm_subStringMatchesPattern:@"(foo)(.*)(bar)"]);
+ XCTAssertTrue([@"foobydoo spambar" gtm_subStringMatchesPattern:@"(foo)(.*)(bar)"]);
+ XCTAssertTrue([@"zzfoobarzz" gtm_subStringMatchesPattern:@"(foo)(.*)(bar)"]);
+ XCTAssertTrue([@"zzfoobydoo spambarzz" gtm_subStringMatchesPattern:@"(foo)(.*)(bar)"]);
+ XCTAssertFalse([@"abcdef" gtm_subStringMatchesPattern:@"(foo)(.*)(bar)"]);
+ XCTAssertFalse([@"" gtm_subStringMatchesPattern:@"(foo)(.*)(bar)"]);
}
- (void)testSegmentEnumeratorForPattern {
NSEnumerator *enumerator =
[@"afoobarbfooobaarfoobarzz" gtm_segmentEnumeratorForPattern:@"foo+ba+r"];
- STAssertNotNil(enumerator, nil);
+ XCTAssertNotNil(enumerator);
// "a"
GTMRegexStringSegment *seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertFalse([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"a", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertFalse([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"a");
// "foobar"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertTrue([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"foobar", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertTrue([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"foobar");
// "b"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertFalse([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"b", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertFalse([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"b");
// "fooobaar"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertTrue([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"fooobaar", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertTrue([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"fooobaar");
// "foobar"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertTrue([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"foobar", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertTrue([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"foobar");
// "zz"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertFalse([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"zz", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertFalse([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"zz");
// (end)
seg = [enumerator nextObject];
- STAssertNil(seg, nil);
+ XCTAssertNil(seg);
// test no match
enumerator = [@"aaa" gtm_segmentEnumeratorForPattern:@"foo+ba+r"];
- STAssertNotNil(enumerator, nil);
+ XCTAssertNotNil(enumerator);
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertFalse([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"aaa", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertFalse([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"aaa");
seg = [enumerator nextObject];
- STAssertNil(seg, nil);
+ XCTAssertNil(seg);
// test only match
enumerator = [@"foobar" gtm_segmentEnumeratorForPattern:@"foo+ba+r"];
- STAssertNotNil(enumerator, nil);
+ XCTAssertNotNil(enumerator);
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertTrue([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"foobar", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertTrue([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"foobar");
seg = [enumerator nextObject];
- STAssertNil(seg, nil);
+ XCTAssertNil(seg);
// now test the saved sub segments
enumerator =
[@"foobarxxfoobaz" gtm_segmentEnumeratorForPattern:@"(foo)((bar)|(baz))"];
- STAssertNotNil(enumerator, nil);
+ XCTAssertNotNil(enumerator);
// "foobar"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertTrue([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"foobar", nil);
- STAssertEqualStrings([seg subPatternString:0], @"foobar", nil);
- STAssertEqualStrings([seg subPatternString:1], @"foo", nil);
- STAssertEqualStrings([seg subPatternString:2], @"bar", nil);
- STAssertEqualStrings([seg subPatternString:3], @"bar", nil);
- STAssertNil([seg subPatternString:4], nil); // nothing matched "(baz)"
- STAssertNil([seg subPatternString:5], nil);
+ XCTAssertNotNil(seg);
+ XCTAssertTrue([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"foobar");
+ XCTAssertEqualStrings([seg subPatternString:0], @"foobar");
+ XCTAssertEqualStrings([seg subPatternString:1], @"foo");
+ XCTAssertEqualStrings([seg subPatternString:2], @"bar");
+ XCTAssertEqualStrings([seg subPatternString:3], @"bar");
+ XCTAssertNil([seg subPatternString:4]); // nothing matched "(baz)"
+ XCTAssertNil([seg subPatternString:5]);
// "xx"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertFalse([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"xx", nil);
- STAssertEqualStrings([seg subPatternString:0], @"xx", nil);
- STAssertNil([seg subPatternString:1], nil);
+ XCTAssertNotNil(seg);
+ XCTAssertFalse([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"xx");
+ XCTAssertEqualStrings([seg subPatternString:0], @"xx");
+ XCTAssertNil([seg subPatternString:1]);
// "foobaz"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertTrue([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"foobaz", nil);
- STAssertEqualStrings([seg subPatternString:0], @"foobaz", nil);
- STAssertEqualStrings([seg subPatternString:1], @"foo", nil);
- STAssertEqualStrings([seg subPatternString:2], @"baz", nil);
- STAssertNil([seg subPatternString:3], nil); // (nothing matched "(bar)"
- STAssertEqualStrings([seg subPatternString:4], @"baz", nil);
- STAssertNil([seg subPatternString:5], nil);
+ XCTAssertNotNil(seg);
+ XCTAssertTrue([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"foobaz");
+ XCTAssertEqualStrings([seg subPatternString:0], @"foobaz");
+ XCTAssertEqualStrings([seg subPatternString:1], @"foo");
+ XCTAssertEqualStrings([seg subPatternString:2], @"baz");
+ XCTAssertNil([seg subPatternString:3]); // (nothing matched "(bar)"
+ XCTAssertEqualStrings([seg subPatternString:4], @"baz");
+ XCTAssertNil([seg subPatternString:5]);
// (end)
seg = [enumerator nextObject];
- STAssertNil(seg, nil);
+ XCTAssertNil(seg);
// test all objects
enumerator = [@"afoobarbfooobaarfoobarzz" gtm_segmentEnumeratorForPattern:@"foo+ba+r"];
- STAssertNotNil(enumerator, nil);
+ XCTAssertNotNil(enumerator);
NSArray *allSegments = [enumerator allObjects];
- STAssertNotNil(allSegments, nil);
- STAssertEquals((NSUInteger)6, [allSegments count], nil);
+ XCTAssertNotNil(allSegments);
+ XCTAssertEqual((NSUInteger)6, [allSegments count]);
}
- (void)testMatchSegmentEnumeratorForPattern {
NSEnumerator *enumerator =
[@"afoobarbfooobaarfoobarzz" gtm_matchSegmentEnumeratorForPattern:@"foo+ba+r"];
- STAssertNotNil(enumerator, nil);
+ XCTAssertNotNil(enumerator);
// "a" - skipped
// "foobar"
GTMRegexStringSegment *seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertTrue([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"foobar", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertTrue([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"foobar");
// "b" - skipped
// "fooobaar"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertTrue([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"fooobaar", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertTrue([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"fooobaar");
// "foobar"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertTrue([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"foobar", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertTrue([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"foobar");
// "zz" - skipped
// (end)
seg = [enumerator nextObject];
- STAssertNil(seg, nil);
+ XCTAssertNil(seg);
// test no match
enumerator = [@"aaa" gtm_matchSegmentEnumeratorForPattern:@"foo+ba+r"];
- STAssertNotNil(enumerator, nil);
+ XCTAssertNotNil(enumerator);
seg = [enumerator nextObject];
- STAssertNil(seg, nil);
+ XCTAssertNil(seg);
// test only match
enumerator = [@"foobar" gtm_matchSegmentEnumeratorForPattern:@"foo+ba+r"];
- STAssertNotNil(enumerator, nil);
+ XCTAssertNotNil(enumerator);
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertTrue([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"foobar", nil);
+ XCTAssertNotNil(seg);
+ XCTAssertTrue([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"foobar");
seg = [enumerator nextObject];
- STAssertNil(seg, nil);
+ XCTAssertNil(seg);
// now test the saved sub segments
enumerator =
[@"foobarxxfoobaz" gtm_matchSegmentEnumeratorForPattern:@"(foo)((bar)|(baz))"];
- STAssertNotNil(enumerator, nil);
+ XCTAssertNotNil(enumerator);
// "foobar"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertTrue([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"foobar", nil);
- STAssertEqualStrings([seg subPatternString:0], @"foobar", nil);
- STAssertEqualStrings([seg subPatternString:1], @"foo", nil);
- STAssertEqualStrings([seg subPatternString:2], @"bar", nil);
- STAssertEqualStrings([seg subPatternString:3], @"bar", nil);
- STAssertNil([seg subPatternString:4], nil); // nothing matched "(baz)"
- STAssertNil([seg subPatternString:5], nil);
+ XCTAssertNotNil(seg);
+ XCTAssertTrue([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"foobar");
+ XCTAssertEqualStrings([seg subPatternString:0], @"foobar");
+ XCTAssertEqualStrings([seg subPatternString:1], @"foo");
+ XCTAssertEqualStrings([seg subPatternString:2], @"bar");
+ XCTAssertEqualStrings([seg subPatternString:3], @"bar");
+ XCTAssertNil([seg subPatternString:4]); // nothing matched "(baz)"
+ XCTAssertNil([seg subPatternString:5]);
// "xx" - skipped
// "foobaz"
seg = [enumerator nextObject];
- STAssertNotNil(seg, nil);
- STAssertTrue([seg isMatch], nil);
- STAssertEqualStrings([seg string], @"foobaz", nil);
- STAssertEqualStrings([seg subPatternString:0], @"foobaz", nil);
- STAssertEqualStrings([seg subPatternString:1], @"foo", nil);
- STAssertEqualStrings([seg subPatternString:2], @"baz", nil);
- STAssertNil([seg subPatternString:3], nil); // (nothing matched "(bar)"
- STAssertEqualStrings([seg subPatternString:4], @"baz", nil);
- STAssertNil([seg subPatternString:5], nil);
+ XCTAssertNotNil(seg);
+ XCTAssertTrue([seg isMatch]);
+ XCTAssertEqualStrings([seg string], @"foobaz");
+ XCTAssertEqualStrings([seg subPatternString:0], @"foobaz");
+ XCTAssertEqualStrings([seg subPatternString:1], @"foo");
+ XCTAssertEqualStrings([seg subPatternString:2], @"baz");
+ XCTAssertNil([seg subPatternString:3]); // (nothing matched "(bar)"
+ XCTAssertEqualStrings([seg subPatternString:4], @"baz");
+ XCTAssertNil([seg subPatternString:5]);
// (end)
seg = [enumerator nextObject];
- STAssertNil(seg, nil);
+ XCTAssertNil(seg);
// test all objects
enumerator = [@"afoobarbfooobaarfoobarzz" gtm_matchSegmentEnumeratorForPattern:@"foo+ba+r"];
- STAssertNotNil(enumerator, nil);
+ XCTAssertNotNil(enumerator);
NSArray *allSegments = [enumerator allObjects];
- STAssertNotNil(allSegments, nil);
- STAssertEquals((NSUInteger)3, [allSegments count], nil);
+ XCTAssertNotNil(allSegments);
+ XCTAssertEqual((NSUInteger)3, [allSegments count]);
}
- (void)testAllSubstringsMatchedByPattern {
NSArray *segments =
[@"afoobarbfooobaarfoobarzz" gtm_allSubstringsMatchedByPattern:@"foo+ba+r"];
- STAssertNotNil(segments, nil);
- STAssertEquals((NSUInteger)3, [segments count], nil);
- STAssertEqualStrings([segments objectAtIndex:0], @"foobar", nil);
- STAssertEqualStrings([segments objectAtIndex:1], @"fooobaar", nil);
- STAssertEqualStrings([segments objectAtIndex:2], @"foobar", nil);
+ XCTAssertNotNil(segments);
+ XCTAssertEqual((NSUInteger)3, [segments count]);
+ XCTAssertEqualStrings([segments objectAtIndex:0], @"foobar");
+ XCTAssertEqualStrings([segments objectAtIndex:1], @"fooobaar");
+ XCTAssertEqualStrings([segments objectAtIndex:2], @"foobar");
// test no match
segments = [@"aaa" gtm_allSubstringsMatchedByPattern:@"foo+ba+r"];
- STAssertNotNil(segments, nil);
- STAssertEquals((NSUInteger)0, [segments count], nil);
+ XCTAssertNotNil(segments);
+ XCTAssertEqual((NSUInteger)0, [segments count]);
// test only match
segments = [@"foobar" gtm_allSubstringsMatchedByPattern:@"foo+ba+r"];
- STAssertNotNil(segments, nil);
- STAssertEquals((NSUInteger)1, [segments count], nil);
- STAssertEqualStrings([segments objectAtIndex:0], @"foobar", nil);
+ XCTAssertNotNil(segments);
+ XCTAssertEqual((NSUInteger)1, [segments count]);
+ XCTAssertEqualStrings([segments objectAtIndex:0], @"foobar");
}
- (void)testStringByReplacingMatchesOfPatternWithReplacement {
// the basics
- STAssertEqualStrings(@"weeZbarZbydoo spamZfooZdoggies",
- [@"weefoobydoo spambardoggies" gtm_stringByReplacingMatchesOfPattern:@"(foo)(.*)(bar)"
- withReplacement:@"Z\\3Z\\2Z\\1Z"],
- nil);
+ XCTAssertEqualStrings(@"weeZbarZbydoo spamZfooZdoggies",
+ [@"weefoobydoo spambardoggies" gtm_stringByReplacingMatchesOfPattern:@"(foo)(.*)(bar)"
+ withReplacement:@"Z\\3Z\\2Z\\1Z"]);
// nil/empty replacement
- STAssertEqualStrings(@"weedoggies",
- [@"weefoobydoo spambardoggies" gtm_stringByReplacingMatchesOfPattern:@"(foo)(.*)(bar)"
- withReplacement:nil],
- nil);
- STAssertEqualStrings(@"weedoggies",
- [@"weefoobydoo spambardoggies" gtm_stringByReplacingMatchesOfPattern:@"(foo)(.*)(bar)"
- withReplacement:@""],
- nil);
- STAssertEqualStrings(@"",
- [@"" gtm_stringByReplacingMatchesOfPattern:@"(foo)(.*)(bar)"
- withReplacement:@"abc"],
- nil);
+ XCTAssertEqualStrings(@"weedoggies",
+ [@"weefoobydoo spambardoggies" gtm_stringByReplacingMatchesOfPattern:@"(foo)(.*)(bar)"
+ withReplacement:nil]);
+ XCTAssertEqualStrings(@"weedoggies",
+ [@"weefoobydoo spambardoggies" gtm_stringByReplacingMatchesOfPattern:@"(foo)(.*)(bar)"
+ withReplacement:@""]);
+ XCTAssertEqualStrings(@"",
+ [@"" gtm_stringByReplacingMatchesOfPattern:@"(foo)(.*)(bar)"
+ withReplacement:@"abc"]);
// use optional and invale subexpression parts to confirm that works
- STAssertEqualStrings(@"aaa baz bar bar foo baz aaa",
- [@"aaa foooooobaz fooobar bar foo baz aaa" gtm_stringByReplacingMatchesOfPattern:@"(fo(o+))((bar)|(baz))"
- withReplacement:@"\\4\\5"],
- nil);
- STAssertEqualStrings(@"aaa ZZZ ZZZ bar foo baz aaa",
- [@"aaa foooooobaz fooobar bar foo baz aaa" gtm_stringByReplacingMatchesOfPattern:@"(fo(o+))((bar)|(baz))"
- withReplacement:@"Z\\10Z\\12Z"],
- nil);
+ XCTAssertEqualStrings(@"aaa baz bar bar foo baz aaa",
+ [@"aaa foooooobaz fooobar bar foo baz aaa" gtm_stringByReplacingMatchesOfPattern:@"(fo(o+))((bar)|(baz))"
+ withReplacement:@"\\4\\5"]);
+ XCTAssertEqualStrings(@"aaa ZZZ ZZZ bar foo baz aaa",
+ [@"aaa foooooobaz fooobar bar foo baz aaa" gtm_stringByReplacingMatchesOfPattern:@"(fo(o+))((bar)|(baz))"
+ withReplacement:@"Z\\10Z\\12Z"]);
// test slashes in replacement that aren't part of the subpattern reference
- STAssertEqualStrings(@"z\\\\0 \\\\a \\\\\\\\0z",
- [@"zaz" gtm_stringByReplacingMatchesOfPattern:@"a+"
- withReplacement:@"\\\\0 \\\\\\0 \\\\\\\\0"],
- nil);
- STAssertEqualStrings(@"z\\\\a \\\\\\\\0 \\\\\\\\az",
- [@"zaz" gtm_stringByReplacingMatchesOfPattern:@"a+"
- withReplacement:@"\\\\\\0 \\\\\\\\0 \\\\\\\\\\0"],
- nil);
- STAssertEqualStrings(@"z\\\\\\\\0 \\\\\\\\a \\\\\\\\\\\\0z",
- [@"zaz" gtm_stringByReplacingMatchesOfPattern:@"a+"
- withReplacement:@"\\\\\\\\0 \\\\\\\\\\0 \\\\\\\\\\\\0"],
- nil);
+ XCTAssertEqualStrings(@"z\\\\0 \\\\a \\\\\\\\0z",
+ [@"zaz" gtm_stringByReplacingMatchesOfPattern:@"a+"
+ withReplacement:@"\\\\0 \\\\\\0 \\\\\\\\0"]);
+ XCTAssertEqualStrings(@"z\\\\a \\\\\\\\0 \\\\\\\\az",
+ [@"zaz" gtm_stringByReplacingMatchesOfPattern:@"a+"
+ withReplacement:@"\\\\\\0 \\\\\\\\0 \\\\\\\\\\0"]);
+ XCTAssertEqualStrings(@"z\\\\\\\\0 \\\\\\\\a \\\\\\\\\\\\0z",
+ [@"zaz" gtm_stringByReplacingMatchesOfPattern:@"a+"
+ withReplacement:@"\\\\\\\\0 \\\\\\\\\\0 \\\\\\\\\\\\0"]);
}
@end
diff --git a/Foundation/GTMSQLite.h b/Foundation/GTMSQLite.h
index 0697d5a..0daa02c 100644
--- a/Foundation/GTMSQLite.h
+++ b/Foundation/GTMSQLite.h
@@ -92,12 +92,6 @@
// or ranges between single UniChars.
//
-// SQLite is preinstalled on 10.4 only. As long as we're using the OS version
-// of the library, limit ourself to Tiger+
-#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_4
-#error SQLite support is Tiger or later
-#endif
-
#import <Foundation/Foundation.h>
#import <sqlite3.h>
diff --git a/Foundation/GTMSQLite.m b/Foundation/GTMSQLite.m
index 502a5cc..aa5d5f5 100644
--- a/Foundation/GTMSQLite.m
+++ b/Foundation/GTMSQLite.m
@@ -20,9 +20,6 @@
#import <Foundation/Foundation.h>
-#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4
-#import <dlfcn.h>
-#endif
#import "GTMSQLite.h"
#import "GTMMethodCheck.h"
#import "GTMDefines.h"
@@ -44,22 +41,6 @@ typedef struct {
int textRep;
} LikeGlobUserArgs;
-#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4
-// While we want to be compatible with Tiger, some operations are more
-// efficient when implemented with Leopard APIs. We look those up dynamically.
-// CFStringCreateWithBytesNoCopy
-static const char* const kCFStringCreateWithBytesNoCopySymbolName =
- "CFStringCreateWithBytesNoCopy";
-
-typedef CFStringRef (*CFStringCreateWithBytesNoCopyPtrType)(CFAllocatorRef,
- const UInt8 *,
- CFIndex,
- CFStringEncoding,
- Boolean,
- CFAllocatorRef);
-static CFStringCreateWithBytesNoCopyPtrType gCFStringCreateWithBytesNoCopySymbol = NULL;
-#endif // MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4
-
// Helper inline for SQLite text type to CF endcoding
GTM_INLINE CFStringEncoding SqliteTextEncodingToCFStringEncoding(int enc) {
// Default should never happen, but assume UTF 8
@@ -87,14 +68,12 @@ GTM_INLINE CFOptionFlags FilteredStringCompareFlags(CFOptionFlags inOptions) {
if (inOptions & kCFCompareNonliteral) outOptions |= kCFCompareNonliteral;
if (inOptions & kCFCompareLocalized) outOptions |= kCFCompareLocalized;
if (inOptions & kCFCompareNumerically) outOptions |= kCFCompareNumerically;
-#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
if (inOptions & kCFCompareDiacriticInsensitive) {
outOptions |= kCFCompareDiacriticInsensitive;
}
if (inOptions & kCFCompareWidthInsensitive) {
outOptions |= kCFCompareWidthInsensitive;
}
-#endif
return outOptions;
}
@@ -141,14 +120,6 @@ static CFLocaleRef gCurrentLocale = NULL;
+ (void)initialize {
// Need the locale for some CFString enhancements
gCurrentLocale = CFLocaleCopyCurrent();
-
-#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4
- // Compiling pre-Leopard try to find some symbols dynamically
- gCFStringCreateWithBytesNoCopySymbol =
- (CFStringCreateWithBytesNoCopyPtrType)dlsym(
- RTLD_DEFAULT,
- kCFStringCreateWithBytesNoCopySymbolName);
-#endif // MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4
}
+ (int)sqliteVersionNumber {
@@ -176,7 +147,7 @@ static CFLocaleRef gCurrentLocale = NULL;
#else
cfEncoding = kCFStringEncodingUTF16LE;
#endif
- NSStringEncoding nsEncoding
+ NSStringEncoding nsEncoding
= CFStringConvertEncodingToNSStringEncoding(cfEncoding);
NSData *data = [path dataUsingEncoding:nsEncoding];
// Using -[NSString cStringUsingEncoding] causes sqlite3_open16
@@ -420,7 +391,7 @@ static CFLocaleRef gCurrentLocale = NULL;
- (CFOptionFlags)likeComparisonOptions {
CFOptionFlags flags = 0;
- if (hasCFAdditions_)
+ if (hasCFAdditions_)
flags = likeOptions_;
return flags;
}
@@ -510,7 +481,7 @@ static CFLocaleRef gCurrentLocale = NULL;
}
- (NSString *)description {
- return [NSString stringWithFormat:@"<%@: %p - %@>",
+ return [NSString stringWithFormat:@"<%@: %p - %@>",
[self class], self, path_];
}
@end
@@ -787,7 +758,7 @@ static void CollateNeeded(void *userContext, sqlite3 *db, int textRep,
[collationName componentsSeparatedByString:@"_"];
NSString *collationFlag = nil;
BOOL atLeastOneValidFlag = NO;
- GTM_FOREACH_OBJECT(collationFlag, collationComponents) {
+ for (collationFlag in collationComponents) {
if ([collationFlag isEqualToString:@"reverse"]) {
userArgs->reverse = YES;
atLeastOneValidFlag = YES;
@@ -803,19 +774,12 @@ static void CollateNeeded(void *userContext, sqlite3 *db, int textRep,
} else if ([collationFlag isEqualToString:@"numeric"]) {
userArgs->compareOptions |= kCFCompareNumerically;
atLeastOneValidFlag = YES;
-#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
} else if ([collationFlag isEqualToString:@"nodiacritic"]) {
userArgs->compareOptions |= kCFCompareDiacriticInsensitive;
atLeastOneValidFlag = YES;
} else if ([collationFlag isEqualToString:@"widthinsensitive"]) {
userArgs->compareOptions |= kCFCompareWidthInsensitive;
atLeastOneValidFlag = YES;
-#else
- } else if (([collationFlag isEqualToString:@"nodiacritic"]) ||
- ([collationFlag isEqualToString:@"widthinsensitive"])) {
- _GTMDevLog(@"GTMSQLiteDatabase 10.5 collating not "
- @"available on 10.4 or earlier");
-#endif
}
}
@@ -874,34 +838,6 @@ static int Collate8(void *userContext, int length1, const void *str1,
// creation function, we'll use it when we can but we want to stay compatible
// with Tiger.
CFStringRef string1 = NULL, string2 = NULL;
-#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4
- if (gCFStringCreateWithBytesNoCopySymbol) {
- string1 = gCFStringCreateWithBytesNoCopySymbol(kCFAllocatorDefault,
- str1,
- length1,
- kCFStringEncodingUTF8,
- false,
- kCFAllocatorNull);
- string2 = gCFStringCreateWithBytesNoCopySymbol(kCFAllocatorDefault,
- str2,
- length2,
- kCFStringEncodingUTF8,
- false,
- kCFAllocatorNull);
- } else {
- // Have to use the copy-based variants
- string1 = CFStringCreateWithBytes(kCFAllocatorDefault,
- str1,
- length1,
- kCFStringEncodingUTF8,
- false);
- string2 = CFStringCreateWithBytes(kCFAllocatorDefault,
- str2,
- length2,
- kCFStringEncodingUTF8,
- false);
- }
-#else // MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4
string1 = CFStringCreateWithBytesNoCopy(kCFAllocatorDefault,
str1,
length1,
@@ -914,7 +850,6 @@ static int Collate8(void *userContext, int length1, const void *str1,
kCFStringEncodingUTF8,
false,
kCFAllocatorNull);
-#endif // MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4
GTMCFAutorelease(string1);
GTMCFAutorelease(string2);
// Allocation failures can't really be sanely handled from a collator
@@ -937,7 +872,7 @@ static int Collate8(void *userContext, int length1, const void *str1,
if (userArgs->reverse && sqliteResult) {
sqliteResult = -sqliteResult;
}
-
+
}
return sqliteResult;
}
@@ -1025,7 +960,7 @@ static int Collate16(void *userContext, int length1, const void *str1,
string2,
userArgs->compareOptions);
- sqliteResult = (int)result;
+ sqliteResult = (int)result;
//Reverse
if (userArgs->reverse && sqliteResult) {
sqliteResult = -sqliteResult;
@@ -1052,8 +987,8 @@ static void LikeGlobCompare(sqlite3_context *context,
// Setup for pattern walk
CFIndex patternLength = CFStringGetLength(pattern);
CFStringInlineBuffer patternBuffer;
- CFStringInitInlineBuffer(pattern,
- &patternBuffer,
+ CFStringInitInlineBuffer(pattern,
+ &patternBuffer,
CFRangeMake(0, patternLength));
UniChar patternChar;
CFIndex patternIndex = 0;
@@ -1128,7 +1063,7 @@ static void LikeGlobCompare(sqlite3_context *context,
}
// There's at least one character, try to match the remainder of the
// string using a CFCharacterSet
- CFMutableCharacterSetRef charSet
+ CFMutableCharacterSetRef charSet
= CFCharacterSetCreateMutable(kCFAllocatorDefault);
GTMCFAutorelease(charSet);
if (!charSet) {
@@ -1776,8 +1711,8 @@ static void Glob16(sqlite3_context *context, int argc, sqlite3_value **argv) {
- (int)bindBlobAtPosition:(int)position data:(NSData *)data {
if (!statement_ || !data || !position) return SQLITE_MISUSE;
int blobLength = (int)[data length];
- _GTMDevAssert((blobLength < INT_MAX),
- @"sqlite methods do not support data lengths "
+ _GTMDevAssert((blobLength < INT_MAX),
+ @"sqlite methods do not support data lengths "
@"exceeding 32 bit sizes");
return [self bindBlobAtPosition:position
bytes:(void *)[data bytes]
@@ -1822,8 +1757,8 @@ static void Glob16(sqlite3_context *context, int argc, sqlite3_value **argv) {
}
return sqlite3_bind_text(statement_,
position,
- [string UTF8String],
- -1,
+ [string UTF8String],
+ -1,
SQLITE_TRANSIENT);
}
diff --git a/Foundation/GTMSQLiteTest.m b/Foundation/GTMSQLiteTest.m
index 8a5f18d..2537dd6 100644
--- a/Foundation/GTMSQLiteTest.m
+++ b/Foundation/GTMSQLiteTest.m
@@ -19,7 +19,6 @@
#import "GTMSQLite.h"
#import "GTMSenTestCase.h"
-#import "GTMUnitTestDevLog.h"
@interface GTMSQLiteTest : GTMTestCase
@end
@@ -48,66 +47,66 @@ static NSArray* LikeGlobTestHelper(GTMSQLiteDatabase *db, NSString *sql);
autorelease];
err = [db executeSQL:@"CREATE TABLE foo (bar TEXT COLLATE NOCASE_NONLITERAL);"];
- STAssertEquals(err, SQLITE_OK, @"Failed to create table");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to create table");
int changeCount = [db lastChangeCount];
- STAssertEquals(changeCount, 0,
+ XCTAssertEqual(changeCount, 0,
@"Change count was not 0 after creating database/table!");
err = [db executeSQL:@"insert into foo (bar) values ('blah!');"];
- STAssertEquals(err, SQLITE_OK, @"Failed to execute SQL");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to execute SQL");
changeCount = [db lastChangeCount];
- STAssertEquals(changeCount, 1, @"Change count was not 1!");
+ XCTAssertEqual(changeCount, 1, @"Change count was not 1!");
// Test last row id!
unsigned long long lastRowId;
lastRowId = [db lastInsertRowID];
- STAssertEquals(lastRowId, (unsigned long long)1L,
+ XCTAssertEqual(lastRowId, (unsigned long long)1L,
@"First row in database was not 1?");
// Test setting busy and retrieving it!
int busyTimeout = 10000;
err = [db setBusyTimeoutMS:busyTimeout];
- STAssertEquals(err, SQLITE_OK, @"Error setting busy timeout");
+ XCTAssertEqual(err, SQLITE_OK, @"Error setting busy timeout");
int retrievedBusyTimeout;
retrievedBusyTimeout = [db busyTimeoutMS];
- STAssertEquals(retrievedBusyTimeout, busyTimeout,
+ XCTAssertEqual(retrievedBusyTimeout, busyTimeout,
@"Retrieved busy time out was not equal to what we set it"
@" to!");
BOOL xactOpSucceeded;
xactOpSucceeded = [db beginDeferredTransaction];
- STAssertTrue(xactOpSucceeded, @"beginDeferredTransaction failed!");
+ XCTAssertTrue(xactOpSucceeded, @"beginDeferredTransaction failed!");
err = [db executeSQL:@"insert into foo (bar) values ('blah!');"];
- STAssertEquals(err, SQLITE_OK, @"Failed to execute SQL");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to execute SQL");
changeCount = [db lastChangeCount];
- STAssertEquals(changeCount, 1,
+ XCTAssertEqual(changeCount, 1,
@"Change count didn't stay the same"
@"when inserting during transaction");
xactOpSucceeded = [db rollback];
- STAssertTrue(xactOpSucceeded, @"could not rollback!");
+ XCTAssertTrue(xactOpSucceeded, @"could not rollback!");
changeCount = [db lastChangeCount];
- STAssertEquals(changeCount, 1, @"Change count isn't 1 after rollback :-(");
+ XCTAssertEqual(changeCount, 1, @"Change count isn't 1 after rollback :-(");
xactOpSucceeded = [db beginDeferredTransaction];
- STAssertTrue(xactOpSucceeded, @"beginDeferredTransaction failed!");
+ XCTAssertTrue(xactOpSucceeded, @"beginDeferredTransaction failed!");
for (unsigned int i = 0; i < 100; i++) {
err = [db executeSQL:@"insert into foo (bar) values ('blah!');"];
- STAssertEquals(err, SQLITE_OK, @"Failed to execute SQL");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to execute SQL");
}
xactOpSucceeded = [db commit];
- STAssertTrue(xactOpSucceeded, @"could not commit!");
+ XCTAssertTrue(xactOpSucceeded, @"could not commit!");
changeCount = [db totalChangeCount];
- STAssertEquals(changeCount, 102, @"Change count isn't 102 after commit :-(");
+ XCTAssertEqual(changeCount, 102, @"Change count isn't 102 after commit :-(");
}
- (void)testSQLiteWithoutCFAdditions {
@@ -118,14 +117,14 @@ static NSArray* LikeGlobTestHelper(GTMSQLiteDatabase *db, NSString *sql);
errorCode:&err]
autorelease];
- STAssertNotNil(dbNoCFAdditions, @"Failed to create DB");
- STAssertEquals(err, SQLITE_OK, @"Failed to create DB");
+ XCTAssertNotNil(dbNoCFAdditions, @"Failed to create DB");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to create DB");
err = [dbNoCFAdditions executeSQL:nil];
- STAssertEquals(err, SQLITE_MISUSE, @"Nil SQL did not return error");
+ XCTAssertEqual(err, SQLITE_MISUSE, @"Nil SQL did not return error");
err = [dbNoCFAdditions executeSQL:@"SELECT UPPER('Fred');"];
- STAssertEquals(err, SQLITE_OK, @"Nil SQL did not return error");
+ XCTAssertEqual(err, SQLITE_OK, @"Nil SQL did not return error");
}
- (void)testSynchronousAPI {
@@ -147,8 +146,8 @@ static NSArray* LikeGlobTestHelper(GTMSQLiteDatabase *db, NSString *sql);
errorCode:&err]
autorelease];
- STAssertNotNil(db8, @"Failed to create DB");
- STAssertEquals(err, SQLITE_OK, @"Failed to create DB");
+ XCTAssertNotNil(db8, @"Failed to create DB");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to create DB");
GTMSQLiteDatabase *db16 =
[[[GTMSQLiteDatabase alloc] initInMemoryWithCFAdditions:YES
@@ -156,27 +155,27 @@ static NSArray* LikeGlobTestHelper(GTMSQLiteDatabase *db, NSString *sql);
errorCode:&err]
autorelease];
- STAssertNotNil(db16, @"Failed to create DB");
- STAssertEquals(err, SQLITE_OK, @"Failed to create DB");
+ XCTAssertNotNil(db16, @"Failed to create DB");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to create DB");
NSArray *databases = [NSArray arrayWithObjects:db8, db16, nil];
GTMSQLiteDatabase *db;
- GTM_FOREACH_OBJECT(db, databases) {
+ for (db in databases) {
err = [db executeSQL:
@"CREATE TABLE foo (bar TEXT COLLATE NOCASE_NONLITERAL,"
@" barrev text collate reverse);"];
- STAssertEquals(err, SQLITE_OK,
+ XCTAssertEqual(err, SQLITE_OK,
@"Failed to create table for collation test");
// Create blank rows to test matching inside collation functions
err = [db executeSQL:@"insert into foo (bar, barrev) values ('','');"];
- STAssertEquals(err, SQLITE_OK, @"Failed to execute SQL");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to execute SQL");
// Insert one row we want to match
err = [db executeSQL:
@"INSERT INTO foo (bar, barrev) VALUES "
@"('teststring','teststring');"];
- STAssertEquals(err, SQLITE_OK, @"Failed to execute SQL");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to execute SQL");
NSString *matchString = @"foobar";
GTMSQLiteStatement *statement =
@@ -184,29 +183,29 @@ static NSArray* LikeGlobTestHelper(GTMSQLiteDatabase *db, NSString *sql);
@"SELECT bar FROM foo WHERE bar == '%@';", matchString]
inDatabase:db
errorCode:&err];
- STAssertNotNil(statement, @"Failed to create statement");
- STAssertEquals(err, SQLITE_OK, @"Failed to create statement");
+ XCTAssertNotNil(statement, @"Failed to create statement");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to create statement");
[statement stepRow];
[statement finalizeStatement];
-
+
statement =
[GTMSQLiteStatement statementWithSQL:[NSString stringWithFormat:
@"SELECT bar FROM foo WHERE barrev == '%@' order by barrev;", matchString]
inDatabase:db
errorCode:&err];
- STAssertNotNil(statement, @"Failed to create statement");
- STAssertEquals(err, SQLITE_OK, @"Failed to create statement");
+ XCTAssertNotNil(statement, @"Failed to create statement");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to create statement");
[statement stepRow];
[statement finalizeStatement];
-
+
statement =
[GTMSQLiteStatement statementWithSQL:[NSString stringWithFormat:
@"SELECT bar FROM foo WHERE bar == '';"]
inDatabase:db
errorCode:&err];
- STAssertNotNil(statement, @"Failed to create statement");
- STAssertEquals(err, SQLITE_OK, @"Failed to create statement");
+ XCTAssertNotNil(statement, @"Failed to create statement");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to create statement");
[statement stepRow];
[statement finalizeStatement];
@@ -215,8 +214,8 @@ static NSArray* LikeGlobTestHelper(GTMSQLiteDatabase *db, NSString *sql);
@"SELECT bar FROM foo WHERE barrev == '' order by barrev;"]
inDatabase:db
errorCode:&err];
- STAssertNotNil(statement, @"Failed to create statement");
- STAssertEquals(err, SQLITE_OK, @"Failed to create statement");
+ XCTAssertNotNil(statement, @"Failed to create statement");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to create statement");
[statement stepRow];
[statement finalizeStatement];
}
@@ -230,24 +229,24 @@ static NSArray* LikeGlobTestHelper(GTMSQLiteDatabase *db, NSString *sql);
errorCode:&err]
autorelease];
- STAssertNotNil(db, @"Failed to create DB");
- STAssertEquals(err, SQLITE_OK, @"Failed to create DB");
+ XCTAssertNotNil(db, @"Failed to create DB");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to create DB");
err = [db executeSQL:@"CREATE TABLE foo (bar TEXT COLLATE NOCASE_NONLITERAL);"];
- STAssertEquals(err, SQLITE_OK, @"Failed to create table for collation test");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to create table for collation test");
// Insert one row we want to match
err = [db executeSQL:[NSString stringWithFormat:
@"INSERT INTO foo (bar) VALUES ('%@');",
[NSString stringWithCString:"Frédéric" encoding:NSUTF8StringEncoding]]];
- STAssertEquals(err, SQLITE_OK, @"Failed to execute SQL");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to execute SQL");
// Create blank rows to test matching inside collation functions
err = [db executeSQL:@"insert into foo (bar) values ('');"];
- STAssertEquals(err, SQLITE_OK, @"Failed to execute SQL");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to execute SQL");
err = [db executeSQL:@"insert into foo (bar) values ('');"];
- STAssertEquals(err, SQLITE_OK, @"Failed to execute SQL");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to execute SQL");
// Loop over a few things all of which should match
NSArray *testArray = [NSArray arrayWithObjects:
@@ -259,19 +258,19 @@ static NSArray* LikeGlobTestHelper(GTMSQLiteDatabase *db, NSString *sql);
encoding:NSUTF8StringEncoding],
nil];
NSString *testString = nil;
- GTM_FOREACH_OBJECT(testString, testArray) {
+ for (testString in testArray) {
GTMSQLiteStatement *statement =
[GTMSQLiteStatement statementWithSQL:[NSString stringWithFormat:
@"SELECT bar FROM foo WHERE bar == '%@';", testString]
inDatabase:db
errorCode:&err];
- STAssertNotNil(statement, @"Failed to create statement");
- STAssertEquals(err, SQLITE_OK, @"Failed to create statement");
+ XCTAssertNotNil(statement, @"Failed to create statement");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to create statement");
int count = 0;
while ([statement stepRow] == SQLITE_ROW) {
count++;
}
- STAssertEquals(count, 1, @"Wrong number of collated rows for \"%@\"",
+ XCTAssertEqual(count, 1, @"Wrong number of collated rows for \"%@\"",
testString);
[statement finalizeStatement];
}
@@ -281,8 +280,8 @@ static NSArray* LikeGlobTestHelper(GTMSQLiteDatabase *db, NSString *sql);
inDatabase:db
errorCode:&err];
- STAssertNotNil(statement, @"Failed to create statement");
- STAssertEquals(err, SQLITE_OK, @"Failed to create statement");
+ XCTAssertNotNil(statement, @"Failed to create statement");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to create statement");
while ([statement stepRow] == SQLITE_ROW) ;
[statement finalizeStatement];
@@ -299,33 +298,33 @@ static NSArray* LikeGlobTestHelper(GTMSQLiteDatabase *db, NSString *sql);
utf8:YES
errorCode:&err]
autorelease];
- STAssertNotNil(db, @"Failed to create DB");
- STAssertEquals(err, SQLITE_OK, @"Failed to create DB");
+ XCTAssertNotNil(db, @"Failed to create DB");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to create DB");
GTMSQLiteStatement *statement = nil;
// Test simple ASCII
statement = [GTMSQLiteStatement statementWithSQL:@"SELECT LOWER('Fred');"
inDatabase:db
errorCode:&err];
- STAssertNotNil(statement, @"Failed to create statement");
- STAssertEquals(err, SQLITE_OK, @"Failed to create statement");
+ XCTAssertNotNil(statement, @"Failed to create statement");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to create statement");
err = [statement stepRow];
- STAssertEquals(err, SQLITE_ROW, @"Failed to step row");
- STAssertEqualObjects([statement resultStringAtPosition:0],
- @"fred",
- @"LOWER failed for ASCII string");
+ XCTAssertEqual(err, SQLITE_ROW, @"Failed to step row");
+ XCTAssertEqualObjects([statement resultStringAtPosition:0],
+ @"fred",
+ @"LOWER failed for ASCII string");
[statement finalizeStatement];
statement = [GTMSQLiteStatement statementWithSQL:@"SELECT UPPER('Fred');"
inDatabase:db
errorCode:&err];
- STAssertNotNil(statement, @"Failed to create statement");
- STAssertEquals(err, SQLITE_OK, @"Failed to create statement");
+ XCTAssertNotNil(statement, @"Failed to create statement");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to create statement");
err = [statement stepRow];
- STAssertEquals(err, SQLITE_ROW, @"Failed to step row");
- STAssertEqualObjects([statement resultStringAtPosition:0],
- @"FRED",
- @"UPPER failed for ASCII string");
+ XCTAssertEqual(err, SQLITE_ROW, @"Failed to step row");
+ XCTAssertEqualObjects([statement resultStringAtPosition:0],
+ @"FRED",
+ @"UPPER failed for ASCII string");
[statement finalizeStatement];
// Test UTF-8, have to do some dancing to make the compiler take
@@ -344,13 +343,13 @@ static NSArray* LikeGlobTestHelper(GTMSQLiteDatabase *db, NSString *sql);
[NSString stringWithFormat:@"SELECT LOWER('%@');", utfNormalString]
inDatabase:db
errorCode:&err];
- STAssertNotNil(statement, @"Failed to create statement");
- STAssertEquals(err, SQLITE_OK, @"Failed to create statement");
+ XCTAssertNotNil(statement, @"Failed to create statement");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to create statement");
err = [statement stepRow];
- STAssertEquals(err, SQLITE_ROW, @"Failed to step row");
- STAssertEqualObjects([statement resultStringAtPosition:0],
- utfLowerString,
- @"UPPER failed for UTF8 string");
+ XCTAssertEqual(err, SQLITE_ROW, @"Failed to step row");
+ XCTAssertEqualObjects([statement resultStringAtPosition:0],
+ utfLowerString,
+ @"UPPER failed for UTF8 string");
[statement finalizeStatement];
statement =
@@ -358,15 +357,15 @@ static NSArray* LikeGlobTestHelper(GTMSQLiteDatabase *db, NSString *sql);
[NSString stringWithFormat:@"SELECT UPPER('%@');", utfNormalString]
inDatabase:db
errorCode:&err];
- STAssertNotNil(statement, @"Failed to create statement");
- STAssertEquals(err, SQLITE_OK, @"Failed to create statement");
+ XCTAssertNotNil(statement, @"Failed to create statement");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to create statement");
err = [statement stepRow];
- STAssertEquals(err, SQLITE_ROW, @"Failed to step row");
- STAssertEqualObjects([statement resultStringAtPosition:0],
- utfUpperString,
- @"UPPER failed for UTF8 string");
+ XCTAssertEqual(err, SQLITE_ROW, @"Failed to step row");
+ XCTAssertEqualObjects([statement resultStringAtPosition:0],
+ utfUpperString,
+ @"UPPER failed for UTF8 string");
err = [statement stepRow];
- STAssertEquals(err, SQLITE_DONE, @"Should be done");
+ XCTAssertEqual(err, SQLITE_DONE, @"Should be done");
[statement finalizeStatement];
}
@@ -380,33 +379,33 @@ static NSArray* LikeGlobTestHelper(GTMSQLiteDatabase *db, NSString *sql);
utf8:NO
errorCode:&err]
autorelease];
- STAssertNotNil(db, @"Failed to create DB");
- STAssertEquals(err, SQLITE_OK, @"Failed to create DB");
+ XCTAssertNotNil(db, @"Failed to create DB");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to create DB");
GTMSQLiteStatement *statement = nil;
// Test simple ASCII
statement = [GTMSQLiteStatement statementWithSQL:@"SELECT LOWER('Fred');"
inDatabase:db
errorCode:&err];
- STAssertNotNil(statement, @"Failed to create statement");
- STAssertEquals(err, SQLITE_OK, @"Failed to create statement");
+ XCTAssertNotNil(statement, @"Failed to create statement");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to create statement");
err = [statement stepRow];
- STAssertEquals(err, SQLITE_ROW, @"Failed to step row");
- STAssertEqualObjects([statement resultStringAtPosition:0],
- @"fred",
- @"LOWER failed for ASCII string");
+ XCTAssertEqual(err, SQLITE_ROW, @"Failed to step row");
+ XCTAssertEqualObjects([statement resultStringAtPosition:0],
+ @"fred",
+ @"LOWER failed for ASCII string");
[statement finalizeStatement];
statement = [GTMSQLiteStatement statementWithSQL:@"SELECT UPPER('Fred');"
inDatabase:db
errorCode:&err];
- STAssertNotNil(statement, @"Failed to create statement");
- STAssertEquals(err, SQLITE_OK, @"Failed to create statement");
+ XCTAssertNotNil(statement, @"Failed to create statement");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to create statement");
err = [statement stepRow];
- STAssertEquals(err, SQLITE_ROW, @"Failed to step row");
- STAssertEqualObjects([statement resultStringAtPosition:0],
- @"FRED",
- @"UPPER failed for ASCII string");
+ XCTAssertEqual(err, SQLITE_ROW, @"Failed to step row");
+ XCTAssertEqualObjects([statement resultStringAtPosition:0],
+ @"FRED",
+ @"UPPER failed for ASCII string");
[statement finalizeStatement];
}
@@ -450,7 +449,7 @@ static void TestUpperLower16Impl(sqlite3_context *context,
customUpperLower[i].function,
NULL,
NULL);
- STAssertEquals(rc, SQLITE_OK,
+ XCTAssertEqual(rc, SQLITE_OK,
@"Failed to register upper function"
@"with SQLite db");
}
@@ -459,12 +458,12 @@ static void TestUpperLower16Impl(sqlite3_context *context,
GTMSQLiteStatement *statement = [GTMSQLiteStatement statementWithSQL:@"SELECT UPPER('Fred');"
inDatabase:db
errorCode:&err];
- STAssertNotNil(statement, @"Failed to create statement");
- STAssertEquals(err, SQLITE_OK, @"Failed to create statement");
+ XCTAssertNotNil(statement, @"Failed to create statement");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to create statement");
err = [statement stepRow];
- STAssertEquals(err, SQLITE_ROW, @"Failed to step row");
- STAssertTrue(customUpperFunctionCalled,
- @"Custom upper function was not called!");
+ XCTAssertEqual(err, SQLITE_ROW, @"Failed to step row");
+ XCTAssertTrue(customUpperFunctionCalled,
+ @"Custom upper function was not called!");
[statement finalizeStatement];
}
@@ -483,7 +482,7 @@ static void TestUpperLower16Impl(sqlite3_context *context,
NSArray *databases = [NSArray arrayWithObjects:db8, db16, nil];
GTMSQLiteDatabase *db;
- GTM_FOREACH_OBJECT(db, databases) {
+ for (db in databases) {
CFOptionFlags c = 0, oldFlags;
oldFlags = [db likeComparisonOptions];
@@ -492,22 +491,18 @@ static void TestUpperLower16Impl(sqlite3_context *context,
// case insensitive
[db setLikeComparisonOptions:c];
- STAssertTrue([db likeComparisonOptions] == 0,
- @"LIKE Comparison options setter/getter does not work!");
+ XCTAssertTrue([db likeComparisonOptions] == 0,
+ @"LIKE Comparison options setter/getter does not work!");
NSString *createString = nil;
-#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
createString = @"CREATE TABLE foo (bar NODIACRITIC_WIDTHINSENSITIVE TEXT);";
-#else
- createString = @"CREATE TABLE foo (bar TEXT);";
-#endif // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
err = [db executeSQL:createString];
- STAssertEquals(err, SQLITE_OK,
+ XCTAssertEqual(err, SQLITE_OK,
@"Failed to create table for like comparison options test");
err = [db executeSQL:@"insert into foo values('test like test');"];
- STAssertEquals(err, SQLITE_OK,
+ XCTAssertEqual(err, SQLITE_OK,
@"Failed to create row for like comparison options test");
GTMSQLiteStatement *statement =
@@ -515,22 +510,20 @@ static void TestUpperLower16Impl(sqlite3_context *context,
inDatabase:db
errorCode:&err];
- STAssertNotNil(statement, @"failed to create statement");
- STAssertEquals(err, SQLITE_OK, @"failed to create statement");
+ XCTAssertNotNil(statement, @"failed to create statement");
+ XCTAssertEqual(err, SQLITE_OK, @"failed to create statement");
err = [statement stepRow];
- STAssertEquals(err, SQLITE_DONE, @"failed to retrieve row!");
+ XCTAssertEqual(err, SQLITE_DONE, @"failed to retrieve row!");
// Now change it back to case insensitive and rerun the same query
c |= kCFCompareCaseInsensitive;
[db setLikeComparisonOptions:c];
err = [statement reset];
- STAssertEquals(err, SQLITE_OK, @"failed to reset select statement");
+ XCTAssertEqual(err, SQLITE_OK, @"failed to reset select statement");
err = [statement stepRow];
- STAssertEquals(err, SQLITE_ROW, @"failed to retrieve row!");
+ XCTAssertEqual(err, SQLITE_ROW, @"failed to retrieve row!");
-#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
- // Now try adding in 10.5 only flags
c |= (kCFCompareDiacriticInsensitive | kCFCompareWidthInsensitive);
[db setLikeComparisonOptions:c];
// Make a new statement
@@ -539,14 +532,13 @@ static void TestUpperLower16Impl(sqlite3_context *context,
[GTMSQLiteStatement statementWithSQL:@"select * from foo where bar like '%LIKE%'"
inDatabase:db
errorCode:&err];
-
- STAssertNotNil(statement, @"failed to create statement");
- STAssertEquals(err, SQLITE_OK, @"failed to create statement");
-
+
+ XCTAssertNotNil(statement, @"failed to create statement");
+ XCTAssertEqual(err, SQLITE_OK, @"failed to create statement");
+
err = [statement stepRow];
- STAssertEquals(err, SQLITE_ROW, @"failed to retrieve row!");
-#endif // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
-
+ XCTAssertEqual(err, SQLITE_ROW, @"failed to retrieve row!");
+
// Now reset comparison options
[db setLikeComparisonOptions:oldFlags];
@@ -567,15 +559,15 @@ static void TestUpperLower16Impl(sqlite3_context *context,
[db setGlobComparisonOptions:c];
- STAssertTrue([db globComparisonOptions] == 0,
- @"GLOB Comparison options setter/getter does not work!");
+ XCTAssertTrue([db globComparisonOptions] == 0,
+ @"GLOB Comparison options setter/getter does not work!");
err = [db executeSQL:@"CREATE TABLE foo (bar TEXT);"];
- STAssertEquals(err, SQLITE_OK,
+ XCTAssertEqual(err, SQLITE_OK,
@"Failed to create table for glob comparison options test");
err = [db executeSQL:@"insert into foo values('test like test');"];
- STAssertEquals(err, SQLITE_OK,
+ XCTAssertEqual(err, SQLITE_OK,
@"Failed to create row for glob comparison options test");
GTMSQLiteStatement *statement =
@@ -583,19 +575,19 @@ static void TestUpperLower16Impl(sqlite3_context *context,
inDatabase:db
errorCode:&err];
- STAssertNotNil(statement, @"failed to create statement");
- STAssertEquals(err, SQLITE_OK, @"failed to create statement");
+ XCTAssertNotNil(statement, @"failed to create statement");
+ XCTAssertEqual(err, SQLITE_OK, @"failed to create statement");
err = [statement stepRow];
- STAssertEquals(err, SQLITE_DONE, @"failed to retrieve row!");
+ XCTAssertEqual(err, SQLITE_DONE, @"failed to retrieve row!");
// Now change it back to case insensitive and rerun the same query
c |= kCFCompareCaseInsensitive;
[db setGlobComparisonOptions:c];
err = [statement reset];
- STAssertEquals(err, SQLITE_OK, @"failed to reset select statement");
+ XCTAssertEqual(err, SQLITE_OK, @"failed to reset select statement");
err = [statement stepRow];
- STAssertEquals(err, SQLITE_ROW, @"failed to retrieve row!");
+ XCTAssertEqual(err, SQLITE_ROW, @"failed to retrieve row!");
[statement finalizeStatement];
@@ -611,38 +603,38 @@ static void TestUpperLower16Impl(sqlite3_context *context,
errorCode:&err] autorelease];
err = [db executeSQL:@"CREATE table foo_reverse (bar TEXT COLLATE REVERSE);"];
- STAssertEquals(err, SQLITE_OK,
+ XCTAssertEqual(err, SQLITE_OK,
@"Failed to create table for reverse collation test");
err = [db executeSQL:@"insert into foo_reverse values('a2');"];
- STAssertEquals(err, SQLITE_OK, @"Failed to execute SQL");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to execute SQL");
err = [db executeSQL:@"insert into foo_reverse values('b1');"];
- STAssertEquals(err, SQLITE_OK, @"Failed to execute SQL");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to execute SQL");
GTMSQLiteStatement *statement =
[GTMSQLiteStatement statementWithSQL:@"SELECT bar from foo_reverse order by bar"
inDatabase:db
errorCode:&err];
- STAssertNotNil(statement, @"failed to create statement");
- STAssertEquals(err, SQLITE_OK, @"Failed to create statement");
+ XCTAssertNotNil(statement, @"failed to create statement");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to create statement");
err = [statement stepRow];
- STAssertEquals(err, SQLITE_ROW, @"failed to advance row");
+ XCTAssertEqual(err, SQLITE_ROW, @"failed to advance row");
NSString *oneRow = [statement resultStringAtPosition:0];
- STAssertEqualStrings(oneRow, @"b1", @"b did not come first!");
+ XCTAssertEqualStrings(oneRow, @"b1", @"b did not come first!");
err = [statement stepRow];
- STAssertEquals(err, SQLITE_ROW, @"failed to advance row!");
+ XCTAssertEqual(err, SQLITE_ROW, @"failed to advance row!");
- STAssertEquals(err, [db lastErrorCode],
+ XCTAssertEqual(err, [db lastErrorCode],
@"lastErrorCode API did not match what last API returned!");
// Calling lastErrorCode resets API error, so the next string will not indicate any error
- STAssertEqualStrings(@"not an error", [db lastErrorString],
- @"lastErrorString API did not match expected string!");
+ XCTAssertEqualStrings(@"unknown error", [db lastErrorString],
+ @"lastErrorString API did not match expected string!");
oneRow = [statement resultStringAtPosition:0];
- STAssertEqualStrings(oneRow, @"a2", @"a did not come second!");
+ XCTAssertEqualStrings(oneRow, @"a2", @"a did not come second!");
[statement finalizeStatement];
}
@@ -657,32 +649,32 @@ static void TestUpperLower16Impl(sqlite3_context *context,
err = [db executeSQL:
@"CREATE table numeric_test_table "
@"(numeric_sort TEXT COLLATE NUMERIC, lexographic_sort TEXT);"];
- STAssertEquals(err, SQLITE_OK,
+ XCTAssertEqual(err, SQLITE_OK,
@"Failed to create table for numeric collation test");
err = [db executeSQL:@"insert into numeric_test_table values('4','17');"];
- STAssertEquals(err, SQLITE_OK, @"Failed to execute SQL");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to execute SQL");
err = [db executeSQL:@"insert into numeric_test_table values('17','4');"];
- STAssertEquals(err, SQLITE_OK, @"Failed to execute SQL");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to execute SQL");
GTMSQLiteStatement *statement =
[GTMSQLiteStatement statementWithSQL:@"SELECT numeric_sort from numeric_test_table order by numeric_sort"
inDatabase:db
errorCode:&err];
- STAssertNotNil(statement, @"failed to create statement");
- STAssertEquals(err, SQLITE_OK, @"Failed to create statement");
+ XCTAssertNotNil(statement, @"failed to create statement");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to create statement");
err = [statement stepRow];
- STAssertEquals(err, SQLITE_ROW, @"failed to advance row");
+ XCTAssertEqual(err, SQLITE_ROW, @"failed to advance row");
NSString *oneRow = [statement resultStringAtPosition:0];
- STAssertEqualStrings(oneRow, @"4", @"4 did not come first!");
+ XCTAssertEqualStrings(oneRow, @"4", @"4 did not come first!");
err = [statement stepRow];
- STAssertEquals(err, SQLITE_ROW, @"failed to advance row!");
+ XCTAssertEqual(err, SQLITE_ROW, @"failed to advance row!");
oneRow = [statement resultStringAtPosition:0];
- STAssertEqualStrings(oneRow, @"17", @"17 did not come second!");
+ XCTAssertEqualStrings(oneRow, @"17", @"17 did not come second!");
[statement finalizeStatement];
@@ -693,18 +685,18 @@ static void TestUpperLower16Impl(sqlite3_context *context,
inDatabase:db
errorCode:&err];
- STAssertNotNil(statement, @"failed to create statement for lexographic sort");
- STAssertEquals(err, SQLITE_OK, @"Failed to create statement");
+ XCTAssertNotNil(statement, @"failed to create statement for lexographic sort");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to create statement");
err = [statement stepRow];
- STAssertEquals(err, SQLITE_ROW, @"failed to advance row");
+ XCTAssertEqual(err, SQLITE_ROW, @"failed to advance row");
oneRow = [statement resultStringAtPosition:0];
- STAssertEqualStrings(oneRow, @"17", @"17 did not come first!");
+ XCTAssertEqualStrings(oneRow, @"17", @"17 did not come first!");
err = [statement stepRow];
- STAssertEquals(err, SQLITE_ROW, @"failed to advance row!");
+ XCTAssertEqual(err, SQLITE_ROW, @"failed to advance row!");
oneRow = [statement resultStringAtPosition:0];
- STAssertEqualStrings(oneRow, @"4", @"4 did not come second!");
+ XCTAssertEqualStrings(oneRow, @"4", @"4 did not come second!");
[statement finalizeStatement];
}
@@ -718,18 +710,18 @@ static void TestUpperLower16Impl(sqlite3_context *context,
[[GTMSQLiteDatabase alloc] initInMemoryWithCFAdditions:YES
utf8:YES
errorCode:&err];
- STAssertNotNil(db, @"Failed to create DB");
- STAssertEquals(err, SQLITE_OK, @"Failed to create DB");
+ XCTAssertNotNil(db, @"Failed to create DB");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to create DB");
err = [db executeSQL:
@"CREATE TABLE foo (bar TEXT COLLATE NOCASE_NONLITERAL_LOCALIZED);"];
- STAssertEquals(err, SQLITE_OK, @"Failed to create table for collation test");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to create table for collation test");
// Insert one row we want to match
err = [db executeSQL:[NSString stringWithFormat:
@"INSERT INTO foo (bar) VALUES ('%@');",
[NSString stringWithCString:"Frédéric" encoding:NSUTF8StringEncoding]]];
- STAssertEquals(err, SQLITE_OK, @"Failed to execute SQL");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to execute SQL");
// Loop over a few things all of which should match
NSArray *testArray = [NSArray arrayWithObjects:
@@ -742,19 +734,19 @@ static void TestUpperLower16Impl(sqlite3_context *context,
nil];
NSString *testString = nil;
- GTM_FOREACH_OBJECT(testString, testArray) {
+ for (testString in testArray) {
GTMSQLiteStatement *statement =
[GTMSQLiteStatement statementWithSQL:[NSString stringWithFormat:
@"SELECT bar FROM foo WHERE bar == '%@';", testString]
inDatabase:db
errorCode:&err];
- STAssertNotNil(statement, @"Failed to create statement");
- STAssertEquals(err, SQLITE_OK, @"Failed to create statement");
+ XCTAssertNotNil(statement, @"Failed to create statement");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to create statement");
int count = 0;
while ([statement stepRow] == SQLITE_ROW) {
count++;
}
- STAssertEquals(count, 1, @"Wrong number of collated rows for \"%@\"",
+ XCTAssertEqual(count, 1, @"Wrong number of collated rows for \"%@\"",
testString);
[statement finalizeStatement];
}
@@ -765,23 +757,20 @@ static void TestUpperLower16Impl(sqlite3_context *context,
}
- (void)testDiacriticAndWidthInsensitiveCollations {
- // Diacritic & width insensitive collations are not supported
- // on Tiger, so most of the test is Leopard or later
-#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
int err;
GTMSQLiteDatabase *db =
[[[GTMSQLiteDatabase alloc] initInMemoryWithCFAdditions:YES
utf8:YES
errorCode:&err] autorelease];
- STAssertNotNil(db, @"Failed to create DB");
- STAssertEquals(err, SQLITE_OK, @"Failed to create DB");
+ XCTAssertNotNil(db, @"Failed to create DB");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to create DB");
NSString *tableSQL =
@"CREATE TABLE FOOBAR (collated TEXT COLLATE NODIACRITIC_WIDTHINSENSITIVE, "
@" noncollated TEXT);";
err = [db executeSQL:tableSQL];
- STAssertEquals(err, SQLITE_OK, @"error creating table");
+ XCTAssertEqual(err, SQLITE_OK, @"error creating table");
NSString *testStringValue = [NSString stringWithCString:"Frédéric"
encoding:NSUTF8StringEncoding];
@@ -797,11 +786,11 @@ static void TestUpperLower16Impl(sqlite3_context *context,
@" WHERE noncollated == 'Frederic';"]
inDatabase:db
errorCode:&err];
- STAssertNotNil(statement, @"Failed to create statement");
- STAssertEquals(err, SQLITE_OK, @"Failed to create statement");
+ XCTAssertNotNil(statement, @"Failed to create statement");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to create statement");
// Make sure the comparison query didn't return a row because
// we're doing a comparison on the row without the collation
- STAssertEquals([statement stepRow], SQLITE_DONE,
+ XCTAssertEqual([statement stepRow], SQLITE_DONE,
@"Comparison with diacritics did not succeed");
[statement finalizeStatement];
@@ -812,34 +801,11 @@ static void TestUpperLower16Impl(sqlite3_context *context,
@" WHERE collated == 'Frederic';"]
inDatabase:db
errorCode:&err];
- STAssertNotNil(statement, @"Failed to create statement");
- STAssertEquals(err, SQLITE_OK, @"Failed to create statement");
- STAssertEquals([statement stepRow], SQLITE_ROW,
+ XCTAssertNotNil(statement, @"Failed to create statement");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to create statement");
+ XCTAssertEqual([statement stepRow], SQLITE_ROW,
@"Comparison ignoring diacritics did not succeed");
[statement finalizeStatement];
-#else
- // On Tiger just make sure it causes the dev log.
- int err;
- GTMSQLiteDatabase *db =
- [[[GTMSQLiteDatabase alloc] initInMemoryWithCFAdditions:YES
- utf8:YES
- errorCode:&err] autorelease];
- STAssertNotNil(db, @"Failed to create DB");
- STAssertEquals(err, SQLITE_OK, @"Failed to create DB");
-
- NSString *tableSQL =
- @"CREATE TABLE FOOBAR (collated TEXT"
- @" COLLATE NODIACRITIC_WIDTHINSENSITIVE_NOCASE,"
- @" noncollated TEXT);";
-
- // Expect one log for each unsupported flag
- [GTMUnitTestDevLog expect:2
- casesOfString:@"GTMSQLiteDatabase 10.5 collating not available "
- @"on 10.4 or earlier"];
- err = [db executeSQL:tableSQL];
- STAssertEquals(err, SQLITE_OK, @"error creating table");
-
-#endif // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
}
- (void)testCFStringLikeGlob {
@@ -852,8 +818,8 @@ static void TestUpperLower16Impl(sqlite3_context *context,
errorCode:&err]
autorelease];
- STAssertNotNil(db8, @"Failed to create database");
- STAssertEquals(err, SQLITE_OK, @"Failed to create database");
+ XCTAssertNotNil(db8, @"Failed to create database");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to create database");
GTMSQLiteDatabase *db16 =
[[[GTMSQLiteDatabase alloc] initInMemoryWithCFAdditions:YES
@@ -861,164 +827,164 @@ static void TestUpperLower16Impl(sqlite3_context *context,
errorCode:&err]
autorelease];
- STAssertNotNil(db16, @"Failed to create database");
- STAssertEquals(err, SQLITE_OK, @"Failed to create database");
+ XCTAssertNotNil(db16, @"Failed to create database");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to create database");
NSArray *databases = [NSArray arrayWithObjects:db8, db16, nil];
GTMSQLiteDatabase *db;
- GTM_FOREACH_OBJECT(db, databases) {
+ for (db in databases) {
err = [db executeSQL:@"CREATE TABLE t1 (x TEXT);"];
- STAssertEquals(err, SQLITE_OK,
+ XCTAssertEqual(err, SQLITE_OK,
@"Failed to create table for LIKE/GLOB test");
// Insert data set
err = [db executeSQL:@"INSERT INTO t1 VALUES ('a');"];
- STAssertEquals(err, SQLITE_OK, @"Failed to execute sql");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to execute sql");
err = [db executeSQL:@"INSERT INTO t1 VALUES ('ab');"];
- STAssertEquals(err, SQLITE_OK, @"Failed to execute sql");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to execute sql");
err = [db executeSQL:@"INSERT INTO t1 VALUES ('abc');"];
- STAssertEquals(err, SQLITE_OK, @"Failed to execute sql");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to execute sql");
err = [db executeSQL:@"INSERT INTO t1 VALUES ('abcd');"];
- STAssertEquals(err, SQLITE_OK, @"Failed to execute sql");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to execute sql");
err = [db executeSQL:@"INSERT INTO t1 VALUES ('acd');"];
- STAssertEquals(err, SQLITE_OK, @"Failed to execute sql");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to execute sql");
err = [db executeSQL:@"INSERT INTO t1 VALUES ('abd');"];
- STAssertEquals(err, SQLITE_OK, @"Failed to execute sql");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to execute sql");
err = [db executeSQL:@"INSERT INTO t1 VALUES ('bc');"];
- STAssertEquals(err, SQLITE_OK, @"Failed to execute sql");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to execute sql");
err = [db executeSQL:@"INSERT INTO t1 VALUES ('bcd');"];
- STAssertEquals(err, SQLITE_OK, @"Failed to execute sql");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to execute sql");
err = [db executeSQL:@"INSERT INTO t1 VALUES ('xyz');"];
- STAssertEquals(err, SQLITE_OK, @"Failed to execute sql");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to execute sql");
err = [db executeSQL:@"INSERT INTO t1 VALUES ('ABC');"];
- STAssertEquals(err, SQLITE_OK, @"Failed to execute sql");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to execute sql");
err = [db executeSQL:@"INSERT INTO t1 VALUES ('CDE');"];
- STAssertEquals(err, SQLITE_OK, @"Failed to execute sql");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to execute sql");
err = [db executeSQL:@"INSERT INTO t1 VALUES ('ABC abc xyz');"];
- STAssertEquals(err, SQLITE_OK, @"Failed to execute sql");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to execute sql");
// Section 1, case tests
- STAssertEqualObjects(
+ XCTAssertEqualObjects(
LikeGlobTestHelper(db,
@"SELECT x FROM t1 WHERE x LIKE 'abc' ORDER BY 1;"),
([NSArray arrayWithObjects:@"ABC", @"abc", nil]),
@"Fail on LIKE test 1.1");
- STAssertEqualObjects(
+ XCTAssertEqualObjects(
LikeGlobTestHelper(db,
@"SELECT x FROM t1 WHERE x GLOB 'abc' ORDER BY 1;"),
([NSArray arrayWithObjects:@"abc", nil]),
@"Fail on LIKE test 1.2");
- STAssertEqualObjects(
+ XCTAssertEqualObjects(
LikeGlobTestHelper(db,
@"SELECT x FROM t1 WHERE x LIKE 'ABC' ORDER BY 1;"),
([NSArray arrayWithObjects:@"ABC", @"abc", nil]),
@"Fail on LIKE test 1.3");
- STAssertEqualObjects(
+ XCTAssertEqualObjects(
LikeGlobTestHelper(db,
@"SELECT x FROM t1 WHERE x LIKE 'abc%' ORDER BY 1;"),
([NSArray arrayWithObjects:@"ABC", @"ABC abc xyz", @"abc", @"abcd", nil]),
@"Fail on LIKE test 3.1");
[db setLikeComparisonOptions:(kCFCompareNonliteral)];
err = [db executeSQL:@"CREATE INDEX i1 ON t1(x);"];
- STAssertEquals(err, SQLITE_OK, @"Failed to execute sql");
- STAssertEqualObjects(
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to execute sql");
+ XCTAssertEqualObjects(
LikeGlobTestHelper(db,
@"SELECT x FROM t1 WHERE x LIKE 'abc%' ORDER BY 1;"),
([NSArray arrayWithObjects:@"abc", @"abcd", nil]),
@"Fail on LIKE test 3.3");
- STAssertEqualObjects(
+ XCTAssertEqualObjects(
LikeGlobTestHelper(db,
@"SELECT x FROM t1 WHERE x LIKE 'a_c' ORDER BY 1;"),
([NSArray arrayWithObjects:@"abc", nil]),
@"Fail on LIKE test 3.5");
- STAssertEqualObjects(
+ XCTAssertEqualObjects(
LikeGlobTestHelper(db,
@"SELECT x FROM t1 WHERE x LIKE 'ab%d' ORDER BY 1;"),
([NSArray arrayWithObjects:@"abcd", @"abd", nil]),
@"Fail on LIKE test 3.7");
- STAssertEqualObjects(
+ XCTAssertEqualObjects(
LikeGlobTestHelper(db,
@"SELECT x FROM t1 WHERE x LIKE 'a_c%' ORDER BY 1;"),
([NSArray arrayWithObjects:@"abc", @"abcd", nil]),
@"Fail on LIKE test 3.9");
- STAssertEqualObjects(
+ XCTAssertEqualObjects(
LikeGlobTestHelper(db,
@"SELECT x FROM t1 WHERE x LIKE '%bcd' ORDER BY 1;"),
([NSArray arrayWithObjects:@"abcd", @"bcd", nil]),
@"Fail on LIKE test 3.11");
[db setLikeComparisonOptions:(kCFCompareNonliteral | kCFCompareCaseInsensitive)];
- STAssertEqualObjects(
+ XCTAssertEqualObjects(
LikeGlobTestHelper(db,
@"SELECT x FROM t1 WHERE x LIKE 'abc%' ORDER BY 1;"),
([NSArray arrayWithObjects:@"ABC", @"ABC abc xyz", @"abc", @"abcd", nil]),
@"Fail on LIKE test 3.13");
[db setLikeComparisonOptions:(kCFCompareNonliteral)];
err = [db executeSQL:@"DROP INDEX i1;"];
- STAssertEquals(err, SQLITE_OK, @"Failed to execute sql");
- STAssertEqualObjects(
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to execute sql");
+ XCTAssertEqualObjects(
LikeGlobTestHelper(db,
@"SELECT x FROM t1 WHERE x LIKE 'abc%' ORDER BY 1;"),
([NSArray arrayWithObjects:@"abc", @"abcd", nil]),
@"Fail on LIKE test 3.15");
- STAssertEqualObjects(
+ XCTAssertEqualObjects(
LikeGlobTestHelper(db,
@"SELECT x FROM t1 WHERE x GLOB 'abc*' ORDER BY 1;"),
([NSArray arrayWithObjects:@"abc", @"abcd", nil]),
@"Fail on LIKE test 3.17");
err = [db executeSQL:@"CREATE INDEX i1 ON t1(x);"];
- STAssertEquals(err, SQLITE_OK, @"Failed to execute sql");
- STAssertEqualObjects(
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to execute sql");
+ XCTAssertEqualObjects(
LikeGlobTestHelper(db,
@"SELECT x FROM t1 WHERE x GLOB 'abc*' ORDER BY 1;"),
([NSArray arrayWithObjects:@"abc", @"abcd", nil]),
@"Fail on LIKE test 3.19");
[db setLikeComparisonOptions:(kCFCompareNonliteral)];
- STAssertEqualObjects(
+ XCTAssertEqualObjects(
LikeGlobTestHelper(db,
@"SELECT x FROM t1 WHERE x GLOB 'abc*' ORDER BY 1;"),
([NSArray arrayWithObjects:@"abc", @"abcd", nil]),
@"Fail on LIKE test 3.21");
[db setLikeComparisonOptions:(kCFCompareNonliteral |
kCFCompareCaseInsensitive)];
- STAssertEqualObjects(
+ XCTAssertEqualObjects(
LikeGlobTestHelper(db,
@"SELECT x FROM t1 WHERE x GLOB 'a[bc]d' ORDER BY 1;"),
([NSArray arrayWithObjects:@"abd", @"acd", nil]),
@"Fail on LIKE test 3.23");
- STAssertEqualObjects(
+ XCTAssertEqualObjects(
LikeGlobTestHelper(db,
@"SELECT x from t1 where x GLOB 'a[^xyz]d' ORDER BY 1;"),
([NSArray arrayWithObjects:@"abd", @"acd", nil]),
@"Fail on glob inverted character set test 3.24");
- STAssertEqualObjects(
+ XCTAssertEqualObjects(
LikeGlobTestHelper(db,
@"SELECT x from t1 where x GLOB 'a[^' ORDER BY 1;"),
([NSArray array]),
@"Fail on glob inverted character set test 3.25");
- STAssertEqualObjects(
+ XCTAssertEqualObjects(
LikeGlobTestHelper(db,
@"SELECT x from t1 where x GLOB 'a['"),
([NSArray array]),
@"Unclosed glob character set did not return empty result set 3.26");
- STAssertEqualObjects(
+ XCTAssertEqualObjects(
LikeGlobTestHelper(db,
@"SELECT x from t1 where x GLOB 'a[^]'"),
([NSArray array]),
@"Unclosed glob inverted character set did not return empty "
@"result set 3.27");
- STAssertEqualObjects(
+ XCTAssertEqualObjects(
LikeGlobTestHelper(db,
@"SELECT x from t1 where x GLOB 'a[^]c]d'"),
([NSArray arrayWithObjects:@"abd", nil]),
@"Glob character set with inverted set not matching ] did not "
@"return right rows 3.28");
- STAssertEqualObjects(
+ XCTAssertEqualObjects(
LikeGlobTestHelper(db,
@"SELECT x from t1 where x GLOB 'a[bcdefg'"),
([NSArray array]),
@@ -1026,36 +992,36 @@ static void TestUpperLower16Impl(sqlite3_context *context,
// Section 4
[db setLikeComparisonOptions:(kCFCompareNonliteral)];
- STAssertEqualObjects(
+ XCTAssertEqualObjects(
LikeGlobTestHelper(db,
@"SELECT x FROM t1 WHERE x LIKE 'abc%' ORDER BY 1;"),
([NSArray arrayWithObjects:@"abc", @"abcd", nil]),
@"Fail on LIKE test 4.1");
- STAssertEqualObjects(
+ XCTAssertEqualObjects(
LikeGlobTestHelper(db,
@"SELECT x FROM t1 WHERE +x LIKE 'abc%' ORDER BY 1;"),
([NSArray arrayWithObjects:@"abc", @"abcd", nil]),
@"Fail on LIKE test 4.2");
- STAssertEqualObjects(
+ XCTAssertEqualObjects(
LikeGlobTestHelper(db,
@"SELECT x FROM t1 WHERE x LIKE ('ab' || 'c%') ORDER BY 1;"),
([NSArray arrayWithObjects:@"abc", @"abcd", nil]),
@"Fail on LIKE test 4.3");
- STAssertEqualObjects(
+ XCTAssertEqualObjects(
LikeGlobTestHelper(db,
@"SELECT x from t1 where x LIKE 'a[xyz]\%' ESCAPE ''"),
([NSArray array]),
@"0-Character escape clause did not return empty set 4.4");
- STAssertEqualObjects(
+ XCTAssertEqualObjects(
LikeGlobTestHelper(db,
@"SELECT x from t1 where x LIKE "
@"'a[xyz]\%' ESCAPE NULL"),
([NSArray array]),
@"Null escape did not return empty set 4.5");
- STAssertEqualObjects(
+ XCTAssertEqualObjects(
LikeGlobTestHelper(db,
@"SELECT x from t1 where x LIKE 'a[xyz]\\%' "
@"ESCAPE '\\'"),
@@ -1066,22 +1032,22 @@ static void TestUpperLower16Impl(sqlite3_context *context,
// Section 5
[db setLikeComparisonOptions:(kCFCompareNonliteral | kCFCompareCaseInsensitive)];
- STAssertEqualObjects(
+ XCTAssertEqualObjects(
LikeGlobTestHelper(db,
@"SELECT x FROM t1 WHERE x LIKE 'abc%' ORDER BY 1;"),
([NSArray arrayWithObjects:@"ABC", @"ABC abc xyz", @"abc", @"abcd", nil]),
@"Fail on LIKE test 5.1");
err = [db executeSQL:@"CREATE TABLE t2(x COLLATE NOCASE);"];
- STAssertEquals(err, SQLITE_OK, @"Failed to execute sql");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to execute sql");
err = [db executeSQL:@"INSERT INTO t2 SELECT * FROM t1;"];
- STAssertEquals(err, SQLITE_OK, @"Failed to execute sql");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to execute sql");
err = [db executeSQL:@"CREATE INDEX i2 ON t2(x COLLATE NOCASE);"];
- STAssertEquals(err, SQLITE_OK, @"Failed to execute sql");
- STAssertEqualObjects(
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to execute sql");
+ XCTAssertEqualObjects(
LikeGlobTestHelper(db,
@"SELECT x FROM t2 WHERE x LIKE 'abc%' ORDER BY 1;"),
([NSArray arrayWithObjects:@"abc", @"ABC", @"ABC abc xyz", @"abcd", nil]),
@@ -1089,7 +1055,7 @@ static void TestUpperLower16Impl(sqlite3_context *context,
[db setLikeComparisonOptions:(kCFCompareNonliteral)];
- STAssertEqualObjects(
+ XCTAssertEqualObjects(
LikeGlobTestHelper(db,
@"SELECT x FROM t2 WHERE x LIKE 'abc%' ORDER BY 1;"),
([NSArray arrayWithObjects:@"abc", @"abcd", nil]),
@@ -1097,14 +1063,14 @@ static void TestUpperLower16Impl(sqlite3_context *context,
[db setLikeComparisonOptions:(kCFCompareNonliteral | kCFCompareCaseInsensitive)];
- STAssertEqualObjects(
+ XCTAssertEqualObjects(
LikeGlobTestHelper(db,
@"SELECT x FROM t2 WHERE x GLOB 'abc*' ORDER BY 1;"),
([NSArray arrayWithObjects:@"abc", @"abcd", nil]),
@"Fail on LIKE test 5.5");
// Non standard tests not from the SQLite source
- STAssertEqualObjects(
+ XCTAssertEqualObjects(
LikeGlobTestHelper(db,
@"SELECT x FROM t1 WHERE x GLOB 'a[b-d]d' ORDER BY 1;"),
([NSArray arrayWithObjects:@"abd", @"acd", nil]),
@@ -1119,34 +1085,34 @@ static void TestUpperLower16Impl(sqlite3_context *context,
utf8:YES
errorCode:&err]
autorelease];
-
- STAssertNotNil(db8, @"Failed to create database");
- STAssertEquals(err, SQLITE_OK, @"Failed to create database");
- STAssertNotNil([db8 description], nil);
+
+ XCTAssertNotNil(db8, @"Failed to create database");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to create database");
+ XCTAssertNotNil([db8 description]);
}
// // From GTMSQLite.m
// CFStringEncoding SqliteTextEncodingToCFStringEncoding(int enc);
// - (void)testEncodingMappingIsCorrect {
-// STAssertTrue(SqliteTextEncodingToCFStringEncoding(SQLITE_UTF8) ==
-// kCFStringEncodingUTF8,
-// @"helper method didn't return right encoding for "
-// @"kCFStringEncodingUTF8");
-
-// STAssertTrue(SqliteTextEncodingToCFStringEncoding(SQLITE_UTF16BE)
-// == kCFStringEncodingUTF16BE,
-// @"helper method didn't return right encoding for "
-// @"kCFStringEncodingUTF16BE");
-
-// STAssertTrue(SqliteTextEncodingToCFStringEncoding(SQLITE_UTF16LE)
-// == kCFStringEncodingUTF16LE,
-// @"helper method didn't return right encoding for "
-// @"kCFStringEncodingUTF16LE");
-
-// STAssertTrue(SqliteTextEncodingToCFStringEncoding(9999)
-// == kCFStringEncodingUTF8, @"helper method didn't "
-// @"return default encoding for invalid input");
+// XCTAssertTrue(SqliteTextEncodingToCFStringEncoding(SQLITE_UTF8) ==
+// kCFStringEncodingUTF8,
+// @"helper method didn't return right encoding for "
+// @"kCFStringEncodingUTF8");
+
+// XCTAssertTrue(SqliteTextEncodingToCFStringEncoding(SQLITE_UTF16BE)
+// == kCFStringEncodingUTF16BE,
+// @"helper method didn't return right encoding for "
+// @"kCFStringEncodingUTF16BE");
+
+// XCTAssertTrue(SqliteTextEncodingToCFStringEncoding(SQLITE_UTF16LE)
+// == kCFStringEncodingUTF16LE,
+// @"helper method didn't return right encoding for "
+// @"kCFStringEncodingUTF16LE");
+
+// XCTAssertTrue(SqliteTextEncodingToCFStringEncoding(9999)
+// == kCFStringEncodingUTF8, @"helper method didn't "
+// @"return default encoding for invalid input");
// }
@end
@@ -1182,8 +1148,8 @@ static NSArray* LikeGlobTestHelper(GTMSQLiteDatabase *db, NSString *sql) {
GTMSQLiteStatement *statement = [GTMSQLiteStatement statementWithSQL:nil
inDatabase:nil
errorCode:&err];
- STAssertNil(statement, @"Create statement succeeded with nil SQL string");
- STAssertEquals(err, SQLITE_MISUSE, @"Err was not SQLITE_MISUSE on nil "
+ XCTAssertNil(statement, @"Create statement succeeded with nil SQL string");
+ XCTAssertEqual(err, SQLITE_MISUSE, @"Err was not SQLITE_MISUSE on nil "
@"SQL string");
GTMSQLiteDatabase *db =
@@ -1196,8 +1162,8 @@ static NSArray* LikeGlobTestHelper(GTMSQLiteDatabase *db, NSString *sql) {
inDatabase:db
errorCode:&err];
- STAssertNil(statement, @"Select statement succeeded with invalid table");
- STAssertNotEquals(err, SQLITE_OK,
+ XCTAssertNil(statement, @"Select statement succeeded with invalid table");
+ XCTAssertNotEqual(err, SQLITE_OK,
@"Err was not SQLITE_MISUSE on invalid table");
[statement finalizeStatement];
@@ -1219,7 +1185,7 @@ static NSArray* LikeGlobTestHelper(GTMSQLiteDatabase *db, NSString *sql) {
err = [db executeSQL:tableCreateSQL];
- STAssertEquals(err, SQLITE_OK,
+ XCTAssertEqual(err, SQLITE_OK,
@"Failed to create table for collation test");
NSString *insert =
@"insert into foo (tc, ic, rc, bc) values (:tc, :ic, :rc, :bc);";
@@ -1227,9 +1193,9 @@ static NSArray* LikeGlobTestHelper(GTMSQLiteDatabase *db, NSString *sql) {
GTMSQLiteStatement *statement = [GTMSQLiteStatement statementWithSQL:insert
inDatabase:db
errorCode:&err];
- STAssertNotNil(statement, @"Failed to create statement");
- STAssertEquals(err, SQLITE_OK, @"Failed to create statement");
- STAssertEquals([statement parameterCount], 4,
+ XCTAssertNotNil(statement, @"Failed to create statement");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to create statement");
+ XCTAssertEqual([statement parameterCount], 4,
@"Bound parameter count was not 4");
[statement sqlite3Statement];
@@ -1253,7 +1219,7 @@ static NSArray* LikeGlobTestHelper(GTMSQLiteDatabase *db, NSString *sql) {
NSArray *databases = [NSArray arrayWithObjects:dbWithCF, dbWithoutCF, nil];
GTMSQLiteDatabase *db;
- GTM_FOREACH_OBJECT(db, databases) {
+ for (db in databases) {
NSString *tableCreateSQL =
@"CREATE TABLE foo (tc TEXT,"
@"ic integer,"
@@ -1261,7 +1227,7 @@ static NSArray* LikeGlobTestHelper(GTMSQLiteDatabase *db, NSString *sql) {
@"bc blob);";
err = [db executeSQL:tableCreateSQL];
- STAssertEquals(err, SQLITE_OK,
+ XCTAssertEqual(err, SQLITE_OK,
@"Failed to create table for collation test");
NSString *insert =
@"insert into foo (tc, ic, rc, bc) "
@@ -1270,8 +1236,8 @@ static NSArray* LikeGlobTestHelper(GTMSQLiteDatabase *db, NSString *sql) {
GTMSQLiteStatement *statement = [GTMSQLiteStatement statementWithSQL:insert
inDatabase:db
errorCode:&err];
- STAssertNotNil(statement, @"Failed to create statement");
- STAssertEquals(err, SQLITE_OK, @"Failed to create statement");
+ XCTAssertNotNil(statement, @"Failed to create statement");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to create statement");
NSArray *parameterNames = [NSArray arrayWithObjects:@":tc",
@":ic",
@@ -1280,15 +1246,15 @@ static NSArray* LikeGlobTestHelper(GTMSQLiteDatabase *db, NSString *sql) {
for (unsigned int i = 1; i <= [parameterNames count]; i++) {
NSString *paramName = [parameterNames objectAtIndex:i-1];
- // Cast to signed int to avoid type errors from STAssertEquals
- STAssertEquals((int)i,
+ // Cast to signed int to avoid type errors from XCTAssertEqual
+ XCTAssertEqual((int)i,
[statement positionOfParameterNamed:paramName],
@"positionOfParameterNamed API did not return correct "
@"results");
- STAssertEqualStrings(paramName,
- [statement nameOfParameterAtPosition:i],
- @"nameOfParameterAtPosition API did not return "
- @"correct name");
+ XCTAssertEqualStrings(paramName,
+ [statement nameOfParameterAtPosition:i],
+ @"nameOfParameterAtPosition API did not return "
+ @"correct name");
}
[statement finalizeStatement];
}
@@ -1311,21 +1277,21 @@ static NSArray* LikeGlobTestHelper(GTMSQLiteDatabase *db, NSString *sql) {
NSArray *databases = [NSArray arrayWithObjects:dbWithCF, dbWithoutCF, nil];
GTMSQLiteDatabase *db;
- GTM_FOREACH_OBJECT(db, databases) {
+ for (db in databases) {
// Test strategy is to create a table with 3 columns
// Insert some values, and use the result collection APIs
// to make sure we get the same values back
err = [db executeSQL:
@"CREATE TABLE blobby (bc blob);"];
- STAssertEquals(err, SQLITE_OK,
+ XCTAssertEqual(err, SQLITE_OK,
@"Failed to create table for BLOB binding test");
NSString *insert = @"insert into blobby (bc) values (:bc);";
GTMSQLiteStatement *statement = [GTMSQLiteStatement statementWithSQL:insert
inDatabase:db
errorCode:&err];
- STAssertNotNil(statement, @"Failed to create insert statement");
- STAssertEquals(err, SQLITE_OK, @"Failed to create insert statement");
+ XCTAssertNotNil(statement, @"Failed to create insert statement");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to create insert statement");
char bytes[] = "DEADBEEF";
NSUInteger bytesLen = strlen(bytes);
@@ -1333,10 +1299,10 @@ static NSArray* LikeGlobTestHelper(GTMSQLiteDatabase *db, NSString *sql) {
err = [statement bindBlobAtPosition:1 data:originalBytes];
- STAssertEquals(err, SQLITE_OK, @"error binding BLOB at position 1");
+ XCTAssertEqual(err, SQLITE_OK, @"error binding BLOB at position 1");
err = [statement stepRow];
- STAssertEquals(err, SQLITE_DONE, @"failed to insert BLOB for BLOB test");
+ XCTAssertEqual(err, SQLITE_DONE, @"failed to insert BLOB for BLOB test");
[statement finalizeStatement];
@@ -1344,30 +1310,30 @@ static NSArray* LikeGlobTestHelper(GTMSQLiteDatabase *db, NSString *sql) {
statement = [GTMSQLiteStatement statementWithSQL:selectSQL
inDatabase:db
errorCode:&err];
- STAssertNotNil(statement, @"Failed to create select statement");
- STAssertEquals(err, SQLITE_OK, @"Failed to create select statement");
+ XCTAssertNotNil(statement, @"Failed to create select statement");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to create select statement");
err = [statement stepRow];
// Check that we got at least one row back
- STAssertEquals(err, SQLITE_ROW, @"did not retrieve a row from db :-(");
- STAssertEquals([statement resultColumnCount], 1,
+ XCTAssertEqual(err, SQLITE_ROW, @"did not retrieve a row from db :-(");
+ XCTAssertEqual([statement resultColumnCount], 1,
@"result had more columns than the table had?");
- STAssertEqualStrings([statement resultColumnNameAtPosition:BLOB_COLUMN],
- @"bc",
- @"column name dictionary was not correct");
+ XCTAssertEqualStrings([statement resultColumnNameAtPosition:BLOB_COLUMN],
+ @"bc",
+ @"column name dictionary was not correct");
- STAssertEquals([statement rowDataCount],
+ XCTAssertEqual([statement rowDataCount],
1,
@"More than one column returned?");
- STAssertEquals([statement resultColumnTypeAtPosition:BLOB_COLUMN],
+ XCTAssertEqual([statement resultColumnTypeAtPosition:BLOB_COLUMN],
SQLITE_BLOB,
@"Query for column 1 of test table was not BLOB!");
NSData *returnedbytes = [statement resultBlobDataAtPosition:BLOB_COLUMN];
- STAssertTrue([originalBytes isEqualToData:returnedbytes],
- @"Queried data was not equal :-(");
+ XCTAssertTrue([originalBytes isEqualToData:returnedbytes],
+ @"Queried data was not equal :-(");
[statement finalizeStatement];
}
}
@@ -1383,22 +1349,22 @@ static NSArray* LikeGlobTestHelper(GTMSQLiteDatabase *db, NSString *sql) {
err = [db executeSQL:
@"CREATE TABLE foo (tc TEXT);"];
- STAssertEquals(err, SQLITE_OK,
+ XCTAssertEqual(err, SQLITE_OK,
@"Failed to create table for NULL binding test");
NSString *insert = @"insert into foo (tc) values (:tc);";
GTMSQLiteStatement *statement = [GTMSQLiteStatement statementWithSQL:insert
inDatabase:db
errorCode:&err];
- STAssertNotNil(statement, @"Failed to create insert statement");
- STAssertEquals(err, SQLITE_OK, @"Failed to create insert statement");
+ XCTAssertNotNil(statement, @"Failed to create insert statement");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to create insert statement");
err = [statement bindSQLNullAtPosition:1];
- STAssertEquals(err, SQLITE_OK, @"error binding NULL at position 1");
+ XCTAssertEqual(err, SQLITE_OK, @"error binding NULL at position 1");
err = [statement stepRow];
- STAssertEquals(err, SQLITE_DONE, @"failed to insert NULL for Null Binding test");
+ XCTAssertEqual(err, SQLITE_DONE, @"failed to insert NULL for Null Binding test");
[statement finalizeStatement];
@@ -1406,12 +1372,12 @@ static NSArray* LikeGlobTestHelper(GTMSQLiteDatabase *db, NSString *sql) {
statement = [GTMSQLiteStatement statementWithSQL:selectSQL
inDatabase:db
errorCode:&err];
- STAssertNotNil(statement, @"Failed to create select statement");
- STAssertEquals(err, SQLITE_OK, @"Failed to create select statement");
+ XCTAssertNotNil(statement, @"Failed to create select statement");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to create select statement");
err = [statement stepRow];
// Check that we got at least one row back
- STAssertEquals(err, SQLITE_ROW, @"did not retrieve a row from db :-(");
+ XCTAssertEqual(err, SQLITE_ROW, @"did not retrieve a row from db :-(");
[statement finalizeStatement];
}
@@ -1434,26 +1400,26 @@ static NSArray* LikeGlobTestHelper(GTMSQLiteDatabase *db, NSString *sql) {
err = [db executeSQL:
@"CREATE TABLE realTable (rc1 REAL, rc2 REAL);"];
- STAssertEquals(err, SQLITE_OK,
+ XCTAssertEqual(err, SQLITE_OK,
@"Failed to create table for double binding test");
NSString *insert = @"insert into realTable (rc1, rc2) values (:rc1, :rc2);";
GTMSQLiteStatement *statement = [GTMSQLiteStatement statementWithSQL:insert
inDatabase:db
errorCode:&err];
- STAssertNotNil(statement, @"Failed to create insert statement");
- STAssertEquals(err, SQLITE_OK, @"Failed to create insert statement");
+ XCTAssertNotNil(statement, @"Failed to create insert statement");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to create insert statement");
err = [statement bindDoubleAtPosition:1 value:testVal];
- STAssertEquals(err, SQLITE_OK, @"error binding double at position 1");
+ XCTAssertEqual(err, SQLITE_OK, @"error binding double at position 1");
err = [statement bindNumberAsDoubleAtPosition:2 number:doubleValue];
- STAssertEquals(err, SQLITE_OK,
+ XCTAssertEqual(err, SQLITE_OK,
@"error binding number as double at "
@"position 2");
err = [statement stepRow];
- STAssertEquals(err, SQLITE_DONE,
+ XCTAssertEqual(err, SQLITE_DONE,
@"failed to insert doubles for double "
@"binding test");
@@ -1463,20 +1429,20 @@ static NSArray* LikeGlobTestHelper(GTMSQLiteDatabase *db, NSString *sql) {
statement = [GTMSQLiteStatement statementWithSQL:selectSQL
inDatabase:db
errorCode:&err];
- STAssertNotNil(statement, @"Failed to create select statement");
- STAssertEquals(err, SQLITE_OK, @"Failed to create select statement");
+ XCTAssertNotNil(statement, @"Failed to create select statement");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to create select statement");
err = [statement stepRow];
// Check that we got at least one row back
- STAssertEquals(err, SQLITE_ROW, @"did not retrieve a row from db :-(");
+ XCTAssertEqual(err, SQLITE_ROW, @"did not retrieve a row from db :-(");
double retrievedValue = [statement resultDoubleAtPosition:0];
- STAssertEquals(retrievedValue, testVal,
- @"Retrieved double did not equal "
- @"original");
+ XCTAssertEqualWithAccuracy(retrievedValue, testVal, 0.01,
+ @"Retrieved double did not equal "
+ @"original");
NSNumber *retrievedNumber = [statement resultNumberAtPosition:1];
- STAssertEqualObjects(retrievedNumber, doubleValue,
- @"Retrieved NSNumber object did not equal");
+ XCTAssertEqualObjects(retrievedNumber, doubleValue,
+ @"Retrieved NSNumber object did not equal");
[statement finalizeStatement];
}
@@ -1497,14 +1463,14 @@ static NSArray* LikeGlobTestHelper(GTMSQLiteDatabase *db, NSString *sql) {
NSArray *databases = [NSArray arrayWithObjects:dbWithCF, dbWithoutCF, nil];
GTMSQLiteDatabase *db;
- GTM_FOREACH_OBJECT(db, databases) {
+ for (db in databases) {
// Test strategy is to create a table with 3 columns
// Insert some values, and use the result collection APIs
// to make sure we get the same values back
err = [db executeSQL:
@"CREATE TABLE test (a integer, b text, c blob, d text);"];
- STAssertEquals(err, SQLITE_OK,
+ XCTAssertEqual(err, SQLITE_OK,
@"Failed to create table for result collection test");
NSString *insert =
@@ -1514,8 +1480,8 @@ static NSArray* LikeGlobTestHelper(GTMSQLiteDatabase *db, NSString *sql) {
GTMSQLiteStatement *statement = [GTMSQLiteStatement statementWithSQL:insert
inDatabase:db
errorCode:&err];
- STAssertNotNil(statement, @"Failed to create insert statement");
- STAssertEquals(err, SQLITE_OK, @"Failed to create insert statement");
+ XCTAssertNotNil(statement, @"Failed to create insert statement");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to create insert statement");
char blobChars[] = "DEADBEEF";
@@ -1523,10 +1489,10 @@ static NSArray* LikeGlobTestHelper(GTMSQLiteDatabase *db, NSString *sql) {
NSData *blobData = [NSData dataWithBytes:blobChars length:blobLength];
err = [statement bindBlobAtPosition:1 data:blobData];
- STAssertEquals(err, SQLITE_OK, @"error binding BLOB at position 1");
+ XCTAssertEqual(err, SQLITE_OK, @"error binding BLOB at position 1");
err = [statement stepRow];
- STAssertEquals(err, SQLITE_DONE,
+ XCTAssertEqual(err, SQLITE_DONE,
@"failed to insert doubles for double "
@"binding test");
@@ -1537,16 +1503,16 @@ static NSArray* LikeGlobTestHelper(GTMSQLiteDatabase *db, NSString *sql) {
statement = [GTMSQLiteStatement statementWithSQL:selectSQL
inDatabase:db
errorCode:&err];
- STAssertNotNil(statement, @"Failed to create select statement");
- STAssertEquals(err, SQLITE_OK, @"Failed to create select statement");
+ XCTAssertNotNil(statement, @"Failed to create select statement");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to create select statement");
err = [statement stepRow];
// Check that we got at least one row back
- STAssertEquals(err, SQLITE_ROW, @"did not retrieve a row from db :-(");
- STAssertNotNil([statement resultRowArray],
- @"Failed to retrieve result array");
- STAssertNotNil([statement resultRowDictionary],
- @"Failed to retrieve result dictionary");
+ XCTAssertEqual(err, SQLITE_ROW, @"did not retrieve a row from db :-(");
+ XCTAssertNotNil([statement resultRowArray],
+ @"Failed to retrieve result array");
+ XCTAssertNotNil([statement resultRowDictionary],
+ @"Failed to retrieve result dictionary");
[statement finalizeStatement];
}
}
@@ -1570,7 +1536,7 @@ static NSArray* LikeGlobTestHelper(GTMSQLiteDatabase *db, NSString *sql) {
err = [db executeSQL:
@"CREATE TABLE integerTable (ic1 integer, ic2 integer);"];
- STAssertEquals(err, SQLITE_OK,
+ XCTAssertEqual(err, SQLITE_OK,
@"Failed to create table for integer binding test");
NSString *insert =
@"insert into integerTable (ic1, ic2) values (:ic1, :ic2);";
@@ -1578,19 +1544,19 @@ static NSArray* LikeGlobTestHelper(GTMSQLiteDatabase *db, NSString *sql) {
GTMSQLiteStatement *statement = [GTMSQLiteStatement statementWithSQL:insert
inDatabase:db
errorCode:&err];
- STAssertNotNil(statement, @"Failed to create insert statement");
- STAssertEquals(err, SQLITE_OK, @"Failed to create insert statement");
+ XCTAssertNotNil(statement, @"Failed to create insert statement");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to create insert statement");
err = [statement bindInt32AtPosition:1 value:testVal];
- STAssertEquals(err, SQLITE_OK, @"error binding integer at position 1");
+ XCTAssertEqual(err, SQLITE_OK, @"error binding integer at position 1");
err = [statement bindNumberAsInt32AtPosition:2 number:intValue];
- STAssertEquals(err, SQLITE_OK,
+ XCTAssertEqual(err, SQLITE_OK,
@"error binding number as integer at "
@"position 2");
err = [statement stepRow];
- STAssertEquals(err, SQLITE_DONE,
+ XCTAssertEqual(err, SQLITE_DONE,
@"failed to insert integers for integer "
@"binding test");
@@ -1600,20 +1566,20 @@ static NSArray* LikeGlobTestHelper(GTMSQLiteDatabase *db, NSString *sql) {
statement = [GTMSQLiteStatement statementWithSQL:selectSQL
inDatabase:db
errorCode:&err];
- STAssertNotNil(statement, @"Failed to create select statement");
- STAssertEquals(err, SQLITE_OK, @"Failed to create select statement");
+ XCTAssertNotNil(statement, @"Failed to create select statement");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to create select statement");
err = [statement stepRow];
// Check that we got at least one row back
- STAssertEquals(err, SQLITE_ROW, @"did not retrieve a row from db :-(");
+ XCTAssertEqual(err, SQLITE_ROW, @"did not retrieve a row from db :-(");
int retrievedValue = [statement resultInt32AtPosition:0];
- STAssertEquals(retrievedValue, testVal,
+ XCTAssertEqual(retrievedValue, testVal,
@"Retrieved integer did not equal "
@"original");
NSNumber *retrievedNumber = [statement resultNumberAtPosition:1];
- STAssertEqualObjects(retrievedNumber, intValue,
- @"Retrieved NSNumber object did not equal");
+ XCTAssertEqualObjects(retrievedNumber, intValue,
+ @"Retrieved NSNumber object did not equal");
[statement finalizeStatement];
}
@@ -1635,9 +1601,9 @@ static NSArray* LikeGlobTestHelper(GTMSQLiteDatabase *db, NSString *sql) {
NSNumber *longlongValue = [NSNumber numberWithLongLong:testVal];
err = [db executeSQL:
- @"CREATE TABLE longlongTable (llc1 integer, llc2 integer);"];
+ @"CREATE TABLE longlongTable (llc1 integer, llc2 integer);"];
- STAssertEquals(err, SQLITE_OK,
+ XCTAssertEqual(err, SQLITE_OK,
@"Failed to create table for long long binding test");
NSString *insert =
@"insert into longlongTable (llc1, llc2) "
@@ -1646,19 +1612,19 @@ static NSArray* LikeGlobTestHelper(GTMSQLiteDatabase *db, NSString *sql) {
GTMSQLiteStatement *statement = [GTMSQLiteStatement statementWithSQL:insert
inDatabase:db
errorCode:&err];
- STAssertNotNil(statement, @"Failed to create insert statement");
- STAssertEquals(err, SQLITE_OK, @"Failed to create insert statement");
+ XCTAssertNotNil(statement, @"Failed to create insert statement");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to create insert statement");
err = [statement bindLongLongAtPosition:1 value:testVal];
- STAssertEquals(err, SQLITE_OK, @"error binding long long at position 1");
+ XCTAssertEqual(err, SQLITE_OK, @"error binding long long at position 1");
err = [statement bindNumberAsLongLongAtPosition:2 number:longlongValue];
- STAssertEquals(err, SQLITE_OK,
+ XCTAssertEqual(err, SQLITE_OK,
@"error binding number as long long at "
@"position 2");
err = [statement stepRow];
- STAssertEquals(err, SQLITE_DONE,
+ XCTAssertEqual(err, SQLITE_DONE,
@"failed to insert long longs for long long "
@"binding test");
@@ -1669,20 +1635,20 @@ static NSArray* LikeGlobTestHelper(GTMSQLiteDatabase *db, NSString *sql) {
statement = [GTMSQLiteStatement statementWithSQL:selectSQL
inDatabase:db
errorCode:&err];
- STAssertNotNil(statement, @"Failed to create select statement");
- STAssertEquals(err, SQLITE_OK, @"Failed to create select statement");
+ XCTAssertNotNil(statement, @"Failed to create select statement");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to create select statement");
err = [statement stepRow];
// Check that we got at least one row back
- STAssertEquals(err, SQLITE_ROW, @"did not retrieve a row from db :-(");
+ XCTAssertEqual(err, SQLITE_ROW, @"did not retrieve a row from db :-(");
long long retrievedValue = [statement resultLongLongAtPosition:0];
- STAssertEquals(retrievedValue, testVal,
+ XCTAssertEqual(retrievedValue, testVal,
@"Retrieved long long did not equal "
@"original");
NSNumber *retrievedNumber = [statement resultNumberAtPosition:1];
- STAssertEqualObjects(retrievedNumber, longlongValue,
- @"Retrieved NSNumber object did not equal");
+ XCTAssertEqualObjects(retrievedNumber, longlongValue,
+ @"Retrieved NSNumber object did not equal");
[statement finalizeStatement];
}
@@ -1701,7 +1667,7 @@ static NSArray* LikeGlobTestHelper(GTMSQLiteDatabase *db, NSString *sql) {
err = [db executeSQL:
@"CREATE TABLE stringTable (sc1 text);"];
- STAssertEquals(err, SQLITE_OK,
+ XCTAssertEqual(err, SQLITE_OK,
@"Failed to create table for string binding test");
NSString *insert =
@@ -1711,15 +1677,15 @@ static NSArray* LikeGlobTestHelper(GTMSQLiteDatabase *db, NSString *sql) {
GTMSQLiteStatement *statement = [GTMSQLiteStatement statementWithSQL:insert
inDatabase:db
errorCode:&err];
- STAssertNotNil(statement, @"Failed to create insert statement");
- STAssertEquals(err, SQLITE_OK, @"Failed to create insert statement");
+ XCTAssertNotNil(statement, @"Failed to create insert statement");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to create insert statement");
NSString *testVal = @"this is a test string";
err = [statement bindStringAtPosition:1 string:testVal];
- STAssertEquals(err, SQLITE_OK, @"error binding string at position 1");
+ XCTAssertEqual(err, SQLITE_OK, @"error binding string at position 1");
err = [statement stepRow];
- STAssertEquals(err, SQLITE_DONE,
+ XCTAssertEqual(err, SQLITE_DONE,
@"failed to insert string for string binding test");
[statement finalizeStatement];
@@ -1731,14 +1697,14 @@ static NSArray* LikeGlobTestHelper(GTMSQLiteDatabase *db, NSString *sql) {
statement = [GTMSQLiteStatement statementWithSQL:selectSQL
inDatabase:db
errorCode:&err];
- STAssertNotNil(statement, @"Failed to create select statement");
- STAssertEquals(err, SQLITE_OK, @"Failed to create select statement");
+ XCTAssertNotNil(statement, @"Failed to create select statement");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to create select statement");
err = [statement stepRow];
// Check that we got at least one row back
- STAssertEquals(err, SQLITE_ROW, @"did not retrieve a row from db :-(");
+ XCTAssertEqual(err, SQLITE_ROW, @"did not retrieve a row from db :-(");
err = [statement stepRow];
- STAssertEquals(err, SQLITE_DONE, @"retrieved more than 1 row from db :-(");
+ XCTAssertEqual(err, SQLITE_DONE, @"retrieved more than 1 row from db :-(");
[statement finalizeStatement];
}
@@ -1752,61 +1718,54 @@ static NSArray* LikeGlobTestHelper(GTMSQLiteDatabase *db, NSString *sql) {
errorCode:&err]
autorelease];
- STAssertNotNil(db, @"Failed to create database");
+ XCTAssertNotNil(db, @"Failed to create database");
sqlite3 *sqlite3DB = [db sqlite3DB];
-
+
NSString *selectSQL = @"select 1";
GTMSQLiteStatement *statement;
statement = [GTMSQLiteStatement statementWithSQL:selectSQL
inDatabase:db
errorCode:&err];
- STAssertNotNil(statement, @"Failed to create select statement");
- STAssertEquals(err, SQLITE_OK, @"Failed to create select statement");
+ XCTAssertNotNil(statement, @"Failed to create select statement");
+ XCTAssertEqual(err, SQLITE_OK, @"Failed to create select statement");
sqlite3_stmt *sqlite3Statment = [statement sqlite3Statement];
err = [statement stepRow];
- STAssertEquals(err, SQLITE_ROW,
+ XCTAssertEqual(err, SQLITE_ROW,
@"failed to step row for finalize test");
-
- NSString *expectedLog =
- @"-[GTMSQLiteStatement finalizeStatement] must be called "
- @"when statement is no longer needed";
-
- [GTMUnitTestDevLog expectString:@"%@", expectedLog];
- [GTMUnitTestDevLog expectPattern:@"Unable to close .*"];
[localPool drain];
-
+
// Clean up leaks. Since we hadn't finalized the statement above we
// were unable to clean up the sqlite databases. Since the pool is drained
// all of our objective-c objects are gone, so we have to call the
// sqlite3 api directly.
- STAssertEquals(sqlite3_finalize(sqlite3Statment), SQLITE_OK, nil);
- STAssertEquals(sqlite3_close(sqlite3DB), SQLITE_OK, nil);
+ XCTAssertEqual(sqlite3_finalize(sqlite3Statment), SQLITE_OK);
+ XCTAssertEqual(sqlite3_close(sqlite3DB), SQLITE_OK);
}
- (void)testCompleteSQLString {
NSString *str = @"CREATE TABLE longlongTable (llc1 integer, llc2 integer);";
BOOL isComplete = [GTMSQLiteStatement isCompleteStatement:str];
- STAssertTrue(isComplete, nil);
+ XCTAssertTrue(isComplete);
isComplete = [GTMSQLiteStatement isCompleteStatement:@""];
- STAssertTrue(isComplete, nil);
+ XCTAssertFalse(isComplete);
isComplete = [GTMSQLiteStatement isCompleteStatement:@"CR"];
- STAssertFalse(isComplete, nil);
+ XCTAssertFalse(isComplete);
}
- (void)testQuotingSQLString {
NSString *str = @"This is wild! It's fun!";
NSString *str2 = [GTMSQLiteStatement quoteAndEscapeString:str];
- STAssertEqualObjects(str2, @"'This is wild! It''s fun!'", nil);
+ XCTAssertEqualObjects(str2, @"'This is wild! It''s fun!'");
str2 = [GTMSQLiteStatement quoteAndEscapeString:@""];
- STAssertEqualObjects(str2, @"''", nil);
+ XCTAssertEqualObjects(str2, @"''");
}
- (void)testVersion {
- STAssertGreaterThan([GTMSQLiteDatabase sqliteVersionNumber], 0, nil);
- STAssertNotNil([GTMSQLiteDatabase sqliteVersionString], nil);
+ XCTAssertGreaterThan([GTMSQLiteDatabase sqliteVersionNumber], 0);
+ XCTAssertNotNil([GTMSQLiteDatabase sqliteVersionString]);
}
@end
diff --git a/Foundation/GTMScriptRunnerTest.m b/Foundation/GTMScriptRunnerTest.m
index 07928c2..c8050f5 100644
--- a/Foundation/GTMScriptRunnerTest.m
+++ b/Foundation/GTMScriptRunnerTest.m
@@ -6,9 +6,9 @@
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy
// of the License at
-//
+//
// http://www.apache.org/licenses/LICENSE-2.0
-//
+//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
@@ -20,10 +20,9 @@
#import <unistd.h>
#import "GTMSenTestCase.h"
#import "GTMScriptRunner.h"
-#import "GTMUnitTestDevLog.h"
@interface GTMScriptRunnerTest : GTMTestCase {
- @private
+ @private
NSString *shScript_;
NSString *perlScript_;
NSString *shOutputScript_;
@@ -45,7 +44,7 @@
@"fi\n"
@"echo $i\n"
writeToFile:shScript_ atomically:YES encoding:NSUTF8StringEncoding error:nil];
-
+
perlScript_ = [NSString stringWithFormat:@"/tmp/script_runner_unittest_%d_%d_pl", geteuid(), getpid()];
[@"#!/usr/bin/perl\n"
@"use strict;\n"
@@ -99,176 +98,179 @@
- (void)testBcCommands {
GTMScriptRunner *sr = [GTMScriptRunner runnerWithInterpreter:@"/usr/bin/bc"
withArgs:[NSArray arrayWithObject:@"-lq"]];
- STAssertNotNil(sr, @"Script runner must not be nil");
+ XCTAssertNotNil(sr, @"Script runner must not be nil");
NSString *output = nil;
-
+
// Simple expression (NOTE that bc requires that commands end with a newline)
output = [sr run:@"1 + 2\n"];
- STAssertEqualObjects(output, @"3", @"output should equal '3'");
-
+ XCTAssertEqualObjects(output, @"3", @"output should equal '3'");
+
// Simple expression with variables and multiple statements
output = [sr run:@"i=1; i+2\n"];
- STAssertEqualObjects(output, @"3", @"output should equal '3'");
-
+ XCTAssertEqualObjects(output, @"3", @"output should equal '3'");
+
// Simple expression with base conversion
output = [sr run:@"obase=2; 2^5\n"];
- STAssertEqualObjects(output, @"100000", @"output should equal '100000'");
-
+ XCTAssertEqualObjects(output, @"100000", @"output should equal '100000'");
+
// Simple expression with sine and cosine functions
output = [sr run:@"scale=3;s(0)+c(0)\n"];
- STAssertEqualObjects(output, @"1.000", @"output should equal '1.000'");
+ XCTAssertEqualObjects(output, @"1.000", @"output should equal '1.000'");
}
- (void)testPerlCommands {
GTMScriptRunner *sr = [GTMScriptRunner runnerWithPerl];
- STAssertNotNil(sr, @"Script runner must not be nil");
+ XCTAssertNotNil(sr, @"Script runner must not be nil");
NSString *output = nil;
-
+
// Simple print
output = [sr run:@"print 'hi'"];
- STAssertEqualObjects(output, @"hi", @"output should equal 'hi'");
-
+ XCTAssertEqualObjects(output, @"hi", @"output should equal 'hi'");
+
// Simple print x4
output = [sr run:@"print 'A'x4"];
- STAssertEqualObjects(output, @"AAAA", @"output should equal 'AAAA'");
-
+ XCTAssertEqualObjects(output, @"AAAA", @"output should equal 'AAAA'");
+
// Simple perl-y stuff
output = [sr run:@"my $i=0; until ($i++==41){} print $i"];
- STAssertEqualObjects(output, @"42", @"output should equal '42'");
+ XCTAssertEqualObjects(output, @"42", @"output should equal '42'");
}
- (void)testPythonCommands {
GTMScriptRunner *sr = [GTMScriptRunner runnerWithPython];
- STAssertNotNil(sr, @"Script runner must not be nil");
+ XCTAssertNotNil(sr, @"Script runner must not be nil");
NSString *output = nil;
-
+
// Simple print
output = [sr run:@"print 'hi'"];
- STAssertEqualObjects(output, @"hi", @"output should equal 'hi'");
-
+ XCTAssertEqualObjects(output, @"hi", @"output should equal 'hi'");
+
// Simple python expression
output = [sr run:@"print '-'.join(['a', 'b', 'c'])"];
- STAssertEqualObjects(output, @"a-b-c", @"output should equal 'a-b-c'");
+ XCTAssertEqualObjects(output, @"a-b-c", @"output should equal 'a-b-c'");
}
- (void)testBashScript {
GTMScriptRunner *sr = [GTMScriptRunner runnerWithBash];
- STAssertNotNil(sr, @"Script runner must not be nil");
+ XCTAssertNotNil(sr, @"Script runner must not be nil");
NSString *output = nil;
-
+
// Simple sh script
output = [sr runScript:shScript_];
- STAssertEqualObjects(output, @"1", @"output should equal '1'");
-
+ XCTAssertEqualObjects(output, @"1", @"output should equal '1'");
+
// Simple sh script with 1 command line argument
output = [sr runScript:shScript_ withArgs:[NSArray arrayWithObject:@"2"]];
- STAssertEqualObjects(output, @"2", @"output should equal '2'");
+ XCTAssertEqualObjects(output, @"2", @"output should equal '2'");
}
- (void)testPerlScript {
GTMScriptRunner *sr = [GTMScriptRunner runnerWithPerl];
- STAssertNotNil(sr, @"Script runner must not be nil");
+ XCTAssertNotNil(sr, @"Script runner must not be nil");
NSString *output = nil;
-
+
// Simple Perl script
output = [sr runScript:perlScript_];
- STAssertEqualObjects(output, @"1", @"output should equal '1'");
-
+ XCTAssertEqualObjects(output, @"1", @"output should equal '1'");
+
// Simple perl script with 1 command line argument
output = [sr runScript:perlScript_ withArgs:[NSArray arrayWithObject:@"2"]];
- STAssertEqualObjects(output, @"2", @"output should equal '2'");
+ XCTAssertEqualObjects(output, @"2", @"output should equal '2'");
}
- (void)testEnvironment {
GTMScriptRunner *sr = [GTMScriptRunner runner];
- STAssertNotNil(sr, @"Script runner must not be nil");
+ XCTAssertNotNil(sr, @"Script runner must not be nil");
NSString *output = nil;
NSString *error = nil;
- STAssertNil([sr environment], @"should start w/ empty env");
-
+ XCTAssertNil([sr environment], @"should start w/ empty env");
+
output = [sr run:@"/usr/bin/env | wc -l" standardError:&error];
int numVars = [output intValue];
- STAssertGreaterThan(numVars, 0,
- @"numVars should be positive. StdErr %@", error);
+ XCTAssertGreaterThan(numVars, 0,
+ @"numVars should be positive. StdErr %@", error);
// By default the environment is wiped clean, however shells often add a few
- // of their own env vars after things have been wiped. For example, sh will
+ // of their own env vars after things have been wiped. For example, sh will
// add about 3 env vars (PWD, _, and SHLVL).
- STAssertLessThan(numVars, 5, @"Our env should be almost empty");
-
+ XCTAssertLessThan(numVars, 5, @"Our env should be almost empty");
+
NSDictionary *newEnv = [NSDictionary dictionaryWithObject:@"bar"
forKey:@"foo"];
[sr setEnvironment:newEnv];
output = [sr run:@"/usr/bin/env | wc -l" standardError:&error];
- STAssertEquals([output intValue], numVars + 1,
- @"should have one more env var now. StdErr %@", error);
-
+ XCTAssertEqual([output intValue], numVars + 1,
+ @"should have one more env var now. StdErr %@", error);
+
[sr setEnvironment:nil];
output = [sr run:@"/usr/bin/env | wc -l" standardError:&error];
- STAssertEquals([output intValue], numVars,
- @"should be back down to %d vars. StdErr:%@", numVars, error);
-
- NSMutableDictionary *currVars
+ XCTAssertEqual([output intValue], numVars,
+ @"should be back down to %d vars. StdErr:%@", numVars, error);
+
+ NSMutableDictionary *currVars
= [[[[NSProcessInfo processInfo] environment] mutableCopy] autorelease];
-
+
// When debugging a release build _ was not in the processInfo environment
// causing the assert below to fail. Not sure why, but it appeared
// to be harmless, and easy to account for.
[currVars setObject:@"/usr/bin/env" forKey:@"_"];
[sr setEnvironment:currVars];
-
+
+ // Account for the shell level.
+ [currVars setObject:@"1" forKey:@"SHLVL"];
+
output = [sr run:@"/usr/bin/env | /usr/bin/sort" standardError:&error];
NSArray *lineArray = [output componentsSeparatedByString:@"\n"];
- STAssertEquals([lineArray count], [currVars count],
- @"StdErr:%@\nCurrentEnvironment:\n%@\nExpected environment:\n%@",
- error, output, currVars);
+ XCTAssertEqual([lineArray count], [currVars count],
+ @"StdErr:%@\nCurrentEnvironment:\n%@\nExpected environment:\n%@",
+ error, output, currVars);
}
- (void)testDescription {
// make sure description doesn't choke
GTMScriptRunner *sr = [GTMScriptRunner runner];
- STAssertNotNil(sr, @"Script runner must not be nil");
- STAssertGreaterThan([[sr description] length], (NSUInteger)10,
- @"expected a description of at least 10 chars");
+ XCTAssertNotNil(sr, @"Script runner must not be nil");
+ XCTAssertGreaterThan([[sr description] length], (NSUInteger)10,
+ @"expected a description of at least 10 chars");
}
- (void)testRunCommandOutputHandling {
// Test whitespace trimming & stdout vs. stderr w/ run command api
-
+
GTMScriptRunner *sr = [GTMScriptRunner runnerWithBash];
- STAssertNotNil(sr, @"Script runner must not be nil");
+ XCTAssertNotNil(sr, @"Script runner must not be nil");
NSString *output = nil;
NSString *err = nil;
-
+
// w/o whitespace trimming
{
[sr setTrimsWhitespace:NO];
- STAssertFalse([sr trimsWhitespace], @"setTrimsWhitespace to NO failed");
-
+ XCTAssertFalse([sr trimsWhitespace], @"setTrimsWhitespace to NO failed");
+
// test stdout
output = [sr run:@"echo \" on out \"" standardError:&err];
- STAssertEqualObjects(output, @" on out \n", @"failed to get stdout output");
- STAssertNil(err, @"stderr should have been empty");
-
+ XCTAssertEqualObjects(output, @" on out \n", @"failed to get stdout output");
+ XCTAssertNil(err, @"stderr should have been empty");
+
// test stderr
output = [sr run:@"echo \" on err \" > /dev/stderr" standardError:&err];
- STAssertNil(output, @"stdout should have been empty");
- STAssertEqualObjects(err, @" on err \n", nil);
+ XCTAssertNil(output, @"stdout should have been empty");
+ XCTAssertEqualObjects(err, @" on err \n");
}
-
+
// w/ whitespace trimming
{
[sr setTrimsWhitespace:YES];
- STAssertTrue([sr trimsWhitespace], @"setTrimsWhitespace to YES failed");
-
+ XCTAssertTrue([sr trimsWhitespace], @"setTrimsWhitespace to YES failed");
+
// test stdout
output = [sr run:@"echo \" on out \"" standardError:&err];
- STAssertEqualObjects(output, @"on out", @"failed to get stdout output");
- STAssertNil(err, @"stderr should have been empty");
-
+ XCTAssertEqualObjects(output, @"on out", @"failed to get stdout output");
+ XCTAssertNil(err, @"stderr should have been empty");
+
// test stderr
output = [sr run:@"echo \" on err \" > /dev/stderr" standardError:&err];
- STAssertNil(output, @"stdout should have been empty");
- STAssertEqualObjects(err, @"on err", nil);
+ XCTAssertNil(output, @"stdout should have been empty");
+ XCTAssertEqualObjects(err, @"on err");
}
}
@@ -276,102 +278,96 @@
// Test whitespace trimming & stdout vs. stderr w/ script api
GTMScriptRunner *sr = [GTMScriptRunner runner];
- STAssertNotNil(sr, @"Script runner must not be nil");
+ XCTAssertNotNil(sr, @"Script runner must not be nil");
NSString *output = nil;
NSString *err = nil;
// w/o whitespace trimming
{
[sr setTrimsWhitespace:NO];
- STAssertFalse([sr trimsWhitespace], @"setTrimsWhitespace to NO failed");
-
+ XCTAssertFalse([sr trimsWhitespace], @"setTrimsWhitespace to NO failed");
+
// test stdout
output = [sr runScript:shOutputScript_
withArgs:[NSArray arrayWithObject:@"out"]
standardError:&err];
- STAssertEqualObjects(output, @" on out \n", nil);
- STAssertNil(err, @"stderr should have been empty");
-
+ XCTAssertEqualObjects(output, @" on out \n");
+ XCTAssertNil(err, @"stderr should have been empty");
+
// test stderr
output = [sr runScript:shOutputScript_
withArgs:[NSArray arrayWithObject:@"err"]
standardError:&err];
- STAssertNil(output, @"stdout should have been empty");
- STAssertEqualObjects(err, @" on err \n", nil);
+ XCTAssertNil(output, @"stdout should have been empty");
+ XCTAssertEqualObjects(err, @" on err \n");
}
-
+
// w/ whitespace trimming
{
[sr setTrimsWhitespace:YES];
- STAssertTrue([sr trimsWhitespace], @"setTrimsWhitespace to YES failed");
-
+ XCTAssertTrue([sr trimsWhitespace], @"setTrimsWhitespace to YES failed");
+
// test stdout
output = [sr runScript:shOutputScript_
withArgs:[NSArray arrayWithObject:@"out"]
standardError:&err];
- STAssertEqualObjects(output, @"on out", nil);
- STAssertNil(err, @"stderr should have been empty");
-
+ XCTAssertEqualObjects(output, @"on out");
+ XCTAssertNil(err, @"stderr should have been empty");
+
// test stderr
output = [sr runScript:shOutputScript_
withArgs:[NSArray arrayWithObject:@"err"]
standardError:&err];
- STAssertNil(output, @"stdout should have been empty");
- STAssertEqualObjects(err, @"on err", nil);
+ XCTAssertNil(output, @"stdout should have been empty");
+ XCTAssertEqualObjects(err, @"on err");
}
}
- (void)testBadRunCommandInput {
GTMScriptRunner *sr = [GTMScriptRunner runner];
- STAssertNotNil(sr, @"Script runner must not be nil");
+ XCTAssertNotNil(sr, @"Script runner must not be nil");
NSString *err = nil;
-
- STAssertNil([sr run:nil standardError:&err], nil);
- STAssertNil(err, nil);
+
+ XCTAssertNil([sr run:nil standardError:&err]);
+ XCTAssertNil(err);
}
- (void)testBadScriptInput {
GTMScriptRunner *sr = [GTMScriptRunner runner];
- STAssertNotNil(sr, @"Script runner must not be nil");
+ XCTAssertNotNil(sr, @"Script runner must not be nil");
NSString *err = nil;
-
- STAssertNil([sr runScript:nil withArgs:nil standardError:&err], nil);
- STAssertNil(err, nil);
- STAssertNil([sr runScript:@"/path/that/does/not/exists/foo/bar/baz"
- withArgs:nil standardError:&err], nil);
- STAssertNotNil(err,
- @"should have gotten something about the path not existing");
+
+ XCTAssertNil([sr runScript:nil withArgs:nil standardError:&err]);
+ XCTAssertNil(err);
+ XCTAssertNil([sr runScript:@"/path/that/does/not/exists/foo/bar/baz"
+ withArgs:nil standardError:&err]);
+ XCTAssertNotNil(err,
+ @"should have gotten something about the path not existing");
}
- (void)testBadCmdInterpreter {
GTMScriptRunner *sr =
[GTMScriptRunner runnerWithInterpreter:@"/path/that/does/not/exists/interpreter"];
- STAssertNotNil(sr, @"Script runner must not be nil");
+ XCTAssertNotNil(sr, @"Script runner must not be nil");
NSString *err = nil;
-
- STAssertNil([sr run:nil standardError:&err], nil);
- STAssertNil(err, nil);
- [GTMUnitTestDevLog expectString:@"Failed to launch interpreter "
- "'/path/that/does/not/exists/interpreter' due to: launch path not accessible"];
- STAssertNil([sr run:@"ls /" standardError:&err], nil);
- STAssertNil(err, nil);
+
+ XCTAssertNil([sr run:nil standardError:&err]);
+ XCTAssertNil(err);
+ XCTAssertNil([sr run:@"ls /" standardError:&err]);
+ XCTAssertNil(err);
}
- (void)testBadScriptInterpreter {
GTMScriptRunner *sr =
[GTMScriptRunner runnerWithInterpreter:@"/path/that/does/not/exists/interpreter"];
- STAssertNotNil(sr, @"Script runner must not be nil");
+ XCTAssertNotNil(sr, @"Script runner must not be nil");
NSString *err = nil;
-
- [GTMUnitTestDevLog expectString:@"Failed to launch interpreter "
- "'/path/that/does/not/exists/interpreter' due to: launch path not accessible"];
- STAssertNil([sr runScript:shScript_ withArgs:nil standardError:&err], nil);
- STAssertNil(err, nil);
- [GTMUnitTestDevLog expectString:@"Failed to launch interpreter "
- "'/path/that/does/not/exists/interpreter' due to: launch path not accessible"];
- STAssertNil([sr runScript:@"/path/that/does/not/exists/foo/bar/baz"
- withArgs:nil standardError:&err], nil);
- STAssertNil(err, nil);
+
+ XCTAssertNil([sr runScript:shScript_ withArgs:nil standardError:&err]);
+ XCTAssertNil(err);
+ XCTAssertNil([sr runScript:@"/path/that/does/not/exists/foo/bar/baz"
+ withArgs:nil standardError:&err]);
+ XCTAssertNil(err);
}
- (void)testLargeOutput {
@@ -379,9 +375,9 @@
// http://code.google.com/p/google-toolbox-for-mac/issues/detail?id=25
GTMScriptRunner *sr = [GTMScriptRunner runnerWithPython];
- STAssertNotNil(sr, @"Script runner must not be nil");
+ XCTAssertNotNil(sr, @"Script runner must not be nil");
NSString *output = nil, *err = nil, *cmd = nil;
-
+
#define GENERATOR_FORMAT_STR \
@"import sys\n" \
@"block = '.' * 512\n" \
@@ -393,33 +389,33 @@
@" sys.stdout.write(block)\n" \
@" if to_where in [ 'e', 'b' ]:\n" \
@" sys.stderr.write(block)\n"
-
+
// Make sure we get both blocks
cmd = [NSString stringWithFormat:GENERATOR_FORMAT_STR, @"'b1'"];
- STAssertNotNil(cmd, nil);
+ XCTAssertNotNil(cmd);
output = [sr run:cmd standardError:&err];
- STAssertEquals([output length], (NSUInteger)512, nil);
- STAssertEquals([err length], (NSUInteger)512, nil);
-
+ XCTAssertEqual([output length], (NSUInteger)512);
+ XCTAssertEqual([err length], (NSUInteger)512);
+
// Test a large amount of data on only one connections at a time.
cmd = [NSString stringWithFormat:GENERATOR_FORMAT_STR, @"'b1', 'o200'"];
- STAssertNotNil(cmd, nil);
+ XCTAssertNotNil(cmd);
output = [sr run:cmd standardError:&err];
- STAssertEquals([output length], (NSUInteger)(512 + 512*200), nil);
- STAssertEquals([err length], (NSUInteger)512, nil);
+ XCTAssertEqual([output length], (NSUInteger)(512 + 512*200));
+ XCTAssertEqual([err length], (NSUInteger)512);
cmd = [NSString stringWithFormat:GENERATOR_FORMAT_STR, @"'b1', 'e200'"];
- STAssertNotNil(cmd, nil);
+ XCTAssertNotNil(cmd);
output = [sr run:cmd standardError:&err];
- STAssertEquals([output length], (NSUInteger)512, nil);
- STAssertEquals([err length], (NSUInteger)(512 + 512*200), nil);
+ XCTAssertEqual([output length], (NSUInteger)512);
+ XCTAssertEqual([err length], (NSUInteger)(512 + 512*200));
// Now send a large amount down both to make sure we spool it all in.
cmd = [NSString stringWithFormat:GENERATOR_FORMAT_STR, @"'b200'"];
- STAssertNotNil(cmd, nil);
+ XCTAssertNotNil(cmd);
output = [sr run:cmd standardError:&err];
- STAssertEquals([output length], (NSUInteger)(512*200), nil);
- STAssertEquals([err length], (NSUInteger)(512*200), nil);
+ XCTAssertEqual([output length], (NSUInteger)(512*200));
+ XCTAssertEqual([err length], (NSUInteger)(512*200));
}
@@ -428,44 +424,44 @@
@implementation GTMScriptRunnerTest (PrivateMethods)
- (void)helperTestBourneShellUsingScriptRunner:(GTMScriptRunner *)sr {
- STAssertNotNil(sr, @"Script runner must not be nil");
+ XCTAssertNotNil(sr, @"Script runner must not be nil");
NSString *output = nil;
-
+
// Simple command
output = [sr run:@"ls /etc/passwd"];
- STAssertEqualObjects(output, @"/etc/passwd", @"output should equal '/etc/passwd'");
-
+ XCTAssertEqualObjects(output, @"/etc/passwd", @"output should equal '/etc/passwd'");
+
// Simple command pipe-line
- output = [sr run:@"ls /etc/ | grep passwd | tail -1"];
- STAssertEqualObjects(output, @"passwd", @"output should equal 'passwd'");
-
+ output = [sr run:@"ls /etc/ | grep cups | tail -1"];
+ XCTAssertEqualObjects(output, @"cups", @"output should equal 'cups'");
+
// Simple pipe-line with quotes and awk variables
output = [sr run:@"ps jaxww | awk '{print $2}' | sort -nr | tail -2 | head -1"];
- STAssertEqualObjects(output, @"1", @"output should equal '1'");
-
+ XCTAssertEqualObjects(output, @"1", @"output should equal '1'");
+
// Simple shell loop with variables
output = [sr run:@"i=0; while [ $i -lt 100 ]; do i=$((i+1)); done; echo $i"];
- STAssertEqualObjects(output, @"100", @"output should equal '100'");
-
+ XCTAssertEqualObjects(output, @"100", @"output should equal '100'");
+
// Simple command with newlines
output = [sr run:@"i=1\necho $i"];
- STAssertEqualObjects(output, @"1", @"output should equal '1'");
-
+ XCTAssertEqualObjects(output, @"1", @"output should equal '1'");
+
// Simple full shell script
output = [sr run:@"#!/bin/sh\ni=1\necho $i\n"];
- STAssertEqualObjects(output, @"1", @"output should equal '1'");
-
+ XCTAssertEqualObjects(output, @"1", @"output should equal '1'");
+
NSString *err = nil;
-
+
// Test getting standard error with no stdout
output = [sr run:@"ls /etc/does-not-exist" standardError:&err];
- STAssertNil(output, @"output should be nil due to expected error");
- STAssertEqualObjects(err, @"ls: /etc/does-not-exist: No such file or directory", @"");
-
+ XCTAssertNil(output, @"output should be nil due to expected error");
+ XCTAssertEqualObjects(err, @"ls: /etc/does-not-exist: No such file or directory", @"");
+
// Test getting standard output along with some standard error
output = [sr run:@"ls /etc/does-not-exist /etc/passwd" standardError:&err];
- STAssertEqualObjects(output, @"/etc/passwd", @"");
- STAssertEqualObjects(err, @"ls: /etc/does-not-exist: No such file or directory", @"");
+ XCTAssertEqualObjects(output, @"/etc/passwd", @"");
+ XCTAssertEqualObjects(err, @"ls: /etc/does-not-exist: No such file or directory", @"");
}
@end
diff --git a/Foundation/GTMServiceManagement.c b/Foundation/GTMServiceManagement.c
index 5e41ba0..dfd0dc6 100644
--- a/Foundation/GTMServiceManagement.c
+++ b/Foundation/GTMServiceManagement.c
@@ -382,8 +382,11 @@ CFTypeRef GTMCFTypeCreateFromLaunchData(launch_data_t ldata,
}
case LAUNCH_DATA_OPAQUE: {
- size_t size = launch_data_get_opaque_size(ldata);
+ // Must get the data before we get the size.
+ // Otherwise the size will come back faulty on macOS 10.11.6.
+ // Radar: 28509492 launch_data_get_opaque_size gives wrong size
void *data = launch_data_get_opaque(ldata);
+ size_t size = launch_data_get_opaque_size(ldata);
cf_type_ref = CFDataCreate(kCFAllocatorDefault, data, size);
break;
}
@@ -784,46 +787,4 @@ CFDictionaryRef GTMSMCopyAllJobDictionaries(void) {
return dict;
}
-// Some private SPIs defined by apple in the launchd sources
-// http://opensource.apple.com/source/launchd/launchd-258.25/launchd/src/
-// and
-// http://opensource.apple.com/source/launchd/launchd-329.3/launchd/src/
-// It turns out that they renamed the enum that I need to use between 10.5 and
-// 10.6. Luckily if we request the 10_5 value on 10_6 we get an error
-// so we just ask for the 10_5 value first, and then the 10_6 value second.
-
-typedef enum {
- VPROC_GSK_ENVIRONMENT_10_5 = 10,
- VPROC_GSK_ENVIRONMENT_10_6 = 11
-} vproc_gsk_t;
-
-extern vproc_err_t vproc_swap_complex(vproc_t vp,
- vproc_gsk_t key,
- launch_data_t inval,
- launch_data_t *outval);
-
-CFDictionaryRef GTMCopyLaunchdExports(void) {
- launch_data_t resp;
- CFDictionaryRef dict = NULL;
- vproc_err_t err = vproc_swap_complex(NULL,
- VPROC_GSK_ENVIRONMENT_10_5,
- NULL,
- &resp);
- if (err) {
- err = vproc_swap_complex(NULL, VPROC_GSK_ENVIRONMENT_10_6, NULL, &resp);
- }
- if (err == NULL) {
- CFErrorRef error = NULL;
- dict = GTMCFTypeCreateFromLaunchData(resp, false, &error);
- if (error) {
-#ifdef DEBUG
- CFShow(error);
-#endif // DEBUG
- CFRelease(error);
- }
- launch_data_free(resp);
- }
- return dict;
-}
-
#endif // if MAC_OS_X_VERSION_MIN_REQUIRED > MAC_OS_X_VERSION_10_4
diff --git a/Foundation/GTMServiceManagement.h b/Foundation/GTMServiceManagement.h
index 11fc4b5..aea0cbf 100644
--- a/Foundation/GTMServiceManagement.h
+++ b/Foundation/GTMServiceManagement.h
@@ -68,10 +68,6 @@ CFTypeRef GTMCFTypeCreateFromLaunchData(launch_data_t ldata,
bool convert_non_standard_objects,
CFErrorRef *error);
-// Returns the list of exports defined by launchd.
-// Caller is takes ownership of the returned type.
-CFDictionaryRef GTMCopyLaunchdExports();
-
GTM_EXTERN_C_END
#endif // if MAC_OS_X_VERSION_MIN_REQUIRED > MAC_OS_X_VERSION_10_4
diff --git a/Foundation/GTMServiceManagementTest.m b/Foundation/GTMServiceManagementTest.m
index 95ef0b4..79881f3 100644
--- a/Foundation/GTMServiceManagementTest.m
+++ b/Foundation/GTMServiceManagementTest.m
@@ -23,7 +23,6 @@
#import "GTMSenTestCase.h"
#import <servers/bootstrap.h>
-#define STANDARD_JOB_LABEL "com.apple.launchctl.Background"
#define OUR_JOB_LABEL "com.google.gtm.GTMServiceManagementTest.job"
#define BAD_JOB_LABEL "com.google.gtm.GTMServiceManagementTest.badjob"
#define TEST_HARNESS_LABEL "com.google.gtm.GTMServiceManagementTestHarness"
@@ -58,68 +57,87 @@ static NSString const *kGTMSocketName
nil];
CFErrorRef error = NULL;
launch_data_t launchDict = GTMLaunchDataCreateFromCFType(topDict, &error);
- STAssertNotNULL(launchDict, nil);
- STAssertNULL(error, @"Error: %@", error);
+ XCTAssertNotNULL(launchDict);
+ XCTAssertNULL(error, @"Error: %@", error);
NSDictionary *nsDict
= GTMCFAutorelease(GTMCFTypeCreateFromLaunchData(launchDict,
NO,
&error));
- STAssertNotNil(nsDict, nil);
- STAssertNULL(error, @"Error: %@", error);
- STAssertEqualObjects(nsDict, topDict, @"");
+ XCTAssertNotNil(nsDict);
+ XCTAssertNULL(error, @"Error: %@", error);
+ XCTAssertEqualObjects(nsDict, topDict, @"");
launch_data_free(launchDict);
// Test a bad type
NSURL *url = [NSURL URLWithString:@"http://www.google.com"];
- STAssertNotNil(url, nil);
+ XCTAssertNotNil(url);
launchDict = GTMLaunchDataCreateFromCFType(url, &error);
- STAssertNULL(launchDict, nil);
- STAssertNotNULL(error, nil);
- STAssertEqualObjects((id)CFErrorGetDomain(error),
- (id)kCFErrorDomainPOSIX, nil);
- STAssertEquals(CFErrorGetCode(error), (CFIndex)EINVAL, nil);
- CFRelease(error);
+ XCTAssertNULL(launchDict);
+ XCTAssertNotNULL(error);
+ XCTAssertEqualObjects((id)CFErrorGetDomain(error),
+ (id)kCFErrorDomainPOSIX);
+ XCTAssertEqual(CFErrorGetCode(error), (CFIndex)EINVAL);
+ if (error) {
+ CFRelease(error);
+ }
+
CFTypeRef cfType = GTMCFTypeCreateFromLaunchData(NULL, YES, &error);
- STAssertNULL(cfType, nil);
- STAssertNotNULL(error, nil);
- CFRelease(error);
+ XCTAssertNULL(cfType);
+ XCTAssertNotNULL(error);
+ if (error) {
+ CFRelease(error);
+ }
}
- (void)testJobDictionaries {
NSDictionary *jobs = GTMCFAutorelease(GTMSMCopyAllJobDictionaries());
- STAssertNotNil(jobs, nil);
- // A job that should always be around
+ XCTAssertNotNil(jobs);
+
+ // Grab an existing job
+ NSString *jobName = [[jobs allKeys] objectAtIndex:0];
NSDictionary *job
- = GTMCFAutorelease(GTMSMJobCopyDictionary(CFSTR(STANDARD_JOB_LABEL)));
- STAssertNotNil(job, nil);
+ = GTMCFAutorelease(GTMSMJobCopyDictionary((CFStringRef)jobName));
+ XCTAssertNotNil(job);
// A job that should never be around
CFTypeRef type = GTMSMJobCopyDictionary(CFSTR(BAD_JOB_LABEL));
- STAssertNULL(type, nil);
+ XCTAssertNULL(type);
}
- (void)testLaunching {
CFErrorRef error = NULL;
Boolean isGood = GTMSMJobSubmit(NULL, &error);
- STAssertFalse(isGood, nil);
- STAssertNotNULL(error, nil);
- CFRelease(error);
+ XCTAssertFalse(isGood);
+ XCTAssertNotNULL(error);
+ if (error) {
+ CFRelease(error);
+ }
+
NSDictionary *empty = [NSDictionary dictionary];
isGood = GTMSMJobSubmit((CFDictionaryRef)empty, &error);
- STAssertFalse(isGood, nil);
- STAssertNotNULL(error, nil);
- CFRelease(error);
+ XCTAssertFalse(isGood);
+ XCTAssertNotNULL(error);
+ if (error) {
+ CFRelease(error);
+ }
+
+ // Grab an existing job
+ NSDictionary *jobs = GTMCFAutorelease(GTMSMCopyAllJobDictionaries());
+ XCTAssertNotNil(jobs);
+ NSString *jobName = [[jobs allKeys] objectAtIndex:0];
NSDictionary *alreadyThere
- = [NSDictionary dictionaryWithObject:@STANDARD_JOB_LABEL
+ = [NSDictionary dictionaryWithObject:jobName
forKey:@LAUNCH_JOBKEY_LABEL];
isGood = GTMSMJobSubmit((CFDictionaryRef)alreadyThere, &error);
- STAssertFalse(isGood, nil);
- STAssertEquals([(NSError *)error code], (NSInteger)EEXIST, nil);
- CFRelease(error);
+ XCTAssertFalse(isGood);
+ XCTAssertEqual([(NSError *)error code], (NSInteger)EEXIST);
+ if (error) {
+ CFRelease(error);
+ }
NSDictionary *goodJob
= [NSDictionary dictionaryWithObjectsAndKeys:
@@ -127,26 +145,20 @@ static NSString const *kGTMSocketName
@"/bin/test", @LAUNCH_JOBKEY_PROGRAM,
nil];
isGood = GTMSMJobSubmit((CFDictionaryRef)goodJob, &error);
- STAssertTrue(isGood, nil);
- STAssertNULL(error, nil);
+ XCTAssertTrue(isGood);
+ XCTAssertNULL(error);
isGood = GTMSMJobRemove(CFSTR(OUR_JOB_LABEL), &error);
- STAssertTrue(isGood,
- @"You may need to run launchctl remove %s", OUR_JOB_LABEL);
- STAssertNULL(error, nil);
+ XCTAssertTrue(isGood,
+ @"You may need to run launchctl remove %s", OUR_JOB_LABEL);
+ XCTAssertNULL(error);
isGood = GTMSMJobRemove(CFSTR(OUR_JOB_LABEL), &error);
- STAssertFalse(isGood, nil);
- STAssertNotNULL(error, nil);
- CFRelease(error);
-}
-
-- (void)testCopyExports {
- CFDictionaryRef exports = GTMCopyLaunchdExports();
- STAssertNotNULL(exports, nil);
- NSString *user = [(NSDictionary *)exports objectForKey:@"USER"];
- STAssertEqualObjects(user, NSUserName(), nil);
- CFRelease(exports);
+ XCTAssertFalse(isGood);
+ XCTAssertNotNULL(error);
+ if (error) {
+ CFRelease(error);
+ }
}
- (void)testCheckin {
@@ -154,16 +166,19 @@ static NSString const *kGTMSocketName
// Can't check ourselves in
NSDictionary *badTest
= GTMCFAutorelease(GTMSMCopyJobCheckInDictionary(&error));
- STAssertNil(badTest, nil);
- STAssertNotNULL(error, nil);
- CFRelease(error);
+ XCTAssertNil(badTest);
+ XCTAssertNotNULL(error);
+ if (error) {
+ CFRelease(error);
+ }
+
NSBundle *testBundle = [NSBundle bundleForClass:[self class]];
- STAssertNotNil(testBundle, nil);
+ XCTAssertNotNil(testBundle);
NSString *testHarnessPath
= [testBundle pathForResource:@"GTMServiceManagementTestingHarness"
ofType:nil];
- STAssertNotNil(testHarnessPath, nil);
+ XCTAssertNotNil(testHarnessPath);
NSDictionary *machServices
= [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], @GTM_MACH_PORT_NAME,
@@ -195,22 +210,7 @@ static NSString const *kGTMSocketName
GTMSMJobRemove(CFSTR(TEST_HARNESS_LABEL), NULL);
BOOL isGood = GTMSMJobSubmit((CFDictionaryRef)job, &error);
- STAssertTrue(isGood, @"Error %@", error);
-
- NSDictionary* exports = GTMCFAutorelease(GTMCopyLaunchdExports());
- STAssertNotNULL(exports, nil);
- NSString *socketPath = [exports objectForKey:kGTMSocketKey];
- STAssertNotNULL(socketPath, nil);
- STAssertEqualObjects([socketPath lastPathComponent], kGTMSocketName, nil);
-
- mach_port_t sp = 0;
- kern_return_t rt = bootstrap_look_up(bootstrap_port,
- (char*)GTM_MACH_PORT_NAME,
- &sp);
- STAssertNotEquals(sp, (mach_port_t)0, nil);
- STAssertEquals(rt, KERN_SUCCESS, nil);
- isGood = GTMSMJobRemove(CFSTR(TEST_HARNESS_LABEL), &error);
- STAssertTrue(isGood, @"Error %@", error);
+ XCTAssertTrue(isGood, @"Error %@", error);
}
@end
diff --git a/Foundation/GTMSignalHandlerTest.m b/Foundation/GTMSignalHandlerTest.m
index 5cddcb5..bd70ecf 100644
--- a/Foundation/GTMSignalHandlerTest.m
+++ b/Foundation/GTMSignalHandlerTest.m
@@ -18,7 +18,6 @@
#import "GTMSenTestCase.h"
#import "GTMSignalHandler.h"
-#import "GTMUnitTestDevLog.h"
#import "GTMFoundationUnitTestingUtilities.h"
@interface GTMSignalHandlerTest : GTMTestCase
@@ -66,56 +65,54 @@
@implementation GTMSignalHandlerTest
- (void)nomnomnom:(int)blah {
- STFail(@"Should never be called!");
+ XCTFail(@"Should never be called!");
}
- (void)testNillage {
GTMSignalHandler *handler;
// Just an init should return nil.
- [GTMUnitTestDevLog expectString:@"Don't call init, use "
- @"initWithSignal:target:action:"];
handler = [[[GTMSignalHandler alloc] init] autorelease];
- STAssertNil(handler, nil);
+ XCTAssertNil(handler);
// Zero signal should return nil as well.
handler = [[[GTMSignalHandler alloc]
initWithSignal:0
target:self
action:@selector(nomnomnom:)] autorelease];
- STAssertNil(handler, nil);
+ XCTAssertNil(handler);
}
- (void)testSingleHandler {
SignalCounter *counter = [SignalCounter signalCounter];
- STAssertNotNil(counter, nil);
+ XCTAssertNotNil(counter);
GTMSignalHandler *handler = [[[GTMSignalHandler alloc]
initWithSignal:SIGWINCH
target:counter
action:@selector(countSignal:)]
autorelease];
- STAssertNotNil(handler, nil);
+ XCTAssertNotNil(handler);
raise(SIGWINCH);
NSRunLoop *rl = [NSRunLoop currentRunLoop];
[rl gtm_runUpToSixtySecondsWithContext:counter];
- STAssertEquals([counter count], 1, nil);
- STAssertEquals([counter lastSeen], SIGWINCH, nil);
+ XCTAssertEqual([counter count], 1);
+ XCTAssertEqual([counter lastSeen], SIGWINCH);
[counter resetShouldStop];
raise(SIGWINCH);
[rl gtm_runUpToSixtySecondsWithContext:counter];
- STAssertEquals([counter count], 2, nil);
- STAssertEquals([counter lastSeen], SIGWINCH, nil);
+ XCTAssertEqual([counter count], 2);
+ XCTAssertEqual([counter lastSeen], SIGWINCH);
[counter resetShouldStop];
// create a second one to make sure we're seding data where we want
SignalCounter *counter2 = [SignalCounter signalCounter];
- STAssertNotNil(counter2, nil);
+ XCTAssertNotNil(counter2);
[[[GTMSignalHandler alloc] initWithSignal:SIGUSR1
target:counter2
action:@selector(countSignal:)] autorelease];
@@ -123,10 +120,10 @@
raise(SIGUSR1);
[rl gtm_runUpToSixtySecondsWithContext:counter2];
- STAssertEquals([counter count], 2, nil);
- STAssertEquals([counter lastSeen], SIGWINCH, nil);
- STAssertEquals([counter2 count], 1, nil);
- STAssertEquals([counter2 lastSeen], SIGUSR1, nil);
+ XCTAssertEqual([counter count], 2);
+ XCTAssertEqual([counter lastSeen], SIGWINCH);
+ XCTAssertEqual([counter2 count], 1);
+ XCTAssertEqual([counter2 lastSeen], SIGUSR1);
[handler invalidate];
@@ -135,16 +132,16 @@
raise(SIGWINCH);
[rl runUntilDate:[NSDate dateWithTimeIntervalSinceNow:.2]];
- STAssertEquals([counter count], 2, nil);
- STAssertEquals([counter lastSeen], SIGWINCH, nil);
- STAssertEquals([counter2 count], 1, nil);
- STAssertEquals([counter2 lastSeen], SIGUSR1, nil);
+ XCTAssertEqual([counter count], 2);
+ XCTAssertEqual([counter lastSeen], SIGWINCH);
+ XCTAssertEqual([counter2 count], 1);
+ XCTAssertEqual([counter2 lastSeen], SIGUSR1);
}
- (void)testIgnore {
SignalCounter *counter = [SignalCounter signalCounter];
- STAssertNotNil(counter, nil);
+ XCTAssertNotNil(counter);
[[[GTMSignalHandler alloc] initWithSignal:SIGUSR1
target:counter
@@ -153,7 +150,7 @@
raise(SIGUSR1);
NSRunLoop *rl = [NSRunLoop currentRunLoop];
[rl runUntilDate:[NSDate dateWithTimeIntervalSinceNow:.2]];
- STAssertEquals([counter count], 0, nil);
+ XCTAssertEqual([counter count], 0);
}
diff --git a/Foundation/GTMStackTrace.h b/Foundation/GTMStackTrace.h
index eb86a66..61398ab 100644
--- a/Foundation/GTMStackTrace.h
+++ b/Foundation/GTMStackTrace.h
@@ -6,9 +6,9 @@
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy
// of the License at
-//
+//
// http://www.apache.org/licenses/LICENSE-2.0
-//
+//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
@@ -32,10 +32,10 @@ struct GTMAddressDescriptor {
};
// Returns a string containing a nicely formatted stack trace.
-//
+//
// This function gets the stack trace for the current thread. It will
// be from the caller of GTMStackTrace upwards to the top the calling stack.
-// Typically this function will be used along with some logging,
+// Typically this function will be used along with some logging,
// as in the following:
//
// MyAppLogger(@"Should never get here:\n%@", GTMStackTrace());
@@ -53,41 +53,18 @@ struct GTMAddressDescriptor {
NSString *GTMStackTrace(void);
-#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 || \
- __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_2_0
// Returns a string containing a nicely formatted stack trace from the
-// exception. Only available on 10.5 or later, uses
+// exception. Only available on 10.5 or later, uses
// -[NSException callStackReturnAddresses].
//
NSString *GTMStackTraceFromException(NSException *e);
-#endif
-
-#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5
-// Returns an array of program counters from the current thread's stack.
-// *** You should probably use GTMStackTrace() instead of this function ***
-// However, if you actually want all the PCs in "void *" form, then this
-// funtion is more convenient. This will include PCs of GTMStaceTrace and
-// its inner utility functions that you may want to strip out.
-//
-// You can use +[NSThread callStackReturnAddresses] in 10.5 or later.
-//
-// Args:
-// outPcs - an array of "void *" pointers to the program counters found on the
-// current thread's stack.
-// count - the number of entries in the outPcs array
-//
-// Returns:
-// The number of program counters actually added to outPcs.
-//
-NSUInteger GTMGetStackProgramCounters(void *outPcs[], NSUInteger count);
-#endif // MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5
// Returns an array of GTMAddressDescriptors from the current thread's stack.
// *** You should probably use GTMStackTrace() instead of this function ***
// However, if you actually want all the PCs with symbols, this is the way
// to get them. There is no memory allocations done, so no clean up is required
// except for the caller to free outDescs if they allocated it themselves.
-// This will include PCs of GTMStaceTrace and its inner utility functions that
+// This will include PCs of GTMStaceTrace and its inner utility functions that
// you may want to strip out.
//
// Args:
@@ -98,7 +75,7 @@ NSUInteger GTMGetStackProgramCounters(void *outPcs[], NSUInteger count);
// Returns:
// The number of program counters actually added to outPcs.
//
-NSUInteger GTMGetStackAddressDescriptors(struct GTMAddressDescriptor outDescs[],
+NSUInteger GTMGetStackAddressDescriptors(struct GTMAddressDescriptor outDescs[],
NSUInteger count);
#ifdef __cplusplus
diff --git a/Foundation/GTMStackTrace.m b/Foundation/GTMStackTrace.m
index 3e34ed0..4470a11 100644
--- a/Foundation/GTMStackTrace.m
+++ b/Foundation/GTMStackTrace.m
@@ -19,8 +19,9 @@
#include <stdlib.h>
#include <dlfcn.h>
#include <mach-o/nlist.h>
+#include <objc/runtime.h>
+
#include "GTMStackTrace.h"
-#include "GTMObjC2Runtime.h"
struct GTMClassDescription {
const char *class_name;
@@ -202,73 +203,10 @@ static NSString *GTMStackTraceFromAddressDescriptors(struct GTMAddressDescriptor
#pragma mark Public functions
-#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5
-// Before 10.5, we have to do this ourselves. 10.5 adds
-// +[NSThread callStackReturnAddresses].
-
-// Structure representing a small portion of a stack, starting from the saved
-// frame pointer, and continuing through the saved program counter.
-struct GTMStackFrame {
- void *saved_fp;
-#if defined (__ppc__) || defined(__ppc64__)
- void *padding;
-#endif
- void *saved_pc;
-};
-
-// __builtin_frame_address(0) is a gcc builtin that returns a pointer to the
-// current frame pointer. We then use the frame pointer to walk the stack
-// picking off program counters and other saved frame pointers. This works
-// great on i386, but PPC requires a little more work because the PC (or link
-// register) isn't always stored on the stack.
-//
-NSUInteger GTMGetStackProgramCounters(void *outPcs[], NSUInteger count) {
- if (!outPcs || (count < 1)) return 0;
-
- struct GTMStackFrame *fp;
-#if defined (__ppc__) || defined(__ppc64__)
- outPcs[0] = __builtin_return_address(0);
- fp = (struct GTMStackFrame *)__builtin_frame_address(1);
-#elif defined (__i386__) || defined(__x86_64__)
- fp = (struct GTMStackFrame *)__builtin_frame_address(0);
-#else
-#error architecture not supported
-#endif
-
- NSUInteger level = 0;
- while (level < count) {
- if (fp == NULL) {
- level--;
- break;
- }
- outPcs[level] = fp->saved_pc;
- level++;
- fp = (struct GTMStackFrame *)fp->saved_fp;
- }
-
- return level;
-}
-#endif // MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5
-
NSUInteger GTMGetStackAddressDescriptors(struct GTMAddressDescriptor outDescs[],
NSUInteger count) {
if (count < 1 || !outDescs) return 0;
NSUInteger result = 0;
-
-#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5
- // Before 10.5, we collect the stack ourselves.
-
- void **pcs = calloc(count, sizeof(void*));
- if (!pcs) return 0;
-
- NSUInteger newSize = GTMGetStackProgramCounters(pcs, count);
-
- result = GTMGetStackAddressDescriptorsForAddresses(pcs, outDescs, newSize);
- free(pcs);
-
-#else // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
- // Use +[NSThread callStackReturnAddresses]
-
NSArray *addresses = [NSThread callStackReturnAddresses];
NSUInteger addrCount = [addresses count];
if (addrCount) {
@@ -288,7 +226,6 @@ NSUInteger GTMGetStackAddressDescriptors(struct GTMAddressDescriptor outDescs[],
}
free(pcs);
}
-#endif // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
return result;
}
@@ -296,27 +233,6 @@ NSUInteger GTMGetStackAddressDescriptors(struct GTMAddressDescriptor outDescs[],
NSString *GTMStackTrace(void) {
// If we don't have enough frames, return an empty string
NSString *result = @"";
-
-#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5
- // Before 10.5, we collect the stack ourselves.
-
- // The maximum number of stack frames that we will walk. We limit this so
- // that super-duper recursive functions (or bugs) don't send us for an
- // infinite loop.
- struct GTMAddressDescriptor descs[100];
- size_t depth = sizeof(descs) / sizeof(struct GTMAddressDescriptor);
- depth = GTMGetStackAddressDescriptors(descs, depth);
-
- // Start at the second item so that GTMStackTrace and it's utility calls (of
- // which there is currently 1) is not included in the output.
- const size_t kTracesToStrip = 2;
- if (depth > kTracesToStrip) {
- result = GTMStackTraceFromAddressDescriptors(&descs[kTracesToStrip],
- (depth - kTracesToStrip));
- }
-#else // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
- // Use +[NSThread callStackReturnAddresses]
-
NSArray *addresses = [NSThread callStackReturnAddresses];
NSUInteger count = [addresses count];
if (count) {
@@ -344,14 +260,10 @@ NSString *GTMStackTrace(void) {
free(pcs);
free(descs);
}
-#endif // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
return result;
}
-#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 || \
- (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && \
- (__IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_2_0))
NSString *GTMStackTraceFromException(NSException *e) {
NSString *trace = @"";
@@ -382,5 +294,3 @@ NSString *GTMStackTraceFromException(NSException *e) {
return trace;
}
-#endif // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
- //__IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_2_0
diff --git a/Foundation/GTMStackTraceTest.m b/Foundation/GTMStackTraceTest.m
index a581c76..7b1c038 100644
--- a/Foundation/GTMStackTraceTest.m
+++ b/Foundation/GTMStackTraceTest.m
@@ -6,9 +6,9 @@
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy
// of the License at
-//
+//
// http://www.apache.org/licenses/LICENSE-2.0
-//
+//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
@@ -36,27 +36,27 @@
NSString *stacktrace = GTMStackTrace();
NSArray *stacklines = [stacktrace componentsSeparatedByString:@"\n"];
- STAssertGreaterThan([stacklines count], (NSUInteger)3,
- @"stack trace must have > 3 lines");
- STAssertLessThan([stacklines count], (NSUInteger)35,
- @"stack trace must have < 35 lines");
-
+ XCTAssertGreaterThan([stacklines count], (NSUInteger)3,
+ @"stack trace must have > 3 lines");
+ XCTAssertLessThan([stacklines count], (NSUInteger)35,
+ @"stack trace must have < 35 lines");
+
NSString *firstFrame = [stacklines objectAtIndex:0];
NSRange range = [firstFrame rangeOfString:@"testStackTraceBasic"];
- STAssertNotEquals(range.location, (NSUInteger)NSNotFound,
+ XCTAssertNotEqual(range.location, (NSUInteger)NSNotFound,
@"First frame should contain testStackTraceBasic,"
" stack trace: %@", stacktrace);
range = [firstFrame rangeOfString:@"#0"];
- STAssertNotEquals(range.location, (NSUInteger)NSNotFound,
- @"First frame should contain #0, stack trace: %@",
+ XCTAssertNotEqual(range.location, (NSUInteger)NSNotFound,
+ @"First frame should contain #0, stack trace: %@",
stacktrace);
-
+
range = [firstFrame rangeOfString:@"-"];
- STAssertNotEquals(range.location, (NSUInteger)NSNotFound,
+ XCTAssertNotEqual(range.location, (NSUInteger)NSNotFound,
@"First frame should contain - since it's "
@"an instance method: %@", stacktrace);
- STAssertTrue([[self class] classMethodTest], @"First frame should contain"
- @"+ since it's a class method");
+ XCTAssertTrue([[self class] classMethodTest], @"First frame should contain"
+ @"+ since it's a class method");
}
-(void)testGetStackAddressDescriptors {
@@ -64,28 +64,26 @@
size_t depth = sizeof(descs) / sizeof(struct GTMAddressDescriptor);
depth = GTMGetStackAddressDescriptors(descs, depth);
// Got atleast 4...
- STAssertGreaterThan(depth, (size_t)4, nil);
+ XCTAssertGreaterThan(depth, (size_t)4);
// All that we got have symbols
for (NSUInteger lp = 0 ; lp < depth ; ++lp) {
- STAssertNotNULL(descs[lp].symbol, @"didn't get a symbol at depth %lu",
- (unsigned long)lp);
+ XCTAssertNotNULL(descs[lp].symbol, @"didn't get a symbol at depth %lu",
+ (unsigned long)lp);
}
-
+
// Do it again, but don't give it enough space (to make sure it handles that)
size_t fullDepth = depth;
- STAssertGreaterThan(fullDepth, (size_t)4, nil);
+ XCTAssertGreaterThan(fullDepth, (size_t)4);
depth -= 2;
depth = GTMGetStackAddressDescriptors(descs, depth);
- STAssertLessThan(depth, fullDepth, nil);
+ XCTAssertLessThan(depth, fullDepth);
// All that we got have symbols
for (NSUInteger lp = 0 ; lp < depth ; ++lp) {
- STAssertNotNULL(descs[lp].symbol, @"didn't get a symbol at depth %lu",
- (unsigned long)lp);
+ XCTAssertNotNULL(descs[lp].symbol, @"didn't get a symbol at depth %lu",
+ (unsigned long)lp);
}
-
-}
-#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
+}
- (void)helperThatThrows {
[NSException raise:@"TestException" format:@"TestExceptionDescription"];
@@ -99,67 +97,25 @@
@catch (NSException * e) {
exception = e;
}
- STAssertNotNil(exception, nil);
+ XCTAssertNotNil(exception);
NSString *stacktrace = GTMStackTraceFromException(exception);
NSArray *stacklines = [stacktrace componentsSeparatedByString:@"\n"];
-
- STAssertGreaterThan([stacklines count], (NSUInteger)4,
- @"stack trace must have > 4 lines");
- STAssertLessThan([stacklines count], (NSUInteger)35,
- @"stack trace must have < 35 lines");
- STAssertEquals([stacklines count],
+
+ XCTAssertGreaterThan([stacklines count], (NSUInteger)4,
+ @"stack trace must have > 4 lines\n%@", stacktrace);
+ XCTAssertLessThan([stacklines count], (NSUInteger)40,
+ @"stack trace must have < 40 lines\n%@", stacktrace);
+ XCTAssertEqual([stacklines count],
[[exception callStackReturnAddresses] count],
@"stack trace should have the same number of lines as the "
@" array of return addresses. stack trace: %@", stacktrace);
-
+
// we can't look for it on a specific frame because NSException doesn't
// really document how deep the stack will be
NSRange range = [stacktrace rangeOfString:@"testStackExceptionTrace"];
- STAssertNotEquals(range.location, (NSUInteger)NSNotFound,
+ XCTAssertNotEqual(range.location, (NSUInteger)NSNotFound,
@"Stack trace should contain testStackExceptionTrace,"
" stack trace: %@", stacktrace);
}
-#endif
-
-#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5
-
-- (void)testProgramCountersBasic {
- void *pcs[10];
- NSUInteger depth = 10;
- depth = GTMGetStackProgramCounters(pcs, depth);
-
- STAssertGreaterThan(depth, (NSUInteger)3, @"stack trace must have > 3 lines");
- STAssertLessThanOrEqual(depth, (NSUInteger)10,
- @"stack trace must have < 10 lines");
-
- // pcs is an array of program counters from the stack. pcs[0] should match
- // the call into GTMGetStackProgramCounters, which is tough for us to check.
- // However, we can verify that pcs[1] is equal to our current return address
- // for our current function.
- void *current_pc = __builtin_return_address(0);
- STAssertEquals(pcs[1], current_pc, @"pcs[1] should equal the current PC");
-}
-
-- (void)testProgramCountersMore {
- void *pcs0[0];
- NSUInteger depth0 = 0;
- depth0 = GTMGetStackProgramCounters(pcs0, depth0);
- STAssertEquals(depth0, (NSUInteger)0, @"stack trace must have 0 lines");
-
- void *pcs1[1];
- NSUInteger depth1 = 1;
- depth1 = GTMGetStackProgramCounters(pcs1, depth1);
- STAssertEquals(depth1, (NSUInteger)1, @"stack trace must have 1 lines");
-
- void *pcs2[2];
- NSUInteger depth2 = 2;
- depth2 = GTMGetStackProgramCounters(pcs2, depth2);
- STAssertEquals(depth2, (NSUInteger)2, @"stack trace must have 2 lines");
- void *current_pc = __builtin_return_address(0);
- STAssertEquals(pcs2[1], current_pc, @"pcs[1] should equal the current PC");
-}
-
-#endif // MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5
-
@end
diff --git a/Foundation/GTMStringEncoding.h b/Foundation/GTMStringEncoding.h
index b74f2d9..24fa0bc 100644
--- a/Foundation/GTMStringEncoding.h
+++ b/Foundation/GTMStringEncoding.h
@@ -78,11 +78,35 @@
- (void)setPaddingChar:(char)c;
// Encode a raw binary buffer to a 7-bit ASCII string.
-- (NSString *)encode:(NSData *)data;
-- (NSString *)encodeString:(NSString *)string;
+- (NSString *)encode:(NSData *)data __attribute__((deprecated("Use encode:error:")));
+- (NSString *)encodeString:(NSString *)string __attribute__((deprecated("Use encodeString:error:")));
+
+- (NSString *)encode:(NSData *)data error:(NSError **)error;
+- (NSString *)encodeString:(NSString *)string error:(NSError **)error;
// Decode a 7-bit ASCII string to a raw binary buffer.
-- (NSData *)decode:(NSString *)string;
-- (NSString *)stringByDecoding:(NSString *)string;
+- (NSData *)decode:(NSString *)string __attribute__((deprecated("Use decode:error:")));
+- (NSString *)stringByDecoding:(NSString *)string __attribute__((deprecated("Use stringByDecoding:error:")));
+
+- (NSData *)decode:(NSString *)string error:(NSError **)error;
+- (NSString *)stringByDecoding:(NSString *)string error:(NSError **)error;
@end
+
+FOUNDATION_EXPORT NSString *const GTMStringEncodingErrorDomain;
+FOUNDATION_EXPORT NSString *const GTMStringEncodingBadCharacterIndexKey; // NSNumber
+
+typedef NS_ENUM(NSInteger, GTMStringEncodingError) {
+ // Unable to convert a buffer to NSASCIIStringEncoding.
+ GTMStringEncodingErrorUnableToConverToAscii = 1024,
+ // Unable to convert a buffer to NSUTF8StringEncoding.
+ GTMStringEncodingErrorUnableToConverToUTF8,
+ // Encountered a bad character.
+ // GTMStringEncodingBadCharacterIndexKey will have the index of the character.
+ GTMStringEncodingErrorUnknownCharacter,
+ // The data had a padding character in the middle of the data. Padding characters
+ // can only be at the end.
+ GTMStringEncodingErrorExpectedPadding,
+ // There is unexpected data at the end of the data that could not be decoded.
+ GTMStringEncodingErrorIncompleteTrailingData,
+};
diff --git a/Foundation/GTMStringEncoding.m b/Foundation/GTMStringEncoding.m
index 1cd6352..7578e86 100644
--- a/Foundation/GTMStringEncoding.m
+++ b/Foundation/GTMStringEncoding.m
@@ -18,6 +18,9 @@
#import "GTMStringEncoding.h"
+NSString *const GTMStringEncodingErrorDomain = @"com.google.GTMStringEncodingErrorDomain";
+NSString *const GTMStringEncodingBadCharacterIndexKey = @"GTMStringEncodingBadCharacterIndexKey";
+
enum {
kUnknownChar = -1,
kPaddingChar = -2,
@@ -174,9 +177,12 @@ GTM_INLINE int lcm(int a, int b) {
}
- (NSString *)encode:(NSData *)inData {
+ return [self encode:inData error:NULL];
+}
+
+- (NSString *)encode:(NSData *)inData error:(NSError **)error {
NSUInteger inLen = [inData length];
if (inLen <= 0) {
- _GTMDevLog(@"Empty input");
return @"";
}
unsigned char *inBuf = (unsigned char *)[inData bytes];
@@ -214,21 +220,52 @@ GTM_INLINE int lcm(int a, int b) {
outBuf[outPos++] = paddingChar_;
}
- _GTMDevAssert(outPos == outLen, @"Underflowed output buffer");
[outData setLength:outPos];
- return [[[NSString alloc] initWithData:outData
- encoding:NSASCIIStringEncoding] autorelease];
+ NSString *value = [[[NSString alloc] initWithData:outData
+ encoding:NSASCIIStringEncoding] autorelease];
+ if (!value) {
+ if (error) {
+ *error = [NSError errorWithDomain:GTMStringEncodingErrorDomain
+ code:GTMStringEncodingErrorUnableToConverToAscii
+ userInfo:nil];
+
+ }
+ }
+ return value;
}
- (NSString *)encodeString:(NSString *)inString {
- return [self encode:[inString dataUsingEncoding:NSUTF8StringEncoding]];
+ return [self encodeString:inString error:NULL];
+}
+
+- (NSString *)encodeString:(NSString *)inString error:(NSError **)error {
+ NSData *data = [inString dataUsingEncoding:NSUTF8StringEncoding];
+ if (!data) {
+ if (error) {
+ *error = [NSError errorWithDomain:GTMStringEncodingErrorDomain
+ code:GTMStringEncodingErrorUnableToConverToUTF8
+ userInfo:nil];
+
+ }
+ return nil;
+ }
+ return [self encode:data error:error];
}
- (NSData *)decode:(NSString *)inString {
+ return [self decode:inString error:NULL];
+}
+
+- (NSData *)decode:(NSString *)inString error:(NSError **)error {
char *inBuf = (char *)[inString cStringUsingEncoding:NSASCIIStringEncoding];
if (!inBuf) {
- _GTMDevLog(@"unable to convert buffer to ASCII");
+ if (error) {
+ *error = [NSError errorWithDomain:GTMStringEncodingErrorDomain
+ code:GTMStringEncodingErrorUnableToConverToAscii
+ userInfo:nil];
+
+ }
return nil;
}
NSUInteger inLen = strlen(inBuf);
@@ -249,12 +286,27 @@ GTM_INLINE int lcm(int a, int b) {
case kPaddingChar:
expectPad = YES;
break;
- case kUnknownChar:
- _GTMDevLog(@"Unexpected data in input pos %lu", (unsigned long)i);
+ case kUnknownChar: {
+ if (error) {
+ NSDictionary *userInfo =
+ [NSDictionary dictionaryWithObject:[NSNumber numberWithUnsignedInteger:i]
+ forKey:GTMStringEncodingBadCharacterIndexKey];
+ *error = [NSError errorWithDomain:GTMStringEncodingErrorDomain
+ code:GTMStringEncodingErrorUnknownCharacter
+ userInfo:userInfo];
+ }
return nil;
+ }
default:
if (expectPad) {
- _GTMDevLog(@"Expected further padding characters");
+ if (error) {
+ NSDictionary *userInfo =
+ [NSDictionary dictionaryWithObject:[NSNumber numberWithUnsignedInteger:i]
+ forKey:GTMStringEncodingBadCharacterIndexKey];
+ *error = [NSError errorWithDomain:GTMStringEncodingErrorDomain
+ code:GTMStringEncodingErrorExpectedPadding
+ userInfo:userInfo];
+ }
return nil;
}
buffer <<= shift_;
@@ -269,21 +321,33 @@ GTM_INLINE int lcm(int a, int b) {
}
if (bitsLeft && buffer & ((1 << bitsLeft) - 1)) {
- _GTMDevLog(@"Incomplete trailing data");
+ if (error) {
+ *error = [NSError errorWithDomain:GTMStringEncodingErrorDomain
+ code:GTMStringEncodingErrorIncompleteTrailingData
+ userInfo:nil];
+
+ }
return nil;
}
// Shorten buffer if needed due to padding chars
- _GTMDevAssert(outPos <= outLen, @"Overflowed buffer");
[outData setLength:outPos];
return outData;
}
- (NSString *)stringByDecoding:(NSString *)inString {
- NSData *ret = [self decode:inString];
- return [[[NSString alloc] initWithData:ret
- encoding:NSUTF8StringEncoding] autorelease];
+ return [self stringByDecoding:inString error:NULL];
+}
+
+- (NSString *)stringByDecoding:(NSString *)inString error:(NSError **)error {
+ NSData *ret = [self decode:inString error:error];
+ NSString *value = nil;
+ if (ret) {
+ value = [[[NSString alloc] initWithData:ret
+ encoding:NSUTF8StringEncoding] autorelease];
+ }
+ return value;
}
@end
diff --git a/Foundation/GTMStringEncodingTest.m b/Foundation/GTMStringEncodingTest.m
index e2cada7..2e843d6 100644
--- a/Foundation/GTMStringEncodingTest.m
+++ b/Foundation/GTMStringEncodingTest.m
@@ -18,7 +18,6 @@
#import "GTMSenTestCase.h"
#import "GTMStringEncoding.h"
-#import "GTMUnitTestDevLog.h"
@interface GTMStringEncodingTest : GTMTestCase
@end
@@ -29,22 +28,31 @@
- (void)testEmptyInputs {
GTMStringEncoding *coder = [GTMStringEncoding stringEncodingWithString:@"01"];
- [GTMUnitTestDevLog expectString:@"Empty input"];
- STAssertEqualStrings([coder encode:[NSData data]], @"", nil);
- [GTMUnitTestDevLog expectString:@"Empty input"];
- STAssertEqualObjects([coder encodeString:@""], @"", nil);
- STAssertEqualObjects([coder decode:@""], [NSData data], nil);
- STAssertEqualStrings([coder stringByDecoding:@""], @"", nil);
+ NSError *error = nil;
+ XCTAssertEqualStrings([coder encode:[NSData data] error:&error], @"");
+ XCTAssertNil(error);
+ error = nil;
+ XCTAssertEqualObjects([coder encodeString:@"" error:&error], @"");
+ XCTAssertNil(error);
+ error = nil;
+ XCTAssertEqualObjects([coder decode:@"" error:&error], [NSData data]);
+ XCTAssertNil(error);
+ error = nil;
+ XCTAssertEqualStrings([coder stringByDecoding:@"" error:&error], @"");
+ XCTAssertNil(error);
}
// Invalid inputs should result in nil outputs.
- (void)testInvalidInputs {
GTMStringEncoding *coder = [GTMStringEncoding stringEncodingWithString:@"01"];
-
- [GTMUnitTestDevLog expectString:@"unable to convert buffer to ASCII"];
- STAssertNil([coder decode:nil], nil);
- [GTMUnitTestDevLog expectString:@"Unexpected data in input pos 0"];
- STAssertNil([coder decode:@"banana"], nil);
+ NSError *error = nil;
+
+ XCTAssertNil([coder decode:nil error:&error]);
+ XCTAssertEqual([error code], GTMStringEncodingErrorUnableToConverToAscii);
+ XCTAssertNil([coder decode:@"banana" error:&error]);
+ XCTAssertEqual([error code], GTMStringEncodingErrorUnknownCharacter);
+ XCTAssertEqualObjects([[error userInfo] objectForKey:GTMStringEncodingBadCharacterIndexKey],
+ [NSNumber numberWithUnsignedInteger:0]);
}
// Ignored inputs should be silently ignored.
@@ -54,27 +62,42 @@
char aa = 0xaa;
NSData *aaData = [NSData dataWithBytes:&aa length:sizeof(aa)];
- STAssertEqualObjects([coder decode:@"10101010"], aaData, nil);
+ NSError *error = nil;
+ XCTAssertEqualObjects([coder decode:@"10101010" error:&error], aaData);
+ XCTAssertNil(error);
+ error = nil;
// Inputs with ignored characters
- STAssertEqualObjects([coder decode:@"1010 1010"], aaData, nil);
- STAssertEqualObjects([coder decode:@"1010-1010"], aaData, nil);
- STAssertEqualObjects([coder decode:@"1010\n1010"], aaData, nil);
+ XCTAssertEqualObjects([coder decode:@"1010 1010" error:&error], aaData);
+ XCTAssertNil(error);
+ error = nil;
+ XCTAssertEqualObjects([coder decode:@"1010-1010" error:&error], aaData);
+ XCTAssertNil(error);
+ error = nil;
+ XCTAssertEqualObjects([coder decode:@"1010\n1010" error:&error], aaData);
+ XCTAssertNil(error);
+ error = nil;
// Invalid inputs
- [GTMUnitTestDevLog expectString:@"Unexpected data in input pos 4"];
- STAssertNil([coder decode:@"1010+1010"], nil);
+ XCTAssertNil([coder decode:@"1010+1010" error:&error]);
+ XCTAssertEqual([error code], GTMStringEncodingErrorUnknownCharacter);
+ XCTAssertEqualObjects([[error userInfo] objectForKey:GTMStringEncodingBadCharacterIndexKey],
+ [NSNumber numberWithUnsignedInteger:4]);
}
#define ASSERT_ENCODE_DECODE_STRING(coder, decoded, encoded) do { \
- STAssertEqualStrings([coder encodeString:decoded], encoded, nil); \
- STAssertEqualStrings([coder stringByDecoding:encoded], decoded, nil); \
+ XCTAssertEqualStrings([coder encodeString:decoded error:&error], encoded); \
+ XCTAssertNil(error); \
+ error = nil; \
+ XCTAssertEqualStrings([coder stringByDecoding:encoded error:&error], decoded); \
+ XCTAssertNil(error); \
+ error = nil; \
} while (0)
- (void)testBinary {
GTMStringEncoding *coder = [GTMStringEncoding binaryStringEncoding];
+ NSError *error = nil;
- [GTMUnitTestDevLog expectString:@"Empty input"];
ASSERT_ENCODE_DECODE_STRING(coder, @"", @"");
ASSERT_ENCODE_DECODE_STRING(coder, @"f", @"01100110");
ASSERT_ENCODE_DECODE_STRING(coder, @"fo", @"0110011001101111");
@@ -122,15 +145,18 @@
NSData *allValuesData = [NSData dataWithBytes:&allValuesBytes
length:sizeof(allValuesBytes)];
- STAssertEqualObjects([coder decode:allValues], allValuesData, nil);
- STAssertEqualStrings([coder encode:allValuesData], allValues, nil);
+ XCTAssertEqualObjects([coder decode:allValues error:&error], allValuesData);
+ XCTAssertNil(error);
+ error = nil;
+ XCTAssertEqualStrings([coder encode:allValuesData error:&error], allValues);
+ XCTAssertNil(error);
}
- (void)testBase64 {
// RFC4648 test vectors
GTMStringEncoding *coder = [GTMStringEncoding rfc4648Base64StringEncoding];
+ NSError *error = nil;
- [GTMUnitTestDevLog expectString:@"Empty input"];
ASSERT_ENCODE_DECODE_STRING(coder, @"", @"");
ASSERT_ENCODE_DECODE_STRING(coder, @"f", @"Zg==");
ASSERT_ENCODE_DECODE_STRING(coder, @"fo", @"Zm8=");
@@ -153,8 +179,11 @@
NSData *allValuesData = [NSData dataWithBytes:&allValuesBytes
length:sizeof(allValuesBytes)];
- STAssertEqualObjects([coder decode:allValues], allValuesData, nil);
- STAssertEqualStrings([coder encode:allValuesData], allValues, nil);
+ XCTAssertEqualObjects([coder decode:allValues error:&error], allValuesData);
+ XCTAssertNil(error);
+ error = nil;
+ XCTAssertEqualStrings([coder encode:allValuesData error:&error], allValues);
+ XCTAssertNil(error);
}
- (void)testBase64Websafe {
@@ -162,7 +191,7 @@
GTMStringEncoding *coder =
[GTMStringEncoding rfc4648Base64WebsafeStringEncoding];
- [GTMUnitTestDevLog expectString:@"Empty input"];
+ NSError *error = nil;
ASSERT_ENCODE_DECODE_STRING(coder, @"", @"");
ASSERT_ENCODE_DECODE_STRING(coder, @"f", @"Zg==");
ASSERT_ENCODE_DECODE_STRING(coder, @"fo", @"Zm8=");
@@ -185,15 +214,18 @@
NSData *allValuesData = [NSData dataWithBytes:&allValuesBytes
length:sizeof(allValuesBytes)];
- STAssertEqualObjects([coder decode:allValues], allValuesData, nil);
- STAssertEqualStrings([coder encode:allValuesData], allValues, nil);
+ XCTAssertEqualObjects([coder decode:allValues error:&error], allValuesData);
+ XCTAssertNil(error);
+ error = nil;
+ XCTAssertEqualStrings([coder encode:allValuesData error:&error], allValues);
+ XCTAssertNil(error);
}
- (void)testBase32 {
// RFC4648 test vectors
GTMStringEncoding *coder = [GTMStringEncoding rfc4648Base32StringEncoding];
- [GTMUnitTestDevLog expectString:@"Empty input"];
+ NSError *error = nil;
ASSERT_ENCODE_DECODE_STRING(coder, @"", @"");
ASSERT_ENCODE_DECODE_STRING(coder, @"f", @"MY======");
ASSERT_ENCODE_DECODE_STRING(coder, @"fo", @"MZXQ====");
@@ -217,15 +249,18 @@
NSData *allValuesData = [NSData dataWithBytes:&allValuesBytes
length:sizeof(allValuesBytes)];
- STAssertEqualObjects([coder decode:allValues], allValuesData, nil);
- STAssertEqualStrings([coder encode:allValuesData], allValues, nil);
+ XCTAssertEqualObjects([coder decode:allValues error:&error], allValuesData);
+ XCTAssertNil(error);
+ error = nil;
+ XCTAssertEqualStrings([coder encode:allValuesData error:&error], allValues);
+ XCTAssertNil(error);
}
- (void)testBase32Hex {
// RFC4648 test vectors
GTMStringEncoding *coder = [GTMStringEncoding rfc4648Base32HexStringEncoding];
- [GTMUnitTestDevLog expectString:@"Empty input"];
+ NSError *error = nil;
ASSERT_ENCODE_DECODE_STRING(coder, @"", @"");
ASSERT_ENCODE_DECODE_STRING(coder, @"f", @"CO======");
ASSERT_ENCODE_DECODE_STRING(coder, @"fo", @"CPNG====");
@@ -249,15 +284,18 @@
NSData *allValuesData = [NSData dataWithBytes:&allValuesBytes
length:sizeof(allValuesBytes)];
- STAssertEqualObjects([coder decode:allValues], allValuesData, nil);
- STAssertEqualStrings([coder encode:allValuesData], allValues, nil);
+ XCTAssertEqualObjects([coder decode:allValues error:&error], allValuesData);
+ XCTAssertNil(error);
+ error = nil;
+ XCTAssertEqualStrings([coder encode:allValuesData error:&error], allValues);
+ XCTAssertNil(error);
}
- (void)testHex {
// RFC4648 test vectors
GTMStringEncoding *coder = [GTMStringEncoding hexStringEncoding];
- [GTMUnitTestDevLog expectString:@"Empty input"];
+ NSError *error = nil;
ASSERT_ENCODE_DECODE_STRING(coder, @"", @"");
ASSERT_ENCODE_DECODE_STRING(coder, @"f", @"66");
ASSERT_ENCODE_DECODE_STRING(coder, @"fo", @"666F");
@@ -282,28 +320,39 @@
NSData *allValuesData = [NSData dataWithBytes:&allValuesBytes
length:sizeof(allValuesBytes)];
- STAssertEqualObjects([coder decode:allValues], allValuesData, nil);
- STAssertEqualStrings([coder encode:allValuesData], allValues, nil);
+ XCTAssertEqualObjects([coder decode:allValues error:&error], allValuesData);
+ XCTAssertNil(error);
+ error = nil;
+ XCTAssertEqualStrings([coder encode:allValuesData error:&error], allValues);
+ XCTAssertNil(error);
+ error = nil;
// Lower case
- STAssertEqualObjects([coder decode:[allValues lowercaseString]],
- allValuesData, nil);
+ XCTAssertEqualObjects([coder decode:[allValues lowercaseString] error:&error],
+ allValuesData);
+ XCTAssertNil(error);
+ error = nil;
// Extra tests from GTMNSData+HexTest.m
NSString *testString = @"1C2F0032F40123456789ABCDEF";
char testBytes[] = { 0x1c, 0x2f, 0x00, 0x32, 0xf4, 0x01, 0x23,
0x45, 0x67, 0x89, 0xab, 0xcd, 0xef };
NSData *testData = [NSData dataWithBytes:testBytes length:sizeof(testBytes)];
- STAssertEqualStrings([coder encode:testData], testString, nil);
- STAssertEqualObjects([coder decode:testString], testData, nil);
+ error = nil;
+ XCTAssertEqualStrings([coder encode:testData error:&error], testString);
+ XCTAssertEqualObjects([coder decode:testString error:&error], testData);
// Invalid inputs
- [GTMUnitTestDevLog expectString:@"Incomplete trailing data"];
- STAssertNil([coder decode:@"1c2f003"], nil);
- [GTMUnitTestDevLog expectString:@"Unexpected data in input pos 7"];
- STAssertNil([coder decode:@"1c2f00ft"], nil);
- [GTMUnitTestDevLog expectString:@"Unexpected data in input pos 4"];
- STAssertNil([coder decode:@"abcd<C3><A9>f"], nil);
+ XCTAssertNil([coder decode:@"1c2f003" error:&error]);
+ XCTAssertEqual([error code], GTMStringEncodingErrorIncompleteTrailingData);
+ XCTAssertNil([coder decode:@"1c2f00ft" error:&error]);
+ XCTAssertEqual([error code], GTMStringEncodingErrorUnknownCharacter);
+ XCTAssertEqualObjects([[error userInfo] objectForKey:GTMStringEncodingBadCharacterIndexKey],
+ [NSNumber numberWithUnsignedInteger:7]);
+ XCTAssertNil([coder decode:@"abcd<C3><A9>f" error:&error]);
+ XCTAssertEqual([error code], GTMStringEncodingErrorUnknownCharacter);
+ XCTAssertEqualObjects([[error userInfo] objectForKey:GTMStringEncodingBadCharacterIndexKey],
+ [NSNumber numberWithUnsignedInteger:4]);
}
@end
diff --git a/Foundation/GTMSystemVersion.m b/Foundation/GTMSystemVersion.m
index f3a8559..5738d78 100644
--- a/Foundation/GTMSystemVersion.m
+++ b/Foundation/GTMSystemVersion.m
@@ -6,9 +6,9 @@
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy
// of the License at
-//
+//
// http://www.apache.org/licenses/LICENSE-2.0
-//
+//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
@@ -17,7 +17,9 @@
//
#import "GTMSystemVersion.h"
-#import "GTMObjC2Runtime.h"
+
+#import <objc/message.h>
+
#if GTM_MACOS_SDK
#import <CoreServices/CoreServices.h>
#else
@@ -51,29 +53,11 @@ static NSString *const kSystemVersionPlistPath = @"/System/Library/CoreServices/
require_noerr(Gestalt(gestaltSystemVersionMajor, &sGTMSystemVersionMajor), failedGestalt);
require_noerr(Gestalt(gestaltSystemVersionMinor, &sGTMSystemVersionMinor), failedGestalt);
require_noerr(Gestalt(gestaltSystemVersionBugFix, &sGTMSystemVersionBugFix), failedGestalt);
-
+
return;
failedGestalt:
;
-#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_3
- // gestaltSystemVersionMajor et al are only on 10.4 and above, so they
- // could fail when running on 10.3.
- SInt32 binaryCodedDec;
- OSStatus err = err = Gestalt(gestaltSystemVersion, &binaryCodedDec);
- _GTMDevAssert(!err, @"Unable to get version from Gestalt");
-
- // Note that this code will return x.9.9 for any system rev parts that are
- // greater than 9 (i.e., 10.10.10 will be 10.9.9). This shouldn't ever be a
- // problem as the code above takes care of 10.4+.
- SInt32 msb = (binaryCodedDec & 0x0000F000L) >> 12;
- msb *= 10;
- SInt32 lsb = (binaryCodedDec & 0x00000F00L) >> 8;
- sGTMSystemVersionMajor = msb + lsb;
- sGTMSystemVersionMinor = (binaryCodedDec & 0x000000F0L) >> 4;
- sGTMSystemVersionBugFix = (binaryCodedDec & 0x0000000FL);
-#endif // MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_3
-
#else // GTM_MACOS_SDK
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSString *version = nil;
@@ -81,7 +65,7 @@ static NSString *const kSystemVersionPlistPath = @"/System/Library/CoreServices/
// The intent is for this file to be Foundation level, so don't directly
// call out to UIDevice, but try to get it at runtime before falling back
// to the plist. The problem with using the plist on the Simulator is that
- // the path will be on the host system, and give us a MacOS (10.x.y)
+ // the path will be on the host system, and give us a MacOS (10.x.y)
// version number instead of an iOS version number.
Class uideviceClass = NSClassFromString(@"UIDevice");
if (uideviceClass) {
@@ -98,10 +82,10 @@ static NSString *const kSystemVersionPlistPath = @"/System/Library/CoreServices/
NSArray *versionInfo = [version componentsSeparatedByString:@"."];
NSUInteger length = [versionInfo count];
- _GTMDevAssert(length > 1 && length < 4,
+ _GTMDevAssert(length > 1 && length < 4,
@"Unparseable version %@", version);
sGTMSystemVersionMajor = [[versionInfo objectAtIndex:0] intValue];
- _GTMDevAssert(sGTMSystemVersionMajor != 0,
+ _GTMDevAssert(sGTMSystemVersionMajor != 0,
@"Unknown version for %@", version);
sGTMSystemVersionMinor = [[versionInfo objectAtIndex:1] intValue];
if (length == 3) {
@@ -130,7 +114,7 @@ static NSString *const kSystemVersionPlistPath = @"/System/Library/CoreServices/
// software to want this, and it costs a bit to get at startup.
// This will mainly be for unit test cases.
if (!sBuild) {
- NSDictionary *systemVersionPlist
+ NSDictionary *systemVersionPlist
= [NSDictionary dictionaryWithContentsOfFile:kSystemVersionPlistPath];
sBuild = [[systemVersionPlist objectForKey:@"ProductBuildVersion"] retain];
_GTMDevAssert(sBuild, @"Unable to get build version");
@@ -140,63 +124,51 @@ static NSString *const kSystemVersionPlistPath = @"/System/Library/CoreServices/
}
+ (BOOL)isBuildLessThan:(NSString*)build {
- NSComparisonResult result
- = [[self build] compare:build
+ NSComparisonResult result
+ = [[self build] compare:build
options:NSNumericSearch | NSCaseInsensitiveSearch];
return result == NSOrderedAscending;
}
-
+
+ (BOOL)isBuildLessThanOrEqualTo:(NSString*)build {
- NSComparisonResult result
- = [[self build] compare:build
+ NSComparisonResult result
+ = [[self build] compare:build
options:NSNumericSearch | NSCaseInsensitiveSearch];
return result != NSOrderedDescending;
}
+ (BOOL)isBuildGreaterThan:(NSString*)build {
- NSComparisonResult result
- = [[self build] compare:build
+ NSComparisonResult result
+ = [[self build] compare:build
options:NSNumericSearch | NSCaseInsensitiveSearch];
return result == NSOrderedDescending;
}
+ (BOOL)isBuildGreaterThanOrEqualTo:(NSString*)build {
- NSComparisonResult result
- = [[self build] compare:build
+ NSComparisonResult result
+ = [[self build] compare:build
options:NSNumericSearch | NSCaseInsensitiveSearch];
return result != NSOrderedAscending;
}
+ (BOOL)isBuildEqualTo:(NSString *)build {
- NSComparisonResult result
- = [[self build] compare:build
+ NSComparisonResult result
+ = [[self build] compare:build
options:NSNumericSearch | NSCaseInsensitiveSearch];
return result == NSOrderedSame;
}
#if GTM_MACOS_SDK
+ (BOOL)isPanther {
-#if defined(__MAC_10_4) && __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_4
return NO;
-#else
- return sGTMSystemVersionMajor == 10 && sGTMSystemVersionMinor == 3;
-#endif
}
+ (BOOL)isTiger {
-#if defined(__MAC_10_5) && __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_5
return NO;
-#else
- return sGTMSystemVersionMajor == 10 && sGTMSystemVersionMinor == 4;
-#endif
}
+ (BOOL)isLeopard {
-#if defined(__MAC_10_6) && __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_6
return NO;
-#else
- return sGTMSystemVersionMajor == 10 && sGTMSystemVersionMinor == 5;
-#endif
}
+ (BOOL)isSnowLeopard {
@@ -208,39 +180,19 @@ static NSString *const kSystemVersionPlistPath = @"/System/Library/CoreServices/
}
+ (BOOL)isPantherOrGreater {
-#if defined(__MAC_10_3) && __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_3
return YES;
-#else
- return (sGTMSystemVersionMajor > 10) ||
- (sGTMSystemVersionMajor == 10 && sGTMSystemVersionMinor >= 3);
-#endif
}
+ (BOOL)isTigerOrGreater {
-#if defined(__MAC_10_4) && __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_4
return YES;
-#else
- return (sGTMSystemVersionMajor > 10) ||
- (sGTMSystemVersionMajor == 10 && sGTMSystemVersionMinor >= 4);
-#endif
}
+ (BOOL)isLeopardOrGreater {
-#if defined(__MAC_10_5) && __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_5
return YES;
-#else
- return (sGTMSystemVersionMajor > 10) ||
- (sGTMSystemVersionMajor == 10 && sGTMSystemVersionMinor >= 5);
-#endif
}
+ (BOOL)isSnowLeopardOrGreater {
-#if defined(__MAC_10_6) && __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_6
return YES;
-#else
- return (sGTMSystemVersionMajor > 10) ||
- (sGTMSystemVersionMajor == 10 && sGTMSystemVersionMinor >= 6);
-#endif
}
#endif // GTM_MACOS_SDK
@@ -272,9 +224,9 @@ static NSString *const kSystemVersionPlistPath = @"/System/Library/CoreServices/
architecture = kGTMArch_i386;
#endif // __LP64__
#endif // !__POWERPC__
-
+
#endif // GTM_IPHONE_SDK
return architecture;
-}
+}
@end
diff --git a/Foundation/GTMSystemVersionTest.m b/Foundation/GTMSystemVersionTest.m
index 24e6aa5..b881233 100644
--- a/Foundation/GTMSystemVersionTest.m
+++ b/Foundation/GTMSystemVersionTest.m
@@ -6,9 +6,9 @@
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy
// of the License at
-//
+//
// http://www.apache.org/licenses/LICENSE-2.0
-//
+//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
@@ -27,67 +27,67 @@
SInt32 major;
SInt32 minor;
SInt32 bugFix;
-
+
[GTMSystemVersion getMajor:NULL minor:NULL bugFix:NULL];
[GTMSystemVersion getMajor:&major minor:NULL bugFix:NULL];
[GTMSystemVersion getMajor:NULL minor:&minor bugFix:NULL];
[GTMSystemVersion getMajor:NULL minor:NULL bugFix:&bugFix];
[GTMSystemVersion getMajor:&major minor:&minor bugFix:&bugFix];
#if GTM_IPHONE_SDK
- STAssertTrue(major >= 2 && minor >= 0 && bugFix >= 0, nil);
+ XCTAssertTrue(major >= 2 && minor >= 0 && bugFix >= 0);
#else
- STAssertTrue(major >= 10 && minor >= 3 && bugFix >= 0, nil);
+ XCTAssertTrue(major >= 10 && minor >= 3 && bugFix >= 0);
BOOL isPanther = (major == 10) && (minor == 3);
BOOL isTiger = (major == 10) && (minor == 4);
BOOL isLeopard = (major == 10) && (minor == 5);
BOOL isSnowLeopard = (major == 10) && (minor == 6);
-
+
BOOL isLater = (major > 10) || ((major == 10) && (minor > 6));
- STAssertEquals([GTMSystemVersion isPanther], isPanther, nil);
- STAssertEquals([GTMSystemVersion isPantherOrGreater],
- (BOOL)(isPanther || isTiger
- || isLeopard || isSnowLeopard || isLater), nil);
- STAssertEquals([GTMSystemVersion isTiger], isTiger, nil);
- STAssertEquals([GTMSystemVersion isTigerOrGreater],
- (BOOL)(isTiger || isLeopard || isSnowLeopard || isLater), nil);
- STAssertEquals([GTMSystemVersion isLeopard], isLeopard, nil);
- STAssertEquals([GTMSystemVersion isLeopardOrGreater],
- (BOOL)(isLeopard || isSnowLeopard || isLater), nil);
- STAssertEquals([GTMSystemVersion isSnowLeopard], isSnowLeopard, nil);
- STAssertEquals([GTMSystemVersion isSnowLeopardOrGreater],
- (BOOL)(isSnowLeopard || isLater), nil);
-#endif
+ XCTAssertEqual([GTMSystemVersion isPanther], isPanther);
+ XCTAssertEqual([GTMSystemVersion isPantherOrGreater],
+ (BOOL)(isPanther || isTiger
+ || isLeopard || isSnowLeopard || isLater));
+ XCTAssertEqual([GTMSystemVersion isTiger], isTiger);
+ XCTAssertEqual([GTMSystemVersion isTigerOrGreater],
+ (BOOL)(isTiger || isLeopard || isSnowLeopard || isLater));
+ XCTAssertEqual([GTMSystemVersion isLeopard], isLeopard);
+ XCTAssertEqual([GTMSystemVersion isLeopardOrGreater],
+ (BOOL)(isLeopard || isSnowLeopard || isLater));
+ XCTAssertEqual([GTMSystemVersion isSnowLeopard], isSnowLeopard);
+ XCTAssertEqual([GTMSystemVersion isSnowLeopardOrGreater],
+ (BOOL)(isSnowLeopard || isLater));
+#endif
}
- (void)testRuntimeArchitecture {
// Not sure how to test this short of recoding it and verifying.
// This at least executes the code for me.
- STAssertNotNil([GTMSystemVersion runtimeArchitecture], nil);
+ XCTAssertNotNil([GTMSystemVersion runtimeArchitecture]);
}
- (void)testBuild {
// Not sure how to test this short of coding up a large fragile table.
// This at least executes the code for me.
NSString *systemVersion = [GTMSystemVersion build];
- STAssertNotEquals([systemVersion length], (NSUInteger)0, nil);
-
+ XCTAssertNotEqual([systemVersion length], (NSUInteger)0);
+
NSString *smallVersion = @"1A00";
NSString *largeVersion = @"100Z100";
- STAssertTrue([GTMSystemVersion isBuildGreaterThan:smallVersion], nil);
- STAssertFalse([GTMSystemVersion isBuildGreaterThan:systemVersion], nil);
- STAssertFalse([GTMSystemVersion isBuildGreaterThan:largeVersion], nil);
- STAssertTrue([GTMSystemVersion isBuildGreaterThanOrEqualTo:smallVersion], nil);
- STAssertTrue([GTMSystemVersion isBuildGreaterThanOrEqualTo:systemVersion], nil);
- STAssertFalse([GTMSystemVersion isBuildGreaterThanOrEqualTo:largeVersion], nil);
- STAssertFalse([GTMSystemVersion isBuildEqualTo:smallVersion], nil);
- STAssertTrue([GTMSystemVersion isBuildEqualTo:systemVersion], nil);
- STAssertFalse([GTMSystemVersion isBuildEqualTo:largeVersion], nil);
- STAssertFalse([GTMSystemVersion isBuildLessThanOrEqualTo:smallVersion], nil);
- STAssertTrue([GTMSystemVersion isBuildLessThanOrEqualTo:systemVersion], nil);
- STAssertTrue([GTMSystemVersion isBuildLessThanOrEqualTo:largeVersion], nil);
- STAssertFalse([GTMSystemVersion isBuildLessThan:smallVersion], nil);
- STAssertFalse([GTMSystemVersion isBuildLessThan:systemVersion], nil);
- STAssertTrue([GTMSystemVersion isBuildLessThan:largeVersion], nil);
-
+ XCTAssertTrue([GTMSystemVersion isBuildGreaterThan:smallVersion]);
+ XCTAssertFalse([GTMSystemVersion isBuildGreaterThan:systemVersion]);
+ XCTAssertFalse([GTMSystemVersion isBuildGreaterThan:largeVersion]);
+ XCTAssertTrue([GTMSystemVersion isBuildGreaterThanOrEqualTo:smallVersion]);
+ XCTAssertTrue([GTMSystemVersion isBuildGreaterThanOrEqualTo:systemVersion]);
+ XCTAssertFalse([GTMSystemVersion isBuildGreaterThanOrEqualTo:largeVersion]);
+ XCTAssertFalse([GTMSystemVersion isBuildEqualTo:smallVersion]);
+ XCTAssertTrue([GTMSystemVersion isBuildEqualTo:systemVersion]);
+ XCTAssertFalse([GTMSystemVersion isBuildEqualTo:largeVersion]);
+ XCTAssertFalse([GTMSystemVersion isBuildLessThanOrEqualTo:smallVersion]);
+ XCTAssertTrue([GTMSystemVersion isBuildLessThanOrEqualTo:systemVersion]);
+ XCTAssertTrue([GTMSystemVersion isBuildLessThanOrEqualTo:largeVersion]);
+ XCTAssertFalse([GTMSystemVersion isBuildLessThan:smallVersion]);
+ XCTAssertFalse([GTMSystemVersion isBuildLessThan:systemVersion]);
+ XCTAssertTrue([GTMSystemVersion isBuildLessThan:largeVersion]);
+
}
@end
diff --git a/Foundation/GTMTransientRootPortProxy.h b/Foundation/GTMTransientRootPortProxy.h
deleted file mode 100644
index 5dc0a56..0000000
--- a/Foundation/GTMTransientRootPortProxy.h
+++ /dev/null
@@ -1,50 +0,0 @@
-//
-// GTMTransientRootPortProxy.h
-//
-// Copyright 2006-2009 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import <Foundation/Foundation.h>
-#import "GTMTransientRootProxy.h"
-
-@interface GTMTransientRootPortProxy : GTMTransientRootProxy {
- @private
- NSPort *receivePort_;
- NSPort *sendPort_;
-}
-
-// Returns an autoreleased instance. See below for details on args.
-+ (id)rootProxyWithReceivePort:(NSPort *)receivePort
- sendPort:(NSPort *)sendPort
- protocol:(Protocol *)protocol
- requestTimeout:(NSTimeInterval)requestTimeout
- replyTimeout:(NSTimeInterval)replyTimeout;
-
-// This function will return a GTMTransientRootProxy that is using NSPorts
-// for the connection. The |receivePort| and |sendPort| conventions
-// follow the same conventions as -[NSConnection initWithReceivePort:sendPort:].
-// Note that due to Radar 6676818 "NSConnection leaks when initialized with nil
-// sendPort" that you will leak a connection if you pass in "nil" for your
-// sendPort if you are using NSPorts (mach or socket) to communicate between
-// threads. The leak occurs on 10.5.6, and SL 10A286. This simple answer
-// is just to always use two ports to communicate. Check out the test to see
-// how we do cross thread communication.
-- (id)initWithReceivePort:(NSPort *)receivePort
- sendPort:(NSPort *)sendPort
- protocol:(Protocol *)protocol
- requestTimeout:(NSTimeInterval)requestTimeout
- replyTimeout:(NSTimeInterval)replyTimeout;
-
-@end
diff --git a/Foundation/GTMTransientRootPortProxy.m b/Foundation/GTMTransientRootPortProxy.m
deleted file mode 100644
index ee9093a..0000000
--- a/Foundation/GTMTransientRootPortProxy.m
+++ /dev/null
@@ -1,80 +0,0 @@
-//
-// GTMTransientRootPortProxy.m
-//
-// Copyright 2006-2009 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMTransientRootPortProxy.h"
-#import "GTMObjC2Runtime.h"
-
-@interface GTMTransientRootPortProxy (ProtectedMethods)
-// Returns an NSConnection for NSPorts. This method overrides the one in
-// the GTMTransientRootProxy which allows us to create a connection with a
-// NSPort.
-//
-- (NSConnection *)makeConnection;
-@end
-
-
-@implementation GTMTransientRootPortProxy
-
-+ (id)rootProxyWithReceivePort:(NSPort *)receivePort
- sendPort:(NSPort *)sendPort
- protocol:(Protocol *)protocol
- requestTimeout:(NSTimeInterval)requestTimeout
- replyTimeout:(NSTimeInterval)replyTimeout {
- return [[[self alloc] initWithReceivePort:receivePort
- sendPort:sendPort
- protocol:protocol
- requestTimeout:requestTimeout
- replyTimeout:replyTimeout] autorelease];
-}
-
-- (id)initWithReceivePort:(NSPort *)receivePort
- sendPort:(NSPort *)sendPort
- protocol:(Protocol *)protocol
- requestTimeout:(NSTimeInterval)requestTimeout
- replyTimeout:(NSTimeInterval)replyTimeout {
- if ((!sendPort && !receivePort) || !protocol) {
- [self release];
- return nil;
- }
-
- requestTimeout_ = requestTimeout;
- replyTimeout_ = replyTimeout;
-
- receivePort_ = [receivePort retain];
- sendPort_ = [sendPort retain];
-
- protocol_ = protocol; // Protocols can't be retained
- return self;
-}
-
-- (void)dealloc {
- [receivePort_ release];
- [sendPort_ release];
- [super dealloc];
-}
-
-@end
-
-@implementation GTMTransientRootPortProxy (ProtectedMethods)
-
-- (NSConnection *)makeConnection {
- return [NSConnection connectionWithReceivePort:receivePort_
- sendPort:sendPort_];
-}
-
-@end
diff --git a/Foundation/GTMTransientRootPortProxyTest.m b/Foundation/GTMTransientRootPortProxyTest.m
deleted file mode 100644
index a85498f..0000000
--- a/Foundation/GTMTransientRootPortProxyTest.m
+++ /dev/null
@@ -1,182 +0,0 @@
-//
-// GTMTransientRootPortProxyTest.m
-//
-// Copyright 2006-2009 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMSenTestCase.h"
-#import "GTMTransientRootPortProxy.h"
-
-#define kDefaultTimeout 5.0
-
-enum {
- kGTMTransientThreadConditionStarting = 777,
- kGTMTransientThreadConditionStarted,
- kGTMTransientThreadConditionQuitting,
- kGTMTransientThreadConditionQuitted
-};
-
-// === Start off declaring some auxillary data structures ===
-
-// The @protocol that we'll use for testing with.
-@protocol DOPortTestProtocol
-- (oneway void)doOneWayVoid;
-- (bycopy NSString *)doReturnStringBycopy;
-@end
-
-// The "server" we'll use to test the DO connection. This server will implement
-// our test protocol, and it will run in a separate thread from the main
-// unit testing thread, so the DO requests can be serviced.
-@interface DOPortTestServer : NSObject <DOPortTestProtocol> {
- @private
- NSPort *clientSendPort_;
- NSPort *clientReceivePort_;
-}
-- (void)runThread:(NSConditionLock *)lock;
-- (NSPort *)clientSendPort;
-- (NSPort *)clientReceivePort;
-@end
-
-@implementation DOPortTestServer
-
-- (void)runThread:(NSConditionLock *)lock {
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- NSDate *future = [NSDate dateWithTimeIntervalSinceNow:kDefaultTimeout];
- if(![lock lockWhenCondition:kGTMTransientThreadConditionStarting
- beforeDate:future]) {
- _GTMDevLog(@"Unable to acquire lock in runThread! This is BAD!");
- [pool drain];
- [NSThread exit];
- }
-
- clientSendPort_ = [NSPort port];
- clientReceivePort_ = [NSPort port];
-
- NSConnection *conn
- = [[NSConnection alloc] initWithReceivePort:clientSendPort_
- sendPort:clientReceivePort_];
- [conn setRootObject:self];
- [lock unlockWithCondition:kGTMTransientThreadConditionStarted];
- while (![lock tryLockWhenCondition:kGTMTransientThreadConditionQuitting]) {
- NSDate *runUntil = [NSDate dateWithTimeIntervalSinceNow:0.1];
- [[NSRunLoop currentRunLoop] runUntilDate:runUntil];
- }
- [conn setRootObject:nil];
- [clientSendPort_ invalidate];
- [clientReceivePort_ invalidate];
- [conn release];
- [pool drain];
- [lock unlockWithCondition:kGTMTransientThreadConditionQuitted];
-}
-
-- (NSPort *)clientSendPort {
- return clientSendPort_;
-}
-
-- (NSPort *)clientReceivePort {
- return clientReceivePort_;
-}
-
-- (oneway void)doOneWayVoid {
- // Do nothing
-}
-- (bycopy NSString *)doReturnStringBycopy {
- return @"TestString";
-}
-
-@end
-
-// === Done with auxillary data structures, now for the main test class ===
-
-@interface GTMTransientRootPortProxyTest : GTMTestCase {
- DOPortTestServer *server_;
- NSConditionLock *syncLock_;
-}
-
-@end
-
-@implementation GTMTransientRootPortProxyTest
-
-- (void)testTransientRootPortProxy {
- syncLock_ = [[[NSConditionLock alloc]
- initWithCondition:kGTMTransientThreadConditionStarting]
- autorelease];
-
- // Setup our server.
- server_ = [[[DOPortTestServer alloc] init] autorelease];
- [NSThread detachNewThreadSelector:@selector(runThread:)
- toTarget:server_
- withObject:syncLock_];
- NSDate *future = [NSDate dateWithTimeIntervalSinceNow:kDefaultTimeout];
- STAssertTrue([syncLock_ lockWhenCondition:kGTMTransientThreadConditionStarted
- beforeDate:future],
- @"Unable to start thread");
- [syncLock_ unlockWithCondition:kGTMTransientThreadConditionStarted];
-
- NSPort *receivePort = [server_ clientReceivePort];
- NSPort *sendPort = [server_ clientSendPort];
-
- GTMTransientRootPortProxy<DOPortTestProtocol> *failProxy =
- [GTMTransientRootPortProxy rootProxyWithReceivePort:nil
- sendPort:nil
- protocol:@protocol(DOPortTestProtocol)
- requestTimeout:kDefaultTimeout
- replyTimeout:kDefaultTimeout];
- STAssertNil(failProxy, @"should have failed w/o a port");
- failProxy =
- [GTMTransientRootPortProxy rootProxyWithReceivePort:receivePort
- sendPort:sendPort
- protocol:nil
- requestTimeout:kDefaultTimeout
- replyTimeout:kDefaultTimeout];
- STAssertNil(failProxy, @"should have failed w/o a protocol");
-
- GTMTransientRootPortProxy<DOPortTestProtocol> *proxy =
- [GTMTransientRootPortProxy rootProxyWithReceivePort:receivePort
- sendPort:sendPort
- protocol:@protocol(DOPortTestProtocol)
- requestTimeout:kDefaultTimeout
- replyTimeout:kDefaultTimeout];
-
- STAssertEqualObjects([proxy doReturnStringBycopy],
- @"TestString", @"proxy should have returned "
- @"'TestString'");
-
- // Redo the *exact* same test to make sure we can have multiple instances
- // in the same app.
- proxy =
- [GTMTransientRootPortProxy rootProxyWithReceivePort:receivePort
- sendPort:sendPort
- protocol:@protocol(DOPortTestProtocol)
- requestTimeout:kDefaultTimeout
- replyTimeout:kDefaultTimeout];
-
- STAssertEqualObjects([proxy doReturnStringBycopy],
- @"TestString", @"proxy should have returned "
- @"'TestString'");
- [syncLock_ tryLockWhenCondition:kGTMTransientThreadConditionStarted];
- [syncLock_ unlockWithCondition:kGTMTransientThreadConditionQuitting];
-
- // Wait for the server to shutdown so we clean up nicely.
- // The max amount of time we will wait until we abort this test.
- NSDate *timeout = [NSDate dateWithTimeIntervalSinceNow:kDefaultTimeout];
- // The server did not shutdown and we want to capture this as an error
- STAssertTrue([syncLock_ lockWhenCondition:kGTMTransientThreadConditionQuitted
- beforeDate:timeout],
- @"The server did not shutdown gracefully before the timeout.");
- [syncLock_ unlockWithCondition:kGTMTransientThreadConditionQuitted];
-}
-
-@end
diff --git a/Foundation/GTMTransientRootProxy.h b/Foundation/GTMTransientRootProxy.h
deleted file mode 100644
index 3ebb501..0000000
--- a/Foundation/GTMTransientRootProxy.h
+++ /dev/null
@@ -1,114 +0,0 @@
-//
-// GTMTransientRootProxy.h
-//
-// Copyright 2006-2009 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import <Foundation/Foundation.h>
-#import "GTMDefines.h"
-
-// Handle (re-)connecting to a transient root proxy object via DO.
-//
-// This class is designed to handle connecting and reconnecting to a Distributed
-// Objects root proxy (NSDistantObject* instance). It is a replacement for using
-// the NSDistantObject returned from NSConnection, directly. When the DO
-// connection is up, messages sent to this class are forwarded to the real
-// object (the NSDistantObject); when the DO connection is down, messages sent
-// to this class are silently swallowed. You can use the -isConnected method on
-// this class to see if the DO connection is up or down.
-//
-// This class may be useful when you need a DO connection, but the
-// server you're connected to may be going up and down. For example, the
-// web browser plugins in Google Desktop may need to connect to the Google
-// Desktop local webserver, but we'd want the browser plugins to be able to
-// gracefully handle the local Google Desktop webserver starting and stopping.
-//
-// === Example Usage ===
-//
-// Old code:
-//
-// NSDistantObject<MyProto> *o =
-// [NSConnection rootProxyForConnectionWithRegisteredName:@"server"
-// host:nil];
-// [o setProtocolForProxy:@protocol(MyProto)];
-// [o someMethodInMyProto];
-// // ... write a bunch of code to handle error conditions
-//
-// New code:
-//
-// GTMTransientRootProxy<MyProto> *o =
-// [GTMTransientRootProxy rootProxyWithRegisteredName:@"server"
-// host:nil
-// protocol:@protocol(MyProto)
-// requestTimeout:5.0
-// replyTimeout:5.0];
-// [o someMethodInMyProto];
-//
-// The 'Old code' requires you to handle all the error conditions that may
-// arise when using DO (such as the server crashing, or network going down),
-// handle properly tearing down the broken connection, and trying to reconnect
-// when the server finally comes back online. The 'New code' handles all of
-// those details for you.
-//
-// Also, when creating a GMTransientRootProxy object, you must tell it the
-// @protocol that will be used for communication - this is not optional. And
-// in order to quiet compiler warnings, you'll also want to staticly type
-// the pointer with the protocol as well.
-//
-@interface GTMTransientRootProxy : NSProxy {
- @protected
- GTM_WEAK Protocol *protocol_;
- NSDistantObject *realProxy_;
-
- NSString *registeredName_;
- NSString *host_;
-
- NSTimeInterval requestTimeout_;
- NSTimeInterval replyTimeout_;
-}
-
-// Returns an autoreleased instance
-+ (id)rootProxyWithRegisteredName:(NSString *)name
- host:(NSString *)host
- protocol:(Protocol *)protocol
- requestTimeout:(NSTimeInterval)requestTimeout
- replyTimeout:(NSTimeInterval)replyTimeout;
-
-// This function will return a GTMTransientRootProxy that is using Mach ports
-// for the connection. The |name| and |host| arguments will be used to lookup
-// the correct information to create the Mach port connection.
-//
-- (id)initWithRegisteredName:(NSString *)name
- host:(NSString *)host
- protocol:(Protocol *)protocol
- requestTimeout:(NSTimeInterval)requestTimeout
- replyTimeout:(NSTimeInterval)replyTimeout;
-
-// Returns YES if the DO connection is up and working, NO otherwise.
-//
-- (BOOL)isConnected;
-
-@end
-
-// Subclass of GTMTransientRootProxy that catches and ignores ALL exceptions.
-// This class overrides GTMTransientRootProxy's -forwardInvocation:
-// method, and wraps it in a try/catch block, and ignores all exceptions.
-//
-@interface GTMRootProxyCatchAll : GTMTransientRootProxy
-
-// Overridden, and ignores all thrown exceptions.
-- (void)forwardInvocation:(NSInvocation *)invocation;
-
-@end
diff --git a/Foundation/GTMTransientRootProxy.m b/Foundation/GTMTransientRootProxy.m
deleted file mode 100644
index 2f7dfec..0000000
--- a/Foundation/GTMTransientRootProxy.m
+++ /dev/null
@@ -1,230 +0,0 @@
-//
-// GTMTransientRootProxy.m
-//
-// Copyright 2006-2009 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMTransientRootProxy.h"
-#import "GTMObjC2Runtime.h"
-
-// Private methods on NSMethodSignature that we need to call. This method has
-// been available since 10.0, but Apple didn't add it to the headers until 10.5
-#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4
-@interface NSMethodSignature (UndeclaredMethods)
-+ (NSMethodSignature *)signatureWithObjCTypes:(const char *)types;
-@end
-#endif // MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4
-
-@interface GTMTransientRootProxy (PrivateMethods)
-// Returns an NSConnection for NSMacPorts. This method is broken out to allow
-// subclasses to override it to generate different types of NSConnections.
-- (NSConnection *)makeConnection;
-
-// Returns the "real" proxy (stored in the realProxy_ ivar) associated with this
-// instance. If realProxy_ is nil, then an attempt is made to make a connection
-// to create the realProxy_.
-//
-- (NSDistantObject *)realProxy;
-
-// "Releases" the realProxy_ ivar, and removes |self| as an observer from
-// the NSNotificationCenter.
-//
-- (void)releaseRealProxy;
-
-// Notification that a connection has died.
-- (void)connectionDidDie:(NSNotification *)notification;
-@end
-
-@implementation GTMTransientRootProxy
-
-+ (id)rootProxyWithRegisteredName:(NSString *)name
- host:(NSString *)host
- protocol:(Protocol *)protocol
- requestTimeout:(NSTimeInterval)requestTimeout
- replyTimeout:(NSTimeInterval)replyTimeout {
- return [[[self alloc] initWithRegisteredName:name
- host:host
- protocol:protocol
- requestTimeout:requestTimeout
- replyTimeout:replyTimeout] autorelease];
-}
-
-- (id)initWithRegisteredName:(NSString *)name
- host:(NSString *)host
- protocol:(Protocol *)protocol
- requestTimeout:(NSTimeInterval)requestTimeout
- replyTimeout:(NSTimeInterval)replyTimeout {
- if (!name || !protocol) {
- [self release];
- return nil;
- }
-
- requestTimeout_ = requestTimeout;
- replyTimeout_ = replyTimeout;
-
- registeredName_ = [name copy];
- host_ = [host copy];
-
- protocol_ = protocol; // Protocols can't be retained
-
- return self;
-}
-
-- (id)init {
- return [self initWithRegisteredName:nil
- host:nil
- protocol:nil
- requestTimeout:0.0
- replyTimeout:0.0];
-}
-
-- (void)dealloc {
- [self releaseRealProxy];
- [registeredName_ release];
- [host_ release];
- [super dealloc];
-}
-
-- (BOOL)isConnected {
- BOOL result = NO;
- @synchronized (self) {
- result = [[[self realProxy] connectionForProxy] isValid];
- }
- return result;
-}
-
-- (NSMethodSignature *)methodSignatureForSelector:(SEL)selector {
- struct objc_method_description mdesc;
- mdesc = protocol_getMethodDescription(protocol_, selector, YES, YES);
- NSMethodSignature *returnValue = nil;
- if (mdesc.types == NULL) {
- // COV_NF_START
- _GTMDevLog(@"Unable to get the protocol method description. Returning "
- @"nil.");
- // COV_NF_END
- } else {
- returnValue = [NSMethodSignature signatureWithObjCTypes:mdesc.types];
- }
- return returnValue;
-}
-
-- (void)forwardInvocation:(NSInvocation *)invocation {
- @try {
- NSDistantObject *target = [self realProxy];
- [invocation invokeWithTarget:target];
-
- // We need to catch NSException* here rather than "id" because we need to
- // treat |ex| as an NSException when using the -name method. Also, we're
- // only looking to catch a few types of exception here, all of which are
- // NSException types; the rest we just rethrow.
- } @catch (NSException *ex) {
- NSString *exName = [ex name];
- // If we catch an exception who's name matches any of the following types,
- // it's because the DO connection probably went down. So, we'll just
- // release our realProxy_, and attempt to reconnect on the next call.
- if ([exName isEqualToString:NSPortTimeoutException]
- || [exName isEqualToString:NSInvalidSendPortException]
- || [exName isEqualToString:NSInvalidReceivePortException]
- || [exName isEqualToString:NSFailedAuthenticationException]
- || [exName isEqualToString:NSPortSendException]
- || [exName isEqualToString:NSPortReceiveException]) {
- [self releaseRealProxy]; // COV_NF_LINE
- } else {
- // If the exception was any other type (commonly
- // NSInvalidArgumentException) then we'll just re-throw it to the caller.
- @throw;
- }
- } // COV_NF_LINE
-}
-
-@end
-
-@implementation GTMTransientRootProxy (PrivateMethods)
-
-- (NSConnection *)makeConnection {
- return [NSConnection connectionWithRegisteredName:registeredName_ host:host_];
-}
-
-- (NSDistantObject *)realProxy {
- NSDistantObject *returnProxy = nil;
-
- @synchronized (self) {
- // No change so no notification
- if (realProxy_) return realProxy_;
-
- NSConnection *conn = [self makeConnection];
- [conn setRequestTimeout:requestTimeout_];
- [conn setReplyTimeout:replyTimeout_];
- @try {
- // Try to get the root proxy for this connection's vended object.
- realProxy_ = [conn rootProxy];
- } @catch (id ex) {
- // We may fail here if we can't get the root proxy in the amount of time
- // specified by the timeout above. This may happen, for example, if the
- // server process is stopped (via SIGSTOP). We'll just ignore this, and
- // try again at the next message.
- [conn invalidate];
- return nil;
- }
- if (!realProxy_) {
- [conn invalidate];
- // Again, no change in connection status
- return nil;
- }
- [realProxy_ retain];
- [realProxy_ setProtocolForProxy:protocol_];
- NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
- [nc addObserver:self
- selector:@selector(connectionDidDie:)
- name:NSConnectionDidDieNotification
- object:conn];
- // Retain/autorelease so it lives at least the duration of this synchronize
- returnProxy = [[realProxy_ retain] autorelease];
- } // @synchronized (self)
-
- return returnProxy;
-}
-
-- (void)connectionDidDie:(NSNotification *)notification {
- [self releaseRealProxy];
-}
-
-- (void)releaseRealProxy {
- @synchronized (self) {
- [[NSNotificationCenter defaultCenter] removeObserver:self];
- // Only trigger if we had a proxy before
- if (realProxy_) {
- [realProxy_ release];
- realProxy_ = nil;
- }
- }
-}
-
-@end
-
-@implementation GTMRootProxyCatchAll
-
-- (void)forwardInvocation:(NSInvocation *)invocation {
- @try {
- [super forwardInvocation:invocation];
- }
- @catch (id ex) {
- // Log for developers, but basically ignore it.
- _GTMDevLog(@"Proxy for invoking %@ has caught and is ignoring exception: %@",
- NSStringFromSelector([invocation selector]), ex);
- }
-}
-
-@end
diff --git a/Foundation/GTMTransientRootProxyTest.m b/Foundation/GTMTransientRootProxyTest.m
deleted file mode 100644
index 821faac..0000000
--- a/Foundation/GTMTransientRootProxyTest.m
+++ /dev/null
@@ -1,231 +0,0 @@
-//
-// GMTransientRootProxyTest.m
-//
-// Copyright 2006-2009 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMSenTestCase.h"
-#import "GTMTransientRootProxy.h"
-#import "GTMUnitTestDevLog.h"
-
-#define kDefaultTimeout 5.0
-
-// === Start off declaring some auxillary data structures ===
-static NSString *const kTestServerName = @"gtm_test_server";
-static NSString *const kGTMTransientRootNameKey = @"GTMTransientRootNameKey";
-static NSString *const kGTMTransientRootLockKey = @"GTMTransientRootLockKey";
-
-enum {
- kGTMTransientThreadConditionStarting = 777,
- kGTMTransientThreadConditionStarted,
- kGTMTransientThreadConditionQuitting,
- kGTMTransientThreadConditionQuitted
-};
-
-// The @protocol that we'll use for testing with.
-@protocol DOTestProtocol
-- (oneway void)doOneWayVoid;
-- (bycopy NSString *)doReturnStringBycopy;
-- (void)throwException;
-@end
-
-// The "server" we'll use to test the DO connection. This server will implement
-// our test protocol, and it will run in a separate thread from the main
-// unit testing thread, so the DO requests can be serviced.
-@interface DOTestServer : NSObject <DOTestProtocol>
-- (void)runThread:(NSDictionary *)args;
-@end
-
-@implementation DOTestServer
-
-- (void)runThread:(NSDictionary *)args {
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- NSConditionLock *lock = [args objectForKey:kGTMTransientRootLockKey];
- NSString *serverName = [args objectForKey:kGTMTransientRootNameKey];
- NSDate *future = [NSDate dateWithTimeIntervalSinceNow:kDefaultTimeout];
- if(![lock lockWhenCondition:kGTMTransientThreadConditionStarting
- beforeDate:future]) {
- _GTMDevLog(@"Unable to acquire lock in runThread! This is BAD!");
- [pool drain];
- [NSThread exit];
- }
-
- NSConnection *conn = [[[NSConnection alloc] init] autorelease];
- [conn setRootObject:self];
- if (![conn registerName:serverName]) {
- _GTMDevLog(@"Failed to register DO root object with name '%@'",
- serverName);
- [pool drain];
- [NSThread exit];
- }
- [lock unlockWithCondition:kGTMTransientThreadConditionStarted];
- while (![lock tryLockWhenCondition:kGTMTransientThreadConditionQuitting]) {
- NSDate* runUntil = [NSDate dateWithTimeIntervalSinceNow:0.1];
- [[NSRunLoop currentRunLoop] runUntilDate:runUntil];
- }
- [conn setRootObject:nil];
- [conn registerName:nil];
- [pool drain];
- [lock unlockWithCondition:kGTMTransientThreadConditionQuitted];
-}
-
-- (oneway void)doOneWayVoid {
- // Do nothing
-}
-- (bycopy NSString *)doReturnStringBycopy {
- return @"TestString";
-}
-
-- (void)throwException {
- [NSException raise:@"testingException" format:@"for the unittest"];
-}
-
-@end
-
-// === Done with auxillary data structures, now for the main test class ===
-
-@interface GTMTransientRootProxy (GTMTransientRootProxyTest)
-- (id)init;
-@end
-
-@interface GTMTransientRootProxyTest : GTMTestCase {
- @private
- DOTestServer *server_;
- NSConditionLock *syncLock_;
-}
-@end
-
-@implementation GTMTransientRootProxyTest
-
-- (void)testTransientRootProxy {
- // Setup our server and create a unqiue server name every time we run
- NSTimeInterval timeStamp = [[NSDate date] timeIntervalSinceReferenceDate];
- NSString *serverName =
- [NSString stringWithFormat:@"%@_%f", kTestServerName, timeStamp];
- server_ = [[[DOTestServer alloc] init] autorelease];
- syncLock_ = [[[NSConditionLock alloc]
- initWithCondition:kGTMTransientThreadConditionStarting]
- autorelease];
- NSDictionary *args = [NSDictionary dictionaryWithObjectsAndKeys:
- syncLock_, kGTMTransientRootLockKey,
- serverName, kGTMTransientRootNameKey,
- nil];
- [NSThread detachNewThreadSelector:@selector(runThread:)
- toTarget:server_
- withObject:args];
- NSDate *future = [NSDate dateWithTimeIntervalSinceNow:kDefaultTimeout];
- STAssertTrue([syncLock_ lockWhenCondition:kGTMTransientThreadConditionStarted
- beforeDate:future],
- @"Unable to start thread");
- [syncLock_ unlockWithCondition:kGTMTransientThreadConditionStarted];
-
- GTMTransientRootProxy *failProxy =
- [GTMTransientRootProxy rootProxyWithRegisteredName:nil
- host:nil
- protocol:@protocol(DOTestProtocol)
- requestTimeout:kDefaultTimeout
- replyTimeout:kDefaultTimeout];
- STAssertNil(failProxy, @"should have failed w/o a name");
- failProxy =
- [GTMTransientRootProxy rootProxyWithRegisteredName:serverName
- host:nil
- protocol:nil
- requestTimeout:kDefaultTimeout
- replyTimeout:kDefaultTimeout];
- STAssertNil(failProxy, @"should have failed w/o a protocol");
- failProxy = [[[GTMTransientRootProxy alloc] init] autorelease];
- STAssertNil(failProxy, @"should have failed just calling init");
-
- GTMTransientRootProxy<DOTestProtocol> *proxy =
- [GTMTransientRootProxy rootProxyWithRegisteredName:serverName
- host:nil
- protocol:@protocol(DOTestProtocol)
- requestTimeout:kDefaultTimeout
- replyTimeout:kDefaultTimeout];
-
- STAssertEqualObjects([proxy doReturnStringBycopy], @"TestString",
- @"proxy should have returned 'TestString'");
-
- // Redo the *exact* same test to make sure we can have multiple instances
- // in the same app.
- proxy =
- [GTMTransientRootProxy rootProxyWithRegisteredName:serverName
- host:nil
- protocol:@protocol(DOTestProtocol)
- requestTimeout:kDefaultTimeout
- replyTimeout:kDefaultTimeout];
- STAssertEqualObjects([proxy doReturnStringBycopy],
- @"TestString", @"proxy should have returned "
- @"'TestString'");
-
- // Test the GTMRootProxyCatchAll within this test so we don't have to rebuild
- // the server again.
-
- GTMRootProxyCatchAll<DOTestProtocol> *catchProxy =
- [GTMRootProxyCatchAll rootProxyWithRegisteredName:serverName
- host:nil
- protocol:@protocol(DOTestProtocol)
- requestTimeout:kDefaultTimeout
- replyTimeout:kDefaultTimeout];
-
- [GTMUnitTestDevLog expectString:@"Proxy for invoking throwException has "
- @"caught and is ignoring exception: [NOTE: this exception originated in "
- @"the server.]\nfor the unittest"];
- id e = nil;
- @try {
- // Has the server throw an exception
- [catchProxy throwException];
- } @catch (id ex) {
- e = ex;
- }
- STAssertNil(e, @"The GTMRootProxyCatchAll did not catch the exception: %@.",
- e);
-
- proxy =
- [GTMTransientRootProxy rootProxyWithRegisteredName:@"FAKE_SERVER"
- host:nil
- protocol:@protocol(DOTestProtocol)
- requestTimeout:kDefaultTimeout
- replyTimeout:kDefaultTimeout];
- STAssertNotNil(proxy, @"proxy shouldn't be nil, even when registered w/ a "
- @"fake server");
- STAssertFalse([proxy isConnected], @"the proxy shouldn't be connected due to "
- @"the fake server");
-
- // Now set up a proxy, and then kill our server. We put a super short time
- // out on it, because we are expecting it to fail.
- proxy =
- [GTMTransientRootProxy rootProxyWithRegisteredName:serverName
- host:nil
- protocol:@protocol(DOTestProtocol)
- requestTimeout:0.01
- replyTimeout:0.01];
- [syncLock_ tryLockWhenCondition:kGTMTransientThreadConditionStarted];
- [syncLock_ unlockWithCondition:kGTMTransientThreadConditionQuitting];
-
- // Wait for the server to shutdown so we clean up nicely.
- // The max amount of time we will wait until we abort this test.
- NSDate *timeout = [NSDate dateWithTimeIntervalSinceNow:kDefaultTimeout];
- // The server did not shutdown and we want to capture this as an error
- STAssertTrue([syncLock_ lockWhenCondition:kGTMTransientThreadConditionQuitted
- beforeDate:timeout],
- @"The server did not shutdown gracefully before the timeout.");
- [syncLock_ unlockWithCondition:kGTMTransientThreadConditionQuitted];
-
- // This should fail gracefully because the server is dead.
- STAssertNil([proxy doReturnStringBycopy], @"proxy should have returned nil");
-}
-
-@end
diff --git a/Foundation/GTMURITemplate.h b/Foundation/GTMURITemplate.h
deleted file mode 100644
index d0e9cea..0000000
--- a/Foundation/GTMURITemplate.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/* Copyright (c) 2010 Google Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#import <Foundation/Foundation.h>
-
-#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
-
-//
-// URI Template
-//
-// http://tools.ietf.org/html/draft-gregorio-uritemplate-04
-//
-// NOTE: This implemention is only a subset of the spec. It should be able
-// to parse any template that matches the spec, but if the template makes use
-// of a feature that is not supported, it will fail with an error.
-//
-
-@interface GTMURITemplate : NSObject
-
-// Process the template. If the template uses an unsupported feature, it will
-// throw an exception to help catch that limitation. Currently unsupported
-// feature is partial result modifiers (prefix/suffix).
-//
-// valueProvider should be anything that implements -objectForKey:. At the
-// simplest level, this can be an NSDictionary. However, a custom class that
-// implements valueForKey may be better for some uses (like if the values
-// are coming out of some other structure).
-+ (NSString *)expandTemplate:(NSString *)uriTemplate values:(id)valueProvider;
-
-@end
-
-#endif // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
diff --git a/Foundation/GTMURITemplate.m b/Foundation/GTMURITemplate.m
deleted file mode 100644
index 5938b72..0000000
--- a/Foundation/GTMURITemplate.m
+++ /dev/null
@@ -1,521 +0,0 @@
-/* Copyright (c) 2010 Google Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#import "GTMURITemplate.h"
-
-#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
-
-// Key constants for handling variables.
-static NSString *const kVariable = @"variable"; // NSString
-static NSString *const kExplode = @"explode"; // NSString
-static NSString *const kPartial = @"partial"; // NSString
-static NSString *const kPartialValue = @"partialValue"; // NSNumber
-
-// Help for passing the Expansion info in one shot.
-struct ExpansionInfo {
- // Constant for the whole expansion.
- unichar expressionOperator;
- NSString *joiner;
- BOOL allowReservedInEscape;
-
- // Update for each variable.
- NSString *explode;
-};
-
-// Helper just to shorten the lines when needed.
-static NSString *UnescapeString(NSString *str) {
- return [str stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
-}
-
-static NSString *EscapeString(NSString *str, BOOL allowReserved) {
- static CFStringRef kReservedChars = CFSTR(":/?#[]@!$&'()*+,;=");
- CFStringRef allowedChars = allowReserved ? kReservedChars : NULL;
-
- // NSURL's stringByAddingPercentEscapesUsingEncoding: does not escape
- // some characters that should be escaped in URL parameters, like / and ?;
- // we'll use CFURL to force the encoding of those
- //
- // Reference: http://www.ietf.org/rfc/rfc3986.txt
- static CFStringRef kCharsToForceEscape = CFSTR("!*'();:@&=+$,/?%#[]");
- static CFStringRef kCharsToForceEscapeSansReserved = CFSTR("%");
- CFStringRef forceEscapedChars =
- allowReserved ? kCharsToForceEscapeSansReserved : kCharsToForceEscape;
-
- NSString *resultStr = str;
- CFStringRef escapedStr =
- CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
- (CFStringRef)str,
- allowedChars,
- forceEscapedChars,
- kCFStringEncodingUTF8);
- if (escapedStr) {
- resultStr = [(NSString *)escapedStr autorelease];
- }
- return resultStr;
-}
-
-@interface GTMURITemplate ()
-+ (BOOL)parseExpression:(NSString *)expression
- expressionOperator:(unichar*)outExpressionOperator
- variables:(NSMutableArray **)outVariables
- defaultValues:(NSMutableDictionary **)outDefaultValues;
-
-+ (NSString *)expandVariables:(NSArray *)variables
- expressionOperator:(unichar)expressionOperator
- values:(id)valueProvider
- defaultValues:(NSMutableDictionary *)defaultValues;
-
-+ (NSString *)expandString:(NSString *)valueStr
- variableName:(NSString *)variableName
- expansionInfo:(struct ExpansionInfo *)expansionInfo;
-+ (NSString *)expandArray:(NSArray *)valueArray
- variableName:(NSString *)variableName
- expansionInfo:(struct ExpansionInfo *)expansionInfo;
-+ (NSString *)expandDictionary:(NSDictionary *)valueDict
- variableName:(NSString *)variableName
- expansionInfo:(struct ExpansionInfo *)expansionInfo;
-@end
-
-@implementation GTMURITemplate
-
-#pragma mark Internal Helpers
-
-+ (BOOL)parseExpression:(NSString *)expression
- expressionOperator:(unichar*)outExpressionOperator
- variables:(NSMutableArray **)outVariables
- defaultValues:(NSMutableDictionary **)outDefaultValues {
-
- // Please see the spec for full details, but here are the basics:
- //
- // URI-Template = *( literals / expression )
- // expression = "{" [ operator ] variable-list "}"
- // variable-list = varspec *( "," varspec )
- // varspec = varname [ modifier ] [ "=" default ]
- // varname = varchar *( varchar / "." )
- // modifier = explode / partial
- // explode = ( "*" / "+" )
- // partial = ( substring / remainder ) offset
- //
- // Examples:
- // http://www.example.com/foo{?query,number}
- // http://maps.com/mapper{?address*}
- // http://directions.org/directions{?from+,to+}
- // http://search.org/query{?terms+=none}
- //
-
- // http://tools.ietf.org/html/draft-gregorio-uritemplate-04#section-2.2
- // Operator and op-reserve characters
- static NSCharacterSet *operatorSet = nil;
- // http://tools.ietf.org/html/draft-gregorio-uritemplate-04#section-2.4.1
- // Explode characters
- static NSCharacterSet *explodeSet = nil;
- // http://tools.ietf.org/html/draft-gregorio-uritemplate-04#section-2.4.2
- // Partial (prefix/subset) characters
- static NSCharacterSet *partialSet = nil;
-
- @synchronized(self) {
- if (operatorSet == nil) {
- operatorSet = [[NSCharacterSet characterSetWithCharactersInString:@"+./;?|!@"] retain];
- }
- if (explodeSet == nil) {
- explodeSet = [[NSCharacterSet characterSetWithCharactersInString:@"*+"] retain];
- }
- if (partialSet == nil) {
- partialSet = [[NSCharacterSet characterSetWithCharactersInString:@":^"] retain];
- }
- }
-
- // http://tools.ietf.org/html/draft-gregorio-uritemplate-04#section-3.3
- // Empty expression inlines the expression.
- if ([expression length] == 0) return NO;
-
- // Pull off any operator.
- *outExpressionOperator = 0;
- unichar firstChar = [expression characterAtIndex:0];
- if ([operatorSet characterIsMember:firstChar]) {
- *outExpressionOperator = firstChar;
- expression = [expression substringFromIndex:1];
- }
-
- if ([expression length] == 0) return NO;
-
- // Need to find at least one varspec for the expresssion to be considered
- // valid.
- BOOL gotAVarspec = NO;
-
- // Split the variable list.
- NSArray *varspecs = [expression componentsSeparatedByString:@","];
-
- // Extract the defaults, explodes and modifiers from the varspecs.
- *outVariables = [NSMutableArray arrayWithCapacity:[varspecs count]];
- for (NSString *varspec in varspecs) {
- NSString *defaultValue = nil;
-
- if ([varspec length] == 0) continue;
-
- NSMutableDictionary *varInfo =
- [NSMutableDictionary dictionaryWithCapacity:4];
-
- // Check for a default (foo=bar).
- NSRange range = [varspec rangeOfString:@"="];
- if (range.location != NSNotFound) {
- defaultValue =
- UnescapeString([varspec substringFromIndex:range.location + 1]);
- varspec = [varspec substringToIndex:range.location];
-
- if ([varspec length] == 0) continue;
- }
-
- // Check for explode (foo*).
- NSUInteger lenLessOne = [varspec length] - 1;
- if ([explodeSet characterIsMember:[varspec characterAtIndex:lenLessOne]]) {
- [varInfo setObject:[varspec substringFromIndex:lenLessOne] forKey:kExplode];
- varspec = [varspec substringToIndex:lenLessOne];
- if ([varspec length] == 0) continue;
- } else {
- // Check for partial (prefix/suffix) (foo:12).
- range = [varspec rangeOfCharacterFromSet:partialSet];
- if (range.location != NSNotFound) {
- NSString *partialMode = [varspec substringWithRange:range];
- NSString *valueStr = [varspec substringFromIndex:range.location + 1];
- // If there wasn't a value for the partial, ignore it.
- if ([valueStr length] > 0) {
- [varInfo setObject:partialMode forKey:kPartial];
- // TODO: Should validate valueStr is just a number...
- [varInfo setObject:[NSNumber numberWithInteger:[valueStr integerValue]]
- forKey:kPartialValue];
- }
- varspec = [varspec substringToIndex:range.location];
- if ([varspec length] == 0) continue;
- }
- }
-
- // Spec allows percent escaping in names, so undo that.
- varspec = UnescapeString(varspec);
-
- // Save off the cleaned up variable name.
- [varInfo setObject:varspec forKey:kVariable];
- [*outVariables addObject:varInfo];
- gotAVarspec = YES;
-
- // Now that the variable has been cleaned up, store its default.
- if (defaultValue) {
- if (*outDefaultValues == nil) {
- *outDefaultValues = [NSMutableDictionary dictionary];
- }
- [*outDefaultValues setObject:defaultValue forKey:varspec];
- }
- }
- // All done.
- return gotAVarspec;
-}
-
-+ (NSString *)expandVariables:(NSArray *)variables
- expressionOperator:(unichar)expressionOperator
- values:(id)valueProvider
- defaultValues:(NSMutableDictionary *)defaultValues {
- NSString *prefix = nil;
- struct ExpansionInfo expansionInfo;
- expansionInfo.expressionOperator = expressionOperator;
- expansionInfo.joiner = nil;
- expansionInfo.allowReservedInEscape = NO;
- switch (expressionOperator) {
- case 0:
- expansionInfo.joiner = @",";
- prefix = @"";
- break;
- case '+':
- expansionInfo.joiner = @",";
- prefix = @"";
- // The reserved character are safe from escaping.
- expansionInfo.allowReservedInEscape = YES;
- break;
- case '.':
- expansionInfo.joiner = @".";
- prefix = @".";
- break;
- case '/':
- expansionInfo.joiner = @"/";
- prefix = @"/";
- break;
- case ';':
- expansionInfo.joiner = @";";
- prefix = @";";
- break;
- case '?':
- expansionInfo.joiner = @"&";
- prefix = @"?";
- break;
- default:
- [NSException raise:@"GTMURITemplateUnsupported"
- format:@"Unknown expression operator '%C'", expressionOperator];
- break;
- }
-
- NSMutableArray *results = [NSMutableArray arrayWithCapacity:[variables count]];
-
- for (NSDictionary *varInfo in variables) {
- NSString *variable = [varInfo objectForKey:kVariable];
-
- expansionInfo.explode = [varInfo objectForKey:kExplode];
- // Look up the variable value.
- id rawValue = [valueProvider objectForKey:variable];
-
- // If the value is an empty array or dictionary, the default is still used.
- if (([rawValue isKindOfClass:[NSArray class]]
- || [rawValue isKindOfClass:[NSDictionary class]])
- && [rawValue count] == 0) {
- rawValue = nil;
- }
-
- // Got nothing? Check defaults.
- if (rawValue == nil) {
- rawValue = [defaultValues objectForKey:variable];
- }
-
- // If we didn't get any value, on to the next thing.
- if (!rawValue) {
- continue;
- }
-
- // Time do to the work...
- NSString *result = nil;
- if ([rawValue isKindOfClass:[NSString class]]) {
- result = [self expandString:rawValue
- variableName:variable
- expansionInfo:&expansionInfo];
- } else if ([rawValue isKindOfClass:[NSNumber class]]) {
- // Turn the number into a string and send it on its way.
- result = [self expandString:[rawValue stringValue]
- variableName:variable
- expansionInfo:&expansionInfo];
- } else if ([rawValue isKindOfClass:[NSArray class]]) {
- result = [self expandArray:rawValue
- variableName:variable
- expansionInfo:&expansionInfo];
- } else if ([rawValue isKindOfClass:[NSDictionary class]]) {
- result = [self expandDictionary:rawValue
- variableName:variable
- expansionInfo:&expansionInfo];
- } else {
- [NSException raise:@"GTMURITemplateUnsupported"
- format:@"Variable returned unsupported type (%@)",
- NSStringFromClass([rawValue class])];
- }
-
- // Did it generate anything?
- if (!result)
- continue;
-
- // Apply partial.
- // Defaults should get partial applied?
- // ( http://tools.ietf.org/html/draft-gregorio-uritemplate-04#section-2.5 )
- NSString *partial = [varInfo objectForKey:kPartial];
- if ([partial length] > 0) {
- [NSException raise:@"GTMURITemplateUnsupported"
- format:@"Unsupported partial on expansion %@", partial];
- }
-
- // Add the result
- [results addObject:result];
- }
-
- // Join and add any needed prefix.
- NSString *joinedResults =
- [results componentsJoinedByString:expansionInfo.joiner];
- if (([prefix length] > 0) && ([joinedResults length] > 0)) {
- return [prefix stringByAppendingString:joinedResults];
- }
- return joinedResults;
-}
-
-+ (NSString *)expandString:(NSString *)valueStr
- variableName:(NSString *)variableName
- expansionInfo:(struct ExpansionInfo *)expansionInfo {
- NSString *escapedValue =
- EscapeString(valueStr, expansionInfo->allowReservedInEscape);
- switch (expansionInfo->expressionOperator) {
- case ';':
- case '?':
- if ([valueStr length] > 0) {
- return [NSString stringWithFormat:@"%@=%@", variableName, escapedValue];
- }
- return variableName;
- default:
- return escapedValue;
- }
-}
-
-+ (NSString *)expandArray:(NSArray *)valueArray
- variableName:(NSString *)variableName
- expansionInfo:(struct ExpansionInfo *)expansionInfo {
- NSMutableArray *results = [NSMutableArray arrayWithCapacity:[valueArray count]];
- // When joining variable with value, use "var.val" except for 'path' and
- // 'form' style expression, use 'var=val' then.
- char variableValueJoiner = '.';
- char expressionOperator = expansionInfo->expressionOperator;
- if ((expressionOperator == ';') || (expressionOperator == '?')) {
- variableValueJoiner = '=';
- }
- // Loop over the values.
- for (NSString *value in valueArray) {
- // Escape it.
- value = EscapeString(value, expansionInfo->allowReservedInEscape);
- // Should variable names be used?
- if ([expansionInfo->explode isEqual:@"+"]) {
- value = [NSString stringWithFormat:@"%@%c%@",
- variableName, variableValueJoiner, value];
- }
- [results addObject:value];
- }
- if ([results count] > 0) {
- // Use the default joiner unless there was no explode request, then a list
- // always gets comma seperated.
- NSString *joiner = expansionInfo->joiner;
- if (expansionInfo->explode == nil) {
- joiner = @",";
- }
- // Join the values.
- NSString *joined = [results componentsJoinedByString:joiner];
- // 'form' style without an explode gets the variable name set to the
- // joined list of values.
- if ((expressionOperator == '?') && (expansionInfo->explode == nil)) {
- return [NSString stringWithFormat:@"%@=%@", variableName, joined];
- }
- return joined;
- }
- return nil;
-}
-
-+ (NSString *)expandDictionary:(NSDictionary *)valueDict
- variableName:(NSString *)variableName
- expansionInfo:(struct ExpansionInfo *)expansionInfo {
- NSMutableArray *results = [NSMutableArray arrayWithCapacity:[valueDict count]];
- // When joining variable with value:
- // - Default to the joiner...
- // - No explode, always comma...
- // - For 'path' and 'form' style expression, use 'var=val'.
- NSString *keyValueJoiner = expansionInfo->joiner;
- char expressionOperator = expansionInfo->expressionOperator;
- if (!expansionInfo->explode) {
- keyValueJoiner = @",";
- } else if ((expressionOperator == ';') || (expressionOperator == '?')) {
- keyValueJoiner = @"=";
- }
- // Loop over the sorted keys.
- NSArray *sortedKeys =
- [[valueDict allKeys] sortedArrayUsingSelector:@selector(compare:)];
- for (NSString *key in sortedKeys) {
- NSString *value = [valueDict objectForKey:key];
- // Escape them.
- key = EscapeString(key, expansionInfo->allowReservedInEscape);
- value = EscapeString(value, expansionInfo->allowReservedInEscape);
- // Should variable names be used?
- if ([expansionInfo->explode isEqual:@"+"]) {
- key = [NSString stringWithFormat:@"%@.%@", variableName, key];
- }
- if ((expressionOperator == '?' || expressionOperator == ';')
- && ([value length] == 0)) {
- [results addObject:key];
- } else {
- NSString *pair = [NSString stringWithFormat:@"%@%@%@",
- key, keyValueJoiner, value];
- [results addObject:pair];
- }
- }
- if ([results count]) {
- // Use the default joiner unless there was no explode request, then a list
- // always gets comma seperated.
- NSString *joiner = expansionInfo->joiner;
- if (!expansionInfo->explode) {
- joiner = @",";
- }
- // Join the values.
- NSString *joined = [results componentsJoinedByString:joiner];
- // 'form' style without an explode gets the variable name set to the
- // joined list of values.
- if ((expressionOperator == '?') && (expansionInfo->explode == nil)) {
- return [NSString stringWithFormat:@"%@=%@", variableName, joined];
- }
- return joined;
- }
- return nil;
-}
-
-#pragma mark Public API
-
-+ (NSString *)expandTemplate:(NSString *)uriTemplate values:(id)valueProvider {
- NSMutableString *result =
- [NSMutableString stringWithCapacity:[uriTemplate length]];
-
- NSScanner *scanner = [NSScanner scannerWithString:uriTemplate];
- [scanner setCharactersToBeSkipped:nil];
-
- // Defaults have to live through the full evaluation, so if any are encoured
- // they are reused throughout the expansion calls.
- NSMutableDictionary *defaultValues = nil;
-
- // Pull out the expressions for processing.
- while (![scanner isAtEnd]) {
- NSString *skipped = nil;
- // Find the next '{'.
- if ([scanner scanUpToString:@"{" intoString:&skipped]) {
- // Add anything before it to the result.
- [result appendString:skipped];
- }
- // Advance over the '{'.
- [scanner scanString:@"{" intoString:nil];
- // Collect the expression.
- NSString *expression = nil;
- if ([scanner scanUpToString:@"}" intoString:&expression]) {
- // Collect the trailing '}' on the expression.
- BOOL hasTrailingBrace = [scanner scanString:@"}" intoString:nil];
-
- // Parse the expression.
- NSMutableArray *variables = nil;
- unichar expressionOperator = 0;
- if ([self parseExpression:expression
- expressionOperator:&expressionOperator
- variables:&variables
- defaultValues:&defaultValues]) {
- // Do the expansion.
- NSString *substitution = [self expandVariables:variables
- expressionOperator:expressionOperator
- values:valueProvider
- defaultValues:defaultValues];
- if (substitution) {
- [result appendString:substitution];
- }
- } else {
- // Failed to parse, add the raw expression to the output.
- if (hasTrailingBrace) {
- [result appendFormat:@"{%@}", expression];
- } else {
- [result appendFormat:@"{%@", expression];
- }
- }
- } else if (![scanner isAtEnd]) {
- // Empty expression ('{}'). Copy over the opening brace and the trailing
- // one will be copied by the next cycle of the loop.
- [result appendString:@"{"];
- }
- }
-
- return result;
-}
-
-@end
-
-#endif // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
diff --git a/Foundation/GTMURITemplateTest.m b/Foundation/GTMURITemplateTest.m
deleted file mode 100644
index ba2c8fb..0000000
--- a/Foundation/GTMURITemplateTest.m
+++ /dev/null
@@ -1,133 +0,0 @@
-/* Copyright (c) 2010 Google Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#import "GTMURITemplate.h"
-
-#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
-
-#import "GTMSenTestCase.h"
-#import "GTMScriptRunner.h"
-
-@interface GTMURITemplateTest : GTMTestCase
-- (NSDictionary *)loadTestSuitesNamed:(NSString *)testSuitesName;
-- (NSDictionary *)parseJSONString:(NSString *)json error:(NSError **)error;
-- (void)runTestSuites:(NSDictionary *)testSuites;
-@end
-
-@implementation GTMURITemplateTest
-
-- (NSDictionary *)parseJSONString:(NSString *)json error:(NSError **)error {
- NSDictionary *result = nil;
-
- // If we ever get a JSON parser in GTM (or the system gets one, next cat?),
- // then we can skip this conversion dance.
-
- NSString *fileName = [NSString stringWithFormat:@"URITemplate_%u.plist", arc4random()];
- NSString *tempOutPath = [NSTemporaryDirectory() stringByAppendingPathComponent:fileName];
-
- GTMScriptRunner *runner = [GTMScriptRunner runnerWithPython];
- NSString *command = [NSString stringWithFormat:
- @"import Foundation\n"
- @"import json\n"
- @"str_of_json = \"\"\"%@\"\"\"\n"
- @"Foundation.NSDictionary.dictionaryWithDictionary_(json.loads(str_of_json)).writeToFile_atomically_('%@', True)\n",
- json, tempOutPath];
- NSString *errStr = nil;
- NSString *outStr = [runner run:command standardError:&errStr];
-
- STAssertNil(outStr, @"got something on stdout: %@", outStr);
- STAssertNil(errStr, @"got something on stderr: %@", errStr);
- result = [NSDictionary dictionaryWithContentsOfFile:tempOutPath];
-
- [[NSFileManager defaultManager] removeItemAtPath:tempOutPath
- error:NULL];
-
- return result;
-}
-
-- (NSDictionary *)loadTestSuitesNamed:(NSString *)testSuitesName {
- NSBundle *testBundle = [NSBundle bundleForClass:[self class]];
- STAssertNotNil(testBundle, nil);
-
- NSString *testSuitesPath = [testBundle pathForResource:testSuitesName
- ofType:nil];
- STAssertNotNil(testSuitesPath, @"%@ not found", testSuitesName);
-
- NSError *error = nil;
- NSString *testSuitesStr = [NSString stringWithContentsOfFile:testSuitesPath
- encoding:NSUTF8StringEncoding
- error:&error];
- STAssertNil(error, @"Loading %@, error %@", testSuitesName, error);
- STAssertNotNil(testSuitesStr, @"Loading %@", testSuitesName);
-
- NSDictionary *testSuites = [self parseJSONString:testSuitesStr
- error:&error];
- STAssertNil(error, @"Parsing %@, error %@", testSuitesName, error);
- STAssertNotNil(testSuites, @"failed to parse");
-
- return testSuites;
-}
-
-- (void)runTestSuites:(NSDictionary *)testSuites {
- // The file holds a set of named suites...
- for (NSString *suiteName in testSuites) {
- NSDictionary *suite = [testSuites objectForKey:suiteName];
- // Each suite has variables and test cases...
- NSDictionary *vars = [suite objectForKey:@"variables"];
- NSArray *testCases = [suite objectForKey:@"testcases"];
- STAssertTrue([vars count] != 0, @"'%@' no variables?", suiteName);
- STAssertTrue([testCases count] != 0, @"'%@' no testcases?", suiteName);
- NSUInteger idx = 0;
- for (NSArray *testCase in testCases) {
- // Each case is an array of the template and value...
- STAssertEquals([testCase count], (NSUInteger)2,
- @" test index %lu of '%@'", (unsigned long)idx, suiteName);
-
- NSString *testTemplate = [testCase objectAtIndex:0];
- NSString *expectedResult = [testCase objectAtIndex:1];
-
- NSString *result = [GTMURITemplate expandTemplate:testTemplate
- values:vars];
- STAssertEqualObjects(result, expectedResult,
- @"template was '%@' (index %lu of '%@')",
- testTemplate, (unsigned long)idx, suiteName);
- ++idx;
- }
- }
-}
-
-- (void)testRFCSuite {
- // All of the examples from the RFC are in the python impl source as json
- // test data. A copy is in the GTM tree as GTMURITemplateJSON.txt. The
- // original can be found at:
- // http://code.google.com/p/uri-templates/source/browse/trunk/testdata.json
- NSDictionary *testSuites = [self loadTestSuitesNamed:@"GTMURITemplateRFCTests.json"];
- STAssertNotNil(testSuites, nil);
- [self runTestSuites:testSuites];
-}
-
-- (void)testExtraSuite {
- // These are follow up cases not explictly listed in the spec, but does
- // as cases to confirm behaviors. The list was sent to the w3c uri list
- // for confirmation:
- // http://lists.w3.org/Archives/Public/uri/2010Sep/thread.html
- NSDictionary *testSuites = [self loadTestSuitesNamed:@"GTMURITemplateExtraTests.json"];
- STAssertNotNil(testSuites, nil);
- [self runTestSuites:testSuites];
-}
-
-@end
-
-#endif // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
diff --git a/Foundation/GTMURLBuilder.h b/Foundation/GTMURLBuilder.h
index daa8d88..f333ec4 100644
--- a/Foundation/GTMURLBuilder.h
+++ b/Foundation/GTMURLBuilder.h
@@ -34,6 +34,10 @@
#import <Foundation/Foundation.h>
#import "GTMDefines.h"
+#if (!TARGET_OS_IPHONE && defined(MAC_OS_X_VERSION_10_10) && MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10) \
+|| (TARGET_OS_IPHONE && defined(__IPHONE_8_0) && __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_8_0)
+__deprecated_msg("GTMURLBuilder is obsolete; update your app to use NSURLComponents queryItems property instead.")
+#endif
@interface GTMURLBuilder : NSObject {
@private
NSMutableDictionary *params_;
diff --git a/Foundation/GTMURLBuilder.m b/Foundation/GTMURLBuilder.m
index 31572e8..4f1a419 100644
--- a/Foundation/GTMURLBuilder.m
+++ b/Foundation/GTMURLBuilder.m
@@ -27,17 +27,6 @@
@synthesize baseURLString = baseURLString_;
-#if (!TARGET_OS_IPHONE && defined(MAC_OS_X_VERSION_10_10) && MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10) \
- || (TARGET_OS_IPHONE && defined(__IPHONE_8_0) && __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_8_0)
-#if DEBUG
-+ (void)load {
- // Apps targeting iOS 8 and OS X 10.10 and higher should no longer use GTMURLBuilder.
- NSLog(@"*** GTMURLBuilder is obsolete; update your app to use NSURLComponents"
- @" queryItems property instead.");
-}
-#endif // DEBUG
-#endif // iOS 8+/OS X 10.10+
-
+ (GTMURLBuilder *)builderWithString:(NSString *)URLString {
GTMURLBuilder *URLBuilder =
[[[GTMURLBuilder alloc] initWithString:URLString] autorelease];
diff --git a/Foundation/GTMURLBuilderTest.m b/Foundation/GTMURLBuilderTest.m
index 4c0f128..0953a9e 100644
--- a/Foundation/GTMURLBuilderTest.m
+++ b/Foundation/GTMURLBuilderTest.m
@@ -29,34 +29,34 @@
GTMURLBuilder *URLBuilder = [[[GTMURLBuilder alloc]
initWithString:@"http://google.com:8080/pathA/pathB?param=val"]
autorelease];
- STAssertEqualStrings(@"http://google.com:8080/pathA/pathB?param=val",
- [URLBuilder URLString], nil);
- STAssertEqualStrings(@"val", [URLBuilder valueForParameter:@"param"], nil);
+ XCTAssertEqualStrings(@"http://google.com:8080/pathA/pathB?param=val",
+ [URLBuilder URLString]);
+ XCTAssertEqualStrings(@"val", [URLBuilder valueForParameter:@"param"]);
URLBuilder = [GTMURLBuilder builderWithString:
@"http://google.com:8080/pathA/pathB?param=val"];
- STAssertEqualStrings(@"http://google.com:8080/pathA/pathB?param=val",
- [URLBuilder URLString], nil);
- STAssertEqualStrings(@"val", [URLBuilder valueForParameter:@"param"], nil);
+ XCTAssertEqualStrings(@"http://google.com:8080/pathA/pathB?param=val",
+ [URLBuilder URLString]);
+ XCTAssertEqualStrings(@"val", [URLBuilder valueForParameter:@"param"]);
URLBuilder = [GTMURLBuilder builderWithString:
@"http://google.com:8080/path%3AA/pathB?param=val"];
- STAssertEqualStrings(@"http://google.com:8080/path%3AA/pathB?param=val",
- [URLBuilder URLString], nil);
- STAssertEqualStrings(@"val", [URLBuilder valueForParameter:@"param"], nil);
+ XCTAssertEqualStrings(@"http://google.com:8080/path%3AA/pathB?param=val",
+ [URLBuilder URLString]);
+ XCTAssertEqualStrings(@"val", [URLBuilder valueForParameter:@"param"]);
URLBuilder = [GTMURLBuilder builderWithString:
@"http://google.com:8080/pathA/pathB%2F?param=val"];
- STAssertEqualStrings(@"http://google.com:8080/pathA/pathB%2F?param=val",
- [URLBuilder URLString], nil);
- STAssertEqualStrings(@"val", [URLBuilder valueForParameter:@"param"], nil);
+ XCTAssertEqualStrings(@"http://google.com:8080/pathA/pathB%2F?param=val",
+ [URLBuilder URLString]);
+ XCTAssertEqualStrings(@"val", [URLBuilder valueForParameter:@"param"]);
}
- (void)testMailToHandling {
GTMURLBuilder *URLBuilder =
[GTMURLBuilder builderWithString:@"mailto:ytmapp-ios@google.com"];
[URLBuilder setValue:@"blah" forParameter:@"subject"];
- STAssertEqualStrings(@"mailto:ytmapp-ios@google.com?subject=blah",
- [URLBuilder URLString], nil);
+ XCTAssertEqualStrings(@"mailto:ytmapp-ios@google.com?subject=blah",
+ [URLBuilder URLString]);
}
- (void)testIsEqualTo {
@@ -66,12 +66,12 @@
[GTMURLBuilder builderWithString:@"http://google.com/pathA/pathB"];
[URLBuilderB setValue:@"d" forParameter:@"c"];
[URLBuilderB setValue:@"b" forParameter:@"a"];
- STAssertTrue([URLBuilderA isEqual:URLBuilderB], nil);
+ XCTAssertTrue([URLBuilderA isEqual:URLBuilderB]);
[URLBuilderB setValue:@"c" forParameter:@"a"];
- STAssertFalse([URLBuilderA isEqual:URLBuilderB], nil);
+ XCTAssertFalse([URLBuilderA isEqual:URLBuilderB]);
[URLBuilderB setValue:@"b" forParameter:@"a"];
[URLBuilderB setValue:@"f" forParameter:@"e"];
- STAssertFalse([URLBuilderA isEqual:URLBuilderB], nil);
+ XCTAssertFalse([URLBuilderA isEqual:URLBuilderB]);
}
- (void)testSetParameters {
@@ -83,7 +83,7 @@
[NSDictionary dictionaryWithObjectsAndKeys:@"a", @"p1", @"b", @"p2", nil];
[URLBuilderA setParameters:params];
[URLBuilderA setValue:@"x" forParameter:@"p1"];
- STAssertTrue([URLBuilderA isEqual:URLBuilderB], nil);
+ XCTAssertTrue([URLBuilderA isEqual:URLBuilderB]);
}
- (void)testReplaceParameters {
@@ -95,17 +95,17 @@
[NSDictionary dictionaryWithObjectsAndKeys:@"a", @"p1", @"b", @"p2", nil];
[URLBuilderA setParameters:params];
[URLBuilderA setValue:@"x" forParameter:@"p1"];
- STAssertTrue([URLBuilderA isEqual:URLBuilderB], nil);
+ XCTAssertTrue([URLBuilderA isEqual:URLBuilderB]);
}
- (void)testURLPathParsing {
GTMURLBuilder *URLBuilder =
[GTMURLBuilder builderWithString:@"http://google.com/"];
- STAssertEqualStrings(@"http://google.com/", [URLBuilder URLString], nil);
+ XCTAssertEqualStrings(@"http://google.com/", [URLBuilder URLString]);
URLBuilder = [GTMURLBuilder builderWithString:@"http://google.com/pA/pB"];
- STAssertEqualStrings(@"http://google.com/pA/pB", [URLBuilder URLString], nil);
+ XCTAssertEqualStrings(@"http://google.com/pA/pB", [URLBuilder URLString]);
URLBuilder = [GTMURLBuilder builderWithString:@"http://google.com/p%3AA/pB"];
- STAssertEqualStrings(@"http://google.com/p%3AA/pB", [URLBuilder URLString], nil);
+ XCTAssertEqualStrings(@"http://google.com/p%3AA/pB", [URLBuilder URLString]);
}
@end
diff --git a/Foundation/GTMValidatingContainers.h b/Foundation/GTMValidatingContainers.h
deleted file mode 100644
index e53b541..0000000
--- a/Foundation/GTMValidatingContainers.h
+++ /dev/null
@@ -1,196 +0,0 @@
-//
-// GTMValidatingContainers.h
-//
-// Mutable containers that do verification of objects being added to them
-// at runtime. Support for arrays, dictionaries and sets.
-//
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-// GTMValidatingContainers are a set of mutable container classes that allow
-// you to have a selector on a target that is called to verify that the objects
-// being put into the container are valid. This can be controlled at compile
-// time so that you don't take the performance hit in a release build using the
-// GTM_CONTAINERS_VALIDATE macro.
-// We have supplied validators for simple cases such as kindOfClass or
-// conformsToProtocol. See GTMKindOfClassValidator et al. for details.
-//
-// Example of usage:
-// id target = [GTMKindOfClassValidator validateAgainstClass:[NSString class]];
-// SEL selector = @selector(validateObject:forContainer:);
-// GTMValidatingArray *array = [GTMValidatingArray validatingArrayWithTarget:target
-// selector:selector];
-// [array addObject:@"foo"]; // Will be good
-// [array addObject:[NSNumber numberWithInt:2]]; // Will fail
-//
-// By setting the GTM_CONTAINERS_VALIDATION_FAILED_LOG and
-// GTM_CONTAINERS_VALIDATION_FAILED_ASSERT macros you can control what happens
-// when a validation fails. If you implement your own validators, you may want
-// to control their internals using the same macros for consistency.
-//
-// Note that the validating collection types retain their targets.
-
-#import <Foundation/Foundation.h>
-#import "GTMDefines.h"
-
-// By default we only validate containers in debug. If you want to validate
-// in release as well, #define GTM_CONTAINERS_VALIDATE in a prefix or build
-// settings.
-#ifndef GTM_CONTAINERS_VALIDATE
-#if DEBUG
-#define GTM_CONTAINERS_VALIDATE 1
-#else // DEBUG
-#define GTM_CONTAINERS_VALIDATE 0
-#endif // DEBUG
-#endif // GTM_CONTAINERS_VALIDATE
-
-// If GTM_CONTAINERS_VALIDATE is on, and log and assert are both turned off
-// (see below), the object that failed validation will just not be added
-// to the container.
-
-// If you don't want log to occur on validation failure define
-// GTM_CONTAINERS_VALIDATION_FAILED_LOG to 0 in a prefix or build settings.
-#ifndef GTM_CONTAINERS_VALIDATION_FAILED_LOG
-#define GTM_CONTAINERS_VALIDATION_FAILED_LOG GTM_CONTAINERS_VALIDATE
-#endif // GTM_CONTAINERS_VALIDATION_FAILED_LOG
-
-// If you don't want an assert to occur on validation failure define
-// GTM_CONTAINERS_VALIDATION_FAILED_ASSERT to 0 in a prefix or build settings.
-#ifndef GTM_CONTAINERS_VALIDATION_FAILED_ASSERT
-#define GTM_CONTAINERS_VALIDATION_FAILED_ASSERT GTM_CONTAINERS_VALIDATE
-#endif // GTM_CONTAINERS_VALIDATION_FAILED_ASSERT
-
-// Sometimes you get a container back from somebody else and want to validate
-// that it contains what you think it contains. _GTMValidateContainer
-// allows you to do exactly that. _GTMValidateContainer... give you specialty
-// functions for doing common types of validations. These all inline to nothing
-// if GTM_CONTAINERS_VALIDATE is not defined.
-#if GTM_CONTAINERS_VALIDATE
-void _GTMValidateContainer(id container, id target, SEL selector);
-void _GTMValidateContainerContainsKindOfClass(id container, Class cls);
-void _GTMValidateContainerContainsMemberOfClass(id container, Class cls);
-void _GTMValidateContainerConformsToProtocol(id container, Protocol *prot);
-void _GTMValidateContainerItemsRespondToSelector(id container, SEL sel);
-#else
-GTM_INLINE void _GTMValidateContainer(id container, id target, SEL selector) {
-}
-GTM_INLINE void _GTMValidateContainerContainsKindOfClass(id container,
- Class cls) {
-}
-GTM_INLINE void _GTMValidateContainerContainsMemberOfClass(id container,
- Class cls) {
-}
-GTM_INLINE void _GTMValidateContainerConformsToProtocol(id container,
- Protocol *prot) {
-}
-GTM_INLINE void _GTMValidateContainerItemsRespondToSelector(id container,
- SEL sel) {
-}
-#endif
-
-
-// See comments near top of file for class description.
-@interface GTMValidatingArray : NSMutableArray {
-#if GTM_CONTAINERS_VALIDATE
- NSMutableArray *embeddedContainer_;
- id target_;
- SEL selector_;
-#endif // #if GTM_CONTAINERS_VALIDATE
-}
-+ (id)validatingArrayWithTarget:(id)target selector:(SEL)sel;
-+ (id)validatingArrayWithCapacity:(NSUInteger)capacity
- target:(id)target
- selector:(SEL)sel;
-- (id)initValidatingWithTarget:(id)target selector:(SEL)sel;
-- (id)initValidatingWithCapacity:(NSUInteger)capacity
- target:(id)target
- selector:(SEL)sel;
-@end
-
-// See comments near top of file for class description.
-@interface GTMValidatingDictionary : NSMutableDictionary {
-#if GTM_CONTAINERS_VALIDATE
- NSMutableDictionary *embeddedContainer_;
- id target_;
- SEL selector_;
-#endif // #if GTM_CONTAINERS_VALIDATE
-}
-+ (id)validatingDictionaryWithTarget:(id)target selector:(SEL)sel;
-+ (id)validatingDictionaryWithCapacity:(NSUInteger)capacity
- target:(id)target
- selector:(SEL)sel;
-- (id)initValidatingWithTarget:(id)target selector:(SEL)sel;
-- (id)initValidatingWithCapacity:(NSUInteger)capacity
- target:(id)target
- selector:(SEL)sel;
-@end
-
-// See comments near top of file for class description.
-@interface GTMValidatingSet : NSMutableSet {
-#if GTM_CONTAINERS_VALIDATE
- NSMutableSet *embeddedContainer_;
- id target_;
- SEL selector_;
-#endif // #if GTM_CONTAINERS_VALIDATE
-}
-+ (id)validatingSetWithTarget:(id)target selector:(SEL)sel;
-+ (id)validatingSetWithCapacity:(NSUInteger)capacity
- target:(id)target
- selector:(SEL)sel;
-- (id)initValidatingWithTarget:(id)target selector:(SEL)sel;
-- (id)initValidatingWithCapacity:(NSUInteger)capacity
- target:(id)target
- selector:(SEL)sel;
-@end
-
-#pragma mark -
-#pragma mark Simple Common Validators
-// See comments near top of file for examples of how these are used.
-@protocol GTMContainerValidatorProtocol
-- (BOOL)validateObject:(id)object forContainer:(id)container;
-@end
-
-// Validates that a given object is a kind of class (instance of class or an
-// instance of any class that inherits from that class)
-@interface GTMKindOfClassValidator : NSObject <GTMContainerValidatorProtocol> {
- Class cls_;
-}
-+ (id)validateAgainstClass:(Class)cls;
-- (id)initWithClass:(Class)cls;
-@end
-
-// Validates that a given object is a member of class (exact instance of class)
-@interface GTMMemberOfClassValidator : NSObject <GTMContainerValidatorProtocol> {
- Class cls_;
-}
-+ (id)validateAgainstClass:(Class)cls;
-- (id)initWithClass:(Class)cls;
-@end
-
-// Validates that a given object conforms to a protocol
-@interface GTMConformsToProtocolValidator : NSObject <GTMContainerValidatorProtocol> {
- Protocol* prot_;
-}
-+ (id)validateAgainstProtocol:(Protocol*)prot;
-- (id)initWithProtocol:(Protocol*)prot;
-@end
-
-// Validates that a given object responds to a given selector
-@interface GTMRespondsToSelectorValidator : NSObject <GTMContainerValidatorProtocol> {
- SEL sel_;
-}
-+ (id)validateAgainstSelector:(SEL)sel;
-- (id)initWithSelector:(SEL)sel;
-@end
diff --git a/Foundation/GTMValidatingContainers.m b/Foundation/GTMValidatingContainers.m
deleted file mode 100644
index a227ad4..0000000
--- a/Foundation/GTMValidatingContainers.m
+++ /dev/null
@@ -1,491 +0,0 @@
-//
-// GTMValidatingContainers.m
-//
-// Mutable containers that do verification of objects being added to them
-// at runtime. Support for arrays, dictionaries and sets.
-//
-// Documentation on subclassing class clusters (which we are doing) is here:
-// http://developer.apple.com/documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaObjects/chapter_3_section_9.html#//apple_ref/doc/uid/TP40002974-CH4-DontLinkElementID_105
-//
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMValidatingContainers.h"
-
-#if GTM_CONTAINERS_VALIDATE
-
-#import "GTMDebugSelectorValidation.h"
-#if GTM_IPHONE_SDK
-#import <objc/message.h>
-#import <objc/runtime.h>
-#else // GTM_IPHONE_SDK
-#import <objc/objc-runtime.h>
-#endif // GTM_IPHONE_SDK
-
-GTM_INLINE BOOL VerifyObjectWithTargetAndSelectorForContainer(id anObject,
- id target,
- SEL selector,
- id container) {
- // We must take care here, since Intel leaves junk in high bytes of return
- // register for predicates that return BOOL.
- // For details see:
- // http://developer.apple.com/documentation/MacOSX/Conceptual/universal_binary/universal_binary_tips/chapter_5_section_23.html
- // and
- // http://www.red-sweater.com/blog/320/abusing-objective-c-with-class#comment-83187
- BOOL isGood = ((BOOL (*)(id, SEL, id, id))objc_msgSend)(target, selector,
- anObject, container);
- if (!isGood) {
-#if GTM_CONTAINERS_VALIDATION_FAILED_ASSERT
- _GTMDevAssert(isGood, @"%@ failed container verification for %@",
- anObject, [container description]);
-#endif // GTM_CONTAINERS_VALIDATION_FAILED_LOG
-#if GTM_CONTAINERS_VALIDATION_FAILED_LOG
- _GTMDevLog(@"%@ failed container verification for %@", anObject,
- [container description]);
-#endif // GTM_CONTAINERS_VALIDATION_FAILED_LOG
- }
- return isGood;
-}
-
-GTM_INLINE void VerifySelectorOnTarget(SEL sel, id target) {
- GTMAssertSelectorNilOrImplementedWithReturnTypeAndArguments(target,
- sel,
- @encode(BOOL),
- @encode(id),
- @encode(id),
- nil);
-}
-
-void _GTMValidateContainerContainsKindOfClass(id container, Class cls) {
- GTMKindOfClassValidator *validator;
- validator = [GTMKindOfClassValidator validateAgainstClass:cls];
- _GTMValidateContainer(container,
- validator,
- @selector(validateObject:forContainer:));
-}
-
-void _GTMValidateContainerContainsMemberOfClass(id container, Class cls) {
- GTMMemberOfClassValidator *validator;
- validator = [GTMMemberOfClassValidator validateAgainstClass:cls];
- _GTMValidateContainer(container,
- validator,
- @selector(validateObject:forContainer:));
-}
-
-void _GTMValidateContainerConformsToProtocol(id container, Protocol* prot) {
- GTMConformsToProtocolValidator *validator;
- validator = [GTMConformsToProtocolValidator validateAgainstProtocol:prot];
- _GTMValidateContainer(container,
- validator,
- @selector(validateObject:forContainer:));
-}
-
-void _GTMValidateContainerItemsRespondToSelector(id container, SEL sel) {
- GTMRespondsToSelectorValidator *validator;
- validator = [GTMRespondsToSelectorValidator validateAgainstSelector:sel];
- _GTMValidateContainer(container,
- validator,
- @selector(validateObject:forContainer:));
-}
-
-void _GTMValidateContainer(id container, id target, SEL selector) {
- if ([container respondsToSelector:@selector(objectEnumerator)]) {
- NSEnumerator *enumerator = [container objectEnumerator];
- id val;
- while ((val = [enumerator nextObject])) {
- VerifyObjectWithTargetAndSelectorForContainer(val,
- target,
- selector,
- container);
- }
- } else {
-#if GTM_CONTAINERS_VALIDATION_FAILED_ASSERT
- _GTMDevAssert(0, @"container %@ does not respond to -objectEnumerator",
- [container description]);
-#endif // GTM_CONTAINERS_VALIDATION_FAILED_LOG
-#if GTM_CONTAINERS_VALIDATION_FAILED_LOG
- _GTMDevLog(@"container does not respont to -objectEnumerator: %@",
- [container description]);
-#endif // GTM_CONTAINERS_VALIDATION_FAILED_LOG
- }
-}
-#endif // GTM_CONTAINERS_VALIDATE
-
-@implementation GTMValidatingArray
-
-+ (id)validatingArrayWithTarget:(id)target selector:(SEL)sel {
- return [self validatingArrayWithCapacity:0 target:target selector:sel];
-}
-
-+ (id)validatingArrayWithCapacity:(NSUInteger)capacity
- target:(id)target
- selector:(SEL)sel {
- return [[[self alloc] initValidatingWithCapacity:0
- target:target
- selector:sel] autorelease];
-}
-
-- (id)initValidatingWithTarget:(id)target selector:(SEL)sel {
- return [self initValidatingWithCapacity:0 target:target selector:sel];
-}
-
-#if GTM_CONTAINERS_VALIDATE
-- (id)initValidatingWithCapacity:(NSUInteger)capacity
- target:(id)target
- selector:(SEL)sel {
- if ((self = [super init])) {
- embeddedContainer_ = [[NSMutableArray alloc] initWithCapacity:capacity];
- target_ = [target retain];
- selector_ = sel;
- VerifySelectorOnTarget(selector_, target_);
- }
- return self;
-}
-
-- (void)dealloc {
- [embeddedContainer_ release];
- [target_ release];
- [super dealloc];
-}
-
-- (NSUInteger)count {
- return [embeddedContainer_ count];
-}
-
-- (id)objectAtIndex:(NSUInteger)idx {
- return [embeddedContainer_ objectAtIndex:idx];
-}
-
-- (void)addObject:(id)anObject {
- if (VerifyObjectWithTargetAndSelectorForContainer(anObject, target_,
- selector_, self)) {
- [embeddedContainer_ addObject:anObject];
- }
-}
-
-- (void)insertObject:(id)anObject atIndex:(NSUInteger)idx {
- if (VerifyObjectWithTargetAndSelectorForContainer(anObject, target_,
- selector_, self)) {
- [embeddedContainer_ insertObject:anObject atIndex:idx];
- }
-}
-
-- (void)removeLastObject {
- [embeddedContainer_ removeLastObject];
-}
-
-- (void)removeObjectAtIndex:(NSUInteger)idx {
- [embeddedContainer_ removeObjectAtIndex:idx];
-}
-
-- (void)replaceObjectAtIndex:(NSUInteger)idx withObject:(id)anObject {
- if (VerifyObjectWithTargetAndSelectorForContainer(anObject, target_,
- selector_, self)) {
- [embeddedContainer_ replaceObjectAtIndex:idx withObject:anObject];
- }
-}
-
-- (NSString*)description {
- return [NSString stringWithFormat:@"%@ - %@",
- NSStringFromClass([self class]),
- [embeddedContainer_ description]];
-}
-
-#else // GTM_CONTAINERS_VALIDATE
-- (id)initValidatingWithCapacity:(NSUInteger)capacity
- target:(id)target
- selector:(SEL)sel {
- if ((self = [super init])) {
- [self release];
- }
- return (GTMValidatingArray*)[[NSMutableArray alloc] initWithCapacity:capacity];
-}
-#endif // GTM_CONTAINERS_VALIDATE
-@end
-
-@implementation GTMValidatingDictionary
-+ (id)validatingDictionaryWithTarget:(id)target selector:(SEL)sel {
- return [self validatingDictionaryWithCapacity:0 target:target selector:sel];
-}
-
-+ (id)validatingDictionaryWithCapacity:(NSUInteger)capacity
- target:(id)target
- selector:(SEL)sel {
- return [[[self alloc] initValidatingWithCapacity:0
- target:target
- selector:sel] autorelease];
-}
-
-- (id)initValidatingWithTarget:(id)target selector:(SEL)sel {
- return [self initValidatingWithCapacity:0 target:target selector:sel];
-}
-
-#if GTM_CONTAINERS_VALIDATE
-- (id)initValidatingWithCapacity:(NSUInteger)capacity
- target:(id)target
- selector:(SEL)sel {
- if ((self = [super init])) {
- embeddedContainer_ = [[NSMutableDictionary alloc] initWithCapacity:capacity];
- target_ = [target retain];
- selector_ = sel;
- VerifySelectorOnTarget(selector_, target_);
- }
- return self;
-}
-
-- (void)dealloc {
- [target_ release];
- [embeddedContainer_ release];
- [super dealloc];
-}
-
-- (NSUInteger)count {
- return [embeddedContainer_ count];
-}
-
-- (NSEnumerator *)keyEnumerator {
- return [embeddedContainer_ keyEnumerator];
-}
-
-- (id)objectForKey:(id)aKey {
- return [embeddedContainer_ objectForKey:aKey];
-}
-
-- (void)removeObjectForKey:(id)aKey {
- [embeddedContainer_ removeObjectForKey:aKey];
-}
-
-- (void)setObject:(id)anObject forKey:(id)aKey {
- if (VerifyObjectWithTargetAndSelectorForContainer(anObject, target_,
- selector_, self)) {
- [embeddedContainer_ setObject:anObject forKey:aKey];
- }
-}
-
-- (NSString*)description {
- return [NSString stringWithFormat:@"%@ - %@",
- NSStringFromClass([self class]),
- [embeddedContainer_ description]];
-}
-
-#else // GTM_CONTAINERS_VALIDATE
-- (id)initValidatingWithCapacity:(NSUInteger)capacity
- target:(id)target
- selector:(SEL)sel {
- if ((self = [super init])) {
- [self release];
- }
- return (GTMValidatingDictionary*)[[NSMutableDictionary alloc]
- initWithCapacity:capacity];
-
-}
-#endif // GTM_CONTAINERS_VALIDATE
-@end
-
-@implementation GTMValidatingSet
-+ (id)validatingSetWithTarget:(id)target selector:(SEL)sel {
- return [self validatingSetWithCapacity:0 target:target selector:sel];
-}
-
-+ (id)validatingSetWithCapacity:(NSUInteger)capacity
- target:(id)target
- selector:(SEL)sel {
- return [[[self alloc] initValidatingWithCapacity:0
- target:target
- selector:sel] autorelease];
-}
-- (id)initValidatingWithTarget:(id)target selector:(SEL)sel {
- return [self initValidatingWithCapacity:0 target:target selector:sel];
-}
-
-#if GTM_CONTAINERS_VALIDATE
-- (id)initValidatingWithCapacity:(NSUInteger)capacity
- target:(id)target
- selector:(SEL)sel {
- if ((self = [super init])) {
- embeddedContainer_ = [[NSMutableSet alloc] initWithCapacity:capacity];
- target_ = [target retain];
- selector_ = sel;
- VerifySelectorOnTarget(selector_, target_);
- }
- return self;
-}
-
-- (void)dealloc {
- [target_ release];
- [embeddedContainer_ release];
- [super dealloc];
-}
-
-- (NSUInteger)count {
- return [embeddedContainer_ count];
-}
-
-- (id)member:(id)object {
- return [embeddedContainer_ member:object];
-}
-
-- (NSEnumerator *)objectEnumerator {
- return [embeddedContainer_ objectEnumerator];
-}
-
-- (void)addObject:(id)object {
- if (object && VerifyObjectWithTargetAndSelectorForContainer(object,
- target_,
- selector_,
- self)) {
- [embeddedContainer_ addObject:object];
- }
-}
-
-- (void)removeObject:(id)object {
- [embeddedContainer_ removeObject:object];
-}
-
-- (NSString*)description {
- return [NSString stringWithFormat:@"%@ - %@",
- NSStringFromClass([self class]),
- [embeddedContainer_ description]];
-}
-
-#else // GTM_CONTAINERS_VALIDATE
-- (id)initValidatingWithCapacity:(NSUInteger)capacity
- target:(id)target
- selector:(SEL)sel {
- if ((self = [super init])) {
- [self release];
- }
- return (GTMValidatingSet*)[[NSMutableSet alloc] initWithCapacity:capacity];
-}
-#endif // GTM_CONTAINERS_VALIDATE
-@end
-
-#pragma mark -
-#pragma mark Simple Common Validators
-@implementation GTMKindOfClassValidator
-+ (id)validateAgainstClass:(Class)cls {
- return [[[self alloc] initWithClass:cls] autorelease];
-}
-
-- (id)initWithClass:(Class)cls {
-#if GTM_CONTAINERS_VALIDATE
- if ((self = [super init])) {
- if (!cls) {
- _GTMDevLog(@"nil class");
- [self release];
- return nil;
- }
- cls_ = cls;
- }
- return self;
-#else // GTM_CONTAINERS_VALIDATE
- if ((self = [super init])) {
- [self release];
- }
- return nil;
-#endif // GTM_CONTAINERS_VALIDATE
-}
-
-- (BOOL)validateObject:(id)object forContainer:(id)container {
- return [object isKindOfClass:cls_];
-}
-@end
-
-@implementation GTMMemberOfClassValidator
-+ (id)validateAgainstClass:(Class)cls {
- return [[[self alloc] initWithClass:cls] autorelease];
-}
-
-- (id)initWithClass:(Class)cls {
-#if GTM_CONTAINERS_VALIDATE
- if ((self = [super init])) {
- if (!cls) {
- _GTMDevLog(@"nil class");
- [self release];
- return nil;
- }
- cls_ = cls;
- }
- return self;
-#else // GTM_CONTAINERS_VALIDATE
- if ((self = [super init])) {
- [self release];
- }
- return nil;
-#endif // GTM_CONTAINERS_VALIDATE
-}
-
-- (BOOL)validateObject:(id)object forContainer:(id)container {
- return [object isMemberOfClass:cls_];
-}
-@end
-
-@implementation GTMConformsToProtocolValidator
-+ (id)validateAgainstProtocol:(Protocol*)prot {
- return [[[self alloc] initWithProtocol:prot] autorelease];
-}
-
-- (id)initWithProtocol:(Protocol*)prot {
-#if GTM_CONTAINERS_VALIDATE
- if ((self = [super init])) {
- if (!prot) {
- _GTMDevLog(@"nil protocol");
- [self release];
- return nil;
- }
- prot_ = prot;
- }
- return self;
-#else // GTM_CONTAINERS_VALIDATE
- if ((self = [super init])) {
- [self release];
- }
- return nil;
-#endif // GTM_CONTAINERS_VALIDATE
-}
-
-- (BOOL)validateObject:(id)object forContainer:(id)container {
- return [object conformsToProtocol:prot_];
-}
-@end
-
-@implementation GTMRespondsToSelectorValidator
-+ (id)validateAgainstSelector:(SEL)sel {
- return [[[self alloc] initWithSelector:sel] autorelease];
-}
-
-- (id)initWithSelector:(SEL)sel {
-#if GTM_CONTAINERS_VALIDATE
- if ((self = [super init])) {
- if (!sel) {
- _GTMDevLog(@"nil selector");
- [self release];
- return nil;
- }
- sel_ = sel;
- }
- return self;
-#else // GTM_CONTAINERS_VALIDATE
- if ((self = [super init])) {
- [self release];
- }
- return nil;
-#endif // GTM_CONTAINERS_VALIDATE
-}
-
-- (BOOL)validateObject:(id)object forContainer:(id)container {
- return [object respondsToSelector:sel_];
-}
-@end
diff --git a/Foundation/GTMValidatingContainersTest.m b/Foundation/GTMValidatingContainersTest.m
deleted file mode 100644
index 806ecb0..0000000
--- a/Foundation/GTMValidatingContainersTest.m
+++ /dev/null
@@ -1,378 +0,0 @@
-//
-// GTMValidatingContainersTest.m
-//
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMValidatingContainers.h"
-#import "GTMSenTestCase.h"
-#import "GTMUnitTestDevLog.h"
-
-#pragma mark Test Support Declarations
-@protocol GTMVCTestProtocol
-@end
-
-@interface GTMVCTestClass : NSObject
-+ (id)instance;
-@end
-
-@interface GTMVCTestSubClass : GTMVCTestClass <GTMVCTestProtocol>
-- (void)foo;
-@end
-
-@interface GTMVCValidatingTests : GTMTestCase {
- GTMVCTestClass *testClass_;
- GTMVCTestSubClass *testSubClass_;
-}
-@end
-
-@interface GTMVCValidatorTests : GTMVCValidatingTests
-@end
-
-@interface GTMVCContainerTests : GTMVCValidatingTests {
- GTMConformsToProtocolValidator *validator_;
- SEL selector_;
-}
-@end
-
-@interface GTMVCArrayTests : GTMVCContainerTests
-@end
-
-@interface GTMVCDictionaryTests : GTMVCContainerTests
-@end
-
-@interface GTMVCSetTests : GTMVCContainerTests
-@end
-
-@interface GTMValidateContainerTests : GTMTestCase
-@end
-
-#pragma mark -
-#pragma mark Test Support Definitions
-
-@implementation GTMVCTestClass
-+ (id)instance {
- return [[[self alloc] init] autorelease];
-}
-
-- (NSString*)description {
- return NSStringFromClass([self class]);
-}
-@end
-
-@implementation GTMVCTestSubClass
-- (void)foo {
-}
-@end
-
-@implementation GTMVCContainerTests
-- (void)setUp {
- [super setUp];
- Protocol *prot = @protocol(GTMVCTestProtocol);
- validator_ = [[GTMConformsToProtocolValidator alloc] initWithProtocol:prot];
- selector_ = @selector(validateObject:forContainer:);
-}
-
-- (void)tearDown {
- [validator_ release];
- [super tearDown];
-}
-@end
-
-@implementation GTMVCValidatingTests
-
-- (void)setUp {
- [super setUp];
- testClass_ = [[GTMVCTestClass alloc] init];
- testSubClass_ = [[GTMVCTestSubClass alloc] init];
-}
-
-- (void)tearDown {
- [testClass_ release];
- [testSubClass_ release];
- [super tearDown];
-}
-
-@end
-
-@implementation GTMVCValidatorTests
-
-- (void)testKindOfClassValidator {
-#if GTM_CONTAINERS_VALIDATE && GTM_CONTAINERS_VALIDATION_FAILED_LOG && !GTM_CONTAINERS_VALIDATION_FAILED_ASSERT
- [GTMUnitTestDevLog expectString:@"nil class"];
- GTMKindOfClassValidator *validator;
- validator = [GTMKindOfClassValidator validateAgainstClass:nil];
- STAssertNil(validator, @"should be nil");
-
- Class cls = [GTMVCTestClass class];
- validator = [GTMKindOfClassValidator validateAgainstClass:cls];
- STAssertNotNil(validator, @"should be valid");
-
- BOOL isGood = [validator validateObject:testClass_ forContainer:nil];
- STAssertTrue(isGood, @"should be validated");
-
- isGood = [validator validateObject:testSubClass_ forContainer:nil];
- STAssertTrue(isGood, @"should be validated");
-
- isGood = [validator validateObject:[NSNumber numberWithInt:0]
- forContainer:nil];
- STAssertFalse(isGood, @"should fail");
-#else // GTM_CONTAINERS_VALIDATE && GTM_CONTAINERS_VALIDATION_FAILED_LOG && !GTM_CONTAINERS_VALIDATION_FAILED_ASSERT
- GTMKindOfClassValidator *validator;
- validator = [GTMKindOfClassValidator validateAgainstClass:nil];
- STAssertNil(validator, @"should be nil");
-
- Class cls = [GTMVCTestClass class];
- validator = [GTMKindOfClassValidator validateAgainstClass:cls];
- STAssertNil(validator, @"should be nil");
-#endif // GTM_CONTAINERS_VALIDATE && GTM_CONTAINERS_VALIDATION_FAILED_LOG && !GTM_CONTAINERS_VALIDATION_FAILED_ASSERT
-}
-
-- (void)testMemberOfClassValidator {
-#if GTM_CONTAINERS_VALIDATE && GTM_CONTAINERS_VALIDATION_FAILED_LOG && !GTM_CONTAINERS_VALIDATION_FAILED_ASSERT
- [GTMUnitTestDevLog expectString:@"nil class"];
- GTMMemberOfClassValidator *validator;
- validator = [GTMMemberOfClassValidator validateAgainstClass:nil];
- STAssertNil(validator, @"should be nil");
-
- Class cls = [GTMVCTestClass class];
- validator = [GTMMemberOfClassValidator validateAgainstClass:cls];
- STAssertNotNil(validator, @"should be valid");
-
- BOOL isGood = [validator validateObject:testClass_ forContainer:nil];
- STAssertTrue(isGood, @"should be validated");
-
- isGood = [validator validateObject:testSubClass_ forContainer:nil];
- STAssertFalse(isGood, @"should fail");
-
- isGood = [validator validateObject:nil forContainer:nil];
- STAssertFalse(isGood, @"should fail");
-
- isGood = [validator validateObject:[NSNumber numberWithInt:0]
- forContainer:nil];
- STAssertFalse(isGood, @"should fail");
-#else // GTM_CONTAINERS_VALIDATE && GTM_CONTAINERS_VALIDATION_FAILED_LOG && !GTM_CONTAINERS_VALIDATION_FAILED_ASSERT
- GTMMemberOfClassValidator *validator;
- validator = [GTMMemberOfClassValidator validateAgainstClass:nil];
- STAssertNil(validator, @"should be nil");
-
- Class cls = [GTMVCTestClass class];
- validator = [GTMMemberOfClassValidator validateAgainstClass:cls];
- STAssertNil(validator, @"should be nil");
-#endif // GTM_CONTAINERS_VALIDATE && GTM_CONTAINERS_VALIDATION_FAILED_LOG && !GTM_CONTAINERS_VALIDATION_FAILED_ASSERT
-}
-
-- (void)testConformsToProtocolValidator {
-#if GTM_CONTAINERS_VALIDATE && GTM_CONTAINERS_VALIDATION_FAILED_LOG && !GTM_CONTAINERS_VALIDATION_FAILED_ASSERT
- [GTMUnitTestDevLog expectString:@"nil protocol"];
- GTMConformsToProtocolValidator *validator;
- validator = [GTMConformsToProtocolValidator validateAgainstProtocol:nil];
- STAssertNil(validator, @"should be nil");
-
- Protocol *prot = @protocol(GTMVCTestProtocol);
- validator = [GTMConformsToProtocolValidator validateAgainstProtocol:prot];
- STAssertNotNil(validator, @"should be valid");
-
- BOOL isGood = [validator validateObject:testClass_ forContainer:nil];
- STAssertFalse(isGood, @"should fail");
-
- isGood = [validator validateObject:testSubClass_ forContainer:nil];
- STAssertTrue(isGood, @"should succeed");
-
- isGood = [validator validateObject:nil forContainer:nil];
- STAssertFalse(isGood, @"should fail");
-#else // GTM_CONTAINERS_VALIDATE && GTM_CONTAINERS_VALIDATION_FAILED_LOG && !GTM_CONTAINERS_VALIDATION_FAILED_ASSERT
- GTMConformsToProtocolValidator *validator;
- validator = [GTMConformsToProtocolValidator validateAgainstProtocol:nil];
- STAssertNil(validator, @"should be nil");
-
- Protocol *prot = @protocol(GTMVCTestProtocol);
- validator = [GTMConformsToProtocolValidator validateAgainstProtocol:prot];
- STAssertNil(validator, @"should be nil");
-#endif // GTM_CONTAINERS_VALIDATE && GTM_CONTAINERS_VALIDATION_FAILED_LOG && !GTM_CONTAINERS_VALIDATION_FAILED_ASSERT
-}
-
-- (void)testRespondsToSelectorValidator {
-#if GTM_CONTAINERS_VALIDATE && GTM_CONTAINERS_VALIDATION_FAILED_LOG && !GTM_CONTAINERS_VALIDATION_FAILED_ASSERT
- [GTMUnitTestDevLog expectString:@"nil selector"];
- GTMRespondsToSelectorValidator *validator;
- validator = [GTMRespondsToSelectorValidator validateAgainstSelector:nil];
- STAssertNil(validator, @"should be nil");
-
- SEL sel = @selector(foo);
- validator = [GTMRespondsToSelectorValidator validateAgainstSelector:sel];
- STAssertNotNil(validator, @"should be valid");
-
- BOOL isGood = [validator validateObject:testClass_ forContainer:nil];
- STAssertFalse(isGood, @"should fail");
-
- isGood = [validator validateObject:testSubClass_ forContainer:nil];
- STAssertTrue(isGood, @"should succeed");
-
- isGood = [validator validateObject:nil forContainer:nil];
- STAssertFalse(isGood, @"should fail");
-#else // GTM_CONTAINERS_VALIDATE && GTM_CONTAINERS_VALIDATION_FAILED_LOG && !GTM_CONTAINERS_VALIDATION_FAILED_ASSERT
- GTMRespondsToSelectorValidator *validator;
- validator = [GTMRespondsToSelectorValidator validateAgainstSelector:nil];
- STAssertNil(validator, @"should be nil");
-
- SEL sel = @selector(foo);
- validator = [GTMRespondsToSelectorValidator validateAgainstSelector:sel];
- STAssertNil(validator, @"should be nil");
-#endif // GTM_CONTAINERS_VALIDATE && GTM_CONTAINERS_VALIDATION_FAILED_LOG && !GTM_CONTAINERS_VALIDATION_FAILED_ASSERT
-}
-
-
-@end
-
-@implementation GTMVCArrayTests
-- (void)testContainer {
- GTMValidatingArray *array;
- array = [GTMValidatingArray validatingArrayWithTarget:validator_
- selector:selector_];
- STAssertNotNil(array, @"should be valid");
-
- array = [[[GTMValidatingArray alloc] initValidatingWithTarget:validator_
- selector:selector_] autorelease];
- STAssertNotNil(array, @"should be valid");
-
- [GTMUnitTestDevLog expectPattern:@"GTMVCTestClass failed container verification for GTMValidatingArray .*"];
- [array addObject:testSubClass_];
- [array addObject:testClass_];
- STAssertEquals([array objectAtIndex:0], testSubClass_, @"");
-
- [GTMUnitTestDevLog expectPattern:@"GTMVCTestClass failed container verification for GTMValidatingArray .*"];
- [array insertObject:testClass_ atIndex:0];
- [array insertObject:testSubClass_ atIndex:0];
- [GTMUnitTestDevLog expectPattern:@"GTMVCTestClass failed container verification for GTMValidatingArray .*"];
- [array replaceObjectAtIndex:0 withObject:testClass_];
- [array replaceObjectAtIndex:0 withObject:testSubClass_];
- [array removeLastObject];
- [array removeObjectAtIndex:0];
- NSUInteger expectedCount = 0U;
-#if !(GTM_CONTAINERS_VALIDATE && GTM_CONTAINERS_VALIDATION_FAILED_LOG && !GTM_CONTAINERS_VALIDATION_FAILED_ASSERT)
- // If we're not validating, we don't expect any logs
- [GTMUnitTestDevLog resetExpectedLogs];
- expectedCount = 2U;
-#endif // !(GTM_CONTAINERS_VALIDATE && GTM_CONTAINERS_VALIDATION_FAILED_LOG && !GTM_CONTAINERS_VALIDATION_FAILED_ASSERT)
- STAssertEquals([array count], expectedCount, @"should have no objects left");
-
-}
-@end
-
-@implementation GTMVCDictionaryTests
-- (void)testContainer {
- GTMValidatingDictionary *dictionary;
- dictionary = [GTMValidatingDictionary validatingDictionaryWithTarget:validator_
- selector:selector_];
- STAssertNotNil(dictionary, @"should be valid");
-
- dictionary = [[[GTMValidatingDictionary alloc] initValidatingWithTarget:validator_
- selector:selector_] autorelease];
- STAssertNotNil(dictionary, @"should be valid");
-
- [GTMUnitTestDevLog expectPattern:@"GTMVCTestClass failed container verification for GTMValidatingDictionary .*"];
- [dictionary setObject:testClass_ forKey:@"Key1"];
- [dictionary setObject:testSubClass_ forKey:@"Key2"];
- STAssertEquals([dictionary objectForKey:@"Key2"], testSubClass_, @"");
- STAssertNotNil([dictionary keyEnumerator], @"");
-
- [dictionary removeObjectForKey:@"Key2"];
- [dictionary removeObjectForKey:@"Key1"];
- STAssertEquals([dictionary count], (NSUInteger)0, @"should have no objects left");
-
- // So we get full code coverage
- [testSubClass_ foo];
-#if !(GTM_CONTAINERS_VALIDATE && GTM_CONTAINERS_VALIDATION_FAILED_LOG && !GTM_CONTAINERS_VALIDATION_FAILED_ASSERT)
- // If we're not validating, we don't expect any logs
- [GTMUnitTestDevLog resetExpectedLogs];
-#endif // !(GTM_CONTAINERS_VALIDATE && GTM_CONTAINERS_VALIDATION_FAILED_LOG && !GTM_CONTAINERS_VALIDATION_FAILED_ASSERT)
-}
-@end
-
-@implementation GTMVCSetTests
-- (void)testContainer {
- GTMValidatingSet *set;
- set = [GTMValidatingSet validatingSetWithTarget:validator_
- selector:selector_];
- STAssertNotNil(set, @"should be valid");
-
- set = [[[GTMValidatingSet alloc] initValidatingWithTarget:validator_
- selector:selector_] autorelease];
- STAssertNotNil(set, @"should be valid");
-
- [GTMUnitTestDevLog expectPattern:@"GTMVCTestClass failed container verification for GTMValidatingSet .*"];
- [set addObject:testClass_];
- [set addObject:testSubClass_];
- STAssertEqualObjects([set member:testSubClass_], testSubClass_, @"");
- STAssertNotNil([set objectEnumerator], @"");
-
- [set removeObject:testClass_];
- [set removeObject:testSubClass_];
-#if !(GTM_CONTAINERS_VALIDATE && GTM_CONTAINERS_VALIDATION_FAILED_LOG && !GTM_CONTAINERS_VALIDATION_FAILED_ASSERT)
- // If we're not validating, we don't expect any logs
- [GTMUnitTestDevLog resetExpectedLogs];
-#endif // !(GTM_CONTAINERS_VALIDATE && GTM_CONTAINERS_VALIDATION_FAILED_LOG && !GTM_CONTAINERS_VALIDATION_FAILED_ASSERT)
- STAssertEquals([set count], (NSUInteger)0, @"should have no objects left");
-}
-@end
-
-@implementation GTMValidateContainerTests
-- (void)testValidatingContainers {
- NSDictionary *homogenousDict = [NSDictionary dictionaryWithObjectsAndKeys:
- [GTMVCTestSubClass instance], @"key1",
- [GTMVCTestSubClass instance], @"key2",
- nil];
- NSDictionary *heterogenousDict = [NSDictionary dictionaryWithObjectsAndKeys:
- [GTMVCTestClass instance], @"key1",
- [GTMVCTestSubClass instance], @"key2",
- nil];
-
- // Test bad container
- [GTMUnitTestDevLog expectPattern:@"container does not respont to -objectEnumerator: .*"];
- _GTMValidateContainerContainsKindOfClass([NSString string],
- [GTMVCTestSubClass class]);
-
- _GTMValidateContainerContainsKindOfClass(homogenousDict,
- [GTMVCTestSubClass class]);
- _GTMValidateContainerContainsKindOfClass(heterogenousDict,
- [GTMVCTestClass class]);
- [GTMUnitTestDevLog expectPattern:@"GTMVCTestClass failed container verification for .*"];
- _GTMValidateContainerContainsKindOfClass(heterogenousDict,
- [GTMVCTestSubClass class]);
-
- _GTMValidateContainerContainsMemberOfClass(homogenousDict,
- [GTMVCTestSubClass class]);
- [GTMUnitTestDevLog expectPattern:@"GTMVCTestSubClass failed container verification for .*"];
- _GTMValidateContainerContainsMemberOfClass(heterogenousDict,
- [GTMVCTestClass class]);
-
- _GTMValidateContainerConformsToProtocol(homogenousDict,
- @protocol(GTMVCTestProtocol));
- [GTMUnitTestDevLog expectPattern:@"GTMVCTestClass failed container verification for .*"];
- _GTMValidateContainerConformsToProtocol(heterogenousDict,
- @protocol(GTMVCTestProtocol));
-
- _GTMValidateContainerItemsRespondToSelector(homogenousDict,
- @selector(foo));
- [GTMUnitTestDevLog expectPattern:@"GTMVCTestClass failed container verification for .*"];
- _GTMValidateContainerItemsRespondToSelector(heterogenousDict,
- @selector(foo));
-#if !(GTM_CONTAINERS_VALIDATE && GTM_CONTAINERS_VALIDATION_FAILED_LOG && !GTM_CONTAINERS_VALIDATION_FAILED_ASSERT)
- // If we're not validating, we don't expect any logs
- [GTMUnitTestDevLog resetExpectedLogs];
-#endif // !(GTM_CONTAINERS_VALIDATE && GTM_CONTAINERS_VALIDATION_FAILED_LOG && !GTM_CONTAINERS_VALIDATION_FAILED_ASSERT)
-}
-@end
diff --git a/Foundation/TestData/GTMURITemplateExtraTests.json b/Foundation/TestData/GTMURITemplateExtraTests.json
deleted file mode 100644
index e84ab90..0000000
--- a/Foundation/TestData/GTMURITemplateExtraTests.json
+++ /dev/null
@@ -1,222 +0,0 @@
-{
- "No varspec (section 3.3, paragraph 3)" :
- {
- "variables": {
- "var" : "value"
- },
- "testcases" : [
- ["{}", "{}"],
- ["{,}", "{,}"],
- ["{,,}", "{,,}"]
- ]
- },
- "Missing closing brace (section 3.3 paragraph 4)" :
- {
- "variables": {
- "var" : "value",
- "hello" : "Hello World!",
- "list" : [ "val1", "val2", "val3" ],
- "keys" : {"key1": "val1", "key2": "val2"},
- "x" : "1024",
- "y" : "768"
- },
- "testcases" : [
- ["{var", "value"],
- ["{hello", "Hello%20World%21"],
- ["{x,y", "1024,768"],
- ["{var=default", "value"],
- ["{undef=default", "default"],
- ["{list", "val1,val2,val3"],
- ["{list*", "val1,val2,val3"],
- ["{list+", "list.val1,list.val2,list.val3"],
- ["{keys", "key1,val1,key2,val2"],
- ["{keys*", "key1,val1,key2,val2"],
- ["{keys+", "keys.key1,val1,keys.key2,val2"]
- ]
- },
- "varspec of only operator and explodes (section 3.3?)" :
- {
- "variables": {
- "var" : "value"
- },
- "testcases" : [
- ["{+}", "{+}"],
- ["{;}", "{;}"],
- ["{?}", "{?}"],
- ["{/}", "{/}"],
- ["{.}", "{.}"],
- ["{+,}", "{+,}"],
- ["{;,}", "{;,}"],
- ["{?,}", "{?,}"],
- ["{/,}", "{/,}"],
- ["{.,}", "{.,}"],
- ["{++}", "{++}"],
- ["{;+}", "{;+}"],
- ["{?+}", "{?+}"],
- ["{/+}", "{/+}"],
- ["{.+}", "{.+}"],
- ["{+*}", "{+*}"],
- ["{;*}", "{;*}"],
- ["{?*}", "{?*}"],
- ["{/*}", "{/*}"],
- ["{.*}", "{.*}"]
- ]
- },
- "One good varspec and bad varspecs (section 3.3, paragraph 3?)" :
- {
- "variables": {
- "var" : "value"
- },
- "testcases" : [
- ["{var,}", "value"],
- ["{,var}", "value"],
- ["{,var,,}", "value"],
- ["{+var,,}", "value"],
- ["{;var,,}", ";var=value"],
- ["{?var,,}", "?var=value"],
- ["{/var,,}", "/value"],
- ["{.var,,}", ".value"],
- ["{+,var,}", "value"],
- ["{;,var,}", ";var=value"],
- ["{?,var,}", "?var=value"],
- ["{/,var,}", "/value"],
- ["{.,var,}", ".value"],
- ["{+,,var}", "value"],
- ["{;,,var}", ";var=value"],
- ["{?,,var}", "?var=value"],
- ["{/,,var}", "/value"],
- ["{.,,var}", ".value"]
- ]
- },
- "Multiple undefined variables (section 3.4)" :
- {
- "variables": {
- "var" : "value"
- },
- "testcases" : [
- ["{undef1,undef2}", ""],
- ["{+undef1,undef2}", ""],
- ["{;undef1,undef2}", ""],
- ["{?undef1,undef2}", ""],
- ["{/undef1,undef2}", ""],
- ["{.undef1,undef2}", ""]
- ]
- },
- "Default with variable in varspec (just reported like above cases)" :
- {
- "variables": {
- "var" : "value"
- },
- "testcases" : [
- ["{=foo}", "{=foo}"]
- ]
- },
- "varspec with bad partial (partial gets ignored)" :
- {
- "variables": {
- "var" : "value"
- },
- "testcases" : [
- ["{var:}", "value"],
- ["{var^}", "value"]
- ]
- },
- "Default of empty string and edge cases with empty strings" :
- {
- "variables": {
- "empty" : "",
- "x" : "1024",
- "y" : "768"
- },
- "testcases" : [
- ["{empty}", ""],
- ["{;x,empty,y}", ";x=1024;empty;y=768"],
- ["{?x,empty,y}", "?x=1024&empty&y=768"],
- ["{x,empty,y}", "1024,,768"],
- ["{+x,empty,y}", "1024,,768"],
- ["{/x,empty,y}", "/1024//768"],
- ["{.x,empty,y}", ".1024..768"],
- ["{undef=}", ""],
- ["{;x,undef=,y}", ";x=1024;undef;y=768"],
- ["{?x,undef=,y}", "?x=1024&undef&y=768"],
- ["{x,undef=,y}", "1024,,768"],
- ["{+x,undef=,y}", "1024,,768"],
- ["{/x,undef=,y}", "/1024//768"],
- ["{.x,undef=,y}", ".1024..768"]
- ]
- },
- "Two defaults for one variable" :
- {
- "variables": {
- "y" : "768"
- },
- "testcases" : [
- ["1{undef=a}2{undef=b}3", "1a2b3"],
- ["0{undef}1{undef=a}2{undef}3{undef=b}4{undef}5", "01a2a3b4b5"]
- ]
- },
- "Empty strings within arrays and associative arrays" :
- {
- "variables": {
- "list" : [ "val1", "", "val3" ],
- "keysA" : {"key1": "", "key2": "val2"},
- "keysB" : {"key1": "val1", "": "val2"}
- },
- "testcases" : [
- ["{list}", "val1,,val3"],
- ["{list*}", "val1,,val3"],
- ["{list+}", "list.val1,list.,list.val3"],
- ["{keysA}", "key1,,key2,val2"],
- ["{keysA*}", "key1,,key2,val2"],
- ["{keysA+}", "keysA.key1,,keysA.key2,val2"],
- ["{keysB}", ",val2,key1,val1"],
- ["{keysB*}", ",val2,key1,val1"],
- ["{keysB+}", "keysB.,val2,keysB.key1,val1"],
- ["{+list}", "val1,,val3"],
- ["{+list*}", "val1,,val3"],
- ["{+list+}", "list.val1,list.,list.val3"],
- ["{+keysA}", "key1,,key2,val2"],
- ["{+keysA*}", "key1,,key2,val2"],
- ["{+keysA+}", "keysA.key1,,keysA.key2,val2"],
- ["{+keysB}", ",val2,key1,val1"],
- ["{+keysB*}", ",val2,key1,val1"],
- ["{+keysB+}", "keysB.,val2,keysB.key1,val1"],
- ["{;list}", ";val1,,val3"],
- ["{;list*}", ";val1;;val3"],
- ["{;list+}", ";list=val1;list=;list=val3"],
- ["{;keysA}", ";key1,key2,val2"],
- ["{;keysA*}", ";key1;key2=val2"],
- ["{;keysA+}", ";keysA.key1;keysA.key2=val2"],
- ["{;keysB}", ";,val2,key1,val1"],
- ["{;keysB*}", ";=val2;key1=val1"],
- ["{;keysB+}", ";keysB.=val2;keysB.key1=val1"],
- ["{?list}", "?list=val1,,val3"],
- ["{?list*}", "?val1&&val3"],
- ["{?list+}", "?list=val1&list=&list=val3"],
- ["{?keysA}", "?keysA=key1,key2,val2"],
- ["{?keysA*}", "?key1&key2=val2"],
- ["{?keysA+}", "?keysA.key1&keysA.key2=val2"],
- ["{?keysB}", "?keysB=,val2,key1,val1"],
- ["{?keysB*}", "?=val2&key1=val1"],
- ["{?keysB+}", "?keysB.=val2&keysB.key1=val1"],
- ["{/list}", "/val1,,val3"],
- ["{/list*}", "/val1//val3"],
- ["{/list+}", "/list.val1/list./list.val3"],
- ["{/keysA}", "/key1,,key2,val2"],
- ["{/keysA*}", "/key1//key2/val2"],
- ["{/keysA+}", "/keysA.key1//keysA.key2/val2"],
- ["{/keysB}", "/,val2,key1,val1"],
- ["{/keysB*}", "//val2/key1/val1"],
- ["{/keysB+}", "/keysB./val2/keysB.key1/val1"],
- ["X{.list}", "X.val1,,val3"],
- ["X{.list*}", "X.val1..val3"],
- ["X{.list+}", "X.list.val1.list..list.val3"],
- ["X{.keysA}", "X.key1,,key2,val2"],
- ["X{.keysA*}", "X.key1..key2.val2"],
- ["X{.keysA+}", "X.keysA.key1..keysA.key2.val2"],
- ["X{.keysB}", "X.,val2,key1,val1"],
- ["X{.keysB*}", "X..val2.key1.val1"],
- ["X{.keysB+}", "X.keysB..val2.keysB.key1.val1"]
- ]
- }
-}
diff --git a/Foundation/TestData/GTMURITemplateRFCTests.json b/Foundation/TestData/GTMURITemplateRFCTests.json
deleted file mode 100644
index 03fa22d..0000000
--- a/Foundation/TestData/GTMURITemplateRFCTests.json
+++ /dev/null
@@ -1,131 +0,0 @@
-{
- "Test Suite 1" :
- {
- "variables": {
- "var" : "value",
- "hello" : "Hello World!",
- "empty" : "",
- "list" : [ "val1", "val2", "val3" ],
- "keys" : {"key1": "val1", "key2": "val2"},
- "path" : "/foo/bar",
- "x" : "1024",
- "y" : "768"
- },
- "testcases" : [
- ["{var}", "value"],
- ["{hello}", "Hello%20World%21"],
- ["{path}/here", "%2Ffoo%2Fbar/here"],
- ["{x,y}", "1024,768"],
- ["{var=default}", "value"],
- ["{undef=default}", "default"],
- ["{list}", "val1,val2,val3"],
- ["{list*}", "val1,val2,val3"],
- ["{list+}", "list.val1,list.val2,list.val3"],
- ["{keys}", "key1,val1,key2,val2"],
- ["{keys*}", "key1,val1,key2,val2"],
- ["{keys+}", "keys.key1,val1,keys.key2,val2"],
- ["{+var}", "value"],
- ["{+hello}", "Hello%20World!"],
- ["{+path}/here", "/foo/bar/here"],
- ["{+path,x}/here", "/foo/bar,1024/here"],
- ["{+path}{x}/here", "/foo/bar1024/here"],
- ["{+empty}/here", "/here"],
- ["{+undef}/here", "/here"],
- ["{+list}", "val1,val2,val3"],
- ["{+list*}", "val1,val2,val3"],
- ["{+list+}", "list.val1,list.val2,list.val3"],
- ["{+keys}", "key1,val1,key2,val2"],
- ["{+keys*}", "key1,val1,key2,val2"],
- ["{+keys+}", "keys.key1,val1,keys.key2,val2"],
- ["{;x,y}", ";x=1024;y=768"],
- ["{;x,y,empty}", ";x=1024;y=768;empty"],
- ["{;x,y,undef}", ";x=1024;y=768"],
- ["{;list}", ";val1,val2,val3"],
- ["{;list*}", ";val1;val2;val3"],
- ["{;list+}", ";list=val1;list=val2;list=val3"],
- ["{;keys}", ";key1,val1,key2,val2"],
- ["{;keys*}", ";key1=val1;key2=val2"],
- ["{;keys+}", ";keys.key1=val1;keys.key2=val2"],
- ["{?x,y}", "?x=1024&y=768"],
- ["{?x,y,empty}", "?x=1024&y=768&empty"],
- ["{?x,y,undef}", "?x=1024&y=768"],
- ["{?list}", "?list=val1,val2,val3"],
- ["{?list*}", "?val1&val2&val3"],
- ["{?list+}", "?list=val1&list=val2&list=val3"],
- ["{?keys}", "?keys=key1,val1,key2,val2"],
- ["{?keys*}", "?key1=val1&key2=val2"],
- ["{?keys+}", "?keys.key1=val1&keys.key2=val2"],
- ["{/var}", "/value"],
- ["{/var,empty}", "/value/"],
- ["{/var,undef}", "/value"],
- ["{/list}", "/val1,val2,val3"],
- ["{/list*}", "/val1/val2/val3"],
- ["{/list*,x}", "/val1/val2/val3/1024"],
- ["{/list+}", "/list.val1/list.val2/list.val3"],
- ["{/keys}", "/key1,val1,key2,val2"],
- ["{/keys*}", "/key1/val1/key2/val2"],
- ["{/keys+}", "/keys.key1/val1/keys.key2/val2"],
- ["X{.var}", "X.value"],
- ["X{.empty}", "X"],
- ["X{.undef}", "X"],
- ["X{.list}", "X.val1,val2,val3"],
- ["X{.list*}", "X.val1.val2.val3"],
- ["X{.list*,x}", "X.val1.val2.val3.1024"],
- ["X{.list+}", "X.list.val1.list.val2.list.val3"],
- ["X{.keys}", "X.key1,val1,key2,val2"],
- ["X{.keys*}", "X.key1.val1.key2.val2"],
- ["X{.keys+}", "X.keys.key1.val1.keys.key2.val2"]
- ]
- },
- "Test Suite 2" :
- {
- "variables": {
- "var" : "value",
- "empty" : "",
- "name" : [ "Fred", "Wilma", "Pebbles" ],
- "favs" : {"color":"red", "volume": "high"},
- "empty_list" : [],
- "empty_keys" : {}
- },
- "testcases" : [
- ["{var=default}", "value"],
- ["{undef=default}", "default"],
- ["x{empty}y", "xy"],
- ["x{empty=_}y", "xy"],
- ["x{undef}y", "xy"],
- ["x{undef=_}y", "x_y"],
- ["x{empty_list}y", "xy"],
- ["x{empty_list=_}y", "x_y"],
- ["x{empty_list*}y", "xy"],
- ["x{empty_list*=_}y", "x_y"],
- ["x{empty_list+}y", "xy"],
- ["x{empty_list+=_}y", "x_y"],
- ["x{empty_keys}y", "xy"],
- ["x{empty_keys=_}y", "x_y"],
- ["x{empty_keys*}y", "xy"],
- ["x{empty_keys*=_}y", "x_y"],
- ["x{empty_keys+}y", "xy"],
- ["x{empty_keys+=_}y", "x_y"],
- ["x{?name=none}", "x?name=Fred,Wilma,Pebbles"],
- ["x{?favs=none}", "x?favs=color,red,volume,high"],
- ["x{?favs*=none}", "x?color=red&volume=high"],
- ["x{?favs+=none}", "x?favs.color=red&favs.volume=high"],
- ["x{?undef}", "x"],
- ["x{?undef=none}", "x?undef=none"],
- ["x{?empty}", "x?empty"],
- ["x{?empty=none}", "x?empty"],
- ["x{?empty_list}", "x"],
- ["x{?empty_list=none}", "x?empty_list=none"],
- ["x{?empty_list*}", "x"],
- ["x{?empty_list*=none}", "x?empty_list=none"],
- ["x{?empty_list+}", "x"],
- ["x{?empty_list+=none}", "x?empty_list=none"],
- ["x{?empty_keys}", "x"],
- ["x{?empty_keys=none}", "x?empty_keys=none"],
- ["x{?empty_keys*}", "x"],
- ["x{?empty_keys*=none}", "x?empty_keys=none"],
- ["x{?empty_keys+}", "x"],
- ["x{?empty_keys+=none}", "x?empty_keys=none"]
- ]
- }
-}
diff --git a/GTM.xcodeproj/project.pbxproj b/GTM.xcodeproj/project.pbxproj
index 6f95311..eca622a 100644
--- a/GTM.xcodeproj/project.pbxproj
+++ b/GTM.xcodeproj/project.pbxproj
@@ -6,47 +6,9 @@
objectVersion = 45;
objects = {
-/* Begin PBXAggregateTarget section */
- F472042B0D33BEAF00E9F378 /* All UnitTests */ = {
- isa = PBXAggregateTarget;
- buildConfigurationList = F47204340D33BEDF00E9F378 /* Build configuration list for PBXAggregateTarget "All UnitTests" */;
- buildPhases = (
- );
- dependencies = (
- F4E4279810B7484B00F28A35 /* PBXTargetDependency */,
- F4E4279610B7484B00F28A35 /* PBXTargetDependency */,
- F4E4279210B7484B00F28A35 /* PBXTargetDependency */,
- F4E4279410B7484B00F28A35 /* PBXTargetDependency */,
- );
- name = "All UnitTests";
- productName = "All UnitTests";
- };
-/* End PBXAggregateTarget section */
-
-/* Begin PBXAppleScriptBuildPhase section */
- 8B3345CC0DBF8A95009FD32C /* AppleScript */ = {
- isa = PBXAppleScriptBuildPhase;
- buildActionMask = 2147483647;
- contextName = "";
- files = (
- 8B3345890DBF8A55009FD32C /* GTMNSAppleEvent+HandlerTest.applescript in AppleScript */,
- );
- isSharedContext = 0;
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXAppleScriptBuildPhase section */
-
/* Begin PBXBuildFile section */
0B1B9B8710FECD870084EE4B /* GTMStringEncoding.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B1B9B8410FECD870084EE4B /* GTMStringEncoding.h */; settings = {ATTRIBUTES = (Public, ); }; };
0B1B9B8810FECD870084EE4B /* GTMStringEncoding.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B1B9B8510FECD870084EE4B /* GTMStringEncoding.m */; };
- 0BFAD4C8104D06EF002BEB27 /* GTMNSDictionary+CaseInsensitive.h in Headers */ = {isa = PBXBuildFile; fileRef = 0BFAD4C2104D06EF002BEB27 /* GTMNSDictionary+CaseInsensitive.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 0BFAD4C9104D06EF002BEB27 /* GTMNSDictionary+CaseInsensitive.m in Sources */ = {isa = PBXBuildFile; fileRef = 0BFAD4C3104D06EF002BEB27 /* GTMNSDictionary+CaseInsensitive.m */; };
- 1012DF560F4252BD004794DB /* GTMAbstractDOListener.h in Headers */ = {isa = PBXBuildFile; fileRef = 1012DF540F4252BD004794DB /* GTMAbstractDOListener.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1012DF570F4252BD004794DB /* GTMAbstractDOListener.m in Sources */ = {isa = PBXBuildFile; fileRef = 1012DF550F4252BD004794DB /* GTMAbstractDOListener.m */; };
- 10998E8F0F4B593E007F179D /* GTMTransientRootProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = 10A4028E0F44DB2B003B511C /* GTMTransientRootProxy.m */; };
- 10998E920F4B5952007F179D /* GTMTransientRootProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 10A4028F0F44DB2B003B511C /* GTMTransientRootProxy.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 10998EF40F4B5D1A007F179D /* GTMTransientRootPortProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = 10998EF20F4B5D1A007F179D /* GTMTransientRootPortProxy.m */; };
- 10998EF50F4B5D1A007F179D /* GTMTransientRootPortProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 10998EF30F4B5D1A007F179D /* GTMTransientRootPortProxy.h */; settings = {ATTRIBUTES = (Public, ); }; };
33C372A60DD8A88500E97817 /* GTMNSString+URLArguments.h in Headers */ = {isa = PBXBuildFile; fileRef = 33C372A40DD8A88500E97817 /* GTMNSString+URLArguments.h */; settings = {ATTRIBUTES = (Public, ); }; };
33C372A70DD8A88500E97817 /* GTMNSString+URLArguments.m in Sources */ = {isa = PBXBuildFile; fileRef = 33C372A50DD8A88500E97817 /* GTMNSString+URLArguments.m */; };
33C374380DD8D44800E97817 /* GTMNSDictionary+URLArguments.h in Headers */ = {isa = PBXBuildFile; fileRef = 33C374360DD8D44800E97817 /* GTMNSDictionary+URLArguments.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -54,53 +16,30 @@
444B3B7719F6D24000B9191E /* CoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 444B3B7619F6D24000B9191E /* CoreServices.framework */; };
629445400EDDF647009295EA /* GTMNSArray+Merge.h in Headers */ = {isa = PBXBuildFile; fileRef = 6294453E0EDDF647009295EA /* GTMNSArray+Merge.h */; settings = {ATTRIBUTES = (Public, ); }; };
629445410EDDF647009295EA /* GTMNSArray+Merge.m in Sources */ = {isa = PBXBuildFile; fileRef = 6294453F0EDDF647009295EA /* GTMNSArray+Merge.m */; };
- 7F3EB38E0E5E09C700A7A75E /* GTMNSImage+Scaling.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F3EB38C0E5E09C700A7A75E /* GTMNSImage+Scaling.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 7F3EB38F0E5E09C700A7A75E /* GTMNSImage+Scaling.m in Sources */ = {isa = PBXBuildFile; fileRef = 7F3EB38D0E5E09C700A7A75E /* GTMNSImage+Scaling.m */; };
- 7F3EB5540E5F0B0400A7A75E /* GTMUnitTestingImage.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8BEEA90A0DA7446300894774 /* GTMUnitTestingImage.tiff */; };
- 7F4C015F1055AD4200F88238 /* GTMUILocalizerWindow1State.10_4_SDK.gtmUTState in Resources */ = {isa = PBXBuildFile; fileRef = 7F4C015E1055AD4200F88238 /* GTMUILocalizerWindow1State.10_4_SDK.gtmUTState */; };
7F511DF90F4B0378009F41B6 /* GTMNSColor+Luminance.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F511DF30F4B0378009F41B6 /* GTMNSColor+Luminance.h */; settings = {ATTRIBUTES = (Public, ); }; };
7F511DFA0F4B0378009F41B6 /* GTMNSColor+Luminance.m in Sources */ = {isa = PBXBuildFile; fileRef = 7F511DF40F4B0378009F41B6 /* GTMNSColor+Luminance.m */; };
- 7F6840D2105375A70057F4FA /* GTMUILocalizerTestWindow_10_4.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7F6840D1105375A70057F4FA /* GTMUILocalizerTestWindow_10_4.xib */; };
7F97DB31104EBC8D004DDDEE /* GTMFadeTruncatingTextFieldCellTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 7F97DB2F104EBC8D004DDDEE /* GTMFadeTruncatingTextFieldCellTest.m */; };
7F97DB32104EBCA0004DDDEE /* GTMFadeTruncatingTextFieldCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F97DB2D104EBC8D004DDDEE /* GTMFadeTruncatingTextFieldCell.h */; settings = {ATTRIBUTES = (Public, ); }; };
7F97DB33104EBCA3004DDDEE /* GTMFadeTruncatingTextFieldCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 7F97DB2E104EBC8D004DDDEE /* GTMFadeTruncatingTextFieldCell.m */; };
- 7F97DBA4104ED861004DDDEE /* GTMFadeTruncatingTextFieldCellTest1.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 7F97DBA2104ED861004DDDEE /* GTMFadeTruncatingTextFieldCellTest1.tiff */; };
- 7F97DBA5104ED861004DDDEE /* GTMFadeTruncatingTextFieldCellTest2.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 7F97DBA3104ED861004DDDEE /* GTMFadeTruncatingTextFieldCellTest2.tiff */; };
- 7FF768E31051B17900D34F4B /* GTMNSImage+SearchCacheTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 7FF768E11051B17900D34F4B /* GTMNSImage+SearchCacheTest.m */; };
- 7FF768E41051B17E00D34F4B /* GTMNSImage+SearchCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 7FF768DF1051B17900D34F4B /* GTMNSImage+SearchCache.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 7FF768E51051B17E00D34F4B /* GTMNSImage+SearchCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 7FF768E01051B17900D34F4B /* GTMNSImage+SearchCache.m */; };
8207B89B0FEA7A9E008A527B /* GTMWindowSheetController.h in Headers */ = {isa = PBXBuildFile; fileRef = 8207B8970FEA7A98008A527B /* GTMWindowSheetController.h */; settings = {ATTRIBUTES = (Public, ); }; };
8207B89C0FEA7AA1008A527B /* GTMWindowSheetController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8207B8980FEA7A98008A527B /* GTMWindowSheetController.m */; };
8207B89D0FEA7AA6008A527B /* GTMWindowSheetControllerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8207B8990FEA7A98008A527B /* GTMWindowSheetControllerTest.m */; };
- 84B91B8B0EA3CC2E0087500F /* GTMUnitTestingImage.10.6.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 84B91B890EA3CC2E0087500F /* GTMUnitTestingImage.10.6.tiff */; };
- 84B91B8C0EA3CC2E0087500F /* GTMUnitTestingWindow.10.6.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 84B91B8A0EA3CC2E0087500F /* GTMUnitTestingWindow.10.6.tiff */; };
- 8B0E65510FD80D5E00461C4A /* GTMHotKeyTextField.strings in Resources */ = {isa = PBXBuildFile; fileRef = 8B0E653F0FD80D5E00461C4A /* GTMHotKeyTextField.strings */; };
+ 8B07C60E1D99B01D0054728B /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B07C60D1D99B01D0054728B /* XCTest.framework */; };
+ 8B07C60F1D99B01D0054728B /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B07C60D1D99B01D0054728B /* XCTest.framework */; };
+ 8B07C6101D99B01D0054728B /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B07C60D1D99B01D0054728B /* XCTest.framework */; };
+ 8B07C6111D99B01D0054728B /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B07C60D1D99B01D0054728B /* XCTest.framework */; };
8B158A9B10A8C31100C93125 /* GTMNSAnimation+Duration.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B158A6010A8BE4500C93125 /* GTMNSAnimation+Duration.m */; };
8B158ADE10A8C42000C93125 /* GTMNSAnimation+Duration.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B158A5F10A8BE4500C93125 /* GTMNSAnimation+Duration.h */; settings = {ATTRIBUTES = (Public, ); }; };
8B17FD15117638D500E7A908 /* GTMFoundationUnitTestingUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B17FD13117638D500E7A908 /* GTMFoundationUnitTestingUtilities.m */; };
8B17FD16117638D500E7A908 /* GTMFoundationUnitTestingUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B17FD13117638D500E7A908 /* GTMFoundationUnitTestingUtilities.m */; };
8B17FD1A117638F400E7A908 /* GTMAppKitUnitTestingUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B17FD18117638F400E7A908 /* GTMAppKitUnitTestingUtilities.m */; };
- 8B17FE091176672300E7A908 /* GTMAppKitUnitTestingUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B17FD18117638F400E7A908 /* GTMAppKitUnitTestingUtilities.m */; };
- 8B17FE0B1176673400E7A908 /* GTMFoundationUnitTestingUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B17FD13117638D500E7A908 /* GTMFoundationUnitTestingUtilities.m */; };
- 8B1801A20E2533D500280961 /* GTMLargeTypeWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B1801A00E2533D500280961 /* GTMLargeTypeWindow.m */; };
- 8B1801A30E2533D500280961 /* GTMLargeTypeWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B1801A10E2533D500280961 /* GTMLargeTypeWindow.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 8B1801AE0E25341B00280961 /* GTMLargeTypeWindowImageTest.gtmUTState in Resources */ = {isa = PBXBuildFile; fileRef = 8B1801A80E25341B00280961 /* GTMLargeTypeWindowImageTest.gtmUTState */; };
- 8B1801B20E25341B00280961 /* GTMLargeTypeWindowLongTextTest.gtmUTState in Resources */ = {isa = PBXBuildFile; fileRef = 8B1801AC0E25341B00280961 /* GTMLargeTypeWindowLongTextTest.gtmUTState */; };
- 8B1801B30E25341B00280961 /* GTMLargeTypeWindowShortTextTest.gtmUTState in Resources */ = {isa = PBXBuildFile; fileRef = 8B1801AD0E25341B00280961 /* GTMLargeTypeWindowShortTextTest.gtmUTState */; };
- 8B1802420E25592200280961 /* GTMLargeTypeWindowMediumTextTest.gtmUTState in Resources */ = {isa = PBXBuildFile; fileRef = 8B1802410E25592200280961 /* GTMLargeTypeWindowMediumTextTest.gtmUTState */; };
- 8B1B49180E5F8E2100A08972 /* GTMExceptionalInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B1B49160E5F8E2100A08972 /* GTMExceptionalInlines.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 8B1B49190E5F8E2100A08972 /* GTMExceptionalInlines.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B1B49170E5F8E2100A08972 /* GTMExceptionalInlines.m */; };
- 8B21BE9211532CDC00DD2686 /* GTMNSAnimatablePropertyContainerTest.xib in Resources */ = {isa = PBXBuildFile; fileRef = 8B21BE9111532CDC00DD2686 /* GTMNSAnimatablePropertyContainerTest.xib */; };
8B21DE56117E5CB7000E004F /* GTMLocalizedString.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B21DE54117E5CB7000E004F /* GTMLocalizedString.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 8B2789960EF855FB00D68C01 /* GTMUnitTestingWindow.10.5.6.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8B2789950EF855FB00D68C01 /* GTMUnitTestingWindow.10.5.6.tiff */; };
8B29078711F8D1BF0064F50F /* GTMNSFileHandle+UniqueName.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B29078511F8D1BF0064F50F /* GTMNSFileHandle+UniqueName.m */; };
8B29080911F8E1630064F50F /* GTMNSFileHandle+UniqueName.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B29078511F8D1BF0064F50F /* GTMNSFileHandle+UniqueName.m */; };
8B29080A11F8E1670064F50F /* GTMNSFileHandle+UniqueName.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B29078411F8D1BF0064F50F /* GTMNSFileHandle+UniqueName.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 8B3345890DBF8A55009FD32C /* GTMNSAppleEvent+HandlerTest.applescript in AppleScript */ = {isa = PBXBuildFile; fileRef = 8B3344200DBF7A36009FD32C /* GTMNSAppleEvent+HandlerTest.applescript */; settings = {ATTRIBUTES = (Debug, ); }; };
+ 8B2C72E81D9EBB6E0027BD14 /* GTMUnitTestDevLog.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B2C72E71D9EBB6E0027BD14 /* GTMUnitTestDevLog.m */; };
8B3590160E8190FA0041E21C /* GTMTestTimer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3590150E8190FA0041E21C /* GTMTestTimer.h */; settings = {ATTRIBUTES = (Public, ); }; };
8B35901B0E8191750041E21C /* GTMTestTimerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B35901A0E8191750041E21C /* GTMTestTimerTest.m */; };
- 8B3AA9F10E033E23007E31B5 /* GTMValidatingContainers.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3AA9EF0E033E23007E31B5 /* GTMValidatingContainers.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 8B3AA9F20E033E23007E31B5 /* GTMValidatingContainers.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B3AA9F00E033E23007E31B5 /* GTMValidatingContainers.m */; };
8B3E292E0EEB53F8000681D8 /* GTMCarbonEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B3E292A0EEB53F3000681D8 /* GTMCarbonEvent.m */; };
8B3E292F0EEB53F8000681D8 /* GTMCarbonEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3E292B0EEB53F3000681D8 /* GTMCarbonEvent.h */; settings = {ATTRIBUTES = (Public, ); }; };
8B3E2A3F0EEB564D000681D8 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F42E09AD0D19A62F00D5DDE0 /* Carbon.framework */; };
@@ -110,128 +49,43 @@
8B409BE60F9442C800DF540E /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 8B409BE50F9442C800DF540E /* Localizable.strings */; };
8B409E8C0F952C2C00DF540E /* GTMUILocalizerTestWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 8B409E8B0F952C2C00DF540E /* GTMUILocalizerTestWindow.xib */; };
8B409E9A0F952CE600DF540E /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 8B409E990F952CE600DF540E /* Localizable.strings */; };
- 8B409EC40F9530C200DF540E /* GTMUILocalizerWindow1State.gtmUTState in Resources */ = {isa = PBXBuildFile; fileRef = 8B409EC30F9530C200DF540E /* GTMUILocalizerWindow1State.gtmUTState */; };
- 8B409EE90F95325000DF540E /* GTMUILocalizerWindow2State.gtmUTState in Resources */ = {isa = PBXBuildFile; fileRef = 8B409EE80F95325000DF540E /* GTMUILocalizerWindow2State.gtmUTState */; };
- 8B409EF40F95331500DF540E /* GTMUILocalizerMenuState.gtmUTState in Resources */ = {isa = PBXBuildFile; fileRef = 8B409EF30F95331500DF540E /* GTMUILocalizerMenuState.gtmUTState */; };
8B409F060F95341E00DF540E /* GTMUILocalizerTestView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 8B409F050F95341E00DF540E /* GTMUILocalizerTestView.xib */; };
- 8B409F130F95352500DF540E /* GTMUILocalizerView2State.gtmUTState in Resources */ = {isa = PBXBuildFile; fileRef = 8B409F110F95352500DF540E /* GTMUILocalizerView2State.gtmUTState */; };
- 8B409F140F95352500DF540E /* GTMUILocalizerView1State.gtmUTState in Resources */ = {isa = PBXBuildFile; fileRef = 8B409F120F95352500DF540E /* GTMUILocalizerView1State.gtmUTState */; };
8B414E881226FB1000D0064F /* GTMServiceManagement.c in Sources */ = {isa = PBXBuildFile; fileRef = 8B414E861226FB1000D0064F /* GTMServiceManagement.c */; };
8B414E891226FB1000D0064F /* GTMServiceManagement.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B414E871226FB1000D0064F /* GTMServiceManagement.h */; settings = {ATTRIBUTES = (Public, ); }; };
8B414E8B1226FB1800D0064F /* GTMServiceManagementTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B414E8A1226FB1800D0064F /* GTMServiceManagementTest.m */; };
8B45A03A0DA46A2A001148C5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0867D69BFE84028FC02AAC07 /* Foundation.framework */; };
- 8B45A0B80DA46A2F001148C5 /* SenTestingKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F42E089B0D199B1800D5DDE0 /* SenTestingKit.framework */; };
- 8B45A0D50DA46A57001148C5 /* GTMNSObject+UnitTesting.m in Sources */ = {isa = PBXBuildFile; fileRef = F48FE29C0D198D36009257D2 /* GTMNSObject+UnitTesting.m */; };
- 8B45A0D60DA46A57001148C5 /* GTMNSObject+BindingUnitTesting.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B1A14E90D900BC800CA1E8E /* GTMNSObject+BindingUnitTesting.m */; };
8B45A19A0DA46AAA001148C5 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B45A1990DA46AAA001148C5 /* QuartzCore.framework */; };
8B45A2040DA46DF6001148C5 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7B1FEA5585E11CA2CBB /* Cocoa.framework */; };
8B45A21A0DA46E1D001148C5 /* GTMGeometryUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = F48FE27F0D198D0E009257D2 /* GTMGeometryUtils.m */; };
- 8B45A21E0DA46E34001148C5 /* GTMObjC2Runtime.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B6F32040DA34A1B0052CA40 /* GTMObjC2Runtime.m */; };
8B45A2AC0DA49C47001148C5 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B45A2A80DA49C47001148C5 /* main.m */; };
8B45A2B30DA49CA9001148C5 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7B1FEA5585E11CA2CBB /* Cocoa.framework */; };
- 8B45A2DF0DA51A7E001148C5 /* GTMUnitTestingTest.nib in Resources */ = {isa = PBXBuildFile; fileRef = 8B45A2DE0DA51A7E001148C5 /* GTMUnitTestingTest.nib */; };
- 8B45A2E20DA51ABC001148C5 /* GTMUnitTestingTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B45A2E10DA51ABC001148C5 /* GTMUnitTestingTest.m */; };
- 8B45A5F80DA5EB9F001148C5 /* GTMUnitTestingWindow.gtmUTState in Resources */ = {isa = PBXBuildFile; fileRef = 8B45A5F50DA5EB9F001148C5 /* GTMUnitTestingWindow.gtmUTState */; };
- 8B45A5F90DA5EB9F001148C5 /* GTMUnitTestingTestApp.gtmUTState in Resources */ = {isa = PBXBuildFile; fileRef = 8B45A5F60DA5EB9F001148C5 /* GTMUnitTestingTestApp.gtmUTState */; };
- 8B45A6BB0DA67DD5001148C5 /* GTMUnitTestingImage.gtmUTState in Resources */ = {isa = PBXBuildFile; fileRef = 8B45A6B90DA67DD5001148C5 /* GTMUnitTestingImage.gtmUTState */; };
- 8B4BD7E71200E5EA009C7060 /* GTMUILocalizerWindow3State.10_4_SDK.gtmUTState in Resources */ = {isa = PBXBuildFile; fileRef = 8B4BD7E61200E5EA009C7060 /* GTMUILocalizerWindow3State.10_4_SDK.gtmUTState */; };
8B4D78080E40AFFA00EFEDD8 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B45A1990DA46AAA001148C5 /* QuartzCore.framework */; };
- 8B4D7A150E40D79200EFEDD8 /* GTMObjC2Runtime.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B6F32040DA34A1B0052CA40 /* GTMObjC2Runtime.m */; };
- 8B55479C0DB3B7A50014CC1C /* GTMAppKit+UnitTesting.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B55479B0DB3B7A50014CC1C /* GTMAppKit+UnitTesting.m */; };
- 8B5547B90DB3BB220014CC1C /* GTMAppKit+UnitTesting.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B55479B0DB3B7A50014CC1C /* GTMAppKit+UnitTesting.m */; };
- 8B58E9950E547EB000A0E02E /* GTMGetURLHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B58E9940E547EB000A0E02E /* GTMGetURLHandler.m */; };
8B61FDC00E4CDB8000FF9C21 /* GTMStackTrace.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B61FDBF0E4CDB8000FF9C21 /* GTMStackTrace.m */; };
8B6C15930F356E6400E51E5D /* GTMNSObject+KeyValueObserving.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B6C15910F356E6400E51E5D /* GTMNSObject+KeyValueObserving.h */; settings = {ATTRIBUTES = (Public, ); }; };
8B6C15940F356E6400E51E5D /* GTMNSObject+KeyValueObserving.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B6C15920F356E6400E51E5D /* GTMNSObject+KeyValueObserving.m */; };
8B6F32160DA34C830052CA40 /* GTMMethodCheckTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B6F31F10DA347720052CA40 /* GTMMethodCheckTest.m */; };
8B6F4B630E8856CA00425D9F /* GTMDebugThreadValidation.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B6F4B610E8856CA00425D9F /* GTMDebugThreadValidation.h */; settings = {ATTRIBUTES = (Public, ); }; };
8B6F4B640E8856CA00425D9F /* GTMDebugThreadValidation.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B6F4B620E8856CA00425D9F /* GTMDebugThreadValidation.m */; };
- 8B7AD49A0DABBB5800B84F4A /* GTMNSBezierPath+ShadingTest.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8B7AD4970DABBB5800B84F4A /* GTMNSBezierPath+ShadingTest.tiff */; };
- 8B7AD49B0DABBB5800B84F4A /* GTMNSBezierPath+CGPathTest.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8B7AD4980DABBB5800B84F4A /* GTMNSBezierPath+CGPathTest.tiff */; };
- 8B7AD49C0DABBB5800B84F4A /* GTMNSBezierPath+RoundRectTest.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8B7AD4990DABBB5800B84F4A /* GTMNSBezierPath+RoundRectTest.tiff */; };
- 8B7AD4AE0DABBFEE00B84F4A /* GTMUnitTestingBindingTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B7AD4AD0DABBFEE00B84F4A /* GTMUnitTestingBindingTest.m */; };
- 8B7DCB9B0DFF0E850017E983 /* GTMFourCharCode.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BE2836B0DED0F130035B3F8 /* GTMFourCharCode.m */; };
8B7DCBA50DFF0EFF0017E983 /* GoogleToolboxForMac.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F42E086D0D199A5B00D5DDE0 /* GoogleToolboxForMac.framework */; };
8B7DCBBD0DFF0F5D0017E983 /* GTMMethodCheck.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B6F31EF0DA347720052CA40 /* GTMMethodCheck.m */; };
8B7DCBC10DFF0F7F0017E983 /* GTMMethodCheck.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B6F31EF0DA347720052CA40 /* GTMMethodCheck.m */; };
8B7DCBC20DFF0F7F0017E983 /* GTMMethodCheck.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B6F31EF0DA347720052CA40 /* GTMMethodCheck.m */; };
8B7DCBC30DFF0F7F0017E983 /* GTMMethodCheck.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B6F31EF0DA347720052CA40 /* GTMMethodCheck.m */; };
8B7DCBC40DFF0F800017E983 /* GTMMethodCheck.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B6F31EF0DA347720052CA40 /* GTMMethodCheck.m */; };
- 8B7DCBD20DFF16070017E983 /* GTMNSAppleScript+Handler.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B3344180DBF7A36009FD32C /* GTMNSAppleScript+Handler.m */; };
- 8B7DCBD30DFF16070017E983 /* GTMNSAppleEventDescriptor+Handler.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B33441B0DBF7A36009FD32C /* GTMNSAppleEventDescriptor+Handler.m */; };
- 8B7DCBD40DFF16070017E983 /* GTMNSAppleEventDescriptor+Foundation.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B33441E0DBF7A36009FD32C /* GTMNSAppleEventDescriptor+Foundation.m */; };
- 8B7DCBE20DFF18720017E983 /* GTMDevLogUnitTestingBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B7DCBE10DFF18720017E983 /* GTMDevLogUnitTestingBridge.m */; };
- 8B7DCBED0DFF1A4F0017E983 /* GTMUnitTestDevLog.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B7DCBEC0DFF1A4F0017E983 /* GTMUnitTestDevLog.m */; };
- 8B7DCBEE0DFF1A4F0017E983 /* GTMUnitTestDevLog.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B7DCBEC0DFF1A4F0017E983 /* GTMUnitTestDevLog.m */; };
- 8B7DCBEF0DFF1A4F0017E983 /* GTMUnitTestDevLog.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B7DCBEC0DFF1A4F0017E983 /* GTMUnitTestDevLog.m */; };
8B7DCE190DFF39850017E983 /* GTMSenTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B7DCE180DFF39850017E983 /* GTMSenTestCase.m */; };
8B7DCE1A0DFF39850017E983 /* GTMSenTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B7DCE180DFF39850017E983 /* GTMSenTestCase.m */; };
8B7DCE1B0DFF39850017E983 /* GTMSenTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B7DCE180DFF39850017E983 /* GTMSenTestCase.m */; };
- 8B7DCEF10E002C210017E983 /* GTMDevLogUnitTestingBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B7DCBE10DFF18720017E983 /* GTMDevLogUnitTestingBridge.m */; };
- 8B8B10290EEB8B1600E543D0 /* GTMHotKeyTextFieldTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F4A420EE0EDDF8E000397A11 /* GTMHotKeyTextFieldTest.m */; };
+ 8B82CEEB1D9B4DA1007182AA /* GTMFoundationUnitTestingUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B17FD13117638D500E7A908 /* GTMFoundationUnitTestingUtilities.m */; };
8B8B10F90EEB8B9E00E543D0 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F42E09AD0D19A62F00D5DDE0 /* Carbon.framework */; };
8B8EC87D0EF17C270044D13F /* GTMNSFileManager+Carbon.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8EC87B0EF17C270044D13F /* GTMNSFileManager+Carbon.h */; settings = {ATTRIBUTES = (Public, ); }; };
8B8EC87E0EF17C270044D13F /* GTMNSFileManager+Carbon.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B8EC87C0EF17C270044D13F /* GTMNSFileManager+Carbon.m */; };
- 8BA01B5D0F144BD800926923 /* GTMNSWorkspace+Running.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BA01B5B0F144BD800926923 /* GTMNSWorkspace+Running.m */; };
- 8BA01B5E0F144BD800926923 /* GTMNSWorkspace+Running.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA01B5C0F144BD800926923 /* GTMNSWorkspace+Running.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 8BA7148111B57EC700EB4781 /* GTMUILocalizerAndLayoutTweakerTest4-0.10_4_SDK.10.6.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8BA7147E11B57EC700EB4781 /* GTMUILocalizerAndLayoutTweakerTest4-0.10_4_SDK.10.6.tiff */; };
- 8BA7148211B57EC700EB4781 /* GTMUILocalizerAndLayoutTweakerTest4-1.10_4_SDK.10.6.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8BA7147F11B57EC700EB4781 /* GTMUILocalizerAndLayoutTweakerTest4-1.10_4_SDK.10.6.tiff */; };
- 8BA7148311B57EC700EB4781 /* GTMUILocalizerAndLayoutTweakerTest4-2.10_4_SDK.10.6.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8BA7148011B57EC700EB4781 /* GTMUILocalizerAndLayoutTweakerTest4-2.10_4_SDK.10.6.tiff */; };
- 8BA9FAF9119CA2E300E264C3 /* GTMUnitTestingTestApp.10.6.gtmUTState in Resources */ = {isa = PBXBuildFile; fileRef = 8BA9FAF8119CA2E300E264C3 /* GTMUnitTestingTestApp.10.6.gtmUTState */; };
- 8BA9FB23119CA3F200E264C3 /* GTMUnitTestingWindow.10.6.gtmUTState in Resources */ = {isa = PBXBuildFile; fileRef = 8BA9FB22119CA3F200E264C3 /* GTMUnitTestingWindow.10.6.gtmUTState */; };
- 8BA9FB8F119CAE7200E264C3 /* GTMUILocalizerAndLayoutTweakerTest4-1.10.6.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8BA9FB8E119CAE7200E264C3 /* GTMUILocalizerAndLayoutTweakerTest4-1.10.6.tiff */; };
- 8BA9FB95119CAEDE00E264C3 /* GTMUILocalizerAndLayoutTweakerTest4-0.10.6.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8BA9FB94119CAEDE00E264C3 /* GTMUILocalizerAndLayoutTweakerTest4-0.10.6.tiff */; };
- 8BA9FB9C119CAF0200E264C3 /* GTMUILocalizerAndLayoutTweakerTest4-2.10.6.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8BA9FB9B119CAF0200E264C3 /* GTMUILocalizerAndLayoutTweakerTest4-2.10.6.tiff */; };
- 8BA9FBA1119CAF6600E264C3 /* GTMNSBezierPath+ShadingTest.10.6.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8BA9FBA0119CAF6600E264C3 /* GTMNSBezierPath+ShadingTest.10.6.tiff */; };
- 8BA9FBA3119CAF9500E264C3 /* GTMNSBezierPath+RoundRectTest.10.6.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8BA9FBA2119CAF9500E264C3 /* GTMNSBezierPath+RoundRectTest.10.6.tiff */; };
- 8BA9FBA7119CB00000E264C3 /* GTMNSBezierPath+RoundRectTest.10.6.x86_64.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8BA9FBA6119CB00000E264C3 /* GTMNSBezierPath+RoundRectTest.10.6.x86_64.tiff */; };
- 8BA9FBAB119CB06500E264C3 /* GTMLargeTypeWindowShortTextTest.10.6.gtmUTState in Resources */ = {isa = PBXBuildFile; fileRef = 8BA9FBAA119CB06500E264C3 /* GTMLargeTypeWindowShortTextTest.10.6.gtmUTState */; };
- 8BA9FBAD119CB08200E264C3 /* GTMLargeTypeWindowMediumTextTest.10.6.gtmUTState in Resources */ = {isa = PBXBuildFile; fileRef = 8BA9FBAC119CB08200E264C3 /* GTMLargeTypeWindowMediumTextTest.10.6.gtmUTState */; };
- 8BA9FBBB119CB0C400E264C3 /* GTMLargeTypeWindowLongTextTest.10.6.gtmUTState in Resources */ = {isa = PBXBuildFile; fileRef = 8BA9FBBA119CB0C400E264C3 /* GTMLargeTypeWindowLongTextTest.10.6.gtmUTState */; };
- 8BA9FBBD119CB14C00E264C3 /* GTMUILocalizerAndLayoutTweakerTest6-tab0-0.10.6.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8BA9FBBC119CB14C00E264C3 /* GTMUILocalizerAndLayoutTweakerTest6-tab0-0.10.6.tiff */; };
- 8BA9FBC0119CB17600E264C3 /* GTMUILocalizerAndLayoutTweakerTest7-NoMin-2.10.6.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8BA9FBBF119CB17600E264C3 /* GTMUILocalizerAndLayoutTweakerTest7-NoMin-2.10.6.tiff */; };
- 8BA9FBC8119CB19A00E264C3 /* GTMUILocalizerAndLayoutTweakerTest7-Min-0.10.6.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8BA9FBC7119CB19A00E264C3 /* GTMUILocalizerAndLayoutTweakerTest7-Min-0.10.6.tiff */; };
- 8BA9FBDB119CB1E600E264C3 /* GTMUILocalizerAndLayoutTweakerTest7-NoMin-0.10.6.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8BA9FBDA119CB1E600E264C3 /* GTMUILocalizerAndLayoutTweakerTest7-NoMin-0.10.6.tiff */; };
- 8BA9FBDE119CB20A00E264C3 /* GTMUILocalizerAndLayoutTweakerTest3-0.10.6.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8BA9FBDD119CB20A00E264C3 /* GTMUILocalizerAndLayoutTweakerTest3-0.10.6.tiff */; };
- 8BA9FBE1119CB23000E264C3 /* GTMUILocalizerAndLayoutTweakerTest3-1.10.6.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8BA9FBE0119CB23000E264C3 /* GTMUILocalizerAndLayoutTweakerTest3-1.10.6.tiff */; };
- 8BA9FBE4119CB24D00E264C3 /* GTMUILocalizerAndLayoutTweakerTest3-2.10.6.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8BA9FBE3119CB24D00E264C3 /* GTMUILocalizerAndLayoutTweakerTest3-2.10.6.tiff */; };
- 8BA9FBE7119CB26A00E264C3 /* GTMUILocalizerAndLayoutTweakerTest7-Min-1.10.6.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8BA9FBE6119CB26A00E264C3 /* GTMUILocalizerAndLayoutTweakerTest7-Min-1.10.6.tiff */; };
- 8BA9FBEA119CB28500E264C3 /* GTMUILocalizerAndLayoutTweakerTest7-Min-2.10.6.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8BA9FBE9119CB28500E264C3 /* GTMUILocalizerAndLayoutTweakerTest7-Min-2.10.6.tiff */; };
- 8BA9FBED119CB2A400E264C3 /* GTMUILocalizerAndLayoutTweakerTest7-Min-3.10.6.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8BA9FBEC119CB2A400E264C3 /* GTMUILocalizerAndLayoutTweakerTest7-Min-3.10.6.tiff */; };
- 8BA9FBF0119CB2BF00E264C3 /* GTMUILocalizerAndLayoutTweakerTest7-NoMin-1.10.6.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8BA9FBEF119CB2BF00E264C3 /* GTMUILocalizerAndLayoutTweakerTest7-NoMin-1.10.6.tiff */; };
- 8BA9FBF3119CB2D600E264C3 /* GTMUILocalizerAndLayoutTweakerTest7-NoMin-3.10.6.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8BA9FBF2119CB2D600E264C3 /* GTMUILocalizerAndLayoutTweakerTest7-NoMin-3.10.6.tiff */; };
- 8BA9FBF6119CB2EF00E264C3 /* GTMUILocalizerAndLayoutTweakerTest1-0.10.6.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8BA9FBF5119CB2EF00E264C3 /* GTMUILocalizerAndLayoutTweakerTest1-0.10.6.tiff */; };
- 8BA9FBFD119CB30D00E264C3 /* GTMUILocalizerAndLayoutTweakerTest1-1.10.6.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8BA9FBFC119CB30D00E264C3 /* GTMUILocalizerAndLayoutTweakerTest1-1.10.6.tiff */; };
- 8BA9FC00119CB32500E264C3 /* GTMUILocalizerAndLayoutTweakerTest1-2.10.6.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8BA9FBFF119CB32500E264C3 /* GTMUILocalizerAndLayoutTweakerTest1-2.10.6.tiff */; };
- 8BA9FC44119CB36100E264C3 /* GTMUILocalizerAndLayoutTweakerTest3-3.10.6.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8BA9FC43119CB36100E264C3 /* GTMUILocalizerAndLayoutTweakerTest3-3.10.6.tiff */; };
- 8BA9FC47119CB37F00E264C3 /* GTMUILocalizerAndLayoutTweakerTest2-0.10.6.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8BA9FC46119CB37F00E264C3 /* GTMUILocalizerAndLayoutTweakerTest2-0.10.6.tiff */; };
- 8BA9FC5D119CB39D00E264C3 /* GTMUILocalizerAndLayoutTweakerTest2-1.10.6.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8BA9FC5C119CB39D00E264C3 /* GTMUILocalizerAndLayoutTweakerTest2-1.10.6.tiff */; };
- 8BA9FC60119CB3B500E264C3 /* GTMUILocalizerAndLayoutTweakerTest2-2.10.6.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8BA9FC5F119CB3B500E264C3 /* GTMUILocalizerAndLayoutTweakerTest2-2.10.6.tiff */; };
- 8BA9FC63119CB3CD00E264C3 /* GTMUILocalizerAndLayoutTweakerTest3-4.10.6.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8BA9FC62119CB3CD00E264C3 /* GTMUILocalizerAndLayoutTweakerTest3-4.10.6.tiff */; };
- 8BA9FC66119CB3E200E264C3 /* GTMUILocalizerAndLayoutTweakerTest5-0.10.6.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8BA9FC65119CB3E200E264C3 /* GTMUILocalizerAndLayoutTweakerTest5-0.10.6.tiff */; };
- 8BA9FC69119CB3F900E264C3 /* GTMUILocalizerAndLayoutTweakerTest5-1.10.6.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8BA9FC68119CB3F900E264C3 /* GTMUILocalizerAndLayoutTweakerTest5-1.10.6.tiff */; };
- 8BA9FC6C119CB43F00E264C3 /* GTMUILocalizerAndLayoutTweakerTest5-2.10.6.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8BA9FC6B119CB43F00E264C3 /* GTMUILocalizerAndLayoutTweakerTest5-2.10.6.tiff */; };
- 8BA9FC6F119CB46000E264C3 /* GTMUILocalizerAndLayoutTweakerTest6-tab0-1.10.6.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8BA9FC6E119CB46000E264C3 /* GTMUILocalizerAndLayoutTweakerTest6-tab0-1.10.6.tiff */; };
- 8BA9FC72119CB47900E264C3 /* GTMUILocalizerAndLayoutTweakerTest6-tab0-2.10.6.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8BA9FC71119CB47900E264C3 /* GTMUILocalizerAndLayoutTweakerTest6-tab0-2.10.6.tiff */; };
- 8BA9FC75119CB48F00E264C3 /* GTMUILocalizerAndLayoutTweakerTest6-tab1-0.10.6.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8BA9FC74119CB48F00E264C3 /* GTMUILocalizerAndLayoutTweakerTest6-tab1-0.10.6.tiff */; };
- 8BA9FC78119CB4A100E264C3 /* GTMUILocalizerAndLayoutTweakerTest6-tab1-1.10.6.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8BA9FC77119CB4A100E264C3 /* GTMUILocalizerAndLayoutTweakerTest6-tab1-1.10.6.tiff */; };
- 8BA9FC7B119CB4B300E264C3 /* GTMUILocalizerAndLayoutTweakerTest6-tab1-2.10.6.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8BA9FC7A119CB4B300E264C3 /* GTMUILocalizerAndLayoutTweakerTest6-tab1-2.10.6.tiff */; };
- 8BAA9B570F7B4C2400DF4F12 /* GTMHotKeyTextFieldTest.xib in Resources */ = {isa = PBXBuildFile; fileRef = 8BAA9B560F7B4C2400DF4F12 /* GTMHotKeyTextFieldTest.xib */; };
+ 8BA983C81D9AE7E6009724B5 /* GTMUnitTestingTest.nib in Resources */ = {isa = PBXBuildFile; fileRef = 8BA983C51D9AE7E6009724B5 /* GTMUnitTestingTest.nib */; };
8BAA9E380F7C19D500DF4F12 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 8BAA9E360F7C19D500DF4F12 /* MainMenu.xib */; };
8BAA9EF20F7C2AB500DF4F12 /* GTMCarbonEventTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B3E29290EEB53F3000681D8 /* GTMCarbonEventTest.m */; };
- 8BAA9EF30F7C2AB500DF4F12 /* GTMGetURLHandlerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B8B10FF0EEB8CD000E543D0 /* GTMGetURLHandlerTest.m */; };
- 8BAA9EF40F7C2AB500DF4F12 /* GTMLargeTypeWindowTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B1801A40E2533DB00280961 /* GTMLargeTypeWindowTest.m */; };
- 8BAA9EF50F7C2AB500DF4F12 /* GTMLinearRGBShadingTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F43E44790D4918B20041161F /* GTMLinearRGBShadingTest.m */; };
8BAA9EF60F7C2AB500DF4F12 /* GTMLoginItemsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F43DCEC60D47BEA000959A62 /* GTMLoginItemsTest.m */; };
8BAA9EF70F7C2AB500DF4F12 /* GTMNSBezierPath+CGPathTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F428FF010D48E55E00382ED1 /* GTMNSBezierPath+CGPathTest.m */; };
8BAA9EF80F7C2AB500DF4F12 /* GTMNSBezierPath+RoundRectTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F48FE2830D198D0E009257D2 /* GTMNSBezierPath+RoundRectTest.m */; };
- 8BAA9EF90F7C2AB500DF4F12 /* GTMNSBezierPath+ShadingTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F47F1C110D490BC000925B8F /* GTMNSBezierPath+ShadingTest.m */; };
8BAA9EFA0F7C2AB500DF4F12 /* GTMNSColor+LuminanceTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 7F511DF50F4B0378009F41B6 /* GTMNSColor+LuminanceTest.m */; };
- 8BAA9EFB0F7C2AB500DF4F12 /* GTMNSImage+ScalingTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 7F3EB3930E5E0A2100A7A75E /* GTMNSImage+ScalingTest.m */; };
- 8BAA9EFC0F7C2AB500DF4F12 /* GTMNSWorkspace+RunningTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BA01B5F0F144BE500926923 /* GTMNSWorkspace+RunningTest.m */; };
- 8BB77A0511B5A09900AB31AF /* GTMGoogleSearchTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BB77A0311B5A09900AB31AF /* GTMGoogleSearchTest.m */; };
- 8BB77A0611B5A0A100AB31AF /* GTMGoogleSearch.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BB77A0211B5A09900AB31AF /* GTMGoogleSearch.m */; };
- 8BB7802E11B6C4EA00AB31AF /* GTMGoogleSearch.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BB77A0111B5A09900AB31AF /* GTMGoogleSearch.h */; settings = {ATTRIBUTES = (Public, ); }; };
8BBD1F8C1519258A003152F0 /* GTMNSThread+Blocks.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BBD1F8A1519258A003152F0 /* GTMNSThread+Blocks.h */; settings = {ATTRIBUTES = (Public, ); }; };
8BBD1F8D1519258A003152F0 /* GTMNSThread+Blocks.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BBD1F8B1519258A003152F0 /* GTMNSThread+Blocks.m */; };
8BBD1F8F1519271A003152F0 /* GTMNSThread+BlocksTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BBD1F8E1519271A003152F0 /* GTMNSThread+BlocksTest.m */; };
@@ -241,22 +95,8 @@
8BC851D4127A19020046E0FB /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8BC851D3127A19020046E0FB /* CoreFoundation.framework */; };
8BC85202127A19370046E0FB /* GTMServiceManagementTestingHarness.c in Sources */ = {isa = PBXBuildFile; fileRef = 8BC85201127A19370046E0FB /* GTMServiceManagementTestingHarness.c */; };
8BC8520E127A19B60046E0FB /* GTMServiceManagementTestingHarness in Resources */ = {isa = PBXBuildFile; fileRef = 8BC85131127A18AE0046E0FB /* GTMServiceManagementTestingHarness */; };
- 8BCB59F011C00ED6009B6C40 /* GTMNSScanner+Unsigned.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BCB59EE11C00ED6009B6C40 /* GTMNSScanner+Unsigned.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 8BCB59F111C00ED6009B6C40 /* GTMNSScanner+Unsigned.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BCB59EF11C00ED6009B6C40 /* GTMNSScanner+Unsigned.m */; };
8BD35B910FB22980009058F5 /* GTMNSScanner+JSON.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BD35B8E0FB22980009058F5 /* GTMNSScanner+JSON.h */; settings = {ATTRIBUTES = (Public, ); }; };
8BD35B920FB22980009058F5 /* GTMNSScanner+JSON.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BD35B8F0FB22980009058F5 /* GTMNSScanner+JSON.m */; };
- 8BDB8A991152E1B200C411B1 /* GTMNSAnimatablePropertyContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BDB8A971152E1B200C411B1 /* GTMNSAnimatablePropertyContainer.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 8BDB8A9A1152E1B200C411B1 /* GTMNSAnimatablePropertyContainer.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BDB8A981152E1B200C411B1 /* GTMNSAnimatablePropertyContainer.m */; };
- 8BDB8C3A115329EC00C411B1 /* GTMNSAnimatablePropertyContainerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BDB8C39115329EC00C411B1 /* GTMNSAnimatablePropertyContainerTest.m */; };
- 8BE281B00DEC7E930035B3F8 /* GTMNSAppleScript+Handler.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3344190DBF7A36009FD32C /* GTMNSAppleScript+Handler.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 8BE281B10DEC7E930035B3F8 /* GTMNSAppleEventDescriptor+Handler.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B33441C0DBF7A36009FD32C /* GTMNSAppleEventDescriptor+Handler.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 8BE281B20DEC7E930035B3F8 /* GTMNSAppleEventDescriptor+Foundation.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B33441F0DBF7A36009FD32C /* GTMNSAppleEventDescriptor+Foundation.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 8BE283730DED13AB0035B3F8 /* GTMFourCharCode.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BE2836D0DED0F130035B3F8 /* GTMFourCharCode.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 8BE839AA0E8AF72E00C611B0 /* GTMDebugThreadValidationTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BE839A80E8AF72500C611B0 /* GTMDebugThreadValidationTest.m */; };
- 8BE869730DBE89C100749827 /* GTMNSBezierPath+RoundRectTest.x86_64.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8BE869720DBE89C100749827 /* GTMNSBezierPath+RoundRectTest.x86_64.tiff */; };
- 8BEEA90D0DA7446300894774 /* GTMUnitTestingImage.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8BEEA90A0DA7446300894774 /* GTMUnitTestingImage.tiff */; };
- 8BEEA90E0DA7446300894774 /* GTMUnitTestingWindow.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8BEEA90B0DA7446300894774 /* GTMUnitTestingWindow.tiff */; };
- 8BEEA90F0DA7446300894774 /* GTMUnitTestingView.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8BEEA90C0DA7446300894774 /* GTMUnitTestingView.tiff */; };
8BF2368F13CF67CB00F3FD82 /* GTMKeyValueAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF2368D13CF67CB00F3FD82 /* GTMKeyValueAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; };
8BF2369013CF67CB00F3FD82 /* GTMKeyValueAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BF2368E13CF67CB00F3FD82 /* GTMKeyValueAnimation.m */; };
8BF2369213CF694C00F3FD82 /* GTMKeyValueAnimationTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BF2369113CF694C00F3FD82 /* GTMKeyValueAnimationTest.m */; };
@@ -265,44 +105,32 @@
8BFE13B70FB0F2C0001BE894 /* GTMABAddressBook.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BFE13B10FB0F2B9001BE894 /* GTMABAddressBook.m */; };
8BFE13ED0FB0F2D8001BE894 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7B1FEA5585E11CA2CBB /* Cocoa.framework */; };
8BFE13EE0FB0F2D8001BE894 /* GoogleToolboxForMac.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F42E086D0D199A5B00D5DDE0 /* GoogleToolboxForMac.framework */; };
- 8BFE13EF0FB0F2D8001BE894 /* SenTestingKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F42E089B0D199B1800D5DDE0 /* SenTestingKit.framework */; };
8BFE14C10FB0F333001BE894 /* GTMABAddressBookTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BFE13B30FB0F2B9001BE894 /* GTMABAddressBookTest.m */; };
8BFE158D0FB0F34C001BE894 /* AddressBook.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8BFE158C0FB0F34C001BE894 /* AddressBook.framework */; };
8BFE158E0FB0F34C001BE894 /* AddressBook.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8BFE158C0FB0F34C001BE894 /* AddressBook.framework */; };
8BFE15970FB0F3C9001BE894 /* GTMSenTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B7DCE180DFF39850017E983 /* GTMSenTestCase.m */; };
8BFE17F40FB1F6E5001BE894 /* GTMABAddressBook.strings in Resources */ = {isa = PBXBuildFile; fileRef = 8BFE13B20FB0F2B9001BE894 /* GTMABAddressBook.strings */; };
8BFE17F50FB1F6EA001BE894 /* phone.png in Resources */ = {isa = PBXBuildFile; fileRef = 8BFE13B50FB0F2B9001BE894 /* phone.png */; };
- 8BFE6E7A1282371200B5C894 /* GTMAbstractDOListenerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 1012DF590F425525004794DB /* GTMAbstractDOListenerTest.m */; };
- 8BFE6E7B1282371200B5C894 /* GTMCalculatedRangeTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F47F1D2F0D4914AD00925B8F /* GTMCalculatedRangeTest.m */; };
- 8BFE6E7C1282371200B5C894 /* GTMExceptionalInlinesTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B1B491B0E5F904C00A08972 /* GTMExceptionalInlinesTest.m */; };
8BFE6E7D1282371200B5C894 /* GTMFileSystemKQueueTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F49FA88A0EEF303D00077669 /* GTMFileSystemKQueueTest.m */; };
- 8BFE6E7E1282371200B5C894 /* GTMFourCharCodeTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BE2836C0DED0F130035B3F8 /* GTMFourCharCodeTest.m */; };
8BFE6E7F1282371200B5C894 /* GTMGeometryUtilsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F48FE2800D198D0E009257D2 /* GTMGeometryUtilsTest.m */; };
8BFE6E801282371200B5C894 /* GTMLightweightProxyTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F41711340ECDFBD500B9B276 /* GTMLightweightProxyTest.m */; };
8BFE6E811282371200B5C894 /* GTMLocalizedStringTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B455F5D1193870A00ABD707 /* GTMLocalizedStringTest.m */; };
8BFE6E821282371200B5C894 /* GTMLogger+ASLTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F98681950E2C20C100CEE8BF /* GTMLogger+ASLTest.m */; };
8BFE6E831282371200B5C894 /* GTMLoggerRingBufferWriterTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F95803F80E2FB0760049A088 /* GTMLoggerRingBufferWriterTest.m */; };
8BFE6E841282371200B5C894 /* GTMLoggerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F98680B10E2C15C300CEE8BF /* GTMLoggerTest.m */; };
- 8BFE6E851282371200B5C894 /* GTMNSAppleEventDescriptor+FoundationTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B33441D0DBF7A36009FD32C /* GTMNSAppleEventDescriptor+FoundationTest.m */; };
- 8BFE6E861282371200B5C894 /* GTMNSAppleEventDescriptor+HandlerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B33441A0DBF7A36009FD32C /* GTMNSAppleEventDescriptor+HandlerTest.m */; };
- 8BFE6E871282371200B5C894 /* GTMNSAppleScript+HandlerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B3344170DBF7A36009FD32C /* GTMNSAppleScript+HandlerTest.m */; };
8BFE6E881282371200B5C894 /* GTMNSArray+MergeTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 6294454B0EDDF89A009295EA /* GTMNSArray+MergeTest.m */; };
8BFE6E891282371200B5C894 /* GTMNSData+zlibTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F43E4E600D4E5EC90041161F /* GTMNSData+zlibTest.m */; };
- 8BFE6E8A1282371200B5C894 /* GTMNSDictionary+CaseInsensitiveTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 0BFAD4C4104D06EF002BEB27 /* GTMNSDictionary+CaseInsensitiveTest.m */; };
8BFE6E8B1282371200B5C894 /* GTMNSDictionary+URLArgumentsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 33C3745E0DD8D85B00E97817 /* GTMNSDictionary+URLArgumentsTest.m */; };
- 8BFE6E8C1282371200B5C894 /* GTMNSEnumerator+FilterTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F43E4DD80D4E56320041161F /* GTMNSEnumerator+FilterTest.m */; };
8BFE6E8D1282371200B5C894 /* GTMNSFileHandle+UniqueNameTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B29078611F8D1BF0064F50F /* GTMNSFileHandle+UniqueNameTest.m */; };
8BFE6E8E1282371200B5C894 /* GTMNSFileManager+CarbonTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B8EC87F0EF17C2F0044D13F /* GTMNSFileManager+CarbonTest.m */; };
8BFE6E8F1282371200B5C894 /* GTMNSFileManager+PathTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F413908E0D75F63C00F72B31 /* GTMNSFileManager+PathTest.m */; };
8BFE6E911282371200B5C894 /* GTMNSObject+KeyValueObservingTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B6C161B0F3580DA00E51E5D /* GTMNSObject+KeyValueObservingTest.m */; };
8BFE6E921282371200B5C894 /* GTMNSScanner+JSONTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BD35B900FB22980009058F5 /* GTMNSScanner+JSONTest.m */; };
- 8BFE6E931282371200B5C894 /* GTMNSScanner+UnsignedTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BCB59F211C00EF6009B6C40 /* GTMNSScanner+UnsignedTest.m */; };
8BFE6E941282371200B5C894 /* GTMNSString+FindFolderTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F42597780E23FE3A003BEA3E /* GTMNSString+FindFolderTest.m */; };
8BFE6E951282371200B5C894 /* GTMNSString+HTMLTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F48FE2900D198D24009257D2 /* GTMNSString+HTMLTest.m */; };
8BFE6E961282371200B5C894 /* GTMNSString+ReplaceTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F42597470E23AA57003BEA3E /* GTMNSString+ReplaceTest.m */; };
8BFE6E971282371200B5C894 /* GTMNSString+URLArgumentsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 33C372AE0DD8A8D700E97817 /* GTMNSString+URLArgumentsTest.m */; };
8BFE6E981282371200B5C894 /* GTMNSString+XMLTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F43E4C270D4E361D0041161F /* GTMNSString+XMLTest.m */; };
- 8BFE6E991282371200B5C894 /* GTMObjC2RuntimeTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B6F32050DA34A1B0052CA40 /* GTMObjC2RuntimeTest.m */; };
8BFE6E9A1282371200B5C894 /* GTMPathTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F9FD945D0E1D30F80005867E /* GTMPathTest.m */; };
8BFE6E9B1282371200B5C894 /* GTMRegexTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F437F55C0D50BC0A00F5C3A4 /* GTMRegexTest.m */; };
8BFE6E9C1282371200B5C894 /* GTMScriptRunnerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F47A79870D746EE9002302AB /* GTMScriptRunnerTest.m */; };
@@ -311,14 +139,6 @@
8BFE6E9F1282371200B5C894 /* GTMStackTraceTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F431221B0DD4E3B800F45252 /* GTMStackTraceTest.m */; };
8BFE6EA01282371200B5C894 /* GTMStringEncodingTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B1B9B8610FECD870084EE4B /* GTMStringEncodingTest.m */; };
8BFE6EA11282371200B5C894 /* GTMSystemVersionTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F48FE2E10D198E4C009257D2 /* GTMSystemVersionTest.m */; };
- 8BFE6EA21282371200B5C894 /* GTMTransientRootPortProxyTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 108930840F4CCB380018D4A0 /* GTMTransientRootPortProxyTest.m */; };
- 8BFE6EA31282371200B5C894 /* GTMTransientRootProxyTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 10A4028D0F44DB2B003B511C /* GTMTransientRootProxyTest.m */; };
- 8BFE6EA41282371200B5C894 /* GTMURITemplateTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F42866B71267340A0090FE0F /* GTMURITemplateTest.m */; };
- 8BFE6EA51282371200B5C894 /* GTMValidatingContainersTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B3AA9F70E033E5F007E31B5 /* GTMValidatingContainersTest.m */; };
- B71B91E21332CD680039B2CB /* GTMFadeTruncatingTextFieldCellTest5.tiff in Resources */ = {isa = PBXBuildFile; fileRef = B71B91E01332CD680039B2CB /* GTMFadeTruncatingTextFieldCellTest5.tiff */; };
- B71B91E31332CD680039B2CB /* GTMFadeTruncatingTextFieldCellTest6.tiff in Resources */ = {isa = PBXBuildFile; fileRef = B71B91E11332CD680039B2CB /* GTMFadeTruncatingTextFieldCellTest6.tiff */; };
- B71B92371332DA380039B2CB /* GTMFadeTruncatingTextFieldCellTest7.tiff in Resources */ = {isa = PBXBuildFile; fileRef = B71B92361332DA380039B2CB /* GTMFadeTruncatingTextFieldCellTest7.tiff */; };
- B7764E80133906B600AFDC7D /* GTMFadeTruncatingTextFieldCellTest8.tiff in Resources */ = {isa = PBXBuildFile; fileRef = B7764E7F133906B600AFDC7D /* GTMFadeTruncatingTextFieldCellTest8.tiff */; };
F413908F0D75F63C00F72B31 /* GTMNSFileManager+Path.h in Headers */ = {isa = PBXBuildFile; fileRef = F413908C0D75F63C00F72B31 /* GTMNSFileManager+Path.h */; settings = {ATTRIBUTES = (Public, ); }; };
F41390900D75F63C00F72B31 /* GTMNSFileManager+Path.m in Sources */ = {isa = PBXBuildFile; fileRef = F413908D0D75F63C00F72B31 /* GTMNSFileManager+Path.m */; };
F41711350ECDFBD500B9B276 /* GTMLightweightProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = F41711320ECDFBD500B9B276 /* GTMLightweightProxy.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -330,21 +150,12 @@
F42597490E23AA57003BEA3E /* GTMNSString+Replace.m in Sources */ = {isa = PBXBuildFile; fileRef = F42597460E23AA57003BEA3E /* GTMNSString+Replace.m */; };
F42597790E23FE3A003BEA3E /* GTMNSString+FindFolder.h in Headers */ = {isa = PBXBuildFile; fileRef = F42597760E23FE3A003BEA3E /* GTMNSString+FindFolder.h */; settings = {ATTRIBUTES = (Public, ); }; };
F425977A0E23FE3A003BEA3E /* GTMNSString+FindFolder.m in Sources */ = {isa = PBXBuildFile; fileRef = F42597770E23FE3A003BEA3E /* GTMNSString+FindFolder.m */; };
- F42866B81267340A0090FE0F /* GTMURITemplate.h in Headers */ = {isa = PBXBuildFile; fileRef = F42866B51267340A0090FE0F /* GTMURITemplate.h */; settings = {ATTRIBUTES = (Public, ); }; };
- F42866B91267340A0090FE0F /* GTMURITemplate.m in Sources */ = {isa = PBXBuildFile; fileRef = F42866B61267340A0090FE0F /* GTMURITemplate.m */; };
- F428670312673C490090FE0F /* GTMURITemplateExtraTests.json in Resources */ = {isa = PBXBuildFile; fileRef = F428670112673C490090FE0F /* GTMURITemplateExtraTests.json */; };
- F428670412673C490090FE0F /* GTMURITemplateRFCTests.json in Resources */ = {isa = PBXBuildFile; fileRef = F428670212673C490090FE0F /* GTMURITemplateRFCTests.json */; };
F428FF030D48E55E00382ED1 /* GTMNSBezierPath+CGPath.h in Headers */ = {isa = PBXBuildFile; fileRef = F428FEFF0D48E55E00382ED1 /* GTMNSBezierPath+CGPath.h */; settings = {ATTRIBUTES = (Public, ); }; };
F428FF040D48E55E00382ED1 /* GTMNSBezierPath+CGPath.m in Sources */ = {isa = PBXBuildFile; fileRef = F428FF000D48E55E00382ED1 /* GTMNSBezierPath+CGPath.m */; };
F42E08610D199A2B00D5DDE0 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7B1FEA5585E11CA2CBB /* Cocoa.framework */; };
F42E08640D199A2F00D5DDE0 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0867D69BFE84028FC02AAC07 /* Foundation.framework */; };
F42E087F0D199AB400D5DDE0 /* GoogleToolboxForMac.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F42E086D0D199A5B00D5DDE0 /* GoogleToolboxForMac.framework */; };
F42E08800D199AB500D5DDE0 /* GoogleToolboxForMac.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F42E086D0D199A5B00D5DDE0 /* GoogleToolboxForMac.framework */; };
- F42E089C0D199B1800D5DDE0 /* SenTestingKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F42E089B0D199B1800D5DDE0 /* SenTestingKit.framework */; };
- F42E089D0D199B1800D5DDE0 /* SenTestingKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F42E089B0D199B1800D5DDE0 /* SenTestingKit.framework */; };
- F42E09450D199BA400D5DDE0 /* GTMNSObject+UnitTesting.m in Sources */ = {isa = PBXBuildFile; fileRef = F48FE29C0D198D36009257D2 /* GTMNSObject+UnitTesting.m */; };
- F42E09490D199BBF00D5DDE0 /* GTMDelegatingTableColumn.h in Headers */ = {isa = PBXBuildFile; fileRef = F48FE27C0D198D0E009257D2 /* GTMDelegatingTableColumn.h */; settings = {ATTRIBUTES = (Public, ); }; };
- F42E094A0D199BBF00D5DDE0 /* GTMDelegatingTableColumn.m in Sources */ = {isa = PBXBuildFile; fileRef = F48FE27D0D198D0E009257D2 /* GTMDelegatingTableColumn.m */; };
F42E094C0D199BBF00D5DDE0 /* GTMGeometryUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = F48FE27E0D198D0E009257D2 /* GTMGeometryUtils.h */; settings = {ATTRIBUTES = (Public, ); }; };
F42E094D0D199BBF00D5DDE0 /* GTMGeometryUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = F48FE27F0D198D0E009257D2 /* GTMGeometryUtils.m */; };
F42E094F0D199BBF00D5DDE0 /* GTMNSBezierPath+RoundRect.h in Headers */ = {isa = PBXBuildFile; fileRef = F48FE2810D198D0E009257D2 /* GTMNSBezierPath+RoundRect.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -358,100 +169,33 @@
F42E09AE0D19A62F00D5DDE0 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F42E09AD0D19A62F00D5DDE0 /* Carbon.framework */; };
F42E2C69102B1261004DF054 /* GTMUILocalizerAndLayoutTweakerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F42E2C68102B1261004DF054 /* GTMUILocalizerAndLayoutTweakerTest.m */; };
F42E2C84102B14B0004DF054 /* GTMUILocalizerAndLayoutTweakerTest1.xib in Resources */ = {isa = PBXBuildFile; fileRef = F42E2C83102B14B0004DF054 /* GTMUILocalizerAndLayoutTweakerTest1.xib */; };
- F42E2CFF102B21EE004DF054 /* GTMUILocalizerAndLayoutTweakerTest1-0.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F42E2CFC102B21EE004DF054 /* GTMUILocalizerAndLayoutTweakerTest1-0.tiff */; };
- F42E2D00102B21EE004DF054 /* GTMUILocalizerAndLayoutTweakerTest1-1.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F42E2CFD102B21EE004DF054 /* GTMUILocalizerAndLayoutTweakerTest1-1.tiff */; };
- F42E2D01102B21EE004DF054 /* GTMUILocalizerAndLayoutTweakerTest1-2.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F42E2CFE102B21EE004DF054 /* GTMUILocalizerAndLayoutTweakerTest1-2.tiff */; };
F42E2D08102B2283004DF054 /* GTMUILocalizerAndLayoutTweakerTest2.xib in Resources */ = {isa = PBXBuildFile; fileRef = F42E2D07102B2283004DF054 /* GTMUILocalizerAndLayoutTweakerTest2.xib */; };
- F42E2D24102B24E5004DF054 /* GTMUILocalizerAndLayoutTweakerTest2-0.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F42E2D21102B24E5004DF054 /* GTMUILocalizerAndLayoutTweakerTest2-0.tiff */; };
- F42E2D25102B24E5004DF054 /* GTMUILocalizerAndLayoutTweakerTest2-1.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F42E2D22102B24E5004DF054 /* GTMUILocalizerAndLayoutTweakerTest2-1.tiff */; };
- F42E2D26102B24E5004DF054 /* GTMUILocalizerAndLayoutTweakerTest2-2.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F42E2D23102B24E5004DF054 /* GTMUILocalizerAndLayoutTweakerTest2-2.tiff */; };
- F42F50F91057E99200BFC735 /* GTMUnitTestingWindow.10.5.8.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F42F50E81057E91A00BFC735 /* GTMUnitTestingWindow.10.5.8.tiff */; };
F431221D0DD4E3B800F45252 /* GTMStackTrace.h in Headers */ = {isa = PBXBuildFile; fileRef = F431221A0DD4E3B800F45252 /* GTMStackTrace.h */; settings = {ATTRIBUTES = (Public, ); }; };
- F435DE7C0DC0B6580069CDE8 /* GTMNSBezierPath+CGPathTest.ppc64.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F435DE7A0DC0B6580069CDE8 /* GTMNSBezierPath+CGPathTest.ppc64.tiff */; };
- F435DE7D0DC0B6580069CDE8 /* GTMNSBezierPath+CGPathTest.x86_64.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F435DE7B0DC0B6580069CDE8 /* GTMNSBezierPath+CGPathTest.x86_64.tiff */; };
- F435DE8B0DC0B7620069CDE8 /* GTMNSBezierPath+RoundRectTest.ppc64.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F435DE8A0DC0B7620069CDE8 /* GTMNSBezierPath+RoundRectTest.ppc64.tiff */; };
F437F55D0D50BC0A00F5C3A4 /* GTMRegex.h in Headers */ = {isa = PBXBuildFile; fileRef = F437F55A0D50BC0A00F5C3A4 /* GTMRegex.h */; settings = {ATTRIBUTES = (Public, ); }; };
F437F55E0D50BC0A00F5C3A4 /* GTMRegex.m in Sources */ = {isa = PBXBuildFile; fileRef = F437F55B0D50BC0A00F5C3A4 /* GTMRegex.m */; };
- F43A43531146DCC70048A9DC /* GTMUILocalizerAndLayoutTweakerTest7-Min-0.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F43A434B1146DCC70048A9DC /* GTMUILocalizerAndLayoutTweakerTest7-Min-0.tiff */; };
- F43A43541146DCC70048A9DC /* GTMUILocalizerAndLayoutTweakerTest7-Min-1.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F43A434C1146DCC70048A9DC /* GTMUILocalizerAndLayoutTweakerTest7-Min-1.tiff */; };
- F43A43551146DCC70048A9DC /* GTMUILocalizerAndLayoutTweakerTest7-Min-2.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F43A434D1146DCC70048A9DC /* GTMUILocalizerAndLayoutTweakerTest7-Min-2.tiff */; };
- F43A43561146DCC70048A9DC /* GTMUILocalizerAndLayoutTweakerTest7-Min-3.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F43A434E1146DCC70048A9DC /* GTMUILocalizerAndLayoutTweakerTest7-Min-3.tiff */; };
- F43A43571146DCC70048A9DC /* GTMUILocalizerAndLayoutTweakerTest7-NoMin-0.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F43A434F1146DCC70048A9DC /* GTMUILocalizerAndLayoutTweakerTest7-NoMin-0.tiff */; };
- F43A43581146DCC70048A9DC /* GTMUILocalizerAndLayoutTweakerTest7-NoMin-1.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F43A43501146DCC70048A9DC /* GTMUILocalizerAndLayoutTweakerTest7-NoMin-1.tiff */; };
- F43A43591146DCC70048A9DC /* GTMUILocalizerAndLayoutTweakerTest7-NoMin-2.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F43A43511146DCC70048A9DC /* GTMUILocalizerAndLayoutTweakerTest7-NoMin-2.tiff */; };
- F43A435A1146DCC70048A9DC /* GTMUILocalizerAndLayoutTweakerTest7-NoMin-3.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F43A43521146DCC70048A9DC /* GTMUILocalizerAndLayoutTweakerTest7-NoMin-3.tiff */; };
F43C7A571021FAA300ABF03C /* GTMUILocalizerAndLayoutTweaker.h in Headers */ = {isa = PBXBuildFile; fileRef = F43C7A551021FAA300ABF03C /* GTMUILocalizerAndLayoutTweaker.h */; settings = {ATTRIBUTES = (Public, ); }; };
F43C7A581021FAA300ABF03C /* GTMUILocalizerAndLayoutTweaker.m in Sources */ = {isa = PBXBuildFile; fileRef = F43C7A561021FAA300ABF03C /* GTMUILocalizerAndLayoutTweaker.m */; };
F43DCDCD0D4796C600959A62 /* GTMLoginItems.h in Headers */ = {isa = PBXBuildFile; fileRef = F43DCDCB0D4796C600959A62 /* GTMLoginItems.h */; settings = {ATTRIBUTES = (Public, ); }; };
F43DCDCE0D4796C600959A62 /* GTMLoginItems.m in Sources */ = {isa = PBXBuildFile; fileRef = F43DCDCC0D4796C600959A62 /* GTMLoginItems.m */; };
- F43E447A0D4918B20041161F /* GTMLinearRGBShading.h in Headers */ = {isa = PBXBuildFile; fileRef = F43E44770D4918B20041161F /* GTMLinearRGBShading.h */; settings = {ATTRIBUTES = (Public, ); }; };
- F43E447B0D4918B20041161F /* GTMLinearRGBShading.m in Sources */ = {isa = PBXBuildFile; fileRef = F43E44780D4918B20041161F /* GTMLinearRGBShading.m */; };
F43E4C280D4E361D0041161F /* GTMNSString+XML.h in Headers */ = {isa = PBXBuildFile; fileRef = F43E4C250D4E361D0041161F /* GTMNSString+XML.h */; settings = {ATTRIBUTES = (Public, ); }; };
F43E4C290D4E361D0041161F /* GTMNSString+XML.m in Sources */ = {isa = PBXBuildFile; fileRef = F43E4C260D4E361D0041161F /* GTMNSString+XML.m */; };
- F43E4DD90D4E56320041161F /* GTMNSEnumerator+Filter.h in Headers */ = {isa = PBXBuildFile; fileRef = F43E4DD60D4E56320041161F /* GTMNSEnumerator+Filter.h */; settings = {ATTRIBUTES = (Public, ); }; };
- F43E4DDA0D4E56320041161F /* GTMNSEnumerator+Filter.m in Sources */ = {isa = PBXBuildFile; fileRef = F43E4DD70D4E56320041161F /* GTMNSEnumerator+Filter.m */; };
F43E4E610D4E5EC90041161F /* GTMNSData+zlib.h in Headers */ = {isa = PBXBuildFile; fileRef = F43E4E5E0D4E5EC90041161F /* GTMNSData+zlib.h */; settings = {ATTRIBUTES = (Public, ); }; };
F43E4E620D4E5EC90041161F /* GTMNSData+zlib.m in Sources */ = {isa = PBXBuildFile; fileRef = F43E4E5F0D4E5EC90041161F /* GTMNSData+zlib.m */; };
F43E4F6D0D4E60C50041161F /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = F43E4F6C0D4E60C50041161F /* libz.dylib */; };
- F450A6BF146C2A6E001B3B1F /* GTMUILocalizerAndLayoutTweakerTest4-0.10_4_SDK.10.6.7.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F450A6B9146C2A6E001B3B1F /* GTMUILocalizerAndLayoutTweakerTest4-0.10_4_SDK.10.6.7.tiff */; };
- F450A6C0146C2A6E001B3B1F /* GTMUILocalizerAndLayoutTweakerTest4-1.10_4_SDK.10.6.7.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F450A6BA146C2A6E001B3B1F /* GTMUILocalizerAndLayoutTweakerTest4-1.10_4_SDK.10.6.7.tiff */; };
- F450A6C1146C2A6E001B3B1F /* GTMUILocalizerAndLayoutTweakerTest4-2.10_4_SDK.10.6.7.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F450A6BB146C2A6E001B3B1F /* GTMUILocalizerAndLayoutTweakerTest4-2.10_4_SDK.10.6.7.tiff */; };
- F450A749146D7206001B3B1F /* GTMUILocalizerAndLayoutTweakerTest4-0.10.6.7.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F450A746146D7206001B3B1F /* GTMUILocalizerAndLayoutTweakerTest4-0.10.6.7.tiff */; };
- F450A74A146D7206001B3B1F /* GTMUILocalizerAndLayoutTweakerTest4-1.10.6.7.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F450A747146D7206001B3B1F /* GTMUILocalizerAndLayoutTweakerTest4-1.10.6.7.tiff */; };
- F450A74B146D7206001B3B1F /* GTMUILocalizerAndLayoutTweakerTest4-2.10.6.7.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F450A748146D7206001B3B1F /* GTMUILocalizerAndLayoutTweakerTest4-2.10.6.7.tiff */; };
F47466661296F19E0022C1FB /* GTMSenTestCaseTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F47466651296F19E0022C1FB /* GTMSenTestCaseTest.m */; };
F47A79880D746EE9002302AB /* GTMScriptRunner.h in Headers */ = {isa = PBXBuildFile; fileRef = F47A79850D746EE9002302AB /* GTMScriptRunner.h */; settings = {ATTRIBUTES = (Public, ); }; };
F47A79890D746EE9002302AB /* GTMScriptRunner.m in Sources */ = {isa = PBXBuildFile; fileRef = F47A79860D746EE9002302AB /* GTMScriptRunner.m */; };
- F47F1C120D490BC000925B8F /* GTMNSBezierPath+Shading.h in Headers */ = {isa = PBXBuildFile; fileRef = F47F1C0D0D490BC000925B8F /* GTMNSBezierPath+Shading.h */; settings = {ATTRIBUTES = (Public, ); }; };
- F47F1C130D490BC000925B8F /* GTMNSBezierPath+Shading.m in Sources */ = {isa = PBXBuildFile; fileRef = F47F1C0E0D490BC000925B8F /* GTMNSBezierPath+Shading.m */; };
- F47F1C750D490E5C00925B8F /* GTMShading.h in Headers */ = {isa = PBXBuildFile; fileRef = F47F1C740D490E5C00925B8F /* GTMShading.h */; settings = {ATTRIBUTES = (Public, ); }; };
- F47F1D300D4914AD00925B8F /* GTMCalculatedRange.h in Headers */ = {isa = PBXBuildFile; fileRef = F47F1D2D0D4914AD00925B8F /* GTMCalculatedRange.h */; settings = {ATTRIBUTES = (Public, ); }; };
- F47F1D310D4914AD00925B8F /* GTMCalculatedRange.m in Sources */ = {isa = PBXBuildFile; fileRef = F47F1D2E0D4914AD00925B8F /* GTMCalculatedRange.m */; };
- F48D000D0FE994C900428D0B /* GTMUnitTestingWindow.10.5.7.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F48D000C0FE994BF00428D0B /* GTMUnitTestingWindow.10.5.7.tiff */; };
F493E3591146CD97005F994E /* GTMUILocalizerAndLayoutTweakerTest7.xib in Resources */ = {isa = PBXBuildFile; fileRef = F493E3581146CD97005F994E /* GTMUILocalizerAndLayoutTweakerTest7.xib */; };
- F49DCD271460937A00506616 /* GTMUILocalizerAndLayoutTweakerTest4-0.10.6.8.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F49DCD211460937A00506616 /* GTMUILocalizerAndLayoutTweakerTest4-0.10.6.8.tiff */; };
- F49DCD281460937A00506616 /* GTMUILocalizerAndLayoutTweakerTest4-1.10.6.8.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F49DCD221460937A00506616 /* GTMUILocalizerAndLayoutTweakerTest4-1.10.6.8.tiff */; };
- F49DCD291460937A00506616 /* GTMUILocalizerAndLayoutTweakerTest4-2.10.6.8.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F49DCD231460937A00506616 /* GTMUILocalizerAndLayoutTweakerTest4-2.10.6.8.tiff */; };
- F49DCD60146096D300506616 /* GTMUILocalizerAndLayoutTweakerTest4-0.10_4_SDK.10.6.8.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F49DCD5A146096D300506616 /* GTMUILocalizerAndLayoutTweakerTest4-0.10_4_SDK.10.6.8.tiff */; };
- F49DCD61146096D300506616 /* GTMUILocalizerAndLayoutTweakerTest4-1.10_4_SDK.10.6.8.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F49DCD5B146096D300506616 /* GTMUILocalizerAndLayoutTweakerTest4-1.10_4_SDK.10.6.8.tiff */; };
- F49DCD62146096D300506616 /* GTMUILocalizerAndLayoutTweakerTest4-2.10_4_SDK.10.6.8.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F49DCD5C146096D300506616 /* GTMUILocalizerAndLayoutTweakerTest4-2.10_4_SDK.10.6.8.tiff */; };
F49FA8440EEF2AB700077669 /* GTMFileSystemKQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = F49FA8420EEF2AB700077669 /* GTMFileSystemKQueue.h */; settings = {ATTRIBUTES = (Public, ); }; };
F49FA8450EEF2AB700077669 /* GTMFileSystemKQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = F49FA8430EEF2AB700077669 /* GTMFileSystemKQueue.m */; };
- F4A420EF0EDDF8E000397A11 /* GTMHotKeyTextField.h in Headers */ = {isa = PBXBuildFile; fileRef = F4A420EC0EDDF8E000397A11 /* GTMHotKeyTextField.h */; settings = {ATTRIBUTES = (Public, ); }; };
- F4A420F00EDDF8E000397A11 /* GTMHotKeyTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = F4A420ED0EDDF8E000397A11 /* GTMHotKeyTextField.m */; };
- F4A486ED1097EA0A00513483 /* GTMUnitTestingView.10.6.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F4A486EC1097EA0A00513483 /* GTMUnitTestingView.10.6.tiff */; };
- F4AA2CB2109B37650025C956 /* GTMUILocalizerAndLayoutTweakerTest3-4.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F4AA2CB1109B37650025C956 /* GTMUILocalizerAndLayoutTweakerTest3-4.tiff */; };
F4C0B9C3108E27EE002FC8E4 /* GTMUILocalizerAndLayoutTweakerTest5.xib in Resources */ = {isa = PBXBuildFile; fileRef = F4C0B9C2108E27EE002FC8E4 /* GTMUILocalizerAndLayoutTweakerTest5.xib */; };
- F4C0B9DA108E3142002FC8E4 /* GTMUILocalizerAndLayoutTweakerTest5-0.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F4C0B9D7108E3142002FC8E4 /* GTMUILocalizerAndLayoutTweakerTest5-0.tiff */; };
- F4C0B9DB108E3142002FC8E4 /* GTMUILocalizerAndLayoutTweakerTest5-1.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F4C0B9D8108E3142002FC8E4 /* GTMUILocalizerAndLayoutTweakerTest5-1.tiff */; };
- F4C0B9DC108E3142002FC8E4 /* GTMUILocalizerAndLayoutTweakerTest5-2.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F4C0B9D9108E3142002FC8E4 /* GTMUILocalizerAndLayoutTweakerTest5-2.tiff */; };
- F4C58CC310BAD75200651068 /* GTMFadeTruncatingTextFieldCellTest3.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F4C58CC110BAD75200651068 /* GTMFadeTruncatingTextFieldCellTest3.tiff */; };
- F4C58CC410BAD75200651068 /* GTMFadeTruncatingTextFieldCellTest4.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F4C58CC210BAD75200651068 /* GTMFadeTruncatingTextFieldCellTest4.tiff */; };
F4C62489109753960069CADD /* GTMIBArrayTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F4C62486109753960069CADD /* GTMIBArrayTest.m */; };
F4C6248A109753960069CADD /* GTMIBArrayTest.xib in Resources */ = {isa = PBXBuildFile; fileRef = F4C62487109753960069CADD /* GTMIBArrayTest.xib */; };
F4C6248B109753960069CADD /* GTMIBArray.h in Headers */ = {isa = PBXBuildFile; fileRef = F4C62483109753960069CADD /* GTMIBArray.h */; settings = {ATTRIBUTES = (Public, ); }; };
F4C6248C109753960069CADD /* GTMIBArray.m in Sources */ = {isa = PBXBuildFile; fileRef = F4C62484109753960069CADD /* GTMIBArray.m */; };
- F4CA854F0DAFAAF600B4AB10 /* GTMObjC2Runtime.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B6F32060DA34A1B0052CA40 /* GTMObjC2Runtime.h */; settings = {ATTRIBUTES = (Public, ); }; };
F4FB44141120799A00F2FF9D /* GTMUILocalizerAndLayoutTweakerTest6.xib in Resources */ = {isa = PBXBuildFile; fileRef = F4FB44131120799A00F2FF9D /* GTMUILocalizerAndLayoutTweakerTest6.xib */; };
- F4FB445311207FE600F2FF9D /* GTMUILocalizerAndLayoutTweakerTest6-tab0-0.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F4FB444D11207FE600F2FF9D /* GTMUILocalizerAndLayoutTweakerTest6-tab0-0.tiff */; };
- F4FB445411207FE600F2FF9D /* GTMUILocalizerAndLayoutTweakerTest6-tab0-1.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F4FB444E11207FE600F2FF9D /* GTMUILocalizerAndLayoutTweakerTest6-tab0-1.tiff */; };
- F4FB445511207FE600F2FF9D /* GTMUILocalizerAndLayoutTweakerTest6-tab0-2.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F4FB444F11207FE600F2FF9D /* GTMUILocalizerAndLayoutTweakerTest6-tab0-2.tiff */; };
- F4FB445611207FE600F2FF9D /* GTMUILocalizerAndLayoutTweakerTest6-tab1-0.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F4FB445011207FE600F2FF9D /* GTMUILocalizerAndLayoutTweakerTest6-tab1-0.tiff */; };
- F4FB445711207FE600F2FF9D /* GTMUILocalizerAndLayoutTweakerTest6-tab1-1.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F4FB445111207FE600F2FF9D /* GTMUILocalizerAndLayoutTweakerTest6-tab1-1.tiff */; };
- F4FB445811207FE600F2FF9D /* GTMUILocalizerAndLayoutTweakerTest6-tab1-2.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F4FB445211207FE600F2FF9D /* GTMUILocalizerAndLayoutTweakerTest6-tab1-2.tiff */; };
F4FC15DD1046AD66000AB7BC /* GTMUILocalizerAndLayoutTweakerTest3.xib in Resources */ = {isa = PBXBuildFile; fileRef = F4FC15DC1046AD66000AB7BC /* GTMUILocalizerAndLayoutTweakerTest3.xib */; };
- F4FC16031046B581000AB7BC /* GTMUILocalizerAndLayoutTweakerTest3-0.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F4FC15FF1046B581000AB7BC /* GTMUILocalizerAndLayoutTweakerTest3-0.tiff */; };
- F4FC16041046B581000AB7BC /* GTMUILocalizerAndLayoutTweakerTest3-1.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F4FC16001046B581000AB7BC /* GTMUILocalizerAndLayoutTweakerTest3-1.tiff */; };
- F4FC16051046B581000AB7BC /* GTMUILocalizerAndLayoutTweakerTest3-2.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F4FC16011046B581000AB7BC /* GTMUILocalizerAndLayoutTweakerTest3-2.tiff */; };
- F4FC16061046B581000AB7BC /* GTMUILocalizerAndLayoutTweakerTest3-3.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F4FC16021046B581000AB7BC /* GTMUILocalizerAndLayoutTweakerTest3-3.tiff */; };
- F4FC322D104EAA11000AB7BC /* GTMUILocalizerWindow3State.gtmUTState in Resources */ = {isa = PBXBuildFile; fileRef = F4FC322C104EAA11000AB7BC /* GTMUILocalizerWindow3State.gtmUTState */; };
F4FC324D104EBD70000AB7BC /* GTMUILocalizerAndLayoutTweakerTest4.xib in Resources */ = {isa = PBXBuildFile; fileRef = F4FC324C104EBD70000AB7BC /* GTMUILocalizerAndLayoutTweakerTest4.xib */; };
- F4FC327D104EC6D5000AB7BC /* GTMUILocalizerAndLayoutTweakerTest4-0.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F4FC327A104EC6D5000AB7BC /* GTMUILocalizerAndLayoutTweakerTest4-0.tiff */; };
- F4FC327E104EC6D5000AB7BC /* GTMUILocalizerAndLayoutTweakerTest4-1.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F4FC327B104EC6D5000AB7BC /* GTMUILocalizerAndLayoutTweakerTest4-1.tiff */; };
- F4FC327F104EC6D5000AB7BC /* GTMUILocalizerAndLayoutTweakerTest4-2.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F4FC327C104EC6D5000AB7BC /* GTMUILocalizerAndLayoutTweakerTest4-2.tiff */; };
- F4FC333D104EE94F000AB7BC /* GTMUILocalizerAndLayoutTweakerTest4-0.10_4_SDK.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F4FC333A104EE94F000AB7BC /* GTMUILocalizerAndLayoutTweakerTest4-0.10_4_SDK.tiff */; };
- F4FC333E104EE94F000AB7BC /* GTMUILocalizerAndLayoutTweakerTest4-1.10_4_SDK.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F4FC333B104EE94F000AB7BC /* GTMUILocalizerAndLayoutTweakerTest4-1.10_4_SDK.tiff */; };
- F4FC333F104EE94F000AB7BC /* GTMUILocalizerAndLayoutTweakerTest4-2.10_4_SDK.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F4FC333C104EE94F000AB7BC /* GTMUILocalizerAndLayoutTweakerTest4-2.10_4_SDK.tiff */; };
F4FF22780D9D4835003880AC /* GTMDebugSelectorValidation.h in Headers */ = {isa = PBXBuildFile; fileRef = F4FF22770D9D4835003880AC /* GTMDebugSelectorValidation.h */; settings = {ATTRIBUTES = (Public, ); }; };
F92B9FA80E2E64B900A2FE61 /* GTMLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = F98680AF0E2C15C300CEE8BF /* GTMLogger.h */; settings = {ATTRIBUTES = (Public, ); }; };
F92B9FA90E2E64BC00A2FE61 /* GTMLogger+ASL.h in Headers */ = {isa = PBXBuildFile; fileRef = F98681670E2C1E3A00CEE8BF /* GTMLogger+ASL.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -468,13 +212,6 @@
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
- 8B45A2D30DA51A0E001148C5 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = 8B45A2890DA49B99001148C5;
- remoteInfo = UIUnitTestingHarness;
- };
8B7DCBA30DFF0EFB0017E983 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
@@ -482,13 +219,6 @@
remoteGlobalIDString = F42E086C0D199A5B00D5DDE0;
remoteInfo = GTM;
};
- 8BAA9A340F7AF50600DF4F12 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = 8B45A2890DA49B99001148C5;
- remoteInfo = UIUnitTestingHarness;
- };
8BC8514E127A18B60046E0FB /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
@@ -517,34 +247,6 @@
remoteGlobalIDString = F42E086C0D199A5B00D5DDE0;
remoteInfo = GTM;
};
- F4E4279110B7484B00F28A35 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = 8BFE13BC0FB0F2D8001BE894;
- remoteInfo = "UnitTest-AddressBook";
- };
- F4E4279310B7484B00F28A35 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = F48FE2630D198C1E009257D2;
- remoteInfo = "UnitTest-AppKit";
- };
- F4E4279510B7484B00F28A35 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = F42E08110D19987200D5DDE0;
- remoteInfo = "UnitTest-Foundation";
- };
- F4E4279710B7484B00F28A35 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = 8B45A0270DA4696C001148C5;
- remoteInfo = "UnitTest-UnitTesting";
- };
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
@@ -553,20 +255,7 @@
0B1B9B8410FECD870084EE4B /* GTMStringEncoding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GTMStringEncoding.h; path = Foundation/GTMStringEncoding.h; sourceTree = SOURCE_ROOT; };
0B1B9B8510FECD870084EE4B /* GTMStringEncoding.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = GTMStringEncoding.m; path = Foundation/GTMStringEncoding.m; sourceTree = SOURCE_ROOT; };
0B1B9B8610FECD870084EE4B /* GTMStringEncodingTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = GTMStringEncodingTest.m; path = Foundation/GTMStringEncodingTest.m; sourceTree = SOURCE_ROOT; };
- 0BFAD4C2104D06EF002BEB27 /* GTMNSDictionary+CaseInsensitive.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSDictionary+CaseInsensitive.h"; sourceTree = "<group>"; };
- 0BFAD4C3104D06EF002BEB27 /* GTMNSDictionary+CaseInsensitive.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSDictionary+CaseInsensitive.m"; sourceTree = "<group>"; };
- 0BFAD4C4104D06EF002BEB27 /* GTMNSDictionary+CaseInsensitiveTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSDictionary+CaseInsensitiveTest.m"; sourceTree = "<group>"; };
- 1012DF540F4252BD004794DB /* GTMAbstractDOListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMAbstractDOListener.h; sourceTree = "<group>"; };
- 1012DF550F4252BD004794DB /* GTMAbstractDOListener.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMAbstractDOListener.m; sourceTree = "<group>"; };
- 1012DF590F425525004794DB /* GTMAbstractDOListenerTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMAbstractDOListenerTest.m; sourceTree = "<group>"; };
1058C7B1FEA5585E11CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
- 108930840F4CCB380018D4A0 /* GTMTransientRootPortProxyTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMTransientRootPortProxyTest.m; sourceTree = "<group>"; };
- 10998EF20F4B5D1A007F179D /* GTMTransientRootPortProxy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMTransientRootPortProxy.m; sourceTree = "<group>"; };
- 10998EF30F4B5D1A007F179D /* GTMTransientRootPortProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMTransientRootPortProxy.h; sourceTree = "<group>"; };
- 10A4028D0F44DB2B003B511C /* GTMTransientRootProxyTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMTransientRootProxyTest.m; sourceTree = "<group>"; };
- 10A4028E0F44DB2B003B511C /* GTMTransientRootProxy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMTransientRootProxy.m; sourceTree = "<group>"; };
- 10A4028F0F44DB2B003B511C /* GTMTransientRootProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMTransientRootProxy.h; sourceTree = "<group>"; };
- 32DBCF5E0370ADEE00C91783 /* GTM_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTM_Prefix.pch; sourceTree = "<group>"; };
33C372A40DD8A88500E97817 /* GTMNSString+URLArguments.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSString+URLArguments.h"; sourceTree = "<group>"; };
33C372A50DD8A88500E97817 /* GTMNSString+URLArguments.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSString+URLArguments.m"; sourceTree = "<group>"; };
33C372AE0DD8A8D700E97817 /* GTMNSString+URLArgumentsTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSString+URLArgumentsTest.m"; sourceTree = "<group>"; };
@@ -577,137 +266,57 @@
6294453E0EDDF647009295EA /* GTMNSArray+Merge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSArray+Merge.h"; sourceTree = "<group>"; };
6294453F0EDDF647009295EA /* GTMNSArray+Merge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSArray+Merge.m"; sourceTree = "<group>"; };
6294454B0EDDF89A009295EA /* GTMNSArray+MergeTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSArray+MergeTest.m"; sourceTree = "<group>"; };
- 7F3EB38C0E5E09C700A7A75E /* GTMNSImage+Scaling.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSImage+Scaling.h"; sourceTree = "<group>"; };
- 7F3EB38D0E5E09C700A7A75E /* GTMNSImage+Scaling.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSImage+Scaling.m"; sourceTree = "<group>"; };
- 7F3EB3930E5E0A2100A7A75E /* GTMNSImage+ScalingTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSImage+ScalingTest.m"; sourceTree = "<group>"; };
- 7F4C015E1055AD4200F88238 /* GTMUILocalizerWindow1State.10_4_SDK.gtmUTState */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = GTMUILocalizerWindow1State.10_4_SDK.gtmUTState; sourceTree = "<group>"; };
7F511DF30F4B0378009F41B6 /* GTMNSColor+Luminance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSColor+Luminance.h"; sourceTree = "<group>"; };
7F511DF40F4B0378009F41B6 /* GTMNSColor+Luminance.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSColor+Luminance.m"; sourceTree = "<group>"; };
7F511DF50F4B0378009F41B6 /* GTMNSColor+LuminanceTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSColor+LuminanceTest.m"; sourceTree = "<group>"; };
- 7F6840D1105375A70057F4FA /* GTMUILocalizerTestWindow_10_4.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = GTMUILocalizerTestWindow_10_4.xib; sourceTree = "<group>"; };
7F97DB2D104EBC8D004DDDEE /* GTMFadeTruncatingTextFieldCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMFadeTruncatingTextFieldCell.h; sourceTree = "<group>"; };
7F97DB2E104EBC8D004DDDEE /* GTMFadeTruncatingTextFieldCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMFadeTruncatingTextFieldCell.m; sourceTree = "<group>"; };
7F97DB2F104EBC8D004DDDEE /* GTMFadeTruncatingTextFieldCellTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMFadeTruncatingTextFieldCellTest.m; sourceTree = "<group>"; };
- 7F97DBA2104ED861004DDDEE /* GTMFadeTruncatingTextFieldCellTest1.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = GTMFadeTruncatingTextFieldCellTest1.tiff; sourceTree = "<group>"; };
- 7F97DBA3104ED861004DDDEE /* GTMFadeTruncatingTextFieldCellTest2.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = GTMFadeTruncatingTextFieldCellTest2.tiff; sourceTree = "<group>"; };
- 7FF768DF1051B17900D34F4B /* GTMNSImage+SearchCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSImage+SearchCache.h"; sourceTree = "<group>"; };
- 7FF768E01051B17900D34F4B /* GTMNSImage+SearchCache.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSImage+SearchCache.m"; sourceTree = "<group>"; };
- 7FF768E11051B17900D34F4B /* GTMNSImage+SearchCacheTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSImage+SearchCacheTest.m"; sourceTree = "<group>"; };
8207B8970FEA7A98008A527B /* GTMWindowSheetController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMWindowSheetController.h; sourceTree = "<group>"; };
8207B8980FEA7A98008A527B /* GTMWindowSheetController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMWindowSheetController.m; sourceTree = "<group>"; };
8207B8990FEA7A98008A527B /* GTMWindowSheetControllerTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMWindowSheetControllerTest.m; sourceTree = "<group>"; };
- 84B91B890EA3CC2E0087500F /* GTMUnitTestingImage.10.6.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = GTMUnitTestingImage.10.6.tiff; sourceTree = "<group>"; };
- 84B91B8A0EA3CC2E0087500F /* GTMUnitTestingWindow.10.6.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = GTMUnitTestingWindow.10.6.tiff; sourceTree = "<group>"; };
- 84D99F360EA661C900C007D5 /* BuildAllSDKs.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = BuildAllSDKs.sh; sourceTree = "<group>"; };
- 8B0E65400FD80D5E00461C4A /* da */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = da; path = da.lproj/GTMHotKeyTextField.strings; sourceTree = "<group>"; };
- 8B0E65410FD80D5E00461C4A /* de */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/GTMHotKeyTextField.strings; sourceTree = "<group>"; };
- 8B0E65420FD80D5E00461C4A /* en */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/GTMHotKeyTextField.strings; sourceTree = "<group>"; };
- 8B0E65430FD80D5E00461C4A /* es */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/GTMHotKeyTextField.strings; sourceTree = "<group>"; };
- 8B0E65440FD80D5E00461C4A /* fi */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = fi; path = fi.lproj/GTMHotKeyTextField.strings; sourceTree = "<group>"; };
- 8B0E65450FD80D5E00461C4A /* fr */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/GTMHotKeyTextField.strings; sourceTree = "<group>"; };
- 8B0E65460FD80D5E00461C4A /* it */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/GTMHotKeyTextField.strings; sourceTree = "<group>"; };
- 8B0E65470FD80D5E00461C4A /* ja */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/GTMHotKeyTextField.strings; sourceTree = "<group>"; };
- 8B0E65480FD80D5E00461C4A /* ko */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = ko; path = ko.lproj/GTMHotKeyTextField.strings; sourceTree = "<group>"; };
- 8B0E65490FD80D5E00461C4A /* nl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/GTMHotKeyTextField.strings; sourceTree = "<group>"; };
- 8B0E654A0FD80D5E00461C4A /* no */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = no; path = no.lproj/GTMHotKeyTextField.strings; sourceTree = "<group>"; };
- 8B0E654B0FD80D5E00461C4A /* pl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/GTMHotKeyTextField.strings; sourceTree = "<group>"; };
- 8B0E654C0FD80D5E00461C4A /* pt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = pt; path = pt.lproj/GTMHotKeyTextField.strings; sourceTree = "<group>"; };
- 8B0E654D0FD80D5E00461C4A /* ru */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/GTMHotKeyTextField.strings; sourceTree = "<group>"; };
- 8B0E654E0FD80D5E00461C4A /* sv */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = sv; path = sv.lproj/GTMHotKeyTextField.strings; sourceTree = "<group>"; };
- 8B0E654F0FD80D5E00461C4A /* zh_CN */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = zh_CN; path = zh_CN.lproj/GTMHotKeyTextField.strings; sourceTree = "<group>"; };
- 8B0E65500FD80D5E00461C4A /* zh_TW */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = zh_TW; path = zh_TW.lproj/GTMHotKeyTextField.strings; sourceTree = "<group>"; };
+ 8B07C60D1D99B01D0054728B /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Platforms/MacOSX.platform/Developer/Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; };
8B158A5F10A8BE4500C93125 /* GTMNSAnimation+Duration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSAnimation+Duration.h"; sourceTree = "<group>"; };
8B158A6010A8BE4500C93125 /* GTMNSAnimation+Duration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSAnimation+Duration.m"; sourceTree = "<group>"; };
8B17FD13117638D500E7A908 /* GTMFoundationUnitTestingUtilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMFoundationUnitTestingUtilities.m; sourceTree = "<group>"; };
8B17FD14117638D500E7A908 /* GTMFoundationUnitTestingUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMFoundationUnitTestingUtilities.h; sourceTree = "<group>"; };
8B17FD18117638F400E7A908 /* GTMAppKitUnitTestingUtilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMAppKitUnitTestingUtilities.m; sourceTree = "<group>"; };
8B17FD19117638F400E7A908 /* GTMAppKitUnitTestingUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMAppKitUnitTestingUtilities.h; sourceTree = "<group>"; };
- 8B1801A00E2533D500280961 /* GTMLargeTypeWindow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMLargeTypeWindow.m; sourceTree = "<group>"; };
- 8B1801A10E2533D500280961 /* GTMLargeTypeWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMLargeTypeWindow.h; sourceTree = "<group>"; };
- 8B1801A40E2533DB00280961 /* GTMLargeTypeWindowTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMLargeTypeWindowTest.m; sourceTree = "<group>"; };
- 8B1801A80E25341B00280961 /* GTMLargeTypeWindowImageTest.gtmUTState */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = GTMLargeTypeWindowImageTest.gtmUTState; sourceTree = "<group>"; };
- 8B1801AC0E25341B00280961 /* GTMLargeTypeWindowLongTextTest.gtmUTState */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = GTMLargeTypeWindowLongTextTest.gtmUTState; sourceTree = "<group>"; };
- 8B1801AD0E25341B00280961 /* GTMLargeTypeWindowShortTextTest.gtmUTState */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = GTMLargeTypeWindowShortTextTest.gtmUTState; sourceTree = "<group>"; };
- 8B1802410E25592200280961 /* GTMLargeTypeWindowMediumTextTest.gtmUTState */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = GTMLargeTypeWindowMediumTextTest.gtmUTState; sourceTree = "<group>"; };
- 8B1A14E90D900BC800CA1E8E /* GTMNSObject+BindingUnitTesting.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSObject+BindingUnitTesting.m"; sourceTree = "<group>"; };
- 8B1A14EA0D900BC800CA1E8E /* GTMNSObject+BindingUnitTesting.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSObject+BindingUnitTesting.h"; sourceTree = "<group>"; };
8B1A16050D90344B00CA1E8E /* GTMDefines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMDefines.h; sourceTree = "<group>"; };
- 8B1B49160E5F8E2100A08972 /* GTMExceptionalInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMExceptionalInlines.h; sourceTree = "<group>"; };
- 8B1B49170E5F8E2100A08972 /* GTMExceptionalInlines.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMExceptionalInlines.m; sourceTree = "<group>"; };
- 8B1B491B0E5F904C00A08972 /* GTMExceptionalInlinesTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMExceptionalInlinesTest.m; sourceTree = "<group>"; };
- 8B21BE8F11532C7700DD2686 /* GTMNSAnimatablePropertyContainerTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMNSAnimatablePropertyContainerTest.h; sourceTree = "<group>"; };
- 8B21BE9111532CDC00DD2686 /* GTMNSAnimatablePropertyContainerTest.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = GTMNSAnimatablePropertyContainerTest.xib; sourceTree = "<group>"; };
8B21DE54117E5CB7000E004F /* GTMLocalizedString.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMLocalizedString.h; sourceTree = "<group>"; };
- 8B2789950EF855FB00D68C01 /* GTMUnitTestingWindow.10.5.6.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = GTMUnitTestingWindow.10.5.6.tiff; sourceTree = "<group>"; };
8B29078411F8D1BF0064F50F /* GTMNSFileHandle+UniqueName.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSFileHandle+UniqueName.h"; sourceTree = "<group>"; };
8B29078511F8D1BF0064F50F /* GTMNSFileHandle+UniqueName.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSFileHandle+UniqueName.m"; sourceTree = "<group>"; };
8B29078611F8D1BF0064F50F /* GTMNSFileHandle+UniqueNameTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSFileHandle+UniqueNameTest.m"; sourceTree = "<group>"; };
- 8B3344170DBF7A36009FD32C /* GTMNSAppleScript+HandlerTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSAppleScript+HandlerTest.m"; sourceTree = "<group>"; };
- 8B3344180DBF7A36009FD32C /* GTMNSAppleScript+Handler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSAppleScript+Handler.m"; sourceTree = "<group>"; };
- 8B3344190DBF7A36009FD32C /* GTMNSAppleScript+Handler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSAppleScript+Handler.h"; sourceTree = "<group>"; };
- 8B33441A0DBF7A36009FD32C /* GTMNSAppleEventDescriptor+HandlerTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSAppleEventDescriptor+HandlerTest.m"; sourceTree = "<group>"; };
- 8B33441B0DBF7A36009FD32C /* GTMNSAppleEventDescriptor+Handler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSAppleEventDescriptor+Handler.m"; sourceTree = "<group>"; };
- 8B33441C0DBF7A36009FD32C /* GTMNSAppleEventDescriptor+Handler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSAppleEventDescriptor+Handler.h"; sourceTree = "<group>"; };
- 8B33441D0DBF7A36009FD32C /* GTMNSAppleEventDescriptor+FoundationTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSAppleEventDescriptor+FoundationTest.m"; sourceTree = "<group>"; };
- 8B33441E0DBF7A36009FD32C /* GTMNSAppleEventDescriptor+Foundation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSAppleEventDescriptor+Foundation.m"; sourceTree = "<group>"; };
- 8B33441F0DBF7A36009FD32C /* GTMNSAppleEventDescriptor+Foundation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSAppleEventDescriptor+Foundation.h"; sourceTree = "<group>"; };
- 8B3344200DBF7A36009FD32C /* GTMNSAppleEvent+HandlerTest.applescript */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.applescript; path = "GTMNSAppleEvent+HandlerTest.applescript"; sourceTree = "<group>"; };
+ 8B2C72E61D9EBB6E0027BD14 /* GTMUnitTestDevLog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMUnitTestDevLog.h; sourceTree = "<group>"; };
+ 8B2C72E71D9EBB6E0027BD14 /* GTMUnitTestDevLog.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMUnitTestDevLog.m; sourceTree = "<group>"; };
8B3590150E8190FA0041E21C /* GTMTestTimer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMTestTimer.h; sourceTree = "<group>"; };
8B35901A0E8191750041E21C /* GTMTestTimerTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMTestTimerTest.m; sourceTree = "<group>"; };
- 8B3AA9EF0E033E23007E31B5 /* GTMValidatingContainers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMValidatingContainers.h; sourceTree = "<group>"; };
- 8B3AA9F00E033E23007E31B5 /* GTMValidatingContainers.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMValidatingContainers.m; sourceTree = "<group>"; };
- 8B3AA9F70E033E5F007E31B5 /* GTMValidatingContainersTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMValidatingContainersTest.m; sourceTree = "<group>"; };
8B3E29290EEB53F3000681D8 /* GTMCarbonEventTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMCarbonEventTest.m; sourceTree = "<group>"; };
8B3E292A0EEB53F3000681D8 /* GTMCarbonEvent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMCarbonEvent.m; sourceTree = "<group>"; };
8B3E292B0EEB53F3000681D8 /* GTMCarbonEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMCarbonEvent.h; sourceTree = "<group>"; };
8B4099490F93C5CC00DF540E /* GTMUILocalizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMUILocalizer.h; sourceTree = "<group>"; };
8B40994A0F93C5CC00DF540E /* GTMUILocalizer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMUILocalizer.m; sourceTree = "<group>"; };
8B409BC50F94405A00DF540E /* GTMUILocalizerTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMUILocalizerTest.m; sourceTree = "<group>"; };
- 8B409BE30F9442C400DF540E /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/Localizable.strings; sourceTree = "<group>"; };
+ 8B409BE30F9442C400DF540E /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/Localizable.strings; sourceTree = "<group>"; };
8B409E3E0F950DE900DF540E /* GTMUILocalizerTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMUILocalizerTest.h; sourceTree = "<group>"; };
8B409E8B0F952C2C00DF540E /* GTMUILocalizerTestWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = GTMUILocalizerTestWindow.xib; sourceTree = "<group>"; };
8B409E970F952CD700DF540E /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/Localizable.strings; sourceTree = "<group>"; };
- 8B409EC30F9530C200DF540E /* GTMUILocalizerWindow1State.gtmUTState */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = GTMUILocalizerWindow1State.gtmUTState; sourceTree = "<group>"; };
- 8B409EE80F95325000DF540E /* GTMUILocalizerWindow2State.gtmUTState */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = GTMUILocalizerWindow2State.gtmUTState; sourceTree = "<group>"; };
- 8B409EF30F95331500DF540E /* GTMUILocalizerMenuState.gtmUTState */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = GTMUILocalizerMenuState.gtmUTState; sourceTree = "<group>"; };
8B409F050F95341E00DF540E /* GTMUILocalizerTestView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = GTMUILocalizerTestView.xib; sourceTree = "<group>"; };
- 8B409F110F95352500DF540E /* GTMUILocalizerView2State.gtmUTState */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = GTMUILocalizerView2State.gtmUTState; sourceTree = "<group>"; };
- 8B409F120F95352500DF540E /* GTMUILocalizerView1State.gtmUTState */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = GTMUILocalizerView1State.gtmUTState; sourceTree = "<group>"; };
8B414E861226FB1000D0064F /* GTMServiceManagement.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = GTMServiceManagement.c; sourceTree = "<group>"; };
8B414E871226FB1000D0064F /* GTMServiceManagement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMServiceManagement.h; sourceTree = "<group>"; };
8B414E8A1226FB1800D0064F /* GTMServiceManagementTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMServiceManagementTest.m; sourceTree = "<group>"; };
8B455F5D1193870A00ABD707 /* GTMLocalizedStringTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMLocalizedStringTest.m; sourceTree = "<group>"; };
- 8B45A0280DA4696C001148C5 /* UnitTest-UnitTesting.octest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "UnitTest-UnitTesting.octest"; sourceTree = BUILT_PRODUCTS_DIR; };
+ 8B45A0280DA4696C001148C5 /* UnitTest-UnitTesting.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "UnitTest-UnitTesting.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
8B45A1990DA46AAA001148C5 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = /System/Library/Frameworks/QuartzCore.framework; sourceTree = "<absolute>"; };
8B45A28A0DA49B99001148C5 /* GTMUIUnitTestingHarness.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = GTMUIUnitTestingHarness.app; sourceTree = BUILT_PRODUCTS_DIR; };
8B45A2A70DA49C47001148C5 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
8B45A2A80DA49C47001148C5 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
- 8B45A2DE0DA51A7E001148C5 /* GTMUnitTestingTest.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; path = GTMUnitTestingTest.nib; sourceTree = "<group>"; };
- 8B45A2E00DA51ABC001148C5 /* GTMUnitTestingTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMUnitTestingTest.h; sourceTree = "<group>"; };
- 8B45A2E10DA51ABC001148C5 /* GTMUnitTestingTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMUnitTestingTest.m; sourceTree = "<group>"; };
- 8B45A5F50DA5EB9F001148C5 /* GTMUnitTestingWindow.gtmUTState */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = GTMUnitTestingWindow.gtmUTState; sourceTree = "<group>"; };
- 8B45A5F60DA5EB9F001148C5 /* GTMUnitTestingTestApp.gtmUTState */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = GTMUnitTestingTestApp.gtmUTState; sourceTree = "<group>"; };
- 8B45A6B90DA67DD5001148C5 /* GTMUnitTestingImage.gtmUTState */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = GTMUnitTestingImage.gtmUTState; sourceTree = "<group>"; };
- 8B4BD7E61200E5EA009C7060 /* GTMUILocalizerWindow3State.10_4_SDK.gtmUTState */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = GTMUILocalizerWindow3State.10_4_SDK.gtmUTState; sourceTree = "<group>"; };
- 8B55479A0DB3B7A50014CC1C /* GTMAppKit+UnitTesting.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMAppKit+UnitTesting.h"; sourceTree = "<group>"; };
- 8B55479B0DB3B7A50014CC1C /* GTMAppKit+UnitTesting.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMAppKit+UnitTesting.m"; sourceTree = "<group>"; };
- 8B58E9940E547EB000A0E02E /* GTMGetURLHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMGetURLHandler.m; sourceTree = "<group>"; };
8B5B4ABC15BF31050081A96C /* CodeCoverage.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = CodeCoverage.xcconfig; sourceTree = "<group>"; };
8B5B4ABD15BF31050081A96C /* CodeCoverageStatic.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = CodeCoverageStatic.xcconfig; sourceTree = "<group>"; };
8B5B4ABE15BF31050081A96C /* Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = "<group>"; };
- 8B5B4ABF15BF31050081A96C /* GCSupported.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = GCSupported.xcconfig; sourceTree = "<group>"; };
8B5B4AC015BF31050081A96C /* General.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = General.xcconfig; sourceTree = "<group>"; };
8B5B4AC115BF31050081A96C /* GTMMerge.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = GTMMerge.xcconfig; sourceTree = "<group>"; };
- 8B5B4AC215BF31050081A96C /* iOS.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = iOS.xcconfig; sourceTree = "<group>"; };
- 8B5B4AC315BF31050081A96C /* iPhone30.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = iPhone30.xcconfig; sourceTree = "<group>"; };
- 8B5B4AC415BF31050081A96C /* iPhone31.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = iPhone31.xcconfig; sourceTree = "<group>"; };
- 8B5B4AC515BF31050081A96C /* iPhone312.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = iPhone312.xcconfig; sourceTree = "<group>"; };
- 8B5B4AC615BF31050081A96C /* iPhone313.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = iPhone313.xcconfig; sourceTree = "<group>"; };
- 8B5B4AC715BF31050081A96C /* iPhone32.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = iPhone32.xcconfig; sourceTree = "<group>"; };
- 8B5B4AC815BF31050081A96C /* iPhone40.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = iPhone40.xcconfig; sourceTree = "<group>"; };
- 8B5B4AC915BF31050081A96C /* iPhone41.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = iPhone41.xcconfig; sourceTree = "<group>"; };
8B5B4ACA15BF31050081A96C /* LeopardOrLater.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = LeopardOrLater.xcconfig; sourceTree = "<group>"; };
- 8B5B4ACB15BF31050081A96C /* MacOS.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = MacOS.xcconfig; sourceTree = "<group>"; };
8B5B4ACC15BF31050081A96C /* MacOSX.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = MacOSX.xcconfig; sourceTree = "<group>"; };
8B5B4ACD15BF31050081A96C /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = "<group>"; };
8B5B4ACE15BF31050081A96C /* SnowLeopardOrLater.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = SnowLeopardOrLater.xcconfig; sourceTree = "<group>"; };
@@ -720,116 +329,35 @@
8B6F31EF0DA347720052CA40 /* GTMMethodCheck.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMMethodCheck.m; sourceTree = "<group>"; };
8B6F31F10DA347720052CA40 /* GTMMethodCheckTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMMethodCheckTest.m; sourceTree = "<group>"; };
8B6F31F40DA3489B0052CA40 /* GTMMethodCheck.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMMethodCheck.h; sourceTree = "<group>"; };
- 8B6F32040DA34A1B0052CA40 /* GTMObjC2Runtime.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMObjC2Runtime.m; sourceTree = "<group>"; };
- 8B6F32050DA34A1B0052CA40 /* GTMObjC2RuntimeTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMObjC2RuntimeTest.m; sourceTree = "<group>"; };
- 8B6F32060DA34A1B0052CA40 /* GTMObjC2Runtime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMObjC2Runtime.h; sourceTree = "<group>"; };
8B6F4B610E8856CA00425D9F /* GTMDebugThreadValidation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMDebugThreadValidation.h; sourceTree = "<group>"; };
8B6F4B620E8856CA00425D9F /* GTMDebugThreadValidation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMDebugThreadValidation.m; sourceTree = "<group>"; };
- 8B726BD00D91C0860090C251 /* GTMCALayer+UnitTesting.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMCALayer+UnitTesting.m"; sourceTree = "<group>"; };
- 8B726BD10D91C0860090C251 /* GTMCALayer+UnitTesting.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMCALayer+UnitTesting.h"; sourceTree = "<group>"; };
- 8B7AD4970DABBB5800B84F4A /* GTMNSBezierPath+ShadingTest.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMNSBezierPath+ShadingTest.tiff"; sourceTree = "<group>"; };
- 8B7AD4980DABBB5800B84F4A /* GTMNSBezierPath+CGPathTest.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMNSBezierPath+CGPathTest.tiff"; sourceTree = "<group>"; };
- 8B7AD4990DABBB5800B84F4A /* GTMNSBezierPath+RoundRectTest.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMNSBezierPath+RoundRectTest.tiff"; sourceTree = "<group>"; };
- 8B7AD4AD0DABBFEE00B84F4A /* GTMUnitTestingBindingTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMUnitTestingBindingTest.m; sourceTree = "<group>"; };
- 8B7DCBE10DFF18720017E983 /* GTMDevLogUnitTestingBridge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMDevLogUnitTestingBridge.m; sourceTree = "<group>"; };
- 8B7DCBEC0DFF1A4F0017E983 /* GTMUnitTestDevLog.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMUnitTestDevLog.m; sourceTree = "<group>"; };
- 8B7DCBF00DFF1A610017E983 /* GTMUnitTestDevLog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMUnitTestDevLog.h; sourceTree = "<group>"; };
8B7DCE180DFF39850017E983 /* GTMSenTestCase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMSenTestCase.m; sourceTree = "<group>"; };
- 8B8B10FF0EEB8CD000E543D0 /* GTMGetURLHandlerTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMGetURLHandlerTest.m; sourceTree = "<group>"; };
8B8EC87B0EF17C270044D13F /* GTMNSFileManager+Carbon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSFileManager+Carbon.h"; sourceTree = "<group>"; };
8B8EC87C0EF17C270044D13F /* GTMNSFileManager+Carbon.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSFileManager+Carbon.m"; sourceTree = "<group>"; };
8B8EC87F0EF17C2F0044D13F /* GTMNSFileManager+CarbonTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSFileManager+CarbonTest.m"; sourceTree = "<group>"; };
- 8BA01B5B0F144BD800926923 /* GTMNSWorkspace+Running.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSWorkspace+Running.m"; sourceTree = "<group>"; };
- 8BA01B5C0F144BD800926923 /* GTMNSWorkspace+Running.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSWorkspace+Running.h"; sourceTree = "<group>"; };
- 8BA01B5F0F144BE500926923 /* GTMNSWorkspace+RunningTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSWorkspace+RunningTest.m"; sourceTree = "<group>"; };
- 8BA7147E11B57EC700EB4781 /* GTMUILocalizerAndLayoutTweakerTest4-0.10_4_SDK.10.6.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest4-0.10_4_SDK.10.6.tiff"; sourceTree = "<group>"; };
- 8BA7147F11B57EC700EB4781 /* GTMUILocalizerAndLayoutTweakerTest4-1.10_4_SDK.10.6.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest4-1.10_4_SDK.10.6.tiff"; sourceTree = "<group>"; };
- 8BA7148011B57EC700EB4781 /* GTMUILocalizerAndLayoutTweakerTest4-2.10_4_SDK.10.6.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest4-2.10_4_SDK.10.6.tiff"; sourceTree = "<group>"; };
- 8BA9FAF8119CA2E300E264C3 /* GTMUnitTestingTestApp.10.6.gtmUTState */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = GTMUnitTestingTestApp.10.6.gtmUTState; sourceTree = "<group>"; };
- 8BA9FB22119CA3F200E264C3 /* GTMUnitTestingWindow.10.6.gtmUTState */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = GTMUnitTestingWindow.10.6.gtmUTState; sourceTree = "<group>"; };
- 8BA9FB8E119CAE7200E264C3 /* GTMUILocalizerAndLayoutTweakerTest4-1.10.6.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest4-1.10.6.tiff"; sourceTree = "<group>"; };
- 8BA9FB94119CAEDE00E264C3 /* GTMUILocalizerAndLayoutTweakerTest4-0.10.6.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest4-0.10.6.tiff"; sourceTree = "<group>"; };
- 8BA9FB9B119CAF0200E264C3 /* GTMUILocalizerAndLayoutTweakerTest4-2.10.6.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest4-2.10.6.tiff"; sourceTree = "<group>"; };
- 8BA9FBA0119CAF6600E264C3 /* GTMNSBezierPath+ShadingTest.10.6.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMNSBezierPath+ShadingTest.10.6.tiff"; sourceTree = "<group>"; };
- 8BA9FBA2119CAF9500E264C3 /* GTMNSBezierPath+RoundRectTest.10.6.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMNSBezierPath+RoundRectTest.10.6.tiff"; sourceTree = "<group>"; };
- 8BA9FBA6119CB00000E264C3 /* GTMNSBezierPath+RoundRectTest.10.6.x86_64.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMNSBezierPath+RoundRectTest.10.6.x86_64.tiff"; sourceTree = "<group>"; };
- 8BA9FBAA119CB06500E264C3 /* GTMLargeTypeWindowShortTextTest.10.6.gtmUTState */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = GTMLargeTypeWindowShortTextTest.10.6.gtmUTState; sourceTree = "<group>"; };
- 8BA9FBAC119CB08200E264C3 /* GTMLargeTypeWindowMediumTextTest.10.6.gtmUTState */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = GTMLargeTypeWindowMediumTextTest.10.6.gtmUTState; sourceTree = "<group>"; };
- 8BA9FBBA119CB0C400E264C3 /* GTMLargeTypeWindowLongTextTest.10.6.gtmUTState */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = GTMLargeTypeWindowLongTextTest.10.6.gtmUTState; sourceTree = "<group>"; };
- 8BA9FBBC119CB14C00E264C3 /* GTMUILocalizerAndLayoutTweakerTest6-tab0-0.10.6.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest6-tab0-0.10.6.tiff"; sourceTree = "<group>"; };
- 8BA9FBBF119CB17600E264C3 /* GTMUILocalizerAndLayoutTweakerTest7-NoMin-2.10.6.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest7-NoMin-2.10.6.tiff"; sourceTree = "<group>"; };
- 8BA9FBC7119CB19A00E264C3 /* GTMUILocalizerAndLayoutTweakerTest7-Min-0.10.6.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest7-Min-0.10.6.tiff"; sourceTree = "<group>"; };
- 8BA9FBDA119CB1E600E264C3 /* GTMUILocalizerAndLayoutTweakerTest7-NoMin-0.10.6.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest7-NoMin-0.10.6.tiff"; sourceTree = "<group>"; };
- 8BA9FBDD119CB20A00E264C3 /* GTMUILocalizerAndLayoutTweakerTest3-0.10.6.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest3-0.10.6.tiff"; sourceTree = "<group>"; };
- 8BA9FBE0119CB23000E264C3 /* GTMUILocalizerAndLayoutTweakerTest3-1.10.6.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest3-1.10.6.tiff"; sourceTree = "<group>"; };
- 8BA9FBE3119CB24D00E264C3 /* GTMUILocalizerAndLayoutTweakerTest3-2.10.6.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest3-2.10.6.tiff"; sourceTree = "<group>"; };
- 8BA9FBE6119CB26A00E264C3 /* GTMUILocalizerAndLayoutTweakerTest7-Min-1.10.6.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest7-Min-1.10.6.tiff"; sourceTree = "<group>"; };
- 8BA9FBE9119CB28500E264C3 /* GTMUILocalizerAndLayoutTweakerTest7-Min-2.10.6.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest7-Min-2.10.6.tiff"; sourceTree = "<group>"; };
- 8BA9FBEC119CB2A400E264C3 /* GTMUILocalizerAndLayoutTweakerTest7-Min-3.10.6.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest7-Min-3.10.6.tiff"; sourceTree = "<group>"; };
- 8BA9FBEF119CB2BF00E264C3 /* GTMUILocalizerAndLayoutTweakerTest7-NoMin-1.10.6.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest7-NoMin-1.10.6.tiff"; sourceTree = "<group>"; };
- 8BA9FBF2119CB2D600E264C3 /* GTMUILocalizerAndLayoutTweakerTest7-NoMin-3.10.6.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest7-NoMin-3.10.6.tiff"; sourceTree = "<group>"; };
- 8BA9FBF5119CB2EF00E264C3 /* GTMUILocalizerAndLayoutTweakerTest1-0.10.6.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest1-0.10.6.tiff"; sourceTree = "<group>"; };
- 8BA9FBFC119CB30D00E264C3 /* GTMUILocalizerAndLayoutTweakerTest1-1.10.6.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest1-1.10.6.tiff"; sourceTree = "<group>"; };
- 8BA9FBFF119CB32500E264C3 /* GTMUILocalizerAndLayoutTweakerTest1-2.10.6.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest1-2.10.6.tiff"; sourceTree = "<group>"; };
- 8BA9FC43119CB36100E264C3 /* GTMUILocalizerAndLayoutTweakerTest3-3.10.6.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest3-3.10.6.tiff"; sourceTree = "<group>"; };
- 8BA9FC46119CB37F00E264C3 /* GTMUILocalizerAndLayoutTweakerTest2-0.10.6.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest2-0.10.6.tiff"; sourceTree = "<group>"; };
- 8BA9FC5C119CB39D00E264C3 /* GTMUILocalizerAndLayoutTweakerTest2-1.10.6.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest2-1.10.6.tiff"; sourceTree = "<group>"; };
- 8BA9FC5F119CB3B500E264C3 /* GTMUILocalizerAndLayoutTweakerTest2-2.10.6.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest2-2.10.6.tiff"; sourceTree = "<group>"; };
- 8BA9FC62119CB3CD00E264C3 /* GTMUILocalizerAndLayoutTweakerTest3-4.10.6.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest3-4.10.6.tiff"; sourceTree = "<group>"; };
- 8BA9FC65119CB3E200E264C3 /* GTMUILocalizerAndLayoutTweakerTest5-0.10.6.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest5-0.10.6.tiff"; sourceTree = "<group>"; };
- 8BA9FC68119CB3F900E264C3 /* GTMUILocalizerAndLayoutTweakerTest5-1.10.6.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest5-1.10.6.tiff"; sourceTree = "<group>"; };
- 8BA9FC6B119CB43F00E264C3 /* GTMUILocalizerAndLayoutTweakerTest5-2.10.6.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest5-2.10.6.tiff"; sourceTree = "<group>"; };
- 8BA9FC6E119CB46000E264C3 /* GTMUILocalizerAndLayoutTweakerTest6-tab0-1.10.6.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest6-tab0-1.10.6.tiff"; sourceTree = "<group>"; };
- 8BA9FC71119CB47900E264C3 /* GTMUILocalizerAndLayoutTweakerTest6-tab0-2.10.6.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest6-tab0-2.10.6.tiff"; sourceTree = "<group>"; };
- 8BA9FC74119CB48F00E264C3 /* GTMUILocalizerAndLayoutTweakerTest6-tab1-0.10.6.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest6-tab1-0.10.6.tiff"; sourceTree = "<group>"; };
- 8BA9FC77119CB4A100E264C3 /* GTMUILocalizerAndLayoutTweakerTest6-tab1-1.10.6.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest6-tab1-1.10.6.tiff"; sourceTree = "<group>"; };
- 8BA9FC7A119CB4B300E264C3 /* GTMUILocalizerAndLayoutTweakerTest6-tab1-2.10.6.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest6-tab1-2.10.6.tiff"; sourceTree = "<group>"; };
- 8BAA9B540F7B4A5000DF4F12 /* GTMHotKeyTextFieldTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMHotKeyTextFieldTest.h; sourceTree = "<group>"; };
- 8BAA9B560F7B4C2400DF4F12 /* GTMHotKeyTextFieldTest.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = GTMHotKeyTextFieldTest.xib; sourceTree = "<group>"; };
+ 8BA983C51D9AE7E6009724B5 /* GTMUnitTestingTest.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; path = GTMUnitTestingTest.nib; sourceTree = "<group>"; };
8BAA9E370F7C19D500DF4F12 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = UnitTesting/GTMUIUnitTestingHarness/English.lproj/MainMenu.xib; sourceTree = "<group>"; };
- 8BB77A0111B5A09900AB31AF /* GTMGoogleSearch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMGoogleSearch.h; sourceTree = "<group>"; };
- 8BB77A0211B5A09900AB31AF /* GTMGoogleSearch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMGoogleSearch.m; sourceTree = "<group>"; };
- 8BB77A0311B5A09900AB31AF /* GTMGoogleSearchTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMGoogleSearchTest.m; sourceTree = "<group>"; };
8BBD1F8A1519258A003152F0 /* GTMNSThread+Blocks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSThread+Blocks.h"; sourceTree = "<group>"; };
8BBD1F8B1519258A003152F0 /* GTMNSThread+Blocks.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSThread+Blocks.m"; sourceTree = "<group>"; };
8BBD1F8E1519271A003152F0 /* GTMNSThread+BlocksTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSThread+BlocksTest.m"; sourceTree = "<group>"; };
8BC046B80DAE8C4B00C2D1CA /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = /System/Library/Frameworks/ApplicationServices.framework; sourceTree = "<absolute>"; };
- 8BC04D140DB0061300C2D1CA /* RunMacOSUnitTests.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = RunMacOSUnitTests.sh; sourceTree = "<group>"; };
8BC85131127A18AE0046E0FB /* GTMServiceManagementTestingHarness */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = GTMServiceManagementTestingHarness; sourceTree = BUILT_PRODUCTS_DIR; };
8BC851D3127A19020046E0FB /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = "<absolute>"; };
8BC85201127A19370046E0FB /* GTMServiceManagementTestingHarness.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = GTMServiceManagementTestingHarness.c; sourceTree = "<group>"; };
- 8BCB59EE11C00ED6009B6C40 /* GTMNSScanner+Unsigned.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSScanner+Unsigned.h"; sourceTree = "<group>"; };
- 8BCB59EF11C00ED6009B6C40 /* GTMNSScanner+Unsigned.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSScanner+Unsigned.m"; sourceTree = "<group>"; };
- 8BCB59F211C00EF6009B6C40 /* GTMNSScanner+UnsignedTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSScanner+UnsignedTest.m"; sourceTree = "<group>"; };
8BD35B8E0FB22980009058F5 /* GTMNSScanner+JSON.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSScanner+JSON.h"; sourceTree = "<group>"; };
8BD35B8F0FB22980009058F5 /* GTMNSScanner+JSON.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSScanner+JSON.m"; sourceTree = "<group>"; };
8BD35B900FB22980009058F5 /* GTMNSScanner+JSONTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSScanner+JSONTest.m"; sourceTree = "<group>"; };
- 8BDB8A971152E1B200C411B1 /* GTMNSAnimatablePropertyContainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMNSAnimatablePropertyContainer.h; sourceTree = "<group>"; };
- 8BDB8A981152E1B200C411B1 /* GTMNSAnimatablePropertyContainer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMNSAnimatablePropertyContainer.m; sourceTree = "<group>"; };
- 8BDB8C39115329EC00C411B1 /* GTMNSAnimatablePropertyContainerTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMNSAnimatablePropertyContainerTest.m; sourceTree = "<group>"; };
- 8BE2836B0DED0F130035B3F8 /* GTMFourCharCode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMFourCharCode.m; sourceTree = "<group>"; };
- 8BE2836C0DED0F130035B3F8 /* GTMFourCharCodeTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMFourCharCodeTest.m; sourceTree = "<group>"; };
- 8BE2836D0DED0F130035B3F8 /* GTMFourCharCode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMFourCharCode.h; sourceTree = "<group>"; };
- 8BE839A80E8AF72500C611B0 /* GTMDebugThreadValidationTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMDebugThreadValidationTest.m; sourceTree = "<group>"; };
- 8BE869720DBE89C100749827 /* GTMNSBezierPath+RoundRectTest.x86_64.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMNSBezierPath+RoundRectTest.x86_64.tiff"; sourceTree = "<group>"; };
- 8BEEA90A0DA7446300894774 /* GTMUnitTestingImage.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = GTMUnitTestingImage.tiff; sourceTree = "<group>"; };
- 8BEEA90B0DA7446300894774 /* GTMUnitTestingWindow.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = GTMUnitTestingWindow.tiff; sourceTree = "<group>"; };
- 8BEEA90C0DA7446300894774 /* GTMUnitTestingView.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = GTMUnitTestingView.tiff; sourceTree = "<group>"; };
8BF2368D13CF67CB00F3FD82 /* GTMKeyValueAnimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMKeyValueAnimation.h; sourceTree = "<group>"; };
8BF2368E13CF67CB00F3FD82 /* GTMKeyValueAnimation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMKeyValueAnimation.m; sourceTree = "<group>"; };
8BF2369113CF694C00F3FD82 /* GTMKeyValueAnimationTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMKeyValueAnimationTest.m; sourceTree = "<group>"; };
8BF2555110F65B56000490C8 /* GTMTypeCasting.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMTypeCasting.h; sourceTree = "<group>"; };
8BFE13B00FB0F2B9001BE894 /* GTMABAddressBook.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMABAddressBook.h; sourceTree = "<group>"; };
8BFE13B10FB0F2B9001BE894 /* GTMABAddressBook.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMABAddressBook.m; sourceTree = "<group>"; };
- 8BFE13B20FB0F2B9001BE894 /* GTMABAddressBook.strings */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; path = GTMABAddressBook.strings; sourceTree = "<group>"; };
+ 8BFE13B20FB0F2B9001BE894 /* GTMABAddressBook.strings */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; path = GTMABAddressBook.strings; sourceTree = "<group>"; };
8BFE13B30FB0F2B9001BE894 /* GTMABAddressBookTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMABAddressBookTest.m; sourceTree = "<group>"; };
8BFE13B50FB0F2B9001BE894 /* phone.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = phone.png; sourceTree = "<group>"; };
- 8BFE13FC0FB0F2D8001BE894 /* UnitTest-AddressBook.octest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "UnitTest-AddressBook.octest"; sourceTree = BUILT_PRODUCTS_DIR; };
+ 8BFE13FC0FB0F2D8001BE894 /* UnitTest-AddressBook.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "UnitTest-AddressBook.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
8BFE158C0FB0F34C001BE894 /* AddressBook.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AddressBook.framework; path = /System/Library/Frameworks/AddressBook.framework; sourceTree = "<absolute>"; };
- B71B91E01332CD680039B2CB /* GTMFadeTruncatingTextFieldCellTest5.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = GTMFadeTruncatingTextFieldCellTest5.tiff; sourceTree = "<group>"; };
- B71B91E11332CD680039B2CB /* GTMFadeTruncatingTextFieldCellTest6.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = GTMFadeTruncatingTextFieldCellTest6.tiff; sourceTree = "<group>"; };
- B71B92361332DA380039B2CB /* GTMFadeTruncatingTextFieldCellTest7.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = GTMFadeTruncatingTextFieldCellTest7.tiff; sourceTree = "<group>"; };
- B7764E7F133906B600AFDC7D /* GTMFadeTruncatingTextFieldCellTest8.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = GTMFadeTruncatingTextFieldCellTest8.tiff; sourceTree = "<group>"; };
F413908C0D75F63C00F72B31 /* GTMNSFileManager+Path.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSFileManager+Path.h"; sourceTree = "<group>"; };
F413908D0D75F63C00F72B31 /* GTMNSFileManager+Path.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSFileManager+Path.m"; sourceTree = "<group>"; };
F413908E0D75F63C00F72B31 /* GTMNSFileManager+PathTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSFileManager+PathTest.m"; sourceTree = "<group>"; };
@@ -845,83 +373,39 @@
F42597760E23FE3A003BEA3E /* GTMNSString+FindFolder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSString+FindFolder.h"; sourceTree = "<group>"; };
F42597770E23FE3A003BEA3E /* GTMNSString+FindFolder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSString+FindFolder.m"; sourceTree = "<group>"; };
F42597780E23FE3A003BEA3E /* GTMNSString+FindFolderTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSString+FindFolderTest.m"; sourceTree = "<group>"; };
- F42866B51267340A0090FE0F /* GTMURITemplate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMURITemplate.h; sourceTree = "<group>"; };
- F42866B61267340A0090FE0F /* GTMURITemplate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMURITemplate.m; sourceTree = "<group>"; };
- F42866B71267340A0090FE0F /* GTMURITemplateTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMURITemplateTest.m; sourceTree = "<group>"; };
- F428670112673C490090FE0F /* GTMURITemplateExtraTests.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GTMURITemplateExtraTests.json; sourceTree = "<group>"; };
- F428670212673C490090FE0F /* GTMURITemplateRFCTests.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GTMURITemplateRFCTests.json; sourceTree = "<group>"; };
F428FEFF0D48E55E00382ED1 /* GTMNSBezierPath+CGPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSBezierPath+CGPath.h"; sourceTree = "<group>"; };
F428FF000D48E55E00382ED1 /* GTMNSBezierPath+CGPath.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSBezierPath+CGPath.m"; sourceTree = "<group>"; };
F428FF010D48E55E00382ED1 /* GTMNSBezierPath+CGPathTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSBezierPath+CGPathTest.m"; sourceTree = "<group>"; };
- F42E08210D19987200D5DDE0 /* UnitTest-Foundation.octest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "UnitTest-Foundation.octest"; sourceTree = BUILT_PRODUCTS_DIR; };
+ F42E08210D19987200D5DDE0 /* UnitTest-Foundation.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "UnitTest-Foundation.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
F42E086D0D199A5B00D5DDE0 /* GoogleToolboxForMac.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = GoogleToolboxForMac.framework; sourceTree = BUILT_PRODUCTS_DIR; };
F42E086E0D199A5B00D5DDE0 /* GTM-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "GTM-Info.plist"; sourceTree = "<group>"; };
- F42E089B0D199B1800D5DDE0 /* SenTestingKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SenTestingKit.framework; path = Library/Frameworks/SenTestingKit.framework; sourceTree = DEVELOPER_DIR; };
F42E09AD0D19A62F00D5DDE0 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = "<absolute>"; };
F42E2C67102B1261004DF054 /* GTMUILocalizerAndLayoutTweakerTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMUILocalizerAndLayoutTweakerTest.h; sourceTree = "<group>"; };
F42E2C68102B1261004DF054 /* GTMUILocalizerAndLayoutTweakerTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMUILocalizerAndLayoutTweakerTest.m; sourceTree = "<group>"; };
F42E2C83102B14B0004DF054 /* GTMUILocalizerAndLayoutTweakerTest1.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = GTMUILocalizerAndLayoutTweakerTest1.xib; sourceTree = "<group>"; };
- F42E2CFC102B21EE004DF054 /* GTMUILocalizerAndLayoutTweakerTest1-0.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest1-0.tiff"; sourceTree = "<group>"; };
- F42E2CFD102B21EE004DF054 /* GTMUILocalizerAndLayoutTweakerTest1-1.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest1-1.tiff"; sourceTree = "<group>"; };
- F42E2CFE102B21EE004DF054 /* GTMUILocalizerAndLayoutTweakerTest1-2.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest1-2.tiff"; sourceTree = "<group>"; };
F42E2D07102B2283004DF054 /* GTMUILocalizerAndLayoutTweakerTest2.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = GTMUILocalizerAndLayoutTweakerTest2.xib; sourceTree = "<group>"; };
- F42E2D21102B24E5004DF054 /* GTMUILocalizerAndLayoutTweakerTest2-0.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest2-0.tiff"; sourceTree = "<group>"; };
- F42E2D22102B24E5004DF054 /* GTMUILocalizerAndLayoutTweakerTest2-1.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest2-1.tiff"; sourceTree = "<group>"; };
- F42E2D23102B24E5004DF054 /* GTMUILocalizerAndLayoutTweakerTest2-2.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest2-2.tiff"; sourceTree = "<group>"; };
- F42F50E81057E91A00BFC735 /* GTMUnitTestingWindow.10.5.8.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = GTMUnitTestingWindow.10.5.8.tiff; sourceTree = "<group>"; };
F431221A0DD4E3B800F45252 /* GTMStackTrace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMStackTrace.h; sourceTree = "<group>"; };
F431221B0DD4E3B800F45252 /* GTMStackTraceTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMStackTraceTest.m; sourceTree = "<group>"; };
- F435DE7A0DC0B6580069CDE8 /* GTMNSBezierPath+CGPathTest.ppc64.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMNSBezierPath+CGPathTest.ppc64.tiff"; sourceTree = "<group>"; };
- F435DE7B0DC0B6580069CDE8 /* GTMNSBezierPath+CGPathTest.x86_64.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMNSBezierPath+CGPathTest.x86_64.tiff"; sourceTree = "<group>"; };
- F435DE8A0DC0B7620069CDE8 /* GTMNSBezierPath+RoundRectTest.ppc64.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMNSBezierPath+RoundRectTest.ppc64.tiff"; sourceTree = "<group>"; };
F437F55A0D50BC0A00F5C3A4 /* GTMRegex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMRegex.h; sourceTree = "<group>"; };
F437F55B0D50BC0A00F5C3A4 /* GTMRegex.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMRegex.m; sourceTree = "<group>"; };
F437F55C0D50BC0A00F5C3A4 /* GTMRegexTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMRegexTest.m; sourceTree = "<group>"; };
- F43A434B1146DCC70048A9DC /* GTMUILocalizerAndLayoutTweakerTest7-Min-0.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest7-Min-0.tiff"; sourceTree = "<group>"; };
- F43A434C1146DCC70048A9DC /* GTMUILocalizerAndLayoutTweakerTest7-Min-1.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest7-Min-1.tiff"; sourceTree = "<group>"; };
- F43A434D1146DCC70048A9DC /* GTMUILocalizerAndLayoutTweakerTest7-Min-2.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest7-Min-2.tiff"; sourceTree = "<group>"; };
- F43A434E1146DCC70048A9DC /* GTMUILocalizerAndLayoutTweakerTest7-Min-3.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest7-Min-3.tiff"; sourceTree = "<group>"; };
- F43A434F1146DCC70048A9DC /* GTMUILocalizerAndLayoutTweakerTest7-NoMin-0.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest7-NoMin-0.tiff"; sourceTree = "<group>"; };
- F43A43501146DCC70048A9DC /* GTMUILocalizerAndLayoutTweakerTest7-NoMin-1.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest7-NoMin-1.tiff"; sourceTree = "<group>"; };
- F43A43511146DCC70048A9DC /* GTMUILocalizerAndLayoutTweakerTest7-NoMin-2.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest7-NoMin-2.tiff"; sourceTree = "<group>"; };
- F43A43521146DCC70048A9DC /* GTMUILocalizerAndLayoutTweakerTest7-NoMin-3.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest7-NoMin-3.tiff"; sourceTree = "<group>"; };
F43C7A551021FAA300ABF03C /* GTMUILocalizerAndLayoutTweaker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMUILocalizerAndLayoutTweaker.h; sourceTree = "<group>"; };
F43C7A561021FAA300ABF03C /* GTMUILocalizerAndLayoutTweaker.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMUILocalizerAndLayoutTweaker.m; sourceTree = "<group>"; };
F43DCDCB0D4796C600959A62 /* GTMLoginItems.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMLoginItems.h; sourceTree = "<group>"; };
F43DCDCC0D4796C600959A62 /* GTMLoginItems.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMLoginItems.m; sourceTree = "<group>"; };
F43DCEC60D47BEA000959A62 /* GTMLoginItemsTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMLoginItemsTest.m; sourceTree = "<group>"; };
- F43E44770D4918B20041161F /* GTMLinearRGBShading.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMLinearRGBShading.h; sourceTree = "<group>"; };
- F43E44780D4918B20041161F /* GTMLinearRGBShading.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMLinearRGBShading.m; sourceTree = "<group>"; };
- F43E44790D4918B20041161F /* GTMLinearRGBShadingTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMLinearRGBShadingTest.m; sourceTree = "<group>"; };
F43E4C250D4E361D0041161F /* GTMNSString+XML.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSString+XML.h"; sourceTree = "<group>"; };
F43E4C260D4E361D0041161F /* GTMNSString+XML.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSString+XML.m"; sourceTree = "<group>"; };
F43E4C270D4E361D0041161F /* GTMNSString+XMLTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSString+XMLTest.m"; sourceTree = "<group>"; };
- F43E4DD60D4E56320041161F /* GTMNSEnumerator+Filter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSEnumerator+Filter.h"; sourceTree = "<group>"; };
- F43E4DD70D4E56320041161F /* GTMNSEnumerator+Filter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSEnumerator+Filter.m"; sourceTree = "<group>"; };
- F43E4DD80D4E56320041161F /* GTMNSEnumerator+FilterTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSEnumerator+FilterTest.m"; sourceTree = "<group>"; };
F43E4E5E0D4E5EC90041161F /* GTMNSData+zlib.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSData+zlib.h"; sourceTree = "<group>"; };
F43E4E5F0D4E5EC90041161F /* GTMNSData+zlib.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSData+zlib.m"; sourceTree = "<group>"; };
F43E4E600D4E5EC90041161F /* GTMNSData+zlibTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSData+zlibTest.m"; sourceTree = "<group>"; };
F43E4F6C0D4E60C50041161F /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = /usr/lib/libz.dylib; sourceTree = "<absolute>"; };
F440EDB70DFECC4B0003E81F /* BuildingAndUsing.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = BuildingAndUsing.txt; sourceTree = "<group>"; };
- F450A6B9146C2A6E001B3B1F /* GTMUILocalizerAndLayoutTweakerTest4-0.10_4_SDK.10.6.7.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest4-0.10_4_SDK.10.6.7.tiff"; sourceTree = "<group>"; };
- F450A6BA146C2A6E001B3B1F /* GTMUILocalizerAndLayoutTweakerTest4-1.10_4_SDK.10.6.7.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest4-1.10_4_SDK.10.6.7.tiff"; sourceTree = "<group>"; };
- F450A6BB146C2A6E001B3B1F /* GTMUILocalizerAndLayoutTweakerTest4-2.10_4_SDK.10.6.7.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest4-2.10_4_SDK.10.6.7.tiff"; sourceTree = "<group>"; };
- F450A746146D7206001B3B1F /* GTMUILocalizerAndLayoutTweakerTest4-0.10.6.7.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest4-0.10.6.7.tiff"; sourceTree = "<group>"; };
- F450A747146D7206001B3B1F /* GTMUILocalizerAndLayoutTweakerTest4-1.10.6.7.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest4-1.10.6.7.tiff"; sourceTree = "<group>"; };
- F450A748146D7206001B3B1F /* GTMUILocalizerAndLayoutTweakerTest4-2.10.6.7.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest4-2.10.6.7.tiff"; sourceTree = "<group>"; };
F47466651296F19E0022C1FB /* GTMSenTestCaseTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMSenTestCaseTest.m; sourceTree = "<group>"; };
F47A79850D746EE9002302AB /* GTMScriptRunner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMScriptRunner.h; sourceTree = "<group>"; };
F47A79860D746EE9002302AB /* GTMScriptRunner.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMScriptRunner.m; sourceTree = "<group>"; };
F47A79870D746EE9002302AB /* GTMScriptRunnerTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMScriptRunnerTest.m; sourceTree = "<group>"; };
- F47F1C0D0D490BC000925B8F /* GTMNSBezierPath+Shading.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSBezierPath+Shading.h"; sourceTree = "<group>"; };
- F47F1C0E0D490BC000925B8F /* GTMNSBezierPath+Shading.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSBezierPath+Shading.m"; sourceTree = "<group>"; };
- F47F1C110D490BC000925B8F /* GTMNSBezierPath+ShadingTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSBezierPath+ShadingTest.m"; sourceTree = "<group>"; };
- F47F1C740D490E5C00925B8F /* GTMShading.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMShading.h; sourceTree = "<group>"; };
- F47F1D2D0D4914AD00925B8F /* GTMCalculatedRange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMCalculatedRange.h; sourceTree = "<group>"; };
- F47F1D2E0D4914AD00925B8F /* GTMCalculatedRange.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMCalculatedRange.m; sourceTree = "<group>"; };
- F47F1D2F0D4914AD00925B8F /* GTMCalculatedRangeTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMCalculatedRangeTest.m; sourceTree = "<group>"; };
- F48D000C0FE994BF00428D0B /* GTMUnitTestingWindow.10.5.7.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = GTMUnitTestingWindow.10.5.7.tiff; sourceTree = "<group>"; };
F48FE2410D197F9A009257D2 /* DebugTigerOrLater.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = DebugTigerOrLater.xcconfig; sourceTree = "<group>"; };
F48FE2420D197F9A009257D2 /* DebugUnittest.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = DebugUnittest.xcconfig; sourceTree = "<group>"; };
F48FE2430D197F9A009257D2 /* LoadableBundle.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = LoadableBundle.xcconfig; sourceTree = "<group>"; };
@@ -929,10 +413,8 @@
F48FE2450D197F9A009257D2 /* ReleaseUnittest.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = ReleaseUnittest.xcconfig; sourceTree = "<group>"; };
F48FE2460D197F9A009257D2 /* SharedLibrary.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = SharedLibrary.xcconfig; sourceTree = "<group>"; };
F48FE2470D197F9A009257D2 /* StaticLibrary.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = StaticLibrary.xcconfig; sourceTree = "<group>"; };
- F48FE2640D198C1E009257D2 /* UnitTest-AppKit.octest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "UnitTest-AppKit.octest"; sourceTree = BUILT_PRODUCTS_DIR; };
+ F48FE2640D198C1E009257D2 /* UnitTest-AppKit.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "UnitTest-AppKit.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
F48FE26E0D198CAD009257D2 /* UnitTest-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "UnitTest-Info.plist"; sourceTree = "<group>"; };
- F48FE27C0D198D0E009257D2 /* GTMDelegatingTableColumn.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMDelegatingTableColumn.h; sourceTree = "<group>"; };
- F48FE27D0D198D0E009257D2 /* GTMDelegatingTableColumn.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMDelegatingTableColumn.m; sourceTree = "<group>"; };
F48FE27E0D198D0E009257D2 /* GTMGeometryUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMGeometryUtils.h; sourceTree = "<group>"; };
F48FE27F0D198D0E009257D2 /* GTMGeometryUtils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMGeometryUtils.m; sourceTree = "<group>"; };
F48FE2800D198D0E009257D2 /* GTMGeometryUtilsTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMGeometryUtilsTest.m; sourceTree = "<group>"; };
@@ -945,62 +427,24 @@
F48FE2910D198D24009257D2 /* GTMObjectSingleton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMObjectSingleton.h; sourceTree = "<group>"; };
F48FE2920D198D24009257D2 /* GTMSystemVersion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMSystemVersion.h; sourceTree = "<group>"; };
F48FE2930D198D24009257D2 /* GTMSystemVersion.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMSystemVersion.m; sourceTree = "<group>"; };
- F48FE29B0D198D36009257D2 /* GTMNSObject+UnitTesting.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSObject+UnitTesting.h"; sourceTree = "<group>"; };
- F48FE29C0D198D36009257D2 /* GTMNSObject+UnitTesting.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSObject+UnitTesting.m"; sourceTree = "<group>"; };
F48FE29F0D198D36009257D2 /* GTMSenTestCase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMSenTestCase.h; sourceTree = "<group>"; };
F48FE2E10D198E4C009257D2 /* GTMSystemVersionTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMSystemVersionTest.m; sourceTree = "<group>"; };
F493E3581146CD97005F994E /* GTMUILocalizerAndLayoutTweakerTest7.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = GTMUILocalizerAndLayoutTweakerTest7.xib; sourceTree = "<group>"; };
- F49DCD211460937A00506616 /* GTMUILocalizerAndLayoutTweakerTest4-0.10.6.8.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest4-0.10.6.8.tiff"; sourceTree = "<group>"; };
- F49DCD221460937A00506616 /* GTMUILocalizerAndLayoutTweakerTest4-1.10.6.8.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest4-1.10.6.8.tiff"; sourceTree = "<group>"; };
- F49DCD231460937A00506616 /* GTMUILocalizerAndLayoutTweakerTest4-2.10.6.8.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest4-2.10.6.8.tiff"; sourceTree = "<group>"; };
- F49DCD5A146096D300506616 /* GTMUILocalizerAndLayoutTweakerTest4-0.10_4_SDK.10.6.8.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest4-0.10_4_SDK.10.6.8.tiff"; sourceTree = "<group>"; };
- F49DCD5B146096D300506616 /* GTMUILocalizerAndLayoutTweakerTest4-1.10_4_SDK.10.6.8.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest4-1.10_4_SDK.10.6.8.tiff"; sourceTree = "<group>"; };
- F49DCD5C146096D300506616 /* GTMUILocalizerAndLayoutTweakerTest4-2.10_4_SDK.10.6.8.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest4-2.10_4_SDK.10.6.8.tiff"; sourceTree = "<group>"; };
F49FA8420EEF2AB700077669 /* GTMFileSystemKQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMFileSystemKQueue.h; sourceTree = "<group>"; };
F49FA8430EEF2AB700077669 /* GTMFileSystemKQueue.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMFileSystemKQueue.m; sourceTree = "<group>"; };
F49FA88A0EEF303D00077669 /* GTMFileSystemKQueueTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMFileSystemKQueueTest.m; sourceTree = "<group>"; };
- F4A420EC0EDDF8E000397A11 /* GTMHotKeyTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMHotKeyTextField.h; sourceTree = "<group>"; };
- F4A420ED0EDDF8E000397A11 /* GTMHotKeyTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMHotKeyTextField.m; sourceTree = "<group>"; };
- F4A420EE0EDDF8E000397A11 /* GTMHotKeyTextFieldTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMHotKeyTextFieldTest.m; sourceTree = "<group>"; };
- F4A486EC1097EA0A00513483 /* GTMUnitTestingView.10.6.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = GTMUnitTestingView.10.6.tiff; sourceTree = "<group>"; };
- F4AA2CB1109B37650025C956 /* GTMUILocalizerAndLayoutTweakerTest3-4.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest3-4.tiff"; sourceTree = "<group>"; };
F4C0B9C2108E27EE002FC8E4 /* GTMUILocalizerAndLayoutTweakerTest5.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = GTMUILocalizerAndLayoutTweakerTest5.xib; sourceTree = "<group>"; };
- F4C0B9D7108E3142002FC8E4 /* GTMUILocalizerAndLayoutTweakerTest5-0.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest5-0.tiff"; sourceTree = "<group>"; };
- F4C0B9D8108E3142002FC8E4 /* GTMUILocalizerAndLayoutTweakerTest5-1.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest5-1.tiff"; sourceTree = "<group>"; };
- F4C0B9D9108E3142002FC8E4 /* GTMUILocalizerAndLayoutTweakerTest5-2.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest5-2.tiff"; sourceTree = "<group>"; };
- F4C58CC110BAD75200651068 /* GTMFadeTruncatingTextFieldCellTest3.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = GTMFadeTruncatingTextFieldCellTest3.tiff; sourceTree = "<group>"; };
- F4C58CC210BAD75200651068 /* GTMFadeTruncatingTextFieldCellTest4.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = GTMFadeTruncatingTextFieldCellTest4.tiff; sourceTree = "<group>"; };
F4C62483109753960069CADD /* GTMIBArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMIBArray.h; sourceTree = "<group>"; };
F4C62484109753960069CADD /* GTMIBArray.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMIBArray.m; sourceTree = "<group>"; };
F4C62485109753960069CADD /* GTMIBArrayTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMIBArrayTest.h; sourceTree = "<group>"; };
F4C62486109753960069CADD /* GTMIBArrayTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMIBArrayTest.m; sourceTree = "<group>"; };
F4C62487109753960069CADD /* GTMIBArrayTest.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = GTMIBArrayTest.xib; sourceTree = "<group>"; };
F4CA854E0DAFAAB600B4AB10 /* xcconfigs-readme.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "xcconfigs-readme.txt"; sourceTree = "<group>"; };
- F4CA864C0DB3ACD200B4AB10 /* LoadableBundleGCSupported.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = LoadableBundleGCSupported.xcconfig; sourceTree = "<group>"; };
- F4CA864D0DB3ACD200B4AB10 /* SharedLibraryGCSupported.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = SharedLibraryGCSupported.xcconfig; sourceTree = "<group>"; };
- F4CA864E0DB3ACD200B4AB10 /* StaticLibraryGCSupported.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = StaticLibraryGCSupported.xcconfig; sourceTree = "<group>"; };
F4CC9F3F148E5E2500B7D68C /* DebugMacOSX.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = DebugMacOSX.xcconfig; sourceTree = "<group>"; };
F4CC9F40148E5E2500B7D68C /* ReleaseMacOSX.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = ReleaseMacOSX.xcconfig; sourceTree = "<group>"; };
F4FB44131120799A00F2FF9D /* GTMUILocalizerAndLayoutTweakerTest6.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = GTMUILocalizerAndLayoutTweakerTest6.xib; sourceTree = "<group>"; };
- F4FB444D11207FE600F2FF9D /* GTMUILocalizerAndLayoutTweakerTest6-tab0-0.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest6-tab0-0.tiff"; sourceTree = "<group>"; };
- F4FB444E11207FE600F2FF9D /* GTMUILocalizerAndLayoutTweakerTest6-tab0-1.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest6-tab0-1.tiff"; sourceTree = "<group>"; };
- F4FB444F11207FE600F2FF9D /* GTMUILocalizerAndLayoutTweakerTest6-tab0-2.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest6-tab0-2.tiff"; sourceTree = "<group>"; };
- F4FB445011207FE600F2FF9D /* GTMUILocalizerAndLayoutTweakerTest6-tab1-0.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest6-tab1-0.tiff"; sourceTree = "<group>"; };
- F4FB445111207FE600F2FF9D /* GTMUILocalizerAndLayoutTweakerTest6-tab1-1.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest6-tab1-1.tiff"; sourceTree = "<group>"; };
- F4FB445211207FE600F2FF9D /* GTMUILocalizerAndLayoutTweakerTest6-tab1-2.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest6-tab1-2.tiff"; sourceTree = "<group>"; };
F4FC15DC1046AD66000AB7BC /* GTMUILocalizerAndLayoutTweakerTest3.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = GTMUILocalizerAndLayoutTweakerTest3.xib; sourceTree = "<group>"; };
- F4FC15FF1046B581000AB7BC /* GTMUILocalizerAndLayoutTweakerTest3-0.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest3-0.tiff"; sourceTree = "<group>"; };
- F4FC16001046B581000AB7BC /* GTMUILocalizerAndLayoutTweakerTest3-1.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest3-1.tiff"; sourceTree = "<group>"; };
- F4FC16011046B581000AB7BC /* GTMUILocalizerAndLayoutTweakerTest3-2.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest3-2.tiff"; sourceTree = "<group>"; };
- F4FC16021046B581000AB7BC /* GTMUILocalizerAndLayoutTweakerTest3-3.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest3-3.tiff"; sourceTree = "<group>"; };
- F4FC322C104EAA11000AB7BC /* GTMUILocalizerWindow3State.gtmUTState */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = GTMUILocalizerWindow3State.gtmUTState; sourceTree = "<group>"; };
F4FC324C104EBD70000AB7BC /* GTMUILocalizerAndLayoutTweakerTest4.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = GTMUILocalizerAndLayoutTweakerTest4.xib; sourceTree = "<group>"; };
- F4FC327A104EC6D5000AB7BC /* GTMUILocalizerAndLayoutTweakerTest4-0.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest4-0.tiff"; sourceTree = "<group>"; };
- F4FC327B104EC6D5000AB7BC /* GTMUILocalizerAndLayoutTweakerTest4-1.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest4-1.tiff"; sourceTree = "<group>"; };
- F4FC327C104EC6D5000AB7BC /* GTMUILocalizerAndLayoutTweakerTest4-2.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest4-2.tiff"; sourceTree = "<group>"; };
- F4FC333A104EE94F000AB7BC /* GTMUILocalizerAndLayoutTweakerTest4-0.10_4_SDK.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest4-0.10_4_SDK.tiff"; sourceTree = "<group>"; };
- F4FC333B104EE94F000AB7BC /* GTMUILocalizerAndLayoutTweakerTest4-1.10_4_SDK.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest4-1.10_4_SDK.tiff"; sourceTree = "<group>"; };
- F4FC333C104EE94F000AB7BC /* GTMUILocalizerAndLayoutTweakerTest4-2.10_4_SDK.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMUILocalizerAndLayoutTweakerTest4-2.10_4_SDK.tiff"; sourceTree = "<group>"; };
F4FF22770D9D4835003880AC /* GTMDebugSelectorValidation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMDebugSelectorValidation.h; sourceTree = "<group>"; };
F95803F60E2FB0760049A088 /* GTMLoggerRingBufferWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMLoggerRingBufferWriter.h; sourceTree = "<group>"; };
F95803F70E2FB0760049A088 /* GTMLoggerRingBufferWriter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMLoggerRingBufferWriter.m; sourceTree = "<group>"; };
@@ -1026,7 +470,7 @@
buildActionMask = 2147483647;
files = (
8B45A2040DA46DF6001148C5 /* Cocoa.framework in Frameworks */,
- 8B45A0B80DA46A2F001148C5 /* SenTestingKit.framework in Frameworks */,
+ 8B07C6111D99B01D0054728B /* XCTest.framework in Frameworks */,
8B45A03A0DA46A2A001148C5 /* Foundation.framework in Frameworks */,
8B45A19A0DA46AAA001148C5 /* QuartzCore.framework in Frameworks */,
8B7DCBA50DFF0EFF0017E983 /* GoogleToolboxForMac.framework in Frameworks */,
@@ -1057,8 +501,8 @@
files = (
8BFE13ED0FB0F2D8001BE894 /* Cocoa.framework in Frameworks */,
8BFE13EE0FB0F2D8001BE894 /* GoogleToolboxForMac.framework in Frameworks */,
- 8BFE13EF0FB0F2D8001BE894 /* SenTestingKit.framework in Frameworks */,
8BFE158E0FB0F34C001BE894 /* AddressBook.framework in Frameworks */,
+ 8B07C60E1D99B01D0054728B /* XCTest.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -1068,7 +512,7 @@
files = (
F42E08640D199A2F00D5DDE0 /* Foundation.framework in Frameworks */,
F42E08800D199AB500D5DDE0 /* GoogleToolboxForMac.framework in Frameworks */,
- F42E089D0D199B1800D5DDE0 /* SenTestingKit.framework in Frameworks */,
+ 8B07C6101D99B01D0054728B /* XCTest.framework in Frameworks */,
8BC046B90DAE8C4B00C2D1CA /* ApplicationServices.framework in Frameworks */,
F99161B50F0B151400213D3B /* libsqlite3.dylib in Frameworks */,
);
@@ -1093,8 +537,8 @@
files = (
F42E08610D199A2B00D5DDE0 /* Cocoa.framework in Frameworks */,
F42E087F0D199AB400D5DDE0 /* GoogleToolboxForMac.framework in Frameworks */,
- F42E089C0D199B1800D5DDE0 /* SenTestingKit.framework in Frameworks */,
8B8B10F90EEB8B9E00E543D0 /* Carbon.framework in Frameworks */,
+ 8B07C60F1D99B01D0054728B /* XCTest.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -1104,12 +548,12 @@
034768DFFF38A50411DB9C8B /* Products */ = {
isa = PBXGroup;
children = (
- F48FE2640D198C1E009257D2 /* UnitTest-AppKit.octest */,
- F42E08210D19987200D5DDE0 /* UnitTest-Foundation.octest */,
+ F48FE2640D198C1E009257D2 /* UnitTest-AppKit.xctest */,
+ F42E08210D19987200D5DDE0 /* UnitTest-Foundation.xctest */,
F42E086D0D199A5B00D5DDE0 /* GoogleToolboxForMac.framework */,
- 8B45A0280DA4696C001148C5 /* UnitTest-UnitTesting.octest */,
+ 8B45A0280DA4696C001148C5 /* UnitTest-UnitTesting.xctest */,
8B45A28A0DA49B99001148C5 /* GTMUIUnitTestingHarness.app */,
- 8BFE13FC0FB0F2D8001BE894 /* UnitTest-AddressBook.octest */,
+ 8BFE13FC0FB0F2D8001BE894 /* UnitTest-AddressBook.xctest */,
8BC85131127A18AE0046E0FB /* GTMServiceManagementTestingHarness */,
);
name = Products;
@@ -1118,7 +562,6 @@
0867D691FE84028FC02AAC07 /* GTM */ = {
isa = PBXGroup;
children = (
- 444B3B7619F6D24000B9191E /* CoreServices.framework */,
F440EDB70DFECC4B0003E81F /* BuildingAndUsing.txt */,
8B1A16050D90344B00CA1E8E /* GTMDefines.h */,
8BFE13AF0FB0F2B9001BE894 /* AddressBook */,
@@ -1128,9 +571,7 @@
F48FE2770D198CEA009257D2 /* UnitTesting */,
F48FE23E0D197F70009257D2 /* XcodeConfig */,
0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */,
- 84D99F350EA661C900C007D5 /* BuildScripts */,
034768DFFF38A50411DB9C8B /* Products */,
- 32DBCF5E0370ADEE00C91783 /* GTM_Prefix.pch */,
F42E086E0D199A5B00D5DDE0 /* GTM-Info.plist */,
F48FE26E0D198CAD009257D2 /* UnitTest-Info.plist */,
);
@@ -1140,6 +581,8 @@
0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */ = {
isa = PBXGroup;
children = (
+ 8B07C60D1D99B01D0054728B /* XCTest.framework */,
+ 444B3B7619F6D24000B9191E /* CoreServices.framework */,
8BC851D3127A19020046E0FB /* CoreFoundation.framework */,
8BFE158C0FB0F34C001BE894 /* AddressBook.framework */,
F99161B40F0B151400213D3B /* libsqlite3.dylib */,
@@ -1150,27 +593,10 @@
1058C7B1FEA5585E11CA2CBB /* Cocoa.framework */,
0867D69BFE84028FC02AAC07 /* Foundation.framework */,
8BC046B80DAE8C4B00C2D1CA /* ApplicationServices.framework */,
- F42E089B0D199B1800D5DDE0 /* SenTestingKit.framework */,
);
name = "External Frameworks and Libraries";
sourceTree = "<group>";
};
- 84D99F350EA661C900C007D5 /* BuildScripts */ = {
- isa = PBXGroup;
- children = (
- 84D99F360EA661C900C007D5 /* BuildAllSDKs.sh */,
- );
- path = BuildScripts;
- sourceTree = "<group>";
- };
- 8B0E653E0FD80D5E00461C4A /* GTMHotKeyTextFieldLocalizations */ = {
- isa = PBXGroup;
- children = (
- 8B0E653F0FD80D5E00461C4A /* GTMHotKeyTextField.strings */,
- );
- path = GTMHotKeyTextFieldLocalizations;
- sourceTree = "<group>";
- };
8B409E960F952CCA00DF540E /* Resources */ = {
isa = PBXGroup;
children = (
@@ -1196,19 +622,9 @@
8B5B4ABC15BF31050081A96C /* CodeCoverage.xcconfig */,
8B5B4ABD15BF31050081A96C /* CodeCoverageStatic.xcconfig */,
8B5B4ABE15BF31050081A96C /* Debug.xcconfig */,
- 8B5B4ABF15BF31050081A96C /* GCSupported.xcconfig */,
8B5B4AC015BF31050081A96C /* General.xcconfig */,
8B5B4AC115BF31050081A96C /* GTMMerge.xcconfig */,
- 8B5B4AC215BF31050081A96C /* iOS.xcconfig */,
- 8B5B4AC315BF31050081A96C /* iPhone30.xcconfig */,
- 8B5B4AC415BF31050081A96C /* iPhone31.xcconfig */,
- 8B5B4AC515BF31050081A96C /* iPhone312.xcconfig */,
- 8B5B4AC615BF31050081A96C /* iPhone313.xcconfig */,
- 8B5B4AC715BF31050081A96C /* iPhone32.xcconfig */,
- 8B5B4AC815BF31050081A96C /* iPhone40.xcconfig */,
- 8B5B4AC915BF31050081A96C /* iPhone41.xcconfig */,
8B5B4ACA15BF31050081A96C /* LeopardOrLater.xcconfig */,
- 8B5B4ACB15BF31050081A96C /* MacOS.xcconfig */,
8B5B4ACC15BF31050081A96C /* MacOSX.xcconfig */,
8B5B4ACD15BF31050081A96C /* Release.xcconfig */,
8B5B4ACE15BF31050081A96C /* SnowLeopardOrLater.xcconfig */,
@@ -1218,6 +634,14 @@
path = subconfig;
sourceTree = "<group>";
};
+ 8BA983C21D9AE7E6009724B5 /* TestData */ = {
+ isa = PBXGroup;
+ children = (
+ 8BA983C51D9AE7E6009724B5 /* GTMUnitTestingTest.nib */,
+ );
+ path = TestData;
+ sourceTree = "<group>";
+ };
8BFE13AF0FB0F2B9001BE894 /* AddressBook */ = {
isa = PBXGroup;
children = (
@@ -1238,154 +662,10 @@
path = TestData;
sourceTree = "<group>";
};
- F428670012673C1D0090FE0F /* TestData */ = {
- isa = PBXGroup;
- children = (
- F428670112673C490090FE0F /* GTMURITemplateExtraTests.json */,
- F428670212673C490090FE0F /* GTMURITemplateRFCTests.json */,
- );
- path = TestData;
- sourceTree = "<group>";
- };
- F435E46C0DC8F23A0069CDE8 /* TestData */ = {
- isa = PBXGroup;
- children = (
- 8B45A2DE0DA51A7E001148C5 /* GTMUnitTestingTest.nib */,
- 8B45A6B90DA67DD5001148C5 /* GTMUnitTestingImage.gtmUTState */,
- 8B45A5F50DA5EB9F001148C5 /* GTMUnitTestingWindow.gtmUTState */,
- 8BA9FB22119CA3F200E264C3 /* GTMUnitTestingWindow.10.6.gtmUTState */,
- 8B45A5F60DA5EB9F001148C5 /* GTMUnitTestingTestApp.gtmUTState */,
- 8BA9FAF8119CA2E300E264C3 /* GTMUnitTestingTestApp.10.6.gtmUTState */,
- 8BEEA90A0DA7446300894774 /* GTMUnitTestingImage.tiff */,
- 84B91B890EA3CC2E0087500F /* GTMUnitTestingImage.10.6.tiff */,
- 8BEEA90B0DA7446300894774 /* GTMUnitTestingWindow.tiff */,
- 8B2789950EF855FB00D68C01 /* GTMUnitTestingWindow.10.5.6.tiff */,
- F48D000C0FE994BF00428D0B /* GTMUnitTestingWindow.10.5.7.tiff */,
- F42F50E81057E91A00BFC735 /* GTMUnitTestingWindow.10.5.8.tiff */,
- 84B91B8A0EA3CC2E0087500F /* GTMUnitTestingWindow.10.6.tiff */,
- 8BEEA90C0DA7446300894774 /* GTMUnitTestingView.tiff */,
- F4A486EC1097EA0A00513483 /* GTMUnitTestingView.10.6.tiff */,
- );
- path = TestData;
- sourceTree = "<group>";
- };
F435E4840DC8F3DC0069CDE8 /* TestData */ = {
isa = PBXGroup;
children = (
8B409E960F952CCA00DF540E /* Resources */,
- 7F97DBA2104ED861004DDDEE /* GTMFadeTruncatingTextFieldCellTest1.tiff */,
- 7F97DBA3104ED861004DDDEE /* GTMFadeTruncatingTextFieldCellTest2.tiff */,
- F4C58CC110BAD75200651068 /* GTMFadeTruncatingTextFieldCellTest3.tiff */,
- F4C58CC210BAD75200651068 /* GTMFadeTruncatingTextFieldCellTest4.tiff */,
- B71B91E01332CD680039B2CB /* GTMFadeTruncatingTextFieldCellTest5.tiff */,
- B71B91E11332CD680039B2CB /* GTMFadeTruncatingTextFieldCellTest6.tiff */,
- B71B92361332DA380039B2CB /* GTMFadeTruncatingTextFieldCellTest7.tiff */,
- B7764E7F133906B600AFDC7D /* GTMFadeTruncatingTextFieldCellTest8.tiff */,
- 8B1802410E25592200280961 /* GTMLargeTypeWindowMediumTextTest.gtmUTState */,
- 8BA9FBAC119CB08200E264C3 /* GTMLargeTypeWindowMediumTextTest.10.6.gtmUTState */,
- 8B1801A80E25341B00280961 /* GTMLargeTypeWindowImageTest.gtmUTState */,
- 8B1801AC0E25341B00280961 /* GTMLargeTypeWindowLongTextTest.gtmUTState */,
- 8BA9FBBA119CB0C400E264C3 /* GTMLargeTypeWindowLongTextTest.10.6.gtmUTState */,
- 8B1801AD0E25341B00280961 /* GTMLargeTypeWindowShortTextTest.gtmUTState */,
- 8BA9FBAA119CB06500E264C3 /* GTMLargeTypeWindowShortTextTest.10.6.gtmUTState */,
- 8B7AD4980DABBB5800B84F4A /* GTMNSBezierPath+CGPathTest.tiff */,
- F435DE7A0DC0B6580069CDE8 /* GTMNSBezierPath+CGPathTest.ppc64.tiff */,
- F435DE7B0DC0B6580069CDE8 /* GTMNSBezierPath+CGPathTest.x86_64.tiff */,
- 8B7AD4990DABBB5800B84F4A /* GTMNSBezierPath+RoundRectTest.tiff */,
- F435DE8A0DC0B7620069CDE8 /* GTMNSBezierPath+RoundRectTest.ppc64.tiff */,
- 8BE869720DBE89C100749827 /* GTMNSBezierPath+RoundRectTest.x86_64.tiff */,
- 8BA9FBA2119CAF9500E264C3 /* GTMNSBezierPath+RoundRectTest.10.6.tiff */,
- 8BA9FBA6119CB00000E264C3 /* GTMNSBezierPath+RoundRectTest.10.6.x86_64.tiff */,
- 8B7AD4970DABBB5800B84F4A /* GTMNSBezierPath+ShadingTest.tiff */,
- 8BA9FBA0119CAF6600E264C3 /* GTMNSBezierPath+ShadingTest.10.6.tiff */,
- F42E2CFC102B21EE004DF054 /* GTMUILocalizerAndLayoutTweakerTest1-0.tiff */,
- 8BA9FBF5119CB2EF00E264C3 /* GTMUILocalizerAndLayoutTweakerTest1-0.10.6.tiff */,
- F42E2CFD102B21EE004DF054 /* GTMUILocalizerAndLayoutTweakerTest1-1.tiff */,
- 8BA9FBFC119CB30D00E264C3 /* GTMUILocalizerAndLayoutTweakerTest1-1.10.6.tiff */,
- F42E2CFE102B21EE004DF054 /* GTMUILocalizerAndLayoutTweakerTest1-2.tiff */,
- 8BA9FBFF119CB32500E264C3 /* GTMUILocalizerAndLayoutTweakerTest1-2.10.6.tiff */,
- F42E2D21102B24E5004DF054 /* GTMUILocalizerAndLayoutTweakerTest2-0.tiff */,
- 8BA9FC46119CB37F00E264C3 /* GTMUILocalizerAndLayoutTweakerTest2-0.10.6.tiff */,
- F42E2D22102B24E5004DF054 /* GTMUILocalizerAndLayoutTweakerTest2-1.tiff */,
- 8BA9FC5C119CB39D00E264C3 /* GTMUILocalizerAndLayoutTweakerTest2-1.10.6.tiff */,
- F42E2D23102B24E5004DF054 /* GTMUILocalizerAndLayoutTweakerTest2-2.tiff */,
- 8BA9FC5F119CB3B500E264C3 /* GTMUILocalizerAndLayoutTweakerTest2-2.10.6.tiff */,
- F4FC15FF1046B581000AB7BC /* GTMUILocalizerAndLayoutTweakerTest3-0.tiff */,
- 8BA9FBDD119CB20A00E264C3 /* GTMUILocalizerAndLayoutTweakerTest3-0.10.6.tiff */,
- F4FC16001046B581000AB7BC /* GTMUILocalizerAndLayoutTweakerTest3-1.tiff */,
- 8BA9FBE0119CB23000E264C3 /* GTMUILocalizerAndLayoutTweakerTest3-1.10.6.tiff */,
- F4FC16011046B581000AB7BC /* GTMUILocalizerAndLayoutTweakerTest3-2.tiff */,
- 8BA9FBE3119CB24D00E264C3 /* GTMUILocalizerAndLayoutTweakerTest3-2.10.6.tiff */,
- F4FC16021046B581000AB7BC /* GTMUILocalizerAndLayoutTweakerTest3-3.tiff */,
- 8BA9FC43119CB36100E264C3 /* GTMUILocalizerAndLayoutTweakerTest3-3.10.6.tiff */,
- F4AA2CB1109B37650025C956 /* GTMUILocalizerAndLayoutTweakerTest3-4.tiff */,
- 8BA9FC62119CB3CD00E264C3 /* GTMUILocalizerAndLayoutTweakerTest3-4.10.6.tiff */,
- F4FC327A104EC6D5000AB7BC /* GTMUILocalizerAndLayoutTweakerTest4-0.tiff */,
- F4FC327B104EC6D5000AB7BC /* GTMUILocalizerAndLayoutTweakerTest4-1.tiff */,
- F4FC327C104EC6D5000AB7BC /* GTMUILocalizerAndLayoutTweakerTest4-2.tiff */,
- 8BA9FB94119CAEDE00E264C3 /* GTMUILocalizerAndLayoutTweakerTest4-0.10.6.tiff */,
- 8BA9FB8E119CAE7200E264C3 /* GTMUILocalizerAndLayoutTweakerTest4-1.10.6.tiff */,
- 8BA9FB9B119CAF0200E264C3 /* GTMUILocalizerAndLayoutTweakerTest4-2.10.6.tiff */,
- F450A746146D7206001B3B1F /* GTMUILocalizerAndLayoutTweakerTest4-0.10.6.7.tiff */,
- F450A747146D7206001B3B1F /* GTMUILocalizerAndLayoutTweakerTest4-1.10.6.7.tiff */,
- F450A748146D7206001B3B1F /* GTMUILocalizerAndLayoutTweakerTest4-2.10.6.7.tiff */,
- F49DCD211460937A00506616 /* GTMUILocalizerAndLayoutTweakerTest4-0.10.6.8.tiff */,
- F49DCD221460937A00506616 /* GTMUILocalizerAndLayoutTweakerTest4-1.10.6.8.tiff */,
- F49DCD231460937A00506616 /* GTMUILocalizerAndLayoutTweakerTest4-2.10.6.8.tiff */,
- F4FC333A104EE94F000AB7BC /* GTMUILocalizerAndLayoutTweakerTest4-0.10_4_SDK.tiff */,
- F4FC333B104EE94F000AB7BC /* GTMUILocalizerAndLayoutTweakerTest4-1.10_4_SDK.tiff */,
- F4FC333C104EE94F000AB7BC /* GTMUILocalizerAndLayoutTweakerTest4-2.10_4_SDK.tiff */,
- 8BA7147E11B57EC700EB4781 /* GTMUILocalizerAndLayoutTweakerTest4-0.10_4_SDK.10.6.tiff */,
- 8BA7147F11B57EC700EB4781 /* GTMUILocalizerAndLayoutTweakerTest4-1.10_4_SDK.10.6.tiff */,
- 8BA7148011B57EC700EB4781 /* GTMUILocalizerAndLayoutTweakerTest4-2.10_4_SDK.10.6.tiff */,
- F450A6B9146C2A6E001B3B1F /* GTMUILocalizerAndLayoutTweakerTest4-0.10_4_SDK.10.6.7.tiff */,
- F450A6BA146C2A6E001B3B1F /* GTMUILocalizerAndLayoutTweakerTest4-1.10_4_SDK.10.6.7.tiff */,
- F450A6BB146C2A6E001B3B1F /* GTMUILocalizerAndLayoutTweakerTest4-2.10_4_SDK.10.6.7.tiff */,
- F49DCD5A146096D300506616 /* GTMUILocalizerAndLayoutTweakerTest4-0.10_4_SDK.10.6.8.tiff */,
- F49DCD5B146096D300506616 /* GTMUILocalizerAndLayoutTweakerTest4-1.10_4_SDK.10.6.8.tiff */,
- F49DCD5C146096D300506616 /* GTMUILocalizerAndLayoutTweakerTest4-2.10_4_SDK.10.6.8.tiff */,
- F4C0B9D7108E3142002FC8E4 /* GTMUILocalizerAndLayoutTweakerTest5-0.tiff */,
- 8BA9FC65119CB3E200E264C3 /* GTMUILocalizerAndLayoutTweakerTest5-0.10.6.tiff */,
- F4C0B9D8108E3142002FC8E4 /* GTMUILocalizerAndLayoutTweakerTest5-1.tiff */,
- 8BA9FC68119CB3F900E264C3 /* GTMUILocalizerAndLayoutTweakerTest5-1.10.6.tiff */,
- F4C0B9D9108E3142002FC8E4 /* GTMUILocalizerAndLayoutTweakerTest5-2.tiff */,
- 8BA9FC6B119CB43F00E264C3 /* GTMUILocalizerAndLayoutTweakerTest5-2.10.6.tiff */,
- F4FB444D11207FE600F2FF9D /* GTMUILocalizerAndLayoutTweakerTest6-tab0-0.tiff */,
- 8BA9FBBC119CB14C00E264C3 /* GTMUILocalizerAndLayoutTweakerTest6-tab0-0.10.6.tiff */,
- F4FB444E11207FE600F2FF9D /* GTMUILocalizerAndLayoutTweakerTest6-tab0-1.tiff */,
- 8BA9FC6E119CB46000E264C3 /* GTMUILocalizerAndLayoutTweakerTest6-tab0-1.10.6.tiff */,
- F4FB444F11207FE600F2FF9D /* GTMUILocalizerAndLayoutTweakerTest6-tab0-2.tiff */,
- 8BA9FC71119CB47900E264C3 /* GTMUILocalizerAndLayoutTweakerTest6-tab0-2.10.6.tiff */,
- F4FB445011207FE600F2FF9D /* GTMUILocalizerAndLayoutTweakerTest6-tab1-0.tiff */,
- 8BA9FC74119CB48F00E264C3 /* GTMUILocalizerAndLayoutTweakerTest6-tab1-0.10.6.tiff */,
- F4FB445111207FE600F2FF9D /* GTMUILocalizerAndLayoutTweakerTest6-tab1-1.tiff */,
- 8BA9FC77119CB4A100E264C3 /* GTMUILocalizerAndLayoutTweakerTest6-tab1-1.10.6.tiff */,
- F4FB445211207FE600F2FF9D /* GTMUILocalizerAndLayoutTweakerTest6-tab1-2.tiff */,
- 8BA9FC7A119CB4B300E264C3 /* GTMUILocalizerAndLayoutTweakerTest6-tab1-2.10.6.tiff */,
- F43A434B1146DCC70048A9DC /* GTMUILocalizerAndLayoutTweakerTest7-Min-0.tiff */,
- 8BA9FBC7119CB19A00E264C3 /* GTMUILocalizerAndLayoutTweakerTest7-Min-0.10.6.tiff */,
- F43A434C1146DCC70048A9DC /* GTMUILocalizerAndLayoutTweakerTest7-Min-1.tiff */,
- 8BA9FBE6119CB26A00E264C3 /* GTMUILocalizerAndLayoutTweakerTest7-Min-1.10.6.tiff */,
- F43A434D1146DCC70048A9DC /* GTMUILocalizerAndLayoutTweakerTest7-Min-2.tiff */,
- 8BA9FBE9119CB28500E264C3 /* GTMUILocalizerAndLayoutTweakerTest7-Min-2.10.6.tiff */,
- F43A434E1146DCC70048A9DC /* GTMUILocalizerAndLayoutTweakerTest7-Min-3.tiff */,
- 8BA9FBEC119CB2A400E264C3 /* GTMUILocalizerAndLayoutTweakerTest7-Min-3.10.6.tiff */,
- F43A434F1146DCC70048A9DC /* GTMUILocalizerAndLayoutTweakerTest7-NoMin-0.tiff */,
- 8BA9FBDA119CB1E600E264C3 /* GTMUILocalizerAndLayoutTweakerTest7-NoMin-0.10.6.tiff */,
- F43A43501146DCC70048A9DC /* GTMUILocalizerAndLayoutTweakerTest7-NoMin-1.tiff */,
- 8BA9FBEF119CB2BF00E264C3 /* GTMUILocalizerAndLayoutTweakerTest7-NoMin-1.10.6.tiff */,
- F43A43511146DCC70048A9DC /* GTMUILocalizerAndLayoutTweakerTest7-NoMin-2.tiff */,
- 8BA9FBBF119CB17600E264C3 /* GTMUILocalizerAndLayoutTweakerTest7-NoMin-2.10.6.tiff */,
- F43A43521146DCC70048A9DC /* GTMUILocalizerAndLayoutTweakerTest7-NoMin-3.tiff */,
- 8BA9FBF2119CB2D600E264C3 /* GTMUILocalizerAndLayoutTweakerTest7-NoMin-3.10.6.tiff */,
- 8B409EC30F9530C200DF540E /* GTMUILocalizerWindow1State.gtmUTState */,
- 7F4C015E1055AD4200F88238 /* GTMUILocalizerWindow1State.10_4_SDK.gtmUTState */,
- 8B409EE80F95325000DF540E /* GTMUILocalizerWindow2State.gtmUTState */,
- 8B4BD7E61200E5EA009C7060 /* GTMUILocalizerWindow3State.10_4_SDK.gtmUTState */,
- F4FC322C104EAA11000AB7BC /* GTMUILocalizerWindow3State.gtmUTState */,
- 8B409EF30F95331500DF540E /* GTMUILocalizerMenuState.gtmUTState */,
- 8B409F110F95352500DF540E /* GTMUILocalizerView2State.gtmUTState */,
- 8B409F120F95352500DF540E /* GTMUILocalizerView1State.gtmUTState */,
);
path = TestData;
sourceTree = "<group>";
@@ -1407,22 +687,9 @@
8B3E292B0EEB53F3000681D8 /* GTMCarbonEvent.h */,
8B3E292A0EEB53F3000681D8 /* GTMCarbonEvent.m */,
8B3E29290EEB53F3000681D8 /* GTMCarbonEventTest.m */,
- F48FE27C0D198D0E009257D2 /* GTMDelegatingTableColumn.h */,
- F48FE27D0D198D0E009257D2 /* GTMDelegatingTableColumn.m */,
7F97DB2D104EBC8D004DDDEE /* GTMFadeTruncatingTextFieldCell.h */,
7F97DB2E104EBC8D004DDDEE /* GTMFadeTruncatingTextFieldCell.m */,
7F97DB2F104EBC8D004DDDEE /* GTMFadeTruncatingTextFieldCellTest.m */,
- 8B58E9940E547EB000A0E02E /* GTMGetURLHandler.m */,
- 8B8B10FF0EEB8CD000E543D0 /* GTMGetURLHandlerTest.m */,
- 8BB77A0111B5A09900AB31AF /* GTMGoogleSearch.h */,
- 8BB77A0211B5A09900AB31AF /* GTMGoogleSearch.m */,
- 8BB77A0311B5A09900AB31AF /* GTMGoogleSearchTest.m */,
- F4A420EC0EDDF8E000397A11 /* GTMHotKeyTextField.h */,
- F4A420ED0EDDF8E000397A11 /* GTMHotKeyTextField.m */,
- 8BAA9B540F7B4A5000DF4F12 /* GTMHotKeyTextFieldTest.h */,
- F4A420EE0EDDF8E000397A11 /* GTMHotKeyTextFieldTest.m */,
- 8BAA9B560F7B4C2400DF4F12 /* GTMHotKeyTextFieldTest.xib */,
- 8B0E653E0FD80D5E00461C4A /* GTMHotKeyTextFieldLocalizations */,
F4C62483109753960069CADD /* GTMIBArray.h */,
F4C62484109753960069CADD /* GTMIBArray.m */,
F4C62485109753960069CADD /* GTMIBArrayTest.h */,
@@ -1431,44 +698,20 @@
8BF2368D13CF67CB00F3FD82 /* GTMKeyValueAnimation.h */,
8BF2368E13CF67CB00F3FD82 /* GTMKeyValueAnimation.m */,
8BF2369113CF694C00F3FD82 /* GTMKeyValueAnimationTest.m */,
- 8B1801A10E2533D500280961 /* GTMLargeTypeWindow.h */,
- 8B1801A00E2533D500280961 /* GTMLargeTypeWindow.m */,
- 8B1801A40E2533DB00280961 /* GTMLargeTypeWindowTest.m */,
- F43E44770D4918B20041161F /* GTMLinearRGBShading.h */,
- F43E44780D4918B20041161F /* GTMLinearRGBShading.m */,
- F43E44790D4918B20041161F /* GTMLinearRGBShadingTest.m */,
F43DCDCB0D4796C600959A62 /* GTMLoginItems.h */,
F43DCDCC0D4796C600959A62 /* GTMLoginItems.m */,
F43DCEC60D47BEA000959A62 /* GTMLoginItemsTest.m */,
8B158A5F10A8BE4500C93125 /* GTMNSAnimation+Duration.h */,
8B158A6010A8BE4500C93125 /* GTMNSAnimation+Duration.m */,
- 8BDB8A981152E1B200C411B1 /* GTMNSAnimatablePropertyContainer.m */,
- 8BDB8A971152E1B200C411B1 /* GTMNSAnimatablePropertyContainer.h */,
- 8BDB8C39115329EC00C411B1 /* GTMNSAnimatablePropertyContainerTest.m */,
- 8B21BE8F11532C7700DD2686 /* GTMNSAnimatablePropertyContainerTest.h */,
- 8B21BE9111532CDC00DD2686 /* GTMNSAnimatablePropertyContainerTest.xib */,
F428FEFF0D48E55E00382ED1 /* GTMNSBezierPath+CGPath.h */,
F428FF000D48E55E00382ED1 /* GTMNSBezierPath+CGPath.m */,
F428FF010D48E55E00382ED1 /* GTMNSBezierPath+CGPathTest.m */,
F48FE2810D198D0E009257D2 /* GTMNSBezierPath+RoundRect.h */,
F48FE2820D198D0E009257D2 /* GTMNSBezierPath+RoundRect.m */,
F48FE2830D198D0E009257D2 /* GTMNSBezierPath+RoundRectTest.m */,
- F47F1C0D0D490BC000925B8F /* GTMNSBezierPath+Shading.h */,
- F47F1C0E0D490BC000925B8F /* GTMNSBezierPath+Shading.m */,
- F47F1C110D490BC000925B8F /* GTMNSBezierPath+ShadingTest.m */,
7F511DF30F4B0378009F41B6 /* GTMNSColor+Luminance.h */,
7F511DF40F4B0378009F41B6 /* GTMNSColor+Luminance.m */,
7F511DF50F4B0378009F41B6 /* GTMNSColor+LuminanceTest.m */,
- 7F3EB38C0E5E09C700A7A75E /* GTMNSImage+Scaling.h */,
- 7F3EB38D0E5E09C700A7A75E /* GTMNSImage+Scaling.m */,
- 7F3EB3930E5E0A2100A7A75E /* GTMNSImage+ScalingTest.m */,
- 7FF768DF1051B17900D34F4B /* GTMNSImage+SearchCache.h */,
- 7FF768E01051B17900D34F4B /* GTMNSImage+SearchCache.m */,
- 7FF768E11051B17900D34F4B /* GTMNSImage+SearchCacheTest.m */,
- 8BA01B5B0F144BD800926923 /* GTMNSWorkspace+Running.m */,
- 8BA01B5C0F144BD800926923 /* GTMNSWorkspace+Running.h */,
- 8BA01B5F0F144BE500926923 /* GTMNSWorkspace+RunningTest.m */,
- F47F1C740D490E5C00925B8F /* GTMShading.h */,
8B4099490F93C5CC00DF540E /* GTMUILocalizer.h */,
8B40994A0F93C5CC00DF540E /* GTMUILocalizer.m */,
F43C7A551021FAA300ABF03C /* GTMUILocalizerAndLayoutTweaker.h */,
@@ -1485,7 +728,6 @@
8B409E3E0F950DE900DF540E /* GTMUILocalizerTest.h */,
8B409BC50F94405A00DF540E /* GTMUILocalizerTest.m */,
8B409E8B0F952C2C00DF540E /* GTMUILocalizerTestWindow.xib */,
- 7F6840D1105375A70057F4FA /* GTMUILocalizerTestWindow_10_4.xib */,
8B409F050F95341E00DF540E /* GTMUILocalizerTestView.xib */,
8207B8970FEA7A98008A527B /* GTMWindowSheetController.h */,
8207B8980FEA7A98008A527B /* GTMWindowSheetController.m */,
@@ -1498,46 +740,18 @@
F48FE2720D198CCE009257D2 /* Foundation */ = {
isa = PBXGroup;
children = (
- F42866B51267340A0090FE0F /* GTMURITemplate.h */,
- F42866B61267340A0090FE0F /* GTMURITemplate.m */,
- F42866B71267340A0090FE0F /* GTMURITemplateTest.m */,
0B1B9B8410FECD870084EE4B /* GTMStringEncoding.h */,
0B1B9B8510FECD870084EE4B /* GTMStringEncoding.m */,
0B1B9B8610FECD870084EE4B /* GTMStringEncodingTest.m */,
- 0BFAD4C2104D06EF002BEB27 /* GTMNSDictionary+CaseInsensitive.h */,
- 0BFAD4C3104D06EF002BEB27 /* GTMNSDictionary+CaseInsensitive.m */,
- 0BFAD4C4104D06EF002BEB27 /* GTMNSDictionary+CaseInsensitiveTest.m */,
F95B567B0F46208E0051A6F1 /* GTMSQLite.h */,
F95B567C0F46208E0051A6F1 /* GTMSQLite.m */,
F95B567D0F46208E0051A6F1 /* GTMSQLiteTest.m */,
- 8B3344170DBF7A36009FD32C /* GTMNSAppleScript+HandlerTest.m */,
- 8B3344180DBF7A36009FD32C /* GTMNSAppleScript+Handler.m */,
- 8B3344190DBF7A36009FD32C /* GTMNSAppleScript+Handler.h */,
- 8B3344200DBF7A36009FD32C /* GTMNSAppleEvent+HandlerTest.applescript */,
- 8B33441A0DBF7A36009FD32C /* GTMNSAppleEventDescriptor+HandlerTest.m */,
- 8B33441B0DBF7A36009FD32C /* GTMNSAppleEventDescriptor+Handler.m */,
- 8B33441C0DBF7A36009FD32C /* GTMNSAppleEventDescriptor+Handler.h */,
- 8B33441D0DBF7A36009FD32C /* GTMNSAppleEventDescriptor+FoundationTest.m */,
- 8B33441E0DBF7A36009FD32C /* GTMNSAppleEventDescriptor+Foundation.m */,
- 8B33441F0DBF7A36009FD32C /* GTMNSAppleEventDescriptor+Foundation.h */,
- 1012DF540F4252BD004794DB /* GTMAbstractDOListener.h */,
- 1012DF550F4252BD004794DB /* GTMAbstractDOListener.m */,
- 1012DF590F425525004794DB /* GTMAbstractDOListenerTest.m */,
- 8B1B49160E5F8E2100A08972 /* GTMExceptionalInlines.h */,
- 8B1B49170E5F8E2100A08972 /* GTMExceptionalInlines.m */,
- 8B1B491B0E5F904C00A08972 /* GTMExceptionalInlinesTest.m */,
F49FA8420EEF2AB700077669 /* GTMFileSystemKQueue.h */,
F49FA8430EEF2AB700077669 /* GTMFileSystemKQueue.m */,
F49FA88A0EEF303D00077669 /* GTMFileSystemKQueueTest.m */,
- 8BE2836B0DED0F130035B3F8 /* GTMFourCharCode.m */,
- 8BE2836C0DED0F130035B3F8 /* GTMFourCharCodeTest.m */,
- 8BE2836D0DED0F130035B3F8 /* GTMFourCharCode.h */,
F48FE27E0D198D0E009257D2 /* GTMGeometryUtils.h */,
F48FE27F0D198D0E009257D2 /* GTMGeometryUtils.m */,
F48FE2800D198D0E009257D2 /* GTMGeometryUtilsTest.m */,
- F47F1D2D0D4914AD00925B8F /* GTMCalculatedRange.h */,
- F47F1D2E0D4914AD00925B8F /* GTMCalculatedRange.m */,
- F47F1D2F0D4914AD00925B8F /* GTMCalculatedRangeTest.m */,
F41711320ECDFBD500B9B276 /* GTMLightweightProxy.h */,
F41711330ECDFBD500B9B276 /* GTMLightweightProxy.m */,
F41711340ECDFBD500B9B276 /* GTMLightweightProxyTest.m */,
@@ -1558,9 +772,6 @@
33C374360DD8D44800E97817 /* GTMNSDictionary+URLArguments.h */,
33C374370DD8D44800E97817 /* GTMNSDictionary+URLArguments.m */,
33C3745E0DD8D85B00E97817 /* GTMNSDictionary+URLArgumentsTest.m */,
- F43E4DD60D4E56320041161F /* GTMNSEnumerator+Filter.h */,
- F43E4DD70D4E56320041161F /* GTMNSEnumerator+Filter.m */,
- F43E4DD80D4E56320041161F /* GTMNSEnumerator+FilterTest.m */,
8B29078411F8D1BF0064F50F /* GTMNSFileHandle+UniqueName.h */,
8B29078511F8D1BF0064F50F /* GTMNSFileHandle+UniqueName.m */,
8B29078611F8D1BF0064F50F /* GTMNSFileHandle+UniqueNameTest.m */,
@@ -1576,9 +787,6 @@
8BD35B8E0FB22980009058F5 /* GTMNSScanner+JSON.h */,
8BD35B8F0FB22980009058F5 /* GTMNSScanner+JSON.m */,
8BD35B900FB22980009058F5 /* GTMNSScanner+JSONTest.m */,
- 8BCB59EE11C00ED6009B6C40 /* GTMNSScanner+Unsigned.h */,
- 8BCB59EF11C00ED6009B6C40 /* GTMNSScanner+Unsigned.m */,
- 8BCB59F211C00EF6009B6C40 /* GTMNSScanner+UnsignedTest.m */,
F42597760E23FE3A003BEA3E /* GTMNSString+FindFolder.h */,
F42597770E23FE3A003BEA3E /* GTMNSString+FindFolder.m */,
F42597780E23FE3A003BEA3E /* GTMNSString+FindFolderTest.m */,
@@ -1600,9 +808,6 @@
F43E4E5E0D4E5EC90041161F /* GTMNSData+zlib.h */,
F43E4E5F0D4E5EC90041161F /* GTMNSData+zlib.m */,
F43E4E600D4E5EC90041161F /* GTMNSData+zlibTest.m */,
- 8B6F32040DA34A1B0052CA40 /* GTMObjC2Runtime.m */,
- 8B6F32050DA34A1B0052CA40 /* GTMObjC2RuntimeTest.m */,
- 8B6F32060DA34A1B0052CA40 /* GTMObjC2Runtime.h */,
F48FE2910D198D24009257D2 /* GTMObjectSingleton.h */,
F9FD945E0E1D30F80005867E /* GTMPath.h */,
F9FD945C0E1D30F80005867E /* GTMPath.m */,
@@ -1626,16 +831,6 @@
F48FE2920D198D24009257D2 /* GTMSystemVersion.h */,
F48FE2930D198D24009257D2 /* GTMSystemVersion.m */,
F48FE2E10D198E4C009257D2 /* GTMSystemVersionTest.m */,
- 10A4028D0F44DB2B003B511C /* GTMTransientRootProxyTest.m */,
- 10A4028E0F44DB2B003B511C /* GTMTransientRootProxy.m */,
- 10A4028F0F44DB2B003B511C /* GTMTransientRootProxy.h */,
- 108930840F4CCB380018D4A0 /* GTMTransientRootPortProxyTest.m */,
- 10998EF20F4B5D1A007F179D /* GTMTransientRootPortProxy.m */,
- 10998EF30F4B5D1A007F179D /* GTMTransientRootPortProxy.h */,
- 8B3AA9EF0E033E23007E31B5 /* GTMValidatingContainers.h */,
- 8B3AA9F00E033E23007E31B5 /* GTMValidatingContainers.m */,
- 8B3AA9F70E033E5F007E31B5 /* GTMValidatingContainersTest.m */,
- F428670012673C1D0090FE0F /* TestData */,
);
path = Foundation;
sourceTree = "<group>";
@@ -1643,32 +838,19 @@
F48FE2770D198CEA009257D2 /* UnitTesting */ = {
isa = PBXGroup;
children = (
- 8B55479A0DB3B7A50014CC1C /* GTMAppKit+UnitTesting.h */,
- 8B55479B0DB3B7A50014CC1C /* GTMAppKit+UnitTesting.m */,
8B17FD18117638F400E7A908 /* GTMAppKitUnitTestingUtilities.m */,
8B17FD19117638F400E7A908 /* GTMAppKitUnitTestingUtilities.h */,
- 8B726BD10D91C0860090C251 /* GTMCALayer+UnitTesting.h */,
- 8B726BD00D91C0860090C251 /* GTMCALayer+UnitTesting.m */,
- 8B7DCBE10DFF18720017E983 /* GTMDevLogUnitTestingBridge.m */,
8B17FD13117638D500E7A908 /* GTMFoundationUnitTestingUtilities.m */,
8B17FD14117638D500E7A908 /* GTMFoundationUnitTestingUtilities.h */,
- 8B1A14EA0D900BC800CA1E8E /* GTMNSObject+BindingUnitTesting.h */,
- 8B1A14E90D900BC800CA1E8E /* GTMNSObject+BindingUnitTesting.m */,
- F48FE29B0D198D36009257D2 /* GTMNSObject+UnitTesting.h */,
- F48FE29C0D198D36009257D2 /* GTMNSObject+UnitTesting.m */,
F48FE29F0D198D36009257D2 /* GTMSenTestCase.h */,
8B7DCE180DFF39850017E983 /* GTMSenTestCase.m */,
F47466651296F19E0022C1FB /* GTMSenTestCaseTest.m */,
8B3590150E8190FA0041E21C /* GTMTestTimer.h */,
8B35901A0E8191750041E21C /* GTMTestTimerTest.m */,
- 8B7DCBF00DFF1A610017E983 /* GTMUnitTestDevLog.h */,
- 8B7DCBEC0DFF1A4F0017E983 /* GTMUnitTestDevLog.m */,
- 8B7AD4AD0DABBFEE00B84F4A /* GTMUnitTestingBindingTest.m */,
- 8B45A2E00DA51ABC001148C5 /* GTMUnitTestingTest.h */,
- 8B45A2E10DA51ABC001148C5 /* GTMUnitTestingTest.m */,
- 8BC04D140DB0061300C2D1CA /* RunMacOSUnitTests.sh */,
+ 8B2C72E61D9EBB6E0027BD14 /* GTMUnitTestDevLog.h */,
+ 8B2C72E71D9EBB6E0027BD14 /* GTMUnitTestDevLog.m */,
+ 8BA983C21D9AE7E6009724B5 /* TestData */,
8B45A2A20DA49C47001148C5 /* GTMUIUnitTestingHarness */,
- F435E46C0DC8F23A0069CDE8 /* TestData */,
);
path = UnitTesting;
sourceTree = "<group>";
@@ -1688,13 +870,10 @@
isa = PBXGroup;
children = (
F48FE2420D197F9A009257D2 /* DebugUnittest.xcconfig */,
- F4CA864C0DB3ACD200B4AB10 /* LoadableBundleGCSupported.xcconfig */,
F48FE2430D197F9A009257D2 /* LoadableBundle.xcconfig */,
F48FE2450D197F9A009257D2 /* ReleaseUnittest.xcconfig */,
F48FE2460D197F9A009257D2 /* SharedLibrary.xcconfig */,
- F4CA864D0DB3ACD200B4AB10 /* SharedLibraryGCSupported.xcconfig */,
F48FE2470D197F9A009257D2 /* StaticLibrary.xcconfig */,
- F4CA864E0DB3ACD200B4AB10 /* StaticLibraryGCSupported.xcconfig */,
);
path = Target;
sourceTree = "<group>";
@@ -1709,7 +888,6 @@
8B6F31F10DA347720052CA40 /* GTMMethodCheckTest.m */,
8B6F4B610E8856CA00425D9F /* GTMDebugThreadValidation.h */,
8B6F4B620E8856CA00425D9F /* GTMDebugThreadValidation.m */,
- 8BE839A80E8AF72500C611B0 /* GTMDebugThreadValidationTest.m */,
);
path = DebugUtils;
sourceTree = "<group>";
@@ -1722,9 +900,7 @@
buildActionMask = 2147483647;
files = (
0B1B9B8710FECD870084EE4B /* GTMStringEncoding.h in Headers */,
- 0BFAD4C8104D06EF002BEB27 /* GTMNSDictionary+CaseInsensitive.h in Headers */,
F93207DE0F4B82DB005F37EA /* GTMSQLite.h in Headers */,
- F42E09490D199BBF00D5DDE0 /* GTMDelegatingTableColumn.h in Headers */,
F42E094C0D199BBF00D5DDE0 /* GTMGeometryUtils.h in Headers */,
F42E094F0D199BBF00D5DDE0 /* GTMNSBezierPath+RoundRect.h in Headers */,
F42E09510D199BBF00D5DDE0 /* GTMNSString+HTML.h in Headers */,
@@ -1732,71 +908,47 @@
F42E09540D199BBF00D5DDE0 /* GTMSystemVersion.h in Headers */,
F43DCDCD0D4796C600959A62 /* GTMLoginItems.h in Headers */,
F428FF030D48E55E00382ED1 /* GTMNSBezierPath+CGPath.h in Headers */,
- F47F1C120D490BC000925B8F /* GTMNSBezierPath+Shading.h in Headers */,
- F47F1C750D490E5C00925B8F /* GTMShading.h in Headers */,
- F47F1D300D4914AD00925B8F /* GTMCalculatedRange.h in Headers */,
- F43E447A0D4918B20041161F /* GTMLinearRGBShading.h in Headers */,
F43E4C280D4E361D0041161F /* GTMNSString+XML.h in Headers */,
- F43E4DD90D4E56320041161F /* GTMNSEnumerator+Filter.h in Headers */,
F43E4E610D4E5EC90041161F /* GTMNSData+zlib.h in Headers */,
F437F55D0D50BC0A00F5C3A4 /* GTMRegex.h in Headers */,
F47A79880D746EE9002302AB /* GTMScriptRunner.h in Headers */,
F413908F0D75F63C00F72B31 /* GTMNSFileManager+Path.h in Headers */,
F424F75F0D9AF019000B87EF /* GTMDefines.h in Headers */,
F4FF22780D9D4835003880AC /* GTMDebugSelectorValidation.h in Headers */,
- F4CA854F0DAFAAF600B4AB10 /* GTMObjC2Runtime.h in Headers */,
8BC04CD80DB003D800C2D1CA /* GTMMethodCheck.h in Headers */,
F431221D0DD4E3B800F45252 /* GTMStackTrace.h in Headers */,
33C372A60DD8A88500E97817 /* GTMNSString+URLArguments.h in Headers */,
33C374380DD8D44800E97817 /* GTMNSDictionary+URLArguments.h in Headers */,
- 8BE281B00DEC7E930035B3F8 /* GTMNSAppleScript+Handler.h in Headers */,
- 8BE281B10DEC7E930035B3F8 /* GTMNSAppleEventDescriptor+Handler.h in Headers */,
- 8BE281B20DEC7E930035B3F8 /* GTMNSAppleEventDescriptor+Foundation.h in Headers */,
- 8BE283730DED13AB0035B3F8 /* GTMFourCharCode.h in Headers */,
F41A6F820E02EC3600788A6C /* GTMSignalHandler.h in Headers */,
- 8B3AA9F10E033E23007E31B5 /* GTMValidatingContainers.h in Headers */,
F9FD94CD0E1D50450005867E /* GTMPath.h in Headers */,
F42597480E23AA57003BEA3E /* GTMNSString+Replace.h in Headers */,
F42597790E23FE3A003BEA3E /* GTMNSString+FindFolder.h in Headers */,
- 8B1801A30E2533D500280961 /* GTMLargeTypeWindow.h in Headers */,
F92B9FA80E2E64B900A2FE61 /* GTMLogger.h in Headers */,
F92B9FA90E2E64BC00A2FE61 /* GTMLogger+ASL.h in Headers */,
F95803FA0E2FB08F0049A088 /* GTMLoggerRingBufferWriter.h in Headers */,
- 8B1B49180E5F8E2100A08972 /* GTMExceptionalInlines.h in Headers */,
- 7F3EB38E0E5E09C700A7A75E /* GTMNSImage+Scaling.h in Headers */,
8B3590160E8190FA0041E21C /* GTMTestTimer.h in Headers */,
8B6F4B630E8856CA00425D9F /* GTMDebugThreadValidation.h in Headers */,
F41711350ECDFBD500B9B276 /* GTMLightweightProxy.h in Headers */,
629445400EDDF647009295EA /* GTMNSArray+Merge.h in Headers */,
- F4A420EF0EDDF8E000397A11 /* GTMHotKeyTextField.h in Headers */,
8B3E292F0EEB53F8000681D8 /* GTMCarbonEvent.h in Headers */,
F49FA8440EEF2AB700077669 /* GTMFileSystemKQueue.h in Headers */,
8B8EC87D0EF17C270044D13F /* GTMNSFileManager+Carbon.h in Headers */,
- 8BA01B5E0F144BD800926923 /* GTMNSWorkspace+Running.h in Headers */,
8B6C15930F356E6400E51E5D /* GTMNSObject+KeyValueObserving.h in Headers */,
- 1012DF560F4252BD004794DB /* GTMAbstractDOListener.h in Headers */,
7F511DF90F4B0378009F41B6 /* GTMNSColor+Luminance.h in Headers */,
- 10998E920F4B5952007F179D /* GTMTransientRootProxy.h in Headers */,
- 10998EF50F4B5D1A007F179D /* GTMTransientRootPortProxy.h in Headers */,
8B40994B0F93C5CC00DF540E /* GTMUILocalizer.h in Headers */,
8BFE13B60FB0F2C0001BE894 /* GTMABAddressBook.h in Headers */,
8BD35B910FB22980009058F5 /* GTMNSScanner+JSON.h in Headers */,
8207B89B0FEA7A9E008A527B /* GTMWindowSheetController.h in Headers */,
F43C7A571021FAA300ABF03C /* GTMUILocalizerAndLayoutTweaker.h in Headers */,
7F97DB32104EBCA0004DDDEE /* GTMFadeTruncatingTextFieldCell.h in Headers */,
- 7FF768E41051B17E00D34F4B /* GTMNSImage+SearchCache.h in Headers */,
F4C6248B109753960069CADD /* GTMIBArray.h in Headers */,
8B158ADE10A8C42000C93125 /* GTMNSAnimation+Duration.h in Headers */,
8BF2555310F65B56000490C8 /* GTMTypeCasting.h in Headers */,
- 8BDB8A991152E1B200C411B1 /* GTMNSAnimatablePropertyContainer.h in Headers */,
8B21DE56117E5CB7000E004F /* GTMLocalizedString.h in Headers */,
- 8BB7802E11B6C4EA00AB31AF /* GTMGoogleSearch.h in Headers */,
- 8BCB59F011C00ED6009B6C40 /* GTMNSScanner+Unsigned.h in Headers */,
8B29080A11F8E1670064F50F /* GTMNSFileHandle+UniqueName.h in Headers */,
8B414E891226FB1000D0064F /* GTMServiceManagement.h in Headers */,
8BBD1F8C1519258A003152F0 /* GTMNSThread+Blocks.h in Headers */,
8BF2368F13CF67CB00F3FD82 /* GTMKeyValueAnimation.h in Headers */,
- F42866B81267340A0090FE0F /* GTMURITemplate.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -1810,18 +962,16 @@
8B45A0230DA4696C001148C5 /* Resources */,
8B45A0240DA4696C001148C5 /* Sources */,
8B45A0250DA4696C001148C5 /* Frameworks */,
- 8B45A0260DA4696C001148C5 /* ShellScript */,
);
buildRules = (
);
dependencies = (
- 8B45A2D40DA51A0E001148C5 /* PBXTargetDependency */,
8B7DCBA40DFF0EFB0017E983 /* PBXTargetDependency */,
);
name = "UnitTest-UnitTesting";
productName = "UnitTest-UnitTesting";
- productReference = 8B45A0280DA4696C001148C5 /* UnitTest-UnitTesting.octest */;
- productType = "com.apple.product-type.bundle";
+ productReference = 8B45A0280DA4696C001148C5 /* UnitTest-UnitTesting.xctest */;
+ productType = "com.apple.product-type.bundle.unit-test";
};
8B45A2890DA49B99001148C5 /* UIUnitTestingHarness */ = {
isa = PBXNativeTarget;
@@ -1863,7 +1013,6 @@
8BFE13C10FB0F2D8001BE894 /* Resources */,
8BFE13D70FB0F2D8001BE894 /* Sources */,
8BFE13EC0FB0F2D8001BE894 /* Frameworks */,
- 8BFE13F10FB0F2D8001BE894 /* ShellScript */,
);
buildRules = (
);
@@ -1872,18 +1021,16 @@
);
name = "UnitTest-AddressBook";
productName = "UnitTest-AppKit";
- productReference = 8BFE13FC0FB0F2D8001BE894 /* UnitTest-AddressBook.octest */;
- productType = "com.apple.product-type.bundle";
+ productReference = 8BFE13FC0FB0F2D8001BE894 /* UnitTest-AddressBook.xctest */;
+ productType = "com.apple.product-type.bundle.unit-test";
};
F42E08110D19987200D5DDE0 /* UnitTest-Foundation */ = {
isa = PBXNativeTarget;
buildConfigurationList = F42E081E0D19987200D5DDE0 /* Build configuration list for PBXNativeTarget "UnitTest-Foundation" */;
buildPhases = (
- 8B3345CC0DBF8A95009FD32C /* AppleScript */,
F42E08140D19987200D5DDE0 /* Resources */,
F42E08160D19987200D5DDE0 /* Sources */,
F42E081C0D19987200D5DDE0 /* Frameworks */,
- F42E081D0D19987200D5DDE0 /* ShellScript */,
);
buildRules = (
);
@@ -1893,8 +1040,8 @@
);
name = "UnitTest-Foundation";
productName = "UnitTest-AppKit";
- productReference = F42E08210D19987200D5DDE0 /* UnitTest-Foundation.octest */;
- productType = "com.apple.product-type.bundle";
+ productReference = F42E08210D19987200D5DDE0 /* UnitTest-Foundation.xctest */;
+ productType = "com.apple.product-type.bundle.unit-test";
};
F42E086C0D199A5B00D5DDE0 /* GTM */ = {
isa = PBXNativeTarget;
@@ -1922,18 +1069,16 @@
F48FE25F0D198C1E009257D2 /* Resources */,
F48FE2600D198C1E009257D2 /* Sources */,
F48FE2610D198C1E009257D2 /* Frameworks */,
- F48FE2620D198C1E009257D2 /* ShellScript */,
);
buildRules = (
);
dependencies = (
- 8BAA9A350F7AF50600DF4F12 /* PBXTargetDependency */,
F42E08770D199A9B00D5DDE0 /* PBXTargetDependency */,
);
name = "UnitTest-AppKit";
productName = "UnitTest-AppKit";
- productReference = F48FE2640D198C1E009257D2 /* UnitTest-AppKit.octest */;
- productType = "com.apple.product-type.bundle";
+ productReference = F48FE2640D198C1E009257D2 /* UnitTest-AppKit.xctest */;
+ productType = "com.apple.product-type.bundle.unit-test";
};
/* End PBXNativeTarget section */
@@ -1942,7 +1087,7 @@
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = NO;
- LastUpgradeCheck = 0430;
+ LastUpgradeCheck = 0800;
};
buildConfigurationList = 1DEB918108733D990010E9CD /* Build configuration list for PBXProject "GTM" */;
compatibilityVersion = "Xcode 3.1";
@@ -1977,7 +1122,6 @@
projectRoot = "";
targets = (
F42E086C0D199A5B00D5DDE0 /* GTM */,
- F472042B0D33BEAF00E9F378 /* All UnitTests */,
8BFE13BC0FB0F2D8001BE894 /* UnitTest-AddressBook */,
F48FE2630D198C1E009257D2 /* UnitTest-AppKit */,
F42E08110D19987200D5DDE0 /* UnitTest-Foundation */,
@@ -1993,21 +1137,7 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 8B45A2DF0DA51A7E001148C5 /* GTMUnitTestingTest.nib in Resources */,
- 8B45A5F80DA5EB9F001148C5 /* GTMUnitTestingWindow.gtmUTState in Resources */,
- 8B45A5F90DA5EB9F001148C5 /* GTMUnitTestingTestApp.gtmUTState in Resources */,
- 8B45A6BB0DA67DD5001148C5 /* GTMUnitTestingImage.gtmUTState in Resources */,
- 8BEEA90D0DA7446300894774 /* GTMUnitTestingImage.tiff in Resources */,
- 8BEEA90E0DA7446300894774 /* GTMUnitTestingWindow.tiff in Resources */,
- 8BEEA90F0DA7446300894774 /* GTMUnitTestingView.tiff in Resources */,
- 84B91B8B0EA3CC2E0087500F /* GTMUnitTestingImage.10.6.tiff in Resources */,
- 84B91B8C0EA3CC2E0087500F /* GTMUnitTestingWindow.10.6.tiff in Resources */,
- 8B2789960EF855FB00D68C01 /* GTMUnitTestingWindow.10.5.6.tiff in Resources */,
- F48D000D0FE994C900428D0B /* GTMUnitTestingWindow.10.5.7.tiff in Resources */,
- F42F50F91057E99200BFC735 /* GTMUnitTestingWindow.10.5.8.tiff in Resources */,
- F4A486ED1097EA0A00513483 /* GTMUnitTestingView.10.6.tiff in Resources */,
- 8BA9FAF9119CA2E300E264C3 /* GTMUnitTestingTestApp.10.6.gtmUTState in Resources */,
- 8BA9FB23119CA3F200E264C3 /* GTMUnitTestingWindow.10.6.gtmUTState in Resources */,
+ 8BA983C81D9AE7E6009724B5 /* GTMUnitTestingTest.nib in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -2034,8 +1164,6 @@
buildActionMask = 2147483647;
files = (
8BC8520E127A19B60046E0FB /* GTMServiceManagementTestingHarness in Resources */,
- F428670312673C490090FE0F /* GTMURITemplateExtraTests.json in Resources */,
- F428670412673C490090FE0F /* GTMURITemplateRFCTests.json in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -2043,7 +1171,6 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 8B0E65510FD80D5E00461C4A /* GTMHotKeyTextField.strings in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -2051,192 +1178,23 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 8B7AD49A0DABBB5800B84F4A /* GTMNSBezierPath+ShadingTest.tiff in Resources */,
- 8B7AD49B0DABBB5800B84F4A /* GTMNSBezierPath+CGPathTest.tiff in Resources */,
- 8B7AD49C0DABBB5800B84F4A /* GTMNSBezierPath+RoundRectTest.tiff in Resources */,
- 8BE869730DBE89C100749827 /* GTMNSBezierPath+RoundRectTest.x86_64.tiff in Resources */,
- F435DE7C0DC0B6580069CDE8 /* GTMNSBezierPath+CGPathTest.ppc64.tiff in Resources */,
- F435DE7D0DC0B6580069CDE8 /* GTMNSBezierPath+CGPathTest.x86_64.tiff in Resources */,
- F435DE8B0DC0B7620069CDE8 /* GTMNSBezierPath+RoundRectTest.ppc64.tiff in Resources */,
- 8B1801AE0E25341B00280961 /* GTMLargeTypeWindowImageTest.gtmUTState in Resources */,
- 8B1801B20E25341B00280961 /* GTMLargeTypeWindowLongTextTest.gtmUTState in Resources */,
- 8B1801B30E25341B00280961 /* GTMLargeTypeWindowShortTextTest.gtmUTState in Resources */,
- 8B1802420E25592200280961 /* GTMLargeTypeWindowMediumTextTest.gtmUTState in Resources */,
- 7F3EB5540E5F0B0400A7A75E /* GTMUnitTestingImage.tiff in Resources */,
- 8BAA9B570F7B4C2400DF4F12 /* GTMHotKeyTextFieldTest.xib in Resources */,
8B409E8C0F952C2C00DF540E /* GTMUILocalizerTestWindow.xib in Resources */,
8B409E9A0F952CE600DF540E /* Localizable.strings in Resources */,
- 8B409EC40F9530C200DF540E /* GTMUILocalizerWindow1State.gtmUTState in Resources */,
- 8B409EE90F95325000DF540E /* GTMUILocalizerWindow2State.gtmUTState in Resources */,
- 8B409EF40F95331500DF540E /* GTMUILocalizerMenuState.gtmUTState in Resources */,
8B409F060F95341E00DF540E /* GTMUILocalizerTestView.xib in Resources */,
- 8B409F130F95352500DF540E /* GTMUILocalizerView2State.gtmUTState in Resources */,
- 8B409F140F95352500DF540E /* GTMUILocalizerView1State.gtmUTState in Resources */,
F42E2C84102B14B0004DF054 /* GTMUILocalizerAndLayoutTweakerTest1.xib in Resources */,
- F42E2CFF102B21EE004DF054 /* GTMUILocalizerAndLayoutTweakerTest1-0.tiff in Resources */,
- F42E2D00102B21EE004DF054 /* GTMUILocalizerAndLayoutTweakerTest1-1.tiff in Resources */,
- F42E2D01102B21EE004DF054 /* GTMUILocalizerAndLayoutTweakerTest1-2.tiff in Resources */,
F42E2D08102B2283004DF054 /* GTMUILocalizerAndLayoutTweakerTest2.xib in Resources */,
- F42E2D24102B24E5004DF054 /* GTMUILocalizerAndLayoutTweakerTest2-0.tiff in Resources */,
- F42E2D25102B24E5004DF054 /* GTMUILocalizerAndLayoutTweakerTest2-1.tiff in Resources */,
- F42E2D26102B24E5004DF054 /* GTMUILocalizerAndLayoutTweakerTest2-2.tiff in Resources */,
F4FC15DD1046AD66000AB7BC /* GTMUILocalizerAndLayoutTweakerTest3.xib in Resources */,
- F4FC16031046B581000AB7BC /* GTMUILocalizerAndLayoutTweakerTest3-0.tiff in Resources */,
- F4FC16041046B581000AB7BC /* GTMUILocalizerAndLayoutTweakerTest3-1.tiff in Resources */,
- F4FC16051046B581000AB7BC /* GTMUILocalizerAndLayoutTweakerTest3-2.tiff in Resources */,
- F4FC16061046B581000AB7BC /* GTMUILocalizerAndLayoutTweakerTest3-3.tiff in Resources */,
- 7F97DBA4104ED861004DDDEE /* GTMFadeTruncatingTextFieldCellTest1.tiff in Resources */,
- 7F97DBA5104ED861004DDDEE /* GTMFadeTruncatingTextFieldCellTest2.tiff in Resources */,
- F4FC322D104EAA11000AB7BC /* GTMUILocalizerWindow3State.gtmUTState in Resources */,
F4FC324D104EBD70000AB7BC /* GTMUILocalizerAndLayoutTweakerTest4.xib in Resources */,
- F4FC327D104EC6D5000AB7BC /* GTMUILocalizerAndLayoutTweakerTest4-0.tiff in Resources */,
- F4FC327E104EC6D5000AB7BC /* GTMUILocalizerAndLayoutTweakerTest4-1.tiff in Resources */,
- F4FC327F104EC6D5000AB7BC /* GTMUILocalizerAndLayoutTweakerTest4-2.tiff in Resources */,
- F4FC333D104EE94F000AB7BC /* GTMUILocalizerAndLayoutTweakerTest4-0.10_4_SDK.tiff in Resources */,
- F4FC333E104EE94F000AB7BC /* GTMUILocalizerAndLayoutTweakerTest4-1.10_4_SDK.tiff in Resources */,
- F4FC333F104EE94F000AB7BC /* GTMUILocalizerAndLayoutTweakerTest4-2.10_4_SDK.tiff in Resources */,
- 7F6840D2105375A70057F4FA /* GTMUILocalizerTestWindow_10_4.xib in Resources */,
- 7F4C015F1055AD4200F88238 /* GTMUILocalizerWindow1State.10_4_SDK.gtmUTState in Resources */,
F4C0B9C3108E27EE002FC8E4 /* GTMUILocalizerAndLayoutTweakerTest5.xib in Resources */,
- F4C0B9DA108E3142002FC8E4 /* GTMUILocalizerAndLayoutTweakerTest5-0.tiff in Resources */,
- F4C0B9DB108E3142002FC8E4 /* GTMUILocalizerAndLayoutTweakerTest5-1.tiff in Resources */,
- F4C0B9DC108E3142002FC8E4 /* GTMUILocalizerAndLayoutTweakerTest5-2.tiff in Resources */,
F4C6248A109753960069CADD /* GTMIBArrayTest.xib in Resources */,
- F4AA2CB2109B37650025C956 /* GTMUILocalizerAndLayoutTweakerTest3-4.tiff in Resources */,
- F4C58CC310BAD75200651068 /* GTMFadeTruncatingTextFieldCellTest3.tiff in Resources */,
- F4C58CC410BAD75200651068 /* GTMFadeTruncatingTextFieldCellTest4.tiff in Resources */,
F4FB44141120799A00F2FF9D /* GTMUILocalizerAndLayoutTweakerTest6.xib in Resources */,
- F4FB445311207FE600F2FF9D /* GTMUILocalizerAndLayoutTweakerTest6-tab0-0.tiff in Resources */,
- F4FB445411207FE600F2FF9D /* GTMUILocalizerAndLayoutTweakerTest6-tab0-1.tiff in Resources */,
- F4FB445511207FE600F2FF9D /* GTMUILocalizerAndLayoutTweakerTest6-tab0-2.tiff in Resources */,
- F4FB445611207FE600F2FF9D /* GTMUILocalizerAndLayoutTweakerTest6-tab1-0.tiff in Resources */,
- F4FB445711207FE600F2FF9D /* GTMUILocalizerAndLayoutTweakerTest6-tab1-1.tiff in Resources */,
- F4FB445811207FE600F2FF9D /* GTMUILocalizerAndLayoutTweakerTest6-tab1-2.tiff in Resources */,
F493E3591146CD97005F994E /* GTMUILocalizerAndLayoutTweakerTest7.xib in Resources */,
- F43A43531146DCC70048A9DC /* GTMUILocalizerAndLayoutTweakerTest7-Min-0.tiff in Resources */,
- F43A43541146DCC70048A9DC /* GTMUILocalizerAndLayoutTweakerTest7-Min-1.tiff in Resources */,
- F43A43551146DCC70048A9DC /* GTMUILocalizerAndLayoutTweakerTest7-Min-2.tiff in Resources */,
- F43A43561146DCC70048A9DC /* GTMUILocalizerAndLayoutTweakerTest7-Min-3.tiff in Resources */,
- F43A43571146DCC70048A9DC /* GTMUILocalizerAndLayoutTweakerTest7-NoMin-0.tiff in Resources */,
- F43A43581146DCC70048A9DC /* GTMUILocalizerAndLayoutTweakerTest7-NoMin-1.tiff in Resources */,
- F43A43591146DCC70048A9DC /* GTMUILocalizerAndLayoutTweakerTest7-NoMin-2.tiff in Resources */,
- F43A435A1146DCC70048A9DC /* GTMUILocalizerAndLayoutTweakerTest7-NoMin-3.tiff in Resources */,
- 8B21BE9211532CDC00DD2686 /* GTMNSAnimatablePropertyContainerTest.xib in Resources */,
- 8BA9FB8F119CAE7200E264C3 /* GTMUILocalizerAndLayoutTweakerTest4-1.10.6.tiff in Resources */,
- 8BA9FB95119CAEDE00E264C3 /* GTMUILocalizerAndLayoutTweakerTest4-0.10.6.tiff in Resources */,
- 8BA9FB9C119CAF0200E264C3 /* GTMUILocalizerAndLayoutTweakerTest4-2.10.6.tiff in Resources */,
- 8BA9FBA1119CAF6600E264C3 /* GTMNSBezierPath+ShadingTest.10.6.tiff in Resources */,
- 8BA9FBA3119CAF9500E264C3 /* GTMNSBezierPath+RoundRectTest.10.6.tiff in Resources */,
- 8BA9FBA7119CB00000E264C3 /* GTMNSBezierPath+RoundRectTest.10.6.x86_64.tiff in Resources */,
- 8BA9FBAB119CB06500E264C3 /* GTMLargeTypeWindowShortTextTest.10.6.gtmUTState in Resources */,
- 8BA9FBAD119CB08200E264C3 /* GTMLargeTypeWindowMediumTextTest.10.6.gtmUTState in Resources */,
- 8BA9FBBB119CB0C400E264C3 /* GTMLargeTypeWindowLongTextTest.10.6.gtmUTState in Resources */,
- 8BA9FBBD119CB14C00E264C3 /* GTMUILocalizerAndLayoutTweakerTest6-tab0-0.10.6.tiff in Resources */,
- 8BA9FBC0119CB17600E264C3 /* GTMUILocalizerAndLayoutTweakerTest7-NoMin-2.10.6.tiff in Resources */,
- 8BA9FBC8119CB19A00E264C3 /* GTMUILocalizerAndLayoutTweakerTest7-Min-0.10.6.tiff in Resources */,
- 8BA9FBDB119CB1E600E264C3 /* GTMUILocalizerAndLayoutTweakerTest7-NoMin-0.10.6.tiff in Resources */,
- 8BA9FBDE119CB20A00E264C3 /* GTMUILocalizerAndLayoutTweakerTest3-0.10.6.tiff in Resources */,
- 8BA9FBE1119CB23000E264C3 /* GTMUILocalizerAndLayoutTweakerTest3-1.10.6.tiff in Resources */,
- 8BA9FBE4119CB24D00E264C3 /* GTMUILocalizerAndLayoutTweakerTest3-2.10.6.tiff in Resources */,
- 8BA9FBE7119CB26A00E264C3 /* GTMUILocalizerAndLayoutTweakerTest7-Min-1.10.6.tiff in Resources */,
- 8BA9FBEA119CB28500E264C3 /* GTMUILocalizerAndLayoutTweakerTest7-Min-2.10.6.tiff in Resources */,
- 8BA9FBED119CB2A400E264C3 /* GTMUILocalizerAndLayoutTweakerTest7-Min-3.10.6.tiff in Resources */,
- 8BA9FBF0119CB2BF00E264C3 /* GTMUILocalizerAndLayoutTweakerTest7-NoMin-1.10.6.tiff in Resources */,
- 8BA9FBF3119CB2D600E264C3 /* GTMUILocalizerAndLayoutTweakerTest7-NoMin-3.10.6.tiff in Resources */,
- 8BA9FBF6119CB2EF00E264C3 /* GTMUILocalizerAndLayoutTweakerTest1-0.10.6.tiff in Resources */,
- 8BA9FBFD119CB30D00E264C3 /* GTMUILocalizerAndLayoutTweakerTest1-1.10.6.tiff in Resources */,
- 8BA9FC00119CB32500E264C3 /* GTMUILocalizerAndLayoutTweakerTest1-2.10.6.tiff in Resources */,
- 8BA9FC44119CB36100E264C3 /* GTMUILocalizerAndLayoutTweakerTest3-3.10.6.tiff in Resources */,
- 8BA9FC47119CB37F00E264C3 /* GTMUILocalizerAndLayoutTweakerTest2-0.10.6.tiff in Resources */,
- 8BA9FC5D119CB39D00E264C3 /* GTMUILocalizerAndLayoutTweakerTest2-1.10.6.tiff in Resources */,
- 8BA9FC60119CB3B500E264C3 /* GTMUILocalizerAndLayoutTweakerTest2-2.10.6.tiff in Resources */,
- 8BA9FC63119CB3CD00E264C3 /* GTMUILocalizerAndLayoutTweakerTest3-4.10.6.tiff in Resources */,
- 8BA9FC66119CB3E200E264C3 /* GTMUILocalizerAndLayoutTweakerTest5-0.10.6.tiff in Resources */,
- 8BA9FC69119CB3F900E264C3 /* GTMUILocalizerAndLayoutTweakerTest5-1.10.6.tiff in Resources */,
- 8BA9FC6C119CB43F00E264C3 /* GTMUILocalizerAndLayoutTweakerTest5-2.10.6.tiff in Resources */,
- 8BA9FC6F119CB46000E264C3 /* GTMUILocalizerAndLayoutTweakerTest6-tab0-1.10.6.tiff in Resources */,
- 8BA9FC72119CB47900E264C3 /* GTMUILocalizerAndLayoutTweakerTest6-tab0-2.10.6.tiff in Resources */,
- 8BA9FC75119CB48F00E264C3 /* GTMUILocalizerAndLayoutTweakerTest6-tab1-0.10.6.tiff in Resources */,
- 8BA9FC78119CB4A100E264C3 /* GTMUILocalizerAndLayoutTweakerTest6-tab1-1.10.6.tiff in Resources */,
- 8BA9FC7B119CB4B300E264C3 /* GTMUILocalizerAndLayoutTweakerTest6-tab1-2.10.6.tiff in Resources */,
- 8BA7148111B57EC700EB4781 /* GTMUILocalizerAndLayoutTweakerTest4-0.10_4_SDK.10.6.tiff in Resources */,
- 8BA7148211B57EC700EB4781 /* GTMUILocalizerAndLayoutTweakerTest4-1.10_4_SDK.10.6.tiff in Resources */,
- 8BA7148311B57EC700EB4781 /* GTMUILocalizerAndLayoutTweakerTest4-2.10_4_SDK.10.6.tiff in Resources */,
- 8B4BD7E71200E5EA009C7060 /* GTMUILocalizerWindow3State.10_4_SDK.gtmUTState in Resources */,
- B71B91E21332CD680039B2CB /* GTMFadeTruncatingTextFieldCellTest5.tiff in Resources */,
- B71B91E31332CD680039B2CB /* GTMFadeTruncatingTextFieldCellTest6.tiff in Resources */,
- B71B92371332DA380039B2CB /* GTMFadeTruncatingTextFieldCellTest7.tiff in Resources */,
- B7764E80133906B600AFDC7D /* GTMFadeTruncatingTextFieldCellTest8.tiff in Resources */,
- F49DCD271460937A00506616 /* GTMUILocalizerAndLayoutTweakerTest4-0.10.6.8.tiff in Resources */,
- F49DCD281460937A00506616 /* GTMUILocalizerAndLayoutTweakerTest4-1.10.6.8.tiff in Resources */,
- F49DCD291460937A00506616 /* GTMUILocalizerAndLayoutTweakerTest4-2.10.6.8.tiff in Resources */,
- F49DCD60146096D300506616 /* GTMUILocalizerAndLayoutTweakerTest4-0.10_4_SDK.10.6.8.tiff in Resources */,
- F49DCD61146096D300506616 /* GTMUILocalizerAndLayoutTweakerTest4-1.10_4_SDK.10.6.8.tiff in Resources */,
- F49DCD62146096D300506616 /* GTMUILocalizerAndLayoutTweakerTest4-2.10_4_SDK.10.6.8.tiff in Resources */,
- F450A6BF146C2A6E001B3B1F /* GTMUILocalizerAndLayoutTweakerTest4-0.10_4_SDK.10.6.7.tiff in Resources */,
- F450A6C0146C2A6E001B3B1F /* GTMUILocalizerAndLayoutTweakerTest4-1.10_4_SDK.10.6.7.tiff in Resources */,
- F450A6C1146C2A6E001B3B1F /* GTMUILocalizerAndLayoutTweakerTest4-2.10_4_SDK.10.6.7.tiff in Resources */,
- F450A749146D7206001B3B1F /* GTMUILocalizerAndLayoutTweakerTest4-0.10.6.7.tiff in Resources */,
- F450A74A146D7206001B3B1F /* GTMUILocalizerAndLayoutTweakerTest4-1.10.6.7.tiff in Resources */,
- F450A74B146D7206001B3B1F /* GTMUILocalizerAndLayoutTweakerTest4-2.10.6.7.tiff in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
- 8B45A0260DA4696C001148C5 /* ShellScript */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputPaths = (
- );
- outputPaths = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "# Run the unit tests in this test bundle.\n# Set OTHER_TEST_FLAGS=\"-SenTest NameOfTestClass\" or OTHER_TEST_FLAGS=\"-SenTest NameOfTestClass/NameOfTest\" if you want to only test a limited amount.\nGTM_REMOVE_TARGET_GCOV_ONLY=1 GTM_ONE_TEST_AT_A_TIME=1 \"${SRCROOT}/UnitTesting/RunMacOSUnitTests.sh\"";
- };
- 8BFE13F10FB0F2D8001BE894 /* ShellScript */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputPaths = (
- );
- outputPaths = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "# Run the unit tests in this test bundle.\n# Set OTHER_TEST_FLAGS=\"-SenTest NameOfTestClass\" or OTHER_TEST_FLAGS=\"-SenTest NameOfTestClass/NameOfTest\" if you want to only test a limited amount.\nGTM_REMOVE_TARGET_GCOV_ONLY=1 GTM_DISABLE_ZOMBIES=1 \"${SRCROOT}/UnitTesting/RunMacOSUnitTests.sh\"\n";
- };
- F42E081D0D19987200D5DDE0 /* ShellScript */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputPaths = (
- );
- outputPaths = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "# Run the unit tests in this test bundle.\n# Set OTHER_TEST_FLAGS=\"-SenTest NameOfTestClass\" or OTHER_TEST_FLAGS=\"-SenTest NameOfTestClass/NameOfTest\" if you want to only test a limited amount.\nGTM_REMOVE_TARGET_GCOV_ONLY=1 \"${SRCROOT}/UnitTesting/RunMacOSUnitTests.sh\"";
- };
- F48FE2620D198C1E009257D2 /* ShellScript */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputPaths = (
- );
- outputPaths = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "# Run the unit tests in this test bundle.\n# Set OTHER_TEST_FLAGS=\"-SenTest NameOfTestClass\" or OTHER_TEST_FLAGS=\"-SenTest NameOfTestClass/NameOfTest\" if you want to only test a limited amount.\nGTM_REMOVE_TARGET_GCOV_ONLY=1 GTM_ONE_TEST_AT_A_TIME=1 \"${SRCROOT}/UnitTesting/RunMacOSUnitTests.sh\"\n";
- };
F4E4297B10B753C600F28A35 /* ShellScript */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
@@ -2257,14 +1215,9 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 8B45A0D50DA46A57001148C5 /* GTMNSObject+UnitTesting.m in Sources */,
- 8B45A0D60DA46A57001148C5 /* GTMNSObject+BindingUnitTesting.m in Sources */,
8B45A21A0DA46E1D001148C5 /* GTMGeometryUtils.m in Sources */,
- 8B45A2E20DA51ABC001148C5 /* GTMUnitTestingTest.m in Sources */,
- 8B7AD4AE0DABBFEE00B84F4A /* GTMUnitTestingBindingTest.m in Sources */,
- 8B55479C0DB3B7A50014CC1C /* GTMAppKit+UnitTesting.m in Sources */,
+ 8B2C72E81D9EBB6E0027BD14 /* GTMUnitTestDevLog.m in Sources */,
8B7DCBC30DFF0F7F0017E983 /* GTMMethodCheck.m in Sources */,
- 8B7DCBEF0DFF1A4F0017E983 /* GTMUnitTestDevLog.m in Sources */,
8B7DCE1B0DFF39850017E983 /* GTMSenTestCase.m in Sources */,
8B35901B0E8191750041E21C /* GTMTestTimerTest.m in Sources */,
F47466661296F19E0022C1FB /* GTMSenTestCaseTest.m in Sources */,
@@ -2276,11 +1229,8 @@
buildActionMask = 2147483647;
files = (
8B45A2AC0DA49C47001148C5 /* main.m in Sources */,
+ 8B82CEEB1D9B4DA1007182AA /* GTMFoundationUnitTestingUtilities.m in Sources */,
8B7DCBC40DFF0F800017E983 /* GTMMethodCheck.m in Sources */,
- 8B7DCEF10E002C210017E983 /* GTMDevLogUnitTestingBridge.m in Sources */,
- 8B4D7A150E40D79200EFEDD8 /* GTMObjC2Runtime.m in Sources */,
- 8B17FE091176672300E7A908 /* GTMAppKitUnitTestingUtilities.m in Sources */,
- 8B17FE0B1176673400E7A908 /* GTMFoundationUnitTestingUtilities.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -2308,43 +1258,30 @@
files = (
8B6F32160DA34C830052CA40 /* GTMMethodCheckTest.m in Sources */,
8B7DCBC20DFF0F7F0017E983 /* GTMMethodCheck.m in Sources */,
- 8B7DCBEE0DFF1A4F0017E983 /* GTMUnitTestDevLog.m in Sources */,
8B7DCE1A0DFF39850017E983 /* GTMSenTestCase.m in Sources */,
- 8BE839AA0E8AF72E00C611B0 /* GTMDebugThreadValidationTest.m in Sources */,
8B17FD15117638D500E7A908 /* GTMFoundationUnitTestingUtilities.m in Sources */,
8B29078711F8D1BF0064F50F /* GTMNSFileHandle+UniqueName.m in Sources */,
8B414E8B1226FB1800D0064F /* GTMServiceManagementTest.m in Sources */,
- 8BFE6E7A1282371200B5C894 /* GTMAbstractDOListenerTest.m in Sources */,
- 8BFE6E7B1282371200B5C894 /* GTMCalculatedRangeTest.m in Sources */,
- 8BFE6E7C1282371200B5C894 /* GTMExceptionalInlinesTest.m in Sources */,
8BFE6E7D1282371200B5C894 /* GTMFileSystemKQueueTest.m in Sources */,
- 8BFE6E7E1282371200B5C894 /* GTMFourCharCodeTest.m in Sources */,
8BFE6E7F1282371200B5C894 /* GTMGeometryUtilsTest.m in Sources */,
8BFE6E801282371200B5C894 /* GTMLightweightProxyTest.m in Sources */,
8BFE6E811282371200B5C894 /* GTMLocalizedStringTest.m in Sources */,
8BFE6E821282371200B5C894 /* GTMLogger+ASLTest.m in Sources */,
8BFE6E831282371200B5C894 /* GTMLoggerRingBufferWriterTest.m in Sources */,
8BFE6E841282371200B5C894 /* GTMLoggerTest.m in Sources */,
- 8BFE6E851282371200B5C894 /* GTMNSAppleEventDescriptor+FoundationTest.m in Sources */,
- 8BFE6E861282371200B5C894 /* GTMNSAppleEventDescriptor+HandlerTest.m in Sources */,
- 8BFE6E871282371200B5C894 /* GTMNSAppleScript+HandlerTest.m in Sources */,
8BFE6E881282371200B5C894 /* GTMNSArray+MergeTest.m in Sources */,
8BFE6E891282371200B5C894 /* GTMNSData+zlibTest.m in Sources */,
- 8BFE6E8A1282371200B5C894 /* GTMNSDictionary+CaseInsensitiveTest.m in Sources */,
8BFE6E8B1282371200B5C894 /* GTMNSDictionary+URLArgumentsTest.m in Sources */,
- 8BFE6E8C1282371200B5C894 /* GTMNSEnumerator+FilterTest.m in Sources */,
8BFE6E8D1282371200B5C894 /* GTMNSFileHandle+UniqueNameTest.m in Sources */,
8BFE6E8E1282371200B5C894 /* GTMNSFileManager+CarbonTest.m in Sources */,
8BFE6E8F1282371200B5C894 /* GTMNSFileManager+PathTest.m in Sources */,
8BFE6E911282371200B5C894 /* GTMNSObject+KeyValueObservingTest.m in Sources */,
8BFE6E921282371200B5C894 /* GTMNSScanner+JSONTest.m in Sources */,
- 8BFE6E931282371200B5C894 /* GTMNSScanner+UnsignedTest.m in Sources */,
8BFE6E941282371200B5C894 /* GTMNSString+FindFolderTest.m in Sources */,
8BFE6E951282371200B5C894 /* GTMNSString+HTMLTest.m in Sources */,
8BFE6E961282371200B5C894 /* GTMNSString+ReplaceTest.m in Sources */,
8BFE6E971282371200B5C894 /* GTMNSString+URLArgumentsTest.m in Sources */,
8BFE6E981282371200B5C894 /* GTMNSString+XMLTest.m in Sources */,
- 8BFE6E991282371200B5C894 /* GTMObjC2RuntimeTest.m in Sources */,
8BFE6E9A1282371200B5C894 /* GTMPathTest.m in Sources */,
8BFE6E9B1282371200B5C894 /* GTMRegexTest.m in Sources */,
8BFE6E9C1282371200B5C894 /* GTMScriptRunnerTest.m in Sources */,
@@ -2353,10 +1290,6 @@
8BFE6E9F1282371200B5C894 /* GTMStackTraceTest.m in Sources */,
8BFE6EA01282371200B5C894 /* GTMStringEncodingTest.m in Sources */,
8BFE6EA11282371200B5C894 /* GTMSystemVersionTest.m in Sources */,
- 8BFE6EA21282371200B5C894 /* GTMTransientRootPortProxyTest.m in Sources */,
- 8BFE6EA31282371200B5C894 /* GTMTransientRootProxyTest.m in Sources */,
- 8BFE6EA41282371200B5C894 /* GTMURITemplateTest.m in Sources */,
- 8BFE6EA51282371200B5C894 /* GTMValidatingContainersTest.m in Sources */,
8BBD1F8F1519271A003152F0 /* GTMNSThread+BlocksTest.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -2365,7 +1298,6 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- F42E094A0D199BBF00D5DDE0 /* GTMDelegatingTableColumn.m in Sources */,
F95B56840F4628B30051A6F1 /* GTMSQLite.m in Sources */,
F42E094D0D199BBF00D5DDE0 /* GTMGeometryUtils.m in Sources */,
F42E09500D199BBF00D5DDE0 /* GTMNSBezierPath+RoundRect.m in Sources */,
@@ -2373,67 +1305,41 @@
F42E09550D199BBF00D5DDE0 /* GTMSystemVersion.m in Sources */,
F43DCDCE0D4796C600959A62 /* GTMLoginItems.m in Sources */,
F428FF040D48E55E00382ED1 /* GTMNSBezierPath+CGPath.m in Sources */,
- F47F1C130D490BC000925B8F /* GTMNSBezierPath+Shading.m in Sources */,
- F47F1D310D4914AD00925B8F /* GTMCalculatedRange.m in Sources */,
- F43E447B0D4918B20041161F /* GTMLinearRGBShading.m in Sources */,
F43E4C290D4E361D0041161F /* GTMNSString+XML.m in Sources */,
- F43E4DDA0D4E56320041161F /* GTMNSEnumerator+Filter.m in Sources */,
F43E4E620D4E5EC90041161F /* GTMNSData+zlib.m in Sources */,
F437F55E0D50BC0A00F5C3A4 /* GTMRegex.m in Sources */,
F47A79890D746EE9002302AB /* GTMScriptRunner.m in Sources */,
F41390900D75F63C00F72B31 /* GTMNSFileManager+Path.m in Sources */,
- 8B45A21E0DA46E34001148C5 /* GTMObjC2Runtime.m in Sources */,
33C372A70DD8A88500E97817 /* GTMNSString+URLArguments.m in Sources */,
33C374390DD8D44800E97817 /* GTMNSDictionary+URLArguments.m in Sources */,
- 8B7DCB9B0DFF0E850017E983 /* GTMFourCharCode.m in Sources */,
8B7DCBBD0DFF0F5D0017E983 /* GTMMethodCheck.m in Sources */,
- 8B7DCBD20DFF16070017E983 /* GTMNSAppleScript+Handler.m in Sources */,
- 8B7DCBD30DFF16070017E983 /* GTMNSAppleEventDescriptor+Handler.m in Sources */,
- 8B7DCBD40DFF16070017E983 /* GTMNSAppleEventDescriptor+Foundation.m in Sources */,
- 8B7DCBE20DFF18720017E983 /* GTMDevLogUnitTestingBridge.m in Sources */,
F41A6F830E02EC3600788A6C /* GTMSignalHandler.m in Sources */,
- 8B3AA9F20E033E23007E31B5 /* GTMValidatingContainers.m in Sources */,
F9FD94630E1D31280005867E /* GTMPath.m in Sources */,
F42597490E23AA57003BEA3E /* GTMNSString+Replace.m in Sources */,
F425977A0E23FE3A003BEA3E /* GTMNSString+FindFolder.m in Sources */,
- 8B1801A20E2533D500280961 /* GTMLargeTypeWindow.m in Sources */,
F98680C30E2C163D00CEE8BF /* GTMLogger.m in Sources */,
F98681970E2C20C800CEE8BF /* GTMLogger+ASL.m in Sources */,
F95803F90E2FB0850049A088 /* GTMLoggerRingBufferWriter.m in Sources */,
8B61FDC00E4CDB8000FF9C21 /* GTMStackTrace.m in Sources */,
- 8B58E9950E547EB000A0E02E /* GTMGetURLHandler.m in Sources */,
- 8B1B49190E5F8E2100A08972 /* GTMExceptionalInlines.m in Sources */,
- 7F3EB38F0E5E09C700A7A75E /* GTMNSImage+Scaling.m in Sources */,
8B6F4B640E8856CA00425D9F /* GTMDebugThreadValidation.m in Sources */,
F41711360ECDFBD500B9B276 /* GTMLightweightProxy.m in Sources */,
629445410EDDF647009295EA /* GTMNSArray+Merge.m in Sources */,
- F4A420F00EDDF8E000397A11 /* GTMHotKeyTextField.m in Sources */,
8B3E292E0EEB53F8000681D8 /* GTMCarbonEvent.m in Sources */,
F49FA8450EEF2AB700077669 /* GTMFileSystemKQueue.m in Sources */,
8B8EC87E0EF17C270044D13F /* GTMNSFileManager+Carbon.m in Sources */,
- 8BA01B5D0F144BD800926923 /* GTMNSWorkspace+Running.m in Sources */,
8B6C15940F356E6400E51E5D /* GTMNSObject+KeyValueObserving.m in Sources */,
- 1012DF570F4252BD004794DB /* GTMAbstractDOListener.m in Sources */,
7F511DFA0F4B0378009F41B6 /* GTMNSColor+Luminance.m in Sources */,
- 10998E8F0F4B593E007F179D /* GTMTransientRootProxy.m in Sources */,
- 10998EF40F4B5D1A007F179D /* GTMTransientRootPortProxy.m in Sources */,
8B40994C0F93C5CC00DF540E /* GTMUILocalizer.m in Sources */,
8BFE13B70FB0F2C0001BE894 /* GTMABAddressBook.m in Sources */,
8BD35B920FB22980009058F5 /* GTMNSScanner+JSON.m in Sources */,
8207B89C0FEA7AA1008A527B /* GTMWindowSheetController.m in Sources */,
F43C7A581021FAA300ABF03C /* GTMUILocalizerAndLayoutTweaker.m in Sources */,
7F97DB33104EBCA3004DDDEE /* GTMFadeTruncatingTextFieldCell.m in Sources */,
- 0BFAD4C9104D06EF002BEB27 /* GTMNSDictionary+CaseInsensitive.m in Sources */,
- 7FF768E51051B17E00D34F4B /* GTMNSImage+SearchCache.m in Sources */,
F4C6248C109753960069CADD /* GTMIBArray.m in Sources */,
8B158A9B10A8C31100C93125 /* GTMNSAnimation+Duration.m in Sources */,
0B1B9B8810FECD870084EE4B /* GTMStringEncoding.m in Sources */,
- 8BDB8A9A1152E1B200C411B1 /* GTMNSAnimatablePropertyContainer.m in Sources */,
- 8BB77A0611B5A0A100AB31AF /* GTMGoogleSearch.m in Sources */,
- 8BCB59F111C00ED6009B6C40 /* GTMNSScanner+Unsigned.m in Sources */,
8B29080911F8E1630064F50F /* GTMNSFileHandle+UniqueName.m in Sources */,
8B414E881226FB1000D0064F /* GTMServiceManagement.c in Sources */,
- F42866B91267340A0090FE0F /* GTMURITemplate.m in Sources */,
8BF2369013CF67CB00F3FD82 /* GTMKeyValueAnimation.m in Sources */,
8BBD1F8D1519258A003152F0 /* GTMNSThread+Blocks.m in Sources */,
);
@@ -2443,33 +1349,20 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- F42E09450D199BA400D5DDE0 /* GTMNSObject+UnitTesting.m in Sources */,
- 8B5547B90DB3BB220014CC1C /* GTMAppKit+UnitTesting.m in Sources */,
8B7DCBC10DFF0F7F0017E983 /* GTMMethodCheck.m in Sources */,
- 8B7DCBED0DFF1A4F0017E983 /* GTMUnitTestDevLog.m in Sources */,
8B7DCE190DFF39850017E983 /* GTMSenTestCase.m in Sources */,
- 8B8B10290EEB8B1600E543D0 /* GTMHotKeyTextFieldTest.m in Sources */,
8BAA9EF20F7C2AB500DF4F12 /* GTMCarbonEventTest.m in Sources */,
- 8BAA9EF30F7C2AB500DF4F12 /* GTMGetURLHandlerTest.m in Sources */,
- 8BAA9EF40F7C2AB500DF4F12 /* GTMLargeTypeWindowTest.m in Sources */,
- 8BAA9EF50F7C2AB500DF4F12 /* GTMLinearRGBShadingTest.m in Sources */,
8BAA9EF60F7C2AB500DF4F12 /* GTMLoginItemsTest.m in Sources */,
8BAA9EF70F7C2AB500DF4F12 /* GTMNSBezierPath+CGPathTest.m in Sources */,
8BAA9EF80F7C2AB500DF4F12 /* GTMNSBezierPath+RoundRectTest.m in Sources */,
- 8BAA9EF90F7C2AB500DF4F12 /* GTMNSBezierPath+ShadingTest.m in Sources */,
8BAA9EFA0F7C2AB500DF4F12 /* GTMNSColor+LuminanceTest.m in Sources */,
- 8BAA9EFB0F7C2AB500DF4F12 /* GTMNSImage+ScalingTest.m in Sources */,
- 8BAA9EFC0F7C2AB500DF4F12 /* GTMNSWorkspace+RunningTest.m in Sources */,
8B409BC60F94405A00DF540E /* GTMUILocalizerTest.m in Sources */,
8207B89D0FEA7AA6008A527B /* GTMWindowSheetControllerTest.m in Sources */,
F42E2C69102B1261004DF054 /* GTMUILocalizerAndLayoutTweakerTest.m in Sources */,
7F97DB31104EBC8D004DDDEE /* GTMFadeTruncatingTextFieldCellTest.m in Sources */,
- 7FF768E31051B17900D34F4B /* GTMNSImage+SearchCacheTest.m in Sources */,
F4C62489109753960069CADD /* GTMIBArrayTest.m in Sources */,
- 8BDB8C3A115329EC00C411B1 /* GTMNSAnimatablePropertyContainerTest.m in Sources */,
8B17FD16117638D500E7A908 /* GTMFoundationUnitTestingUtilities.m in Sources */,
8B17FD1A117638F400E7A908 /* GTMAppKitUnitTestingUtilities.m in Sources */,
- 8BB77A0511B5A09900AB31AF /* GTMGoogleSearchTest.m in Sources */,
8BF2369213CF694C00F3FD82 /* GTMKeyValueAnimationTest.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -2477,21 +1370,11 @@
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
- 8B45A2D40DA51A0E001148C5 /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- target = 8B45A2890DA49B99001148C5 /* UIUnitTestingHarness */;
- targetProxy = 8B45A2D30DA51A0E001148C5 /* PBXContainerItemProxy */;
- };
8B7DCBA40DFF0EFB0017E983 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = F42E086C0D199A5B00D5DDE0 /* GTM */;
targetProxy = 8B7DCBA30DFF0EFB0017E983 /* PBXContainerItemProxy */;
};
- 8BAA9A350F7AF50600DF4F12 /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- target = 8B45A2890DA49B99001148C5 /* UIUnitTestingHarness */;
- targetProxy = 8BAA9A340F7AF50600DF4F12 /* PBXContainerItemProxy */;
- };
8BC8514F127A18B60046E0FB /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 8BC85130127A18AE0046E0FB /* GTMServiceManagementTestingHarness */;
@@ -2512,53 +1395,9 @@
target = F42E086C0D199A5B00D5DDE0 /* GTM */;
targetProxy = F42E08780D199AA600D5DDE0 /* PBXContainerItemProxy */;
};
- F4E4279210B7484B00F28A35 /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- target = 8BFE13BC0FB0F2D8001BE894 /* UnitTest-AddressBook */;
- targetProxy = F4E4279110B7484B00F28A35 /* PBXContainerItemProxy */;
- };
- F4E4279410B7484B00F28A35 /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- target = F48FE2630D198C1E009257D2 /* UnitTest-AppKit */;
- targetProxy = F4E4279310B7484B00F28A35 /* PBXContainerItemProxy */;
- };
- F4E4279610B7484B00F28A35 /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- target = F42E08110D19987200D5DDE0 /* UnitTest-Foundation */;
- targetProxy = F4E4279510B7484B00F28A35 /* PBXContainerItemProxy */;
- };
- F4E4279810B7484B00F28A35 /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- target = 8B45A0270DA4696C001148C5 /* UnitTest-UnitTesting */;
- targetProxy = F4E4279710B7484B00F28A35 /* PBXContainerItemProxy */;
- };
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
- 8B0E653F0FD80D5E00461C4A /* GTMHotKeyTextField.strings */ = {
- isa = PBXVariantGroup;
- children = (
- 8B0E65400FD80D5E00461C4A /* da */,
- 8B0E65410FD80D5E00461C4A /* de */,
- 8B0E65420FD80D5E00461C4A /* en */,
- 8B0E65430FD80D5E00461C4A /* es */,
- 8B0E65440FD80D5E00461C4A /* fi */,
- 8B0E65450FD80D5E00461C4A /* fr */,
- 8B0E65460FD80D5E00461C4A /* it */,
- 8B0E65470FD80D5E00461C4A /* ja */,
- 8B0E65480FD80D5E00461C4A /* ko */,
- 8B0E65490FD80D5E00461C4A /* nl */,
- 8B0E654A0FD80D5E00461C4A /* no */,
- 8B0E654B0FD80D5E00461C4A /* pl */,
- 8B0E654C0FD80D5E00461C4A /* pt */,
- 8B0E654D0FD80D5E00461C4A /* ru */,
- 8B0E654E0FD80D5E00461C4A /* sv */,
- 8B0E654F0FD80D5E00461C4A /* zh_CN */,
- 8B0E65500FD80D5E00461C4A /* zh_TW */,
- );
- name = GTMHotKeyTextField.strings;
- sourceTree = "<group>";
- };
8B409BE50F9442C800DF540E /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
@@ -2587,220 +1426,14 @@
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
- 1DEB918208733D990010E9CD /* TigerOrLater-Debug */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = F48FE2410D197F9A009257D2 /* DebugTigerOrLater.xcconfig */;
- buildSettings = {
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = GTM_Prefix.pch;
- GCC_WARN_SHADOW = YES;
- GTM_EXTRA_WARNING_OVERRIDE_CFLAGS = "-Wno-unused-parameter";
- GTM_HOST_GCC_PREPROCESSOR_DEFINITIONS = "COMPONENT_SIGNATURE=\"\\'GTM \\'\" kComponentSignatureString=\"\\\"GoogleToolboxForMac\\\"\"";
- };
- name = "TigerOrLater-Debug";
- };
- 1DEB918308733D990010E9CD /* TigerOrLater-Release */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = F48FE2440D197F9A009257D2 /* ReleaseTigerOrLater.xcconfig */;
- buildSettings = {
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = GTM_Prefix.pch;
- GCC_WARN_SHADOW = YES;
- GTM_EXTRA_WARNING_OVERRIDE_CFLAGS = "-Wno-unused-parameter";
- GTM_HOST_GCC_PREPROCESSOR_DEFINITIONS = "COMPONENT_SIGNATURE=\"\\'GTM \\'\" kComponentSignatureString=\"\\\"GoogleToolboxForMac\\\"\"";
- };
- name = "TigerOrLater-Release";
- };
- 8B45A02A0DA4696D001148C5 /* TigerOrLater-Debug */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = F48FE2420D197F9A009257D2 /* DebugUnittest.xcconfig */;
- buildSettings = {
- FRAMEWORK_SEARCH_PATHS = (
- "$(value)",
- "$(DEVELOPER_FRAMEWORKS_DIR_QUOTED)",
- );
- INFOPLIST_FILE = "UnitTest-Info.plist";
- PRODUCT_NAME = "UnitTest-UnitTesting";
- TEST_HOST = "$(BUILT_PRODUCTS_DIR)/GTMUIUnitTestingHarness.app/Contents/MacOS/GTMUIUnitTestingHarness";
- };
- name = "TigerOrLater-Debug";
- };
- 8B45A02C0DA4696D001148C5 /* TigerOrLater-Release */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = F48FE2450D197F9A009257D2 /* ReleaseUnittest.xcconfig */;
- buildSettings = {
- FRAMEWORK_SEARCH_PATHS = (
- "$(value)",
- "$(DEVELOPER_FRAMEWORKS_DIR_QUOTED)",
- );
- INFOPLIST_FILE = "UnitTest-Info.plist";
- PRODUCT_NAME = "UnitTest-UnitTesting";
- TEST_HOST = "$(BUILT_PRODUCTS_DIR)/GTMUIUnitTestingHarness.app/Contents/MacOS/GTMUIUnitTestingHarness";
- };
- name = "TigerOrLater-Release";
- };
- 8B45A28E0DA49B99001148C5 /* TigerOrLater-Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- INFOPLIST_FILE = UnitTesting/GTMUIUnitTestingHarness/Info.plist;
- PRODUCT_NAME = GTMUIUnitTestingHarness;
- };
- name = "TigerOrLater-Debug";
- };
- 8B45A2900DA49B99001148C5 /* TigerOrLater-Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- INFOPLIST_FILE = UnitTesting/GTMUIUnitTestingHarness/Info.plist;
- PRODUCT_NAME = GTMUIUnitTestingHarness;
- };
- name = "TigerOrLater-Release";
- };
- 8BC85143127A18AE0046E0FB /* TigerOrLater-Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- PRODUCT_NAME = GTMServiceManagementTestingHarness;
- };
- name = "TigerOrLater-Debug";
- };
- 8BC85145127A18AE0046E0FB /* TigerOrLater-Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- PRODUCT_NAME = GTMServiceManagementTestingHarness;
- };
- name = "TigerOrLater-Release";
- };
- 8BFE13F30FB0F2D8001BE894 /* TigerOrLater-Debug */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = F48FE2420D197F9A009257D2 /* DebugUnittest.xcconfig */;
- buildSettings = {
- FRAMEWORK_SEARCH_PATHS = (
- "$(value)",
- "$(DEVELOPER_FRAMEWORKS_DIR_QUOTED)",
- );
- INFOPLIST_FILE = "UnitTest-Info.plist";
- PRODUCT_NAME = "UnitTest-AddressBook";
- };
- name = "TigerOrLater-Debug";
- };
- 8BFE13F50FB0F2D8001BE894 /* TigerOrLater-Release */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = F48FE2450D197F9A009257D2 /* ReleaseUnittest.xcconfig */;
- buildSettings = {
- FRAMEWORK_SEARCH_PATHS = (
- "$(value)",
- "$(DEVELOPER_FRAMEWORKS_DIR_QUOTED)",
- );
- INFOPLIST_FILE = "UnitTest-Info.plist";
- PRODUCT_NAME = "UnitTest-AddressBook";
- };
- name = "TigerOrLater-Release";
- };
- F42E081F0D19987200D5DDE0 /* TigerOrLater-Debug */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = F48FE2420D197F9A009257D2 /* DebugUnittest.xcconfig */;
- buildSettings = {
- FRAMEWORK_SEARCH_PATHS = (
- "$(value)",
- "$(DEVELOPER_FRAMEWORKS_DIR_QUOTED)",
- );
- GTM_NO_DEBUG_FRAMEWORKS = YES;
- INFOPLIST_FILE = "UnitTest-Info.plist";
- PRODUCT_NAME = "UnitTest-Foundation";
- };
- name = "TigerOrLater-Debug";
- };
- F42E08200D19987200D5DDE0 /* TigerOrLater-Release */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = F48FE2450D197F9A009257D2 /* ReleaseUnittest.xcconfig */;
- buildSettings = {
- FRAMEWORK_SEARCH_PATHS = (
- "$(value)",
- "$(DEVELOPER_FRAMEWORKS_DIR_QUOTED)",
- );
- GTM_NO_DEBUG_FRAMEWORKS = YES;
- INFOPLIST_FILE = "UnitTest-Info.plist";
- PRODUCT_NAME = "UnitTest-Foundation";
- };
- name = "TigerOrLater-Release";
- };
- F42E08700D199A5C00D5DDE0 /* TigerOrLater-Debug */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = F48FE2430D197F9A009257D2 /* LoadableBundle.xcconfig */;
- buildSettings = {
- DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 1;
- FRAMEWORK_VERSION = A;
- INFOPLIST_FILE = "GTM-Info.plist";
- INSTALL_PATH = "@loader_path/../Frameworks";
- PRODUCT_NAME = GoogleToolboxForMac;
- };
- name = "TigerOrLater-Debug";
- };
- F42E08710D199A5C00D5DDE0 /* TigerOrLater-Release */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = F48FE2430D197F9A009257D2 /* LoadableBundle.xcconfig */;
- buildSettings = {
- DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 1;
- FRAMEWORK_VERSION = A;
- INFOPLIST_FILE = "GTM-Info.plist";
- INSTALL_PATH = "@loader_path/../Frameworks";
- PRODUCT_NAME = GoogleToolboxForMac;
- };
- name = "TigerOrLater-Release";
- };
- F47204350D33BEDF00E9F378 /* TigerOrLater-Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- PRODUCT_NAME = "All UnitTests";
- };
- name = "TigerOrLater-Debug";
- };
- F47204360D33BEDF00E9F378 /* TigerOrLater-Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- PRODUCT_NAME = "All UnitTests";
- };
- name = "TigerOrLater-Release";
- };
- F48FE2670D198C1F009257D2 /* TigerOrLater-Debug */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = F48FE2420D197F9A009257D2 /* DebugUnittest.xcconfig */;
- buildSettings = {
- FRAMEWORK_SEARCH_PATHS = (
- "$(value)",
- "$(DEVELOPER_FRAMEWORKS_DIR_QUOTED)",
- );
- INFOPLIST_FILE = "UnitTest-Info.plist";
- PRODUCT_NAME = "UnitTest-AppKit";
- TEST_HOST = "$(BUILT_PRODUCTS_DIR)/GTMUIUnitTestingHarness.app/Contents/MacOS/GTMUIUnitTestingHarness";
- };
- name = "TigerOrLater-Debug";
- };
- F48FE2680D198C1F009257D2 /* TigerOrLater-Release */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = F48FE2450D197F9A009257D2 /* ReleaseUnittest.xcconfig */;
- buildSettings = {
- FRAMEWORK_SEARCH_PATHS = (
- "$(value)",
- "$(DEVELOPER_FRAMEWORKS_DIR_QUOTED)",
- );
- INFOPLIST_FILE = "UnitTest-Info.plist";
- PRODUCT_NAME = "UnitTest-AppKit";
- TEST_HOST = "$(BUILT_PRODUCTS_DIR)/GTMUIUnitTestingHarness.app/Contents/MacOS/GTMUIUnitTestingHarness";
- };
- name = "TigerOrLater-Release";
- };
F4CC9F28148E5DEB00B7D68C /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = F4CC9F3F148E5E2500B7D68C /* DebugMacOSX.xcconfig */;
buildSettings = {
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = GTM_Prefix.pch;
GCC_WARN_SHADOW = YES;
GTM_EXTRA_WARNING_OVERRIDE_CFLAGS = "-Wno-unused-parameter";
- GTM_HOST_GCC_PREPROCESSOR_DEFINITIONS = "COMPONENT_SIGNATURE=\"\\'GTM \\'\" kComponentSignatureString=\"\\\"GoogleToolboxForMac\\\"\"";
- MACOSX_DEPLOYMENT_TARGET = 10.5;
+ GTM_HOST_GCC_PREPROCESSOR_DEFINITIONS = "GTM_USING_XCTEST=1";
+ MACOSX_DEPLOYMENT_TARGET = 10.6;
};
name = Debug;
};
@@ -2817,13 +1450,6 @@
};
name = Debug;
};
- F4CC9F2A148E5DEB00B7D68C /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- PRODUCT_NAME = "All UnitTests";
- };
- name = Debug;
- };
F4CC9F2B148E5DEB00B7D68C /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = F48FE2420D197F9A009257D2 /* DebugUnittest.xcconfig */;
@@ -2842,12 +1468,13 @@
baseConfigurationReference = F48FE2420D197F9A009257D2 /* DebugUnittest.xcconfig */;
buildSettings = {
FRAMEWORK_SEARCH_PATHS = (
- "$(value)",
+ "$(inherited)",
"$(DEVELOPER_FRAMEWORKS_DIR_QUOTED)",
+ "$(DEVELOPER_SDK_DIR)/../Library/Frameworks",
);
INFOPLIST_FILE = "UnitTest-Info.plist";
PRODUCT_NAME = "UnitTest-AppKit";
- TEST_HOST = "$(BUILT_PRODUCTS_DIR)/GTMUIUnitTestingHarness.app/Contents/MacOS/GTMUIUnitTestingHarness";
+ TEST_HOST = "\"$(BUILT_PRODUCTS_DIR)/GTMUIUnitTestingHarness.app/Contents/MacOS/GTMUIUnitTestingHarness\"";
};
name = Debug;
};
@@ -2875,7 +1502,6 @@
);
INFOPLIST_FILE = "UnitTest-Info.plist";
PRODUCT_NAME = "UnitTest-UnitTesting";
- TEST_HOST = "$(BUILT_PRODUCTS_DIR)/GTMUIUnitTestingHarness.app/Contents/MacOS/GTMUIUnitTestingHarness";
};
name = Debug;
};
@@ -2898,12 +1524,10 @@
isa = XCBuildConfiguration;
baseConfigurationReference = F4CC9F40148E5E2500B7D68C /* ReleaseMacOSX.xcconfig */;
buildSettings = {
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = GTM_Prefix.pch;
GCC_WARN_SHADOW = YES;
GTM_EXTRA_WARNING_OVERRIDE_CFLAGS = "-Wno-unused-parameter";
- GTM_HOST_GCC_PREPROCESSOR_DEFINITIONS = "COMPONENT_SIGNATURE=\"\\'GTM \\'\" kComponentSignatureString=\"\\\"GoogleToolboxForMac\\\"\"";
- MACOSX_DEPLOYMENT_TARGET = 10.5;
+ GTM_HOST_GCC_PREPROCESSOR_DEFINITIONS = "GTM_USING_XCTEST=1";
+ MACOSX_DEPLOYMENT_TARGET = 10.6;
};
name = Release;
};
@@ -2920,13 +1544,6 @@
};
name = Release;
};
- F4CC9F35148E5DF700B7D68C /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- PRODUCT_NAME = "All UnitTests";
- };
- name = Release;
- };
F4CC9F36148E5DF700B7D68C /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = F48FE2450D197F9A009257D2 /* ReleaseUnittest.xcconfig */;
@@ -2945,12 +1562,13 @@
baseConfigurationReference = F48FE2450D197F9A009257D2 /* ReleaseUnittest.xcconfig */;
buildSettings = {
FRAMEWORK_SEARCH_PATHS = (
- "$(value)",
+ "$(inherited)",
"$(DEVELOPER_FRAMEWORKS_DIR_QUOTED)",
+ "$(DEVELOPER_SDK_DIR)/../Library/Frameworks",
);
INFOPLIST_FILE = "UnitTest-Info.plist";
PRODUCT_NAME = "UnitTest-AppKit";
- TEST_HOST = "$(BUILT_PRODUCTS_DIR)/GTMUIUnitTestingHarness.app/Contents/MacOS/GTMUIUnitTestingHarness";
+ TEST_HOST = "\"$(BUILT_PRODUCTS_DIR)/GTMUIUnitTestingHarness.app/Contents/MacOS/GTMUIUnitTestingHarness\"";
};
name = Release;
};
@@ -2978,7 +1596,6 @@
);
INFOPLIST_FILE = "UnitTest-Info.plist";
PRODUCT_NAME = "UnitTest-UnitTesting";
- TEST_HOST = "$(BUILT_PRODUCTS_DIR)/GTMUIUnitTestingHarness.app/Contents/MacOS/GTMUIUnitTestingHarness";
};
name = Release;
};
@@ -3005,8 +1622,6 @@
buildConfigurations = (
F4CC9F28148E5DEB00B7D68C /* Debug */,
F4CC9F33148E5DF700B7D68C /* Release */,
- 1DEB918208733D990010E9CD /* TigerOrLater-Debug */,
- 1DEB918308733D990010E9CD /* TigerOrLater-Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Debug;
@@ -3016,8 +1631,6 @@
buildConfigurations = (
F4CC9F2E148E5DEB00B7D68C /* Debug */,
F4CC9F39148E5DF700B7D68C /* Release */,
- 8B45A02A0DA4696D001148C5 /* TigerOrLater-Debug */,
- 8B45A02C0DA4696D001148C5 /* TigerOrLater-Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Debug;
@@ -3027,8 +1640,6 @@
buildConfigurations = (
F4CC9F30148E5DEB00B7D68C /* Debug */,
F4CC9F3B148E5DF700B7D68C /* Release */,
- 8B45A28E0DA49B99001148C5 /* TigerOrLater-Debug */,
- 8B45A2900DA49B99001148C5 /* TigerOrLater-Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Debug;
@@ -3038,8 +1649,6 @@
buildConfigurations = (
F4CC9F2F148E5DEB00B7D68C /* Debug */,
F4CC9F3A148E5DF700B7D68C /* Release */,
- 8BC85143127A18AE0046E0FB /* TigerOrLater-Debug */,
- 8BC85145127A18AE0046E0FB /* TigerOrLater-Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Debug;
@@ -3049,8 +1658,6 @@
buildConfigurations = (
F4CC9F2B148E5DEB00B7D68C /* Debug */,
F4CC9F36148E5DF700B7D68C /* Release */,
- 8BFE13F30FB0F2D8001BE894 /* TigerOrLater-Debug */,
- 8BFE13F50FB0F2D8001BE894 /* TigerOrLater-Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Debug;
@@ -3060,8 +1667,6 @@
buildConfigurations = (
F4CC9F2D148E5DEB00B7D68C /* Debug */,
F4CC9F38148E5DF700B7D68C /* Release */,
- F42E081F0D19987200D5DDE0 /* TigerOrLater-Debug */,
- F42E08200D19987200D5DDE0 /* TigerOrLater-Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Debug;
@@ -3071,19 +1676,6 @@
buildConfigurations = (
F4CC9F29148E5DEB00B7D68C /* Debug */,
F4CC9F34148E5DF700B7D68C /* Release */,
- F42E08700D199A5C00D5DDE0 /* TigerOrLater-Debug */,
- F42E08710D199A5C00D5DDE0 /* TigerOrLater-Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Debug;
- };
- F47204340D33BEDF00E9F378 /* Build configuration list for PBXAggregateTarget "All UnitTests" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- F4CC9F2A148E5DEB00B7D68C /* Debug */,
- F4CC9F35148E5DF700B7D68C /* Release */,
- F47204350D33BEDF00E9F378 /* TigerOrLater-Debug */,
- F47204360D33BEDF00E9F378 /* TigerOrLater-Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Debug;
@@ -3093,8 +1685,6 @@
buildConfigurations = (
F4CC9F2C148E5DEB00B7D68C /* Debug */,
F4CC9F37148E5DF700B7D68C /* Release */,
- F48FE2670D198C1F009257D2 /* TigerOrLater-Debug */,
- F48FE2680D198C1F009257D2 /* TigerOrLater-Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Debug;
diff --git a/GTMDefines.h b/GTMDefines.h
index d381ec6..7baa7b2 100644
--- a/GTMDefines.h
+++ b/GTMDefines.h
@@ -29,58 +29,6 @@
#include <Availability.h>
#endif // TARGET_OS_IPHONE
-// Not all MAC_OS_X_VERSION_10_X macros defined in past SDKs
-#ifndef MAC_OS_X_VERSION_10_5
- #define MAC_OS_X_VERSION_10_5 1050
-#endif
-#ifndef MAC_OS_X_VERSION_10_6
- #define MAC_OS_X_VERSION_10_6 1060
-#endif
-#ifndef MAC_OS_X_VERSION_10_7
- #define MAC_OS_X_VERSION_10_7 1070
-#endif
-#ifndef MAC_OS_X_VERSION_10_8
- #define MAC_OS_X_VERSION_10_8 1080
-#endif
-#ifndef MAC_OS_X_VERSION_10_9
- #define MAC_OS_X_VERSION_10_9 1090
-#endif
-
-// Not all __IPHONE_X macros defined in past SDKs
-#ifndef __IPHONE_3_0
- #define __IPHONE_3_0 30000
-#endif
-#ifndef __IPHONE_3_1
- #define __IPHONE_3_1 30100
-#endif
-#ifndef __IPHONE_3_2
- #define __IPHONE_3_2 30200
-#endif
-#ifndef __IPHONE_4_0
- #define __IPHONE_4_0 40000
-#endif
-#ifndef __IPHONE_4_3
- #define __IPHONE_4_3 40300
-#endif
-#ifndef __IPHONE_5_0
- #define __IPHONE_5_0 50000
-#endif
-#ifndef __IPHONE_5_1
- #define __IPHONE_5_1 50100
-#endif
-#ifndef __IPHONE_6_0
- #define __IPHONE_6_0 60000
-#endif
-#ifndef __IPHONE_6_1
- #define __IPHONE_6_1 60100
-#endif
-#ifndef __IPHONE_7_0
- #define __IPHONE_7_0 70000
-#endif
-#ifndef __IPHONE_7_1
- #define __IPHONE_7_1 70100
-#endif
-
// ----------------------------------------------------------------------------
// CPP symbols that can be overridden in a prefix to control how the toolbox
// is compiled.
@@ -262,7 +210,9 @@
#define GTM_IPHONE_SIMULATOR 0
#define GTM_IPHONE_DEVICE 0
#define GTM_IPHONE_USE_SENTEST 0
- #define GTM_USING_XCTEST 0
+ #ifndef GTM_USING_XCTEST
+ #define GTM_USING_XCTEST 0
+ #endif
#endif
// Some of our own availability macros
@@ -280,41 +230,6 @@
#define GTM_SUPPORT_GC 0
#endif
-// To simplify support for 64bit (and Leopard in general), we provide the type
-// defines for non Leopard SDKs
-#if !(MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5)
- // NSInteger/NSUInteger and Max/Mins
- #ifndef NSINTEGER_DEFINED
- #if (defined(__LP64__) && __LP64__) || NS_BUILD_32_LIKE_64
- typedef long NSInteger;
- typedef unsigned long NSUInteger;
- #else
- typedef int NSInteger;
- typedef unsigned int NSUInteger;
- #endif
- #define NSIntegerMax LONG_MAX
- #define NSIntegerMin LONG_MIN
- #define NSUIntegerMax ULONG_MAX
- #define NSINTEGER_DEFINED 1
- #endif // NSINTEGER_DEFINED
- // CGFloat
- #ifndef CGFLOAT_DEFINED
- #if defined(__LP64__) && __LP64__
- // This really is an untested path (64bit on Tiger?)
- typedef double CGFloat;
- #define CGFLOAT_MIN DBL_MIN
- #define CGFLOAT_MAX DBL_MAX
- #define CGFLOAT_IS_DOUBLE 1
- #else /* !defined(__LP64__) || !__LP64__ */
- typedef float CGFloat;
- #define CGFLOAT_MIN FLT_MIN
- #define CGFLOAT_MAX FLT_MAX
- #define CGFLOAT_IS_DOUBLE 0
- #endif /* !defined(__LP64__) || !__LP64__ */
- #define CGFLOAT_DEFINED 1
- #endif // CGFLOAT_DEFINED
-#endif // MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5
-
// Some support for advanced clang static analysis functionality
#ifndef NS_RETURNS_RETAINED
#if __has_feature(attribute_ns_returns_retained)
@@ -372,26 +287,6 @@
#endif
#endif
-// Defined on 10.6 and above.
-#ifndef NS_FORMAT_ARGUMENT
- #define NS_FORMAT_ARGUMENT(A)
-#endif
-
-// Defined on 10.6 and above.
-#ifndef NS_FORMAT_FUNCTION
- #define NS_FORMAT_FUNCTION(F,A)
-#endif
-
-// Defined on 10.6 and above.
-#ifndef CF_FORMAT_ARGUMENT
- #define CF_FORMAT_ARGUMENT(A)
-#endif
-
-// Defined on 10.6 and above.
-#ifndef CF_FORMAT_FUNCTION
- #define CF_FORMAT_FUNCTION(F,A)
-#endif
-
#ifndef GTM_NONNULL
#if defined(__has_attribute)
#if __has_attribute(nonnull)
@@ -435,10 +330,6 @@
#ifdef __OBJC__
-// Declared here so that it can easily be used for logging tracking if
-// necessary. See GTMUnitTestDevLog.h for details.
-@class NSString;
-GTM_EXTERN void _GTMUnitTestDevLog(NSString *format, ...) NS_FORMAT_FUNCTION(1, 2);
// Macro to allow you to create NSStrings out of other macros.
// #define FOO foo
@@ -473,20 +364,6 @@ GTM_EXTERN void _GTMUnitTestDevLog(NSString *format, ...) NS_FORMAT_FUNCTION(1,
// ============================================================================
-// To simplify support for both Leopard and Snow Leopard we declare
-// the Snow Leopard protocols that we need here.
-#if !defined(GTM_10_6_PROTOCOLS_DEFINED) && !(MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6)
-#define GTM_10_6_PROTOCOLS_DEFINED 1
-@protocol NSConnectionDelegate
-@end
-@protocol NSAnimationDelegate
-@end
-@protocol NSImageDelegate
-@end
-@protocol NSTabViewDelegate
-@end
-#endif // !defined(GTM_10_6_PROTOCOLS_DEFINED) && !(MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6)
-
// GTM_SEL_STRING is for specifying selector (usually property) names to KVC
// or KVO methods.
// In debug it will generate warnings for undeclared selectors if
@@ -501,13 +378,7 @@ GTM_EXTERN void _GTMUnitTestDevLog(NSString *format, ...) NS_FORMAT_FUNCTION(1,
#endif // GTM_SEL_STRING
#ifndef GTM_WEAK
- #if defined(__OBJC_GC__)
- // In -fobjc-gc mode, __weak means "a reference not visible to the gargabe
- // collector". __weak references are set to zero when their pointee is
- // collected. __weak is not needed to prevent cycles because cycles
- // are cleaned up fine by the garbage collector.
- #define GTM_WEAK __weak
- #elif __has_feature(objc_arc_weak)
+#if __has_feature(objc_arc_weak)
// With ARC enabled, __weak means a reference that isn't implicitly
// retained. __weak objects are accessed through runtime functions, so
// they are zeroed out, but this requires OS X 10.7+.
diff --git a/GTM_Prefix.pch b/GTM_Prefix.pch
deleted file mode 100644
index 5434868..0000000
--- a/GTM_Prefix.pch
+++ /dev/null
@@ -1,25 +0,0 @@
-//
-// Copyright 2007-2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-// We don't require a prefix to use any GTM code. This prefix is just for unit
-// test logging.
-
-// This turns on unit test logging so that we can track unittests if we are
-// doing them. See GTMUnitTestDevLog.h for details.
-// (_GTMUnitTestDevLog comes from GTMDevLogUnitTestingBridge.m)
-#define _GTMDevLog _GTMUnitTestDevLog
-
-
diff --git a/GTMiPhone.xcodeproj/project.pbxproj b/GTMiPhone.xcodeproj/project.pbxproj
index 4b33e27..cbe60df 100644
--- a/GTMiPhone.xcodeproj/project.pbxproj
+++ b/GTMiPhone.xcodeproj/project.pbxproj
@@ -6,324 +6,114 @@
objectVersion = 46;
objects = {
-/* Begin PBXAggregateTarget section */
- F4C7F9BF0DC62EC8009BEE5B /* All UnitTests */ = {
- isa = PBXAggregateTarget;
- buildConfigurationList = F4C7F9C50DC62F0C009BEE5B /* Build configuration list for PBXAggregateTarget "All UnitTests" */;
- buildPhases = (
- );
- dependencies = (
- F4C7F9C40DC62ECD009BEE5B /* PBXTargetDependency */,
- F4D20F1E14852CAB0001600C /* PBXTargetDependency */,
- );
- name = "All UnitTests";
- productName = "All UnitTests";
- };
-/* End PBXAggregateTarget section */
-
/* Begin PBXBuildFile section */
- 0B859DA1104D08160064FE46 /* GTMNSDictionary+CaseInsensitive.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B859D9D104D08050064FE46 /* GTMNSDictionary+CaseInsensitive.m */; };
- 0B859DA2104D08160064FE46 /* GTMNSDictionary+CaseInsensitiveTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B859D9E104D08050064FE46 /* GTMNSDictionary+CaseInsensitiveTest.m */; };
- 0BBC768B10FEF62C0006FABE /* GTMStringEncoding.m in Sources */ = {isa = PBXBuildFile; fileRef = 0BBC768910FEF61D0006FABE /* GTMStringEncoding.m */; };
- 0BBC768C10FEF62C0006FABE /* GTMStringEncodingTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 0BBC768A10FEF61D0006FABE /* GTMStringEncodingTest.m */; };
- 13C1ED4F104896C900907CD8 /* GTMUIView+SubtreeDescription.m in Sources */ = {isa = PBXBuildFile; fileRef = 13C1ED4C104896C900907CD8 /* GTMUIView+SubtreeDescription.m */; };
- 13C1ED50104896C900907CD8 /* GTMUIView+SubtreeDescriptionTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 13C1ED4D104896C900907CD8 /* GTMUIView+SubtreeDescriptionTest.m */; };
- 169E1E2F1459AAE100E6F562 /* GTMUILocalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 169E1E2B1459AAE100E6F562 /* GTMUILocalizer.m */; };
- 169E1E301459AAE100E6F562 /* GTMUILocalizerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 169E1E2D1459AAE100E6F562 /* GTMUILocalizerTest.m */; };
169E1E311459AAE100E6F562 /* GTMUILocalizerTest.xib in Resources */ = {isa = PBXBuildFile; fileRef = 169E1E2E1459AAE100E6F562 /* GTMUILocalizerTest.xib */; };
- 1D3623EC0D0F72F000981E51 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D3623EB0D0F72F000981E51 /* CoreGraphics.framework */; };
- 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; };
1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; };
- 23220A06152C9E980060CB7D /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 23220A05152C9E980060CB7D /* Security.framework */; };
- 234E175D152CBB4900CF3542 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 23220A05152C9E980060CB7D /* Security.framework */; };
- 234E17DC152CECFB00CF3542 /* GTMIPhoneSecurityLibraryTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 234E17DB152CECFB00CF3542 /* GTMIPhoneSecurityLibraryTest.m */; };
- 234E17DD152CECFB00CF3542 /* GTMIPhoneSecurityLibraryTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 234E17DB152CECFB00CF3542 /* GTMIPhoneSecurityLibraryTest.m */; };
- 448D61FB11AC1F1B0097ACBC /* GTMUIImage+Resize_100x50_flipped.png in Resources */ = {isa = PBXBuildFile; fileRef = 448D61B111AC1AAD0097ACBC /* GTMUIImage+Resize_100x50_flipped.png */; };
- 448D61FC11AC1F250097ACBC /* GTMUIImage+Resize_50x100_flipped.png in Resources */ = {isa = PBXBuildFile; fileRef = 448D61B011AC1AAD0097ACBC /* GTMUIImage+Resize_50x100_flipped.png */; };
- 6294461C0EDE178D009295EA /* GTMNSArray+MergeTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 629446190EDE177A009295EA /* GTMNSArray+MergeTest.m */; };
- 6294461D0EDE17A0009295EA /* GTMNSArray+Merge.m in Sources */ = {isa = PBXBuildFile; fileRef = 629446180EDE177A009295EA /* GTMNSArray+Merge.m */; };
- 64D0F5C80FD3E65C00506CC7 /* GTMUIImage+ResizeTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 64D0F5C60FD3E65C00506CC7 /* GTMUIImage+ResizeTest.m */; };
- 64D0F5C90FD3E65C00506CC7 /* GTMUIImage+Resize.m in Sources */ = {isa = PBXBuildFile; fileRef = 64D0F5C70FD3E65C00506CC7 /* GTMUIImage+Resize.m */; };
- 64D0F5DE0FD3E68400506CC7 /* GTMUIImage+Resize_100x100_to_60x40.png in Resources */ = {isa = PBXBuildFile; fileRef = 64D0F5CC0FD3E68400506CC7 /* GTMUIImage+Resize_100x100_to_60x40.png */; };
64D0F5DF0FD3E68400506CC7 /* GTMUIImage+Resize_50x100.png in Resources */ = {isa = PBXBuildFile; fileRef = 64D0F5CD0FD3E68400506CC7 /* GTMUIImage+Resize_50x100.png */; };
- 64D0F5E00FD3E68400506CC7 /* GTMUIImage+Resize_50x100_to_40x60_clip.png in Resources */ = {isa = PBXBuildFile; fileRef = 64D0F5CE0FD3E68400506CC7 /* GTMUIImage+Resize_50x100_to_40x60_clip.png */; };
- 64D0F5E10FD3E68400506CC7 /* GTMUIImage+Resize_50x100_to_40x60_noclip.png in Resources */ = {isa = PBXBuildFile; fileRef = 64D0F5CF0FD3E68400506CC7 /* GTMUIImage+Resize_50x100_to_40x60_noclip.png */; };
- 64D0F5E20FD3E68400506CC7 /* GTMUIImage+Resize_50x100_to_50x50_clip.png in Resources */ = {isa = PBXBuildFile; fileRef = 64D0F5D00FD3E68400506CC7 /* GTMUIImage+Resize_50x100_to_50x50_clip.png */; };
- 64D0F5E30FD3E68400506CC7 /* GTMUIImage+Resize_50x100_to_50x50_noclip.png in Resources */ = {isa = PBXBuildFile; fileRef = 64D0F5D10FD3E68400506CC7 /* GTMUIImage+Resize_50x100_to_50x50_noclip.png */; };
- 64D0F5E40FD3E68400506CC7 /* GTMUIImage+Resize_50x100_to_60x40_clip.png in Resources */ = {isa = PBXBuildFile; fileRef = 64D0F5D20FD3E68400506CC7 /* GTMUIImage+Resize_50x100_to_60x40_clip.png */; };
- 64D0F5E50FD3E68400506CC7 /* GTMUIImage+Resize_50x100_to_60x40_noclip.png in Resources */ = {isa = PBXBuildFile; fileRef = 64D0F5D30FD3E68400506CC7 /* GTMUIImage+Resize_50x100_to_60x40_noclip.png */; };
64D0F5E60FD3E68400506CC7 /* GTMUIImage+Resize_100x50.png in Resources */ = {isa = PBXBuildFile; fileRef = 64D0F5D40FD3E68400506CC7 /* GTMUIImage+Resize_100x50.png */; };
- 64D0F5E70FD3E68400506CC7 /* GTMUIImage+Resize_100x50_to_40x60_clip.png in Resources */ = {isa = PBXBuildFile; fileRef = 64D0F5D50FD3E68400506CC7 /* GTMUIImage+Resize_100x50_to_40x60_clip.png */; };
- 64D0F5E80FD3E68400506CC7 /* GTMUIImage+Resize_100x50_to_40x60_noclip.png in Resources */ = {isa = PBXBuildFile; fileRef = 64D0F5D60FD3E68400506CC7 /* GTMUIImage+Resize_100x50_to_40x60_noclip.png */; };
- 64D0F5E90FD3E68400506CC7 /* GTMUIImage+Resize_100x50_to_50x50_clip.png in Resources */ = {isa = PBXBuildFile; fileRef = 64D0F5D70FD3E68400506CC7 /* GTMUIImage+Resize_100x50_to_50x50_clip.png */; };
- 64D0F5EA0FD3E68400506CC7 /* GTMUIImage+Resize_100x50_to_50x50_noclip.png in Resources */ = {isa = PBXBuildFile; fileRef = 64D0F5D80FD3E68400506CC7 /* GTMUIImage+Resize_100x50_to_50x50_noclip.png */; };
- 64D0F5EB0FD3E68400506CC7 /* GTMUIImage+Resize_100x50_to_60x40_clip.png in Resources */ = {isa = PBXBuildFile; fileRef = 64D0F5D90FD3E68400506CC7 /* GTMUIImage+Resize_100x50_to_60x40_clip.png */; };
- 64D0F5EC0FD3E68400506CC7 /* GTMUIImage+Resize_100x50_to_60x40_noclip.png in Resources */ = {isa = PBXBuildFile; fileRef = 64D0F5DA0FD3E68400506CC7 /* GTMUIImage+Resize_100x50_to_60x40_noclip.png */; };
64D0F5ED0FD3E68400506CC7 /* GTMUIImage+Resize_100x100.png in Resources */ = {isa = PBXBuildFile; fileRef = 64D0F5DB0FD3E68400506CC7 /* GTMUIImage+Resize_100x100.png */; };
- 64D0F5EE0FD3E68400506CC7 /* GTMUIImage+Resize_100x100_to_40x60.png in Resources */ = {isa = PBXBuildFile; fileRef = 64D0F5DC0FD3E68400506CC7 /* GTMUIImage+Resize_100x100_to_40x60.png */; };
- 64D0F5EF0FD3E68400506CC7 /* GTMUIImage+Resize_100x100_to_50x50.png in Resources */ = {isa = PBXBuildFile; fileRef = 64D0F5DD0FD3E68400506CC7 /* GTMUIImage+Resize_100x100_to_50x50.png */; };
67A7820C0E00927400EBF506 /* GTMIPhoneUnitTestDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 67A7820B0E00927400EBF506 /* GTMIPhoneUnitTestDelegate.m */; };
- 8B2908B211F8E7070064F50F /* GTMNSFileHandle+UniqueName.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B2908B011F8E7070064F50F /* GTMNSFileHandle+UniqueName.m */; };
- 8B2908B311F8E7070064F50F /* GTMNSFileHandle+UniqueNameTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B2908B111F8E7070064F50F /* GTMNSFileHandle+UniqueNameTest.m */; };
- 8B308BCE0DAD0B8400183556 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B308BCD0DAD0B8400183556 /* QuartzCore.framework */; };
- 8B3AA8F30E032FC7007E31B5 /* GTMNSString+URLArguments.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B3AA8F10E032FC7007E31B5 /* GTMNSString+URLArguments.m */; };
- 8B3AA8F40E032FC7007E31B5 /* GTMNSString+URLArgumentsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B3AA8F20E032FC7007E31B5 /* GTMNSString+URLArgumentsTest.m */; };
- 8B3AA9340E0336AC007E31B5 /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B3AA9330E0336AC007E31B5 /* CFNetwork.framework */; };
- 8B41EC0F0E0711D40040CF9F /* GTMValidatingContainersTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B41EC0C0E0711D40040CF9F /* GTMValidatingContainersTest.m */; };
- 8B41EC100E0711D40040CF9F /* GTMValidatingContainers.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B41EC0D0E0711D40040CF9F /* GTMValidatingContainers.m */; };
- 8B5547CA0DB3BBF20014CC1C /* GTMUIKit+UnitTesting.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B5547C70DB3BBF20014CC1C /* GTMUIKit+UnitTesting.m */; };
- 8B5547CB0DB3BBF20014CC1C /* GTMUIKit+UnitTestingTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B5547C90DB3BBF20014CC1C /* GTMUIKit+UnitTestingTest.m */; };
- 8B5A9E200E71CB6C005DA441 /* AddressBook.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B5A9E1F0E71CB6C005DA441 /* AddressBook.framework */; };
- 8B6C18740F3769D200E51E5D /* GTMNSObject+KeyValueObserving.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B6C18720F3769D200E51E5D /* GTMNSObject+KeyValueObserving.m */; };
- 8B6FF394151A664600B0642B /* GTMNSThread+Blocks.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B6FF392151A664600B0642B /* GTMNSThread+Blocks.m */; };
- 8B6FF395151A664600B0642B /* GTMNSThread+Blocks.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B6FF392151A664600B0642B /* GTMNSThread+Blocks.m */; };
- 8B6FF396151A664600B0642B /* GTMNSThread+BlocksTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B6FF393151A664600B0642B /* GTMNSThread+BlocksTest.m */; };
- 8B6FF397151A664600B0642B /* GTMNSThread+BlocksTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B6FF393151A664600B0642B /* GTMNSThread+BlocksTest.m */; };
- 8B6FF39A151A670100B0642B /* GTMFoundationUnitTestingUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B6FF399151A670100B0642B /* GTMFoundationUnitTestingUtilities.m */; };
- 8B6FF39B151A670100B0642B /* GTMFoundationUnitTestingUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B6FF399151A670100B0642B /* GTMFoundationUnitTestingUtilities.m */; };
- 8B7DCEAA0DFF4C760017E983 /* GTMDevLogUnitTestingBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B7DCEA90DFF4C760017E983 /* GTMDevLogUnitTestingBridge.m */; };
- 8B7DCEAD0DFF4CA60017E983 /* GTMUnitTestDevLog.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B7DCEAC0DFF4CA60017E983 /* GTMUnitTestDevLog.m */; };
- 8BB78FA911B94D9500AB31AF /* GTMGoogleSearch.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BB78FA711B94D9500AB31AF /* GTMGoogleSearch.m */; };
- 8BB78FAA11B94D9500AB31AF /* GTMGoogleSearchTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BB78FA811B94D9500AB31AF /* GTMGoogleSearchTest.m */; };
- 8BC0480F0DAE928A00C2D1CA /* GTMCalculatedRange.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047780DAE928A00C2D1CA /* GTMCalculatedRange.m */; };
- 8BC048100DAE928A00C2D1CA /* GTMCalculatedRangeTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047790DAE928A00C2D1CA /* GTMCalculatedRangeTest.m */; };
- 8BC048130DAE928A00C2D1CA /* GTMNSData+zlib.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC0477F0DAE928A00C2D1CA /* GTMNSData+zlib.m */; };
- 8BC048150DAE928A00C2D1CA /* GTMNSEnumerator+Filter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047820DAE928A00C2D1CA /* GTMNSEnumerator+Filter.m */; };
- 8BC048160DAE928A00C2D1CA /* GTMNSEnumerator+FilterTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047830DAE928A00C2D1CA /* GTMNSEnumerator+FilterTest.m */; };
- 8BC048170DAE928A00C2D1CA /* GTMNSFileManager+Path.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047850DAE928A00C2D1CA /* GTMNSFileManager+Path.m */; };
- 8BC048180DAE928A00C2D1CA /* GTMNSFileManager+PathTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047860DAE928A00C2D1CA /* GTMNSFileManager+PathTest.m */; };
- 8BC048190DAE928A00C2D1CA /* GTMNSString+HTML.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047880DAE928A00C2D1CA /* GTMNSString+HTML.m */; };
- 8BC0481A0DAE928A00C2D1CA /* GTMNSString+HTMLTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047890DAE928A00C2D1CA /* GTMNSString+HTMLTest.m */; };
- 8BC0481B0DAE928A00C2D1CA /* GTMNSString+XML.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC0478B0DAE928A00C2D1CA /* GTMNSString+XML.m */; };
- 8BC0481C0DAE928A00C2D1CA /* GTMNSString+XMLTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC0478C0DAE928A00C2D1CA /* GTMNSString+XMLTest.m */; };
- 8BC0481F0DAE928A00C2D1CA /* GTMRegex.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047920DAE928A00C2D1CA /* GTMRegex.m */; };
- 8BC048200DAE928A00C2D1CA /* GTMRegexTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047930DAE928A00C2D1CA /* GTMRegexTest.m */; };
- 8BC048250DAE928A00C2D1CA /* GTMMethodCheck.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC0479D0DAE928A00C2D1CA /* GTMMethodCheck.m */; };
- 8BC048260DAE928A00C2D1CA /* GTMMethodCheckTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC0479E0DAE928A00C2D1CA /* GTMMethodCheckTest.m */; };
- 8BC048270DAE928A00C2D1CA /* GTMCALayer+UnitTesting.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047A10DAE928A00C2D1CA /* GTMCALayer+UnitTesting.m */; };
- 8BC048580DAE928A00C2D1CA /* GTMIPhoneUnitTestMain.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047DD0DAE928A00C2D1CA /* GTMIPhoneUnitTestMain.m */; };
- 8BC048600DAE928A00C2D1CA /* GTMNSObject+UnitTesting.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047ED0DAE928A00C2D1CA /* GTMNSObject+UnitTesting.m */; };
- 8BC048650DAE928A00C2D1CA /* GTMSenTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047F70DAE928A00C2D1CA /* GTMSenTestCase.m */; };
- 8BC0486B0DAE928A00C2D1CA /* GTMUIViewUnitTestingTest.gtmUTState in Resources */ = {isa = PBXBuildFile; fileRef = 8BC048000DAE928A00C2D1CA /* GTMUIViewUnitTestingTest.gtmUTState */; };
- 8BC0486C0DAE928A00C2D1CA /* GTMUIViewUnitTestingTest.png in Resources */ = {isa = PBXBuildFile; fileRef = 8BC048010DAE928A00C2D1CA /* GTMUIViewUnitTestingTest.png */; };
- 8BC04A720DAF144700C2D1CA /* GTMSystemVersionTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC04A710DAF144700C2D1CA /* GTMSystemVersionTest.m */; };
- 8BC04A750DAF145200C2D1CA /* GTMSystemVersion.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC04A740DAF145200C2D1CA /* GTMSystemVersion.m */; };
- 8BC04D480DB0088500C2D1CA /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 8BC04D470DB0088500C2D1CA /* libz.dylib */; };
- 8BCB5AB111C02D7D009B6C40 /* GTMNSScanner+Unsigned.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BCB5AAF11C02D7D009B6C40 /* GTMNSScanner+Unsigned.m */; };
- 8BCB5AB211C02D7D009B6C40 /* GTMNSScanner+UnsignedTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BCB5AB011C02D7D009B6C40 /* GTMNSScanner+UnsignedTest.m */; };
- 8BD35C920FB234E1009058F5 /* GTMNSScanner+JSON.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BD35C900FB234E1009058F5 /* GTMNSScanner+JSON.m */; };
- 8BD35C930FB234E1009058F5 /* GTMNSScanner+JSONTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BD35C910FB234E1009058F5 /* GTMNSScanner+JSONTest.m */; };
- 8BDA25140E759A6500C9769D /* GTMNSData+zlibTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047800DAE928A00C2D1CA /* GTMNSData+zlibTest.m */; };
- 8BE839890E89C74B00C611B0 /* GTMDebugThreadValidation.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BE839870E89C74A00C611B0 /* GTMDebugThreadValidation.m */; };
- 8BE83A660E8B059A00C611B0 /* GTMDebugThreadValidationTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BE83A650E8B059A00C611B0 /* GTMDebugThreadValidationTest.m */; };
- 8BFE15C60FB0F764001BE894 /* GTMABAddressBook.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BFE15C10FB0F764001BE894 /* GTMABAddressBook.m */; };
+ 8B2C72E51D9EBB540027BD14 /* GTMUnitTestDevLog.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B2C72E41D9EBB540027BD14 /* GTMUnitTestDevLog.m */; };
+ 8B2C72EB1D9EBBA10027BD14 /* GTMTestTimerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B2C72EA1D9EBBA10027BD14 /* GTMTestTimerTest.m */; };
+ 8B7651D81D9C872F00DB2C59 /* GTMLogger+ASL.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B7651D61D9C872C00DB2C59 /* GTMLogger+ASL.m */; };
+ 8B7651D91D9C873200DB2C59 /* GTMLogger+ASLTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B7651D71D9C872C00DB2C59 /* GTMLogger+ASLTest.m */; };
+ 8B7651E11D9C89B800DB2C59 /* GTMRoundedRectPath.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B7651E01D9C89B800DB2C59 /* GTMRoundedRectPath.m */; };
+ 8B82CEFF1D9C1C3B007182AA /* GTMABAddressBook.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BFE15C10FB0F764001BE894 /* GTMABAddressBook.m */; };
+ 8B82CF001D9C1C3B007182AA /* GTMDebugThreadValidation.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BE839870E89C74A00C611B0 /* GTMDebugThreadValidation.m */; };
+ 8B82CF011D9C1C3B007182AA /* GTMMethodCheck.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC0479D0DAE928A00C2D1CA /* GTMMethodCheck.m */; };
+ 8B82CF021D9C1C3B007182AA /* GTMStringEncoding.m in Sources */ = {isa = PBXBuildFile; fileRef = 0BBC768910FEF61D0006FABE /* GTMStringEncoding.m */; };
+ 8B82CF031D9C1C3B007182AA /* GTMGeometryUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = F439ADEE0DBD3C4000BE9B91 /* GTMGeometryUtils.m */; };
+ 8B82CF041D9C1C3B007182AA /* GTMLightweightProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = F41711580ECDFF0400B9B276 /* GTMLightweightProxy.m */; };
+ 8B82CF051D9C1C3B007182AA /* GTMLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = F418AFA30E7559C7004FB565 /* GTMLogger.m */; };
+ 8B82CF061D9C1C3B007182AA /* GTMLoggerRingBufferWriter.m in Sources */ = {isa = PBXBuildFile; fileRef = F418AFB20E755B4D004FB565 /* GTMLoggerRingBufferWriter.m */; };
+ 8B82CF071D9C1C3B007182AA /* GTMNSArray+Merge.m in Sources */ = {isa = PBXBuildFile; fileRef = 629446180EDE177A009295EA /* GTMNSArray+Merge.m */; };
+ 8B82CF081D9C1C3B007182AA /* GTMNSData+zlib.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC0477F0DAE928A00C2D1CA /* GTMNSData+zlib.m */; };
+ 8B82CF091D9C1C3B007182AA /* GTMNSDictionary+URLArguments.m in Sources */ = {isa = PBXBuildFile; fileRef = F418AFCB0E755C94004FB565 /* GTMNSDictionary+URLArguments.m */; };
+ 8B82CF0A1D9C1C3B007182AA /* GTMNSFileManager+Path.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047850DAE928A00C2D1CA /* GTMNSFileManager+Path.m */; };
+ 8B82CF0B1D9C1C3B007182AA /* GTMNSFileHandle+UniqueName.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B2908B011F8E7070064F50F /* GTMNSFileHandle+UniqueName.m */; };
+ 8B82CF0C1D9C1C3B007182AA /* GTMNSNumber+64Bit.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B3080701056BDCE006C4C7A /* GTMNSNumber+64Bit.m */; };
+ 8B82CF0D1D9C1C3B007182AA /* GTMNSObject+KeyValueObserving.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B6C18720F3769D200E51E5D /* GTMNSObject+KeyValueObserving.m */; };
+ 8B82CF0E1D9C1C3B007182AA /* GTMNSScanner+JSON.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BD35C900FB234E1009058F5 /* GTMNSScanner+JSON.m */; };
+ 8B82CF0F1D9C1C3B007182AA /* GTMNSString+HTML.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047880DAE928A00C2D1CA /* GTMNSString+HTML.m */; };
+ 8B82CF101D9C1C3B007182AA /* GTMNSString+URLArguments.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B3AA8F10E032FC7007E31B5 /* GTMNSString+URLArguments.m */; };
+ 8B82CF111D9C1C3B007182AA /* GTMNSString+XML.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC0478B0DAE928A00C2D1CA /* GTMNSString+XML.m */; };
+ 8B82CF121D9C1C3B007182AA /* GTMNSThread+Blocks.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B6FF392151A664600B0642B /* GTMNSThread+Blocks.m */; };
+ 8B82CF131D9C1C3B007182AA /* GTMRegex.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047920DAE928A00C2D1CA /* GTMRegex.m */; };
+ 8B82CF141D9C1C3B007182AA /* GTMStackTrace.m in Sources */ = {isa = PBXBuildFile; fileRef = F4EF8AD50EBFF814008DD6DA /* GTMStackTrace.m */; };
+ 8B82CF151D9C1C3B007182AA /* GTMSystemVersion.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC04A740DAF145200C2D1CA /* GTMSystemVersion.m */; };
+ 8B82CF161D9C1C3B007182AA /* GTMURLBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = BE9B793E14FE99F3004A993A /* GTMURLBuilder.m */; };
+ 8B82CF171D9C1C3B007182AA /* GTMUILocalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 169E1E2B1459AAE100E6F562 /* GTMUILocalizer.m */; };
+ 8B82CF181D9C1C3B007182AA /* GTMFadeTruncatingLabel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9340CF9D140550CE0026DDC9 /* GTMFadeTruncatingLabel.m */; };
+ 8B82CF191D9C1C3B007182AA /* GTMUIFont+LineHeight.m in Sources */ = {isa = PBXBuildFile; fileRef = F4E3B3D70EB5EF2400CB713D /* GTMUIFont+LineHeight.m */; };
+ 8B82CF1A1D9C1C3B007182AA /* GTMUIImage+Resize.m in Sources */ = {isa = PBXBuildFile; fileRef = 64D0F5C70FD3E65C00506CC7 /* GTMUIImage+Resize.m */; };
+ 8B82CF1C1D9C1C3B007182AA /* GTMFoundationUnitTestingUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B6FF399151A670100B0642B /* GTMFoundationUnitTestingUtilities.m */; };
+ 8B82CF2C1D9C1CC5007182AA /* GTMStringEncodingTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 0BBC768A10FEF61D0006FABE /* GTMStringEncodingTest.m */; };
+ 8B82CF2E1D9C1DD4007182AA /* libGTM.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B82CEF61D9C17DE007182AA /* libGTM.a */; };
+ 8B82CF2F1D9C1E49007182AA /* GTMSenTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047F70DAE928A00C2D1CA /* GTMSenTestCase.m */; };
+ 8B82CF301D9C22F7007182AA /* GTMABAddressBook.strings in Resources */ = {isa = PBXBuildFile; fileRef = 8BFE15C20FB0F764001BE894 /* GTMABAddressBook.strings */; };
+ 8B82CF311D9C22F7007182AA /* GTMABAddressBookTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BFE15C30FB0F764001BE894 /* GTMABAddressBookTest.m */; };
+ 8B82CF321D9C2309007182AA /* AddressBook.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B5A9E1F0E71CB6C005DA441 /* AddressBook.framework */; };
+ 8B82CF331D9C231A007182AA /* phone.png in Resources */ = {isa = PBXBuildFile; fileRef = 8BFE15C50FB0F764001BE894 /* phone.png */; };
+ 8B82CF341D9C231F007182AA /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; };
+ 8B82CF351D9C2353007182AA /* GTMMethodCheckTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC0479E0DAE928A00C2D1CA /* GTMMethodCheckTest.m */; };
+ 8B82CF361D9C2373007182AA /* GTMGeometryUtilsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F439ADEF0DBD3C4000BE9B91 /* GTMGeometryUtilsTest.m */; };
+ 8B82CF371D9C2373007182AA /* GTMLightweightProxyTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F41711590ECDFF0400B9B276 /* GTMLightweightProxyTest.m */; };
+ 8B82CF381D9C2373007182AA /* GTMLoggerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F418AFA40E7559C7004FB565 /* GTMLoggerTest.m */; };
+ 8B82CF391D9C2373007182AA /* GTMLoggerRingBufferWriterTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F418AFB30E755B4D004FB565 /* GTMLoggerRingBufferWriterTest.m */; };
+ 8B82CF3A1D9C2373007182AA /* GTMNSArray+MergeTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 629446190EDE177A009295EA /* GTMNSArray+MergeTest.m */; };
+ 8B82CF3B1D9C2373007182AA /* GTMNSData+zlibTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047800DAE928A00C2D1CA /* GTMNSData+zlibTest.m */; };
+ 8B82CF3C1D9C2373007182AA /* GTMNSDictionary+URLArgumentsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F418AFCC0E755C94004FB565 /* GTMNSDictionary+URLArgumentsTest.m */; };
+ 8B82CF3D1D9C2373007182AA /* GTMNSFileManager+PathTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047860DAE928A00C2D1CA /* GTMNSFileManager+PathTest.m */; };
+ 8B82CF3E1D9C2373007182AA /* GTMNSFileHandle+UniqueNameTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B2908B111F8E7070064F50F /* GTMNSFileHandle+UniqueNameTest.m */; };
+ 8B82CF3F1D9C2373007182AA /* GTMNSNumber+64BitTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B3080711056BDCE006C4C7A /* GTMNSNumber+64BitTest.m */; };
+ 8B82CF401D9C2373007182AA /* GTMNSObject+KeyValueObservingTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B6C18730F3769D200E51E5D /* GTMNSObject+KeyValueObservingTest.m */; };
+ 8B82CF411D9C2373007182AA /* GTMNSScanner+JSONTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BD35C910FB234E1009058F5 /* GTMNSScanner+JSONTest.m */; };
+ 8B82CF421D9C2373007182AA /* GTMNSString+HTMLTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047890DAE928A00C2D1CA /* GTMNSString+HTMLTest.m */; };
+ 8B82CF431D9C2373007182AA /* GTMNSString+URLArgumentsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B3AA8F20E032FC7007E31B5 /* GTMNSString+URLArgumentsTest.m */; };
+ 8B82CF441D9C2373007182AA /* GTMNSString+XMLTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC0478C0DAE928A00C2D1CA /* GTMNSString+XMLTest.m */; };
+ 8B82CF451D9C2373007182AA /* GTMNSThread+BlocksTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B6FF393151A664600B0642B /* GTMNSThread+BlocksTest.m */; };
+ 8B82CF461D9C2373007182AA /* GTMRegexTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047930DAE928A00C2D1CA /* GTMRegexTest.m */; };
+ 8B82CF471D9C2373007182AA /* GTMStackTraceTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F4EF8AD60EBFF814008DD6DA /* GTMStackTraceTest.m */; };
+ 8B82CF481D9C2373007182AA /* GTMSystemVersionTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC04A710DAF144700C2D1CA /* GTMSystemVersionTest.m */; };
+ 8B82CF491D9C2373007182AA /* GTMURLBuilderTest.m in Sources */ = {isa = PBXBuildFile; fileRef = BE9B793F14FE99F3004A993A /* GTMURLBuilderTest.m */; };
+ 8B82CF4A1D9C2373007182AA /* GTMUILocalizerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 169E1E2D1459AAE100E6F562 /* GTMUILocalizerTest.m */; };
+ 8B82CF4B1D9C2373007182AA /* GTMUILocalizerTest.xib in Resources */ = {isa = PBXBuildFile; fileRef = 169E1E2E1459AAE100E6F562 /* GTMUILocalizerTest.xib */; };
+ 8B82CF4C1D9C2385007182AA /* GTMFadeTruncatingLabelTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 9340CF9E140550CE0026DDC9 /* GTMFadeTruncatingLabelTest.m */; };
+ 8B82CF4D1D9C2385007182AA /* GTMUIFont+LineHeightTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F4E3B3E10EB5EF9A00CB713D /* GTMUIFont+LineHeightTest.m */; };
+ 8B82CF4E1D9C2385007182AA /* GTMUIImage+ResizeTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 64D0F5C60FD3E65C00506CC7 /* GTMUIImage+ResizeTest.m */; };
+ 8B82CF501D9C2385007182AA /* GTMSenTestCaseTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F4746720129703600022C1FB /* GTMSenTestCaseTest.m */; };
+ 8B82CF511D9C239A007182AA /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 23220A05152C9E980060CB7D /* Security.framework */; };
+ 8B82CF521D9C239A007182AA /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D3623EB0D0F72F000981E51 /* CoreGraphics.framework */; };
+ 8B82CF591D9C25E0007182AA /* GTMUIImage+Resize_100x100.png in Resources */ = {isa = PBXBuildFile; fileRef = 64D0F5DB0FD3E68400506CC7 /* GTMUIImage+Resize_100x100.png */; };
+ 8B82CF5A1D9C25E0007182AA /* GTMUIImage+Resize_100x50.png in Resources */ = {isa = PBXBuildFile; fileRef = 64D0F5D40FD3E68400506CC7 /* GTMUIImage+Resize_100x50.png */; };
+ 8B82CF5B1D9C25E0007182AA /* GTMUIImage+Resize_50x100.png in Resources */ = {isa = PBXBuildFile; fileRef = 64D0F5CD0FD3E68400506CC7 /* GTMUIImage+Resize_50x100.png */; };
+ 8B82CF661D9C3366007182AA /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B82CEEE1D9C1559007182AA /* XCTest.framework */; };
+ 8B82CF671D9C35B8007182AA /* GTMIPhoneUnitTestMain.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047DD0DAE928A00C2D1CA /* GTMIPhoneUnitTestMain.m */; };
+ 8B82CF681D9C3689007182AA /* GTMSenTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047F70DAE928A00C2D1CA /* GTMSenTestCase.m */; };
+ 8BF753DB1D9DB3080010A295 /* GTMSQLite.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BF753DA1D9DB3080010A295 /* GTMSQLite.m */; };
+ 8BF753DD1D9DB30E0010A295 /* GTMSQLiteTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BF753DC1D9DB30E0010A295 /* GTMSQLiteTest.m */; };
+ 8BF753DF1D9DB3740010A295 /* libsqlite3.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 8BF753DE1D9DB3740010A295 /* libsqlite3.tbd */; };
8BFE15C70FB0F764001BE894 /* GTMABAddressBook.strings in Resources */ = {isa = PBXBuildFile; fileRef = 8BFE15C20FB0F764001BE894 /* GTMABAddressBook.strings */; };
- 8BFE15C80FB0F764001BE894 /* GTMABAddressBookTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BFE15C30FB0F764001BE894 /* GTMABAddressBookTest.m */; };
8BFE15C90FB0F764001BE894 /* phone.png in Resources */ = {isa = PBXBuildFile; fileRef = 8BFE15C50FB0F764001BE894 /* phone.png */; };
- 8BFFCD7811C1934900E45777 /* GTMNSObject+KeyValueObservingTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B6C18730F3769D200E51E5D /* GTMNSObject+KeyValueObservingTest.m */; };
- 9340CF9F140550CE0026DDC9 /* GTMFadeTruncatingLabel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9340CF9D140550CE0026DDC9 /* GTMFadeTruncatingLabel.m */; };
- 9340CFA0140550CE0026DDC9 /* GTMFadeTruncatingLabelTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 9340CF9E140550CE0026DDC9 /* GTMFadeTruncatingLabelTest.m */; };
- 9340CFA6140550E30026DDC9 /* GTMFadeTruncatingLabelTest1.png in Resources */ = {isa = PBXBuildFile; fileRef = 9340CFA1140550E30026DDC9 /* GTMFadeTruncatingLabelTest1.png */; };
- 9340CFA7140550E30026DDC9 /* GTMFadeTruncatingLabelTest2.png in Resources */ = {isa = PBXBuildFile; fileRef = 9340CFA2140550E30026DDC9 /* GTMFadeTruncatingLabelTest2.png */; };
- 9340CFA8140550E30026DDC9 /* GTMFadeTruncatingLabelTest3.png in Resources */ = {isa = PBXBuildFile; fileRef = 9340CFA3140550E30026DDC9 /* GTMFadeTruncatingLabelTest3.png */; };
- 9340CFA9140550E30026DDC9 /* GTMFadeTruncatingLabelTest4.png in Resources */ = {isa = PBXBuildFile; fileRef = 9340CFA4140550E30026DDC9 /* GTMFadeTruncatingLabelTest4.png */; };
- 9340CFAA140550E30026DDC9 /* GTMFadeTruncatingLabelTest5.png in Resources */ = {isa = PBXBuildFile; fileRef = 9340CFA5140550E30026DDC9 /* GTMFadeTruncatingLabelTest5.png */; };
- BE9B794114FE9A2C004A993A /* GTMURLBuilderTest.m in Sources */ = {isa = PBXBuildFile; fileRef = BE9B793F14FE99F3004A993A /* GTMURLBuilderTest.m */; };
- BE9B794214FE9A2E004A993A /* GTMURLBuilderTest.m in Sources */ = {isa = PBXBuildFile; fileRef = BE9B793F14FE99F3004A993A /* GTMURLBuilderTest.m */; };
- BE9B794314FE9A3E004A993A /* GTMURLBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = BE9B793E14FE99F3004A993A /* GTMURLBuilder.m */; };
- BE9B794414FE9A3E004A993A /* GTMURLBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = BE9B793E14FE99F3004A993A /* GTMURLBuilder.m */; };
- F417115A0ECDFF0400B9B276 /* GTMLightweightProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = F41711580ECDFF0400B9B276 /* GTMLightweightProxy.m */; };
- F417115B0ECDFF0400B9B276 /* GTMLightweightProxyTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F41711590ECDFF0400B9B276 /* GTMLightweightProxyTest.m */; };
- F418AF990E7558EC004FB565 /* GTMExceptionalInlines.m in Sources */ = {isa = PBXBuildFile; fileRef = F418AF940E7558DC004FB565 /* GTMExceptionalInlines.m */; };
- F418AF9A0E7558EC004FB565 /* GTMExceptionalInlinesTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F418AF950E7558DC004FB565 /* GTMExceptionalInlinesTest.m */; };
- F418AFA50E7559C7004FB565 /* GTMLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = F418AFA30E7559C7004FB565 /* GTMLogger.m */; };
- F418AFA60E7559C7004FB565 /* GTMLoggerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F418AFA40E7559C7004FB565 /* GTMLoggerTest.m */; };
- F418AFB40E755B4D004FB565 /* GTMLoggerRingBufferWriter.m in Sources */ = {isa = PBXBuildFile; fileRef = F418AFB20E755B4D004FB565 /* GTMLoggerRingBufferWriter.m */; };
- F418AFB50E755B4D004FB565 /* GTMLoggerRingBufferWriterTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F418AFB30E755B4D004FB565 /* GTMLoggerRingBufferWriterTest.m */; };
- F418AFCD0E755C94004FB565 /* GTMNSDictionary+URLArguments.m in Sources */ = {isa = PBXBuildFile; fileRef = F418AFCB0E755C94004FB565 /* GTMNSDictionary+URLArguments.m */; };
- F418AFCE0E755C94004FB565 /* GTMNSDictionary+URLArgumentsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F418AFCC0E755C94004FB565 /* GTMNSDictionary+URLArgumentsTest.m */; };
- F418AFD70E755D44004FB565 /* GTMPath.m in Sources */ = {isa = PBXBuildFile; fileRef = F418AFD50E755D44004FB565 /* GTMPath.m */; };
- F418AFD80E755D44004FB565 /* GTMPathTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F418AFD60E755D44004FB565 /* GTMPathTest.m */; };
- F439ADF00DBD3C4000BE9B91 /* GTMGeometryUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = F439ADEE0DBD3C4000BE9B91 /* GTMGeometryUtils.m */; };
- F439ADF10DBD3C4000BE9B91 /* GTMGeometryUtilsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F439ADEF0DBD3C4000BE9B91 /* GTMGeometryUtilsTest.m */; };
- F45F27B014F41441003A91E6 /* GTMFadeTruncatingLabelTest1.5.png in Resources */ = {isa = PBXBuildFile; fileRef = F45F27AB14F41441003A91E6 /* GTMFadeTruncatingLabelTest1.5.png */; };
- F45F27B114F41441003A91E6 /* GTMFadeTruncatingLabelTest1.5.png in Resources */ = {isa = PBXBuildFile; fileRef = F45F27AB14F41441003A91E6 /* GTMFadeTruncatingLabelTest1.5.png */; };
- F45F27B214F41441003A91E6 /* GTMFadeTruncatingLabelTest2.5.png in Resources */ = {isa = PBXBuildFile; fileRef = F45F27AC14F41441003A91E6 /* GTMFadeTruncatingLabelTest2.5.png */; };
- F45F27B314F41441003A91E6 /* GTMFadeTruncatingLabelTest2.5.png in Resources */ = {isa = PBXBuildFile; fileRef = F45F27AC14F41441003A91E6 /* GTMFadeTruncatingLabelTest2.5.png */; };
- F45F27B414F41441003A91E6 /* GTMFadeTruncatingLabelTest3.5.png in Resources */ = {isa = PBXBuildFile; fileRef = F45F27AD14F41441003A91E6 /* GTMFadeTruncatingLabelTest3.5.png */; };
- F45F27B514F41441003A91E6 /* GTMFadeTruncatingLabelTest3.5.png in Resources */ = {isa = PBXBuildFile; fileRef = F45F27AD14F41441003A91E6 /* GTMFadeTruncatingLabelTest3.5.png */; };
- F45F27B614F41441003A91E6 /* GTMFadeTruncatingLabelTest4.5.png in Resources */ = {isa = PBXBuildFile; fileRef = F45F27AE14F41441003A91E6 /* GTMFadeTruncatingLabelTest4.5.png */; };
- F45F27B714F41441003A91E6 /* GTMFadeTruncatingLabelTest4.5.png in Resources */ = {isa = PBXBuildFile; fileRef = F45F27AE14F41441003A91E6 /* GTMFadeTruncatingLabelTest4.5.png */; };
- F45F27B814F41441003A91E6 /* GTMFadeTruncatingLabelTest5.5.png in Resources */ = {isa = PBXBuildFile; fileRef = F45F27AF14F41441003A91E6 /* GTMFadeTruncatingLabelTest5.5.png */; };
- F45F27B914F41441003A91E6 /* GTMFadeTruncatingLabelTest5.5.png in Resources */ = {isa = PBXBuildFile; fileRef = F45F27AF14F41441003A91E6 /* GTMFadeTruncatingLabelTest5.5.png */; };
F4746721129703600022C1FB /* GTMSenTestCaseTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F4746720129703600022C1FB /* GTMSenTestCaseTest.m */; };
- F4C35E70164EB3A300688B6E /* GTMFadeTruncatingLabelTest1.6.png in Resources */ = {isa = PBXBuildFile; fileRef = F4C35E6B164EB39F00688B6E /* GTMFadeTruncatingLabelTest1.6.png */; };
- F4C35E71164EB3A300688B6E /* GTMFadeTruncatingLabelTest1.6.png in Resources */ = {isa = PBXBuildFile; fileRef = F4C35E6B164EB39F00688B6E /* GTMFadeTruncatingLabelTest1.6.png */; };
- F4C35E72164EB3A300688B6E /* GTMFadeTruncatingLabelTest2.6.png in Resources */ = {isa = PBXBuildFile; fileRef = F4C35E6C164EB39F00688B6E /* GTMFadeTruncatingLabelTest2.6.png */; };
- F4C35E73164EB3A300688B6E /* GTMFadeTruncatingLabelTest2.6.png in Resources */ = {isa = PBXBuildFile; fileRef = F4C35E6C164EB39F00688B6E /* GTMFadeTruncatingLabelTest2.6.png */; };
- F4C35E74164EB3A300688B6E /* GTMFadeTruncatingLabelTest3.6.png in Resources */ = {isa = PBXBuildFile; fileRef = F4C35E6D164EB3A000688B6E /* GTMFadeTruncatingLabelTest3.6.png */; };
- F4C35E75164EB3A300688B6E /* GTMFadeTruncatingLabelTest3.6.png in Resources */ = {isa = PBXBuildFile; fileRef = F4C35E6D164EB3A000688B6E /* GTMFadeTruncatingLabelTest3.6.png */; };
- F4C35E76164EB3A300688B6E /* GTMFadeTruncatingLabelTest4.6.png in Resources */ = {isa = PBXBuildFile; fileRef = F4C35E6E164EB3A100688B6E /* GTMFadeTruncatingLabelTest4.6.png */; };
- F4C35E77164EB3A300688B6E /* GTMFadeTruncatingLabelTest4.6.png in Resources */ = {isa = PBXBuildFile; fileRef = F4C35E6E164EB3A100688B6E /* GTMFadeTruncatingLabelTest4.6.png */; };
- F4C35E78164EB3A300688B6E /* GTMFadeTruncatingLabelTest5.6.png in Resources */ = {isa = PBXBuildFile; fileRef = F4C35E6F164EB3A100688B6E /* GTMFadeTruncatingLabelTest5.6.png */; };
- F4C35E79164EB3A300688B6E /* GTMFadeTruncatingLabelTest5.6.png in Resources */ = {isa = PBXBuildFile; fileRef = F4C35E6F164EB3A100688B6E /* GTMFadeTruncatingLabelTest5.6.png */; };
- F4D20EB114852CA40001600C /* GTMABAddressBook.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BFE15C10FB0F764001BE894 /* GTMABAddressBook.m */; };
- F4D20EB214852CA40001600C /* GTMABAddressBook.strings in Resources */ = {isa = PBXBuildFile; fileRef = 8BFE15C20FB0F764001BE894 /* GTMABAddressBook.strings */; };
- F4D20EB314852CA40001600C /* GTMABAddressBookTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BFE15C30FB0F764001BE894 /* GTMABAddressBookTest.m */; };
- F4D20EB414852CA40001600C /* GTMCALayer+UnitTesting.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047A10DAE928A00C2D1CA /* GTMCALayer+UnitTesting.m */; };
- F4D20EB514852CA40001600C /* GTMCalculatedRange.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047780DAE928A00C2D1CA /* GTMCalculatedRange.m */; };
- F4D20EB614852CA40001600C /* GTMCalculatedRangeTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047790DAE928A00C2D1CA /* GTMCalculatedRangeTest.m */; };
- F4D20EB714852CA40001600C /* GTMDebugThreadValidation.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BE839870E89C74A00C611B0 /* GTMDebugThreadValidation.m */; };
- F4D20EB814852CA40001600C /* GTMDebugThreadValidationTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BE83A650E8B059A00C611B0 /* GTMDebugThreadValidationTest.m */; };
- F4D20EB914852CA40001600C /* GTMDevLogUnitTestingBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B7DCEA90DFF4C760017E983 /* GTMDevLogUnitTestingBridge.m */; };
- F4D20EBA14852CA40001600C /* GTMExceptionalInlines.m in Sources */ = {isa = PBXBuildFile; fileRef = F418AF940E7558DC004FB565 /* GTMExceptionalInlines.m */; };
- F4D20EBB14852CA40001600C /* GTMExceptionalInlinesTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F418AF950E7558DC004FB565 /* GTMExceptionalInlinesTest.m */; };
- F4D20EBC14852CA40001600C /* GTMFadeTruncatingLabel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9340CF9D140550CE0026DDC9 /* GTMFadeTruncatingLabel.m */; };
- F4D20EBD14852CA40001600C /* GTMFadeTruncatingLabelTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 9340CF9E140550CE0026DDC9 /* GTMFadeTruncatingLabelTest.m */; };
- F4D20EBE14852CA40001600C /* GTMFadeTruncatingLabelTest1.png in Resources */ = {isa = PBXBuildFile; fileRef = 9340CFA1140550E30026DDC9 /* GTMFadeTruncatingLabelTest1.png */; };
- F4D20EBF14852CA40001600C /* GTMFadeTruncatingLabelTest2.png in Resources */ = {isa = PBXBuildFile; fileRef = 9340CFA2140550E30026DDC9 /* GTMFadeTruncatingLabelTest2.png */; };
- F4D20EC014852CA40001600C /* GTMFadeTruncatingLabelTest3.png in Resources */ = {isa = PBXBuildFile; fileRef = 9340CFA3140550E30026DDC9 /* GTMFadeTruncatingLabelTest3.png */; };
- F4D20EC114852CA40001600C /* GTMFadeTruncatingLabelTest4.png in Resources */ = {isa = PBXBuildFile; fileRef = 9340CFA4140550E30026DDC9 /* GTMFadeTruncatingLabelTest4.png */; };
- F4D20EC214852CA40001600C /* GTMFadeTruncatingLabelTest5.png in Resources */ = {isa = PBXBuildFile; fileRef = 9340CFA5140550E30026DDC9 /* GTMFadeTruncatingLabelTest5.png */; };
- F4D20EC314852CA40001600C /* GTMGeometryUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = F439ADEE0DBD3C4000BE9B91 /* GTMGeometryUtils.m */; };
- F4D20EC414852CA40001600C /* GTMGeometryUtilsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F439ADEF0DBD3C4000BE9B91 /* GTMGeometryUtilsTest.m */; };
- F4D20EC514852CA40001600C /* GTMGoogleSearch.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BB78FA711B94D9500AB31AF /* GTMGoogleSearch.m */; };
- F4D20EC614852CA40001600C /* GTMGoogleSearchTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BB78FA811B94D9500AB31AF /* GTMGoogleSearchTest.m */; };
- F4D20EC914852CA40001600C /* GTMLightweightProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = F41711580ECDFF0400B9B276 /* GTMLightweightProxy.m */; };
- F4D20ECA14852CA40001600C /* GTMLightweightProxyTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F41711590ECDFF0400B9B276 /* GTMLightweightProxyTest.m */; };
- F4D20ECB14852CA40001600C /* GTMLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = F418AFA30E7559C7004FB565 /* GTMLogger.m */; };
- F4D20ECC14852CA40001600C /* GTMLoggerRingBufferWriter.m in Sources */ = {isa = PBXBuildFile; fileRef = F418AFB20E755B4D004FB565 /* GTMLoggerRingBufferWriter.m */; };
- F4D20ECD14852CA40001600C /* GTMLoggerRingBufferWriterTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F418AFB30E755B4D004FB565 /* GTMLoggerRingBufferWriterTest.m */; };
- F4D20ECE14852CA40001600C /* GTMLoggerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F418AFA40E7559C7004FB565 /* GTMLoggerTest.m */; };
- F4D20ECF14852CA40001600C /* GTMMethodCheck.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC0479D0DAE928A00C2D1CA /* GTMMethodCheck.m */; };
- F4D20ED014852CA40001600C /* GTMMethodCheckTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC0479E0DAE928A00C2D1CA /* GTMMethodCheckTest.m */; };
- F4D20ED114852CA40001600C /* GTMNSArray+Merge.m in Sources */ = {isa = PBXBuildFile; fileRef = 629446180EDE177A009295EA /* GTMNSArray+Merge.m */; };
- F4D20ED214852CA40001600C /* GTMNSArray+MergeTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 629446190EDE177A009295EA /* GTMNSArray+MergeTest.m */; };
- F4D20ED314852CA40001600C /* GTMNSData+zlib.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC0477F0DAE928A00C2D1CA /* GTMNSData+zlib.m */; };
- F4D20ED414852CA40001600C /* GTMNSData+zlibTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047800DAE928A00C2D1CA /* GTMNSData+zlibTest.m */; };
- F4D20ED514852CA40001600C /* GTMNSDictionary+CaseInsensitive.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B859D9D104D08050064FE46 /* GTMNSDictionary+CaseInsensitive.m */; };
- F4D20ED614852CA40001600C /* GTMNSDictionary+CaseInsensitiveTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B859D9E104D08050064FE46 /* GTMNSDictionary+CaseInsensitiveTest.m */; };
- F4D20ED714852CA40001600C /* GTMNSDictionary+URLArguments.m in Sources */ = {isa = PBXBuildFile; fileRef = F418AFCB0E755C94004FB565 /* GTMNSDictionary+URLArguments.m */; };
- F4D20ED814852CA40001600C /* GTMNSDictionary+URLArgumentsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F418AFCC0E755C94004FB565 /* GTMNSDictionary+URLArgumentsTest.m */; };
- F4D20ED914852CA40001600C /* GTMNSEnumerator+Filter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047820DAE928A00C2D1CA /* GTMNSEnumerator+Filter.m */; };
- F4D20EDA14852CA40001600C /* GTMNSEnumerator+FilterTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047830DAE928A00C2D1CA /* GTMNSEnumerator+FilterTest.m */; };
- F4D20EDB14852CA40001600C /* GTMNSFileHandle+UniqueName.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B2908B011F8E7070064F50F /* GTMNSFileHandle+UniqueName.m */; };
- F4D20EDC14852CA40001600C /* GTMNSFileHandle+UniqueNameTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B2908B111F8E7070064F50F /* GTMNSFileHandle+UniqueNameTest.m */; };
- F4D20EDD14852CA40001600C /* GTMNSFileManager+Path.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047850DAE928A00C2D1CA /* GTMNSFileManager+Path.m */; };
- F4D20EDE14852CA40001600C /* GTMNSFileManager+PathTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047860DAE928A00C2D1CA /* GTMNSFileManager+PathTest.m */; };
- F4D20EDF14852CA40001600C /* GTMNSObject+KeyValueObserving.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B6C18720F3769D200E51E5D /* GTMNSObject+KeyValueObserving.m */; };
- F4D20EE014852CA40001600C /* GTMNSObject+KeyValueObservingTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B6C18730F3769D200E51E5D /* GTMNSObject+KeyValueObservingTest.m */; };
- F4D20EE114852CA40001600C /* GTMNSObject+UnitTesting.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047ED0DAE928A00C2D1CA /* GTMNSObject+UnitTesting.m */; };
- F4D20EE214852CA40001600C /* GTMNSScanner+JSON.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BD35C900FB234E1009058F5 /* GTMNSScanner+JSON.m */; };
- F4D20EE314852CA40001600C /* GTMNSScanner+JSONTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BD35C910FB234E1009058F5 /* GTMNSScanner+JSONTest.m */; };
- F4D20EE414852CA40001600C /* GTMNSScanner+Unsigned.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BCB5AAF11C02D7D009B6C40 /* GTMNSScanner+Unsigned.m */; };
- F4D20EE514852CA40001600C /* GTMNSScanner+UnsignedTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BCB5AB011C02D7D009B6C40 /* GTMNSScanner+UnsignedTest.m */; };
- F4D20EE614852CA40001600C /* GTMNSString+HTML.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047880DAE928A00C2D1CA /* GTMNSString+HTML.m */; };
- F4D20EE714852CA40001600C /* GTMNSString+HTMLTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047890DAE928A00C2D1CA /* GTMNSString+HTMLTest.m */; };
- F4D20EE814852CA40001600C /* GTMNSString+URLArguments.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B3AA8F10E032FC7007E31B5 /* GTMNSString+URLArguments.m */; };
- F4D20EE914852CA40001600C /* GTMNSString+URLArgumentsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B3AA8F20E032FC7007E31B5 /* GTMNSString+URLArgumentsTest.m */; };
- F4D20EEA14852CA40001600C /* GTMNSString+XML.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC0478B0DAE928A00C2D1CA /* GTMNSString+XML.m */; };
- F4D20EEB14852CA40001600C /* GTMNSString+XMLTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC0478C0DAE928A00C2D1CA /* GTMNSString+XMLTest.m */; };
- F4D20EEC14852CA40001600C /* GTMPath.m in Sources */ = {isa = PBXBuildFile; fileRef = F418AFD50E755D44004FB565 /* GTMPath.m */; };
- F4D20EED14852CA40001600C /* GTMPathTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F418AFD60E755D44004FB565 /* GTMPathTest.m */; };
- F4D20EEE14852CA40001600C /* GTMRegex.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047920DAE928A00C2D1CA /* GTMRegex.m */; };
- F4D20EEF14852CA40001600C /* GTMRegexTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047930DAE928A00C2D1CA /* GTMRegexTest.m */; };
- F4D20EF014852CA40001600C /* GTMSenTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047F70DAE928A00C2D1CA /* GTMSenTestCase.m */; };
- F4D20EF114852CA40001600C /* GTMSenTestCaseTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F4746720129703600022C1FB /* GTMSenTestCaseTest.m */; };
- F4D20EF214852CA40001600C /* GTMStackTrace.m in Sources */ = {isa = PBXBuildFile; fileRef = F4EF8AD50EBFF814008DD6DA /* GTMStackTrace.m */; };
- F4D20EF314852CA40001600C /* GTMStackTraceTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F4EF8AD60EBFF814008DD6DA /* GTMStackTraceTest.m */; };
- F4D20EF414852CA40001600C /* GTMStringEncoding.m in Sources */ = {isa = PBXBuildFile; fileRef = 0BBC768910FEF61D0006FABE /* GTMStringEncoding.m */; };
- F4D20EF514852CA40001600C /* GTMStringEncodingTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 0BBC768A10FEF61D0006FABE /* GTMStringEncodingTest.m */; };
- F4D20EF614852CA40001600C /* GTMSystemVersion.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC04A740DAF145200C2D1CA /* GTMSystemVersion.m */; };
- F4D20EF714852CA40001600C /* GTMSystemVersionTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC04A710DAF144700C2D1CA /* GTMSystemVersionTest.m */; };
- F4D20EF814852CA40001600C /* GTMUIFont+LineHeight.m in Sources */ = {isa = PBXBuildFile; fileRef = F4E3B3D70EB5EF2400CB713D /* GTMUIFont+LineHeight.m */; };
- F4D20EF914852CA40001600C /* GTMUIFont+LineHeightTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F4E3B3E10EB5EF9A00CB713D /* GTMUIFont+LineHeightTest.m */; };
- F4D20EFA14852CA40001600C /* GTMUIImage+Resize.m in Sources */ = {isa = PBXBuildFile; fileRef = 64D0F5C70FD3E65C00506CC7 /* GTMUIImage+Resize.m */; };
- F4D20EFB14852CA40001600C /* GTMUIImage+Resize_100x100.png in Resources */ = {isa = PBXBuildFile; fileRef = 64D0F5DB0FD3E68400506CC7 /* GTMUIImage+Resize_100x100.png */; };
- F4D20EFC14852CA40001600C /* GTMUIImage+Resize_100x100_to_40x60.png in Resources */ = {isa = PBXBuildFile; fileRef = 64D0F5DC0FD3E68400506CC7 /* GTMUIImage+Resize_100x100_to_40x60.png */; };
- F4D20EFD14852CA40001600C /* GTMUIImage+Resize_100x100_to_50x50.png in Resources */ = {isa = PBXBuildFile; fileRef = 64D0F5DD0FD3E68400506CC7 /* GTMUIImage+Resize_100x100_to_50x50.png */; };
- F4D20EFE14852CA40001600C /* GTMUIImage+Resize_100x100_to_60x40.png in Resources */ = {isa = PBXBuildFile; fileRef = 64D0F5CC0FD3E68400506CC7 /* GTMUIImage+Resize_100x100_to_60x40.png */; };
- F4D20EFF14852CA40001600C /* GTMUIImage+Resize_100x50.png in Resources */ = {isa = PBXBuildFile; fileRef = 64D0F5D40FD3E68400506CC7 /* GTMUIImage+Resize_100x50.png */; };
- F4D20F0014852CA40001600C /* GTMUIImage+Resize_100x50_flipped.png in Resources */ = {isa = PBXBuildFile; fileRef = 448D61B111AC1AAD0097ACBC /* GTMUIImage+Resize_100x50_flipped.png */; };
- F4D20F0114852CA40001600C /* GTMUIImage+Resize_100x50_to_40x60_clip.png in Resources */ = {isa = PBXBuildFile; fileRef = 64D0F5D50FD3E68400506CC7 /* GTMUIImage+Resize_100x50_to_40x60_clip.png */; };
- F4D20F0214852CA40001600C /* GTMUIImage+Resize_100x50_to_40x60_noclip.png in Resources */ = {isa = PBXBuildFile; fileRef = 64D0F5D60FD3E68400506CC7 /* GTMUIImage+Resize_100x50_to_40x60_noclip.png */; };
- F4D20F0314852CA40001600C /* GTMUIImage+Resize_100x50_to_50x50_clip.png in Resources */ = {isa = PBXBuildFile; fileRef = 64D0F5D70FD3E68400506CC7 /* GTMUIImage+Resize_100x50_to_50x50_clip.png */; };
- F4D20F0414852CA40001600C /* GTMUIImage+Resize_100x50_to_50x50_noclip.png in Resources */ = {isa = PBXBuildFile; fileRef = 64D0F5D80FD3E68400506CC7 /* GTMUIImage+Resize_100x50_to_50x50_noclip.png */; };
- F4D20F0514852CA40001600C /* GTMUIImage+Resize_100x50_to_60x40_clip.png in Resources */ = {isa = PBXBuildFile; fileRef = 64D0F5D90FD3E68400506CC7 /* GTMUIImage+Resize_100x50_to_60x40_clip.png */; };
- F4D20F0614852CA40001600C /* GTMUIImage+Resize_100x50_to_60x40_noclip.png in Resources */ = {isa = PBXBuildFile; fileRef = 64D0F5DA0FD3E68400506CC7 /* GTMUIImage+Resize_100x50_to_60x40_noclip.png */; };
- F4D20F0714852CA40001600C /* GTMUIImage+Resize_50x100.png in Resources */ = {isa = PBXBuildFile; fileRef = 64D0F5CD0FD3E68400506CC7 /* GTMUIImage+Resize_50x100.png */; };
- F4D20F0814852CA40001600C /* GTMUIImage+Resize_50x100_flipped.png in Resources */ = {isa = PBXBuildFile; fileRef = 448D61B011AC1AAD0097ACBC /* GTMUIImage+Resize_50x100_flipped.png */; };
- F4D20F0914852CA40001600C /* GTMUIImage+Resize_50x100_to_40x60_clip.png in Resources */ = {isa = PBXBuildFile; fileRef = 64D0F5CE0FD3E68400506CC7 /* GTMUIImage+Resize_50x100_to_40x60_clip.png */; };
- F4D20F0A14852CA40001600C /* GTMUIImage+Resize_50x100_to_40x60_noclip.png in Resources */ = {isa = PBXBuildFile; fileRef = 64D0F5CF0FD3E68400506CC7 /* GTMUIImage+Resize_50x100_to_40x60_noclip.png */; };
- F4D20F0B14852CA40001600C /* GTMUIImage+Resize_50x100_to_50x50_clip.png in Resources */ = {isa = PBXBuildFile; fileRef = 64D0F5D00FD3E68400506CC7 /* GTMUIImage+Resize_50x100_to_50x50_clip.png */; };
- F4D20F0C14852CA40001600C /* GTMUIImage+Resize_50x100_to_50x50_noclip.png in Resources */ = {isa = PBXBuildFile; fileRef = 64D0F5D10FD3E68400506CC7 /* GTMUIImage+Resize_50x100_to_50x50_noclip.png */; };
- F4D20F0D14852CA40001600C /* GTMUIImage+Resize_50x100_to_60x40_clip.png in Resources */ = {isa = PBXBuildFile; fileRef = 64D0F5D20FD3E68400506CC7 /* GTMUIImage+Resize_50x100_to_60x40_clip.png */; };
- F4D20F0E14852CA40001600C /* GTMUIImage+Resize_50x100_to_60x40_noclip.png in Resources */ = {isa = PBXBuildFile; fileRef = 64D0F5D30FD3E68400506CC7 /* GTMUIImage+Resize_50x100_to_60x40_noclip.png */; };
- F4D20F0F14852CA40001600C /* GTMUIImage+ResizeTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 64D0F5C60FD3E65C00506CC7 /* GTMUIImage+ResizeTest.m */; };
- F4D20F1014852CA40001600C /* GTMUIKit+UnitTesting.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B5547C70DB3BBF20014CC1C /* GTMUIKit+UnitTesting.m */; };
- F4D20F1114852CA40001600C /* GTMUIKit+UnitTestingTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B5547C90DB3BBF20014CC1C /* GTMUIKit+UnitTestingTest.m */; };
- F4D20F1214852CA40001600C /* GTMUILocalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 169E1E2B1459AAE100E6F562 /* GTMUILocalizer.m */; };
- F4D20F1314852CA40001600C /* GTMUILocalizerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 169E1E2D1459AAE100E6F562 /* GTMUILocalizerTest.m */; };
- F4D20F1414852CA40001600C /* GTMUILocalizerTest.xib in Resources */ = {isa = PBXBuildFile; fileRef = 169E1E2E1459AAE100E6F562 /* GTMUILocalizerTest.xib */; };
- F4D20F1514852CA40001600C /* GTMUIView+SubtreeDescription.m in Sources */ = {isa = PBXBuildFile; fileRef = 13C1ED4C104896C900907CD8 /* GTMUIView+SubtreeDescription.m */; };
- F4D20F1614852CA40001600C /* GTMUIView+SubtreeDescriptionTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 13C1ED4D104896C900907CD8 /* GTMUIView+SubtreeDescriptionTest.m */; };
- F4D20F1714852CA40001600C /* GTMUIViewUnitTestingTest.gtmUTState in Resources */ = {isa = PBXBuildFile; fileRef = 8BC048000DAE928A00C2D1CA /* GTMUIViewUnitTestingTest.gtmUTState */; };
- F4D20F1814852CA40001600C /* GTMUIViewUnitTestingTest.png in Resources */ = {isa = PBXBuildFile; fileRef = 8BC048010DAE928A00C2D1CA /* GTMUIViewUnitTestingTest.png */; };
- F4D20F1914852CA40001600C /* GTMUnitTestDevLog.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B7DCEAC0DFF4CA60017E983 /* GTMUnitTestDevLog.m */; };
- F4D20F1A14852CA40001600C /* GTMValidatingContainers.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B41EC0D0E0711D40040CF9F /* GTMValidatingContainers.m */; };
- F4D20F1B14852CA40001600C /* GTMValidatingContainersTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B41EC0C0E0711D40040CF9F /* GTMValidatingContainersTest.m */; };
- F4D20F1C14852CA40001600C /* phone.png in Resources */ = {isa = PBXBuildFile; fileRef = 8BFE15C50FB0F764001BE894 /* phone.png */; };
- F4D20F2114852D130001600C /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B3AA9330E0336AC007E31B5 /* CFNetwork.framework */; };
- F4D20F2214852D130001600C /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D3623EB0D0F72F000981E51 /* CoreGraphics.framework */; };
- F4D20F2314852D130001600C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; };
- F4D20F2414852D130001600C /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B308BCD0DAD0B8400183556 /* QuartzCore.framework */; };
- F4D20F2514852D130001600C /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; };
- F4D20F2614852D130001600C /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 8BC04D470DB0088500C2D1CA /* libz.dylib */; };
- F4D20F4E148532D50001600C /* AddressBook.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B5A9E1F0E71CB6C005DA441 /* AddressBook.framework */; };
- F4E3B3D80EB5EF2400CB713D /* GTMUIFont+LineHeight.m in Sources */ = {isa = PBXBuildFile; fileRef = F4E3B3D70EB5EF2400CB713D /* GTMUIFont+LineHeight.m */; };
- F4E3B3E20EB5EF9A00CB713D /* GTMUIFont+LineHeightTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F4E3B3E10EB5EF9A00CB713D /* GTMUIFont+LineHeightTest.m */; };
- F4E4E1151485378B00C2E584 /* SenTestingKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F4E4E1141485378B00C2E584 /* SenTestingKit.framework */; };
- F4EF8AD70EBFF814008DD6DA /* GTMStackTrace.m in Sources */ = {isa = PBXBuildFile; fileRef = F4EF8AD50EBFF814008DD6DA /* GTMStackTrace.m */; };
- F4EF8AD80EBFF814008DD6DA /* GTMStackTraceTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F4EF8AD60EBFF814008DD6DA /* GTMStackTraceTest.m */; };
- F4F1D87814853D8F00E05BB6 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; };
- F4F1D88814853E0A00E05BB6 /* GTMIPhoneUnitTestMain.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047DD0DAE928A00C2D1CA /* GTMIPhoneUnitTestMain.m */; };
- F4F1D88E14853E6100E05BB6 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; };
/* End PBXBuildFile section */
-/* Begin PBXContainerItemProxy section */
- F4C7F9C30DC62ECD009BEE5B /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = 1D6058900D05DD3D006BFB54;
- remoteInfo = GTMiPhoneUnitTesting;
- };
- F4D20F1D14852CAB0001600C /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = F4D20EA914852BFB0001600C;
- remoteInfo = GTMiPhoneUnitTestingOCUnit;
- };
- F4F1D88914853E0F00E05BB6 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = F4F1D80714853D8F00E05BB6;
- remoteInfo = GTMiPhoneUnitTestingOCUnitTestRig;
+/* Begin PBXCopyFilesBuildPhase section */
+ 8B82CEF41D9C17DE007182AA /* CopyFiles */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 2147483647;
+ dstPath = "include/$(PRODUCT_NAME)";
+ dstSubfolderSpec = 16;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
};
-/* End PBXContainerItemProxy section */
+/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
- 0B859D9C104D08050064FE46 /* GTMNSDictionary+CaseInsensitive.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSDictionary+CaseInsensitive.h"; sourceTree = "<group>"; };
- 0B859D9D104D08050064FE46 /* GTMNSDictionary+CaseInsensitive.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSDictionary+CaseInsensitive.m"; sourceTree = "<group>"; };
- 0B859D9E104D08050064FE46 /* GTMNSDictionary+CaseInsensitiveTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSDictionary+CaseInsensitiveTest.m"; sourceTree = "<group>"; };
0BBC768810FEF61D0006FABE /* GTMStringEncoding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GTMStringEncoding.h; path = Foundation/GTMStringEncoding.h; sourceTree = SOURCE_ROOT; };
0BBC768910FEF61D0006FABE /* GTMStringEncoding.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = GTMStringEncoding.m; path = Foundation/GTMStringEncoding.m; sourceTree = SOURCE_ROOT; };
0BBC768A10FEF61D0006FABE /* GTMStringEncodingTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = GTMStringEncodingTest.m; path = Foundation/GTMStringEncodingTest.m; sourceTree = SOURCE_ROOT; };
- 13C1ED4C104896C900907CD8 /* GTMUIView+SubtreeDescription.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMUIView+SubtreeDescription.m"; sourceTree = "<group>"; };
- 13C1ED4D104896C900907CD8 /* GTMUIView+SubtreeDescriptionTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMUIView+SubtreeDescriptionTest.m"; sourceTree = "<group>"; };
- 13C1ED4E104896C900907CD8 /* GTMUIView+SubtreeDescription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMUIView+SubtreeDescription.h"; sourceTree = "<group>"; };
169E1E2A1459AAE100E6F562 /* GTMUILocalizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMUILocalizer.h; sourceTree = "<group>"; };
169E1E2B1459AAE100E6F562 /* GTMUILocalizer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMUILocalizer.m; sourceTree = "<group>"; };
169E1E2C1459AAE100E6F562 /* GTMUILocalizerTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMUILocalizerTest.h; sourceTree = "<group>"; };
@@ -334,39 +124,24 @@
1D6058910D05DD3D006BFB54 /* GTMiPhoneTest.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = GTMiPhoneTest.app; sourceTree = BUILT_PRODUCTS_DIR; };
1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
23220A05152C9E980060CB7D /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; };
- 234E17DB152CECFB00CF3542 /* GTMIPhoneSecurityLibraryTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMIPhoneSecurityLibraryTest.m; sourceTree = "<group>"; };
- 32CA4F630368D1EE00C91783 /* GTM_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTM_Prefix.pch; sourceTree = "<group>"; };
- 448D61B011AC1AAD0097ACBC /* GTMUIImage+Resize_50x100_flipped.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "GTMUIImage+Resize_50x100_flipped.png"; path = "TestData/GTMUIImage+Resize_50x100_flipped.png"; sourceTree = "<group>"; };
- 448D61B111AC1AAD0097ACBC /* GTMUIImage+Resize_100x50_flipped.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "GTMUIImage+Resize_100x50_flipped.png"; path = "TestData/GTMUIImage+Resize_100x50_flipped.png"; sourceTree = "<group>"; };
629446170EDE177A009295EA /* GTMNSArray+Merge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSArray+Merge.h"; sourceTree = "<group>"; };
629446180EDE177A009295EA /* GTMNSArray+Merge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSArray+Merge.m"; sourceTree = "<group>"; };
629446190EDE177A009295EA /* GTMNSArray+MergeTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSArray+MergeTest.m"; sourceTree = "<group>"; };
64D0F5C50FD3E65C00506CC7 /* GTMUIImage+Resize.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMUIImage+Resize.h"; sourceTree = "<group>"; };
64D0F5C60FD3E65C00506CC7 /* GTMUIImage+ResizeTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMUIImage+ResizeTest.m"; sourceTree = "<group>"; };
64D0F5C70FD3E65C00506CC7 /* GTMUIImage+Resize.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMUIImage+Resize.m"; sourceTree = "<group>"; };
- 64D0F5CC0FD3E68400506CC7 /* GTMUIImage+Resize_100x100_to_60x40.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "GTMUIImage+Resize_100x100_to_60x40.png"; path = "TestData/GTMUIImage+Resize_100x100_to_60x40.png"; sourceTree = "<group>"; };
64D0F5CD0FD3E68400506CC7 /* GTMUIImage+Resize_50x100.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "GTMUIImage+Resize_50x100.png"; path = "TestData/GTMUIImage+Resize_50x100.png"; sourceTree = "<group>"; };
- 64D0F5CE0FD3E68400506CC7 /* GTMUIImage+Resize_50x100_to_40x60_clip.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "GTMUIImage+Resize_50x100_to_40x60_clip.png"; path = "TestData/GTMUIImage+Resize_50x100_to_40x60_clip.png"; sourceTree = "<group>"; };
- 64D0F5CF0FD3E68400506CC7 /* GTMUIImage+Resize_50x100_to_40x60_noclip.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "GTMUIImage+Resize_50x100_to_40x60_noclip.png"; path = "TestData/GTMUIImage+Resize_50x100_to_40x60_noclip.png"; sourceTree = "<group>"; };
- 64D0F5D00FD3E68400506CC7 /* GTMUIImage+Resize_50x100_to_50x50_clip.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "GTMUIImage+Resize_50x100_to_50x50_clip.png"; path = "TestData/GTMUIImage+Resize_50x100_to_50x50_clip.png"; sourceTree = "<group>"; };
- 64D0F5D10FD3E68400506CC7 /* GTMUIImage+Resize_50x100_to_50x50_noclip.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "GTMUIImage+Resize_50x100_to_50x50_noclip.png"; path = "TestData/GTMUIImage+Resize_50x100_to_50x50_noclip.png"; sourceTree = "<group>"; };
- 64D0F5D20FD3E68400506CC7 /* GTMUIImage+Resize_50x100_to_60x40_clip.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "GTMUIImage+Resize_50x100_to_60x40_clip.png"; path = "TestData/GTMUIImage+Resize_50x100_to_60x40_clip.png"; sourceTree = "<group>"; };
- 64D0F5D30FD3E68400506CC7 /* GTMUIImage+Resize_50x100_to_60x40_noclip.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "GTMUIImage+Resize_50x100_to_60x40_noclip.png"; path = "TestData/GTMUIImage+Resize_50x100_to_60x40_noclip.png"; sourceTree = "<group>"; };
64D0F5D40FD3E68400506CC7 /* GTMUIImage+Resize_100x50.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "GTMUIImage+Resize_100x50.png"; path = "TestData/GTMUIImage+Resize_100x50.png"; sourceTree = "<group>"; };
- 64D0F5D50FD3E68400506CC7 /* GTMUIImage+Resize_100x50_to_40x60_clip.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "GTMUIImage+Resize_100x50_to_40x60_clip.png"; path = "TestData/GTMUIImage+Resize_100x50_to_40x60_clip.png"; sourceTree = "<group>"; };
- 64D0F5D60FD3E68400506CC7 /* GTMUIImage+Resize_100x50_to_40x60_noclip.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "GTMUIImage+Resize_100x50_to_40x60_noclip.png"; path = "TestData/GTMUIImage+Resize_100x50_to_40x60_noclip.png"; sourceTree = "<group>"; };
- 64D0F5D70FD3E68400506CC7 /* GTMUIImage+Resize_100x50_to_50x50_clip.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "GTMUIImage+Resize_100x50_to_50x50_clip.png"; path = "TestData/GTMUIImage+Resize_100x50_to_50x50_clip.png"; sourceTree = "<group>"; };
- 64D0F5D80FD3E68400506CC7 /* GTMUIImage+Resize_100x50_to_50x50_noclip.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "GTMUIImage+Resize_100x50_to_50x50_noclip.png"; path = "TestData/GTMUIImage+Resize_100x50_to_50x50_noclip.png"; sourceTree = "<group>"; };
- 64D0F5D90FD3E68400506CC7 /* GTMUIImage+Resize_100x50_to_60x40_clip.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "GTMUIImage+Resize_100x50_to_60x40_clip.png"; path = "TestData/GTMUIImage+Resize_100x50_to_60x40_clip.png"; sourceTree = "<group>"; };
- 64D0F5DA0FD3E68400506CC7 /* GTMUIImage+Resize_100x50_to_60x40_noclip.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "GTMUIImage+Resize_100x50_to_60x40_noclip.png"; path = "TestData/GTMUIImage+Resize_100x50_to_60x40_noclip.png"; sourceTree = "<group>"; };
64D0F5DB0FD3E68400506CC7 /* GTMUIImage+Resize_100x100.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "GTMUIImage+Resize_100x100.png"; path = "TestData/GTMUIImage+Resize_100x100.png"; sourceTree = "<group>"; };
- 64D0F5DC0FD3E68400506CC7 /* GTMUIImage+Resize_100x100_to_40x60.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "GTMUIImage+Resize_100x100_to_40x60.png"; path = "TestData/GTMUIImage+Resize_100x100_to_40x60.png"; sourceTree = "<group>"; };
- 64D0F5DD0FD3E68400506CC7 /* GTMUIImage+Resize_100x100_to_50x50.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "GTMUIImage+Resize_100x100_to_50x50.png"; path = "TestData/GTMUIImage+Resize_100x100_to_50x50.png"; sourceTree = "<group>"; };
67A7820A0E00927400EBF506 /* GTMIPhoneUnitTestDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMIPhoneUnitTestDelegate.h; sourceTree = "<group>"; };
67A7820B0E00927400EBF506 /* GTMIPhoneUnitTestDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMIPhoneUnitTestDelegate.m; sourceTree = "<group>"; };
8B2908AF11F8E7070064F50F /* GTMNSFileHandle+UniqueName.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSFileHandle+UniqueName.h"; sourceTree = "<group>"; };
8B2908B011F8E7070064F50F /* GTMNSFileHandle+UniqueName.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSFileHandle+UniqueName.m"; sourceTree = "<group>"; };
8B2908B111F8E7070064F50F /* GTMNSFileHandle+UniqueNameTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSFileHandle+UniqueNameTest.m"; sourceTree = "<group>"; };
+ 8B2C72E31D9EBB540027BD14 /* GTMUnitTestDevLog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMUnitTestDevLog.h; sourceTree = "<group>"; };
+ 8B2C72E41D9EBB540027BD14 /* GTMUnitTestDevLog.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMUnitTestDevLog.m; sourceTree = "<group>"; };
+ 8B2C72E91D9EBBA10027BD14 /* GTMTestTimer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMTestTimer.h; sourceTree = "<group>"; };
+ 8B2C72EA1D9EBBA10027BD14 /* GTMTestTimerTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMTestTimerTest.m; sourceTree = "<group>"; };
8B30806F1056BDCE006C4C7A /* GTMNSNumber+64Bit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSNumber+64Bit.h"; sourceTree = "<group>"; };
8B3080701056BDCE006C4C7A /* GTMNSNumber+64Bit.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSNumber+64Bit.m"; sourceTree = "<group>"; };
8B3080711056BDCE006C4C7A /* GTMNSNumber+64BitTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSNumber+64BitTest.m"; sourceTree = "<group>"; };
@@ -375,12 +150,6 @@
8B3AA8F10E032FC7007E31B5 /* GTMNSString+URLArguments.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSString+URLArguments.m"; sourceTree = "<group>"; };
8B3AA8F20E032FC7007E31B5 /* GTMNSString+URLArgumentsTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSString+URLArgumentsTest.m"; sourceTree = "<group>"; };
8B3AA9330E0336AC007E31B5 /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = System/Library/Frameworks/CFNetwork.framework; sourceTree = SDKROOT; };
- 8B41EC0C0E0711D40040CF9F /* GTMValidatingContainersTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMValidatingContainersTest.m; sourceTree = "<group>"; };
- 8B41EC0D0E0711D40040CF9F /* GTMValidatingContainers.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMValidatingContainers.m; sourceTree = "<group>"; };
- 8B41EC0E0E0711D40040CF9F /* GTMValidatingContainers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMValidatingContainers.h; sourceTree = "<group>"; };
- 8B5547C70DB3BBF20014CC1C /* GTMUIKit+UnitTesting.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMUIKit+UnitTesting.m"; sourceTree = "<group>"; };
- 8B5547C80DB3BBF20014CC1C /* GTMUIKit+UnitTesting.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMUIKit+UnitTesting.h"; sourceTree = "<group>"; };
- 8B5547C90DB3BBF20014CC1C /* GTMUIKit+UnitTestingTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMUIKit+UnitTestingTest.m"; sourceTree = "<group>"; };
8B5A9E1F0E71CB6C005DA441 /* AddressBook.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AddressBook.framework; path = System/Library/Frameworks/AddressBook.framework; sourceTree = SDKROOT; };
8B6C18710F3769D200E51E5D /* GTMNSObject+KeyValueObserving.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSObject+KeyValueObserving.h"; sourceTree = "<group>"; };
8B6C18720F3769D200E51E5D /* GTMNSObject+KeyValueObserving.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSObject+KeyValueObserving.m"; sourceTree = "<group>"; };
@@ -390,22 +159,24 @@
8B6FF393151A664600B0642B /* GTMNSThread+BlocksTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSThread+BlocksTest.m"; sourceTree = "<group>"; };
8B6FF398151A670100B0642B /* GTMFoundationUnitTestingUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMFoundationUnitTestingUtilities.h; sourceTree = "<group>"; };
8B6FF399151A670100B0642B /* GTMFoundationUnitTestingUtilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMFoundationUnitTestingUtilities.m; sourceTree = "<group>"; };
- 8B7DCEA90DFF4C760017E983 /* GTMDevLogUnitTestingBridge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMDevLogUnitTestingBridge.m; sourceTree = "<group>"; };
- 8B7DCEAB0DFF4CA60017E983 /* GTMUnitTestDevLog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMUnitTestDevLog.h; sourceTree = "<group>"; };
- 8B7DCEAC0DFF4CA60017E983 /* GTMUnitTestDevLog.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMUnitTestDevLog.m; sourceTree = "<group>"; };
- 8BB78FA611B94D9500AB31AF /* GTMGoogleSearch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMGoogleSearch.h; sourceTree = "<group>"; };
- 8BB78FA711B94D9500AB31AF /* GTMGoogleSearch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMGoogleSearch.m; sourceTree = "<group>"; };
- 8BB78FA811B94D9500AB31AF /* GTMGoogleSearchTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMGoogleSearchTest.m; sourceTree = "<group>"; };
+ 8B7651D51D9C872C00DB2C59 /* GTMLogger+ASL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "GTMLogger+ASL.h"; sourceTree = "<group>"; };
+ 8B7651D61D9C872C00DB2C59 /* GTMLogger+ASL.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "GTMLogger+ASL.m"; sourceTree = "<group>"; };
+ 8B7651D71D9C872C00DB2C59 /* GTMLogger+ASLTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "GTMLogger+ASLTest.m"; sourceTree = "<group>"; };
+ 8B7651DF1D9C89B800DB2C59 /* GTMRoundedRectPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMRoundedRectPath.h; sourceTree = "<group>"; };
+ 8B7651E01D9C89B800DB2C59 /* GTMRoundedRectPath.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMRoundedRectPath.m; sourceTree = "<group>"; };
+ 8B82CEEE1D9C1559007182AA /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Platforms/iPhoneOS.platform/Developer/Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; };
+ 8B82CEF61D9C17DE007182AA /* libGTM.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libGTM.a; sourceTree = BUILT_PRODUCTS_DIR; };
+ 8B82CF221D9C1C7D007182AA /* GTMTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = GTMTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
+ 8B82CF531D9C24D9007182AA /* Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = "<group>"; };
+ 8B82CF541D9C24D9007182AA /* General.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = General.xcconfig; sourceTree = "<group>"; };
+ 8B82CF551D9C24D9007182AA /* GTMMerge.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = GTMMerge.xcconfig; sourceTree = "<group>"; };
+ 8B82CF561D9C24D9007182AA /* iOS.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = iOS.xcconfig; sourceTree = "<group>"; };
+ 8B82CF571D9C24D9007182AA /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = "<group>"; };
+ 8B82CF581D9C24D9007182AA /* Unittest.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Unittest.xcconfig; sourceTree = "<group>"; };
8BC047750DAE926E00C2D1CA /* GTMDefines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMDefines.h; sourceTree = "<group>"; };
- 8BC047770DAE928A00C2D1CA /* GTMCalculatedRange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMCalculatedRange.h; sourceTree = "<group>"; };
- 8BC047780DAE928A00C2D1CA /* GTMCalculatedRange.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMCalculatedRange.m; sourceTree = "<group>"; };
- 8BC047790DAE928A00C2D1CA /* GTMCalculatedRangeTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMCalculatedRangeTest.m; sourceTree = "<group>"; };
8BC0477E0DAE928A00C2D1CA /* GTMNSData+zlib.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSData+zlib.h"; sourceTree = "<group>"; };
8BC0477F0DAE928A00C2D1CA /* GTMNSData+zlib.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSData+zlib.m"; sourceTree = "<group>"; };
8BC047800DAE928A00C2D1CA /* GTMNSData+zlibTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSData+zlibTest.m"; sourceTree = "<group>"; };
- 8BC047810DAE928A00C2D1CA /* GTMNSEnumerator+Filter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSEnumerator+Filter.h"; sourceTree = "<group>"; };
- 8BC047820DAE928A00C2D1CA /* GTMNSEnumerator+Filter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSEnumerator+Filter.m"; sourceTree = "<group>"; };
- 8BC047830DAE928A00C2D1CA /* GTMNSEnumerator+FilterTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSEnumerator+FilterTest.m"; sourceTree = "<group>"; };
8BC047840DAE928A00C2D1CA /* GTMNSFileManager+Path.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSFileManager+Path.h"; sourceTree = "<group>"; };
8BC047850DAE928A00C2D1CA /* GTMNSFileManager+Path.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSFileManager+Path.m"; sourceTree = "<group>"; };
8BC047860DAE928A00C2D1CA /* GTMNSFileManager+PathTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSFileManager+PathTest.m"; sourceTree = "<group>"; };
@@ -415,7 +186,6 @@
8BC0478A0DAE928A00C2D1CA /* GTMNSString+XML.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSString+XML.h"; sourceTree = "<group>"; };
8BC0478B0DAE928A00C2D1CA /* GTMNSString+XML.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSString+XML.m"; sourceTree = "<group>"; };
8BC0478C0DAE928A00C2D1CA /* GTMNSString+XMLTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSString+XMLTest.m"; sourceTree = "<group>"; };
- 8BC0478D0DAE928A00C2D1CA /* GTMObjC2Runtime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMObjC2Runtime.h; sourceTree = "<group>"; };
8BC047900DAE928A00C2D1CA /* GTMObjectSingleton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMObjectSingleton.h; sourceTree = "<group>"; };
8BC047910DAE928A00C2D1CA /* GTMRegex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMRegex.h; sourceTree = "<group>"; };
8BC047920DAE928A00C2D1CA /* GTMRegex.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMRegex.m; sourceTree = "<group>"; };
@@ -424,44 +194,31 @@
8BC0479C0DAE928A00C2D1CA /* GTMMethodCheck.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMMethodCheck.h; sourceTree = "<group>"; };
8BC0479D0DAE928A00C2D1CA /* GTMMethodCheck.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMMethodCheck.m; sourceTree = "<group>"; };
8BC0479E0DAE928A00C2D1CA /* GTMMethodCheckTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMMethodCheckTest.m; sourceTree = "<group>"; };
- 8BC047A00DAE928A00C2D1CA /* GTMCALayer+UnitTesting.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMCALayer+UnitTesting.h"; sourceTree = "<group>"; };
- 8BC047A10DAE928A00C2D1CA /* GTMCALayer+UnitTesting.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMCALayer+UnitTesting.m"; sourceTree = "<group>"; };
8BC047DD0DAE928A00C2D1CA /* GTMIPhoneUnitTestMain.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMIPhoneUnitTestMain.m; sourceTree = "<group>"; };
- 8BC047EC0DAE928A00C2D1CA /* GTMNSObject+UnitTesting.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSObject+UnitTesting.h"; sourceTree = "<group>"; };
- 8BC047ED0DAE928A00C2D1CA /* GTMNSObject+UnitTesting.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSObject+UnitTesting.m"; sourceTree = "<group>"; };
8BC047F60DAE928A00C2D1CA /* GTMSenTestCase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMSenTestCase.h; sourceTree = "<group>"; };
8BC047F70DAE928A00C2D1CA /* GTMSenTestCase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMSenTestCase.m; sourceTree = "<group>"; };
- 8BC048000DAE928A00C2D1CA /* GTMUIViewUnitTestingTest.gtmUTState */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = GTMUIViewUnitTestingTest.gtmUTState; sourceTree = "<group>"; };
- 8BC048010DAE928A00C2D1CA /* GTMUIViewUnitTestingTest.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = GTMUIViewUnitTestingTest.png; sourceTree = "<group>"; };
- 8BC0480E0DAE928A00C2D1CA /* RunIPhoneUnitTest.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = RunIPhoneUnitTest.sh; sourceTree = "<group>"; };
8BC0498F0DAEC59100C2D1CA /* CodeCoverage.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = CodeCoverage.xcconfig; sourceTree = "<group>"; };
8BC04A6F0DAF144200C2D1CA /* GTMSystemVersion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMSystemVersion.h; sourceTree = "<group>"; };
8BC04A710DAF144700C2D1CA /* GTMSystemVersionTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMSystemVersionTest.m; sourceTree = "<group>"; };
8BC04A740DAF145200C2D1CA /* GTMSystemVersion.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMSystemVersion.m; sourceTree = "<group>"; };
- 8BC04D470DB0088500C2D1CA /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; };
- 8BCB5AAE11C02D7D009B6C40 /* GTMNSScanner+Unsigned.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSScanner+Unsigned.h"; sourceTree = "<group>"; };
- 8BCB5AAF11C02D7D009B6C40 /* GTMNSScanner+Unsigned.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSScanner+Unsigned.m"; sourceTree = "<group>"; };
- 8BCB5AB011C02D7D009B6C40 /* GTMNSScanner+UnsignedTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSScanner+UnsignedTest.m"; sourceTree = "<group>"; };
8BD35C8F0FB234E1009058F5 /* GTMNSScanner+JSON.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSScanner+JSON.h"; sourceTree = "<group>"; };
8BD35C900FB234E1009058F5 /* GTMNSScanner+JSON.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSScanner+JSON.m"; sourceTree = "<group>"; };
8BD35C910FB234E1009058F5 /* GTMNSScanner+JSONTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSScanner+JSONTest.m"; sourceTree = "<group>"; };
8BE839870E89C74A00C611B0 /* GTMDebugThreadValidation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMDebugThreadValidation.m; sourceTree = "<group>"; };
8BE839880E89C74A00C611B0 /* GTMDebugThreadValidation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMDebugThreadValidation.h; sourceTree = "<group>"; };
- 8BE83A650E8B059A00C611B0 /* GTMDebugThreadValidationTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMDebugThreadValidationTest.m; sourceTree = "<group>"; };
8BF2568E10F673D1000490C8 /* GTMTypeCasting.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMTypeCasting.h; sourceTree = "<group>"; };
+ 8BF753D91D9DB3080010A295 /* GTMSQLite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMSQLite.h; sourceTree = "<group>"; };
+ 8BF753DA1D9DB3080010A295 /* GTMSQLite.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMSQLite.m; sourceTree = "<group>"; };
+ 8BF753DC1D9DB30E0010A295 /* GTMSQLiteTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMSQLiteTest.m; sourceTree = "<group>"; };
+ 8BF753DE1D9DB3740010A295 /* libsqlite3.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libsqlite3.tbd; path = usr/lib/libsqlite3.tbd; sourceTree = SDKROOT; };
8BFE15C00FB0F764001BE894 /* GTMABAddressBook.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMABAddressBook.h; sourceTree = "<group>"; };
8BFE15C10FB0F764001BE894 /* GTMABAddressBook.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMABAddressBook.m; sourceTree = "<group>"; };
- 8BFE15C20FB0F764001BE894 /* GTMABAddressBook.strings */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; path = GTMABAddressBook.strings; sourceTree = "<group>"; };
+ 8BFE15C20FB0F764001BE894 /* GTMABAddressBook.strings */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; path = GTMABAddressBook.strings; sourceTree = "<group>"; };
8BFE15C30FB0F764001BE894 /* GTMABAddressBookTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMABAddressBookTest.m; sourceTree = "<group>"; };
8BFE15C50FB0F764001BE894 /* phone.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = phone.png; sourceTree = "<group>"; };
9340CF9C140550CE0026DDC9 /* GTMFadeTruncatingLabel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMFadeTruncatingLabel.h; sourceTree = "<group>"; };
9340CF9D140550CE0026DDC9 /* GTMFadeTruncatingLabel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMFadeTruncatingLabel.m; sourceTree = "<group>"; };
9340CF9E140550CE0026DDC9 /* GTMFadeTruncatingLabelTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMFadeTruncatingLabelTest.m; sourceTree = "<group>"; };
- 9340CFA1140550E30026DDC9 /* GTMFadeTruncatingLabelTest1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = GTMFadeTruncatingLabelTest1.png; path = TestData/GTMFadeTruncatingLabelTest1.png; sourceTree = "<group>"; };
- 9340CFA2140550E30026DDC9 /* GTMFadeTruncatingLabelTest2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = GTMFadeTruncatingLabelTest2.png; path = TestData/GTMFadeTruncatingLabelTest2.png; sourceTree = "<group>"; };
- 9340CFA3140550E30026DDC9 /* GTMFadeTruncatingLabelTest3.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = GTMFadeTruncatingLabelTest3.png; path = TestData/GTMFadeTruncatingLabelTest3.png; sourceTree = "<group>"; };
- 9340CFA4140550E30026DDC9 /* GTMFadeTruncatingLabelTest4.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = GTMFadeTruncatingLabelTest4.png; path = TestData/GTMFadeTruncatingLabelTest4.png; sourceTree = "<group>"; };
- 9340CFA5140550E30026DDC9 /* GTMFadeTruncatingLabelTest5.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = GTMFadeTruncatingLabelTest5.png; path = TestData/GTMFadeTruncatingLabelTest5.png; sourceTree = "<group>"; };
BE9B793D14FE99F3004A993A /* GTMURLBuilder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GTMURLBuilder.h; sourceTree = "<group>"; };
BE9B793E14FE99F3004A993A /* GTMURLBuilder.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GTMURLBuilder.m; sourceTree = "<group>"; };
BE9B793F14FE99F3004A993A /* GTMURLBuilderTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GTMURLBuilderTest.m; sourceTree = "<group>"; };
@@ -470,9 +227,6 @@
F41711590ECDFF0400B9B276 /* GTMLightweightProxyTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMLightweightProxyTest.m; sourceTree = "<group>"; };
F418AF6D0E755732004FB565 /* GTMiPhone-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GTMiPhone-Info.plist"; sourceTree = "<group>"; };
F418AF910E755893004FB565 /* xcconfigs-readme.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "xcconfigs-readme.txt"; sourceTree = "<group>"; };
- F418AF930E7558DC004FB565 /* GTMExceptionalInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMExceptionalInlines.h; sourceTree = "<group>"; };
- F418AF940E7558DC004FB565 /* GTMExceptionalInlines.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMExceptionalInlines.m; sourceTree = "<group>"; };
- F418AF950E7558DC004FB565 /* GTMExceptionalInlinesTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMExceptionalInlinesTest.m; sourceTree = "<group>"; };
F418AFA20E7559C7004FB565 /* GTMLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMLogger.h; sourceTree = "<group>"; };
F418AFA30E7559C7004FB565 /* GTMLogger.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMLogger.m; sourceTree = "<group>"; };
F418AFA40E7559C7004FB565 /* GTMLoggerTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMLoggerTest.m; sourceTree = "<group>"; };
@@ -482,35 +236,18 @@
F418AFCA0E755C94004FB565 /* GTMNSDictionary+URLArguments.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSDictionary+URLArguments.h"; sourceTree = "<group>"; };
F418AFCB0E755C94004FB565 /* GTMNSDictionary+URLArguments.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSDictionary+URLArguments.m"; sourceTree = "<group>"; };
F418AFCC0E755C94004FB565 /* GTMNSDictionary+URLArgumentsTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSDictionary+URLArgumentsTest.m"; sourceTree = "<group>"; };
- F418AFD40E755D44004FB565 /* GTMPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMPath.h; sourceTree = "<group>"; };
- F418AFD50E755D44004FB565 /* GTMPath.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMPath.m; sourceTree = "<group>"; };
- F418AFD60E755D44004FB565 /* GTMPathTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMPathTest.m; sourceTree = "<group>"; };
F439ADED0DBD3C4000BE9B91 /* GTMGeometryUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMGeometryUtils.h; sourceTree = "<group>"; };
F439ADEE0DBD3C4000BE9B91 /* GTMGeometryUtils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMGeometryUtils.m; sourceTree = "<group>"; };
F439ADEF0DBD3C4000BE9B91 /* GTMGeometryUtilsTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMGeometryUtilsTest.m; sourceTree = "<group>"; };
- F45F27AB14F41441003A91E6 /* GTMFadeTruncatingLabelTest1.5.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = GTMFadeTruncatingLabelTest1.5.png; path = TestData/GTMFadeTruncatingLabelTest1.5.png; sourceTree = "<group>"; };
- F45F27AC14F41441003A91E6 /* GTMFadeTruncatingLabelTest2.5.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = GTMFadeTruncatingLabelTest2.5.png; path = TestData/GTMFadeTruncatingLabelTest2.5.png; sourceTree = "<group>"; };
- F45F27AD14F41441003A91E6 /* GTMFadeTruncatingLabelTest3.5.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = GTMFadeTruncatingLabelTest3.5.png; path = TestData/GTMFadeTruncatingLabelTest3.5.png; sourceTree = "<group>"; };
- F45F27AE14F41441003A91E6 /* GTMFadeTruncatingLabelTest4.5.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = GTMFadeTruncatingLabelTest4.5.png; path = TestData/GTMFadeTruncatingLabelTest4.5.png; sourceTree = "<group>"; };
- F45F27AF14F41441003A91E6 /* GTMFadeTruncatingLabelTest5.5.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = GTMFadeTruncatingLabelTest5.5.png; path = TestData/GTMFadeTruncatingLabelTest5.5.png; sourceTree = "<group>"; };
F4746720129703600022C1FB /* GTMSenTestCaseTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMSenTestCaseTest.m; sourceTree = "<group>"; };
F4A0A95E140438B90010B64B /* DebugiOS.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = DebugiOS.xcconfig; sourceTree = "<group>"; };
F4A0A95F140438B90010B64B /* ReleaseiOS.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = ReleaseiOS.xcconfig; sourceTree = "<group>"; };
- F4C35E6B164EB39F00688B6E /* GTMFadeTruncatingLabelTest1.6.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = GTMFadeTruncatingLabelTest1.6.png; path = TestData/GTMFadeTruncatingLabelTest1.6.png; sourceTree = "<group>"; };
- F4C35E6C164EB39F00688B6E /* GTMFadeTruncatingLabelTest2.6.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = GTMFadeTruncatingLabelTest2.6.png; path = TestData/GTMFadeTruncatingLabelTest2.6.png; sourceTree = "<group>"; };
- F4C35E6D164EB3A000688B6E /* GTMFadeTruncatingLabelTest3.6.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = GTMFadeTruncatingLabelTest3.6.png; path = TestData/GTMFadeTruncatingLabelTest3.6.png; sourceTree = "<group>"; };
- F4C35E6E164EB3A100688B6E /* GTMFadeTruncatingLabelTest4.6.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = GTMFadeTruncatingLabelTest4.6.png; path = TestData/GTMFadeTruncatingLabelTest4.6.png; sourceTree = "<group>"; };
- F4C35E6F164EB3A100688B6E /* GTMFadeTruncatingLabelTest5.6.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = GTMFadeTruncatingLabelTest5.6.png; path = TestData/GTMFadeTruncatingLabelTest5.6.png; sourceTree = "<group>"; };
- F4D20EAA14852BFB0001600C /* GTMiPhoneUnitTestingOCUnit.octest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = GTMiPhoneUnitTestingOCUnit.octest; sourceTree = BUILT_PRODUCTS_DIR; };
- F4D20EAB14852BFB0001600C /* GTMiPhoneUnitTestingOCUnit-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "GTMiPhoneUnitTestingOCUnit-Info.plist"; sourceTree = "<group>"; };
F4E3B3D60EB5EF2400CB713D /* GTMUIFont+LineHeight.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMUIFont+LineHeight.h"; sourceTree = "<group>"; };
F4E3B3D70EB5EF2400CB713D /* GTMUIFont+LineHeight.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMUIFont+LineHeight.m"; sourceTree = "<group>"; };
F4E3B3E10EB5EF9A00CB713D /* GTMUIFont+LineHeightTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMUIFont+LineHeightTest.m"; sourceTree = "<group>"; };
- F4E4E1141485378B00C2E584 /* SenTestingKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SenTestingKit.framework; path = Library/Frameworks/SenTestingKit.framework; sourceTree = DEVELOPER_DIR; };
F4EF8AD40EBFF814008DD6DA /* GTMStackTrace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMStackTrace.h; sourceTree = "<group>"; };
F4EF8AD50EBFF814008DD6DA /* GTMStackTrace.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMStackTrace.m; sourceTree = "<group>"; };
F4EF8AD60EBFF814008DD6DA /* GTMStackTraceTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMStackTraceTest.m; sourceTree = "<group>"; };
- F4F1D88214853D8F00E05BB6 /* GTMiPhoneUnitTestingOCUnitTestRig.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = GTMiPhoneUnitTestingOCUnitTestRig.app; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -518,39 +255,28 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
- 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */,
1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */,
- 1D3623EC0D0F72F000981E51 /* CoreGraphics.framework in Frameworks */,
- 8B308BCE0DAD0B8400183556 /* QuartzCore.framework in Frameworks */,
- 8BC04D480DB0088500C2D1CA /* libz.dylib in Frameworks */,
- 8B3AA9340E0336AC007E31B5 /* CFNetwork.framework in Frameworks */,
- 8B5A9E200E71CB6C005DA441 /* AddressBook.framework in Frameworks */,
- 23220A06152C9E980060CB7D /* Security.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
- F4D20EA714852BFB0001600C /* Frameworks */ = {
+ 8B82CEF31D9C17DE007182AA /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
- F4E4E1151485378B00C2E584 /* SenTestingKit.framework in Frameworks */,
- F4D20F2114852D130001600C /* CFNetwork.framework in Frameworks */,
- F4D20F2214852D130001600C /* CoreGraphics.framework in Frameworks */,
- F4D20F2314852D130001600C /* Foundation.framework in Frameworks */,
- F4D20F2414852D130001600C /* QuartzCore.framework in Frameworks */,
- F4D20F2514852D130001600C /* UIKit.framework in Frameworks */,
- F4D20F2614852D130001600C /* libz.dylib in Frameworks */,
- F4D20F4E148532D50001600C /* AddressBook.framework in Frameworks */,
- 234E175D152CBB4900CF3542 /* Security.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
- F4F1D87614853D8F00E05BB6 /* Frameworks */ = {
+ 8B82CF1F1D9C1C7D007182AA /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
- F4F1D87814853D8F00E05BB6 /* UIKit.framework in Frameworks */,
- F4F1D88E14853E6100E05BB6 /* Foundation.framework in Frameworks */,
+ 8BF753DF1D9DB3740010A295 /* libsqlite3.tbd in Frameworks */,
+ 8B82CF321D9C2309007182AA /* AddressBook.framework in Frameworks */,
+ 8B82CF661D9C3366007182AA /* XCTest.framework in Frameworks */,
+ 8B82CF341D9C231F007182AA /* UIKit.framework in Frameworks */,
+ 8B82CF511D9C239A007182AA /* Security.framework in Frameworks */,
+ 8B82CF521D9C239A007182AA /* CoreGraphics.framework in Frameworks */,
+ 8B82CF2E1D9C1DD4007182AA /* libGTM.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -561,8 +287,8 @@
isa = PBXGroup;
children = (
1D6058910D05DD3D006BFB54 /* GTMiPhoneTest.app */,
- F4D20EAA14852BFB0001600C /* GTMiPhoneUnitTestingOCUnit.octest */,
- F4F1D88214853D8F00E05BB6 /* GTMiPhoneUnitTestingOCUnitTestRig.app */,
+ 8B82CEF61D9C17DE007182AA /* libGTM.a */,
+ 8B82CF221D9C1C7D007182AA /* GTMTests.xctest */,
);
name = Products;
sourceTree = "<group>";
@@ -572,7 +298,6 @@
children = (
8BC047750DAE926E00C2D1CA /* GTMDefines.h */,
8BFE15BF0FB0F764001BE894 /* AddressBook */,
- 8BB78FA011B94D6C00AB31AF /* AppKit */,
8BC0479A0DAE928A00C2D1CA /* DebugUtils */,
8BC047760DAE928A00C2D1CA /* Foundation */,
8BA5F4060E75669000798036 /* iPhone */,
@@ -580,9 +305,7 @@
8BC049840DAEC59100C2D1CA /* XcodeConfig */,
29B97323FDCFA39411CA2CEA /* Frameworks */,
19C28FACFE9D520D11CA2CBB /* Products */,
- 32CA4F630368D1EE00C91783 /* GTM_Prefix.pch */,
F418AF6D0E755732004FB565 /* GTMiPhone-Info.plist */,
- F4D20EAB14852BFB0001600C /* GTMiPhoneUnitTestingOCUnit-Info.plist */,
);
name = CustomTemplate;
sourceTree = "<group>";
@@ -590,15 +313,15 @@
29B97323FDCFA39411CA2CEA /* Frameworks */ = {
isa = PBXGroup;
children = (
+ 8BF753DE1D9DB3740010A295 /* libsqlite3.tbd */,
+ 8B82CEEE1D9C1559007182AA /* XCTest.framework */,
23220A05152C9E980060CB7D /* Security.framework */,
8B3AA9330E0336AC007E31B5 /* CFNetwork.framework */,
8B5A9E1F0E71CB6C005DA441 /* AddressBook.framework */,
- 8BC04D470DB0088500C2D1CA /* libz.dylib */,
8B308BCD0DAD0B8400183556 /* QuartzCore.framework */,
1D3623EB0D0F72F000981E51 /* CoreGraphics.framework */,
1DF5F4DF0D08C38300B7A737 /* UIKit.framework */,
1D30AB110D05D00D00671497 /* Foundation.framework */,
- F4E4E1141485378B00C2E584 /* SenTestingKit.framework */,
);
name = Frameworks;
sourceTree = "<group>";
@@ -606,41 +329,9 @@
64D0F5CB0FD3E66A00506CC7 /* TestData */ = {
isa = PBXGroup;
children = (
- F45F27AB14F41441003A91E6 /* GTMFadeTruncatingLabelTest1.5.png */,
- F4C35E6B164EB39F00688B6E /* GTMFadeTruncatingLabelTest1.6.png */,
- 9340CFA1140550E30026DDC9 /* GTMFadeTruncatingLabelTest1.png */,
- F45F27AC14F41441003A91E6 /* GTMFadeTruncatingLabelTest2.5.png */,
- F4C35E6C164EB39F00688B6E /* GTMFadeTruncatingLabelTest2.6.png */,
- 9340CFA2140550E30026DDC9 /* GTMFadeTruncatingLabelTest2.png */,
- F45F27AD14F41441003A91E6 /* GTMFadeTruncatingLabelTest3.5.png */,
- F4C35E6D164EB3A000688B6E /* GTMFadeTruncatingLabelTest3.6.png */,
- 9340CFA3140550E30026DDC9 /* GTMFadeTruncatingLabelTest3.png */,
- F45F27AE14F41441003A91E6 /* GTMFadeTruncatingLabelTest4.5.png */,
- F4C35E6E164EB3A100688B6E /* GTMFadeTruncatingLabelTest4.6.png */,
- 9340CFA4140550E30026DDC9 /* GTMFadeTruncatingLabelTest4.png */,
- F45F27AF14F41441003A91E6 /* GTMFadeTruncatingLabelTest5.5.png */,
- F4C35E6F164EB3A100688B6E /* GTMFadeTruncatingLabelTest5.6.png */,
- 9340CFA5140550E30026DDC9 /* GTMFadeTruncatingLabelTest5.png */,
64D0F5DB0FD3E68400506CC7 /* GTMUIImage+Resize_100x100.png */,
- 64D0F5DC0FD3E68400506CC7 /* GTMUIImage+Resize_100x100_to_40x60.png */,
- 64D0F5DD0FD3E68400506CC7 /* GTMUIImage+Resize_100x100_to_50x50.png */,
- 64D0F5CC0FD3E68400506CC7 /* GTMUIImage+Resize_100x100_to_60x40.png */,
64D0F5D40FD3E68400506CC7 /* GTMUIImage+Resize_100x50.png */,
- 448D61B111AC1AAD0097ACBC /* GTMUIImage+Resize_100x50_flipped.png */,
- 64D0F5D50FD3E68400506CC7 /* GTMUIImage+Resize_100x50_to_40x60_clip.png */,
- 64D0F5D60FD3E68400506CC7 /* GTMUIImage+Resize_100x50_to_40x60_noclip.png */,
- 64D0F5D70FD3E68400506CC7 /* GTMUIImage+Resize_100x50_to_50x50_clip.png */,
- 64D0F5D80FD3E68400506CC7 /* GTMUIImage+Resize_100x50_to_50x50_noclip.png */,
- 64D0F5D90FD3E68400506CC7 /* GTMUIImage+Resize_100x50_to_60x40_clip.png */,
- 64D0F5DA0FD3E68400506CC7 /* GTMUIImage+Resize_100x50_to_60x40_noclip.png */,
64D0F5CD0FD3E68400506CC7 /* GTMUIImage+Resize_50x100.png */,
- 448D61B011AC1AAD0097ACBC /* GTMUIImage+Resize_50x100_flipped.png */,
- 64D0F5CE0FD3E68400506CC7 /* GTMUIImage+Resize_50x100_to_40x60_clip.png */,
- 64D0F5CF0FD3E68400506CC7 /* GTMUIImage+Resize_50x100_to_40x60_noclip.png */,
- 64D0F5D00FD3E68400506CC7 /* GTMUIImage+Resize_50x100_to_50x50_clip.png */,
- 64D0F5D10FD3E68400506CC7 /* GTMUIImage+Resize_50x100_to_50x50_noclip.png */,
- 64D0F5D20FD3E68400506CC7 /* GTMUIImage+Resize_50x100_to_60x40_clip.png */,
- 64D0F5D30FD3E68400506CC7 /* GTMUIImage+Resize_50x100_to_60x40_noclip.png */,
);
name = TestData;
sourceTree = "<group>";
@@ -659,42 +350,22 @@
F4E3B3D60EB5EF2400CB713D /* GTMUIFont+LineHeight.h */,
F4E3B3D70EB5EF2400CB713D /* GTMUIFont+LineHeight.m */,
F4E3B3E10EB5EF9A00CB713D /* GTMUIFont+LineHeightTest.m */,
+ 8B7651DF1D9C89B800DB2C59 /* GTMRoundedRectPath.h */,
+ 8B7651E01D9C89B800DB2C59 /* GTMRoundedRectPath.m */,
64D0F5C50FD3E65C00506CC7 /* GTMUIImage+Resize.h */,
64D0F5C70FD3E65C00506CC7 /* GTMUIImage+Resize.m */,
64D0F5C60FD3E65C00506CC7 /* GTMUIImage+ResizeTest.m */,
- 13C1ED4C104896C900907CD8 /* GTMUIView+SubtreeDescription.m */,
- 13C1ED4D104896C900907CD8 /* GTMUIView+SubtreeDescriptionTest.m */,
- 13C1ED4E104896C900907CD8 /* GTMUIView+SubtreeDescription.h */,
64D0F5CB0FD3E66A00506CC7 /* TestData */,
);
path = iPhone;
sourceTree = "<group>";
};
- 8BB78FA011B94D6C00AB31AF /* AppKit */ = {
- isa = PBXGroup;
- children = (
- 8BB78FA611B94D9500AB31AF /* GTMGoogleSearch.h */,
- 8BB78FA711B94D9500AB31AF /* GTMGoogleSearch.m */,
- 8BB78FA811B94D9500AB31AF /* GTMGoogleSearchTest.m */,
- );
- path = AppKit;
- sourceTree = "<group>";
- };
8BC047760DAE928A00C2D1CA /* Foundation */ = {
isa = PBXGroup;
children = (
0BBC768810FEF61D0006FABE /* GTMStringEncoding.h */,
0BBC768910FEF61D0006FABE /* GTMStringEncoding.m */,
0BBC768A10FEF61D0006FABE /* GTMStringEncodingTest.m */,
- 0B859D9C104D08050064FE46 /* GTMNSDictionary+CaseInsensitive.h */,
- 0B859D9D104D08050064FE46 /* GTMNSDictionary+CaseInsensitive.m */,
- 0B859D9E104D08050064FE46 /* GTMNSDictionary+CaseInsensitiveTest.m */,
- 8BC047770DAE928A00C2D1CA /* GTMCalculatedRange.h */,
- 8BC047780DAE928A00C2D1CA /* GTMCalculatedRange.m */,
- 8BC047790DAE928A00C2D1CA /* GTMCalculatedRangeTest.m */,
- F418AF930E7558DC004FB565 /* GTMExceptionalInlines.h */,
- F418AF940E7558DC004FB565 /* GTMExceptionalInlines.m */,
- F418AF950E7558DC004FB565 /* GTMExceptionalInlinesTest.m */,
F439ADED0DBD3C4000BE9B91 /* GTMGeometryUtils.h */,
F439ADEE0DBD3C4000BE9B91 /* GTMGeometryUtils.m */,
F439ADEF0DBD3C4000BE9B91 /* GTMGeometryUtilsTest.m */,
@@ -704,6 +375,9 @@
F418AFA20E7559C7004FB565 /* GTMLogger.h */,
F418AFA30E7559C7004FB565 /* GTMLogger.m */,
F418AFA40E7559C7004FB565 /* GTMLoggerTest.m */,
+ 8B7651D51D9C872C00DB2C59 /* GTMLogger+ASL.h */,
+ 8B7651D61D9C872C00DB2C59 /* GTMLogger+ASL.m */,
+ 8B7651D71D9C872C00DB2C59 /* GTMLogger+ASLTest.m */,
F418AFB10E755B4D004FB565 /* GTMLoggerRingBufferWriter.h */,
F418AFB20E755B4D004FB565 /* GTMLoggerRingBufferWriter.m */,
F418AFB30E755B4D004FB565 /* GTMLoggerRingBufferWriterTest.m */,
@@ -716,9 +390,6 @@
F418AFCA0E755C94004FB565 /* GTMNSDictionary+URLArguments.h */,
F418AFCB0E755C94004FB565 /* GTMNSDictionary+URLArguments.m */,
F418AFCC0E755C94004FB565 /* GTMNSDictionary+URLArgumentsTest.m */,
- 8BC047810DAE928A00C2D1CA /* GTMNSEnumerator+Filter.h */,
- 8BC047820DAE928A00C2D1CA /* GTMNSEnumerator+Filter.m */,
- 8BC047830DAE928A00C2D1CA /* GTMNSEnumerator+FilterTest.m */,
8BC047840DAE928A00C2D1CA /* GTMNSFileManager+Path.h */,
8BC047850DAE928A00C2D1CA /* GTMNSFileManager+Path.m */,
8BC047860DAE928A00C2D1CA /* GTMNSFileManager+PathTest.m */,
@@ -734,9 +405,6 @@
8BD35C8F0FB234E1009058F5 /* GTMNSScanner+JSON.h */,
8BD35C900FB234E1009058F5 /* GTMNSScanner+JSON.m */,
8BD35C910FB234E1009058F5 /* GTMNSScanner+JSONTest.m */,
- 8BCB5AAE11C02D7D009B6C40 /* GTMNSScanner+Unsigned.h */,
- 8BCB5AAF11C02D7D009B6C40 /* GTMNSScanner+Unsigned.m */,
- 8BCB5AB011C02D7D009B6C40 /* GTMNSScanner+UnsignedTest.m */,
8BC047870DAE928A00C2D1CA /* GTMNSString+HTML.h */,
8BC047880DAE928A00C2D1CA /* GTMNSString+HTML.m */,
8BC047890DAE928A00C2D1CA /* GTMNSString+HTMLTest.m */,
@@ -749,14 +417,13 @@
8B6FF391151A664600B0642B /* GTMNSThread+Blocks.h */,
8B6FF392151A664600B0642B /* GTMNSThread+Blocks.m */,
8B6FF393151A664600B0642B /* GTMNSThread+BlocksTest.m */,
- 8BC0478D0DAE928A00C2D1CA /* GTMObjC2Runtime.h */,
8BC047900DAE928A00C2D1CA /* GTMObjectSingleton.h */,
- F418AFD40E755D44004FB565 /* GTMPath.h */,
- F418AFD50E755D44004FB565 /* GTMPath.m */,
- F418AFD60E755D44004FB565 /* GTMPathTest.m */,
8BC047910DAE928A00C2D1CA /* GTMRegex.h */,
8BC047920DAE928A00C2D1CA /* GTMRegex.m */,
8BC047930DAE928A00C2D1CA /* GTMRegexTest.m */,
+ 8BF753D91D9DB3080010A295 /* GTMSQLite.h */,
+ 8BF753DA1D9DB3080010A295 /* GTMSQLite.m */,
+ 8BF753DC1D9DB30E0010A295 /* GTMSQLiteTest.m */,
F4EF8AD40EBFF814008DD6DA /* GTMStackTrace.h */,
F4EF8AD50EBFF814008DD6DA /* GTMStackTrace.m */,
F4EF8AD60EBFF814008DD6DA /* GTMStackTraceTest.m */,
@@ -766,9 +433,6 @@
BE9B793D14FE99F3004A993A /* GTMURLBuilder.h */,
BE9B793E14FE99F3004A993A /* GTMURLBuilder.m */,
BE9B793F14FE99F3004A993A /* GTMURLBuilderTest.m */,
- 8B41EC0D0E0711D40040CF9F /* GTMValidatingContainers.m */,
- 8B41EC0E0E0711D40040CF9F /* GTMValidatingContainers.h */,
- 8B41EC0C0E0711D40040CF9F /* GTMValidatingContainersTest.m */,
);
path = Foundation;
sourceTree = "<group>";
@@ -778,7 +442,6 @@
children = (
8BF2568E10F673D1000490C8 /* GTMTypeCasting.h */,
8BC0479B0DAE928A00C2D1CA /* GTMDebugSelectorValidation.h */,
- 8BE83A650E8B059A00C611B0 /* GTMDebugThreadValidationTest.m */,
8BE839870E89C74A00C611B0 /* GTMDebugThreadValidation.m */,
8BE839880E89C74A00C611B0 /* GTMDebugThreadValidation.h */,
8BC0479C0DAE928A00C2D1CA /* GTMMethodCheck.h */,
@@ -791,26 +454,18 @@
8BC0479F0DAE928A00C2D1CA /* UnitTesting */ = {
isa = PBXGroup;
children = (
- 8B7DCEA90DFF4C760017E983 /* GTMDevLogUnitTestingBridge.m */,
- 8BC047A00DAE928A00C2D1CA /* GTMCALayer+UnitTesting.h */,
- 8BC047A10DAE928A00C2D1CA /* GTMCALayer+UnitTesting.m */,
8B6FF398151A670100B0642B /* GTMFoundationUnitTestingUtilities.h */,
8B6FF399151A670100B0642B /* GTMFoundationUnitTestingUtilities.m */,
- 8B5547C70DB3BBF20014CC1C /* GTMUIKit+UnitTesting.m */,
- 8B5547C80DB3BBF20014CC1C /* GTMUIKit+UnitTesting.h */,
- 8B5547C90DB3BBF20014CC1C /* GTMUIKit+UnitTestingTest.m */,
- 234E17DB152CECFB00CF3542 /* GTMIPhoneSecurityLibraryTest.m */,
67A7820A0E00927400EBF506 /* GTMIPhoneUnitTestDelegate.h */,
67A7820B0E00927400EBF506 /* GTMIPhoneUnitTestDelegate.m */,
8BC047DD0DAE928A00C2D1CA /* GTMIPhoneUnitTestMain.m */,
- 8BC047EC0DAE928A00C2D1CA /* GTMNSObject+UnitTesting.h */,
- 8BC047ED0DAE928A00C2D1CA /* GTMNSObject+UnitTesting.m */,
8BC047F60DAE928A00C2D1CA /* GTMSenTestCase.h */,
8BC047F70DAE928A00C2D1CA /* GTMSenTestCase.m */,
F4746720129703600022C1FB /* GTMSenTestCaseTest.m */,
- 8B7DCEAB0DFF4CA60017E983 /* GTMUnitTestDevLog.h */,
- 8B7DCEAC0DFF4CA60017E983 /* GTMUnitTestDevLog.m */,
- 8BC0480E0DAE928A00C2D1CA /* RunIPhoneUnitTest.sh */,
+ 8B2C72E31D9EBB540027BD14 /* GTMUnitTestDevLog.h */,
+ 8B2C72E41D9EBB540027BD14 /* GTMUnitTestDevLog.m */,
+ 8B2C72E91D9EBBA10027BD14 /* GTMTestTimer.h */,
+ 8B2C72EA1D9EBBA10027BD14 /* GTMTestTimerTest.m */,
F435E49F0DC8F5290069CDE8 /* TestData */,
);
path = UnitTesting;
@@ -830,6 +485,12 @@
isa = PBXGroup;
children = (
8BC0498F0DAEC59100C2D1CA /* CodeCoverage.xcconfig */,
+ 8B82CF531D9C24D9007182AA /* Debug.xcconfig */,
+ 8B82CF541D9C24D9007182AA /* General.xcconfig */,
+ 8B82CF551D9C24D9007182AA /* GTMMerge.xcconfig */,
+ 8B82CF561D9C24D9007182AA /* iOS.xcconfig */,
+ 8B82CF571D9C24D9007182AA /* Release.xcconfig */,
+ 8B82CF581D9C24D9007182AA /* Unittest.xcconfig */,
);
path = subconfig;
sourceTree = "<group>";
@@ -866,8 +527,6 @@
F435E49F0DC8F5290069CDE8 /* TestData */ = {
isa = PBXGroup;
children = (
- 8BC048010DAE928A00C2D1CA /* GTMUIViewUnitTestingTest.png */,
- 8BC048000DAE928A00C2D1CA /* GTMUIViewUnitTestingTest.gtmUTState */,
);
path = TestData;
sourceTree = "<group>";
@@ -882,7 +541,6 @@
1D60588D0D05DD3D006BFB54 /* Resources */,
1D60588E0D05DD3D006BFB54 /* Sources */,
1D60588F0D05DD3D006BFB54 /* Frameworks */,
- 8B308AF70DAD072100183556 /* ShellScript */,
);
buildRules = (
);
@@ -893,41 +551,39 @@
productReference = 1D6058910D05DD3D006BFB54 /* GTMiPhoneTest.app */;
productType = "com.apple.product-type.application";
};
- F4D20EA914852BFB0001600C /* GTMiPhoneUnitTestingOCUnit */ = {
+ 8B82CEF51D9C17DE007182AA /* GTM */ = {
isa = PBXNativeTarget;
- buildConfigurationList = F4D20EAE14852BFC0001600C /* Build configuration list for PBXNativeTarget "GTMiPhoneUnitTestingOCUnit" */;
+ buildConfigurationList = 8B82CEFC1D9C17DE007182AA /* Build configuration list for PBXNativeTarget "GTM" */;
buildPhases = (
- F4D20EA514852BFB0001600C /* Resources */,
- F4D20EA614852BFB0001600C /* Sources */,
- F4D20EA714852BFB0001600C /* Frameworks */,
- F4D20EA814852BFB0001600C /* ShellScript */,
+ 8B82CEF21D9C17DE007182AA /* Sources */,
+ 8B82CEF31D9C17DE007182AA /* Frameworks */,
+ 8B82CEF41D9C17DE007182AA /* CopyFiles */,
);
buildRules = (
);
dependencies = (
- F4F1D88A14853E0F00E05BB6 /* PBXTargetDependency */,
);
- name = GTMiPhoneUnitTestingOCUnit;
- productName = GTMiPhoneUnitTestingOCUnit;
- productReference = F4D20EAA14852BFB0001600C /* GTMiPhoneUnitTestingOCUnit.octest */;
- productType = "com.apple.product-type.bundle.ocunit-test";
+ name = GTM;
+ productName = GTM;
+ productReference = 8B82CEF61D9C17DE007182AA /* libGTM.a */;
+ productType = "com.apple.product-type.library.static";
};
- F4F1D80714853D8F00E05BB6 /* GTMiPhoneUnitTestingOCUnitTestRig */ = {
+ 8B82CF211D9C1C7D007182AA /* GTMTests */ = {
isa = PBXNativeTarget;
- buildConfigurationList = F4F1D87F14853D8F00E05BB6 /* Build configuration list for PBXNativeTarget "GTMiPhoneUnitTestingOCUnitTestRig" */;
+ buildConfigurationList = 8B82CF291D9C1C7D007182AA /* Build configuration list for PBXNativeTarget "GTMTests" */;
buildPhases = (
- F4F1D80814853D8F00E05BB6 /* Resources */,
- F4F1D82714853D8F00E05BB6 /* Sources */,
- F4F1D87614853D8F00E05BB6 /* Frameworks */,
+ 8B82CF1E1D9C1C7D007182AA /* Sources */,
+ 8B82CF1F1D9C1C7D007182AA /* Frameworks */,
+ 8B82CF201D9C1C7D007182AA /* Resources */,
);
buildRules = (
);
dependencies = (
);
- name = GTMiPhoneUnitTestingOCUnitTestRig;
- productName = GTMiPhoneUIUnitTesting;
- productReference = F4F1D88214853D8F00E05BB6 /* GTMiPhoneUnitTestingOCUnitTestRig.app */;
- productType = "com.apple.product-type.application";
+ name = GTMTests;
+ productName = GTMTests;
+ productReference = 8B82CF221D9C1C7D007182AA /* GTMTests.xctest */;
+ productType = "com.apple.product-type.bundle.unit-test";
};
/* End PBXNativeTarget section */
@@ -936,6 +592,17 @@
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0460;
+ TargetAttributes = {
+ 8B82CEF51D9C17DE007182AA = {
+ CreatedOnToolsVersion = 8.0;
+ ProvisioningStyle = Automatic;
+ };
+ 8B82CF211D9C1C7D007182AA = {
+ CreatedOnToolsVersion = 8.0;
+ ProvisioningStyle = Automatic;
+ TestTargetID = 1D6058900D05DD3D006BFB54;
+ };
+ };
};
buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "GTMiPhone" */;
compatibilityVersion = "Xcode 3.2";
@@ -951,10 +618,9 @@
projectDirPath = "";
projectRoot = "";
targets = (
- F4C7F9BF0DC62EC8009BEE5B /* All UnitTests */,
1D6058900D05DD3D006BFB54 /* GTMiPhoneUnitTesting */,
- F4D20EA914852BFB0001600C /* GTMiPhoneUnitTestingOCUnit */,
- F4F1D80714853D8F00E05BB6 /* GTMiPhoneUnitTestingOCUnitTestRig */,
+ 8B82CEF51D9C17DE007182AA /* GTM */,
+ 8B82CF211D9C1C7D007182AA /* GTMTests */,
);
};
/* End PBXProject section */
@@ -964,456 +630,209 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 8BC0486B0DAE928A00C2D1CA /* GTMUIViewUnitTestingTest.gtmUTState in Resources */,
- 8BC0486C0DAE928A00C2D1CA /* GTMUIViewUnitTestingTest.png in Resources */,
8BFE15C70FB0F764001BE894 /* GTMABAddressBook.strings in Resources */,
8BFE15C90FB0F764001BE894 /* phone.png in Resources */,
- 64D0F5DE0FD3E68400506CC7 /* GTMUIImage+Resize_100x100_to_60x40.png in Resources */,
64D0F5DF0FD3E68400506CC7 /* GTMUIImage+Resize_50x100.png in Resources */,
- 448D61FC11AC1F250097ACBC /* GTMUIImage+Resize_50x100_flipped.png in Resources */,
- 64D0F5E00FD3E68400506CC7 /* GTMUIImage+Resize_50x100_to_40x60_clip.png in Resources */,
- 64D0F5E10FD3E68400506CC7 /* GTMUIImage+Resize_50x100_to_40x60_noclip.png in Resources */,
- 64D0F5E20FD3E68400506CC7 /* GTMUIImage+Resize_50x100_to_50x50_clip.png in Resources */,
- 64D0F5E30FD3E68400506CC7 /* GTMUIImage+Resize_50x100_to_50x50_noclip.png in Resources */,
- 64D0F5E40FD3E68400506CC7 /* GTMUIImage+Resize_50x100_to_60x40_clip.png in Resources */,
- 64D0F5E50FD3E68400506CC7 /* GTMUIImage+Resize_50x100_to_60x40_noclip.png in Resources */,
64D0F5E60FD3E68400506CC7 /* GTMUIImage+Resize_100x50.png in Resources */,
- 448D61FB11AC1F1B0097ACBC /* GTMUIImage+Resize_100x50_flipped.png in Resources */,
- 64D0F5E70FD3E68400506CC7 /* GTMUIImage+Resize_100x50_to_40x60_clip.png in Resources */,
- 64D0F5E80FD3E68400506CC7 /* GTMUIImage+Resize_100x50_to_40x60_noclip.png in Resources */,
- 64D0F5E90FD3E68400506CC7 /* GTMUIImage+Resize_100x50_to_50x50_clip.png in Resources */,
- 64D0F5EA0FD3E68400506CC7 /* GTMUIImage+Resize_100x50_to_50x50_noclip.png in Resources */,
- 64D0F5EB0FD3E68400506CC7 /* GTMUIImage+Resize_100x50_to_60x40_clip.png in Resources */,
- 64D0F5EC0FD3E68400506CC7 /* GTMUIImage+Resize_100x50_to_60x40_noclip.png in Resources */,
64D0F5ED0FD3E68400506CC7 /* GTMUIImage+Resize_100x100.png in Resources */,
- 64D0F5EE0FD3E68400506CC7 /* GTMUIImage+Resize_100x100_to_40x60.png in Resources */,
- 64D0F5EF0FD3E68400506CC7 /* GTMUIImage+Resize_100x100_to_50x50.png in Resources */,
- 9340CFA6140550E30026DDC9 /* GTMFadeTruncatingLabelTest1.png in Resources */,
- 9340CFA7140550E30026DDC9 /* GTMFadeTruncatingLabelTest2.png in Resources */,
- 9340CFA8140550E30026DDC9 /* GTMFadeTruncatingLabelTest3.png in Resources */,
- 9340CFA9140550E30026DDC9 /* GTMFadeTruncatingLabelTest4.png in Resources */,
- 9340CFAA140550E30026DDC9 /* GTMFadeTruncatingLabelTest5.png in Resources */,
169E1E311459AAE100E6F562 /* GTMUILocalizerTest.xib in Resources */,
- F45F27B014F41441003A91E6 /* GTMFadeTruncatingLabelTest1.5.png in Resources */,
- F45F27B214F41441003A91E6 /* GTMFadeTruncatingLabelTest2.5.png in Resources */,
- F45F27B414F41441003A91E6 /* GTMFadeTruncatingLabelTest3.5.png in Resources */,
- F45F27B614F41441003A91E6 /* GTMFadeTruncatingLabelTest4.5.png in Resources */,
- F45F27B814F41441003A91E6 /* GTMFadeTruncatingLabelTest5.5.png in Resources */,
- F4C35E70164EB3A300688B6E /* GTMFadeTruncatingLabelTest1.6.png in Resources */,
- F4C35E72164EB3A300688B6E /* GTMFadeTruncatingLabelTest2.6.png in Resources */,
- F4C35E74164EB3A300688B6E /* GTMFadeTruncatingLabelTest3.6.png in Resources */,
- F4C35E76164EB3A300688B6E /* GTMFadeTruncatingLabelTest4.6.png in Resources */,
- F4C35E78164EB3A300688B6E /* GTMFadeTruncatingLabelTest5.6.png in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
- F4D20EA514852BFB0001600C /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- F4D20EB214852CA40001600C /* GTMABAddressBook.strings in Resources */,
- F4D20EBE14852CA40001600C /* GTMFadeTruncatingLabelTest1.png in Resources */,
- F4D20EBF14852CA40001600C /* GTMFadeTruncatingLabelTest2.png in Resources */,
- F4D20EC014852CA40001600C /* GTMFadeTruncatingLabelTest3.png in Resources */,
- F4D20EC114852CA40001600C /* GTMFadeTruncatingLabelTest4.png in Resources */,
- F4D20EC214852CA40001600C /* GTMFadeTruncatingLabelTest5.png in Resources */,
- F4D20EFB14852CA40001600C /* GTMUIImage+Resize_100x100.png in Resources */,
- F4D20EFC14852CA40001600C /* GTMUIImage+Resize_100x100_to_40x60.png in Resources */,
- F4D20EFD14852CA40001600C /* GTMUIImage+Resize_100x100_to_50x50.png in Resources */,
- F4D20EFE14852CA40001600C /* GTMUIImage+Resize_100x100_to_60x40.png in Resources */,
- F4D20EFF14852CA40001600C /* GTMUIImage+Resize_100x50.png in Resources */,
- F4D20F0014852CA40001600C /* GTMUIImage+Resize_100x50_flipped.png in Resources */,
- F4D20F0114852CA40001600C /* GTMUIImage+Resize_100x50_to_40x60_clip.png in Resources */,
- F4D20F0214852CA40001600C /* GTMUIImage+Resize_100x50_to_40x60_noclip.png in Resources */,
- F4D20F0314852CA40001600C /* GTMUIImage+Resize_100x50_to_50x50_clip.png in Resources */,
- F4D20F0414852CA40001600C /* GTMUIImage+Resize_100x50_to_50x50_noclip.png in Resources */,
- F4D20F0514852CA40001600C /* GTMUIImage+Resize_100x50_to_60x40_clip.png in Resources */,
- F4D20F0614852CA40001600C /* GTMUIImage+Resize_100x50_to_60x40_noclip.png in Resources */,
- F4D20F0714852CA40001600C /* GTMUIImage+Resize_50x100.png in Resources */,
- F4D20F0814852CA40001600C /* GTMUIImage+Resize_50x100_flipped.png in Resources */,
- F4D20F0914852CA40001600C /* GTMUIImage+Resize_50x100_to_40x60_clip.png in Resources */,
- F4D20F0A14852CA40001600C /* GTMUIImage+Resize_50x100_to_40x60_noclip.png in Resources */,
- F4D20F0B14852CA40001600C /* GTMUIImage+Resize_50x100_to_50x50_clip.png in Resources */,
- F4D20F0C14852CA40001600C /* GTMUIImage+Resize_50x100_to_50x50_noclip.png in Resources */,
- F4D20F0D14852CA40001600C /* GTMUIImage+Resize_50x100_to_60x40_clip.png in Resources */,
- F4D20F0E14852CA40001600C /* GTMUIImage+Resize_50x100_to_60x40_noclip.png in Resources */,
- F4D20F1414852CA40001600C /* GTMUILocalizerTest.xib in Resources */,
- F4D20F1714852CA40001600C /* GTMUIViewUnitTestingTest.gtmUTState in Resources */,
- F4D20F1814852CA40001600C /* GTMUIViewUnitTestingTest.png in Resources */,
- F4D20F1C14852CA40001600C /* phone.png in Resources */,
- F45F27B114F41441003A91E6 /* GTMFadeTruncatingLabelTest1.5.png in Resources */,
- F45F27B314F41441003A91E6 /* GTMFadeTruncatingLabelTest2.5.png in Resources */,
- F45F27B514F41441003A91E6 /* GTMFadeTruncatingLabelTest3.5.png in Resources */,
- F45F27B714F41441003A91E6 /* GTMFadeTruncatingLabelTest4.5.png in Resources */,
- F45F27B914F41441003A91E6 /* GTMFadeTruncatingLabelTest5.5.png in Resources */,
- F4C35E71164EB3A300688B6E /* GTMFadeTruncatingLabelTest1.6.png in Resources */,
- F4C35E73164EB3A300688B6E /* GTMFadeTruncatingLabelTest2.6.png in Resources */,
- F4C35E75164EB3A300688B6E /* GTMFadeTruncatingLabelTest3.6.png in Resources */,
- F4C35E77164EB3A300688B6E /* GTMFadeTruncatingLabelTest4.6.png in Resources */,
- F4C35E79164EB3A300688B6E /* GTMFadeTruncatingLabelTest5.6.png in Resources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- F4F1D80814853D8F00E05BB6 /* Resources */ = {
+ 8B82CF201D9C1C7D007182AA /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
+ 8B82CF331D9C231A007182AA /* phone.png in Resources */,
+ 8B82CF301D9C22F7007182AA /* GTMABAddressBook.strings in Resources */,
+ 8B82CF5B1D9C25E0007182AA /* GTMUIImage+Resize_50x100.png in Resources */,
+ 8B82CF5A1D9C25E0007182AA /* GTMUIImage+Resize_100x50.png in Resources */,
+ 8B82CF4B1D9C2373007182AA /* GTMUILocalizerTest.xib in Resources */,
+ 8B82CF591D9C25E0007182AA /* GTMUIImage+Resize_100x100.png in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
-/* Begin PBXShellScriptBuildPhase section */
- 8B308AF70DAD072100183556 /* ShellScript */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputPaths = (
- );
- outputPaths = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "# Nuke coverage data earch run\nexport GTM_REMOVE_GCOV_DATA=1\n\n# Enable launch daemons for security tests.\nexport GTM_DISABLE_IPHONE_LAUNCH_DAEMONS=0\n\n# Run the unit tests in this test bundle.\n${SRCROOT}/UnitTesting/RunIPhoneUnitTest.sh\n";
- };
- F4D20EA814852BFB0001600C /* 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 */
1D60588E0D05DD3D006BFB54 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 8BC0480F0DAE928A00C2D1CA /* GTMCalculatedRange.m in Sources */,
- 8BC048100DAE928A00C2D1CA /* GTMCalculatedRangeTest.m in Sources */,
- 8BC048130DAE928A00C2D1CA /* GTMNSData+zlib.m in Sources */,
- 8BC048150DAE928A00C2D1CA /* GTMNSEnumerator+Filter.m in Sources */,
- 8BC048160DAE928A00C2D1CA /* GTMNSEnumerator+FilterTest.m in Sources */,
- 8BC048170DAE928A00C2D1CA /* GTMNSFileManager+Path.m in Sources */,
- 8BC048180DAE928A00C2D1CA /* GTMNSFileManager+PathTest.m in Sources */,
- 8BC048190DAE928A00C2D1CA /* GTMNSString+HTML.m in Sources */,
- 8BC0481A0DAE928A00C2D1CA /* GTMNSString+HTMLTest.m in Sources */,
- 8BC0481B0DAE928A00C2D1CA /* GTMNSString+XML.m in Sources */,
- 8BC0481C0DAE928A00C2D1CA /* GTMNSString+XMLTest.m in Sources */,
- 8BC0481F0DAE928A00C2D1CA /* GTMRegex.m in Sources */,
- 8BC048200DAE928A00C2D1CA /* GTMRegexTest.m in Sources */,
- 8BC048250DAE928A00C2D1CA /* GTMMethodCheck.m in Sources */,
- 8BC048260DAE928A00C2D1CA /* GTMMethodCheckTest.m in Sources */,
- 8BC048270DAE928A00C2D1CA /* GTMCALayer+UnitTesting.m in Sources */,
- 8BC048580DAE928A00C2D1CA /* GTMIPhoneUnitTestMain.m in Sources */,
- 8BC048600DAE928A00C2D1CA /* GTMNSObject+UnitTesting.m in Sources */,
- 8BC048650DAE928A00C2D1CA /* GTMSenTestCase.m in Sources */,
- 8BC04A720DAF144700C2D1CA /* GTMSystemVersionTest.m in Sources */,
- 8BC04A750DAF145200C2D1CA /* GTMSystemVersion.m in Sources */,
- 8B5547CA0DB3BBF20014CC1C /* GTMUIKit+UnitTesting.m in Sources */,
- 8B5547CB0DB3BBF20014CC1C /* GTMUIKit+UnitTestingTest.m in Sources */,
- F439ADF00DBD3C4000BE9B91 /* GTMGeometryUtils.m in Sources */,
- F439ADF10DBD3C4000BE9B91 /* GTMGeometryUtilsTest.m in Sources */,
- 8B7DCEAA0DFF4C760017E983 /* GTMDevLogUnitTestingBridge.m in Sources */,
- 8B7DCEAD0DFF4CA60017E983 /* GTMUnitTestDevLog.m in Sources */,
67A7820C0E00927400EBF506 /* GTMIPhoneUnitTestDelegate.m in Sources */,
- 8B3AA8F30E032FC7007E31B5 /* GTMNSString+URLArguments.m in Sources */,
+ 8B82CF681D9C3689007182AA /* GTMSenTestCase.m in Sources */,
F4746721129703600022C1FB /* GTMSenTestCaseTest.m in Sources */,
- 8B3AA8F40E032FC7007E31B5 /* GTMNSString+URLArgumentsTest.m in Sources */,
- 8B41EC0F0E0711D40040CF9F /* GTMValidatingContainersTest.m in Sources */,
- 8B41EC100E0711D40040CF9F /* GTMValidatingContainers.m in Sources */,
- F418AF990E7558EC004FB565 /* GTMExceptionalInlines.m in Sources */,
- F418AF9A0E7558EC004FB565 /* GTMExceptionalInlinesTest.m in Sources */,
- F418AFA50E7559C7004FB565 /* GTMLogger.m in Sources */,
- F418AFA60E7559C7004FB565 /* GTMLoggerTest.m in Sources */,
- F418AFB40E755B4D004FB565 /* GTMLoggerRingBufferWriter.m in Sources */,
- F418AFB50E755B4D004FB565 /* GTMLoggerRingBufferWriterTest.m in Sources */,
- F418AFCD0E755C94004FB565 /* GTMNSDictionary+URLArguments.m in Sources */,
- F418AFCE0E755C94004FB565 /* GTMNSDictionary+URLArgumentsTest.m in Sources */,
- F418AFD70E755D44004FB565 /* GTMPath.m in Sources */,
- F418AFD80E755D44004FB565 /* GTMPathTest.m in Sources */,
- 8BDA25140E759A6500C9769D /* GTMNSData+zlibTest.m in Sources */,
- 8BE839890E89C74B00C611B0 /* GTMDebugThreadValidation.m in Sources */,
- 8BE83A660E8B059A00C611B0 /* GTMDebugThreadValidationTest.m in Sources */,
- F4E3B3D80EB5EF2400CB713D /* GTMUIFont+LineHeight.m in Sources */,
- F4E3B3E20EB5EF9A00CB713D /* GTMUIFont+LineHeightTest.m in Sources */,
- F4EF8AD70EBFF814008DD6DA /* GTMStackTrace.m in Sources */,
- F4EF8AD80EBFF814008DD6DA /* GTMStackTraceTest.m in Sources */,
- F417115A0ECDFF0400B9B276 /* GTMLightweightProxy.m in Sources */,
- F417115B0ECDFF0400B9B276 /* GTMLightweightProxyTest.m in Sources */,
- 6294461C0EDE178D009295EA /* GTMNSArray+MergeTest.m in Sources */,
- 6294461D0EDE17A0009295EA /* GTMNSArray+Merge.m in Sources */,
- 8B6C18740F3769D200E51E5D /* GTMNSObject+KeyValueObserving.m in Sources */,
- 8BFE15C60FB0F764001BE894 /* GTMABAddressBook.m in Sources */,
- 8BFE15C80FB0F764001BE894 /* GTMABAddressBookTest.m in Sources */,
- 8BD35C920FB234E1009058F5 /* GTMNSScanner+JSON.m in Sources */,
- 8BD35C930FB234E1009058F5 /* GTMNSScanner+JSONTest.m in Sources */,
- 64D0F5C80FD3E65C00506CC7 /* GTMUIImage+ResizeTest.m in Sources */,
- 64D0F5C90FD3E65C00506CC7 /* GTMUIImage+Resize.m in Sources */,
- 13C1ED4F104896C900907CD8 /* GTMUIView+SubtreeDescription.m in Sources */,
- 13C1ED50104896C900907CD8 /* GTMUIView+SubtreeDescriptionTest.m in Sources */,
- 0B859DA1104D08160064FE46 /* GTMNSDictionary+CaseInsensitive.m in Sources */,
- 0B859DA2104D08160064FE46 /* GTMNSDictionary+CaseInsensitiveTest.m in Sources */,
- 0BBC768B10FEF62C0006FABE /* GTMStringEncoding.m in Sources */,
- 0BBC768C10FEF62C0006FABE /* GTMStringEncodingTest.m in Sources */,
- 8BB78FA911B94D9500AB31AF /* GTMGoogleSearch.m in Sources */,
- 8BB78FAA11B94D9500AB31AF /* GTMGoogleSearchTest.m in Sources */,
- 8BCB5AB111C02D7D009B6C40 /* GTMNSScanner+Unsigned.m in Sources */,
- 8BCB5AB211C02D7D009B6C40 /* GTMNSScanner+UnsignedTest.m in Sources */,
- 8BFFCD7811C1934900E45777 /* GTMNSObject+KeyValueObservingTest.m in Sources */,
- 8B2908B211F8E7070064F50F /* GTMNSFileHandle+UniqueName.m in Sources */,
- 8B2908B311F8E7070064F50F /* GTMNSFileHandle+UniqueNameTest.m in Sources */,
- 9340CF9F140550CE0026DDC9 /* GTMFadeTruncatingLabel.m in Sources */,
- 9340CFA0140550CE0026DDC9 /* GTMFadeTruncatingLabelTest.m in Sources */,
- 169E1E2F1459AAE100E6F562 /* GTMUILocalizer.m in Sources */,
- 169E1E301459AAE100E6F562 /* GTMUILocalizerTest.m in Sources */,
- BE9B794114FE9A2C004A993A /* GTMURLBuilderTest.m in Sources */,
- BE9B794314FE9A3E004A993A /* GTMURLBuilder.m in Sources */,
- 8B6FF394151A664600B0642B /* GTMNSThread+Blocks.m in Sources */,
- 8B6FF396151A664600B0642B /* GTMNSThread+BlocksTest.m in Sources */,
- 8B6FF39A151A670100B0642B /* GTMFoundationUnitTestingUtilities.m in Sources */,
- 234E17DC152CECFB00CF3542 /* GTMIPhoneSecurityLibraryTest.m in Sources */,
+ 8B82CF671D9C35B8007182AA /* GTMIPhoneUnitTestMain.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
- F4D20EA614852BFB0001600C /* Sources */ = {
+ 8B82CEF21D9C17DE007182AA /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- F4D20EB114852CA40001600C /* GTMABAddressBook.m in Sources */,
- F4D20EB314852CA40001600C /* GTMABAddressBookTest.m in Sources */,
- F4D20EB414852CA40001600C /* GTMCALayer+UnitTesting.m in Sources */,
- F4D20EB514852CA40001600C /* GTMCalculatedRange.m in Sources */,
- F4D20EB614852CA40001600C /* GTMCalculatedRangeTest.m in Sources */,
- F4D20EB714852CA40001600C /* GTMDebugThreadValidation.m in Sources */,
- F4D20EB814852CA40001600C /* GTMDebugThreadValidationTest.m in Sources */,
- F4D20EB914852CA40001600C /* GTMDevLogUnitTestingBridge.m in Sources */,
- F4D20EBA14852CA40001600C /* GTMExceptionalInlines.m in Sources */,
- F4D20EBB14852CA40001600C /* GTMExceptionalInlinesTest.m in Sources */,
- F4D20EBC14852CA40001600C /* GTMFadeTruncatingLabel.m in Sources */,
- F4D20EBD14852CA40001600C /* GTMFadeTruncatingLabelTest.m in Sources */,
- F4D20EC314852CA40001600C /* GTMGeometryUtils.m in Sources */,
- F4D20EC414852CA40001600C /* GTMGeometryUtilsTest.m in Sources */,
- F4D20EC514852CA40001600C /* GTMGoogleSearch.m in Sources */,
- F4D20EC614852CA40001600C /* GTMGoogleSearchTest.m in Sources */,
- F4D20EC914852CA40001600C /* GTMLightweightProxy.m in Sources */,
- F4D20ECA14852CA40001600C /* GTMLightweightProxyTest.m in Sources */,
- F4D20ECB14852CA40001600C /* GTMLogger.m in Sources */,
- F4D20ECC14852CA40001600C /* GTMLoggerRingBufferWriter.m in Sources */,
- F4D20ECD14852CA40001600C /* GTMLoggerRingBufferWriterTest.m in Sources */,
- F4D20ECE14852CA40001600C /* GTMLoggerTest.m in Sources */,
- F4D20ECF14852CA40001600C /* GTMMethodCheck.m in Sources */,
- F4D20ED014852CA40001600C /* GTMMethodCheckTest.m in Sources */,
- F4D20ED114852CA40001600C /* GTMNSArray+Merge.m in Sources */,
- F4D20ED214852CA40001600C /* GTMNSArray+MergeTest.m in Sources */,
- F4D20ED314852CA40001600C /* GTMNSData+zlib.m in Sources */,
- F4D20ED414852CA40001600C /* GTMNSData+zlibTest.m in Sources */,
- F4D20ED514852CA40001600C /* GTMNSDictionary+CaseInsensitive.m in Sources */,
- F4D20ED614852CA40001600C /* GTMNSDictionary+CaseInsensitiveTest.m in Sources */,
- F4D20ED714852CA40001600C /* GTMNSDictionary+URLArguments.m in Sources */,
- F4D20ED814852CA40001600C /* GTMNSDictionary+URLArgumentsTest.m in Sources */,
- F4D20ED914852CA40001600C /* GTMNSEnumerator+Filter.m in Sources */,
- F4D20EDA14852CA40001600C /* GTMNSEnumerator+FilterTest.m in Sources */,
- F4D20EDB14852CA40001600C /* GTMNSFileHandle+UniqueName.m in Sources */,
- F4D20EDC14852CA40001600C /* GTMNSFileHandle+UniqueNameTest.m in Sources */,
- F4D20EDD14852CA40001600C /* GTMNSFileManager+Path.m in Sources */,
- F4D20EDE14852CA40001600C /* GTMNSFileManager+PathTest.m in Sources */,
- F4D20EDF14852CA40001600C /* GTMNSObject+KeyValueObserving.m in Sources */,
- F4D20EE014852CA40001600C /* GTMNSObject+KeyValueObservingTest.m in Sources */,
- F4D20EE114852CA40001600C /* GTMNSObject+UnitTesting.m in Sources */,
- F4D20EE214852CA40001600C /* GTMNSScanner+JSON.m in Sources */,
- F4D20EE314852CA40001600C /* GTMNSScanner+JSONTest.m in Sources */,
- F4D20EE414852CA40001600C /* GTMNSScanner+Unsigned.m in Sources */,
- F4D20EE514852CA40001600C /* GTMNSScanner+UnsignedTest.m in Sources */,
- F4D20EE614852CA40001600C /* GTMNSString+HTML.m in Sources */,
- F4D20EE714852CA40001600C /* GTMNSString+HTMLTest.m in Sources */,
- F4D20EE814852CA40001600C /* GTMNSString+URLArguments.m in Sources */,
- F4D20EE914852CA40001600C /* GTMNSString+URLArgumentsTest.m in Sources */,
- F4D20EEA14852CA40001600C /* GTMNSString+XML.m in Sources */,
- F4D20EEB14852CA40001600C /* GTMNSString+XMLTest.m in Sources */,
- F4D20EEC14852CA40001600C /* GTMPath.m in Sources */,
- F4D20EED14852CA40001600C /* GTMPathTest.m in Sources */,
- F4D20EEE14852CA40001600C /* GTMRegex.m in Sources */,
- F4D20EEF14852CA40001600C /* GTMRegexTest.m in Sources */,
- F4D20EF014852CA40001600C /* GTMSenTestCase.m in Sources */,
- F4D20EF114852CA40001600C /* GTMSenTestCaseTest.m in Sources */,
- F4D20EF214852CA40001600C /* GTMStackTrace.m in Sources */,
- F4D20EF314852CA40001600C /* GTMStackTraceTest.m in Sources */,
- F4D20EF414852CA40001600C /* GTMStringEncoding.m in Sources */,
- F4D20EF514852CA40001600C /* GTMStringEncodingTest.m in Sources */,
- F4D20EF614852CA40001600C /* GTMSystemVersion.m in Sources */,
- F4D20EF714852CA40001600C /* GTMSystemVersionTest.m in Sources */,
- F4D20EF814852CA40001600C /* GTMUIFont+LineHeight.m in Sources */,
- F4D20EF914852CA40001600C /* GTMUIFont+LineHeightTest.m in Sources */,
- F4D20EFA14852CA40001600C /* GTMUIImage+Resize.m in Sources */,
- F4D20F0F14852CA40001600C /* GTMUIImage+ResizeTest.m in Sources */,
- F4D20F1014852CA40001600C /* GTMUIKit+UnitTesting.m in Sources */,
- F4D20F1114852CA40001600C /* GTMUIKit+UnitTestingTest.m in Sources */,
- F4D20F1214852CA40001600C /* GTMUILocalizer.m in Sources */,
- F4D20F1314852CA40001600C /* GTMUILocalizerTest.m in Sources */,
- F4D20F1514852CA40001600C /* GTMUIView+SubtreeDescription.m in Sources */,
- F4D20F1614852CA40001600C /* GTMUIView+SubtreeDescriptionTest.m in Sources */,
- F4D20F1914852CA40001600C /* GTMUnitTestDevLog.m in Sources */,
- F4D20F1A14852CA40001600C /* GTMValidatingContainers.m in Sources */,
- F4D20F1B14852CA40001600C /* GTMValidatingContainersTest.m in Sources */,
- BE9B794214FE9A2E004A993A /* GTMURLBuilderTest.m in Sources */,
- BE9B794414FE9A3E004A993A /* GTMURLBuilder.m in Sources */,
- 8B6FF395151A664600B0642B /* GTMNSThread+Blocks.m in Sources */,
- 8B6FF397151A664600B0642B /* GTMNSThread+BlocksTest.m in Sources */,
- 8B6FF39B151A670100B0642B /* GTMFoundationUnitTestingUtilities.m in Sources */,
- 234E17DD152CECFB00CF3542 /* GTMIPhoneSecurityLibraryTest.m in Sources */,
+ 8BF753DB1D9DB3080010A295 /* GTMSQLite.m in Sources */,
+ 8B82CF0C1D9C1C3B007182AA /* GTMNSNumber+64Bit.m in Sources */,
+ 8B82CF041D9C1C3B007182AA /* GTMLightweightProxy.m in Sources */,
+ 8B82CF0B1D9C1C3B007182AA /* GTMNSFileHandle+UniqueName.m in Sources */,
+ 8B7651E11D9C89B800DB2C59 /* GTMRoundedRectPath.m in Sources */,
+ 8B82CF021D9C1C3B007182AA /* GTMStringEncoding.m in Sources */,
+ 8B82CF161D9C1C3B007182AA /* GTMURLBuilder.m in Sources */,
+ 8B7651D81D9C872F00DB2C59 /* GTMLogger+ASL.m in Sources */,
+ 8B82CF171D9C1C3B007182AA /* GTMUILocalizer.m in Sources */,
+ 8B82CF111D9C1C3B007182AA /* GTMNSString+XML.m in Sources */,
+ 8B82CF081D9C1C3B007182AA /* GTMNSData+zlib.m in Sources */,
+ 8B82CF181D9C1C3B007182AA /* GTMFadeTruncatingLabel.m in Sources */,
+ 8B82CF151D9C1C3B007182AA /* GTMSystemVersion.m in Sources */,
+ 8B82CF011D9C1C3B007182AA /* GTMMethodCheck.m in Sources */,
+ 8B82CF0E1D9C1C3B007182AA /* GTMNSScanner+JSON.m in Sources */,
+ 8B82CF0F1D9C1C3B007182AA /* GTMNSString+HTML.m in Sources */,
+ 8B82CF1C1D9C1C3B007182AA /* GTMFoundationUnitTestingUtilities.m in Sources */,
+ 8B82CF191D9C1C3B007182AA /* GTMUIFont+LineHeight.m in Sources */,
+ 8B82CF121D9C1C3B007182AA /* GTMNSThread+Blocks.m in Sources */,
+ 8B82CF0D1D9C1C3B007182AA /* GTMNSObject+KeyValueObserving.m in Sources */,
+ 8B82CF1A1D9C1C3B007182AA /* GTMUIImage+Resize.m in Sources */,
+ 8B82CF141D9C1C3B007182AA /* GTMStackTrace.m in Sources */,
+ 8B82CF031D9C1C3B007182AA /* GTMGeometryUtils.m in Sources */,
+ 8B82CF051D9C1C3B007182AA /* GTMLogger.m in Sources */,
+ 8B82CF101D9C1C3B007182AA /* GTMNSString+URLArguments.m in Sources */,
+ 8B82CF091D9C1C3B007182AA /* GTMNSDictionary+URLArguments.m in Sources */,
+ 8B82CF061D9C1C3B007182AA /* GTMLoggerRingBufferWriter.m in Sources */,
+ 8B82CEFF1D9C1C3B007182AA /* GTMABAddressBook.m in Sources */,
+ 8B82CF071D9C1C3B007182AA /* GTMNSArray+Merge.m in Sources */,
+ 8B82CF131D9C1C3B007182AA /* GTMRegex.m in Sources */,
+ 8B82CF0A1D9C1C3B007182AA /* GTMNSFileManager+Path.m in Sources */,
+ 8B82CF001D9C1C3B007182AA /* GTMDebugThreadValidation.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
- F4F1D82714853D8F00E05BB6 /* Sources */ = {
+ 8B82CF1E1D9C1C7D007182AA /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- F4F1D88814853E0A00E05BB6 /* GTMIPhoneUnitTestMain.m in Sources */,
+ 8B82CF3C1D9C2373007182AA /* GTMNSDictionary+URLArgumentsTest.m in Sources */,
+ 8B82CF3D1D9C2373007182AA /* GTMNSFileManager+PathTest.m in Sources */,
+ 8B82CF391D9C2373007182AA /* GTMLoggerRingBufferWriterTest.m in Sources */,
+ 8B7651D91D9C873200DB2C59 /* GTMLogger+ASLTest.m in Sources */,
+ 8B82CF351D9C2353007182AA /* GTMMethodCheckTest.m in Sources */,
+ 8B82CF481D9C2373007182AA /* GTMSystemVersionTest.m in Sources */,
+ 8B82CF2C1D9C1CC5007182AA /* GTMStringEncodingTest.m in Sources */,
+ 8B82CF4D1D9C2385007182AA /* GTMUIFont+LineHeightTest.m in Sources */,
+ 8B82CF381D9C2373007182AA /* GTMLoggerTest.m in Sources */,
+ 8B82CF3A1D9C2373007182AA /* GTMNSArray+MergeTest.m in Sources */,
+ 8B82CF311D9C22F7007182AA /* GTMABAddressBookTest.m in Sources */,
+ 8B82CF2F1D9C1E49007182AA /* GTMSenTestCase.m in Sources */,
+ 8B82CF4A1D9C2373007182AA /* GTMUILocalizerTest.m in Sources */,
+ 8BF753DD1D9DB30E0010A295 /* GTMSQLiteTest.m in Sources */,
+ 8B82CF421D9C2373007182AA /* GTMNSString+HTMLTest.m in Sources */,
+ 8B82CF3F1D9C2373007182AA /* GTMNSNumber+64BitTest.m in Sources */,
+ 8B82CF361D9C2373007182AA /* GTMGeometryUtilsTest.m in Sources */,
+ 8B82CF441D9C2373007182AA /* GTMNSString+XMLTest.m in Sources */,
+ 8B82CF431D9C2373007182AA /* GTMNSString+URLArgumentsTest.m in Sources */,
+ 8B82CF491D9C2373007182AA /* GTMURLBuilderTest.m in Sources */,
+ 8B82CF4E1D9C2385007182AA /* GTMUIImage+ResizeTest.m in Sources */,
+ 8B82CF371D9C2373007182AA /* GTMLightweightProxyTest.m in Sources */,
+ 8B82CF4C1D9C2385007182AA /* GTMFadeTruncatingLabelTest.m in Sources */,
+ 8B2C72E51D9EBB540027BD14 /* GTMUnitTestDevLog.m in Sources */,
+ 8B82CF3B1D9C2373007182AA /* GTMNSData+zlibTest.m in Sources */,
+ 8B82CF3E1D9C2373007182AA /* GTMNSFileHandle+UniqueNameTest.m in Sources */,
+ 8B82CF501D9C2385007182AA /* GTMSenTestCaseTest.m in Sources */,
+ 8B82CF471D9C2373007182AA /* GTMStackTraceTest.m in Sources */,
+ 8B2C72EB1D9EBBA10027BD14 /* GTMTestTimerTest.m in Sources */,
+ 8B82CF401D9C2373007182AA /* GTMNSObject+KeyValueObservingTest.m in Sources */,
+ 8B82CF411D9C2373007182AA /* GTMNSScanner+JSONTest.m in Sources */,
+ 8B82CF451D9C2373007182AA /* GTMNSThread+BlocksTest.m in Sources */,
+ 8B82CF461D9C2373007182AA /* GTMRegexTest.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
-/* Begin PBXTargetDependency section */
- F4C7F9C40DC62ECD009BEE5B /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- target = 1D6058900D05DD3D006BFB54 /* GTMiPhoneUnitTesting */;
- targetProxy = F4C7F9C30DC62ECD009BEE5B /* PBXContainerItemProxy */;
- };
- F4D20F1E14852CAB0001600C /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- target = F4D20EA914852BFB0001600C /* GTMiPhoneUnitTestingOCUnit */;
- targetProxy = F4D20F1D14852CAB0001600C /* PBXContainerItemProxy */;
- };
- F4F1D88A14853E0F00E05BB6 /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- target = F4F1D80714853D8F00E05BB6 /* GTMiPhoneUnitTestingOCUnitTestRig */;
- targetProxy = F4F1D88914853E0F00E05BB6 /* PBXContainerItemProxy */;
- };
-/* End PBXTargetDependency section */
-
/* Begin XCBuildConfiguration section */
- F4A0A962140438D50010B64B /* Debug */ = {
+ 8B82CEFD1D9C17DE007182AA /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = F4A0A95E140438B90010B64B /* DebugiOS.xcconfig */;
buildSettings = {
- CODE_SIGNING_REQUIRED = NO;
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = GTM_Prefix.pch;
- GCC_WARN_SHADOW = YES;
- GTM_EXTRA_WARNING_OVERRIDE_CFLAGS = "-Wno-unused-parameter";
- IPHONEOS_DEPLOYMENT_TARGET = 4.0;
+ "ARCHS[sdk=iphoneos*]" = "$(ARCHS_STANDARD)";
+ "ARCHS[sdk=iphonesimulator*]" = "$(ARCHS_STANDARD)";
+ PRODUCT_NAME = GTM;
};
name = Debug;
};
- F4A0A963140438D50010B64B /* Debug */ = {
+ 8B82CEFE1D9C17DE007182AA /* Release */ = {
isa = XCBuildConfiguration;
+ baseConfigurationReference = F4A0A95F140438B90010B64B /* ReleaseiOS.xcconfig */;
buildSettings = {
- PRODUCT_NAME = "All UnitTests";
+ PRODUCT_NAME = GTM;
};
- name = Debug;
+ name = Release;
};
- F4A0A964140438D50010B64B /* Debug */ = {
+ 8B82CF2A1D9C1C7D007182AA /* Debug */ = {
isa = XCBuildConfiguration;
+ baseConfigurationReference = F4A0A95E140438B90010B64B /* DebugiOS.xcconfig */;
buildSettings = {
- INFOPLIST_FILE = "GTMiPhone-Info.plist";
- PRODUCT_NAME = GTMiPhoneTest;
+ "ARCHS[sdk=iphoneos*]" = "$(ARCHS_STANDARD)";
+ "ARCHS[sdk=iphonesimulator*]" = "$(ARCHS_STANDARD)";
+ CODE_SIGN_IDENTITY = "iPhone Developer";
+ GTM_HOST_OTHER_LDFLAGS = "-ObjC -lz -read_only_relocs suppress";
+ INFOPLIST_FILE = "UnitTest-Info.plist";
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
};
- F4A0A96C140438ED0010B64B /* Release */ = {
+ 8B82CF2B1D9C1C7D007182AA /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = F4A0A95F140438B90010B64B /* ReleaseiOS.xcconfig */;
buildSettings = {
- CODE_SIGNING_REQUIRED = NO;
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = GTM_Prefix.pch;
- GCC_WARN_SHADOW = YES;
- GTM_EXTRA_WARNING_OVERRIDE_CFLAGS = "-Wno-unused-parameter";
- IPHONEOS_DEPLOYMENT_TARGET = 4.0;
+ CODE_SIGN_IDENTITY = "iPhone Developer";
+ GTM_HOST_OTHER_LDFLAGS = "-ObjC -lz -read_only_relocs suppress";
+ INFOPLIST_FILE = "UnitTest-Info.plist";
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
};
- F4A0A96D140438ED0010B64B /* Release */ = {
+ F4A0A962140438D50010B64B /* Debug */ = {
isa = XCBuildConfiguration;
+ baseConfigurationReference = F4A0A95E140438B90010B64B /* DebugiOS.xcconfig */;
buildSettings = {
- PRODUCT_NAME = "All UnitTests";
+ "ARCHS[sdk=iphoneos*]" = "$(ARCHS_STANDARD)";
+ "ARCHS[sdk=iphonesimulator*]" = "$(ARCHS_STANDARD)";
+ GCC_WARN_SHADOW = YES;
+ GTM_EXTRA_WARNING_OVERRIDE_CFLAGS = "-Wno-unused-parameter";
+ GTM_HOST_GCC_PREPROCESSOR_DEFINITIONS = "GTM_USING_XCTEST=1";
+ IPHONEOS_DEPLOYMENT_TARGET = 7.0;
+ LD_NO_PIE = YES;
};
- name = Release;
+ name = Debug;
};
- F4A0A96E140438ED0010B64B /* Release */ = {
+ F4A0A964140438D50010B64B /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GTM_HOST_GCC_PREPROCESSOR_DEFINITIONS = "GTM_USING_XCTEST=0 GTM_IPHONE_USE_SENTEST=0";
INFOPLIST_FILE = "GTMiPhone-Info.plist";
PRODUCT_NAME = GTMiPhoneTest;
};
- name = Release;
- };
- F4D20EAC14852BFB0001600C /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/GTMiPhoneUnitTestingOCUnitTestRig.app/GTMiPhoneUnitTestingOCUnitTestRig";
- FRAMEWORK_SEARCH_PATHS = "${SDKROOT}/Developer/Library/Frameworks/";
- GCC_DYNAMIC_NO_PIC = NO;
- GCC_PREPROCESSOR_DEFINITIONS = (
- "$(inherited)",
- "GTM_IPHONE_USE_SENTEST=1",
- );
- INFOPLIST_FILE = "GTMiPhoneUnitTestingOCUnit-Info.plist";
- PRODUCT_NAME = GTMiPhoneUnitTestingOCUnit;
- TEST_HOST = "${BUNDLE_LOADER}";
- WRAPPER_EXTENSION = octest;
- };
name = Debug;
};
- F4D20EAD14852BFB0001600C /* Release */ = {
+ F4A0A96C140438ED0010B64B /* Release */ = {
isa = XCBuildConfiguration;
+ baseConfigurationReference = F4A0A95F140438B90010B64B /* ReleaseiOS.xcconfig */;
buildSettings = {
- BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/GTMiPhoneUnitTestingOCUnitTestRig.app/GTMiPhoneUnitTestingOCUnitTestRig";
- DEPLOYMENT_POSTPROCESSING = NO;
- FRAMEWORK_SEARCH_PATHS = "${SDKROOT}/Developer/Library/Frameworks/";
- GCC_DYNAMIC_NO_PIC = NO;
- GCC_PREPROCESSOR_DEFINITIONS = (
- "$(inherited)",
- "GTM_IPHONE_USE_SENTEST=1",
- );
- INFOPLIST_FILE = "GTMiPhoneUnitTestingOCUnit-Info.plist";
- PRODUCT_NAME = GTMiPhoneUnitTestingOCUnit;
- TEST_HOST = "${BUNDLE_LOADER}";
- WRAPPER_EXTENSION = octest;
+ GCC_WARN_SHADOW = YES;
+ GTM_EXTRA_WARNING_OVERRIDE_CFLAGS = "-Wno-unused-parameter";
+ GTM_HOST_GCC_PREPROCESSOR_DEFINITIONS = "GTM_USING_XCTEST=1";
+ IPHONEOS_DEPLOYMENT_TARGET = 7.0;
+ LD_NO_PIE = YES;
};
name = Release;
};
- F4F1D88014853D8F00E05BB6 /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- GCC_PREPROCESSOR_DEFINITIONS = (
- "$(inherited)",
- "GTM_IPHONE_USE_SENTEST=1",
- );
- INFOPLIST_FILE = "GTMiPhone-Info.plist";
- PRODUCT_NAME = GTMiPhoneUnitTestingOCUnitTestRig;
- };
- name = Debug;
- };
- F4F1D88114853D8F00E05BB6 /* Release */ = {
+ F4A0A96E140438ED0010B64B /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- GCC_PREPROCESSOR_DEFINITIONS = (
- "$(inherited)",
- "GTM_IPHONE_USE_SENTEST=1",
- );
+ GTM_HOST_GCC_PREPROCESSOR_DEFINITIONS = "GTM_USING_XCTEST=0 GTM_IPHONE_USE_SENTEST=0";
INFOPLIST_FILE = "GTMiPhone-Info.plist";
- PRODUCT_NAME = GTMiPhoneUnitTestingOCUnitTestRig;
+ PRODUCT_NAME = GTMiPhoneTest;
};
name = Release;
};
@@ -1429,38 +848,29 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Debug;
};
- C01FCF4E08A954540054247B /* Build configuration list for PBXProject "GTMiPhone" */ = {
+ 8B82CEFC1D9C17DE007182AA /* Build configuration list for PBXNativeTarget "GTM" */ = {
isa = XCConfigurationList;
buildConfigurations = (
- F4A0A962140438D50010B64B /* Debug */,
- F4A0A96C140438ED0010B64B /* Release */,
+ 8B82CEFD1D9C17DE007182AA /* Debug */,
+ 8B82CEFE1D9C17DE007182AA /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Debug;
};
- F4C7F9C50DC62F0C009BEE5B /* Build configuration list for PBXAggregateTarget "All UnitTests" */ = {
+ 8B82CF291D9C1C7D007182AA /* Build configuration list for PBXNativeTarget "GTMTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
- F4A0A963140438D50010B64B /* Debug */,
- F4A0A96D140438ED0010B64B /* Release */,
+ 8B82CF2A1D9C1C7D007182AA /* Debug */,
+ 8B82CF2B1D9C1C7D007182AA /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Debug;
};
- F4D20EAE14852BFC0001600C /* Build configuration list for PBXNativeTarget "GTMiPhoneUnitTestingOCUnit" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- F4D20EAC14852BFB0001600C /* Debug */,
- F4D20EAD14852BFB0001600C /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Debug;
- };
- F4F1D87F14853D8F00E05BB6 /* Build configuration list for PBXNativeTarget "GTMiPhoneUnitTestingOCUnitTestRig" */ = {
+ C01FCF4E08A954540054247B /* Build configuration list for PBXProject "GTMiPhone" */ = {
isa = XCConfigurationList;
buildConfigurations = (
- F4F1D88014853D8F00E05BB6 /* Debug */,
- F4F1D88114853D8F00E05BB6 /* Release */,
+ F4A0A962140438D50010B64B /* Debug */,
+ F4A0A96C140438ED0010B64B /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Debug;
diff --git a/GTMiPhoneUnitTestingOCUnit-Info.plist b/GTMiPhoneUnitTestingOCUnit-Info.plist
deleted file mode 100644
index 5a05846..0000000
--- a/GTMiPhoneUnitTestingOCUnit-Info.plist
+++ /dev/null
@@ -1,20 +0,0 @@
-<?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.google.GTMiPhoneOCUnit</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>
diff --git a/GoogleToolboxForMac.podspec b/GoogleToolboxForMac.podspec
index 863c387..8dea856 100644
--- a/GoogleToolboxForMac.podspec
+++ b/GoogleToolboxForMac.podspec
@@ -43,7 +43,6 @@ Pod::Spec.new do |s|
'DebugUtils/GTMDebugThreadValidation.h',
'DebugUtils/GTMMethodCheck.h'
sp.dependency 'GoogleToolboxForMac/Defines', "#{s.version}"
- sp.dependency 'GoogleToolboxForMac/Runtime', "#{s.version}"
end
s.subspec 'GeometryUtils' do |sp|
@@ -57,7 +56,6 @@ Pod::Spec.new do |s|
'Foundation/GTMNSObject+KeyValueObserving.{h,m}',
sp.dependency 'GoogleToolboxForMac/Core', "#{s.version}"
sp.dependency 'GoogleToolboxForMac/DebugUtils', "#{s.version}"
- sp.dependency 'GoogleToolboxForMac/Runtime', "#{s.version}"
end
s.subspec 'Logger' do |sp|
@@ -75,12 +73,6 @@ Pod::Spec.new do |s|
sp.dependency 'GoogleToolboxForMac/Defines', "#{s.version}"
end
- s.subspec 'Runtime' do |sp|
- sp.source_files = 'Foundation/GTMObjC2Runtime.{h,m}'
- sp.requires_arc = 'Foundation/GTMObjC2Runtime.{h,m}'
- sp.dependency 'GoogleToolboxForMac/Defines', "#{s.version}"
- end
-
# We cannot add a target for Foundation/GTMSQLite.{h,m}.
# sqlite3.h is not a modular header, and so cannot be imported
# in a modulemap, which CocoaPods does by default when it
@@ -89,7 +81,6 @@ Pod::Spec.new do |s|
s.subspec 'StackTrace' do |sp|
sp.source_files = 'Foundation/GTMStackTrace.{h,m}'
sp.dependency 'GoogleToolboxForMac/Defines', "#{s.version}"
- sp.dependency 'GoogleToolboxForMac/Runtime', "#{s.version}"
end
s.subspec 'StringEncoding' do |sp|
@@ -100,7 +91,6 @@ Pod::Spec.new do |s|
s.subspec 'SystemVersion' do |sp|
sp.source_files = 'Foundation/GTMSystemVersion.{h,m}'
sp.dependency 'GoogleToolboxForMac/Defines', "#{s.version}"
- sp.dependency 'GoogleToolboxForMac/Runtime', "#{s.version}"
end
s.subspec 'URLBuilder' do |sp|
@@ -156,14 +146,12 @@ Pod::Spec.new do |s|
sp.dependency 'GoogleToolboxForMac/Defines', "#{s.version}"
end
-
s.subspec 'iPhone' do |sp|
sp.platform = :ios, '5.0'
sp.source_files =
'iPhone/GTMFadeTruncatingLabel.{h,m}',
'iPhone/GTMUIImage+Resize.{h,m}',
'iPhone/GTMUILocalizer.{h,m}',
- 'iPhone/GTMUIView+SubtreeDescription.{h,m}'
sp.requires_arc = 'iPhone/GTMUIImage+Resize.{h,m}'
sp.dependency 'GoogleToolboxForMac/Defines', "#{s.version}"
end
@@ -182,24 +170,15 @@ Pod::Spec.new do |s|
sp.requires_arc = 'iPhone/GTMUIFont+LineHeight.{h,m}'
end
-
s.subspec 'UnitTesting' do |sp|
sp.platform = :ios, '5.0'
- sp.requires_arc = 'UnitTesting/GTMDevLogUnitTestingBridge.m'
sp.source_files =
- 'UnitTesting/GTMCALayer+UnitTesting.{h,m}',
- 'UnitTesting/GTMDevLogUnitTestingBridge.m',
'UnitTesting/GTMFoundationUnitTestingUtilities.{h,m}',
- 'UnitTesting/GTMNSObject+UnitTesting.{h,m}',
'UnitTesting/GTMSenTestCase.{h,m}',
'UnitTesting/GTMTestTimer.h',
- 'UnitTesting/GTMUIKit+UnitTesting.{h,m}',
- 'UnitTesting/GTMUnitTestDevLog.{h,m}'
- sp.requires_arc = 'UnitTesting/GTMDevLogUnitTestingBridge.m'
sp.frameworks = 'CoreGraphics', 'QuartzCore'
sp.dependency 'GoogleToolboxForMac/Defines', "#{s.version}"
sp.dependency 'GoogleToolboxForMac/Regex', "#{s.version}"
- sp.dependency 'GoogleToolboxForMac/Runtime', "#{s.version}"
sp.dependency 'GoogleToolboxForMac/SystemVersion', "#{s.version}"
end
diff --git a/UnitTesting/GTMAppKit+UnitTesting.h b/UnitTesting/GTMAppKit+UnitTesting.h
deleted file mode 100644
index 7f6bd26..0000000
--- a/UnitTesting/GTMAppKit+UnitTesting.h
+++ /dev/null
@@ -1,171 +0,0 @@
-//
-// GTMAppKit+UnitTesting.m
-//
-// Categories for making unit testing of graphics/UI easier.
-//
-// Copyright 2006-2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import <AppKit/AppKit.h>
-#import "GTMNSObject+UnitTesting.h"
-
-// Categories for making unit testing of graphics/UI easier.
-// Allows you to take a state/images of instances of AppKit classes.
-// See GTMNSObject+UnitTesting.h for details.
-
-@interface NSApplication (GTMUnitTestingAdditions)
-@end
-
-@interface NSWindow (GTMUnitTestingAdditions) <GTMUnitTestingImaging>
-@end
-
-@interface NSControl (GTMUnitTestingAdditions)
-@end
-
-@interface NSButton (GTMUnitTestingAdditions)
-@end
-
-@interface NSTextField (GTMUnitTestingAdditions)
-@end
-
-@interface NSCell (GTMUnitTestingAdditions)
-@end
-
-@interface NSImage (GTMUnitTestingAdditions) <GTMUnitTestingImaging>
-@end
-
-@interface NSMenu (GTMUnitTestingAdditions)
-@end
-
-@interface NSMenuItem (GTMUnitTestingAdditions)
-@end
-
-@interface NSTabView (GTMUnitTestingAdditions)
-@end
-
-@interface NSTabViewItem (GTMUnitTestingAdditions)
-@end
-
-@interface NSToolbar (GTMUnitTestingAdditions)
-@end
-
-@interface NSToolbarItem (GTMUnitTestingAdditions)
-@end
-
-@interface NSMatrix (GTMUnitTestingAdditions)
-@end
-
-@interface NSBox (GTMUnitTestingAdditions)
-@end
-
-@interface NSSegmentedControl (GTMUnitTestingAdditions)
-@end
-
-@interface NSComboBox (GTMUnitTestingAdditions)
-@end
-
-@protocol GTMUnitTestViewDrawer;
-
-// Fails when the |a1|'s drawing in an area |a2| does not equal the image file named |a3|.
-// See the description of the -gtm_pathForImageNamed method
-// to understand how |a3| is found and written out.
-// See the description of the GTMUnitTestView for a better idea
-// how the view works.
-// Implemented as a macro to match the rest of the SenTest macros.
-//
-// Args:
-// a1: The object that implements the GTMUnitTestViewDrawer protocol
-// that is doing the drawing.
-// a2: The size of the drawing
-// a3: The name of the image file to check against.
-// Do not include the extension
-// a4: contextInfo to pass to drawer
-// description: A format string as in the printf() function.
-// Can be nil or an empty string but must be present.
-// ...: A variable number of arguments to the format string. Can be absent.
-//
-
-#define GTMAssertDrawingEqualToImageNamed(a1, a2, a3, a4, description, ...) \
- do { \
- id<GTMUnitTestViewDrawer> a1Drawer = (a1); \
- NSSize a2Size = (a2); \
- NSString* a3String = (a3); \
- void *a4ContextInfo = (a4); \
- NSRect frame = NSMakeRect(0, 0, a2Size.width, a2Size.height); \
- GTMUnitTestView *view = [[[GTMUnitTestView alloc] initWithFrame:frame drawer:a1Drawer contextInfo:a4ContextInfo] autorelease]; \
- GTMAssertObjectImageEqualToImageNamed(view, a3String, STComposeString(description, ##__VA_ARGS__)); \
- } while(0)
-
-// Category for making unit testing of graphics/UI easier.
-
-// Allows you to take a state of a view. Supports both image and state.
-// See NSObject+UnitTesting.h for details.
-@interface NSView (GTMUnitTestingAdditions) <GTMUnitTestingImaging>
-// Returns whether unitTestEncodeState should recurse into subviews
-//
-// If you have "Full keyboard access" in the
-// Keyboard & Mouse > Keyboard Shortcuts preferences pane set to "Text boxes
-// and Lists only" that Apple adds a set of subviews to NSTextFields. So in the
-// case of NSTextFields we don't want to recurse into their subviews. There may
-// be other cases like this, so instead of specializing unitTestEncodeState: to
-// look for NSTextFields, NSTextFields will just not allow us to recurse into
-// their subviews.
-//
-// Returns:
-// should unitTestEncodeState pick up subview state.
-- (BOOL)gtm_shouldEncodeStateForSubviews;
-
-@end
-
-// A view that allows you to delegate out drawing using the formal
-// GTMUnitTestViewDelegate protocol
-// This is useful when writing up unit tests for visual elements.
-// Your test will often end up looking like this:
-// - (void)testFoo {
-// GTMAssertDrawingEqualToFile(self, NSMakeSize(200, 200), @"Foo", nil, nil);
-// }
-// and your testSuite will also implement the unitTestViewDrawRect method to do
-// it's actual drawing. The above creates a view of size 200x200 that draws
-// it's content using |self|'s unitTestViewDrawRect method and compares it to
-// the contents of the file Foo.tif to make sure it's valid
-@interface GTMUnitTestView : NSView {
- @private
- id<GTMUnitTestViewDrawer> drawer_; // delegate for doing drawing (STRONG)
- void* contextInfo_; // info passed in by user for them to use when drawing
-}
-
-// Create a GTMUnitTestView.
-//
-// Args:
-// rect: the area to draw.
-// drawer: the object that will do the drawing via the GTMUnitTestViewDrawer
-// protocol
-// contextInfo:
-- (id)initWithFrame:(NSRect)frame drawer:(id<GTMUnitTestViewDrawer>)drawer contextInfo:(void*)contextInfo;
-@end
-
-/// \cond Protocols
-
-// Formal protocol for doing unit testing of views. See description of
-// GTMUnitTestView for details.
-@protocol GTMUnitTestViewDrawer <NSObject>
-
-// Draw the view. Equivalent to drawRect on a standard NSView.
-//
-// Args:
-// rect: the area to draw.
-- (void)gtm_unitTestViewDrawRect:(NSRect)rect contextInfo:(void*)contextInfo;
-@end
-
diff --git a/UnitTesting/GTMAppKit+UnitTesting.m b/UnitTesting/GTMAppKit+UnitTesting.m
deleted file mode 100644
index 5b4d6f7..0000000
--- a/UnitTesting/GTMAppKit+UnitTesting.m
+++ /dev/null
@@ -1,583 +0,0 @@
-//
-// GTMAppKit+UnitTesting.m
-//
-// Categories for making unit testing of graphics/UI easier.
-//
-// Copyright 2006-2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMDefines.h"
-#import "GTMAppKit+UnitTesting.h"
-#import "GTMGeometryUtils.h"
-#import "GTMMethodCheck.h"
-
-#if MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_4
- #define ENCODE_NSINTEGER(coder, i, key) [(coder) encodeInt:(i) forKey:(key)]
-#else
- #define ENCODE_NSINTEGER(coder, i, key) [(coder) encodeInteger:(i) forKey:(key)]
-#endif
-
-@implementation NSApplication (GTMUnitTestingAdditions)
-GTM_METHOD_CHECK(NSObject, gtm_unitTestEncodeState:);
-
-- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder {
- [super gtm_unitTestEncodeState:inCoder];
- ENCODE_NSINTEGER(inCoder, [[self mainWindow] windowNumber], @"ApplicationMainWindow");
-
- // Descend down into the windows allowing them to store their state
- NSWindow *window = nil;
- int i = 0;
- GTM_FOREACH_OBJECT(window, [self windows]) {
- if ([window isVisible]) {
- // Only record visible windows because invisible windows may be closing on us
- // This appears to happen differently in 64 bit vs 32 bit, and items
- // in the window may hold an extra retain count for a while until the
- // event loop is spun. To avoid all this, we just don't record non
- // visible windows.
- // See rdar://5851458 for details.
- [inCoder encodeObject:window forKey:[NSString stringWithFormat:@"Window %d", i]];
- i = i + 1;
- }
- }
-
- // and encode the menu bar
- NSMenu *mainMenu = [self mainMenu];
- if (mainMenu) {
- [inCoder encodeObject:mainMenu forKey:@"MenuBar"];
- }
-}
-@end
-
-@implementation NSWindow (GTMUnitTestingAdditions)
-
-- (CGImageRef)gtm_unitTestImage {
- return [[[self contentView] superview] gtm_unitTestImage];
-}
-
-- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder {
- [super gtm_unitTestEncodeState:inCoder];
- [inCoder encodeObject:[self title] forKey:@"WindowTitle"];
- [inCoder encodeBool:[self isVisible] forKey:@"WindowIsVisible"];
- // Do not record if window is key, because users running unit tests
- // and clicking around to other apps, could change this mid test causing
- // issues.
- // [inCoder encodeBool:[self isKeyWindow] forKey:@"WindowIsKey"];
- [inCoder encodeBool:[self isMainWindow] forKey:@"WindowIsMain"];
- [inCoder encodeObject:[self contentView] forKey:@"WindowContent"];
- if ([self toolbar]) {
- [inCoder encodeObject:[self toolbar] forKey:@"WindowToolbar"];
- }
-}
-
-@end
-
-@implementation NSControl (GTMUnitTestingAdditions)
-
-// Encodes the state of an object in a manner suitable for comparing
-// against a master state file so we can determine whether the
-// object is in a suitable state.
-//
-// Arguments:
-// inCoder - the coder to encode our state into
-- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder {
- [super gtm_unitTestEncodeState:inCoder];
- [inCoder encodeObject:[self class] forKey:@"ControlType"];
- [inCoder encodeObject:[self objectValue] forKey:@"ControlValue"];
- [inCoder encodeObject:[self selectedCell] forKey:@"ControlSelectedCell"];
- ENCODE_NSINTEGER(inCoder, [self tag], @"ControlTag");
- [inCoder encodeBool:[self isEnabled] forKey:@"ControlIsEnabled"];
-}
-
-@end
-
-@implementation NSButton (GTMUnitTestingAdditions)
-
-// Encodes the state of an object in a manner suitable for comparing
-// against a master state file so we can determine whether the
-// object is in a suitable state.
-//
-// Arguments:
-// inCoder - the coder to encode our state into
-- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder {
- [super gtm_unitTestEncodeState:inCoder];
- NSString *alternateTitle = [self alternateTitle];
- if (alternateTitle) {
- [inCoder encodeObject:alternateTitle forKey:@"ButtonAlternateTitle"];
- }
-}
-
-@end
-
-@implementation NSTextField (GTMUnitTestingAdditions)
-
-- (BOOL)gtm_shouldEncodeStateForSubviews {
- return NO;
-}
-
-// Encodes the state of an object in a manner suitable for comparing
-// against a master state file so we can determine whether the
-// object is in a suitable state.
-//
-// Arguments:
-// inCoder - the coder to encode our state into
-- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder {
- [super gtm_unitTestEncodeState:inCoder];
- id controlCell = [self cell];
- if ([controlCell isKindOfClass:[NSTextFieldCell class]]) {
- NSTextFieldCell *textFieldCell = controlCell;
- [inCoder encodeObject:[textFieldCell placeholderString]
- forKey:@"PlaceHolderString"];
- }
-}
-
-@end
-
-@implementation NSCell (GTMUnitTestingAdditions)
-
-// Encodes the state of an object in a manner suitable for comparing
-// against a master state file so we can determine whether the
-// object is in a suitable state.
-//
-// Arguments:
-// inCoder - the coder to encode our state into
-- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder {
- [super gtm_unitTestEncodeState:inCoder];
- BOOL isImageCell = NO;
- if ([self hasValidObjectValue]) {
- id val = [self objectValue];
- [inCoder encodeObject:val forKey:@"CellValue"];
- isImageCell = [val isKindOfClass:[NSImage class]];
- }
- if (!isImageCell) {
- // Image cells have a title that includes addresses that aren't going
- // to be constant, so we don't encode them. All the info we need
- // is going to be in the CellValue encoding.
- [inCoder encodeObject:[self title] forKey:@"CellTitle"];
- }
- ENCODE_NSINTEGER(inCoder, [self state], @"CellState");
- ENCODE_NSINTEGER(inCoder, [self tag], @"CellTag");
-}
-
-@end
-
-@implementation NSImage (GTMUnitTestingAdditions)
-
-- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder {
- [super gtm_unitTestEncodeState:inCoder];
- [inCoder encodeObject:NSStringFromSize([self size]) forKey:@"ImageSize"];
- [inCoder encodeObject:[self name] forKey:@"ImageName"];
-}
-
-- (CGImageRef)gtm_unitTestImage {
- // Create up a context
- NSSize size = [self size];
- NSRect rect = GTMNSRectOfSize(size);
- CGSize cgSize = GTMNSSizeToCGSize(size);
- CGContextRef contextRef = GTMCreateUnitTestBitmapContextOfSizeWithData(cgSize,
- NULL);
- NSGraphicsContext *bitmapContext
- = [NSGraphicsContext graphicsContextWithGraphicsPort:contextRef flipped:NO];
- _GTMDevAssert(bitmapContext, @"Couldn't create ns bitmap context");
-
- [NSGraphicsContext saveGraphicsState];
- [NSGraphicsContext setCurrentContext:bitmapContext];
- [self drawInRect:rect fromRect:rect operation:NSCompositeCopy fraction:1.0];
-
- CGImageRef image = CGBitmapContextCreateImage(contextRef);
- CFRelease(contextRef);
- [NSGraphicsContext restoreGraphicsState];
- return (CGImageRef)GTMCFAutorelease(image);
-}
-
-@end
-
-@implementation NSMenu (GTMUnitTestingAdditions)
-
-// Encodes the state of an object in a manner suitable for comparing
-// against a master state file so we can determine whether the
-// object is in a suitable state.
-//
-// Arguments:
-// inCoder - the coder to encode our state into
-- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder {
- [super gtm_unitTestEncodeState:inCoder];
- // Hack here to work around
- // rdar://5881796 Application menu item title wrong when accessed programatically
- // which causes us to have different results on x86_64 vs x386.
- // Hack is braced intentionally. We don't record the title of the
- // "application" menu or it's menu title because they are wrong on 32 bit.
- // They appear to work right on 64bit.
- {
- NSMenu *mainMenu = [NSApp mainMenu];
- NSMenu *appleMenu = [[mainMenu itemAtIndex:0] submenu];
- if (![self isEqual:appleMenu]) {
- [inCoder encodeObject:[self title] forKey:@"MenuTitle"];
- }
- }
- // Descend down into the menuitems allowing them to store their state
- NSMenuItem *menuItem = nil;
- int i = 0;
- GTM_FOREACH_OBJECT(menuItem, [self itemArray]) {
- [inCoder encodeObject:menuItem
- forKey:[NSString stringWithFormat:@"MenuItem %d", i]];
- ++i;
- }
-}
-
-@end
-
-@implementation NSMenuItem (GTMUnitTestingAdditions)
-
-- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder {
- [super gtm_unitTestEncodeState:inCoder];
- // Hack here to work around
- // rdar://5881796 Application menu item title wrong when accessed programatically
- // which causes us to have different results on x86_64 vs x386.
- // See comment above.
- {
- NSMenu *mainMenu = [NSApp mainMenu];
- NSMenuItem *appleMenuItem = [mainMenu itemAtIndex:0];
- if (![self isEqual:appleMenuItem]) {
- [inCoder encodeObject:[self title] forKey:@"MenuItemTitle"];
- }
- }
- [inCoder encodeObject:[self keyEquivalent] forKey:@"MenuItemKeyEquivalent"];
- [inCoder encodeBool:[self isSeparatorItem] forKey:@"MenuItemIsSeparator"];
- ENCODE_NSINTEGER(inCoder, [self state], @"MenuItemState");
- [inCoder encodeBool:[self isEnabled] forKey:@"MenuItemIsEnabled"];
- [inCoder encodeBool:[self isAlternate] forKey:@"MenuItemIsAlternate"];
- [inCoder encodeObject:[self toolTip] forKey:@"MenuItemTooltip"];
- ENCODE_NSINTEGER(inCoder, [self tag], @"MenuItemTag");
- ENCODE_NSINTEGER(inCoder, [self indentationLevel], @"MenuItemIndentationLevel");
-
- // Do our submenu if neccessary
- if ([self hasSubmenu]) {
- [inCoder encodeObject:[self submenu] forKey:@"MenuItemSubmenu"];
- }
-}
-
-@end
-
-@implementation NSTabView (GTMUnitTestingAdditions)
-
-// Encodes the state of an object in a manner suitable for comparing
-// against a master state file so we can determine whether the
-// object is in a suitable state.
-//
-// Arguments:
-// inCoder - the coder to encode our state into
-- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder {
- [super gtm_unitTestEncodeState:inCoder];
- NSTabViewItem *tab = nil;
- int i = 0;
- GTM_FOREACH_OBJECT(tab, [self tabViewItems]) {
- NSString *key = [NSString stringWithFormat:@"TabItem %d", i];
- [inCoder encodeObject:tab forKey:key];
- i = i + 1;
- }
-}
-
-@end
-
-@implementation NSTabViewItem (GTMUnitTestingAdditions)
-
-// Encodes the state of an object in a manner suitable for comparing
-// against a master state file so we can determine whether the
-// object is in a suitable state.
-//
-// Arguments:
-// inCoder - the coder to encode our state into
-- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder {
- [super gtm_unitTestEncodeState:inCoder];
- [inCoder encodeObject:[self label] forKey:@"TabLabel"];
- [inCoder encodeObject:[self view] forKey:@"TabView"];
-}
-
-@end
-
-@implementation NSToolbar (GTMUnitTestingAdditions)
-
-// Encodes the state of an object in a manner suitable for comparing
-// against a master state file so we can determine whether the
-// object is in a suitable state.
-//
-// Arguments:
-// inCoder - the coder to encode our state into
-- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder {
- [super gtm_unitTestEncodeState:inCoder];
- NSToolbarItem *item = nil;
- NSUInteger i = 0;
- GTM_FOREACH_OBJECT(item, [self items]) {
- NSString *key
- = [NSString stringWithFormat:@"ToolbarItem %lu", (unsigned long)i];
- [inCoder encodeObject:item forKey:key];
- i = i + 1;
- }
-}
-
-@end
-
-@implementation NSToolbarItem (GTMUnitTestingAdditions)
-
-// Encodes the state of an object in a manner suitable for comparing
-// against a master state file so we can determine whether the
-// object is in a suitable state.
-//
-// Arguments:
-// inCoder - the coder to encode our state into
-- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder {
- [super gtm_unitTestEncodeState:inCoder];
- [inCoder encodeObject:[self label] forKey:@"Label"];
- [inCoder encodeObject:[self paletteLabel] forKey:@"PaletteLabel"];
- [inCoder encodeObject:[self toolTip] forKey:@"ToolTip"];
- NSView *view = [self view];
- if (view) {
- [inCoder encodeObject:view forKey:@"View"];
- }
-}
-
-@end
-
-@implementation NSMatrix (GTMUnitTestingAdditions)
-
-// Encodes the state of an object in a manner suitable for comparing
-// against a master state file so we can determine whether the
-// object is in a suitable state.
-//
-// Arguments:
-// inCoder - the coder to encode our state into
-- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder {
- [super gtm_unitTestEncodeState:inCoder];
-
- ENCODE_NSINTEGER(inCoder, [self mode], @"MatrixMode");
- ENCODE_NSINTEGER(inCoder, [self numberOfRows], @"MatrixRowCount");
- ENCODE_NSINTEGER(inCoder, [self numberOfColumns], @"MatrixColumnCount");
- [inCoder encodeBool:[self allowsEmptySelection]
- forKey:@"MatrixAllowEmptySelection"];
- [inCoder encodeBool:[self isSelectionByRect] forKey:@"MatrixSelectionByRect"];
- [inCoder encodeBool:[self autosizesCells] forKey:@"MatrixAutosizesCells"];
- [inCoder encodeSize:[self intercellSpacing] forKey:@"MatrixIntercellSpacing"];
-
- [inCoder encodeObject:[self prototype] forKey:@"MatrixCellPrototype"];
-
- // Dump the list of cells
- NSCell *cell;
- long i = 0;
- GTM_FOREACH_OBJECT(cell, [self cells]) {
- [inCoder encodeObject:cell
- forKey:[NSString stringWithFormat:@"MatrixCell %ld", i]];
- ++i;
- }
-}
-
-@end
-
-@implementation NSBox (GTMUnitTestingAdditions)
-
-// Encodes the state of an object in a manner suitable for comparing
-// against a master state file so we can determine whether the
-// object is in a suitable state.
-//
-// Arguments:
-// inCoder - the coder to encode our state into
-- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder {
- [super gtm_unitTestEncodeState:inCoder];
-
- [inCoder encodeObject:[self title] forKey:@"BoxTitle"];
- ENCODE_NSINTEGER(inCoder, [self titlePosition], @"BoxTitlePosition");
- ENCODE_NSINTEGER(inCoder, [self boxType], @"BoxType");
- ENCODE_NSINTEGER(inCoder, [self borderType], @"BoxBorderType");
- // 10.5+ [inCoder encodeBool:[self isTransparent] forKey:@"BoxIsTransparent"];
-}
-
-@end
-
-@implementation NSSegmentedControl (GTMUnitTestingAdditions)
-
-// Encodes the state of an NSSegmentedControl and all its segments.
-//
-// Arguments:
-// inCoder - the coder to encode state into
-- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder {
- [super gtm_unitTestEncodeState:inCoder];
-
- NSInteger segmentCount = [self segmentCount];
- ENCODE_NSINTEGER(inCoder, segmentCount, @"SegmentCount");
-
- for (NSInteger i = 0; i < segmentCount; ++i) {
- NSString *key = [NSString stringWithFormat:@"Segment %ld", (long)i];
- [inCoder encodeObject:[self labelForSegment:i] forKey:key];
- }
-}
-
-@end
-
-@implementation NSComboBox (GTMUnitTestingAdditions)
-
-- (BOOL)gtm_shouldEncodeStateForSubviews {
- // Subclass of NSTextView, don't want subviews for the same reason.
- return NO;
-}
-
-// Encodes the state of an NSSegmentedControl and all its segments.
-//
-// Arguments:
-// inCoder - the coder to encode state into
-- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder {
- [super gtm_unitTestEncodeState:inCoder];
-
- NSInteger aCount = [self numberOfItems];
- ENCODE_NSINTEGER(inCoder, aCount, @"ComboBoxNumberOfItems");
- aCount = [self numberOfVisibleItems];
- ENCODE_NSINTEGER(inCoder, aCount, @"ComboBoxNumberOfVisibleItems");
-
- // Include the objectValues if it doesn't use a data source.
- if (![self usesDataSource]) {
- NSArray *objectValues = [self objectValues];
- for (NSUInteger i = 0; i < [objectValues count]; ++i) {
- id value = [objectValues objectAtIndex:i];
- if ([value isKindOfClass:[NSString class]]) {
- NSString *key = [NSString stringWithFormat:@"ComboBoxObjectValue %lu",
- (unsigned long)i];
- [inCoder encodeObject:value forKey:key];
- }
- }
- }
-}
-
-@end
-
-
-// A view that allows you to delegate out drawing using the formal
-// GTMUnitTestViewDelegate protocol above. This is useful when writing up unit
-// tests for visual elements.
-// Your test will often end up looking like this:
-// - (void)testFoo {
-// GTMAssertDrawingEqualToFile(self, NSMakeSize(200, 200), @"Foo", nil, nil);
-// }
-// and your testSuite will also implement the unitTestViewDrawRect method to do
-// it's actual drawing. The above creates a view of size 200x200 that draws
-// it's content using |self|'s unitTestViewDrawRect method and compares it to
-// the contents of the file Foo.tif to make sure it's valid
-@implementation GTMUnitTestView
-
-- (id)initWithFrame:(NSRect)frame
- drawer:(id<GTMUnitTestViewDrawer>)drawer
- contextInfo:(void*)contextInfo {
- self = [super initWithFrame:frame];
- if (self != nil) {
- drawer_ = [drawer retain];
- contextInfo_ = contextInfo;
- }
- return self;
-}
-
-- (void)dealloc {
- [drawer_ release];
- [super dealloc];
-}
-
-
-- (void)drawRect:(NSRect)rect {
- [drawer_ gtm_unitTestViewDrawRect:rect contextInfo:contextInfo_];
-}
-
-
-@end
-
-@implementation NSView (GTMUnitTestingAdditions)
-
-// Returns an image containing a representation of the object
-// suitable for use in comparing against a master image.
-// Does all of it's drawing with smoothfonts and antialiasing off
-// to avoid issues with font smoothing settings and antialias differences
-// between ppc and x86.
-//
-// Returns:
-// an image of the object
-- (CGImageRef)gtm_unitTestImage {
- // Create up a context
- NSRect bounds = [self bounds];
- CGSize cgSize = GTMNSSizeToCGSize(bounds.size);
- CGContextRef contextRef = GTMCreateUnitTestBitmapContextOfSizeWithData(cgSize,
- NULL);
- NSGraphicsContext *bitmapContext
- = [NSGraphicsContext graphicsContextWithGraphicsPort:contextRef flipped:NO];
- _GTMDevAssert(bitmapContext, @"Couldn't create ns bitmap context");
-
- // Save our state and turn off font smoothing and antialias.
- CGContextSaveGState(contextRef);
- CGContextSetShouldSmoothFonts(contextRef, false);
- CGContextSetShouldAntialias(contextRef, false);
- [self displayRectIgnoringOpacity:bounds inContext:bitmapContext];
-
- CGImageRef image = CGBitmapContextCreateImage(contextRef);
- CFRelease(contextRef);
- return (CGImageRef)GTMCFAutorelease(image);
-}
-
-// Returns whether gtm_unitTestEncodeState should recurse into subviews
-// of a particular view.
-// If you have "Full keyboard access" in the
-// Keyboard & Mouse > Keyboard Shortcuts preferences pane set to "Text boxes
-// and Lists only" that Apple adds a set of subviews to NSTextFields. So in the
-// case of NSTextFields we don't want to recurse into their subviews. There may
-// be other cases like this, so instead of specializing gtm_unitTestEncodeState: to
-// look for NSTextFields, NSTextFields will just not allow us to recurse into
-// their subviews.
-//
-// Returns:
-// should gtm_unitTestEncodeState pick up subview state.
-- (BOOL)gtm_shouldEncodeStateForSubviews {
- return YES;
-}
-
-// Encodes the state of an object in a manner suitable for comparing
-// against a master state file so we can determine whether the
-// object is in a suitable state.
-//
-// Arguments:
-// inCoder - the coder to encode our state into
-- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder {
- [super gtm_unitTestEncodeState:inCoder];
- [inCoder encodeBool:[self isHidden] forKey:@"ViewIsHidden"];
- [inCoder encodeObject:[self toolTip] forKey:@"ViewToolTip"];
- NSArray *supportedAttrs = [self accessibilityAttributeNames];
- if ([supportedAttrs containsObject:NSAccessibilityHelpAttribute]) {
- NSString *help
- = [self accessibilityAttributeValue:NSAccessibilityHelpAttribute];
- [inCoder encodeObject:help forKey:@"ViewAccessibilityHelp"];
- }
- if ([supportedAttrs containsObject:NSAccessibilityDescriptionAttribute]) {
- NSString *description
- = [self accessibilityAttributeValue:NSAccessibilityDescriptionAttribute];
- [inCoder encodeObject:description forKey:@"ViewAccessibilityDescription"];
- }
- NSMenu *menu = [self menu];
- if (menu) {
- [inCoder encodeObject:menu forKey:@"ViewMenu"];
- }
- if ([self gtm_shouldEncodeStateForSubviews]) {
- NSView *subview = nil;
- int i = 0;
- GTM_FOREACH_OBJECT(subview, [self subviews]) {
- [inCoder encodeObject:subview forKey:[NSString stringWithFormat:@"ViewSubView %d", i]];
- i = i + 1;
- }
- }
-}
-
-@end
-
diff --git a/UnitTesting/GTMAppKitUnitTestingUtilities.h b/UnitTesting/GTMAppKitUnitTestingUtilities.h
index 1edccd7..b3852ba 100644
--- a/UnitTesting/GTMAppKitUnitTestingUtilities.h
+++ b/UnitTesting/GTMAppKitUnitTestingUtilities.h
@@ -23,21 +23,6 @@
// Collection of utilities for unit testing
@interface GTMAppKitUnitTestingUtilities : NSObject
-// Sets up the user interface so that we can run consistent UI unittests on
-// it. This includes setting scroll bar types, setting selection colors
-// setting color spaces etc so that everything is consistent across machines.
-// This should be called in main, before NSApplicationMain is called.
-+ (void)setUpForUIUnitTests;
-
-// Syntactic sugar combining that checks to see if we are running unittests
-// and then calls setUpForUIUnitTests wrapped up in a NSAutoreleasePool so that
-// your main can look like this:
-// int main(int argc, const char *argv[]) {
-// [UnitTestingUtilities setUpForUIUnitTestsIfBeingTested];
-// return NSApplicationMain(argc, argv);
-// }
-+ (void)setUpForUIUnitTestsIfBeingTested;
-
// Check if the screen saver is running. Some unit tests don't work when
// the screen saver is active.
+ (BOOL)isScreenSaverActive;
diff --git a/UnitTesting/GTMAppKitUnitTestingUtilities.m b/UnitTesting/GTMAppKitUnitTestingUtilities.m
index 71c4d76..d90d608 100644
--- a/UnitTesting/GTMAppKitUnitTestingUtilities.m
+++ b/UnitTesting/GTMAppKitUnitTestingUtilities.m
@@ -17,68 +17,12 @@
//
#import "GTMAppKitUnitTestingUtilities.h"
-#import <AppKit/AppKit.h>
-#include <signal.h>
-#include <unistd.h>
#import "GTMDefines.h"
-// The Users profile before we change it on them
-static CMProfileRef gGTMCurrentColorProfile = NULL;
-
-// Compares two color profiles
-static BOOL GTMAreCMProfilesEqual(CMProfileRef a, CMProfileRef b);
-// Stores the user's color profile away, and changes over to generic.
-static void GTMSetColorProfileToGenericRGB();
-// Restores the users profile.
-static void GTMRestoreColorProfile(void);
-// Signal handler to try and restore users profile.
-static void GTMHandleCrashSignal(int signalNumber);
-
static CGKeyCode GTMKeyCodeForCharCode(CGCharCode charCode);
@implementation GTMAppKitUnitTestingUtilities
-// Sets up the user interface so that we can run consistent UI unittests on it.
-+ (void)setUpForUIUnitTests {
- // Give some names to undocumented defaults values
- const NSInteger MediumFontSmoothing = 2;
- const NSInteger BlueTintedAppearance = 1;
-
- // This sets up some basic values that we want as our defaults for doing pixel
- // based user interface tests. These defaults only apply to the unit test app,
- // except or the color profile which will be set system wide, and then
- // restored when the tests complete.
- NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
- // Scroll arrows together bottom
- [defaults setObject:@"DoubleMax" forKey:@"AppleScrollBarVariant"];
- // Smallest font size to CG should perform antialiasing on
- [defaults setInteger:4 forKey:@"AppleAntiAliasingThreshold"];
- // Type of smoothing
- [defaults setInteger:MediumFontSmoothing forKey:@"AppleFontSmoothing"];
- // Blue aqua
- [defaults setInteger:BlueTintedAppearance forKey:@"AppleAquaColorVariant"];
- // Standard highlight colors
- [defaults setObject:@"0.709800 0.835300 1.000000"
- forKey:@"AppleHighlightColor"];
- [defaults setObject:@"0.500000 0.500000 0.500000"
- forKey:@"AppleOtherHighlightColor"];
- // Use english plz
- [defaults setObject:[NSArray arrayWithObject:@"en"] forKey:@"AppleLanguages"];
- // How fast should we draw sheets. This speeds up the sheet tests considerably
- [defaults setFloat:.001f forKey:@"NSWindowResizeTime"];
- // Switch over the screen profile to "generic rgb". This installs an
- // atexit handler to return our profile back when we are done.
- GTMSetColorProfileToGenericRGB();
-}
-
-+ (void)setUpForUIUnitTestsIfBeingTested {
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- if ([GTMFoundationUnitTestingUtilities areWeBeingUnitTested]) {
- [self setUpForUIUnitTests];
- }
- [pool drain];
-}
-
+ (BOOL)isScreenSaverActive {
BOOL answer = NO;
ProcessSerialNumber psn;
@@ -150,108 +94,6 @@ CantWorkWithScreenSaver:
@end
-BOOL GTMAreCMProfilesEqual(CMProfileRef a, CMProfileRef b) {
- BOOL equal = YES;
- if (a != b) {
- CMProfileMD5 aMD5;
- CMProfileMD5 bMD5;
- CMError aMD5Err = CMGetProfileMD5(a, aMD5);
- CMError bMD5Err = CMGetProfileMD5(b, bMD5);
- equal = (!aMD5Err &&
- !bMD5Err &&
- !memcmp(aMD5, bMD5, sizeof(CMProfileMD5))) ? YES : NO;
- }
- return equal;
-}
-
-void GTMRestoreColorProfile(void) {
- if (gGTMCurrentColorProfile) {
- CGDirectDisplayID displayID = CGMainDisplayID();
- CMError error = CMSetProfileByAVID((UInt32)displayID,
- gGTMCurrentColorProfile);
- CMCloseProfile(gGTMCurrentColorProfile);
- if (error) {
- // COV_NF_START
- // No way to force this case in a unittest.
- _GTMDevLog(@"Failed to restore previous color profile! "
- @"You may need to open System Preferences : Displays : Color "
- @"and manually restore your color settings. (Error: %ld)",
- (long)error);
- // COV_NF_END
- } else {
- _GTMDevLog(@"Color profile restored");
- }
- gGTMCurrentColorProfile = NULL;
- }
-}
-
-void GTMHandleCrashSignal(int signalNumber) {
- // Going down in flames, might as well try to restore the color profile
- // anyways.
- GTMRestoreColorProfile();
- // Go ahead and exit with the signal value relayed just incase.
- _exit(signalNumber + 128);
-}
-
-void GTMSetColorProfileToGenericRGB(void) {
- NSColorSpace *genericSpace = [NSColorSpace genericRGBColorSpace];
- CMProfileRef genericProfile = (CMProfileRef)[genericSpace colorSyncProfile];
- CMProfileRef previousProfile;
- CGDirectDisplayID displayID = CGMainDisplayID();
- CMError error = CMGetProfileByAVID((UInt32)displayID, &previousProfile);
- if (error) {
- // COV_NF_START
- // No way to force this case in a unittest.
- _GTMDevLog(@"Failed to get current color profile. "
- "I will not be able to restore your current profile, thus I'm "
- "not changing it. Many unit tests may fail as a result. (Error: %li)",
- (long)error);
- return;
- // COV_NF_END
- }
- if (GTMAreCMProfilesEqual(genericProfile, previousProfile)) {
- CMCloseProfile(previousProfile);
- return;
- }
- CFStringRef previousProfileName;
- CFStringRef genericProfileName;
- CMCopyProfileDescriptionString(previousProfile, &previousProfileName);
- CMCopyProfileDescriptionString(genericProfile, &genericProfileName);
-
- _GTMDevLog(@"Temporarily changing your system color profile from \"%@\" to \"%@\".",
- previousProfileName, genericProfileName);
- _GTMDevLog(@"This allows the pixel-based unit-tests to have consistent color "
- "values across all machines.");
- _GTMDevLog(@"The colors on your screen will change for the duration of the testing.");
-
-
- if ((error = CMSetProfileByAVID((UInt32)displayID, genericProfile))) {
- // COV_NF_START
- // No way to force this case in a unittest.
- _GTMDevLog(@"Failed to set color profile to \"%@\"! Many unit tests will fail as "
- "a result. (Error: %li)", genericProfileName, (long)error);
- // COV_NF_END
- } else {
- gGTMCurrentColorProfile = previousProfile;
- atexit(GTMRestoreColorProfile);
- // WebKit DRT and Chrome TestShell both use this trick. If the test is
- // already crashing, might as well try restoring the color profile, and if
- // it fails, it is no worse than crashing without having tried.
- signal(SIGILL, GTMHandleCrashSignal);
- signal(SIGTRAP, GTMHandleCrashSignal);
- signal(SIGEMT, GTMHandleCrashSignal);
- signal(SIGFPE, GTMHandleCrashSignal);
- signal(SIGBUS, GTMHandleCrashSignal);
- signal(SIGSEGV, GTMHandleCrashSignal);
- signal(SIGSYS, GTMHandleCrashSignal);
- signal(SIGPIPE, GTMHandleCrashSignal);
- signal(SIGXCPU, GTMHandleCrashSignal);
- signal(SIGXFSZ, GTMHandleCrashSignal);
- }
- CFRelease(previousProfileName);
- CFRelease(genericProfileName);
-}
-
// Returns a virtual key code for a given charCode. Handles all of the
// NS*FunctionKeys as well.
static CGKeyCode GTMKeyCodeForCharCode(CGCharCode charCode) {
diff --git a/UnitTesting/GTMCALayer+UnitTesting.h b/UnitTesting/GTMCALayer+UnitTesting.h
deleted file mode 100644
index b757ba9..0000000
--- a/UnitTesting/GTMCALayer+UnitTesting.h
+++ /dev/null
@@ -1,46 +0,0 @@
-//
-// GTMCALayer+UnitTesting.h
-//
-// Code for making unit testing of graphics/UI easier. Generally you
-// will only want to look at the macros:
-// GTMAssertDrawingEqualToFile
-// GTMAssertViewRepEqualToFile
-// and the protocol GTMUnitTestCALayerDrawer. When using these routines
-// make sure you are using device colors and not calibrated/generic colors
-// or else your test graphics WILL NOT match across devices/graphics cards.
-//
-// Copyright 2006-2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import <QuartzCore/QuartzCore.h>
-#import "GTMNSObject+UnitTesting.h"
-
-// Category for making unit testing of graphics/UI easier.
-
-// Allows you to take a state of a view. Supports both image and state.
-// See GTMNSObject+UnitTesting.h for details.
-@interface CALayer (GTMUnitTestingAdditions) <GTMUnitTestingImaging>
-// Returns whether gtm_unitTestEncodeState should recurse into sublayers
-//
-// Returns:
-// should gtm_unitTestEncodeState pick up sublayer state.
-- (BOOL)gtm_shouldEncodeStateForSublayers;
-@end
-
-@interface NSObject (GTMCALayerUnitTestingDelegateMethods)
-// Delegate method that allows a delegate for a layer to
-// decide whether we should recurse
-- (BOOL)gtm_shouldEncodeStateForSublayersOfLayer:(CALayer*)layer;
-@end
diff --git a/UnitTesting/GTMCALayer+UnitTesting.m b/UnitTesting/GTMCALayer+UnitTesting.m
deleted file mode 100644
index 52367e5..0000000
--- a/UnitTesting/GTMCALayer+UnitTesting.m
+++ /dev/null
@@ -1,89 +0,0 @@
-//
-// GTMCALayer+UnitTesting.m
-//
-// Category for making unit testing of graphics/UI easier.
-// Allows you to save a view out to a image file, and compare a view
-// with a previously stored representation to make sure it hasn't changed.
-//
-// Copyright 2006-2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMCALayer+UnitTesting.h"
-
-@implementation CALayer (GTMUnitTestingAdditions)
-
-// Returns an image containing a representation of the object
-// suitable for use in comparing against a master image.
-// NB this means that all colors should be from "NSDevice" color space
-// Does all of it's drawing with smoothfonts and antialiasing off
-// to avoid issues with font smoothing settings and antialias differences
-// between ppc and x86.
-//
-// Returns:
-// an image of the object
-- (CGImageRef)gtm_unitTestImage {
- CGRect bounds = [self bounds];
- CGSize size = CGSizeMake(CGRectGetWidth(bounds), CGRectGetHeight(bounds));
- CGContextRef context = GTMCreateUnitTestBitmapContextOfSizeWithData(size,
- NULL);
- _GTMDevAssert(context, @"Couldn't create context");
-
- // iPhone renders are flipped
- CGAffineTransform transform = CGAffineTransformMakeTranslation(0, size.height);
- transform = CGAffineTransformScale(transform, 1.0, -1.0);
- CGContextConcatCTM(context, transform);
-
- [self renderInContext:context];
- CGImageRef image = CGBitmapContextCreateImage(context);
- CFRelease(context);
- return (CGImageRef)GTMCFAutorelease(image);
-}
-
-// Encodes the state of an object in a manner suitable for comparing
-// against a master state file so we can determine whether the
-// object is in a suitable state.
-//
-// Arguments:
-// inCoder - the coder to encode our state into
-- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder {
- [super gtm_unitTestEncodeState:inCoder];
- [inCoder encodeBool:[self isHidden] forKey:@"LayerIsHidden"];
- [inCoder encodeBool:[self isDoubleSided] forKey:@"LayerIsDoublesided"];
- [inCoder encodeBool:[self isOpaque] forKey:@"LayerIsOpaque"];
- [inCoder encodeFloat:[self opacity] forKey:@"LayerOpacity"];
- // TODO: There is a ton more we can add here. What are we interested in?
- if ([self gtm_shouldEncodeStateForSublayers]) {
- int i = 0;
- for (CALayer *subLayer in [self sublayers]) {
- [inCoder encodeObject:subLayer
- forKey:[NSString stringWithFormat:@"CALayerSubLayer %d", i]];
- i = i + 1;
- }
- }
-}
-
-// Returns whether gtm_unitTestEncodeState should recurse into sublayers
-//
-// Returns:
-// should gtm_unitTestEncodeState pick up sublayer state.
-- (BOOL)gtm_shouldEncodeStateForSublayers {
- BOOL value = YES;
- if([self.delegate respondsToSelector:@selector(gtm_shouldEncodeStateForSublayersOfLayer:)]) {
- value = [self.delegate gtm_shouldEncodeStateForSublayersOfLayer:self];
- }
- return value;
-}
-
-@end
diff --git a/UnitTesting/GTMDevLogUnitTestingBridge.m b/UnitTesting/GTMDevLogUnitTestingBridge.m
deleted file mode 100644
index c57893b..0000000
--- a/UnitTesting/GTMDevLogUnitTestingBridge.m
+++ /dev/null
@@ -1,44 +0,0 @@
-//
-// GTMDevLogUnitTestingBridge.m
-//
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#include "GTMUnitTestDevLog.h"
-
-//
-// NOTE: Odds are this file should not be included in your project. It is
-// only needed for some enhanced unit testing.
-//
-// By adding:
-// #define _GTMDevLog _GTMUnitTestDevLog
-// to your prefix header (like the GTM Framework does), this function then
-// works to forward logging messages to the GTMUnitTestDevLog class to
-// allow logging validation during unittest, otherwise the messages go to
-// NSLog like normal.
-//
-// See GTMUnitTestDevLog.h for more information on checking logs in unittests.
-//
-void _GTMUnitTestDevLog(NSString *format, ...) {
- Class devLogClass = NSClassFromString(@"GTMUnitTestDevLog");
- va_list argList;
- va_start(argList, format);
- if (devLogClass) {
- [devLogClass log:format args:argList];
- } else {
- NSLogv(format, argList); // COV_NF_LINE the class is in all our unittest setups
- }
- va_end(argList);
-}
diff --git a/UnitTesting/GTMIPhoneSecurityLibraryTest.m b/UnitTesting/GTMIPhoneSecurityLibraryTest.m
deleted file mode 100644
index f6fd37a..0000000
--- a/UnitTesting/GTMIPhoneSecurityLibraryTest.m
+++ /dev/null
@@ -1,75 +0,0 @@
-//
-// GTMIPhoneSecurityLibraryTest.m
-//
-// Copyright 2012 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMSenTestCase.h"
-
-// Tests that using the keychain library within unit tests works correctly.
-@interface GTMIPhoneSecurityLibraryTest : GTMTestCase
-@end
-
-@implementation GTMIPhoneSecurityLibraryTest
-
-static NSString * const kAccount = @"GTMTestingSecurityAccount";
-static NSString * const kService = @"GTMTestingSecurityService";
-static NSString * const kPassword = @"GTMTestingSecurityPassword";
-
-- (NSMutableDictionary *)keychainQueryItem {
- return [NSMutableDictionary dictionaryWithObjectsAndKeys:
- (id)kSecClassGenericPassword, (id)kSecClass,
- kAccount, (id)kSecAttrAccount,
- kService, (id)kSecAttrService,
- nil];
-}
-
-- (void)assertCorrectPassword {
- NSMutableDictionary *keychainQueryItem = [self keychainQueryItem];
- [keychainQueryItem setObject:(id)kCFBooleanTrue forKey:(id)kSecReturnData];
- [keychainQueryItem setObject:(id)kSecMatchLimitOne forKey:(id)kSecMatchLimit];
-
- CFDataRef result = NULL;
- OSStatus status = SecItemCopyMatching((CFDictionaryRef)keychainQueryItem,
- (CFTypeRef *)&result);
- STAssertEquals(status,
- (OSStatus)noErr,
- @"Error retrieving password from keychain");
- STAssertNotNULL(result, @"No password found");
- NSString *password =
- [[[NSString alloc] initWithData:(NSData *)result
- encoding:NSUTF8StringEncoding] autorelease];
- STAssertEqualStrings(kPassword, password, @"Unexpected password found");
- CFRelease(result);
-}
-
-- (void)testSecurityCalls {
- NSMutableDictionary *passwordItem = [self keychainQueryItem];
- NSData *passwordData = [kPassword dataUsingEncoding:NSUTF8StringEncoding];
- [passwordItem setObject:passwordData forKey:(id)kSecValueData];
-
- OSStatus result = SecItemAdd((CFDictionaryRef)passwordItem, NULL);
- STAssertTrue(result == noErr || result == errSecDuplicateItem,
- @"Unexpected result code: %lu",
- (unsigned long)result);
- [self assertCorrectPassword];
-
- // Test that accessing the keychain will continue to work after a delay.
- NSDate *sleepUntil = [NSDate dateWithTimeIntervalSinceNow:30];
- [[NSRunLoop mainRunLoop] runUntilDate:sleepUntil];
- [self assertCorrectPassword];
-}
-
-@end
diff --git a/UnitTesting/GTMIPhoneUnitTestDelegate.m b/UnitTesting/GTMIPhoneUnitTestDelegate.m
index affcc3e..a112a99 100644
--- a/UnitTesting/GTMIPhoneUnitTestDelegate.m
+++ b/UnitTesting/GTMIPhoneUnitTestDelegate.m
@@ -179,7 +179,7 @@ static int ClassSort(const void *a, const void *b) {
fputs([fixtureStartString UTF8String], stderr);
fflush(stderr);
NSInvocation *invocation;
- GTM_FOREACH_OBJECT(invocation, invocations) {
+ for (invocation in invocations) {
GTMTestCase *testCase
= [[currClass alloc] initWithInvocation:invocation];
BOOL failed = NO;
diff --git a/UnitTesting/GTMIPhoneUnitTestMain.m b/UnitTesting/GTMIPhoneUnitTestMain.m
index 6bfc711..0a504b7 100644
--- a/UnitTesting/GTMIPhoneUnitTestMain.m
+++ b/UnitTesting/GTMIPhoneUnitTestMain.m
@@ -22,6 +22,30 @@
#endif
#import <UIKit/UIKit.h>
+#if GTM_ENABLE_TCCSERVICE_ACCESS
+
+// Enable access to AddressBook, Calendar and Photos
+// https://groups.google.com/forum/#!topic/kif-framework/xayP4VVBPyg
+
+__asm(".section __TEXT,__entitlements");
+__asm(".ascii \""
+ "<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?>\n"
+ "<!DOCTYPE plist PUBLIC \\\"-//Apple//DTD PLIST 1.0//EN\\\" "
+ "\\\"http://www.apple.com/DTDs/PropertyList-1.0.dtd\\\">"
+ "<plist version=\\\"1.0\\\">"
+ "<dict>"
+ "<key>com.apple.private.tcc.allow</key>"
+ "<array>"
+ "<string>kTCCServiceAddressBook</string>"
+ "<string>kTCCServiceCalendar</string>"
+ "<string>kTCCServicePhotos</string>"
+ "</array>"
+ "</dict>"
+ "</plist>"
+ "\"");
+
+#endif // GTM_ENABLE_TCCSERVICE_ACCESS
+
// Creates an application that runs all tests from classes extending
// SenTestCase, outputs results and test run time, and terminates right
// afterwards.
@@ -32,8 +56,8 @@ int main(int argc, char *argv[]) {
#else
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
#endif
-#if GTM_IPHONE_USE_SENTEST
- // Is using SenTest, just create a dummy app that can be used as the
+#if GTM_IPHONE_USE_SENTEST || GTM_USING_XCTEST
+ // Is using SenTest or XCTest, just create a dummy app that can be used as the
// TEST_HOST.
retVal = UIApplicationMain(argc, argv, nil, nil);
#else
diff --git a/UnitTesting/GTMNSObject+BindingUnitTesting.h b/UnitTesting/GTMNSObject+BindingUnitTesting.h
deleted file mode 100644
index feac5b3..0000000
--- a/UnitTesting/GTMNSObject+BindingUnitTesting.h
+++ /dev/null
@@ -1,120 +0,0 @@
-//
-// GTMNSObject+BindingUnitTesting.h
-//
-// Utilities for doing advanced unittesting with object bindings.
-//
-// Copyright 2006-2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#include <Foundation/Foundation.h>
-
-// Utility functions for GTMTestExposedBindings Macro. Don't use it directly
-// but use the macro below instead
-BOOL GTMDoExposedBindingsFunctionCorrectly(NSObject *object,
- NSArray **errors);
-
-// Tests the setters and getters for exposed bindings
-// For objects that expose bindings, this tests them for you, saving you from
-// having to write a whole pile of set/get test code if you add binding support.
-// You will need to implement valueClassForBinding: for your bindings,
-// and you may possibly want to implement unitTestExposedBindingsToIgnore
-// and unitTestExposedBindingsTestValues. See descriptions of those
-// methods below for details.
-// Implemented as a macro to match the rest of the SenTest macros.
-//
-// Args:
-// a1: The object to be checked.
-// description: A format string as in the printf() function.
-// Can be nil or an empty string but must be present.
-// ...: A variable number of arguments to the format string. Can be absent.
-//
-#define GTMTestExposedBindings(a1, description, ...) \
-do { \
- NSObject *a1Object = (a1); \
- NSArray *errors = nil; \
- BOOL isGood = GTMDoExposedBindingsFunctionCorrectly(a1Object, &errors); \
- if (!isGood) { \
- NSString *failString; \
- GTM_FOREACH_OBJECT(failString, errors) { \
- if (description != nil) { \
- STFail(@"%@: %@", failString, STComposeString(description, ##__VA_ARGS__)); \
- } else { \
- STFail(@"%@", failString); \
- } \
- } \
- } \
-} while(0)
-
-// Utility class for setting up Binding Tests. Basically a pair of a value to
-// set a binding to, followed by the expected return value.
-// See description of gtm_unitTestExposedBindingsTestValues: below
-// for example of usage.
-@interface GTMBindingUnitTestData : NSObject {
- @private
- id valueToSet_;
- id expectedValue_;
-}
-
-+ (id)testWithIdentityValue:(id)value;
-+ (id)testWithValue:(id)value expecting:(id)expecting;
-- (id)initWithValue:(id)value expecting:(id)expecting;
-- (id)valueToSet;
-- (id)expectedValue;
-@end
-
-@interface NSObject (GTMBindingUnitTestingAdditions)
-// Allows you to ignore certain bindings when running GTMTestExposedBindings
-// If you have bindings you want to ignore, add them to the array returned
-// by this method. The standard way to implement this would be:
-// - (NSMutableArray*)unitTestExposedBindingsToIgnore {
-// NSMutableArray *array = [super unitTestExposedBindingsToIgnore];
-// [array addObject:@"bindingToIgnore1"];
-// ...
-// return array;
-// }
-// The NSObject implementation by default will ignore NSFontBoldBinding,
-// NSFontFamilyNameBinding, NSFontItalicBinding, NSFontNameBinding and
-// NSFontSizeBinding if your exposed bindings contains NSFontBinding because
-// the NSFont*Bindings are NOT KVC/KVO compliant.
-- (NSMutableArray*)gtm_unitTestExposedBindingsToIgnore;
-
-// Allows you to set up test values for your different bindings.
-// if you have certain values you want to test against your bindings, add
-// them to the array returned by this method. The array is an array of
-// GTMBindingUnitTestData.
-// The standard way to implement this would be:
-// - (NSMutableArray*)gtm_unitTestExposedBindingsTestValues:(NSString*)binding {
-// NSMutableArray *dict = [super unitTestExposedBindingsTestValues:binding];
-// if ([binding isEqualToString:@"myBinding"]) {
-// MySpecialBindingValueSet *value
-// = [[[MySpecialBindingValueSet alloc] init] autorelease];
-// [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
-// ...
-// else if ([binding isEqualToString:@"myBinding2"]) {
-// ...
-// }
-// return array;
-// }
-// The NSObject implementation handles many of the default bindings, and
-// gives you a reasonable set of test values to start.
-// See the implementation for the current list of bindings, and values that we
-// set for those bindings.
-- (NSMutableArray*)gtm_unitTestExposedBindingsTestValues:(NSString*)binding;
-
-// A special version of isEqualTo to test whether two binding values are equal
-// by default it calls directly to isEqualTo: but can be overridden for special
-// cases (like NSImages) where the standard isEqualTo: isn't sufficient.
-- (BOOL)gtm_unitTestIsEqualTo:(id)value;
-@end
diff --git a/UnitTesting/GTMNSObject+BindingUnitTesting.m b/UnitTesting/GTMNSObject+BindingUnitTesting.m
deleted file mode 100644
index 4b43f58..0000000
--- a/UnitTesting/GTMNSObject+BindingUnitTesting.m
+++ /dev/null
@@ -1,577 +0,0 @@
-//
-// GTMNSObject+BindingUnitTesting.m
-//
-// An informal protocol for doing advanced binding unittesting with objects.
-//
-// Copyright 2006-2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import <AppKit/AppKit.h>
-#import "GTMDefines.h"
-#import "GTMNSObject+BindingUnitTesting.h"
-#import "GTMSystemVersion.h"
-
-BOOL GTMDoExposedBindingsFunctionCorrectly(NSObject *object,
- NSArray **errors) {
- NSMutableArray *errorArray = [NSMutableArray array];
- if (errors) {
- *errors = nil;
- }
- NSArray *bindings = [object exposedBindings];
- if ([bindings count]) {
- NSArray *bindingsToIgnore = [object gtm_unitTestExposedBindingsToIgnore];
- NSString *bindingKey;
- GTM_FOREACH_OBJECT(bindingKey, bindings) {
- if (![bindingsToIgnore containsObject:bindingKey]) {
- Class theClass = [object valueClassForBinding:bindingKey];
- if (!theClass) {
- NSString *error
- = [NSString stringWithFormat:@"%@ should have valueClassForBinding '%@'",
- object, bindingKey];
- [errorArray addObject:error];
- continue;
- }
- @try {
- @try {
- [object valueForKey:bindingKey];
- }
- @catch (NSException *e) {
- _GTMDevLog(@"%@ is not key value coding compliant for key %@",
- object, bindingKey);
- continue;
- } // COV_NF_LINE - compiler bug
- NSArray *testValues
- = [object gtm_unitTestExposedBindingsTestValues:bindingKey];
- GTMBindingUnitTestData *testData;
- GTM_FOREACH_OBJECT(testData, testValues) {
- id valueToSet = [testData valueToSet];
- [object setValue:valueToSet forKey:bindingKey];
- id valueReceived = [object valueForKey:bindingKey];
- id desiredValue = [testData expectedValue];
- if (![desiredValue gtm_unitTestIsEqualTo:valueReceived]) {
- NSString *error
- = [NSString stringWithFormat:@"%@ unequal to expected %@ for binding '%@'",
- valueReceived, desiredValue, bindingKey];
- [errorArray addObject:error];
- continue;
- }
- }
- }
- @catch(NSException *e) {
- NSString *error
- = [NSString stringWithFormat:@"%@:%@-> Binding %@",
- [e name], [e reason], bindingKey];
- [errorArray addObject:error];
- } // COV_NF_LINE - compiler bug
- }
- }
- } else {
- NSString *error =
- [NSString stringWithFormat:@"%@ does not have any exposed bindings",
- object];
- [errorArray addObject:error];
- }
- if (errors) {
- *errors = errorArray;
- }
- return [errorArray count] == 0;
-}
-
-@implementation GTMBindingUnitTestData
-+ (id)testWithIdentityValue:(id)value {
- return [self testWithValue:value expecting:value];
-}
-
-+ (id)testWithValue:(id)value expecting:(id)expecting {
- return [[[self alloc] initWithValue:value expecting:expecting] autorelease];
-}
-
-- (id)initWithValue:(id)value expecting:(id)expecting {
- if ((self = [super init])) {
- valueToSet_ = [value retain];
- expectedValue_ = [expecting retain];
- }
- return self;
-}
-
-- (BOOL)isEqual:(id)object {
- BOOL isEqual = [object isMemberOfClass:[self class]];
- if (isEqual) {
- id objValue = [object valueToSet];
- id objExpect = [object expectedValue];
- isEqual = (((valueToSet_ == objValue) || ([valueToSet_ isEqual:objValue]))
- && ((expectedValue_ == objExpect) || ([expectedValue_ isEqual:objExpect])));
- }
- return isEqual;
-}
-
-- (NSUInteger)hash {
- return [valueToSet_ hash] + [expectedValue_ hash];
-}
-
-- (void)dealloc {
- [valueToSet_ release];
- [expectedValue_ release];
- [super dealloc];
-}
-
-- (id)valueToSet {
- return valueToSet_;
-}
-
-- (id)expectedValue {
- return expectedValue_;
-}
-@end
-
-@implementation NSObject (GTMBindingUnitTestingAdditions)
-
-- (NSMutableArray*)gtm_unitTestExposedBindingsToIgnore {
- NSMutableArray *array = [NSMutableArray arrayWithObject:NSValueBinding];
- if ([[self exposedBindings] containsObject:NSFontBinding]) {
- NSString *fontBindings[] = { NSFontBoldBinding, NSFontFamilyNameBinding,
- NSFontItalicBinding, NSFontNameBinding, NSFontSizeBinding };
- for (size_t i = 0; i < sizeof(fontBindings) / sizeof(NSString*); ++i) {
- [array addObject:fontBindings[i]];
- }
- }
- return array;
-}
-
-- (NSMutableArray*)gtm_unitTestExposedBindingsTestValues:(NSString*)binding {
-
- NSMutableArray *array = [NSMutableArray array];
- id value = [self valueForKey:binding];
-
- // Always test identity if possible
- if (value) {
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- }
-
- // Now some default test values for a variety of bindings to make
- // sure that we cover all the bases and save other people writing lots of
- // duplicate test code.
-
- // If anybody can think of more to add, please go nuts.
- if ([binding isEqualToString:NSAlignmentBinding]) {
- value = [NSNumber numberWithInt:NSLeftTextAlignment];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- value = [NSNumber numberWithInt:NSRightTextAlignment];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- value = [NSNumber numberWithInt:NSCenterTextAlignment];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- value = [NSNumber numberWithInt:NSJustifiedTextAlignment];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- value = [NSNumber numberWithInt:NSNaturalTextAlignment];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- NSNumber *valueToSet = [NSNumber numberWithInt:500];
- [array addObject:[GTMBindingUnitTestData testWithValue:valueToSet
- expecting:value]];
- valueToSet = [NSNumber numberWithInt:-1];
- [array addObject:[GTMBindingUnitTestData testWithValue:valueToSet
- expecting:value]];
- } else if ([binding isEqualToString:NSAlternateImageBinding] ||
- [binding isEqualToString:NSImageBinding] ||
- [binding isEqualToString:NSMixedStateImageBinding] ||
- [binding isEqualToString:NSOffStateImageBinding] ||
- [binding isEqualToString:NSOnStateImageBinding]) {
- // This handles all image bindings
- value = [NSImage imageNamed:@"NSApplicationIcon"];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- } else if ([binding isEqualToString:NSAnimateBinding] ||
- [binding isEqualToString:NSDocumentEditedBinding] ||
- [binding isEqualToString:NSEditableBinding] ||
- [binding isEqualToString:NSEnabledBinding] ||
- [binding isEqualToString:NSHiddenBinding] ||
- [binding isEqualToString:NSVisibleBinding] ||
- [binding isEqualToString:NSIsIndeterminateBinding] ||
- // NSTranparentBinding 10.5 only
- [binding isEqualToString:@"transparent"]) {
- // This handles all bool value bindings
- value = [NSNumber numberWithBool:YES];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- value = [NSNumber numberWithBool:NO];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- } else if ([binding isEqualToString:NSAlternateTitleBinding] ||
- [binding isEqualToString:NSHeaderTitleBinding] ||
- [binding isEqualToString:NSLabelBinding] ||
- [binding isEqualToString:NSTitleBinding] ||
- [binding isEqualToString:NSToolTipBinding]) {
- // This handles all string value bindings
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:@"happy"]];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:@""]];
-
- // Test some non-ascii roman text
- char a_not_alpha[] = { 'A', 0xE2, 0x89, 0xA2, 0xCE, 0x91, '.', 0x00 };
- value = [NSString stringWithUTF8String:a_not_alpha];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- // Test some korean
- char hangugo[] = { 0xED, 0x95, 0x9C, 0xEA, 0xB5,
- 0xAD, 0xEC, 0x96, 0xB4, 0x00 };
- value = [NSString stringWithUTF8String:hangugo];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- // Test some japanese
- char nihongo[] = { 0xE6, 0x97, 0xA5, 0xE6, 0x9C,
- 0xAC, 0xE8, 0xAA, 0x9E, 0x00 };
- value = [NSString stringWithUTF8String:nihongo];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- // Test some arabic
- char arabic[] = { 0xd9, 0x83, 0xd8, 0xa7, 0xd9, 0x83, 0xd8, 0xa7, 0x00 };
- value = [NSString stringWithUTF8String:arabic];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- } else if ([binding isEqualToString:NSRepresentedFilenameBinding]) {
- // This handles all path bindings
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:@"/happy"]];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:@"/"]];
-
- // Test some non-ascii roman text
- char a_not_alpha[] = { '/', 'A', 0xE2, 0x89, 0xA2, 0xCE, 0x91, '.', 0x00 };
- value = [NSString stringWithUTF8String:a_not_alpha];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- // Test some korean
- char hangugo[] = { '/', 0xED, 0x95, 0x9C, 0xEA, 0xB5,
- 0xAD, 0xEC, 0x96, 0xB4, 0x00 };
- value = [NSString stringWithUTF8String:hangugo];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- // Test some japanese
- char nihongo[] = { '/', 0xE6, 0x97, 0xA5, 0xE6, 0x9C,
- 0xAC, 0xE8, 0xAA, 0x9E, 0x00 };
- value = [NSString stringWithUTF8String:nihongo];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- // Test some arabic
- char arabic[] = { '/', 0xd9, 0x83, 0xd8, 0xa7, 0xd9, 0x83, 0xd8, 0xa7, 0x00 };
- value = [NSString stringWithUTF8String:arabic];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- } else if ([binding isEqualToString:NSMaximumRecentsBinding]) {
- value = [NSNumber numberWithInt:0];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- value = [NSNumber numberWithInt:-1];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- value = [NSNumber numberWithInt:INT16_MAX];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- value = [NSNumber numberWithInt:INT16_MIN];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- } else if ([binding isEqualToString:NSRowHeightBinding]) {
- NSNumber *valueOne = [NSNumber numberWithInt:1];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:valueOne]];
- value = [NSNumber numberWithInt:0];
- id value2 = [NSNumber numberWithInt:INT16_MIN];
- // Row height no longer accepts <= 0 values on SnowLeopard
- // which is a good thing.
- if ([GTMSystemVersion isSnowLeopardOrGreater]) {
- [array addObject:[GTMBindingUnitTestData testWithValue:value
- expecting:valueOne]];
-
- [array addObject:[GTMBindingUnitTestData testWithValue:value2
- expecting:valueOne]];
- } else {
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value2]];
- }
- value = [NSNumber numberWithInt:INT16_MAX];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- } else if ([binding isEqualToString:NSMaxValueBinding] ||
- [binding isEqualToString:NSMaxWidthBinding] ||
- [binding isEqualToString:NSMinValueBinding] ||
- [binding isEqualToString:NSMinWidthBinding] ||
- [binding isEqualToString:NSContentWidthBinding] ||
- [binding isEqualToString:NSContentHeightBinding] ||
- [binding isEqualToString:NSWidthBinding] ||
- [binding isEqualToString:NSAnimationDelayBinding]) {
- // NSAnimationDelay is deprecated on SnowLeopard. We continue to test it
- // to make sure it doesn't get broken.
-
- // This handles all float value bindings
- value = [NSNumber numberWithFloat:0];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- value = [NSNumber numberWithFloat:FLT_MAX];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- value = [NSNumber numberWithFloat:-FLT_MAX];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- value = [NSNumber numberWithFloat:FLT_MIN];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- value = [NSNumber numberWithFloat:-FLT_MIN];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- value = [NSNumber numberWithFloat:FLT_EPSILON];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- value = [NSNumber numberWithFloat:-FLT_EPSILON];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- } else if ([binding isEqualToString:NSTextColorBinding]) {
- // This handles all color value bindings
- value = [NSColor colorWithCalibratedWhite:1.0 alpha:1.0];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- value = [NSColor colorWithCalibratedWhite:1.0 alpha:0.0];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- value = [NSColor colorWithCalibratedWhite:1.0 alpha:0.5];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- value = [NSColor colorWithCalibratedRed:0.5 green:0.5 blue:0.5 alpha:0.5];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- value = [NSColor colorWithDeviceCyan:0.25 magenta:0.25 yellow:0.25
- black:0.25 alpha:0.25];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- } else if ([binding isEqualToString:NSFontBinding]) {
- // This handles all font value bindings
- value = [NSFont boldSystemFontOfSize:[NSFont systemFontSize]];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- value = [NSFont toolTipsFontOfSize:[NSFont smallSystemFontSize]];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- value = [NSFont labelFontOfSize:144.0];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- } else if ([binding isEqualToString:NSRecentSearchesBinding] ||
- [binding isEqualToString:NSSortDescriptorsBinding]) {
- // This handles all array value bindings
- value = [NSArray array];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- } else if ([binding isEqualToString:NSTargetBinding]) {
- value = [NSNull null];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- } else {
- _GTMDevLog(@"Skipped Binding: %@ for %@", binding, self); // COV_NF_LINE
- }
- return array;
-}
-
-- (BOOL)gtm_unitTestIsEqualTo:(id)value {
- return [self isEqualTo:value];
-}
-
-@end
-
-#pragma mark -
-#pragma mark All the special AppKit Bindings issues below
-
-@interface NSImage (GTMBindingUnitTestingAdditions)
-@end
-
-@implementation NSImage (GTMBindingUnitTestingAdditions)
-- (BOOL)gtm_unitTestIsEqualTo:(id)value {
- // NSImage just does pointer equality in the default isEqualTo implementation
- // we need something a little more heavy duty that actually compares the
- // images internally.
- return [[self TIFFRepresentation] isEqualTo:[value TIFFRepresentation]];
-}
-@end
-
-@interface NSScroller (GTMBindingUnitTestingAdditions)
-@end
-
-@implementation NSScroller (GTMBindingUnitTestingAdditions)
-- (NSMutableArray*)gtm_unitTestExposedBindingsToIgnore {
- NSMutableArray *array = [super gtm_unitTestExposedBindingsToIgnore];
- SInt32 major, minor, bugFix;
- [GTMSystemVersion getMajor:&major minor:&minor bugFix:&bugFix];
- if (major <= 10 && minor <= 5 && bugFix <= 5) {
- // rdar://5849154 - NSScroller exposes binding with no value
- // class for NSValueBinding
- [array addObject:NSValueBinding];
- }
- if (major <= 10 && minor <= 6) {
- // Broken on SnowLeopard and below
- // rdar://5849236 - NSScroller exposes binding for NSFontBinding
- [array addObject:NSFontBinding];
- }
- return array;
-}
-@end
-
-@interface NSTextField (GTMBindingUnitTestingAdditions)
-@end
-
-@implementation NSTextField (GTMBindingUnitTestingAdditions)
-
-- (NSMutableArray*)gtm_unitTestExposedBindingsToIgnore {
- NSMutableArray *array = [super gtm_unitTestExposedBindingsToIgnore];
- // Not KVC Compliant
- for (int i = 0; i < 10; i++) {
- [array addObject:[NSString stringWithFormat:@"displayPatternValue%d", i]];
- }
- return array;
-}
-
-- (NSMutableArray *)gtm_unitTestExposedBindingsTestValues:(NSString*)binding {
- NSMutableArray *array = [super gtm_unitTestExposedBindingsTestValues:binding];
- if ([binding isEqualToString:NSAlignmentBinding]) {
- SInt32 major, minor, bugFix;
- [GTMSystemVersion getMajor:&major minor:&minor bugFix:&bugFix];
- if (major <= 10 && minor <= 6) {
- // rdar://5851487 - If NSAlignmentBinding for a NSTextField is set to -1
- // and then got it returns 7
- NSNumber *textAlignment = [NSNumber numberWithInt:NSNaturalTextAlignment];
- GTMBindingUnitTestData *dataToRemove =
- [GTMBindingUnitTestData testWithValue:[NSNumber numberWithInt:-1]
- expecting:textAlignment];
- [array removeObject:dataToRemove];
- GTMBindingUnitTestData *dataToAdd =
- [GTMBindingUnitTestData testWithValue:[NSNumber numberWithInt:-1]
- expecting:[NSNumber numberWithInt:7]];
- [array addObject:dataToAdd];
- }
- }
- return array;
-}
-@end
-
-@interface NSSearchField (GTMBindingUnitTestingAdditions)
-@end
-
-@implementation NSSearchField (GTMBindingUnitTestingAdditions)
-
-- (NSMutableArray*)gtm_unitTestExposedBindingsToIgnore {
- NSMutableArray *array = [super gtm_unitTestExposedBindingsToIgnore];
- SInt32 major, minor, bugFix;
- [GTMSystemVersion getMajor:&major minor:&minor bugFix:&bugFix];
- if (major <= 10 && minor <= 6) {
- // rdar://5851491 - Setting NSAlignmentBinding of search field to
- // NSCenterTextAlignment broken
- // Broken on 10.6 and below.
- [array addObject:NSAlignmentBinding];
- }
- // Not KVC Compliant
- [array addObject:NSPredicateBinding];
- return array;
-}
-
-@end
-
-@interface NSWindow (GTMBindingUnitTestingAdditions)
-@end
-
-@implementation NSWindow (GTMBindingUnitTestingAdditions)
-
-- (NSMutableArray*)gtm_unitTestExposedBindingsToIgnore {
- NSMutableArray *array = [super gtm_unitTestExposedBindingsToIgnore];
- // Not KVC Compliant
- [array addObject:NSContentWidthBinding];
- [array addObject:NSContentHeightBinding];
- for (int i = 0; i < 10; i++) {
- [array addObject:[NSString stringWithFormat:@"displayPatternTitle%d", i]];
- }
- return array;
-}
-
-@end
-
-@interface NSBox (GTMBindingUnitTestingAdditions)
-@end
-
-@implementation NSBox (GTMBindingUnitTestingAdditions)
-
-- (NSMutableArray*)gtm_unitTestExposedBindingsToIgnore {
- NSMutableArray *array = [super gtm_unitTestExposedBindingsToIgnore];
- // Not KVC Compliant
- for (int i = 0; i < 10; i++) {
- [array addObject:[NSString stringWithFormat:@"displayPatternTitle%d", i]];
- }
- return array;
-}
-
-@end
-
-@interface NSTableView (GTMBindingUnitTestingAdditions)
-@end
-
-@implementation NSTableView (GTMBindingUnitTestingAdditions)
-
-- (NSMutableArray*)gtm_unitTestExposedBindingsToIgnore {
- NSMutableArray *array = [super gtm_unitTestExposedBindingsToIgnore];
- SInt32 major, minor, bugFix;
- [GTMSystemVersion getMajor:&major minor:&minor bugFix:&bugFix];
- if (major <= 10 && minor <= 6) {
- // rdar://6288332 - NSTableView does not respond to NSFontBinding
- // Broken on 10.5 and SnowLeopard
- [array addObject:NSFontBinding];
- }
- // Not KVC Compliant
- [array addObject:NSContentBinding];
- [array addObject:NSDoubleClickTargetBinding];
- [array addObject:NSDoubleClickArgumentBinding];
- [array addObject:NSSelectionIndexesBinding];
- return array;
-}
-
-@end
-
-@interface NSTextView (GTMBindingUnitTestingAdditions)
-@end
-
-@implementation NSTextView (GTMBindingUnitTestingAdditions)
-
-- (NSMutableArray*)gtm_unitTestExposedBindingsToIgnore {
- NSMutableArray *array = [super gtm_unitTestExposedBindingsToIgnore];
- SInt32 major, minor, bugFix;
- [GTMSystemVersion getMajor:&major minor:&minor bugFix:&bugFix];
- if (major <= 10 && minor <= 6) {
- //rdar://5849335 - NSTextView only partially KVC compliant for key
- // NSAttributedStringBinding
- [array addObject:NSAttributedStringBinding];
- }
- // Not KVC Compliant
- [array addObject:NSDataBinding];
- [array addObject:NSValueURLBinding];
- [array addObject:NSValuePathBinding];
- return array;
-}
-
-@end
-
-@interface NSTabView (GTMBindingUnitTestingAdditions)
-@end
-
-@implementation NSTabView (GTMBindingUnitTestingAdditions)
-
-- (NSMutableArray*)gtm_unitTestExposedBindingsToIgnore {
- NSMutableArray *array = [super gtm_unitTestExposedBindingsToIgnore];
- SInt32 major, minor, bugFix;
- [GTMSystemVersion getMajor:&major minor:&minor bugFix:&bugFix];
- if (major <= 10 && minor <= 6) {
- // rdar://5849248 - NSTabView exposes binding with no value class
- // for NSSelectedIdentifierBinding
- [array addObject:NSSelectedIdentifierBinding];
- }
- // Not KVC Compliant
- [array addObject:NSSelectedIndexBinding];
- [array addObject:NSSelectedLabelBinding];
- return array;
-}
-
-@end
-
-@interface NSButton (GTMBindingUnitTestingAdditions)
-@end
-
-@implementation NSButton (GTMBindingUnitTestingAdditions)
-
-- (NSMutableArray*)gtm_unitTestExposedBindingsToIgnore {
- NSMutableArray *array = [super gtm_unitTestExposedBindingsToIgnore];
- // Not KVC Compliant
- [array addObject:NSArgumentBinding];
- return array;
-}
-
-@end
-
-@interface NSProgressIndicator (GTMBindingUnitTestingAdditions)
-@end
-
-@implementation NSProgressIndicator (GTMBindingUnitTestingAdditions)
-
-- (NSMutableArray*)gtm_unitTestExposedBindingsToIgnore {
- NSMutableArray *array = [super gtm_unitTestExposedBindingsToIgnore];
- // Not KVC Compliant
- [array addObject:NSAnimateBinding];
- return array;
-}
-
-@end
diff --git a/UnitTesting/GTMNSObject+UnitTesting.h b/UnitTesting/GTMNSObject+UnitTesting.h
deleted file mode 100644
index e98828a..0000000
--- a/UnitTesting/GTMNSObject+UnitTesting.h
+++ /dev/null
@@ -1,430 +0,0 @@
-//
-// GTMNSObject+UnitTesting.h
-//
-// Utilities for doing advanced unittesting with objects.
-//
-// Copyright 2006-2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMDefines.h"
-#import <Foundation/Foundation.h>
-
-#if GTM_MACOS_SDK
-#import <ApplicationServices/ApplicationServices.h>
-#elif GTM_IPHONE_SDK
-#import <CoreGraphics/CoreGraphics.h>
-#endif
-
-#import "GTMSenTestCase.h"
-
-// NOTE: for "arch" in the file names on iOS, it is not CPU (armv6, armv7), but
-// instead is "iPhone" or "iPad" for the device form factor.
-
-// Utility functions for GTMAssert* Macros. Don't use them directly
-// but use the macros below instead
-BOOL GTMIsObjectImageEqualToImageNamed(id object,
- NSString *filename,
- NSString **error);
-BOOL GTMIsObjectStateEqualToStateNamed(id object,
- NSString *filename,
- NSString **error);
-
-// Fails when image of |a1| does not equal image in image file named |a2|
-//
-// Generates a failure when the unittest image of |a1| is not equal to the
-// image stored in the image file named |a2|, or |a2| does not exist in the
-// executable code's bundle.
-// If |a2| does not exist in the executable code's bundle, we save a image
-// representation of |a1| in the save directory with name |a2|. This can then
-// be included in the bundle as the master to test against.
-// If |a2| != |a1|, we save a image representation of |a1| in the save
-// directory named |a2|_Failed and a file named |a2|_Failed_Diff showing the
-// diff in red so that we can see what has changed.
-// See pathForImageNamed to see how name is searched for.
-// The save directory is specified by +gtm_setUnitTestSaveToDirectory, and is
-// the desktop by default.
-// Implemented as a macro to match the rest of the SenTest macros.
-//
-// Args:
-// a1: The object to be checked. Must implement the -createUnitTestImage method.
-// a2: The name of the image file to check against.
-// Do not include the extension
-// description: A format string as in the printf() function.
-// Can be nil or an empty string but must be present.
-// ...: A variable number of arguments to the format string. Can be absent.
-//
-#define GTMAssertObjectImageEqualToImageNamed(a1, a2, description, ...) \
-do { \
- id a1Object = (a1); \
- NSString* a2String = (a2); \
- NSString *failString = nil; \
- BOOL isGood = GTMIsObjectImageEqualToImageNamed(a1Object, a2String, &failString); \
- if (!isGood) { \
- if (description != nil) { \
- STFail(@"%@: %@", failString, STComposeString(description, ##__VA_ARGS__)); \
- } else { \
- STFail(@"%@", failString); \
- } \
- } \
-} while(0)
-
-// Fails when state of |a1| does not equal state in file |a2|
-//
-// Generates a failure when the unittest state of |a1| is not equal to the
-// state stored in the state file named |a2|, or |a2| does not exist in the
-// executable code's bundle.
-// If |a2| does not exist in the executable code's bundle, we save a state
-// representation of |a1| in the save directiry with name |a2|. This can then
-// be included in the bundle as the master to test against.
-// If |a2| != |a1|, we save a state representation of |a1| in the save
-// directory with name |a2|_Failed so that we can compare the two files to see
-// what has changed.
-// The save directory is specified by +gtm_setUnitTestSaveToDirectory, and is
-// the desktop by default.
-// Implemented as a macro to match the rest of the SenTest macros.
-//
-// Args:
-// a1: The object to be checked. Must implement the -createUnitTestImage method.
-// a2: The name of the state file to check against.
-// Do not include the extension
-// description: A format string as in the printf() function.
-// Can be nil or an empty string but must be present.
-// ...: A variable number of arguments to the format string. Can be absent.
-//
-#define GTMAssertObjectStateEqualToStateNamed(a1, a2, description, ...) \
-do { \
- id a1Object = (a1); \
- NSString* a2String = (a2); \
- NSString *failString = nil; \
- BOOL isGood = GTMIsObjectStateEqualToStateNamed(a1Object, a2String, &failString); \
- if (!isGood) { \
- if (description != nil) { \
- STFail(@"%@: %@", failString, STComposeString(description, ##__VA_ARGS__)); \
- } else { \
- STFail(@"%@", failString); \
- } \
- } \
-} while(0);
-
-// test both GTMAssertObjectImageEqualToImageNamed and GTMAssertObjectStateEqualToStateNamed
-//
-// Combines the above two macros into a single ubermacro for comparing
-// both state and image. When only the best will do...
-#define GTMAssertObjectEqualToStateAndImageNamed(a1, a2, description, ...) \
-do { \
- GTMAssertObjectImageEqualToImageNamed(a1, a2, description, ##__VA_ARGS__); \
- GTMAssertObjectStateEqualToStateNamed(a1, a2, description, ##__VA_ARGS__); \
-} while (0)
-
-// Create a CGBitmapContextRef appropriate for using in creating a unit test
-// image. If data is non-NULL, returns the buffer that the bitmap is
-// using for it's underlying storage. You must free this buffer using
-// free. If data is NULL, uses it's own internal storage.
-// Defined as a C function instead of an obj-c method because you have to
-// release the CGContextRef that is returned.
-//
-// Returns:
-// an CGContextRef of the object. Caller must release
-
-CGContextRef GTMCreateUnitTestBitmapContextOfSizeWithData(CGSize size,
- unsigned char **data);
-
-// GTMUnitTestingImaging protocol is for objects which need to save their
-// image for using with the unit testing categories
-@protocol GTMUnitTestingImaging
-// Create a CGImageRef containing a representation suitable for use in
-// comparing against a master image.
-//
-// Returns:
-// an CGImageRef of the object.
-- (CGImageRef)gtm_unitTestImage;
-@end
-
-// GTMUnitTestingEncoding protocol is for objects which need to save their
-// "state" for using with the unit testing categories
-@protocol GTMUnitTestingEncoding
-// Encodes the state of an object in a manner suitable for comparing
-// against a master state file so we can determine whether the
-// object is in a suitable state. Encode data in the coder in the same
-// manner that you would encode data in any other Keyed NSCoder subclass.
-//
-// Arguments:
-// inCoder - the coder to encode our state into
-- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder;
-@end
-
-// Category for saving and comparing object state and image for unit tests
-//
-// The GTMUnitTestAdditions category gives object the ability to store their
-// state for use in unittesting in two different manners.
-// 1) Objects can elect to save their "image" that we can compare at
-// runtime to an image file to make sure that the representation hasn't
-// changed. All views and Windows can save their image. In the case of Windows,
-// they are "bluescreened" so that any transparent areas can be compared between
-// machines.
-// 2) Objects can elect to save their "state". State is the attributes that we
-// want to verify when running unit tests. Applications, Windows, Views,
-// Controls and Cells currently return a variety of state information. If you
-// want to customize the state information that a particular object returns, you
-// can do it via the GTMUnitTestingEncodedObjectNotification. Items that have
-// delegates (Applications/Windows) can also have their delegates return state
-// information if appropriate via the unitTestEncoderDidEncode:inCoder: delegate
-// method.
-// To compare state/image in your unit tests, you can use the three macros above
-// GTMAssertObjectStateEqualToStateNamed, GTMAssertObjectImageEqualToImageNamed and
-// GTMAssertObjectEqualToStateAndImageNamed.
-@interface NSObject (GTMUnitTestingAdditions) <GTMUnitTestingEncoding>
-// Allows you to control where the unit test utilities save any files
-// (image or state) that they create on your behalf. By default they
-// will save to the desktop.
-+ (void)gtm_setUnitTestSaveToDirectory:(NSString*)path;
-+ (NSString *)gtm_getUnitTestSaveToDirectory;
-
-// Checks to see that system settings are valid for doing an image comparison.
-// Most of these are set by our unit test app. See the unit test app main.m
-// for details.
-//
-// Returns:
-// YES if we can do image comparisons for this object type.
-- (BOOL)gtm_areSystemSettingsValidForDoingImage;
-
-// Return the type of image to work with. Only valid types on the iPhone
-// are kUTTypeJPEG and kUTTypePNG. MacOS supports several more.
-- (CFStringRef)gtm_imageUTI;
-
-// Return the extension to be used for saving unittest images
-//
-// Returns
-// An extension (e.g. "png")
-- (NSString*)gtm_imageExtension;
-
-// Return image data in the format expected for gtm_imageExtension
-// So for a "png" extension I would expect "png" data
-//
-// Returns
-// NSData for image
-- (NSData*)gtm_imageDataForImage:(CGImageRef)image;
-
-// Save the unitTestImage to a image file with name
-// |name|.arch.OSVersionMajor.OSVersionMinor.OSVersionBugfix.extension
-// in the save folder (desktop by default)
-//
-// Args:
-// name: The name for the image file you would like saved.
-//
-// Returns:
-// YES if the file was successfully saved.
-//
-- (BOOL)gtm_saveToImageNamed:(NSString*)name;
-
-// Save unitTestImage of |self| to an image file at path |path|.
-// All non-drawn areas will be transparent.
-//
-// Args:
-// name: The name for the image file you would like saved.
-//
-// Returns:
-// YES if the file was successfully saved.
-//
-- (BOOL)gtm_saveToImageAt:(NSString*)path;
-
-// Compares unitTestImage of |self| to the image located at |path|
-//
-// Args:
-// path: the path to the image file you want to compare against.
-// If diff is non-nil, it will contain an auto-released diff of the images.
-//
-// Returns:
-// YES if they are equal, NO is they are not
-// If diff is non-nil, it will contain a diff of the images. Must
-// be released by caller.
-//
-- (BOOL)gtm_compareWithImageAt:(NSString*)path diffImage:(CGImageRef*)diff;
-
-// Find the path for a image by name in your bundle.
-// Searches for the following:
-// "name.CompilerSDK.OSVersionMajor.OSVersionMinor.OSVersionBugFix.arch.extension"
-// "name.CompilerSDK.OSVersionMajor.OSVersionMinor.arch.extension"
-// "name.CompilerSDK.OSVersionMajor.arch.extension"
-// "name.CompilerSDK.arch.extension"
-// "name.CompilerSDK.OSVersionMajor.OSVersionMinor.OSVersionBugFix.extension"
-// "name.CompilerSDK.OSVersionMajor.OSVersionMinor.extension"
-// "name.CompilerSDK.OSVersionMajor.extension"
-// "name.CompilerSDK.extension"
-// "name.OSVersionMajor.OSVersionMinor.OSVersionBugFix.arch.extension"
-// "name.OSVersionMajor.OSVersionMinor.arch.extension"
-// "name.OSVersionMajor.arch.extension"
-// "name.arch.extension"
-// "name.OSVersionMajor.OSVersionMinor.OSVersionBugFix.extension"
-// "name.OSVersionMajor.OSVersionMinor.extension"
-// "name.OSVersionMajor.extension"
-// "name.extension"
-// Do not include the extension on your name.
-//
-// Args:
-// name: The name for the image file you would like to find.
-//
-// Returns:
-// the path if the image exists in your bundle
-// or nil if no image to be found
-//
-- (NSString *)gtm_pathForImageNamed:(NSString*)name;
-
-// Generates a CGImageRef from the image at |path|
-// Args:
-// path: The path to the image.
-//
-// Returns:
-// An autoreleased CGImageRef own, or nil if no image at path
-- (CGImageRef)gtm_imageWithContentsOfFile:(NSString*)path;
-
-// Generates a path for a image in the save directory, which is desktop
-// by default.
-// Path will be:
-// SaveDir/|name|.arch.OSVersionMajor.OSVersionMinor.OSVersionBugfix.extension
-//
-// Args:
-// name: The name for the image file you would like to generate a path for.
-//
-// Returns:
-// the path
-//
-- (NSString *)gtm_saveToPathForImageNamed:(NSString*)name;
-
-// Gives us a representation of unitTestImage of |self|.
-//
-// Returns:
-// a representation if successful
-// nil if failed
-//
-- (NSData *)gtm_imageRepresentation;
-
-// Return the extension to be used for saving unittest states
-//
-// Returns
-// An extension (e.g. "gtmUTState")
-- (NSString*)gtm_stateExtension;
-
-// Save the encoded unit test state to a state file with name
-// |name|.arch.OSVersionMajor.OSVersionMinor.OSVersionBugfix.extension
-// in the save folder (desktop by default)
-//
-// Args:
-// name: The name for the state file you would like saved.
-//
-// Returns:
-// YES if the file was successfully saved.
-//
-- (BOOL)gtm_saveToStateNamed:(NSString*)name;
-
-// Save encoded unit test state of |self| to a state file at path |path|.
-//
-// Args:
-// name: The name for the state file you would like saved.
-//
-// Returns:
-// YES if the file was successfully saved.
-//
-- (BOOL)gtm_saveToStateAt:(NSString*)path;
-
-// Compares encoded unit test state of |self| to the state file located at |path|
-//
-// Args:
-// path: the path to the state file you want to compare against.
-//
-// Returns:
-// YES if they are equal, NO is they are not
-//
-- (BOOL)gtm_compareWithStateAt:(NSString*)path;
-
-
-// Find the path for a state by name in your bundle.
-// Searches for:
-// "name.CompilerSDK.OSVersionMajor.OSVersionMinor.OSVersionBugFix.arch.extension"
-// "name.CompilerSDK.OSVersionMajor.OSVersionMinor.arch.extension"
-// "name.CompilerSDK.OSVersionMajor.arch.extension"
-// "name.CompilerSDK.arch.extension"
-// "name.CompilerSDK.OSVersionMajor.OSVersionMinor.OSVersionBugFix.extension"
-// "name.CompilerSDK.OSVersionMajor.OSVersionMinor.extension"
-// "name.CompilerSDK.OSVersionMajor.extension"
-// "name.CompilerSDK.extension"
-// "name.OSVersionMajor.OSVersionMinor.OSVersionBugFix.arch.extension"
-// "name.OSVersionMajor.OSVersionMinor.arch.extension"
-// "name.OSVersionMajor.arch.extension"
-// "name.arch.extension"
-// "name.OSVersionMajor.OSVersionMinor.OSVersionBugFix.extension"
-// "name.OSVersionMajor.OSVersionMinor.extension"
-// "name.OSVersionMajor.extension"
-// "name.extension"
-// Do not include the extension on your name.
-//
-// Args:
-// name: The name for the state file you would like to find.
-//
-// Returns:
-// the path if the state exists in your bundle
-// or nil if no state to be found
-//
-- (NSString *)gtm_pathForStateNamed:(NSString*)name;
-
-// Generates a path for a state in the save directory, which is desktop
-// by default.
-// Path will be:
-// SaveDir/|name|.arch.OSVersionMajor.OSVersionMinor.OSVersionBugfix.extension
-//
-// Args:
-// name: The name for the state file you would like to generate a path for.
-//
-// Returns:
-// the path
-//
-- (NSString *)gtm_saveToPathForStateNamed:(NSString*)name;
-
-// Gives us the encoded unit test state for |self|
-//
-// Returns:
-// the encoded state if successful
-// nil if failed
-//
-- (NSDictionary *)gtm_stateRepresentation;
-
-// Encodes the state of an object in a manner suitable for comparing
-// against a master state file so we can determine whether the
-// object is in a suitable state. Encode data in the coder in the same
-// manner that you would encode data in any other Keyed NSCoder subclass.
-//
-// Arguments:
-// inCoder - the coder to encode our state into
-- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder;
-@end
-
-// Informal protocol for delegates that wanst to be able to add state info
-// when state info is collected for their "owned" objects
-@interface NSObject (GTMUnitTestingEncodingAdditions)
-// Delegate function for unit test objects that have delegates. Delegates have
-// the option of encoding more data into the coder to store their state for
-// unittest usage.
-- (void)gtm_unitTestEncoderWillEncode:(id)sender inCoder:(NSCoder*)inCoder;
-@end
-
-// Whenever an object is encoded by the unit test encoder, it send out a
-// notification so that objects who want to add data to the encoded objects unit
-// test state can do so. The Coder will be in the userInfo dictionary for the
-// notification under the GTMUnitTestingEncoderKey key.
-GTM_EXTERN NSString *const GTMUnitTestingEncodedObjectNotification;
-
-// Key for finding the encoder in the userInfo dictionary for
-// GTMUnitTestingEncodedObjectNotification notifications.
-GTM_EXTERN NSString *const GTMUnitTestingEncoderKey;
diff --git a/UnitTesting/GTMNSObject+UnitTesting.m b/UnitTesting/GTMNSObject+UnitTesting.m
deleted file mode 100644
index 5b60a6d..0000000
--- a/UnitTesting/GTMNSObject+UnitTesting.m
+++ /dev/null
@@ -1,1047 +0,0 @@
-//
-// GTMNSObject+UnitTesting.m
-//
-// An informal protocol for doing advanced unittesting with objects.
-//
-// Copyright 2006-2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMNSObject+UnitTesting.h"
-#import "GTMSystemVersion.h"
-
-#if GTM_IPHONE_SDK
-#import <UIKit/UIKit.h>
-#else
-#import <AppKit/AppKit.h>
-#endif
-
-NSString *const GTMUnitTestingEncodedObjectNotification
- = @"GTMUnitTestingEncodedObjectNotification";
-NSString *const GTMUnitTestingEncoderKey = @"GTMUnitTestingEncoderKey";
-
-#if GTM_IPHONE_SDK
-// No UTIs on iPhone. Only two we need.
-const CFStringRef kUTTypePNG = CFSTR("public.png");
-const CFStringRef kUTTypeJPEG = CFSTR("public.jpeg");
-#endif
-
-// This class exists so that we can locate our bundle using [NSBundle
-// bundleForClass:]. We don't use [NSBundle mainBundle] because when we are
-// being run as a unit test, we aren't the mainBundle
-@interface GTMUnitTestingAdditionsBundleFinder : NSObject {
- // Nothing here
-}
-// or here
-@end
-
-@implementation GTMUnitTestingAdditionsBundleFinder
-// Nothing here. We're just interested in the name for finding our bundle.
-@end
-
-#if GTM_IPHONE_SDK
-static NSString *iOS_Idiom(void) {
- UIUserInterfaceIdiom idiom;
-#if __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_3_2
- idiom = [[UIDevice currentDevice] userInterfaceIdiom];
-#else
- idiom = UI_USER_INTERFACE_IDIOM();
-#endif
- if (idiom == UIUserInterfaceIdiomPad) {
- return @"iPad";
- }
- _GTMDevAssert((idiom == UIUserInterfaceIdiomPhone),
- @"unknown idiom %zd", idiom);
- return @"iPhone";
-}
-#endif // GTM_IPHONE_SDK
-
-BOOL GTMIsObjectImageEqualToImageNamed(id object,
- NSString* filename,
- NSString **error) {
- NSString *failString = nil;
- if (error) {
- *error = nil;
- }
- BOOL isGood = [object respondsToSelector:@selector(gtm_unitTestImage)];
- if (isGood) {
- if ([object gtm_areSystemSettingsValidForDoingImage]) {
- NSString *aPath = [object gtm_pathForImageNamed:filename];
- CGImageRef diff = nil;
- isGood = aPath != nil;
- if (isGood) {
- isGood = [object gtm_compareWithImageAt:aPath diffImage:&diff];
- }
- if (!isGood) {
- if (aPath) {
- filename = [filename stringByAppendingString:@"_Failed"];
- }
- BOOL aSaved = [object gtm_saveToImageNamed:filename];
- NSString *fileNameWithExtension
- = [NSString stringWithFormat:@"%@.%@",
- filename, [object gtm_imageExtension]];
- NSString *fullSavePath = [object gtm_saveToPathForImageNamed:filename];
- if (NO == aSaved) {
- if (!aPath) {
- failString = [NSString stringWithFormat:@"File %@ did not exist in "
- @"bundle. Tried to save as %@ and failed.",
- fileNameWithExtension, fullSavePath];
- } else {
- failString = [NSString stringWithFormat:@"Object image different "
- @"than file %@. Tried to save as %@ and failed.",
- aPath, fullSavePath];
- }
- } else {
- if (!aPath) {
- failString = [NSString stringWithFormat:@"File %@ did not exist in "
- @" bundle. Saved to %@", fileNameWithExtension,
- fullSavePath];
- } else {
- NSString *diffPath = [filename stringByAppendingString:@"_Diff"];
- diffPath = [object gtm_saveToPathForImageNamed:diffPath];
- NSData *data = nil;
- if (diff) {
- data = [object gtm_imageDataForImage:diff];
- }
- if ([data writeToFile:diffPath atomically:YES]) {
- failString = [NSString stringWithFormat:@"Object image different "
- @"than file\n%@\nSaved image to\n%@\n"
- @"Saved diff to\n%@\n",
- aPath, fullSavePath, diffPath];
- } else {
- failString = [NSString stringWithFormat:@"Object image different "
- @"than file\n%@\nSaved image to\n%@\nUnable to save "
- @"diff. Most likely the image and diff are "
- @"different sizes.",
- aPath, fullSavePath];
- }
- }
- }
- }
- CGImageRelease(diff);
- } else {
- failString = @"systemSettings not valid for taking image"; // COV_NF_LINE
- }
- } else {
- if (object == nil) {
- failString = @"Testing a nil image.";
- } else {
- failString = @"Object does not conform to GTMUnitTestingImaging protocol";
- }
- }
- if (error) {
- *error = failString;
- }
- return isGood;
-}
-
-BOOL GTMIsObjectStateEqualToStateNamed(id object,
- NSString* filename,
- NSString **error) {
- NSString *failString = nil;
- if (error) {
- *error = nil;
- }
- BOOL isGood = [object conformsToProtocol:@protocol(GTMUnitTestingEncoding)];
- if (isGood) {
- NSString *aPath = [object gtm_pathForStateNamed:filename];
- isGood = aPath != nil;
- if (isGood) {
- isGood = [object gtm_compareWithStateAt:aPath];
- }
- if (!isGood) {
- if (aPath) {
- filename = [filename stringByAppendingString:@"_Failed"];
- }
- BOOL aSaved = [object gtm_saveToStateNamed:filename];
- NSString *fileNameWithExtension = [NSString stringWithFormat:@"%@.%@",
- filename, [object gtm_stateExtension]];
- NSString *fullSavePath = [object gtm_saveToPathForStateNamed:filename];
- if (NO == aSaved) {
- if (!aPath) {
- failString = [NSString stringWithFormat:@"File %@ did not exist in "
- @"bundle. Tried to save as %@ and failed.",
- fileNameWithExtension, fullSavePath];
- } else {
- failString = [NSString stringWithFormat:@"Object state different "
- @"than file %@. Tried to save as %@ and failed.",
- aPath, fullSavePath];
- }
- } else {
- if (!aPath) {
- failString = [NSString stringWithFormat:@"File %@ did not exist in "
- @ "bundle. Saved to %@", fileNameWithExtension,
- fullSavePath];
- } else {
- failString = [NSString stringWithFormat:@"Object state different "
- @"than file %@. Saved to %@", aPath, fullSavePath];
- }
- }
- }
- } else {
- failString = @"Object does not conform to GTMUnitTestingEncoding protocol";
- }
- if (error) {
- *error = failString;
- }
- return isGood;
-}
-
-CGContextRef GTMCreateUnitTestBitmapContextOfSizeWithData(CGSize size,
- unsigned char **data) {
- CGContextRef context = NULL;
- size_t height = size.height;
- size_t width = size.width;
- size_t bytesPerRow = width * 4;
- size_t bitsPerComponent = 8;
- CGColorSpaceRef cs = NULL;
-#if GTM_IPHONE_SDK
- cs = CGColorSpaceCreateDeviceRGB();
-#else
- cs = CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB);
-#endif
- _GTMDevAssert(cs, @"Couldn't create colorspace");
- CGBitmapInfo info
- = kCGImageAlphaPremultipliedLast | kCGBitmapByteOrderDefault;
- if (data) {
- *data = (unsigned char*)calloc(bytesPerRow, height);
- _GTMDevAssert(*data, @"Couldn't create bitmap");
- }
- context = CGBitmapContextCreate(data ? *data : NULL, width, height,
- bitsPerComponent, bytesPerRow, cs, info);
- _GTMDevAssert(context, @"Couldn't create an context");
- if (!data) {
- CGContextClearRect(context, CGRectMake(0, 0, size.width, size.height));
- }
- CGContextSetRenderingIntent(context, kCGRenderingIntentRelativeColorimetric);
- CGContextSetInterpolationQuality(context, kCGInterpolationNone);
- CGContextSetShouldAntialias(context, NO);
- CGContextSetAllowsAntialiasing(context, NO);
- CGContextSetShouldSmoothFonts(context, NO);
- CGColorSpaceRelease(cs);
- return context;
-}
-
-@interface NSObject (GTMUnitTestingAdditionsPrivate)
-/// Find the path for a file named name.extension in your bundle.
-// Searches for the following:
-// "name.extension",
-// "name.arch.extension",
-// "name.arch.OSVersionMajor.extension"
-// "name.arch.OSVersionMajor.OSVersionMinor.extension"
-// "name.arch.OSVersionMajor.OSVersionMinor.OSVersion.bugfix.extension"
-// "name.arch.OSVersionMajor.extension"
-// "name.OSVersionMajor.arch.extension"
-// "name.OSVersionMajor.OSVersionMinor.arch.extension"
-// "name.OSVersionMajor.OSVersionMinor.OSVersion.bugfix.arch.extension"
-// "name.OSVersionMajor.extension"
-// "name.OSVersionMajor.OSVersionMinor.extension"
-// "name.OSVersionMajor.OSVersionMinor.OSVersion.bugfix.extension"
-// Do not include the ".extension" extension on your name.
-//
-// Args:
-// name: The name for the file you would like to find.
-// extension: the extension for the file you would like to find
-//
-// Returns:
-// the path if the file exists in your bundle
-// or nil if no file is found
-//
-- (NSString *)gtm_pathForFileNamed:(NSString*)name
- extension:(NSString*)extension;
-- (NSString *)gtm_saveToPathForFileNamed:(NSString*)name
- extension:(NSString*)extension;
-- (CGImageRef)gtm_unitTestImage;
-// Returns nil if there is no override
-- (NSString *)gtm_getOverrideDefaultUnitTestSaveToDirectory;
-@end
-
-// This is a keyed coder for storing unit test state data. It is used only by
-// the GTMUnitTestingAdditions category. Most of the work is done in
-// encodeObject:forKey:.
-@interface GTMUnitTestingKeyedCoder : NSCoder {
- NSMutableDictionary *dictionary_; // storage for data (STRONG)
-}
-
-// get the data stored in coder.
-//
-// Returns:
-// NSDictionary with currently stored data.
-- (NSDictionary*)dictionary;
-@end
-
-// Small utility function for checking to see if a is b +/- 1.
-GTM_INLINE BOOL almostEqual(unsigned char a, unsigned char b) {
- unsigned char diff = a > b ? a - b : b - a;
- BOOL notEqual = diff < 2;
- return notEqual;
-}
-
-@implementation GTMUnitTestingKeyedCoder
-
-// Set up storage for coder. Stores type and version.
-// Version 1
-//
-// Returns:
-// self
-- (id)init {
- self = [super init];
- if (self != nil) {
- dictionary_ = [[NSMutableDictionary alloc] initWithCapacity:2];
- [dictionary_ setObject:@"GTMUnitTestingArchive" forKey:@"$GTMArchive"];
-
- // Version number can be changed here.
- [dictionary_ setObject:[NSNumber numberWithInt:1] forKey:@"$GTMVersion"];
- }
- return self;
-}
-
-// Standard dealloc
-- (void)dealloc {
- [dictionary_ release];
- [super dealloc];
-}
-
-// Utility function for checking for a key value. We don't want duplicate keys
-// in any of our dictionaries as we may be writing over data stored by previous
-// objects.
-//
-// Arguments:
-// key - key to check for in dictionary
-- (void)checkForKey:(NSString*)key {
- _GTMDevAssert(![dictionary_ objectForKey:key],
- @"Key already exists for %@", key);
-}
-
-// Key routine for the encoder. We store objects in our dictionary based on
-// their key. As we encode objects we send out notifications to let other
-// classes doing tests add their specific data to the base types. If we can't
-// encode the object (it doesn't support gtm_unitTestEncodeState) and we don't
-// get any info back from the notifier, we attempt to store it's description.
-//
-// Arguments:
-// objv - object to be encoded
-// key - key to encode it with
-//
-- (void)encodeObject:(id)objv forKey:(NSString *)key {
- // Sanity checks
- if (!objv) return;
- [self checkForKey:key];
-
- // Set up a new dictionary for the current object
- NSMutableDictionary *curDictionary = dictionary_;
- dictionary_ = [[NSMutableDictionary alloc] initWithCapacity:0];
-
- // If objv responds to gtm_unitTestEncodeState get it to record
- // its data.
- if ([objv respondsToSelector:@selector(gtm_unitTestEncodeState:)]) {
- [objv gtm_unitTestEncodeState:self];
- }
-
- // We then send out a notification to let other folks
- // add data for this object
- NSDictionary *notificationDict
- = [NSDictionary dictionaryWithObject:self forKey:GTMUnitTestingEncoderKey];
- NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
- [nc postNotificationName:GTMUnitTestingEncodedObjectNotification
- object:objv
- userInfo:notificationDict];
-
- // If we got anything from the object, or from the notification, store it in
- // our dictionary. Otherwise store the description.
- if ([dictionary_ count] > 0) {
- [curDictionary setObject:dictionary_ forKey:key];
- } else {
- NSString *description = [objv description];
- // If description has a pointer value in it, we don't want to store it
- // as the pointer value can change from run to run
- if (description && [description rangeOfString:@"0x"].length == 0) {
- [curDictionary setObject:description forKey:key];
- } else {
- _GTMDevAssert(NO, @"Unable to encode forKey: %@", key); // COV_NF_LINE
- }
- }
- [dictionary_ release];
- dictionary_ = curDictionary;
-}
-
-// Basic encoding methods for POD types.
-//
-// Arguments:
-// *v - value to encode
-// key - key to encode it in
-
-- (void)encodeBool:(BOOL)boolv forKey:(NSString *)key {
- [self checkForKey:key];
- [dictionary_ setObject:[NSNumber numberWithBool:boolv] forKey:key];
-}
-
-- (void)encodeInt:(int)intv forKey:(NSString *)key {
- [self checkForKey:key];
- [dictionary_ setObject:[NSNumber numberWithInt:intv] forKey:key];
-}
-
-- (void)encodeInt32:(int32_t)intv forKey:(NSString *)key {
- [self checkForKey:key];
- [dictionary_ setObject:[NSNumber numberWithLong:intv] forKey:key];
-}
-
-- (void)encodeInt64:(int64_t)intv forKey:(NSString *)key {
- [self checkForKey:key];
- [dictionary_ setObject:[NSNumber numberWithLongLong:intv] forKey:key];
-}
-
-- (void)encodeFloat:(float)realv forKey:(NSString *)key {
- [self checkForKey:key];
- [dictionary_ setObject:[NSNumber numberWithFloat:realv] forKey:key];
-}
-
-- (void)encodeDouble:(double)realv forKey:(NSString *)key {
- [self checkForKey:key];
- [dictionary_ setObject:[NSNumber numberWithDouble:realv] forKey:key];
-}
-
-- (void)encodeBytes:(const uint8_t *)bytesp
- length:(NSUInteger)lenv
- forKey:(NSString *)key {
- [self checkForKey:key];
- [dictionary_ setObject:[NSData dataWithBytes:bytesp
- length:lenv]
- forKey:key];
-}
-
-// Get our storage back as an NSDictionary
-//
-// Returns:
-// NSDictionary containing our encoded info
--(NSDictionary*)dictionary {
- return [[dictionary_ retain] autorelease];
-}
-
-@end
-
-static NSString *gGTMUnitTestSaveToDirectory = nil;
-
-@implementation NSObject (GTMUnitTestingAdditions)
-
-+ (void)gtm_setUnitTestSaveToDirectory:(NSString*)path {
- @synchronized([self class]) {
- [gGTMUnitTestSaveToDirectory autorelease];
- gGTMUnitTestSaveToDirectory = [path copy];
- }
-}
-
-+ (NSString *)gtm_getUnitTestSaveToDirectory {
- NSString *result = nil;
- @synchronized([self class]) {
- if (!gGTMUnitTestSaveToDirectory) {
-#if GTM_IPHONE_SDK
- // About the only thing safe for the sandbox is the documents directory.
- NSArray *documentsDirs
- = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
- NSUserDomainMask, YES);
- gGTMUnitTestSaveToDirectory = [documentsDirs objectAtIndex:0];
-#else
- NSArray *desktopDirs
- = NSSearchPathForDirectoriesInDomains(NSDesktopDirectory,
- NSUserDomainMask,
- YES);
- gGTMUnitTestSaveToDirectory = [desktopDirs objectAtIndex:0];
-#endif
- // Did we get overridden?
- NSString *override = [self gtm_getOverrideDefaultUnitTestSaveToDirectory];
- if (override) {
- gGTMUnitTestSaveToDirectory = override;
- }
- [gGTMUnitTestSaveToDirectory retain];
- }
- result = gGTMUnitTestSaveToDirectory;
- }
-
- return result;
-}
-
-// Return nil if there is no override
-- (NSString *)gtm_getOverrideDefaultUnitTestSaveToDirectory {
- NSString *result = nil;
-
- // If we have an environment variable that ends in "BUILD_NUMBER" odds are
- // we're on an automated build system, so use the build products dir as an
- // override instead of writing on the desktop.
- NSDictionary *env = [[NSProcessInfo processInfo] environment];
- NSString *key;
- GTM_FOREACH_KEY(key, env) {
- if ([key hasSuffix:@"BUILD_NUMBER"]) {
- break;
- }
- }
- if (key) {
- result = [env objectForKey:@"BUILT_PRODUCTS_DIR"];
- }
-
- if (result && [result length] == 0) {
- result = nil;
- }
- return result;
-}
-
-/// Find the path for a file named name.extension in your bundle.
-// Searches for the following:
-// "name.CompilerSDK.OSVersionMajor.OSVersionMinor.OSVersionBugFix.arch.extension"
-// "name.CompilerSDK.OSVersionMajor.OSVersionMinor.arch.extension"
-// "name.CompilerSDK.OSVersionMajor.arch.extension"
-// "name.CompilerSDK.arch.extension"
-// "name.CompilerSDK.OSVersionMajor.OSVersionMinor.OSVersionBugFix.extension"
-// "name.CompilerSDK.OSVersionMajor.OSVersionMinor.extension"
-// "name.CompilerSDK.OSVersionMajor.extension"
-// "name.CompilerSDK.extension"
-// "name.OSVersionMajor.OSVersionMinor.OSVersionBugFix.arch.extension"
-// "name.OSVersionMajor.OSVersionMinor.arch.extension"
-// "name.OSVersionMajor.arch.extension"
-// "name.arch.extension"
-// "name.OSVersionMajor.OSVersionMinor.OSVersionBugFix.extension"
-// "name.OSVersionMajor.OSVersionMinor.extension"
-// "name.OSVersionMajor.extension"
-// "name.extension"
-// Do not include the ".extension" extension on your name.
-//
-// Args:
-// name: The name for the file you would like to find.
-// extension: the extension for the file you would like to find
-//
-// Returns:
-// the path if the file exists in your bundle
-// or nil if no file is found
-//
-- (NSString *)gtm_pathForFileNamed:(NSString*)name
- extension:(NSString*)extension {
- NSString *thePath = nil;
- Class bundleClass = [GTMUnitTestingAdditionsBundleFinder class];
- NSBundle *myBundle = [NSBundle bundleForClass:bundleClass];
- _GTMDevAssert(myBundle,
- @"Couldn't find bundle for class: %@ searching for file:%@.%@",
- NSStringFromClass(bundleClass), name, extension);
- // System Version
- SInt32 major, minor, bugFix;
- [GTMSystemVersion getMajor:&major minor:&minor bugFix:&bugFix];
- NSString *systemVersions[4];
- systemVersions[0] = [NSString stringWithFormat:@".%d.%d.%d",
- (int)major, (int)minor, (int)bugFix];
- systemVersions[1]
- = [NSString stringWithFormat:@".%d.%d", (int)major, (int)minor];
- systemVersions[2] = [NSString stringWithFormat:@".%d", (int)major];
- systemVersions[3] = @"";
- // Architecture
- NSString *architecture[2];
-#if GTM_IPHONE_SDK
- architecture[0]
- = [NSString stringWithFormat:@".%@", iOS_Idiom()];
-#else
- architecture[0]
- = [NSString stringWithFormat:@".%@",
- [GTMSystemVersion runtimeArchitecture]];
-#endif
- architecture[1] = @"";
- // Compiler SDK
- // Some times Apple changes how things work based on the SDK built against.
- NSString *sdks[2];
-#if GTM_MACOS_SDK
-# if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_7
- sdks[0] = @".10_7_SDK";
-# elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6
- sdks[0] = @".10_6_SDK";
-# elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
- sdks[0] = @".10_5_SDK";
-# elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_4
- sdks[0] = @".10_4_SDK";
-# elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_3
- sdks[0] = @".10_3_SDK";
-# elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_2
- sdks[0] = @".10_2_SDK";
-# elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_1
- sdks[0] = @".10_1_SDK";
-# else
- sdks[0] = @".10_0_SDK";
-# endif
-#else // !GTM_MACOS_SDK
-# if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_5_0
- sdks[0] = @".5_0_SDK";
-# elif __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_4_3
- sdks[0] = @".4_3_SDK";
-# else
- sdks[0] = @"";
-# endif
-#endif // GTM_MACOS_SDK
- sdks[1] = @"";
-
- // Note that we are searching for the most exact match first.
- for (size_t i = 0;
- !thePath && i < sizeof(sdks) / sizeof(*sdks);
- ++i) {
- for (size_t j = 0;
- !thePath && j < sizeof(architecture) / sizeof(*architecture);
- j++) {
- for (size_t k = 0;
- !thePath && k < sizeof(systemVersions) / sizeof(*systemVersions);
- k++) {
- NSString *fullName = [NSString stringWithFormat:@"%@%@%@%@",
- name, sdks[i], systemVersions[k], architecture[j]];
- thePath = [myBundle pathForResource:fullName ofType:extension];
- }
- }
- }
-
- return thePath;
-}
-
-- (NSString *)gtm_saveToPathForFileNamed:(NSString*)name
- extension:(NSString*)extension {
-#if GTM_IPHONE_SDK
- NSString *systemArchitecture = iOS_Idiom();
-#else
- NSString *systemArchitecture = [GTMSystemVersion runtimeArchitecture];
-#endif
-
- SInt32 major, minor, bugFix;
- [GTMSystemVersion getMajor:&major minor:&minor bugFix:&bugFix];
-
- // We don't include the CompilerSDK in here because it is not something that
- // that is commonly needed.
- NSString *fullName = [NSString stringWithFormat:@"%@.%d.%d.%d.%@",
- name, (int)major, (int)minor, (int)bugFix, systemArchitecture];
-
- NSString *basePath = [[self class] gtm_getUnitTestSaveToDirectory];
- return [[basePath stringByAppendingPathComponent:fullName]
- stringByAppendingPathExtension:extension];
-}
-
-#pragma mark UnitTestImage
-
-// Checks to see that system settings are valid for doing an image comparison.
-// To be overridden by subclasses.
-// Returns:
-// YES if we can do image comparisons for this object type.
-- (BOOL)gtm_areSystemSettingsValidForDoingImage {
- return YES;
-}
-
-- (CFStringRef)gtm_imageUTI {
-#if GTM_IPHONE_SDK
- return kUTTypePNG;
-#else
- // Currently can't use PNG on Leopard. (10.5.2)
- // Radar:5844618 PNG importer/exporter in ImageIO is lossy
- return kUTTypeTIFF;
-#endif
-}
-
-// Return the extension to be used for saving unittest images
-//
-// Returns
-// An extension (e.g. "png")
-- (NSString*)gtm_imageExtension {
- CFStringRef uti = [self gtm_imageUTI];
-#if GTM_IPHONE_SDK
- if (CFEqual(uti, kUTTypePNG)) {
- return @"png";
- } else if (CFEqual(uti, kUTTypeJPEG)) {
- return @"jpg";
- } else {
- _GTMDevAssert(NO, @"Illegal UTI for iPhone");
- }
- return nil;
-#else
- CFStringRef extension
- = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassFilenameExtension);
- _GTMDevAssert(extension, @"No extension for uti: %@", uti);
-
- return GTMCFAutorelease(extension);
-#endif
-}
-
-// Return image data in the format expected for gtm_imageExtension
-// So for a "png" extension I would expect "png" data
-//
-// Returns
-// NSData for image
-- (NSData*)gtm_imageDataForImage:(CGImageRef)image {
- NSData *data = nil;
-#if GTM_IPHONE_SDK
- // iPhone support
- UIImage *uiImage = [UIImage imageWithCGImage:image];
- CFStringRef uti = [self gtm_imageUTI];
- if (CFEqual(uti, kUTTypePNG)) {
- data = UIImagePNGRepresentation(uiImage);
- } else if (CFEqual(uti, kUTTypeJPEG)) {
- data = UIImageJPEGRepresentation(uiImage, 1.0f);
- } else {
- _GTMDevAssert(NO, @"Illegal UTI for iPhone");
- }
-#else
- data = [NSMutableData data];
- CGImageDestinationRef dest
- = CGImageDestinationCreateWithData((CFMutableDataRef)data,
- [self gtm_imageUTI],
- 1,
- NULL);
- // LZW Compression for TIFF
- NSDictionary *tiffDict
- = [NSDictionary dictionaryWithObjectsAndKeys:
- [NSNumber gtm_numberWithUnsignedInteger:NSTIFFCompressionLZW],
- (const NSString*)kCGImagePropertyTIFFCompression,
- nil];
- NSDictionary *destProps
- = [NSDictionary dictionaryWithObjectsAndKeys:
- [NSNumber numberWithFloat:1.0f],
- (const NSString*)kCGImageDestinationLossyCompressionQuality,
- tiffDict,
- (const NSString*)kCGImagePropertyTIFFDictionary,
- nil];
- CGImageDestinationAddImage(dest, image, (CFDictionaryRef)destProps);
- CGImageDestinationFinalize(dest);
- CFRelease(dest);
-#endif
- return data;
-
-}
-
-// Save the unitTestImage to an image file with name |name| at
-// ~/Desktop/|name|.extension.
-//
-// Note: When running under Pulse automation output is redirected to the
-// Pulse base directory.
-//
-// Args:
-// name: The name for the image file you would like saved.
-//
-// Returns:
-// YES if the file was successfully saved.
-//
-- (BOOL)gtm_saveToImageNamed:(NSString*)name {
- NSString *newPath = [self gtm_saveToPathForImageNamed:name];
- return [self gtm_saveToImageAt:newPath];
-}
-
-// Save unitTestImage of |self| to an image file at path |path|.
-//
-// Args:
-// name: The name for the image file you would like saved.
-//
-// Returns:
-// YES if the file was successfully saved.
-//
-- (BOOL)gtm_saveToImageAt:(NSString*)path {
- if (!path) return NO;
- NSData *data = [self gtm_imageRepresentation];
- return [data writeToFile:path atomically:YES];
-}
-
-// Generates a CGImageRef from the image at |path|
-// Args:
-// path: The path to the image.
-//
-// Returns:
-// A CGImageRef that you own, or nil if no image at path
-- (CGImageRef)gtm_imageWithContentsOfFile:(NSString*)path {
- CGImageRef imageRef = nil;
-#if GTM_IPHONE_SDK
- UIImage *image = [UIImage imageWithContentsOfFile:path];
- if (image) {
- imageRef = CGImageRetain(image.CGImage);
- }
-#else
- CFURLRef url = CFURLCreateWithFileSystemPath(NULL, (CFStringRef)path,
- kCFURLPOSIXPathStyle, NO);
- if (url) {
- CGImageSourceRef imageSource = CGImageSourceCreateWithURL(url, NULL);
- CFRelease(url);
- if (imageSource) {
- imageRef = CGImageSourceCreateImageAtIndex(imageSource, 0, NULL);
- CFRelease(imageSource);
- }
- }
-#endif
- return (CGImageRef)GTMCFAutorelease(imageRef);
-}
-
-/// Compares unitTestImage of |self| to the image located at |path|
-//
-// Args:
-// path: the path to the image file you want to compare against.
-// If diff is non-nil, it will contain an auto-released diff of the images.
-//
-// Returns:
-// YES if they are equal, NO is they are not
-// If diff is non-nil, it will contain an auto-released diff of the images.
-//
-- (BOOL)gtm_compareWithImageAt:(NSString*)path diffImage:(CGImageRef*)diff {
- BOOL answer = NO;
- if (diff) {
- *diff = nil;
- }
- CGImageRef fileRep = [self gtm_imageWithContentsOfFile:path];
- _GTMDevAssert(fileRep, @"Unable to create imagerep from %@", path);
-
- CGImageRef imageRep = [self gtm_unitTestImage];
- _GTMDevAssert(imageRep, @"Unable to create imagerep for %@", self);
-
- size_t fileHeight = CGImageGetHeight(fileRep);
- size_t fileWidth = CGImageGetWidth(fileRep);
- size_t imageHeight = CGImageGetHeight(imageRep);
- size_t imageWidth = CGImageGetWidth(imageRep);
- if (fileHeight == imageHeight && fileWidth == imageWidth) {
- // if all the sizes are equal, run through the bytes and compare
- // them for equality.
- // Do an initial fast check, if this fails and the caller wants a
- // diff, we'll do the slow path and create the diff. The diff path
- // could be optimized, but probably not necessary at this point.
- answer = YES;
-
- CGSize imageSize = CGSizeMake(fileWidth, fileHeight);
- CGRect imageRect = CGRectMake(0, 0, fileWidth, fileHeight);
- unsigned char *fileData;
- unsigned char *imageData;
- CGContextRef fileContext
- = GTMCreateUnitTestBitmapContextOfSizeWithData(imageSize, &fileData);
- _GTMDevAssert(fileContext, @"Unable to create filecontext");
- CGContextDrawImage(fileContext, imageRect, fileRep);
- CGContextRef imageContext
- = GTMCreateUnitTestBitmapContextOfSizeWithData(imageSize, &imageData);
- _GTMDevAssert(imageContext, @"Unable to create imageContext");
- CGContextDrawImage(imageContext, imageRect, imageRep);
-
- size_t fileBytesPerRow = CGBitmapContextGetBytesPerRow(fileContext);
- size_t imageBytesPerRow = CGBitmapContextGetBytesPerRow(imageContext);
- size_t row, col;
-
- _GTMDevAssert(imageWidth * 4 <= imageBytesPerRow,
- @"We expect image data to be 32bit RGBA");
-
- for (row = 0; row < fileHeight && answer; row++) {
- answer = memcmp(fileData + fileBytesPerRow * row,
- imageData + imageBytesPerRow * row,
- imageWidth * 4) == 0;
- }
- if (!answer && diff) {
- answer = YES;
- unsigned char *diffData;
- CGContextRef diffContext
- = GTMCreateUnitTestBitmapContextOfSizeWithData(imageSize, &diffData);
- _GTMDevAssert(diffContext, @"Can't make diff context");
- size_t diffRowBytes = CGBitmapContextGetBytesPerRow(diffContext);
- for (row = 0; row < imageHeight; row++) {
- uint32_t *imageRow = (uint32_t*)(imageData + imageBytesPerRow * row);
- uint32_t *fileRow = (uint32_t*)(fileData + fileBytesPerRow * row);
- uint32_t* diffRow = (uint32_t*)(diffData + diffRowBytes * row);
- for (col = 0; col < imageWidth; col++) {
- uint32_t imageColor = imageRow[col];
- uint32_t fileColor = fileRow[col];
-
- unsigned char imageAlpha = imageColor & 0xF;
- unsigned char imageBlue = imageColor >> 8 & 0xF;
- unsigned char imageGreen = imageColor >> 16 & 0xF;
- unsigned char imageRed = imageColor >> 24 & 0xF;
- unsigned char fileAlpha = fileColor & 0xF;
- unsigned char fileBlue = fileColor >> 8 & 0xF;
- unsigned char fileGreen = fileColor >> 16 & 0xF;
- unsigned char fileRed = fileColor >> 24 & 0xF;
-
- // Check to see if color is almost right.
- // No matter how hard I've tried, I've still gotten occasionally
- // screwed over by colorspaces not mapping correctly, and small
- // sampling errors coming in. This appears to work for most cases.
- // Almost equal is defined to check within 1% on all components.
- BOOL equal = almostEqual(imageRed, fileRed) &&
- almostEqual(imageGreen, fileGreen) &&
- almostEqual(imageBlue, fileBlue) &&
- almostEqual(imageAlpha, fileAlpha);
- answer &= equal;
- if (diff) {
- uint32_t newColor;
- if (equal) {
- newColor = (((uint32_t)imageRed) << 24) +
- (((uint32_t)imageGreen) << 16) +
- (((uint32_t)imageBlue) << 8) +
- (((uint32_t)imageAlpha) / 2);
- } else {
- newColor = 0xFF0000FF;
- }
- diffRow[col] = newColor;
- }
- }
- }
- *diff = CGBitmapContextCreateImage(diffContext);
- free(diffData);
- CFRelease(diffContext);
- }
- free(fileData);
- CFRelease(fileContext);
- free(imageData);
- CFRelease(imageContext);
- }
- return answer;
-}
-
-// Find the path for an image by name in your bundle.
-// Do not include the extension on your name.
-//
-// Args:
-// name: The name for the image file you would like to find.
-//
-// Returns:
-// the path if the image exists in your bundle
-// or nil if no image to be found
-//
-- (NSString *)gtm_pathForImageNamed:(NSString*)name {
- return [self gtm_pathForFileNamed:name
- extension:[self gtm_imageExtension]];
-}
-
-- (NSString *)gtm_saveToPathForImageNamed:(NSString*)name {
- return [self gtm_saveToPathForFileNamed:name
- extension:[self gtm_imageExtension]];
-}
-
-// Gives us a representation of unitTestImage of |self|.
-//
-// Returns:
-// a representation of image if successful
-// nil if failed
-//
-- (NSData *)gtm_imageRepresentation {
- CGImageRef imageRep = [self gtm_unitTestImage];
- NSData *data = [self gtm_imageDataForImage:imageRep];
- _GTMDevAssert(data, @"unable to create %@ from %@",
- [self gtm_imageExtension], self);
- return data;
-}
-
-#pragma mark UnitTestState
-
-// Return the extension to be used for saving unittest states
-//
-// Returns
-// An extension (e.g. "gtmUTState")
-- (NSString*)gtm_stateExtension {
- return @"gtmUTState";
-}
-
-// Save the encoded unit test state to a state file with name |name| at
-// ~/Desktop/|name|.extension.
-//
-// Note: When running under Pulse automation output is redirected to the
-// Pulse base directory.
-//
-// Args:
-// name: The name for the state file you would like saved.
-//
-// Returns:
-// YES if the file was successfully saved.
-//
-- (BOOL)gtm_saveToStateNamed:(NSString*)name {
- NSString *newPath = [self gtm_saveToPathForStateNamed:name];
- return [self gtm_saveToStateAt:newPath];
-}
-
-// Save encoded unit test state of |self| to a state file at path |path|.
-//
-// Args:
-// name: The name for the state file you would like saved.
-//
-// Returns:
-// YES if the file was successfully saved.
-//
-- (BOOL)gtm_saveToStateAt:(NSString*)path {
- if (!path) return NO;
- NSDictionary *dictionary = [self gtm_stateRepresentation];
- return [dictionary writeToFile:path atomically:YES];
-}
-
-// Compares encoded unit test state of |self| to the state file located at
-// |path|
-//
-// Args:
-// path: the path to the state file you want to compare against.
-//
-// Returns:
-// YES if they are equal, NO is they are not
-//
-- (BOOL)gtm_compareWithStateAt:(NSString*)path {
- NSDictionary *masterDict = [NSDictionary dictionaryWithContentsOfFile:path];
- _GTMDevAssert(masterDict, @"Unable to create dictionary from %@", path);
- NSDictionary *selfDict = [self gtm_stateRepresentation];
- return [selfDict isEqual: masterDict];
-}
-
-// Find the path for a state by name in your bundle.
-// Do not include the extension.
-//
-// Args:
-// name: The name for the state file you would like to find.
-//
-// Returns:
-// the path if the state exists in your bundle
-// or nil if no state to be found
-//
-- (NSString *)gtm_pathForStateNamed:(NSString*)name {
- return [self gtm_pathForFileNamed:name extension:[self gtm_stateExtension]];
-}
-
-- (NSString *)gtm_saveToPathForStateNamed:(NSString*)name {
- return [self gtm_saveToPathForFileNamed:name
- extension:[self gtm_stateExtension]];
-}
-
-// Gives us the encoded unit test state |self|
-//
-// Returns:
-// the encoded state if successful
-// nil if failed
-//
-- (NSDictionary *)gtm_stateRepresentation {
- NSDictionary *dictionary = nil;
- if ([self conformsToProtocol:@protocol(GTMUnitTestingEncoding)]) {
- id<GTMUnitTestingEncoding> encoder = (id<GTMUnitTestingEncoding>)self;
- GTMUnitTestingKeyedCoder *archiver;
- archiver = [[[GTMUnitTestingKeyedCoder alloc] init] autorelease];
- [encoder gtm_unitTestEncodeState:archiver];
- dictionary = [archiver dictionary];
- }
- return dictionary;
-}
-
-// Encodes the state of an object in a manner suitable for comparing
-// against a master state file so we can determine whether the
-// object is in a suitable state. Encode data in the coder in the same
-// manner that you would encode data in any other Keyed NSCoder subclass.
-//
-// Arguments:
-// inCoder - the coder to encode our state into
-- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder {
- // All impls of gtm_unitTestEncodeState
- // should be calling [super gtm_unitTestEncodeState] as their first action.
- _GTMDevAssert([inCoder isKindOfClass:[GTMUnitTestingKeyedCoder class]],
- @"Coder must be of kind GTMUnitTestingKeyedCoder");
-
- // If the object has a delegate, give it a chance to respond
- if ([self respondsToSelector:@selector(delegate)]) {
- id delegate = [self performSelector:@selector(delegate)];
- if (delegate &&
- [delegate respondsToSelector:@selector(gtm_unitTestEncoderWillEncode:inCoder:)]) {
- [delegate gtm_unitTestEncoderWillEncode:self inCoder:inCoder];
- }
- }
-}
-
-@end
diff --git a/UnitTesting/GTMSenTestCase.h b/UnitTesting/GTMSenTestCase.h
index a96cb20..6b7198b 100644
--- a/UnitTesting/GTMSenTestCase.h
+++ b/UnitTesting/GTMSenTestCase.h
@@ -90,7 +90,7 @@
#define _XCExceptionFormatString @"throwing \"%@\""
#define _XCUnknownExceptionString @"throwing an unknown exception"
-#if defined(__IPHONE_8_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_8_0
+#if (defined(__IPHONE_8_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_8_0) || (GTM_MACOS_SDK == 1)
// They changed the call to _XCTRegisterFailure in iOS 8. Once we no longer need to support
// the iOS 7 SDK, we can remove this.
#define _GTMXCRegisterFailure(expression, format...) _XCTRegisterFailure(self, expression, format)
@@ -111,7 +111,7 @@
@try { \
__typeof__(a1) _a1value = (a1); \
if (_a1value != noErr) { \
- _failure = [NSString stringWithFormat:@"%ld != noErr", (long)_a1value]; \
+ _failure = [NSString stringWithFormat:@"%d != noErr", (int)_a1value]; \
} \
} \
@catch (NSException *_exception) { \
@@ -142,7 +142,7 @@
__typeof__(a1) _a1value = (a1); \
__typeof__(a2) _a2value = (a2); \
if (_a1value != _a2value) { \
- _failure = [NSString stringWithFormat:@"(%ld) != (%ld)", (long)_a1value, (long)_a2value]; \
+ _failure = [NSString stringWithFormat:@"(%d) != (%d)", (int)_a1value, (int)_a2value]; \
} \
} \
@catch (NSException *_exception) { \
@@ -152,7 +152,7 @@
_failure = @": " _XCUnknownExceptionString; \
} \
if (_failure) { \
- NSString *_expression = [NSString stringWithFormat:@"((%@) != (@%)) failed %@", @#a1, @#a2, _failure]; \
+ NSString *_expression = [NSString stringWithFormat:@"((%@) != (%@)) failed %@", @#a1, @#a2, _failure]; \
_GTMXCRegisterFailure(_expression, format); \
} \
})
@@ -734,12 +734,12 @@ do { \
// SENTE_BEGIN
/*" Generates a failure when !{ [a1 isEqualTo:a2] } is false
- (or one is nil and the other is not).
- _{a1 The object on the left.}
- _{a2 The object on the right.}
- _{description A format string as in the printf() function. Can be nil or
- an empty string but must be present.}
- _{... A variable number of arguments to the format string. Can be absent.}
+ (or one is nil and the other is not).
+ _{a1 The object on the left.}
+ _{a2 The object on the right.}
+ _{description A format string as in the printf() function. Can be nil or
+ an empty string but must be present.}
+ _{... A variable number of arguments to the format string. Can be absent.}
"*/
#define STAssertEqualObjects(a1, a2, description, ...) \
do { \
diff --git a/UnitTesting/GTMSenTestCase.m b/UnitTesting/GTMSenTestCase.m
index b7a59a3..5236c51 100644
--- a/UnitTesting/GTMSenTestCase.m
+++ b/UnitTesting/GTMSenTestCase.m
@@ -19,12 +19,7 @@
#import "GTMSenTestCase.h"
#import <unistd.h>
-#if GTM_IPHONE_SIMULATOR
#import <objc/message.h>
-#endif
-
-#import "GTMObjC2Runtime.h"
-#import "GTMUnitTestDevLog.h"
#if GTM_IPHONE_SDK
#import <UIKit/UIKit.h>
@@ -401,22 +396,6 @@ static NSInteger MethodSort(id a, id b, void *context) {
@implementation GTMTestCase
-- (void)invokeTest {
- NSAutoreleasePool *localPool = [[NSAutoreleasePool alloc] init];
- Class devLogClass = NSClassFromString(@"GTMUnitTestDevLog");
- if (devLogClass) {
- [devLogClass performSelector:@selector(enableTracking)];
- [devLogClass performSelector:@selector(verifyNoMoreLogsExpected)];
-
- }
- [super invokeTest];
- if (devLogClass) {
- [devLogClass performSelector:@selector(verifyNoMoreLogsExpected)];
- [devLogClass performSelector:@selector(disableTracking)];
- }
- [localPool drain];
-}
-
+ (BOOL)isAbstractTestCase {
NSString *name = NSStringFromClass(self);
return [name rangeOfString:@"AbstractTest"].location != NSNotFound;
diff --git a/UnitTesting/GTMSenTestCaseTest.m b/UnitTesting/GTMSenTestCaseTest.m
index 9d9a594..33055ad 100644
--- a/UnitTesting/GTMSenTestCaseTest.m
+++ b/UnitTesting/GTMSenTestCaseTest.m
@@ -16,6 +16,15 @@
// the License.
//
+#import "GTMDefines.h"
+
+// This test currently executes under XCTest and under the GTM SenTest replacement.
+#if !GTM_USING_XCTEST
+#define XCTAssertFalse STAssertFalse
+#define XCTAssertEqual STAssertEquals
+#define XCTAssertTrue STAssertTrue
+#endif // !GTM_USING_XCTEST
+
#import "GTMSenTestCase.h"
// These make use of the fact that methods are run in alphebetical order
@@ -39,8 +48,8 @@ static int gZzCheckCalls_ = 0;
@implementation GTMTestingAbstractTest
- (void)testAbstractUnitTest {
- STAssertFalse([self isMemberOfClass:[GTMTestingAbstractTest class]],
- @"test should not run on the abstract class");
+ XCTAssertFalse([self isMemberOfClass:[GTMTestingAbstractTest class]],
+ @"test should not run on the abstract class");
++gAbstractCalls_;
}
@@ -51,11 +60,12 @@ static int gZzCheckCalls_ = 0;
- (void)testZZCheck {
++gZzCheckCalls_;
if ([self isMemberOfClass:[GTMTestingTestOne class]]) {
- STAssertEquals(gAbstractCalls_, 1,
+ XCTAssertEqual(gAbstractCalls_, 1,
@"wrong number of abstract calls at this point");
} else {
- STAssertTrue([self isMemberOfClass:[GTMTestingTestTwo class]], nil);
- STAssertEquals(gAbstractCalls_, 2,
+ XCTAssertTrue([self isMemberOfClass:[GTMTestingTestTwo class]],
+ @"Not member of class");
+ XCTAssertEqual(gAbstractCalls_, 2,
@"wrong number of abstract calls at this point");
}
}
@@ -66,7 +76,7 @@ static int gZzCheckCalls_ = 0;
- (void)testZZZCheck {
// Test defined at this leaf, it should always run, check on the other methods.
- STAssertEquals(gZzCheckCalls_, 2, @"the parent class method wasn't called");
+ XCTAssertEqual(gZzCheckCalls_, 2, @"the parent class method wasn't called");
}
@end
diff --git a/UnitTesting/GTMTestTimerTest.m b/UnitTesting/GTMTestTimerTest.m
index 86f9d22..27758ff 100644
--- a/UnitTesting/GTMTestTimerTest.m
+++ b/UnitTesting/GTMTestTimerTest.m
@@ -6,9 +6,9 @@
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy
// of the License at
-//
+//
// http://www.apache.org/licenses/LICENSE-2.0
-//
+//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
@@ -25,32 +25,32 @@
@implementation GTMTestTimerTest
- (void)testTimer {
GTMTestTimer *timer = GTMTestTimerCreate();
- STAssertNotNULL(timer, nil);
+ XCTAssertNotNULL(timer);
GTMTestTimerRetain(timer);
GTMTestTimerRelease(timer);
- STAssertEqualsWithAccuracy(GTMTestTimerGetSeconds(timer), 0.0, 0.0, nil);
+ XCTAssertEqualWithAccuracy(GTMTestTimerGetSeconds(timer), 0.0, 0.0);
GTMTestTimerStart(timer);
- STAssertTrue(GTMTestTimerIsRunning(timer), nil);
+ XCTAssertTrue(GTMTestTimerIsRunning(timer));
NSRunLoop *loop = [NSRunLoop currentRunLoop];
[loop runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
GTMTestTimerStop(timer);
-
- // We use greater than (and an almost absurd less than) because
+
+ // We use greater than (and an almost absurd less than) because
// these tests are very dependant on machine load, and we don't want
// automated tests reporting false negatives.
- STAssertGreaterThan(GTMTestTimerGetSeconds(timer), 0.1, nil);
- STAssertGreaterThan(GTMTestTimerGetMilliseconds(timer), 100.0,nil);
- STAssertGreaterThan(GTMTestTimerGetMicroseconds(timer), 100000.0, nil);
-
+ XCTAssertGreaterThan(GTMTestTimerGetSeconds(timer), 0.1);
+ XCTAssertGreaterThan(GTMTestTimerGetMilliseconds(timer), 100.0);
+ XCTAssertGreaterThan(GTMTestTimerGetMicroseconds(timer), 100000.0);
+
// Check to make sure we're not WAY off the mark (by a factor of 10)
- STAssertLessThan(GTMTestTimerGetMicroseconds(timer), 1000000.0, nil);
-
+ XCTAssertLessThan(GTMTestTimerGetMicroseconds(timer), 1000000.0);
+
[loop runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
GTMTestTimerStart(timer);
[loop runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
- STAssertGreaterThan(GTMTestTimerGetSeconds(timer), 0.2, nil);
+ XCTAssertGreaterThan(GTMTestTimerGetSeconds(timer), 0.2);
GTMTestTimerStop(timer);
- STAssertEquals(GTMTestTimerGetIterations(timer), (NSUInteger)2, nil);
+ XCTAssertEqual(GTMTestTimerGetIterations(timer), (NSUInteger)2);
GTMTestTimerRelease(timer);
}
@end
diff --git a/UnitTesting/GTMUIKit+UnitTesting.h b/UnitTesting/GTMUIKit+UnitTesting.h
deleted file mode 100644
index a9052f2..0000000
--- a/UnitTesting/GTMUIKit+UnitTesting.h
+++ /dev/null
@@ -1,128 +0,0 @@
-//
-// GTMUIKit+UnitTesting.h
-//
-// Code for making unit testing of graphics/UI easier. Generally you
-// will only want to look at the macros:
-// GTMAssertDrawingEqualToFile
-// GTMAssertViewRepEqualToFile
-// and the protocol GTMUnitTestViewDrawer. When using these routines
-// make sure you are using device colors and not calibrated/generic colors
-// or else your test graphics WILL NOT match across devices/graphics cards.
-//
-// Copyright 2006-2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import <UIKit/UIKit.h>
-#import "GTMNSObject+UnitTesting.h"
-
-@protocol GTMUnitTestViewDrawer;
-
-// Fails when the |a1|'s drawing in an area |a2| does not equal the image file named |a3|.
-// See the description of the GTMAssertViewRepEqualToFile macro
-// to understand how |a3| is found and written out.
-// See the description of the GTMUnitTestView for a better idea
-// how the view works.
-// Implemented as a macro to match the rest of the SenTest macros.
-//
-// Args:
-// a1: The object that implements the GTMUnitTestViewDrawer protocol
-// that is doing the drawing.
-// a2: The size of the drawing
-// a3: The name of the image file to check against.
-// Do not include the extension
-// a4: contextInfo to pass to drawer
-// description: A format string as in the printf() function.
-// Can be nil or an empty string but must be present.
-// ...: A variable number of arguments to the format string. Can be absent.
-//
-
-#define GTMAssertDrawingEqualToFile(a1, a2, a3, a4, description, ...) \
- do { \
- id<GTMUnitTestViewDrawer> a1Drawer = (a1); \
- CGSize a2Size = (a2); \
- NSString* a3String = (a3); \
- void *a4ContextInfo = (a4); \
- CGRect frame = CGRectMake(0, 0, a2Size.width, a2Size.height); \
- GTMUnitTestView *view = [[[GTMUnitTestView alloc] initWithFrame:frame drawer:a1Drawer contextInfo:a4ContextInfo] autorelease]; \
- GTMAssertObjectImageEqualToImageNamed(view, a3String, @"%@", STComposeString(description, ##__VA_ARGS__)); \
- } while(0)
-
-// Category for making unit testing of graphics/UI easier.
-
-// Allows you to take a state of a view. Supports both image and state.
-// See GTMNSObject+UnitTesting.h for details.
-@interface UIView (GTMUnitTestingAdditions) <GTMUnitTestingImaging>
-
-// Encodes the state of an object in a manner suitable for comparing against a master state file
-// This enables us to determine whether the object is in a suitable state.
-//
-// Arguments:
-// inCoder - the coder to encode our state into
-- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder;
-
-// Returns whether gtm_unitTestEncodeState should recurse into subviews
-//
-// Returns:
-// should gtm_unitTestEncodeState pick up subview state.
-- (BOOL)gtm_shouldEncodeStateForSubviews;
-@end
-
-// Category to help UIImage testing. UIImage can be tested using
-// GTMAssertObjectImageEqualToImageNamed macro, which automatically creates
-// result images and diff images in case test fails.
-@interface UIImage (GTMUnitTestingAdditions) <GTMUnitTestingImaging>
-@end
-
-// A view that allows you to delegate out drawing using the formal
-// GTMUnitTestViewDelegate protocol
-// This is useful when writing up unit tests for visual elements.
-// Your test will often end up looking like this:
-// - (void)testFoo {
-// GTMAssertDrawingEqualToFile(self, CGSizeMake(200, 200), @"Foo", nil, nil);
-// }
-// and your testSuite will also implement the unitTestViewDrawRect method to do
-// it's actual drawing. The above creates a view of size 200x200 that draws
-// it's content using |self|'s unitTestViewDrawRect method and compares it to
-// the contents of the file Foo.tif to make sure it's valid
-@interface GTMUnitTestView : UIView {
- @private
- id<GTMUnitTestViewDrawer> drawer_; // delegate for doing drawing (STRONG)
- void* contextInfo_; // info passed in by user for them to use when drawing
-}
-
-// Create a GTMUnitTestView.
-//
-// Args:
-// rect: the area to draw.
-// drawer: the object that will do the drawing via the GTMUnitTestViewDrawer
-// protocol
-// contextInfo:
-- (id)initWithFrame:(CGRect)frame drawer:(id<GTMUnitTestViewDrawer>)drawer contextInfo:(void*)contextInfo;
-
-@end
-
-/// \cond Protocols
-
-// Formal protocol for doing unit testing of views. See description of
-// GTMUnitTestView for details.
-@protocol GTMUnitTestViewDrawer <NSObject>
-
-// Draw the view. Equivalent to drawRect on a standard UIView.
-//
-// Args:
-// rect: the area to draw.
-- (void)gtm_unitTestViewDrawRect:(CGRect)rect contextInfo:(void*)contextInfo;
-
-@end
diff --git a/UnitTesting/GTMUIKit+UnitTesting.m b/UnitTesting/GTMUIKit+UnitTesting.m
deleted file mode 100644
index 7d3f200..0000000
--- a/UnitTesting/GTMUIKit+UnitTesting.m
+++ /dev/null
@@ -1,122 +0,0 @@
-//
-// GTMUIKit+UnitTesting.m
-//
-// Category for making unit testing of graphics/UI easier.
-// Allows you to save a view out to a image file, and compare a view
-// with a previously stored representation to make sure it hasn't changed.
-//
-// Copyright 2006-2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMUIKit+UnitTesting.h"
-#import "GTMCALayer+UnitTesting.h"
-#import "GTMDefines.h"
-
-#if !GTM_IPHONE_SDK
-#error This file is for iPhone use only
-#endif // GTM_IPHONE_SDK
-
-// A view that allows you to delegate out drawing using the formal
-// GTMUnitTestViewDelegate protocol above. This is useful when writing up unit
-// tests for visual elements.
-// Your test will often end up looking like this:
-// - (void)testFoo {
-// GTMAssertDrawingEqualToFile(self, CGSizeMake(200, 200), @"Foo", nil, nil);
-// }
-// and your testSuite will also implement the unitTestViewDrawRect method to do
-// it's actual drawing. The above creates a view of size 200x200 that draws
-// it's content using |self|'s unitTestViewDrawRect method and compares it to
-// the contents of the file Foo.tif to make sure it's valid
-@implementation GTMUnitTestView
-
-- (id)initWithFrame:(CGRect)frame
- drawer:(id<GTMUnitTestViewDrawer>)drawer
- contextInfo:(void*)contextInfo{
- self = [super initWithFrame:frame];
- if (self != nil) {
- drawer_ = [drawer retain];
- contextInfo_ = contextInfo;
- }
- return self;
-}
-
-- (void)dealloc {
- [drawer_ release];
- [super dealloc];
-}
-
-- (void)drawRect:(CGRect)rect {
- [drawer_ gtm_unitTestViewDrawRect:rect contextInfo:contextInfo_];
-}
-
-@end
-
-@implementation UIView (GTMUnitTestingAdditions)
-
-// Returns an image containing a representation of the object
-// suitable for use in comparing against a master image.
-// NB this means that all colors should be from "NSDevice" color space
-// Does all of it's drawing with smoothfonts and antialiasing off
-// to avoid issues with font smoothing settings and antialias differences
-// between ppc and x86.
-//
-// Returns:
-// an image of the object
-- (CGImageRef)gtm_unitTestImage {
- CALayer* layer = [self layer];
- return [layer gtm_unitTestImage];
-}
-
-// Encodes the state of an object in a manner suitable for comparing
-// against a master state file so we can determine whether the
-// object is in a suitable state.
-//
-// Arguments:
-// inCoder - the coder to encode our state into
-- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder {
- [super gtm_unitTestEncodeState:inCoder];
- [inCoder encodeBool:[self isHidden] forKey:@"ViewIsHidden"];
- CALayer* layer = [self layer];
- if (layer) {
- [layer gtm_unitTestEncodeState:inCoder];
- }
- if ([self gtm_shouldEncodeStateForSubviews]) {
- int i = 0;
- for (UIView *subview in [self subviews]) {
- [inCoder encodeObject:subview
- forKey:[NSString stringWithFormat:@"ViewSubView %d", i]];
- i++;
- }
- }
-}
-
-// Returns whether gtm_unitTestEncodeState should recurse into subviews
-//
-// Returns:
-// should gtm_unitTestEncodeState pick up subview state.
-- (BOOL)gtm_shouldEncodeStateForSubviews {
- return YES;
-}
-
-- (BOOL)gtm_shouldEncodeStateForSublayersOfLayer:(CALayer*)layer {
- return NO;
-}
-@end
-
-@implementation UIImage (GTMUnitTestingAdditions)
-- (CGImageRef)gtm_unitTestImage {
- return [self CGImage];
-}
-@end
diff --git a/UnitTesting/GTMUIKit+UnitTestingTest.m b/UnitTesting/GTMUIKit+UnitTestingTest.m
deleted file mode 100644
index 4b0387c..0000000
--- a/UnitTesting/GTMUIKit+UnitTestingTest.m
+++ /dev/null
@@ -1,67 +0,0 @@
-//
-// GTMUIKit+UnitTestingTest.m
-//
-// Copyright 2006-2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import <CoreGraphics/CoreGraphics.h>
-#import "GTMUIKit+UnitTesting.h"
-#import "GTMSenTestCase.h"
-
-@interface GTMUIView_UnitTestingTest : GTMTestCase <GTMUnitTestViewDrawer>
-@end
-
-@implementation GTMUIView_UnitTestingTest
-
-- (void)testDrawing {
- GTMAssertDrawingEqualToFile(self,
- CGSizeMake(200,200),
- @"GTMUIViewUnitTestingTest",
- [UIApplication sharedApplication],
- nil);
-}
-
-- (void)testState {
- UIView *view = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 50, 50)] autorelease];
- UIView *subview = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 50, 50)] autorelease];
- [view addSubview:subview];
- GTMAssertObjectStateEqualToStateNamed(view, @"GTMUIViewUnitTestingTest", nil);
-}
-
-- (void)testUIImage {
- NSString* name = @"GTMUIViewUnitTestingTest";
- NSBundle *bundle = [NSBundle bundleForClass:[self class]];
- NSString *imagePath = [bundle pathForResource:name ofType:@"png"];
- STAssertNotNil(imagePath, nil);
- UIImage* image = [UIImage imageWithContentsOfFile:imagePath];
- GTMAssertObjectImageEqualToImageNamed(image, name, nil);
-}
-
-- (void)gtm_unitTestViewDrawRect:(CGRect)rect contextInfo:(void*)contextInfo {
- UIApplication *app = [UIApplication sharedApplication];
- STAssertEqualObjects(app,
- contextInfo,
- @"Should be a UIApplication");
- CGPoint center = CGPointMake(CGRectGetMidX(rect),
- CGRectGetMidY(rect));
- rect = CGRectMake(center.x - 50, center.y - 50, 100, 100);
- CGContextRef context = UIGraphicsGetCurrentContext();
- CGContextAddEllipseInRect(context, rect);
- CGContextSetLineWidth(context, 5);
- [[UIColor redColor] set];
- CGContextStrokePath(context);
-}
-
-@end
diff --git a/UnitTesting/GTMUIUnitTestingHarness/English.lproj/MainMenu.xib b/UnitTesting/GTMUIUnitTestingHarness/English.lproj/MainMenu.xib
index 2a5aa22..346c749 100644
--- a/UnitTesting/GTMUIUnitTestingHarness/English.lproj/MainMenu.xib
+++ b/UnitTesting/GTMUIUnitTestingHarness/English.lproj/MainMenu.xib
@@ -1,2065 +1,311 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.03">
- <data>
- <int key="IBDocument.SystemTarget">0</int>
- <string key="IBDocument.SystemVersion">9G55</string>
- <string key="IBDocument.InterfaceBuilderVersion">677</string>
- <string key="IBDocument.AppKitVersion">949.43</string>
- <string key="IBDocument.HIToolboxVersion">353.00</string>
- <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="377"/>
- </object>
- <object class="NSArray" key="IBDocument.PluginDependencies">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>com.apple.InterfaceBuilderKit</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- </object>
- <object class="NSMutableDictionary" key="IBDocument.Metadata">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <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="1048">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSCustomObject" id="1021">
- <string key="NSClassName">NSApplication</string>
- </object>
- <object class="NSCustomObject" id="1014">
- <string key="NSClassName">FirstResponder</string>
- </object>
- <object class="NSCustomObject" id="1050">
- <string key="NSClassName">NSApplication</string>
- </object>
- <object class="NSMenu" id="649796088">
- <string key="NSTitle">AMainMenu</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="694149608">
- <reference key="NSMenu" ref="649796088"/>
- <string key="NSTitle">NewApplication</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <object class="NSCustomResource" key="NSOnImage" id="35465992">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">NSMenuCheckmark</string>
- </object>
- <object class="NSCustomResource" key="NSMixedImage" id="513340101">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">NSMenuMixedState</string>
- </object>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="110575045">
- <string key="NSTitle">NewApplication</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="238522557">
- <reference key="NSMenu" ref="110575045"/>
- <string key="NSTitle">About NewApplication</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="304266470">
- <reference key="NSMenu" ref="110575045"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="609285721">
- <reference key="NSMenu" ref="110575045"/>
- <string type="base64-UTF8" key="NSTitle">UHJlZmVyZW5jZXPigKY</string>
- <string key="NSKeyEquiv">,</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="481834944">
- <reference key="NSMenu" ref="110575045"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="1046388886">
- <reference key="NSMenu" ref="110575045"/>
- <string key="NSTitle">Services</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="752062318">
- <string key="NSTitle">Services</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <string key="NSName">_NSServicesMenu</string>
- </object>
- </object>
- <object class="NSMenuItem" id="646227648">
- <reference key="NSMenu" ref="110575045"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="755159360">
- <reference key="NSMenu" ref="110575045"/>
- <string key="NSTitle">Hide NewApplication</string>
- <string key="NSKeyEquiv">h</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="342932134">
- <reference key="NSMenu" ref="110575045"/>
- <string key="NSTitle">Hide Others</string>
- <string key="NSKeyEquiv">h</string>
- <int key="NSKeyEquivModMask">1572864</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="908899353">
- <reference key="NSMenu" ref="110575045"/>
- <string key="NSTitle">Show All</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="1056857174">
- <reference key="NSMenu" ref="110575045"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="632727374">
- <reference key="NSMenu" ref="110575045"/>
- <string key="NSTitle">Quit NewApplication</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- </object>
- <string key="NSName">_NSAppleMenu</string>
- </object>
- </object>
- <object class="NSMenuItem" id="379814623">
- <reference key="NSMenu" ref="649796088"/>
- <string key="NSTitle">File</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="720053764">
- <string key="NSTitle">File</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="705341025">
- <reference key="NSMenu" ref="720053764"/>
- <string key="NSTitle">New</string>
- <string key="NSKeyEquiv">n</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="722745758">
- <reference key="NSMenu" ref="720053764"/>
- <string type="base64-UTF8" key="NSTitle">T3BlbuKApg</string>
- <string key="NSKeyEquiv">o</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="1025936716">
- <reference key="NSMenu" ref="720053764"/>
- <string key="NSTitle">Open Recent</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="1065607017">
- <string key="NSTitle">Open Recent</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="759406840">
- <reference key="NSMenu" ref="1065607017"/>
- <string key="NSTitle">Clear Menu</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- </object>
- <string key="NSName">_NSRecentDocumentsMenu</string>
- </object>
- </object>
- <object class="NSMenuItem" id="425164168">
- <reference key="NSMenu" ref="720053764"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="776162233">
- <reference key="NSMenu" ref="720053764"/>
- <string key="NSTitle">Close</string>
- <string key="NSKeyEquiv">w</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="1023925487">
- <reference key="NSMenu" ref="720053764"/>
- <string key="NSTitle">Save</string>
- <string key="NSKeyEquiv">s</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="117038363">
- <reference key="NSMenu" ref="720053764"/>
- <string type="base64-UTF8" key="NSTitle">U2F2ZSBBc+KApg</string>
- <string key="NSKeyEquiv">S</string>
- <int key="NSKeyEquivModMask">1179648</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="579971712">
- <reference key="NSMenu" ref="720053764"/>
- <string key="NSTitle">Revert to Saved</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="1010469920">
- <reference key="NSMenu" ref="720053764"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="294629803">
- <reference key="NSMenu" ref="720053764"/>
- <string key="NSTitle">Page Setup...</string>
- <string key="NSKeyEquiv">P</string>
- <int key="NSKeyEquivModMask">1179648</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- <string key="NSToolTip"/>
- </object>
- <object class="NSMenuItem" id="49223823">
- <reference key="NSMenu" ref="720053764"/>
- <string type="base64-UTF8" key="NSTitle">UHJpbnTigKY</string>
- <string key="NSKeyEquiv">p</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- </object>
- </object>
- </object>
- <object class="NSMenuItem" id="952259628">
- <reference key="NSMenu" ref="649796088"/>
- <string key="NSTitle">Edit</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="789758025">
- <string key="NSTitle">Edit</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="1058277027">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Undo</string>
- <string key="NSKeyEquiv">z</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="790794224">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Redo</string>
- <string key="NSKeyEquiv">Z</string>
- <int key="NSKeyEquivModMask">1179648</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="1040322652">
- <reference key="NSMenu" ref="789758025"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="296257095">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Cut</string>
- <string key="NSKeyEquiv">x</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="860595796">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Copy</string>
- <string key="NSKeyEquiv">c</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="29853731">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Paste</string>
- <string key="NSKeyEquiv">v</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="437104165">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Delete</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="583158037">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Select All</string>
- <string key="NSKeyEquiv">a</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="212016141">
- <reference key="NSMenu" ref="789758025"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="892235320">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Find</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="963351320">
- <string key="NSTitle">Find</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="447796847">
- <reference key="NSMenu" ref="963351320"/>
- <string type="base64-UTF8" key="NSTitle">RmluZOKApg</string>
- <string key="NSKeyEquiv">f</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- <int key="NSTag">1</int>
- </object>
- <object class="NSMenuItem" id="326711663">
- <reference key="NSMenu" ref="963351320"/>
- <string key="NSTitle">Find Next</string>
- <string key="NSKeyEquiv">g</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- <int key="NSTag">2</int>
- </object>
- <object class="NSMenuItem" id="270902937">
- <reference key="NSMenu" ref="963351320"/>
- <string key="NSTitle">Find Previous</string>
- <string key="NSKeyEquiv">G</string>
- <int key="NSKeyEquivModMask">1179648</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- <int key="NSTag">3</int>
- </object>
- <object class="NSMenuItem" id="159080638">
- <reference key="NSMenu" ref="963351320"/>
- <string key="NSTitle">Use Selection for Find</string>
- <string key="NSKeyEquiv">e</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- <int key="NSTag">7</int>
- </object>
- <object class="NSMenuItem" id="88285865">
- <reference key="NSMenu" ref="963351320"/>
- <string key="NSTitle">Jump to Selection</string>
- <string key="NSKeyEquiv">j</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- </object>
- </object>
- </object>
- <object class="NSMenuItem" id="972420730">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Spelling and Grammar</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="769623530">
- <string key="NSTitle">Spelling and Grammar</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="679648819">
- <reference key="NSMenu" ref="769623530"/>
- <string type="base64-UTF8" key="NSTitle">U2hvdyBTcGVsbGluZ+KApg</string>
- <string key="NSKeyEquiv">:</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="96193923">
- <reference key="NSMenu" ref="769623530"/>
- <string key="NSTitle">Check Spelling</string>
- <string key="NSKeyEquiv">;</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="948374510">
- <reference key="NSMenu" ref="769623530"/>
- <string key="NSTitle">Check Spelling While Typing</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="967646866">
- <reference key="NSMenu" ref="769623530"/>
- <string key="NSTitle">Check Grammar With Spelling</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- </object>
- </object>
- </object>
- <object class="NSMenuItem" id="507821607">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Substitutions</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="698887838">
- <string key="NSTitle">Substitutions</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="605118523">
- <reference key="NSMenu" ref="698887838"/>
- <string key="NSTitle">Smart Copy/Paste</string>
- <string key="NSKeyEquiv">f</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- <int key="NSTag">1</int>
- </object>
- <object class="NSMenuItem" id="197661976">
- <reference key="NSMenu" ref="698887838"/>
- <string key="NSTitle">Smart Quotes</string>
- <string key="NSKeyEquiv">g</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- <int key="NSTag">2</int>
- </object>
- <object class="NSMenuItem" id="708854459">
- <reference key="NSMenu" ref="698887838"/>
- <string key="NSTitle">Smart Links</string>
- <string key="NSKeyEquiv">G</string>
- <int key="NSKeyEquivModMask">1179648</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- <int key="NSTag">3</int>
- </object>
- </object>
- </object>
- </object>
- <object class="NSMenuItem" id="676164635">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Speech</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="785027613">
- <string key="NSTitle">Speech</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="731782645">
- <reference key="NSMenu" ref="785027613"/>
- <string key="NSTitle">Start Speaking</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="680220178">
- <reference key="NSMenu" ref="785027613"/>
- <string key="NSTitle">Stop Speaking</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- </object>
- </object>
- </object>
- </object>
- </object>
- </object>
- <object class="NSMenuItem" id="626404410">
- <reference key="NSMenu" ref="649796088"/>
- <string type="base64-UTF8" key="NSTitle">wqxNZW51IFRpdGxlA</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="502084290">
- <string type="base64-UTF8" key="NSTitle">wqxNZW51IFRpdGxlA</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="83534624">
- <reference key="NSMenu" ref="502084290"/>
- <string type="base64-UTF8" key="NSTitle">wqxNZW51IEl0ZW0</string>
- <string key="NSKeyEquiv">t</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="1028416764">
- <reference key="NSMenu" ref="502084290"/>
- <string key="NSTitle">Show Colors</string>
- <string key="NSKeyEquiv">C</string>
- <int key="NSKeyEquivModMask">1179648</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- </object>
- </object>
- </object>
- <object class="NSMenuItem" id="586577488">
- <reference key="NSMenu" ref="649796088"/>
- <string key="NSTitle">View</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="466310130">
- <string key="NSTitle">View</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="102151532">
- <reference key="NSMenu" ref="466310130"/>
- <string key="NSTitle">Show Toolbar</string>
- <string key="NSKeyEquiv">t</string>
- <int key="NSKeyEquivModMask">1572864</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="237841660">
- <reference key="NSMenu" ref="466310130"/>
- <string type="base64-UTF8" key="NSTitle">Q3VzdG9taXplIFRvb2xiYXLigKY</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- </object>
- </object>
- </object>
- <object class="NSMenuItem" id="391199113">
- <reference key="NSMenu" ref="649796088"/>
- <string key="NSTitle">Help</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="374024848">
- <string key="NSTitle">Help</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="238773614">
- <reference key="NSMenu" ref="374024848"/>
- <string key="NSTitle">NewApplication Help</string>
- <string key="NSKeyEquiv">?</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- </object>
- </object>
- </object>
- </object>
- <string key="NSName">_NSMainMenu</string>
- </object>
- <object class="NSCustomObject" id="728136523">
- <string key="NSClassName">GTMUILocalizer</string>
- </object>
- </object>
- <object class="IBObjectContainer" key="IBDocument.Objects">
- <object class="NSMutableArray" key="connectionRecords">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">print:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="49223823"/>
- </object>
- <int key="connectionID">86</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">runPageLayout:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="294629803"/>
- </object>
- <int key="connectionID">87</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">clearRecentDocuments:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="759406840"/>
- </object>
- <int key="connectionID">127</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">orderFrontStandardAboutPanel:</string>
- <reference key="source" ref="1021"/>
- <reference key="destination" ref="238522557"/>
- </object>
- <int key="connectionID">142</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">performClose:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="776162233"/>
- </object>
- <int key="connectionID">193</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">toggleContinuousSpellChecking:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="948374510"/>
- </object>
- <int key="connectionID">222</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">undo:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="1058277027"/>
- </object>
- <int key="connectionID">223</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">copy:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="860595796"/>
- </object>
- <int key="connectionID">224</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">checkSpelling:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="96193923"/>
- </object>
- <int key="connectionID">225</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">paste:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="29853731"/>
- </object>
- <int key="connectionID">226</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">stopSpeaking:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="680220178"/>
- </object>
- <int key="connectionID">227</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">cut:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="296257095"/>
- </object>
- <int key="connectionID">228</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">showGuessPanel:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="679648819"/>
- </object>
- <int key="connectionID">230</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">redo:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="790794224"/>
- </object>
- <int key="connectionID">231</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">selectAll:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="583158037"/>
- </object>
- <int key="connectionID">232</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">startSpeaking:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="731782645"/>
- </object>
- <int key="connectionID">233</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">delete:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="437104165"/>
- </object>
- <int key="connectionID">235</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">performFindPanelAction:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="447796847"/>
- </object>
- <int key="connectionID">241</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">centerSelectionInVisibleArea:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="88285865"/>
- </object>
- <int key="connectionID">245</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">toggleGrammarChecking:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="967646866"/>
- </object>
- <int key="connectionID">347</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">toggleSmartInsertDelete:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="605118523"/>
- </object>
- <int key="connectionID">355</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">toggleAutomaticQuoteSubstitution:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="197661976"/>
- </object>
- <int key="connectionID">356</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">toggleAutomaticLinkDetection:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="708854459"/>
- </object>
- <int key="connectionID">357</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">showHelp:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="238773614"/>
- </object>
- <int key="connectionID">360</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">orderFrontColorPanel:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="1028416764"/>
- </object>
- <int key="connectionID">361</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">saveDocument:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="1023925487"/>
- </object>
- <int key="connectionID">362</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">saveDocumentAs:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="117038363"/>
- </object>
- <int key="connectionID">363</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">revertDocumentToSaved:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="579971712"/>
- </object>
- <int key="connectionID">364</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">runToolbarCustomizationPalette:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="237841660"/>
- </object>
- <int key="connectionID">365</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">toggleToolbarShown:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="102151532"/>
- </object>
- <int key="connectionID">366</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">hide:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="755159360"/>
- </object>
- <int key="connectionID">367</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">hideOtherApplications:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="342932134"/>
- </object>
- <int key="connectionID">368</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">terminate:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="632727374"/>
- </object>
- <int key="connectionID">369</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">unhideAllApplications:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="908899353"/>
- </object>
- <int key="connectionID">370</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">newDocument:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="705341025"/>
- </object>
- <int key="connectionID">373</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">openDocument:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="722745758"/>
- </object>
- <int key="connectionID">374</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">owner_</string>
- <reference key="source" ref="728136523"/>
- <reference key="destination" ref="1021"/>
- </object>
- <int key="connectionID">376</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>
- <object class="NSArray" key="object" id="1049">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <reference key="children" ref="1048"/>
- <nil key="parent"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-2</int>
- <reference key="object" ref="1021"/>
- <reference key="parent" ref="1049"/>
- <string type="base64-UTF8" key="objectName">RmlsZSdzIE93bmVyA</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-1</int>
- <reference key="object" ref="1014"/>
- <reference key="parent" ref="1049"/>
- <string key="objectName">First Responder</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-3</int>
- <reference key="object" ref="1050"/>
- <reference key="parent" ref="1049"/>
- <string key="objectName">Application</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">29</int>
- <reference key="object" ref="649796088"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="694149608"/>
- <reference ref="391199113"/>
- <reference ref="952259628"/>
- <reference ref="379814623"/>
- <reference ref="586577488"/>
- <reference ref="626404410"/>
- </object>
- <reference key="parent" ref="1049"/>
- <string key="objectName">MainMenu</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">56</int>
- <reference key="object" ref="694149608"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="110575045"/>
- </object>
- <reference key="parent" ref="649796088"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">103</int>
- <reference key="object" ref="391199113"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="374024848"/>
- </object>
- <reference key="parent" ref="649796088"/>
- <string key="objectName">1</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">217</int>
- <reference key="object" ref="952259628"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="789758025"/>
- </object>
- <reference key="parent" ref="649796088"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">83</int>
- <reference key="object" ref="379814623"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="720053764"/>
- </object>
- <reference key="parent" ref="649796088"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">81</int>
- <reference key="object" ref="720053764"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1023925487"/>
- <reference ref="117038363"/>
- <reference ref="49223823"/>
- <reference ref="722745758"/>
- <reference ref="705341025"/>
- <reference ref="1025936716"/>
- <reference ref="294629803"/>
- <reference ref="776162233"/>
- <reference ref="425164168"/>
- <reference ref="579971712"/>
- <reference ref="1010469920"/>
- </object>
- <reference key="parent" ref="379814623"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">75</int>
- <reference key="object" ref="1023925487"/>
- <reference key="parent" ref="720053764"/>
- <string key="objectName">3</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">80</int>
- <reference key="object" ref="117038363"/>
- <reference key="parent" ref="720053764"/>
- <string key="objectName">8</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">78</int>
- <reference key="object" ref="49223823"/>
- <reference key="parent" ref="720053764"/>
- <string key="objectName">6</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">72</int>
- <reference key="object" ref="722745758"/>
- <reference key="parent" ref="720053764"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">82</int>
- <reference key="object" ref="705341025"/>
- <reference key="parent" ref="720053764"/>
- <string key="objectName">9</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">124</int>
- <reference key="object" ref="1025936716"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1065607017"/>
- </object>
- <reference key="parent" ref="720053764"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">77</int>
- <reference key="object" ref="294629803"/>
- <reference key="parent" ref="720053764"/>
- <string key="objectName">5</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">73</int>
- <reference key="object" ref="776162233"/>
- <reference key="parent" ref="720053764"/>
- <string key="objectName">1</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">79</int>
- <reference key="object" ref="425164168"/>
- <reference key="parent" ref="720053764"/>
- <string key="objectName">7</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">112</int>
- <reference key="object" ref="579971712"/>
- <reference key="parent" ref="720053764"/>
- <string key="objectName">10</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">74</int>
- <reference key="object" ref="1010469920"/>
- <reference key="parent" ref="720053764"/>
- <string key="objectName">2</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">125</int>
- <reference key="object" ref="1065607017"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="759406840"/>
- </object>
- <reference key="parent" ref="1025936716"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">126</int>
- <reference key="object" ref="759406840"/>
- <reference key="parent" ref="1065607017"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">205</int>
- <reference key="object" ref="789758025"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="437104165"/>
- <reference ref="583158037"/>
- <reference ref="1058277027"/>
- <reference ref="212016141"/>
- <reference ref="296257095"/>
- <reference ref="29853731"/>
- <reference ref="860595796"/>
- <reference ref="1040322652"/>
- <reference ref="790794224"/>
- <reference ref="892235320"/>
- <reference ref="972420730"/>
- <reference ref="676164635"/>
- <reference ref="507821607"/>
- </object>
- <reference key="parent" ref="952259628"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">202</int>
- <reference key="object" ref="437104165"/>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">198</int>
- <reference key="object" ref="583158037"/>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">207</int>
- <reference key="object" ref="1058277027"/>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">214</int>
- <reference key="object" ref="212016141"/>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">199</int>
- <reference key="object" ref="296257095"/>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">203</int>
- <reference key="object" ref="29853731"/>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">197</int>
- <reference key="object" ref="860595796"/>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">206</int>
- <reference key="object" ref="1040322652"/>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">215</int>
- <reference key="object" ref="790794224"/>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">218</int>
- <reference key="object" ref="892235320"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="963351320"/>
- </object>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">216</int>
- <reference key="object" ref="972420730"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="769623530"/>
- </object>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">200</int>
- <reference key="object" ref="769623530"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="948374510"/>
- <reference ref="96193923"/>
- <reference ref="679648819"/>
- <reference ref="967646866"/>
- </object>
- <reference key="parent" ref="972420730"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">219</int>
- <reference key="object" ref="948374510"/>
- <reference key="parent" ref="769623530"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">201</int>
- <reference key="object" ref="96193923"/>
- <reference key="parent" ref="769623530"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">204</int>
- <reference key="object" ref="679648819"/>
- <reference key="parent" ref="769623530"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">220</int>
- <reference key="object" ref="963351320"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="270902937"/>
- <reference ref="88285865"/>
- <reference ref="159080638"/>
- <reference ref="326711663"/>
- <reference ref="447796847"/>
- </object>
- <reference key="parent" ref="892235320"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">213</int>
- <reference key="object" ref="270902937"/>
- <reference key="parent" ref="963351320"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">210</int>
- <reference key="object" ref="88285865"/>
- <reference key="parent" ref="963351320"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">221</int>
- <reference key="object" ref="159080638"/>
- <reference key="parent" ref="963351320"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">208</int>
- <reference key="object" ref="326711663"/>
- <reference key="parent" ref="963351320"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">209</int>
- <reference key="object" ref="447796847"/>
- <reference key="parent" ref="963351320"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">106</int>
- <reference key="object" ref="374024848"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="238773614"/>
- </object>
- <reference key="parent" ref="391199113"/>
- <string key="objectName">2</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">111</int>
- <reference key="object" ref="238773614"/>
- <reference key="parent" ref="374024848"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">57</int>
- <reference key="object" ref="110575045"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="238522557"/>
- <reference ref="755159360"/>
- <reference ref="908899353"/>
- <reference ref="632727374"/>
- <reference ref="646227648"/>
- <reference ref="609285721"/>
- <reference ref="481834944"/>
- <reference ref="304266470"/>
- <reference ref="1046388886"/>
- <reference ref="1056857174"/>
- <reference ref="342932134"/>
- </object>
- <reference key="parent" ref="694149608"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">58</int>
- <reference key="object" ref="238522557"/>
- <reference key="parent" ref="110575045"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">134</int>
- <reference key="object" ref="755159360"/>
- <reference key="parent" ref="110575045"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">150</int>
- <reference key="object" ref="908899353"/>
- <reference key="parent" ref="110575045"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">136</int>
- <reference key="object" ref="632727374"/>
- <reference key="parent" ref="110575045"/>
- <string key="objectName">1111</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">144</int>
- <reference key="object" ref="646227648"/>
- <reference key="parent" ref="110575045"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">129</int>
- <reference key="object" ref="609285721"/>
- <reference key="parent" ref="110575045"/>
- <string key="objectName">121</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">143</int>
- <reference key="object" ref="481834944"/>
- <reference key="parent" ref="110575045"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">236</int>
- <reference key="object" ref="304266470"/>
- <reference key="parent" ref="110575045"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">131</int>
- <reference key="object" ref="1046388886"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="752062318"/>
- </object>
- <reference key="parent" ref="110575045"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">149</int>
- <reference key="object" ref="1056857174"/>
- <reference key="parent" ref="110575045"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">145</int>
- <reference key="object" ref="342932134"/>
- <reference key="parent" ref="110575045"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">130</int>
- <reference key="object" ref="752062318"/>
- <reference key="parent" ref="1046388886"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">295</int>
- <reference key="object" ref="586577488"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="466310130"/>
- </object>
- <reference key="parent" ref="649796088"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">296</int>
- <reference key="object" ref="466310130"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="102151532"/>
- <reference ref="237841660"/>
- </object>
- <reference key="parent" ref="586577488"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">297</int>
- <reference key="object" ref="102151532"/>
- <reference key="parent" ref="466310130"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">298</int>
- <reference key="object" ref="237841660"/>
- <reference key="parent" ref="466310130"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">299</int>
- <reference key="object" ref="626404410"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="502084290"/>
- </object>
- <reference key="parent" ref="649796088"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">300</int>
- <reference key="object" ref="502084290"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1028416764"/>
- <reference ref="83534624"/>
- </object>
- <reference key="parent" ref="626404410"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">345</int>
- <reference key="object" ref="1028416764"/>
- <reference key="parent" ref="502084290"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">211</int>
- <reference key="object" ref="676164635"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="785027613"/>
- </object>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">212</int>
- <reference key="object" ref="785027613"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="680220178"/>
- <reference ref="731782645"/>
- </object>
- <reference key="parent" ref="676164635"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">195</int>
- <reference key="object" ref="680220178"/>
- <reference key="parent" ref="785027613"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">196</int>
- <reference key="object" ref="731782645"/>
- <reference key="parent" ref="785027613"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">346</int>
- <reference key="object" ref="967646866"/>
- <reference key="parent" ref="769623530"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">348</int>
- <reference key="object" ref="507821607"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="698887838"/>
- </object>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">349</int>
- <reference key="object" ref="698887838"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="605118523"/>
- <reference ref="197661976"/>
- <reference ref="708854459"/>
- </object>
- <reference key="parent" ref="507821607"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">350</int>
- <reference key="object" ref="605118523"/>
- <reference key="parent" ref="698887838"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">351</int>
- <reference key="object" ref="197661976"/>
- <reference key="parent" ref="698887838"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">354</int>
- <reference key="object" ref="708854459"/>
- <reference key="parent" ref="698887838"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">375</int>
- <reference key="object" ref="728136523"/>
- <reference key="parent" ref="1049"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">377</int>
- <reference key="object" ref="83534624"/>
- <reference key="parent" ref="502084290"/>
- </object>
- </object>
- </object>
- <object class="NSMutableDictionary" key="flattenedProperties">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMutableArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>-1.IBPluginDependency</string>
- <string>-2.IBPluginDependency</string>
- <string>-3.IBPluginDependency</string>
- <string>103.IBPluginDependency</string>
- <string>103.ImportedFromIB2</string>
- <string>106.IBEditorWindowLastContentRect</string>
- <string>106.IBPluginDependency</string>
- <string>106.ImportedFromIB2</string>
- <string>106.editorWindowContentRectSynchronizationRect</string>
- <string>111.IBPluginDependency</string>
- <string>111.ImportedFromIB2</string>
- <string>112.IBPluginDependency</string>
- <string>112.ImportedFromIB2</string>
- <string>124.IBPluginDependency</string>
- <string>124.ImportedFromIB2</string>
- <string>125.IBPluginDependency</string>
- <string>125.ImportedFromIB2</string>
- <string>125.editorWindowContentRectSynchronizationRect</string>
- <string>126.IBPluginDependency</string>
- <string>126.ImportedFromIB2</string>
- <string>129.IBPluginDependency</string>
- <string>129.ImportedFromIB2</string>
- <string>130.IBPluginDependency</string>
- <string>130.ImportedFromIB2</string>
- <string>130.editorWindowContentRectSynchronizationRect</string>
- <string>131.IBPluginDependency</string>
- <string>131.ImportedFromIB2</string>
- <string>134.IBPluginDependency</string>
- <string>134.ImportedFromIB2</string>
- <string>136.IBPluginDependency</string>
- <string>136.ImportedFromIB2</string>
- <string>143.IBPluginDependency</string>
- <string>143.ImportedFromIB2</string>
- <string>144.IBPluginDependency</string>
- <string>144.ImportedFromIB2</string>
- <string>145.IBPluginDependency</string>
- <string>145.ImportedFromIB2</string>
- <string>149.IBPluginDependency</string>
- <string>149.ImportedFromIB2</string>
- <string>150.IBPluginDependency</string>
- <string>150.ImportedFromIB2</string>
- <string>195.IBPluginDependency</string>
- <string>195.ImportedFromIB2</string>
- <string>196.IBPluginDependency</string>
- <string>196.ImportedFromIB2</string>
- <string>197.IBPluginDependency</string>
- <string>197.ImportedFromIB2</string>
- <string>198.IBPluginDependency</string>
- <string>198.ImportedFromIB2</string>
- <string>199.IBPluginDependency</string>
- <string>199.ImportedFromIB2</string>
- <string>200.IBPluginDependency</string>
- <string>200.ImportedFromIB2</string>
- <string>200.editorWindowContentRectSynchronizationRect</string>
- <string>201.IBPluginDependency</string>
- <string>201.ImportedFromIB2</string>
- <string>202.IBPluginDependency</string>
- <string>202.ImportedFromIB2</string>
- <string>203.IBPluginDependency</string>
- <string>203.ImportedFromIB2</string>
- <string>204.IBPluginDependency</string>
- <string>204.ImportedFromIB2</string>
- <string>205.IBEditorWindowLastContentRect</string>
- <string>205.IBPluginDependency</string>
- <string>205.ImportedFromIB2</string>
- <string>205.editorWindowContentRectSynchronizationRect</string>
- <string>206.IBPluginDependency</string>
- <string>206.ImportedFromIB2</string>
- <string>207.IBPluginDependency</string>
- <string>207.ImportedFromIB2</string>
- <string>208.IBPluginDependency</string>
- <string>208.ImportedFromIB2</string>
- <string>209.IBPluginDependency</string>
- <string>209.ImportedFromIB2</string>
- <string>210.IBPluginDependency</string>
- <string>210.ImportedFromIB2</string>
- <string>211.IBPluginDependency</string>
- <string>211.ImportedFromIB2</string>
- <string>212.IBPluginDependency</string>
- <string>212.ImportedFromIB2</string>
- <string>212.editorWindowContentRectSynchronizationRect</string>
- <string>213.IBPluginDependency</string>
- <string>213.ImportedFromIB2</string>
- <string>214.IBPluginDependency</string>
- <string>214.ImportedFromIB2</string>
- <string>215.IBPluginDependency</string>
- <string>215.ImportedFromIB2</string>
- <string>216.IBPluginDependency</string>
- <string>216.ImportedFromIB2</string>
- <string>217.IBPluginDependency</string>
- <string>217.ImportedFromIB2</string>
- <string>218.IBPluginDependency</string>
- <string>218.ImportedFromIB2</string>
- <string>219.IBPluginDependency</string>
- <string>219.ImportedFromIB2</string>
- <string>220.IBPluginDependency</string>
- <string>220.ImportedFromIB2</string>
- <string>220.editorWindowContentRectSynchronizationRect</string>
- <string>221.IBPluginDependency</string>
- <string>221.ImportedFromIB2</string>
- <string>236.IBPluginDependency</string>
- <string>236.ImportedFromIB2</string>
- <string>29.IBEditorWindowLastContentRect</string>
- <string>29.IBPluginDependency</string>
- <string>29.ImportedFromIB2</string>
- <string>29.WindowOrigin</string>
- <string>29.editorWindowContentRectSynchronizationRect</string>
- <string>295.IBPluginDependency</string>
- <string>296.IBEditorWindowLastContentRect</string>
- <string>296.IBPluginDependency</string>
- <string>296.editorWindowContentRectSynchronizationRect</string>
- <string>297.IBPluginDependency</string>
- <string>298.IBPluginDependency</string>
- <string>299.IBPluginDependency</string>
- <string>300.IBEditorWindowLastContentRect</string>
- <string>300.IBPluginDependency</string>
- <string>300.editorWindowContentRectSynchronizationRect</string>
- <string>345.IBPluginDependency</string>
- <string>346.IBPluginDependency</string>
- <string>346.ImportedFromIB2</string>
- <string>348.IBPluginDependency</string>
- <string>348.ImportedFromIB2</string>
- <string>349.IBPluginDependency</string>
- <string>349.ImportedFromIB2</string>
- <string>349.editorWindowContentRectSynchronizationRect</string>
- <string>350.IBPluginDependency</string>
- <string>350.ImportedFromIB2</string>
- <string>351.IBPluginDependency</string>
- <string>351.ImportedFromIB2</string>
- <string>354.IBPluginDependency</string>
- <string>354.ImportedFromIB2</string>
- <string>375.IBPluginDependency</string>
- <string>377.IBPluginDependency</string>
- <string>56.IBPluginDependency</string>
- <string>56.ImportedFromIB2</string>
- <string>57.IBEditorWindowLastContentRect</string>
- <string>57.IBPluginDependency</string>
- <string>57.ImportedFromIB2</string>
- <string>57.editorWindowContentRectSynchronizationRect</string>
- <string>58.IBPluginDependency</string>
- <string>58.ImportedFromIB2</string>
- <string>72.IBPluginDependency</string>
- <string>72.ImportedFromIB2</string>
- <string>73.IBPluginDependency</string>
- <string>73.ImportedFromIB2</string>
- <string>74.IBPluginDependency</string>
- <string>74.ImportedFromIB2</string>
- <string>75.IBPluginDependency</string>
- <string>75.ImportedFromIB2</string>
- <string>77.IBPluginDependency</string>
- <string>77.ImportedFromIB2</string>
- <string>78.IBPluginDependency</string>
- <string>78.ImportedFromIB2</string>
- <string>79.IBPluginDependency</string>
- <string>79.ImportedFromIB2</string>
- <string>80.IBPluginDependency</string>
- <string>80.ImportedFromIB2</string>
- <string>81.IBEditorWindowLastContentRect</string>
- <string>81.IBPluginDependency</string>
- <string>81.ImportedFromIB2</string>
- <string>81.editorWindowContentRectSynchronizationRect</string>
- <string>82.IBPluginDependency</string>
- <string>82.ImportedFromIB2</string>
- <string>83.IBPluginDependency</string>
- <string>83.ImportedFromIB2</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilderKit</string>
- <string>com.apple.InterfaceBuilderKit</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1" id="9"/>
- <string>{{417, 1069}, {216, 23}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>{{596, 852}, {216, 23}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>{{522, 812}, {146, 23}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>{{436, 809}, {64, 6}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>{{608, 612}, {275, 83}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>{{186, 593}, {243, 243}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>{{187, 434}, {243, 243}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>{{608, 612}, {167, 43}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>{{608, 612}, {241, 103}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>{{2560, 1536}, {442, 20}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>{74, 862}</string>
- <string>{{6, 978}, {478, 20}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{296, 1049}, {234, 43}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{475, 832}, {234, 43}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{2790, 1493}, {176, 43}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{231, 634}, {176, 43}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>{{608, 612}, {215, 63}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>{{12, 909}, {245, 183}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>{{23, 794}, {245, 183}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>{{144, 633}, {199, 203}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>{{145, 474}, {199, 203}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- </object>
- </object>
- <object class="NSMutableDictionary" key="unlocalizedProperties">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <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>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- </object>
- <nil key="sourceID"/>
- <int key="maxID">388</int>
- </object>
- <object class="IBClassDescriber" key="IBDocument.Classes">
- <object class="NSMutableArray" key="referencedPartialClassDescriptions">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBPartialClassDescription">
- <string key="className">GTMLargeTypeWindow</string>
- <string key="superclassName">NSPanel</string>
- <object class="NSMutableDictionary" key="actions">
- <string key="NS.key.0">copy:</string>
- <string key="NS.object.0">id</string>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMLargeTypeWindow.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">GTMUILocalizer</string>
- <string key="superclassName">NSObject</string>
- <object class="NSMutableDictionary" key="outlets">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMutableArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>otherObjectToLocalize_</string>
- <string>owner_</string>
- <string>yetAnotherObjectToLocalize_</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>id</string>
- <string>id</string>
- <string>id</string>
- </object>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMUILocalizer.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="271775925">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMAppKit+UnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSControl</string>
- <reference key="sourceIdentifier" ref="271775925"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSMenu</string>
- <reference key="sourceIdentifier" ref="271775925"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSMenuItem</string>
- <reference key="sourceIdentifier" ref="271775925"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMCarbonEvent.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMDelegatingTableColumn.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Foundation/GTMHTTPServer.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Foundation/GTMNSAppleEventDescriptor+Foundation.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Foundation/GTMNSObject+KeyValueObserving.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMCALayer+UnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMNSObject+BindingUnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMNSObject+UnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <reference key="sourceIdentifier" ref="271775925"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindow</string>
- <reference key="sourceIdentifier" ref="271775925"/>
- </object>
- </object>
- </object>
- <int key="IBDocument.localizationMode">0</int>
- <string key="IBDocument.LastKnownRelativeProjectPath">../../../GTM.xcodeproj</string>
- <int key="IBDocument.defaultPropertyAccessControl">3</int>
- </data>
-</archive>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="11201" systemVersion="15G31" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
+ <dependencies>
+ <deployment identifier="macosx"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11201"/>
+ </dependencies>
+ <objects>
+ <customObject id="-2" userLabel="File's Owner" customClass="NSApplication"/>
+ <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+ <customObject id="-3" userLabel="Application"/>
+ <menu title="AMainMenu" systemMenu="main" id="29" userLabel="MainMenu">
+ <items>
+ <menuItem title="NewApplication" id="56">
+ <menu key="submenu" title="NewApplication" systemMenu="apple" id="57">
+ <items>
+ <menuItem title="About NewApplication" id="58">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="orderFrontStandardAboutPanel:" target="-2" id="142"/>
+ </connections>
+ </menuItem>
+ <menuItem isSeparatorItem="YES" id="236">
+ <modifierMask key="keyEquivalentModifierMask" command="YES"/>
+ </menuItem>
+ <menuItem title="Preferences…" keyEquivalent="," id="129" userLabel="121"/>
+ <menuItem isSeparatorItem="YES" id="143">
+ <modifierMask key="keyEquivalentModifierMask" command="YES"/>
+ </menuItem>
+ <menuItem title="Services" id="131">
+ <menu key="submenu" title="Services" systemMenu="services" id="130"/>
+ </menuItem>
+ <menuItem isSeparatorItem="YES" id="144">
+ <modifierMask key="keyEquivalentModifierMask" command="YES"/>
+ </menuItem>
+ <menuItem title="Hide NewApplication" keyEquivalent="h" id="134">
+ <connections>
+ <action selector="hide:" target="-1" id="367"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Hide Others" keyEquivalent="h" id="145">
+ <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
+ <connections>
+ <action selector="hideOtherApplications:" target="-1" id="368"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Show All" id="150">
+ <connections>
+ <action selector="unhideAllApplications:" target="-1" id="370"/>
+ </connections>
+ </menuItem>
+ <menuItem isSeparatorItem="YES" id="149">
+ <modifierMask key="keyEquivalentModifierMask" command="YES"/>
+ </menuItem>
+ <menuItem title="Quit NewApplication" id="136" userLabel="1111">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="terminate:" target="-1" id="369"/>
+ </connections>
+ </menuItem>
+ </items>
+ </menu>
+ </menuItem>
+ <menuItem title="File" id="83">
+ <menu key="submenu" title="File" id="81">
+ <items>
+ <menuItem title="New" keyEquivalent="n" id="82" userLabel="9">
+ <connections>
+ <action selector="newDocument:" target="-1" id="373"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Open…" keyEquivalent="o" id="72">
+ <connections>
+ <action selector="openDocument:" target="-1" id="374"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Open Recent" id="124">
+ <menu key="submenu" title="Open Recent" systemMenu="recentDocuments" id="125">
+ <items>
+ <menuItem title="Clear Menu" id="126">
+ <connections>
+ <action selector="clearRecentDocuments:" target="-1" id="127"/>
+ </connections>
+ </menuItem>
+ </items>
+ </menu>
+ </menuItem>
+ <menuItem isSeparatorItem="YES" id="79" userLabel="7">
+ <modifierMask key="keyEquivalentModifierMask" command="YES"/>
+ </menuItem>
+ <menuItem title="Close" keyEquivalent="w" id="73" userLabel="1">
+ <connections>
+ <action selector="performClose:" target="-1" id="193"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Save" keyEquivalent="s" id="75" userLabel="3">
+ <connections>
+ <action selector="saveDocument:" target="-1" id="362"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Save As…" keyEquivalent="S" id="80" userLabel="8">
+ <modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
+ <connections>
+ <action selector="saveDocumentAs:" target="-1" id="363"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Revert to Saved" id="112" userLabel="10">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="revertDocumentToSaved:" target="-1" id="364"/>
+ </connections>
+ </menuItem>
+ <menuItem isSeparatorItem="YES" id="74" userLabel="2">
+ <modifierMask key="keyEquivalentModifierMask" command="YES"/>
+ </menuItem>
+ <menuItem title="Page Setup..." keyEquivalent="P" id="77" userLabel="5">
+ <modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
+ <connections>
+ <action selector="runPageLayout:" target="-1" id="87"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Print…" keyEquivalent="p" id="78" userLabel="6">
+ <connections>
+ <action selector="print:" target="-1" id="86"/>
+ </connections>
+ </menuItem>
+ </items>
+ </menu>
+ </menuItem>
+ <menuItem title="Edit" id="217">
+ <menu key="submenu" title="Edit" id="205">
+ <items>
+ <menuItem title="Undo" keyEquivalent="z" id="207">
+ <connections>
+ <action selector="undo:" target="-1" id="223"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Redo" keyEquivalent="Z" id="215">
+ <modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
+ <connections>
+ <action selector="redo:" target="-1" id="231"/>
+ </connections>
+ </menuItem>
+ <menuItem isSeparatorItem="YES" id="206">
+ <modifierMask key="keyEquivalentModifierMask" command="YES"/>
+ </menuItem>
+ <menuItem title="Cut" keyEquivalent="x" id="199">
+ <connections>
+ <action selector="cut:" target="-1" id="228"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Copy" keyEquivalent="c" id="197">
+ <connections>
+ <action selector="copy:" target="-1" id="224"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Paste" keyEquivalent="v" id="203">
+ <connections>
+ <action selector="paste:" target="-1" id="226"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Delete" id="202">
+ <connections>
+ <action selector="delete:" target="-1" id="235"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Select All" keyEquivalent="a" id="198">
+ <connections>
+ <action selector="selectAll:" target="-1" id="232"/>
+ </connections>
+ </menuItem>
+ <menuItem isSeparatorItem="YES" id="214">
+ <modifierMask key="keyEquivalentModifierMask" command="YES"/>
+ </menuItem>
+ <menuItem title="Find" id="218">
+ <menu key="submenu" title="Find" id="220">
+ <items>
+ <menuItem title="Find…" tag="1" keyEquivalent="f" id="209">
+ <connections>
+ <action selector="performFindPanelAction:" target="-1" id="241"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Find Next" tag="2" keyEquivalent="g" id="208"/>
+ <menuItem title="Find Previous" tag="3" keyEquivalent="G" id="213">
+ <modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
+ </menuItem>
+ <menuItem title="Use Selection for Find" tag="7" keyEquivalent="e" id="221"/>
+ <menuItem title="Jump to Selection" keyEquivalent="j" id="210">
+ <connections>
+ <action selector="centerSelectionInVisibleArea:" target="-1" id="245"/>
+ </connections>
+ </menuItem>
+ </items>
+ </menu>
+ </menuItem>
+ <menuItem title="Spelling and Grammar" id="216">
+ <menu key="submenu" title="Spelling and Grammar" id="200">
+ <items>
+ <menuItem title="Show Spelling…" keyEquivalent=":" id="204">
+ <connections>
+ <action selector="showGuessPanel:" target="-1" id="230"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Check Spelling" keyEquivalent=";" id="201">
+ <connections>
+ <action selector="checkSpelling:" target="-1" id="225"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Check Spelling While Typing" id="219">
+ <connections>
+ <action selector="toggleContinuousSpellChecking:" target="-1" id="222"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Check Grammar With Spelling" id="346">
+ <connections>
+ <action selector="toggleGrammarChecking:" target="-1" id="347"/>
+ </connections>
+ </menuItem>
+ </items>
+ </menu>
+ </menuItem>
+ <menuItem title="Substitutions" id="348">
+ <menu key="submenu" title="Substitutions" id="349">
+ <items>
+ <menuItem title="Smart Copy/Paste" tag="1" keyEquivalent="f" id="350">
+ <connections>
+ <action selector="toggleSmartInsertDelete:" target="-1" id="355"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Smart Quotes" tag="2" keyEquivalent="g" id="351">
+ <connections>
+ <action selector="toggleAutomaticQuoteSubstitution:" target="-1" id="356"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Smart Links" tag="3" keyEquivalent="G" id="354">
+ <modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
+ <connections>
+ <action selector="toggleAutomaticLinkDetection:" target="-1" id="357"/>
+ </connections>
+ </menuItem>
+ </items>
+ </menu>
+ </menuItem>
+ <menuItem title="Speech" id="211">
+ <menu key="submenu" title="Speech" id="212">
+ <items>
+ <menuItem title="Start Speaking" id="196">
+ <connections>
+ <action selector="startSpeaking:" target="-1" id="233"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Stop Speaking" id="195">
+ <connections>
+ <action selector="stopSpeaking:" target="-1" id="227"/>
+ </connections>
+ </menuItem>
+ </items>
+ </menu>
+ </menuItem>
+ </items>
+ </menu>
+ </menuItem>
+ <menuItem title="¬Menu Title" id="299">
+ <menu key="submenu" title="¬Menu Title" id="300">
+ <items>
+ <menuItem title="¬Menu Item" keyEquivalent="t" id="377"/>
+ <menuItem title="Show Colors" keyEquivalent="C" id="345">
+ <modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
+ <connections>
+ <action selector="orderFrontColorPanel:" target="-1" id="361"/>
+ </connections>
+ </menuItem>
+ </items>
+ </menu>
+ </menuItem>
+ <menuItem title="View" id="295">
+ <menu key="submenu" title="View" id="296">
+ <items>
+ <menuItem title="Show Toolbar" keyEquivalent="t" id="297">
+ <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
+ <connections>
+ <action selector="toggleToolbarShown:" target="-1" id="366"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Customize Toolbar…" id="298">
+ <connections>
+ <action selector="runToolbarCustomizationPalette:" target="-1" id="365"/>
+ </connections>
+ </menuItem>
+ </items>
+ </menu>
+ </menuItem>
+ <menuItem title="Help" id="103" userLabel="1">
+ <menu key="submenu" title="Help" id="106" userLabel="2">
+ <items>
+ <menuItem title="NewApplication Help" keyEquivalent="?" id="111">
+ <connections>
+ <action selector="showHelp:" target="-1" id="360"/>
+ </connections>
+ </menuItem>
+ </items>
+ </menu>
+ </menuItem>
+ </items>
+ </menu>
+ <customObject id="375" customClass="GTMUILocalizer">
+ <connections>
+ <outlet property="owner_" destination="-2" id="376"/>
+ </connections>
+ </customObject>
+ </objects>
+</document>
diff --git a/UnitTesting/GTMUIUnitTestingHarness/main.m b/UnitTesting/GTMUIUnitTestingHarness/main.m
index 7438499..ceff0c9 100644
--- a/UnitTesting/GTMUIUnitTestingHarness/main.m
+++ b/UnitTesting/GTMUIUnitTestingHarness/main.m
@@ -19,14 +19,11 @@
#import <Cocoa/Cocoa.h>
-#import "GTMAppKitUnitTestingUtilities.h"
#import "GTMFoundationUnitTestingUtilities.h"
int main(int argc, char *argv[]) {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- [GTMAppKitUnitTestingUtilities setUpForUIUnitTestsIfBeingTested];
-
// Give ourselves a max of 10 minutes for the tests. Sometimes (in automated
// builds) the unittesting bundle fails to load which causes the app to keep
// running forever. This will force it to exit after a certain amount of time
diff --git a/UnitTesting/GTMUnitTestDevLog.h b/UnitTesting/GTMUnitTestDevLog.h
index 2be231e..35d5e0d 100644
--- a/UnitTesting/GTMUnitTestDevLog.h
+++ b/UnitTesting/GTMUnitTestDevLog.h
@@ -16,69 +16,16 @@
// the License.
//
-#import "GTMDefines.h"
#import <Foundation/Foundation.h>
+#import "GTMDefines.h"
-// GTMUnitTestDevLog tracks what messages are logged to verify that you only
-// log what you expect to log during the running of unittests. This allows you
-// to log with impunity from your actual core implementations and still be able
-// to find unexpected logs in your output when running unittests.
-// In your unittests you tell GTMUnitTestDevLog what messages you expect your
-// test to spit out, and it will cause any that don't match to appear as errors
-// in your unittest run output. You can match on exact strings or standard
-// regexps.
-// Set GTM_SHOW_UNITTEST_DEVLOGS in the environment to show the logs that that
-// are expected and encountered. Otherwise they aren't display to keep the
-// unit test results easier to read.
+// GTMUnitTestDevLog modifies assertion logs so they don't get trapped by
+// build systems.
@interface GTMUnitTestDevLog : NSObject
-// Log a message
-+ (void)log:(NSString*)format, ... NS_FORMAT_FUNCTION(1, 2);
-+ (void)log:(NSString*)format args:(va_list)args NS_FORMAT_FUNCTION(1, 0);
// Turn tracking on/off
+ (void)enableTracking;
+ (void)disableTracking;
-+ (BOOL)isTrackingEnabled;
-
-// Note that you are expecting a string that has an exact match. No need to
-// escape any pattern characters.
-+ (void)expectString:(NSString *)format, ... NS_FORMAT_FUNCTION(1, 2);
-
-// Note that you are expecting a pattern. Pattern characters that you want
-// exact matches on must be escaped. See [GTMRegex escapedPatternForString].
-// Patterns match across newlines (kGTMRegexOptionSupressNewlineSupport) making
-// it easier to match output from the descriptions of NS collection types such
-// as NSArray and NSDictionary.
-+ (void)expectPattern:(NSString *)format, ... NS_FORMAT_FUNCTION(1, 2);
-
-// Note that you are expecting exactly 'n' strings
-+ (void)expect:(NSUInteger)n
- casesOfString:(NSString *)format, ... NS_FORMAT_FUNCTION(2, 3);
-// Note that you are expecting exactly 'n' patterns
-+ (void)expect:(NSUInteger)n
- casesOfPattern:(NSString*)format, ... NS_FORMAT_FUNCTION(2, 3);
-+ (void)expect:(NSUInteger)n
- casesOfPattern:(NSString*)format
- args:(va_list)args NS_FORMAT_FUNCTION(2, 0);
-
-// Call when you want to verify that you have matched all the logs you expect
-// to match. If your unittests inherit from GTMTestcase (like they should) you
-// will get this called for free.
-+ (void)verifyNoMoreLogsExpected;
-
-// Resets the expected logs so that you don't have anything expected.
-// In general should not be needed, unless you have a variable logging case
-// of some sort.
-+ (void)resetExpectedLogs;
@end
-
-// Does the same as GTMUnitTestDevLog, but the logs are only expected in debug.
-// ie-the expect requests don't count in release builds.
-@interface GTMUnitTestDevLogDebug : GTMUnitTestDevLog
-@end
-
-// The name of the exception that is raised when GTMUnitTestDevLog
-// finds a problem.
-GTM_EXTERN NSString *const GTMLogFailureException;
diff --git a/UnitTesting/GTMUnitTestDevLog.m b/UnitTesting/GTMUnitTestDevLog.m
index 7a12bb0..ae4050f 100644
--- a/UnitTesting/GTMUnitTestDevLog.m
+++ b/UnitTesting/GTMUnitTestDevLog.m
@@ -18,52 +18,12 @@
#import "GTMUnitTestDevLog.h"
-
-#import "GTMRegex.h"
-#import "GTMSenTestCase.h"
-
-#if !defined(__clang__) && (__GNUC__*10+__GNUC_MINOR__ >= 42)
-// Some versions of GCC (4.2 and below AFAIK) aren't great about supporting
-// -Wmissing-format-attribute
-// when the function is anything more complex than foo(NSString *fmt, ...).
-// You see the error inside the function when you turn ... into va_args and
-// attempt to call another function (like vsprintf for example).
-// So we just shut off the warning for this file. We reenable it at the end.
-#pragma GCC diagnostic ignored "-Wmissing-format-attribute"
-#endif // !__clang__
-
-#if !GTM_IPHONE_SDK
-// Add support for grabbing messages from Carbon.
-#import <CoreServices/CoreServices.h>
-static void GTMDevLogDebugAssert(OSType componentSignature,
- UInt32 options,
- const char *assertionString,
- const char *exceptionLabelString,
- const char *errorString,
- const char *fileName,
- long lineNumber,
- void *value,
- ConstStr255Param outputMsg) {
- NSString *outLog = [[[NSString alloc] initWithBytes:&(outputMsg[1])
- length:StrLength(outputMsg)
- encoding:NSMacOSRomanStringEncoding]
- autorelease];
- _GTMDevLog(@"%@", outLog); // Don't want any percents in outLog honored
-}
-static inline void GTMInstallDebugAssertOutputHandler(void) {
- InstallDebugAssertOutputHandler(GTMDevLogDebugAssert);
-}
-static inline void GTMUninstallDebugAssertOutputHandler(void) {
- InstallDebugAssertOutputHandler(NULL);
-}
-#else // GTM_IPHONE_SDK
-static inline void GTMInstallDebugAssertOutputHandler(void) {};
-static inline void GTMUninstallDebugAssertOutputHandler(void) {};
-#endif // GTM_IPHONE_SDK
-
-NSString *const GTMLogFailureException = @"GTMLogFailureException";
-
@interface GTMUnttestDevLogAssertionHandler : NSAssertionHandler
+- (void)handleFailure:(NSString *)functionName
+ file:(NSString *)fileName
+ lineNumber:(NSInteger)line
+ description:(NSString *)format
+ arguments:(va_list)argList NS_FORMAT_FUNCTION(4,0);
@end
@implementation GTMUnttestDevLogAssertionHandler
@@ -72,24 +32,18 @@ NSString *const GTMLogFailureException = @"GTMLogFailureException";
file:(NSString *)fileName
lineNumber:(NSInteger)line
description:(NSString *)format, ... {
+ NSString *call = [NSString stringWithFormat:@"[%@ %@]",
+ NSStringFromClass([object class]),
+ NSStringFromSelector(selector)];
+
va_list argList;
va_start(argList, format);
- NSString *descStr
- = [[[NSString alloc] initWithFormat:format arguments:argList] autorelease];
+ [self handleFailure:call
+ file:fileName
+ lineNumber:line
+ description:format
+ arguments:argList];
va_end(argList);
-
- // You need a format that will be useful in logs, but won't trip up Xcode or
- // any other build systems parsing of the output.
- NSString *outLog
- = [NSString stringWithFormat:@"RecordedNSAssert in %@ - %@ (%@:%ld)",
- NSStringFromSelector(selector),
- descStr,
- fileName, (long)line];
- // To avoid unused variable warning when _GTMDevLog is stripped.
- (void)outLog;
- _GTMDevLog(@"%@", outLog); // Don't want any percents in outLog honored
- [NSException raise:NSInternalInconsistencyException
- format:@"NSAssert raised"];
}
- (void)handleFailureInFunction:(NSString *)functionName
@@ -98,45 +52,38 @@ NSString *const GTMLogFailureException = @"GTMLogFailureException";
description:(NSString *)format, ... {
va_list argList;
va_start(argList, format);
- NSString *descStr
- = [[[NSString alloc] initWithFormat:format arguments:argList] autorelease];
+ [self handleFailure:functionName
+ file:fileName
+ lineNumber:line
+ description:format
+ arguments:argList];
va_end(argList);
+}
+
+- (void)handleFailure:(NSString *)failure
+ file:(NSString *)fileName
+ lineNumber:(NSInteger)line
+ description:(NSString *)format
+ arguments:(va_list)argList {
+ NSString *descStr
+ = [[[NSString alloc] initWithFormat:format arguments:argList] autorelease];
// You need a format that will be useful in logs, but won't trip up Xcode or
// any other build systems parsing of the output.
NSString *outLog
- = [NSString stringWithFormat:@"RecordedNSAssert in %@ - %@ (%@:%ld)",
- functionName,
- descStr,
- fileName, (long)line];
+ = [NSString stringWithFormat:@"RecordedNSAssert in %@ - %@ (%@:%ld)",
+ failure, descStr, fileName, (long)line];
// To avoid unused variable warning when _GTMDevLog is stripped.
(void)outLog;
_GTMDevLog(@"%@", outLog); // Don't want any percents in outLog honored
[NSException raise:NSInternalInconsistencyException
format:@"NSAssert raised"];
}
-
@end
@implementation GTMUnitTestDevLog
-// If unittests are ever being run on separate threads, this may need to be
-// made a thread local variable.
-static BOOL gTrackingEnabled = NO;
-
-+ (NSMutableArray *)patterns {
- static NSMutableArray *patterns = nil;
- if (!patterns) {
- patterns = [[NSMutableArray array] retain];
- }
- return patterns;
-}
-
-+ (BOOL)isTrackingEnabled {
- return gTrackingEnabled;
-}
+ (void)enableTracking {
- GTMInstallDebugAssertOutputHandler();
NSMutableDictionary *threadDictionary
= [[NSThread currentThread] threadDictionary];
@@ -148,154 +95,14 @@ static BOOL gTrackingEnabled = NO;
GTMUnttestDevLogAssertionHandler *handler =
[[[GTMUnttestDevLogAssertionHandler alloc] init] autorelease];
[threadDictionary setObject:handler forKey:@"NSAssertionHandler"];
-
- gTrackingEnabled = YES;
}
+ (void)disableTracking {
- GTMUninstallDebugAssertOutputHandler();
// Clear our assertion handler back out.
NSMutableDictionary *threadDictionary
= [[NSThread currentThread] threadDictionary];
[threadDictionary removeObjectForKey:@"NSAssertionHandler"];
-
- gTrackingEnabled = NO;
}
-+ (void)log:(NSString*)format, ... {
- va_list argList;
- va_start(argList, format);
- [self log:format args:argList];
- va_end(argList);
-}
-
-+ (void)log:(NSString*)format args:(va_list)args {
- if ([self isTrackingEnabled]) {
- NSString *logString = [[[NSString alloc] initWithFormat:format
- arguments:args] autorelease];
- @synchronized(self) {
- NSMutableArray *patterns = [self patterns];
- BOOL logError = [patterns count] == 0 ? YES : NO;
- GTMRegex *regex = nil;
- if (!logError) {
- regex = [[[patterns objectAtIndex:0] retain] autorelease];
- logError = [regex matchesString:logString] ? NO : YES;
- [patterns removeObjectAtIndex:0];
- }
- if (logError) {
-
- if (regex) {
- [NSException raise:GTMLogFailureException
- format:@"Unexpected log: %@\nExpected: %@",
- logString, regex];
- } else {
- [NSException raise:GTMLogFailureException
- format:@"Unexpected log: %@", logString];
- }
- } else {
- static BOOL envChecked = NO;
- static BOOL showExpectedLogs = YES;
- if (!envChecked) {
- showExpectedLogs = getenv("GTM_SHOW_UNITTEST_DEVLOGS") ? YES : NO;
- }
- if (showExpectedLogs) {
- NSLog(@"Expected Log: %@", logString);
- }
- }
- }
- } else {
- NSLogv(format, args);
- }
-}
-
-+ (void)expectString:(NSString *)format, ... {
- va_list argList;
- va_start(argList, format);
- NSString *string = [[[NSString alloc] initWithFormat:format
- arguments:argList] autorelease];
- va_end(argList);
- NSString *pattern = [GTMRegex escapedPatternForString:string];
- [self expect:1 casesOfPattern:@"%@", pattern];
-
-}
-
-+ (void)expectPattern:(NSString *)format, ... {
- va_list argList;
- va_start(argList, format);
- [self expect:1 casesOfPattern:format args:argList];
- va_end(argList);
-}
-
-+ (void)expect:(NSUInteger)n casesOfString:(NSString *)format, ... {
- va_list argList;
- va_start(argList, format);
- NSString *string = [[[NSString alloc] initWithFormat:format
- arguments:argList] autorelease];
- va_end(argList);
- NSString *pattern = [GTMRegex escapedPatternForString:string];
- [self expect:n casesOfPattern:@"%@", pattern];
-}
-
-+ (void)expect:(NSUInteger)n casesOfPattern:(NSString*)format, ... {
- va_list argList;
- va_start(argList, format);
- [self expect:n casesOfPattern:format args:argList];
- va_end(argList);
-}
-
-+ (void)expect:(NSUInteger)n
-casesOfPattern:(NSString*)format
- args:(va_list)args {
- NSString *pattern = [[[NSString alloc] initWithFormat:format
- arguments:args] autorelease];
- GTMRegex *regex = [GTMRegex regexWithPattern:pattern
- options:kGTMRegexOptionSupressNewlineSupport];
- @synchronized(self) {
- NSMutableArray *patterns = [self patterns];
- for (NSUInteger i = 0; i < n; ++i) {
- [patterns addObject:regex];
- }
- }
-}
-
-+ (void)verifyNoMoreLogsExpected {
- @synchronized(self) {
- NSMutableArray *patterns = [self patterns];
- if ([patterns count] > 0) {
- NSMutableArray *patternsCopy = [[patterns copy] autorelease];
- [self resetExpectedLogs];
- [NSException raise:GTMLogFailureException
- format:@"Logs still expected %@", patternsCopy];
- }
- }
-}
-
-+ (void)resetExpectedLogs {
- @synchronized(self) {
- NSMutableArray *patterns = [self patterns];
- [patterns removeAllObjects];
- }
-}
@end
-
-
-@implementation GTMUnitTestDevLogDebug
-
-+ (void)expect:(NSUInteger)n
-casesOfPattern:(NSString*)format
- args:(va_list)args {
-#if DEBUG
- // In debug, let the base work happen
- [super expect:n casesOfPattern:format args:args];
-#else
- // nothing when not in debug
-#endif
-}
-
-@end
-
-#if !defined(__clang__) && (__GNUC__*10+__GNUC_MINOR__ >= 42)
-// See comment at top of file.
-#pragma GCC diagnostic error "-Wmissing-format-attribute"
-#endif // !__clang__
diff --git a/UnitTesting/GTMUnitTestingBindingTest.m b/UnitTesting/GTMUnitTestingBindingTest.m
deleted file mode 100644
index 26ae5df..0000000
--- a/UnitTesting/GTMUnitTestingBindingTest.m
+++ /dev/null
@@ -1,116 +0,0 @@
-//
-// GTMUnitTestingBindingTest.m
-//
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMSenTestCase.h"
-#import "GTMUnitTestingTest.h"
-#import "GTMNSObject+BindingUnitTesting.h"
-
-@interface GTMUnitTestingBindingTest : GTMTestCase {
- int expectedFailureCount_;
-}
-@end
-
-@interface GTMUnitTestingBindingBadClass : NSObject
-@end
-
-@implementation GTMUnitTestingBindingTest
-
-// Iterates through all of our subviews testing the exposed bindings
-- (void)doSubviewBindingTest:(NSView*)view {
- NSArray *subviews = [view subviews];
- NSView *subview;
- GTM_FOREACH_OBJECT(subview, subviews) {
- GTMTestExposedBindings(subview, @"testing %@", subview);
- [self doSubviewBindingTest:subview];
- }
-}
-
-- (void)testBindings {
- // Get our window to work with and test it's bindings
- GTMUnitTestingTestController *testWindowController
- = [[GTMUnitTestingTestController alloc] initWithWindowNibName:@"GTMUnitTestingTest"];
- NSWindow *window = [testWindowController window];
- GTMTestExposedBindings(window, @"Window failed binding test");
- [self doSubviewBindingTest:[window contentView]];
- [window close];
- [testWindowController release];
-
- // Run a test against something with no bindings.
- // We're expecting a failure here.
- expectedFailureCount_ = 1;
- GTMTestExposedBindings(@"foo", @"testing no bindings");
- STAssertEquals(expectedFailureCount_, 0, @"Didn't get expected failures testing bindings");
-
- // Run test against some with bad bindings.
- // We're expecting failures here.
- expectedFailureCount_ = 4;
- GTMUnitTestingBindingBadClass *bad = [[[GTMUnitTestingBindingBadClass alloc] init] autorelease];
- GTMTestExposedBindings(bad, @"testing bad bindings");
- STAssertEquals(expectedFailureCount_, 0, @"Didn't get expected failures testing bad bindings");
-}
-
-- (void)failWithException:(NSException *)anException {
- if (expectedFailureCount_ > 0) {
- expectedFailureCount_ -= 1;
- } else {
- [super failWithException:anException]; // COV_NF_LINE - not expecting exception
- }
-}
-
-@end
-
-// Forces several error cases in our binding tests to test them
-@implementation GTMUnitTestingBindingBadClass
-
-NSString *const kGTMKeyWithNoClass = @"keyWithNoClass";
-NSString *const kGTMKeyWithNoValue = @"keyWithNoValue";
-NSString *const kGTMKeyWeCantSet = @"keyWeCantSet";
-NSString *const kGTMKeyThatIsntEqual = @"keyThatIsntEqual";
-
-- (NSArray *)exposedBindings {
- return [NSArray arrayWithObjects:kGTMKeyWithNoClass,
- kGTMKeyWithNoValue,
- kGTMKeyWeCantSet,
- kGTMKeyThatIsntEqual,
- nil];
-}
-
-- (NSArray*)gtm_unitTestExposedBindingsTestValues:(NSString*)binding {
- GTMBindingUnitTestData *data
- = [GTMBindingUnitTestData testWithIdentityValue:kGTMKeyThatIsntEqual];
- return [NSArray arrayWithObject:data];
-}
-
-- (Class)valueClassForBinding:(NSString*)binding {
- return [binding isEqualTo:kGTMKeyWithNoClass] ? nil : [NSString class];
-}
-
-- (id)valueForKey:(NSString*)binding {
- if ([binding isEqualTo:kGTMKeyWithNoValue]) {
- [NSException raise:NSUndefinedKeyException format:@""];
- }
- return @"foo";
-}
-
-- (void)setValue:(id)value forKey:(NSString*)binding {
- if ([binding isEqualTo:kGTMKeyWeCantSet]) {
- [NSException raise:NSUndefinedKeyException format:@""];
- }
-}
-@end
-
diff --git a/UnitTesting/GTMUnitTestingTest.h b/UnitTesting/GTMUnitTestingTest.h
deleted file mode 100644
index ea9521b..0000000
--- a/UnitTesting/GTMUnitTestingTest.h
+++ /dev/null
@@ -1,29 +0,0 @@
-//
-// GTMUnitTestingTest.h
-//
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import <AppKit/AppKit.h>
-
-// GTMUnitTestingTestController controller so that initWithWindowNibName can
-// find the appropriate bundle to load our nib from. See [GTMUnitTestingTest
-// -testUnitTestingFramework] for more info
-@interface GTMUnitTestingTestController : NSWindowController {
- IBOutlet NSTextField *field_;
-}
-
-- (NSTextField *)textField;
-@end
diff --git a/UnitTesting/GTMUnitTestingTest.m b/UnitTesting/GTMUnitTestingTest.m
deleted file mode 100644
index 0f87d28..0000000
--- a/UnitTesting/GTMUnitTestingTest.m
+++ /dev/null
@@ -1,253 +0,0 @@
-//
-// GTMUnitTestingTest.m
-//
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMSenTestCase.h"
-#import "GTMUnitTestingTest.h"
-#import "GTMAppKit+UnitTesting.h"
-
-NSString *const kGTMWindowNibName = @"GTMUnitTestingTest";
-NSString *const kGTMWindowSaveFileName = @"GTMUnitTestingWindow";
-
-@interface GTMUnitTestingTest : GTMTestCase {
- int expectedFailureCount_;
-}
-@end
-
-// GTMUnitTestingTest support classes
-@interface GTMUnitTestingView : NSObject <GTMUnitTestViewDrawer> {
- BOOL goodContext_;
-}
-- (BOOL)hadGoodContext;
-@end
-
-@interface GTMUnitTestingDelegate : NSObject <NSImageDelegate> {
- BOOL didEncode_;
-}
-- (BOOL)didEncode;
-@end
-
-@interface GTMUnitTestingProxyTest : NSProxy
-- (id)init;
-@end
-
-@implementation GTMUnitTestingTest
-
-// Brings up the window defined in the nib and takes a snapshot of it.
-// We use the "empty" GTMUnitTestingTestController controller so that
-// initWithWindowNibName can find the appropriate bundle to load our nib from.
-// For some reason when running unit tests, with all the injecting going on
-// the nib loader can get confused as to where it should load a nib from.
-// Having a NSWindowController subclass in the same bundle as the nib seems
-// to help the nib loader find the nib, and any custom classes that are attached
-// to it.
-- (void)testUnitTestingFramework {
- // set up our delegates so we can test delegate handling
- GTMUnitTestingDelegate *appDelegate = [[GTMUnitTestingDelegate alloc] init];
- [NSApp setDelegate:appDelegate];
-
- // Get our window
- GTMUnitTestingTestController *testWindowController
- = [[GTMUnitTestingTestController alloc] initWithWindowNibName:kGTMWindowNibName];
- NSWindow *window = [testWindowController window];
- // Test the app state. This will cover windows and menus
- GTMAssertObjectStateEqualToStateNamed(NSApp,
- @"GTMUnitTestingTestApp",
- @"Testing the app state");
-
- // Test the window image and state
- GTMAssertObjectEqualToStateAndImageNamed(window,
- kGTMWindowSaveFileName,
- @"Testing the window image and state");
-
- // Verify that all of our delegate encoders got called
- STAssertTrue([appDelegate didEncode], @"app delegate didn't get called?");
-
- // Clean up
- [NSApp setDelegate:nil];
- [appDelegate release];
- [testWindowController release];
-}
-
-- (void)testViewUnitTesting {
- GTMUnitTestingView *unitTestingView = [[GTMUnitTestingView alloc] init];
- GTMAssertDrawingEqualToImageNamed(unitTestingView,
- NSMakeSize(200,200),
- @"GTMUnitTestingView",
- NSApp,
- @"Testing view drawing");
- STAssertTrue([unitTestingView hadGoodContext], @"bad context?");
- [unitTestingView release];
-}
-
-- (void)testImageUnitTesting {
- NSImage *image = [NSImage imageNamed:@"NSApplicationIcon"];
- GTMUnitTestingDelegate *imgDelegate = [[GTMUnitTestingDelegate alloc] init];
- [image setDelegate:imgDelegate];
- GTMAssertObjectEqualToStateAndImageNamed(image,
- @"GTMUnitTestingImage",
- @"Testing NSImage image and state");
- STAssertTrue([imgDelegate didEncode], @"imgDelegate didn't get called?");
- [image setDelegate:nil];
- [imgDelegate release];
-}
-
-- (void)testFailures {
- NSString *const bogusTestName = @"GTMUnitTestTestingFailTest";
- NSString *tempDir = NSTemporaryDirectory();
- STAssertNotNil(tempDir, @"No Temp Dir?");
- NSString *originalPath = [NSObject gtm_getUnitTestSaveToDirectory];
- STAssertNotNil(originalPath, @"No save dir?");
- [NSObject gtm_setUnitTestSaveToDirectory:tempDir];
- STAssertEqualObjects(tempDir, [NSObject gtm_getUnitTestSaveToDirectory],
- @"Save to dir not set?");
- NSString *statePath = [self gtm_saveToPathForStateNamed:bogusTestName];
- STAssertNotNil(statePath, @"no state path?");
- NSString *imagePath = [self gtm_saveToPathForImageNamed:bogusTestName];
- STAssertNotNil(imagePath, @"no image path?");
- GTMUnitTestingTestController *testWindowController
- = [[GTMUnitTestingTestController alloc] initWithWindowNibName:kGTMWindowNibName];
- NSWindow *window = [testWindowController window];
-
- // Test against a golden master filename that doesn't exist
- expectedFailureCount_ = 2;
- GTMAssertObjectEqualToStateAndImageNamed(window,
- bogusTestName,
- @"Creating image and state files");
- STAssertEquals(expectedFailureCount_, 0,
- @"Didn't get expected failures creating files");
-
- // Change our image and state and verify failures
- [[testWindowController textField] setStringValue:@"Foo"];
- expectedFailureCount_ = 2;
- GTMAssertObjectEqualToStateAndImageNamed(window,
- kGTMWindowSaveFileName,
- @"Testing the window image and state");
- STAssertEquals(expectedFailureCount_, 0,
- @"Didn't get expected failures testing files");
-
- // Now change the size of our image and verify failures
- NSRect oldFrame = [window frame];
- NSRect newFrame = oldFrame;
- newFrame.size.width += 1;
- [window setFrame:newFrame display:YES];
- expectedFailureCount_ = 1;
- GTMAssertObjectImageEqualToImageNamed(window,
- kGTMWindowSaveFileName,
- @"Testing the changed window size");
- [window setFrame:oldFrame display:YES];
-
- // Set our unit test save dir to a bogus directory and
- // run the tests again.
- [NSObject gtm_setUnitTestSaveToDirectory:@"/zim/blatz/foo/bob/bar"];
- expectedFailureCount_ = 2;
- GTMAssertObjectEqualToStateAndImageNamed(window,
- kGTMWindowSaveFileName,
- @"Testing the window image and state");
- STAssertEquals(expectedFailureCount_, 0,
- @"Didn't get expected failures testing files");
- expectedFailureCount_ = 2;
- GTMAssertObjectEqualToStateAndImageNamed(window,
- @"GTMUnitTestingWindowDoesntExist",
- @"Testing the window image and state");
- STAssertEquals(expectedFailureCount_, 0,
- @"Didn't get expected failures testing files");
-
- // Reset our unit test save dir
- [NSObject gtm_setUnitTestSaveToDirectory:nil];
-
- // Test against something that doesn't have an image
- expectedFailureCount_ = 1;
- GTMAssertObjectImageEqualToImageNamed(@"a string",
- @"GTMStringsDontHaveImages",
- @"Testing that strings should fail");
- STAssertEquals(expectedFailureCount_, 0, @"Didn't get expected failures testing files");
-
- // Test against something that doesn't implement our support
- expectedFailureCount_ = 1;
- GTMUnitTestingProxyTest *proxy = [[GTMUnitTestingProxyTest alloc] init];
- GTMAssertObjectStateEqualToStateNamed(proxy,
- @"NSProxiesDontDoState",
- @"Testing that NSProxy should fail");
- STAssertEquals(expectedFailureCount_, 0, @"Didn't get expected failures testing proxy");
- [proxy release];
-
- [window close];
-}
-
-- (void)failWithException:(NSException *)anException {
- if (expectedFailureCount_ > 0) {
- expectedFailureCount_ -= 1;
- } else {
- [super failWithException:anException]; // COV_NF_LINE - not expecting exception
- }
-}
-
-
-@end
-
-@implementation GTMUnitTestingTestController
-- (NSTextField *)textField {
- return field_;
-}
-
-@end
-
-@implementation GTMUnitTestingDelegate
-
-- (void)gtm_unitTestEncoderWillEncode:(id)sender inCoder:(NSCoder*)inCoder {
- // Test various encodings
- [inCoder encodeBool:YES forKey:@"BoolTest"];
- [inCoder encodeInt:1 forKey:@"IntTest"];
- [inCoder encodeInt32:1 forKey:@"Int32Test"];
- [inCoder encodeInt64:1 forKey:@"Int64Test"];
- [inCoder encodeFloat:1.0f forKey:@"FloatTest"];
- [inCoder encodeDouble:1.0 forKey:@"DoubleTest"];
- [inCoder encodeBytes:(const uint8_t*)"BytesTest" length:9 forKey:@"BytesTest"];
- didEncode_ = YES;
-}
-
-- (BOOL)didEncode {
- return didEncode_;
-}
-@end
-
-@implementation GTMUnitTestingView
-
-- (void)gtm_unitTestViewDrawRect:(NSRect)rect contextInfo:(void*)contextInfo {
- [[NSColor redColor] set];
- NSRectFill(rect);
- goodContext_ = [(id)contextInfo isEqualTo:NSApp];
-}
-
-- (BOOL)hadGoodContext {
- return goodContext_;
-}
-@end
-
-// GTMUnitTestingProxyTest is for testing the case where we don't conform to
-// the GTMUnitTestingEncoding protocol.
-@implementation GTMUnitTestingProxyTest
-- (id)init {
- return self;
-}
-
-- (BOOL)conformsToProtocol:(Protocol *)protocol {
- return NO;
-}
-
-@end
diff --git a/UnitTesting/TestData/GTMUIViewUnitTestingTest.gtmUTState b/UnitTesting/TestData/GTMUIViewUnitTestingTest.gtmUTState
deleted file mode 100644
index 87ae9e5..0000000
--- a/UnitTesting/TestData/GTMUIViewUnitTestingTest.gtmUTState
+++ /dev/null
@@ -1,33 +0,0 @@
-<?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>$GTMArchive</key>
- <string>GTMUnitTestingArchive</string>
- <key>$GTMVersion</key>
- <integer>1</integer>
- <key>LayerIsDoublesided</key>
- <true/>
- <key>LayerIsHidden</key>
- <false/>
- <key>LayerIsOpaque</key>
- <true/>
- <key>LayerOpacity</key>
- <real>1</real>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>LayerIsDoublesided</key>
- <true/>
- <key>LayerIsHidden</key>
- <false/>
- <key>LayerIsOpaque</key>
- <true/>
- <key>LayerOpacity</key>
- <real>1</real>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
-</dict>
-</plist>
diff --git a/UnitTesting/TestData/GTMUIViewUnitTestingTest.png b/UnitTesting/TestData/GTMUIViewUnitTestingTest.png
deleted file mode 100644
index 03fd9f0..0000000
--- a/UnitTesting/TestData/GTMUIViewUnitTestingTest.png
+++ /dev/null
Binary files differ
diff --git a/UnitTesting/TestData/GTMUnitTestingImage.10.6.tiff b/UnitTesting/TestData/GTMUnitTestingImage.10.6.tiff
deleted file mode 100644
index ec06a53..0000000
--- a/UnitTesting/TestData/GTMUnitTestingImage.10.6.tiff
+++ /dev/null
Binary files differ
diff --git a/UnitTesting/TestData/GTMUnitTestingImage.gtmUTState b/UnitTesting/TestData/GTMUnitTestingImage.gtmUTState
deleted file mode 100644
index 969ddf6..0000000
--- a/UnitTesting/TestData/GTMUnitTestingImage.gtmUTState
+++ /dev/null
@@ -1,30 +0,0 @@
-<?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>$GTMArchive</key>
- <string>GTMUnitTestingArchive</string>
- <key>$GTMVersion</key>
- <integer>1</integer>
- <key>BoolTest</key>
- <true/>
- <key>BytesTest</key>
- <data>
- Qnl0ZXNUZXN0
- </data>
- <key>DoubleTest</key>
- <real>1</real>
- <key>FloatTest</key>
- <real>1</real>
- <key>ImageName</key>
- <string>NSApplicationIcon</string>
- <key>ImageSize</key>
- <string>{128, 128}</string>
- <key>Int32Test</key>
- <integer>1</integer>
- <key>Int64Test</key>
- <integer>1</integer>
- <key>IntTest</key>
- <integer>1</integer>
-</dict>
-</plist>
diff --git a/UnitTesting/TestData/GTMUnitTestingImage.tiff b/UnitTesting/TestData/GTMUnitTestingImage.tiff
deleted file mode 100644
index 4d08297..0000000
--- a/UnitTesting/TestData/GTMUnitTestingImage.tiff
+++ /dev/null
Binary files differ
diff --git a/UnitTesting/TestData/GTMUnitTestingTest.nib/classes.nib b/UnitTesting/TestData/GTMUnitTestingTest.nib/classes.nib
deleted file mode 100644
index cc51f67..0000000
--- a/UnitTesting/TestData/GTMUnitTestingTest.nib/classes.nib
+++ /dev/null
@@ -1,86 +0,0 @@
-<?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>IBClasses</key>
- <array>
- <dict>
- <key>CLASS</key>
- <string>NSView</string>
- <key>LANGUAGE</key>
- <string>ObjC</string>
- <key>SUPERCLASS</key>
- <string>NSResponder</string>
- </dict>
- <dict>
- <key>CLASS</key>
- <string>NSApplication</string>
- <key>LANGUAGE</key>
- <string>ObjC</string>
- <key>SUPERCLASS</key>
- <string>NSResponder</string>
- </dict>
- <dict>
- <key>CLASS</key>
- <string>NSTextField</string>
- <key>LANGUAGE</key>
- <string>ObjC</string>
- <key>SUPERCLASS</key>
- <string>NSControl</string>
- </dict>
- <dict>
- <key>CLASS</key>
- <string>NSMenu</string>
- <key>LANGUAGE</key>
- <string>ObjC</string>
- <key>SUPERCLASS</key>
- <string>NSObject</string>
- </dict>
- <dict>
- <key>CLASS</key>
- <string>NSControl</string>
- <key>LANGUAGE</key>
- <string>ObjC</string>
- <key>SUPERCLASS</key>
- <string>NSView</string>
- </dict>
- <dict>
- <key>CLASS</key>
- <string>NSObject</string>
- <key>LANGUAGE</key>
- <string>ObjC</string>
- </dict>
- <dict>
- <key>CLASS</key>
- <string>NSCell</string>
- <key>LANGUAGE</key>
- <string>ObjC</string>
- <key>SUPERCLASS</key>
- <string>NSObject</string>
- </dict>
- <dict>
- <key>CLASS</key>
- <string>NSWindow</string>
- <key>LANGUAGE</key>
- <string>ObjC</string>
- <key>SUPERCLASS</key>
- <string>NSResponder</string>
- </dict>
- <dict>
- <key>CLASS</key>
- <string>GTMUnitTestingTestController</string>
- <key>LANGUAGE</key>
- <string>ObjC</string>
- <key>OUTLETS</key>
- <dict>
- <key>field_</key>
- <string>NSTextField</string>
- </dict>
- <key>SUPERCLASS</key>
- <string>NSWindowController</string>
- </dict>
- </array>
- <key>IBVersion</key>
- <string>1</string>
-</dict>
-</plist>
diff --git a/UnitTesting/TestData/GTMUnitTestingTest.nib/designable.nib b/UnitTesting/TestData/GTMUnitTestingTest.nib/designable.nib
new file mode 100644
index 0000000..b2aa6ee
--- /dev/null
+++ b/UnitTesting/TestData/GTMUnitTestingTest.nib/designable.nib
@@ -0,0 +1,1144 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00">
+ <data>
+ <int key="IBDocument.SystemTarget">1050</int>
+ <string key="IBDocument.SystemVersion">15G1004</string>
+ <string key="IBDocument.InterfaceBuilderVersion">11201</string>
+ <string key="IBDocument.AppKitVersion">1404.47</string>
+ <string key="IBDocument.HIToolboxVersion">807.20</string>
+ <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="NS.object.0">11201</string>
+ </object>
+ <array key="IBDocument.IntegratedClassDependencies">
+ <string>NSBox</string>
+ <string>NSButton</string>
+ <string>NSButtonCell</string>
+ <string>NSColorWell</string>
+ <string>NSCustomObject</string>
+ <string>NSProgressIndicator</string>
+ <string>NSScrollView</string>
+ <string>NSScroller</string>
+ <string>NSSearchField</string>
+ <string>NSSearchFieldCell</string>
+ <string>NSSlider</string>
+ <string>NSSliderCell</string>
+ <string>NSTabView</string>
+ <string>NSTabViewItem</string>
+ <string>NSTableColumn</string>
+ <string>NSTableHeaderView</string>
+ <string>NSTableView</string>
+ <string>NSTextField</string>
+ <string>NSTextFieldCell</string>
+ <string>NSTextView</string>
+ <string>NSView</string>
+ <string>NSWindowTemplate</string>
+ </array>
+ <array key="IBDocument.PluginDependencies">
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ </array>
+ <dictionary class="NSMutableDictionary" key="IBDocument.Metadata"/>
+ <array class="NSMutableArray" key="IBDocument.RootObjects" id="948991554">
+ <object class="NSCustomObject" id="774623032">
+ <string key="NSClassName">GTMUnitTestingTestController</string>
+ </object>
+ <object class="NSCustomObject" id="121913320">
+ <string key="NSClassName">FirstResponder</string>
+ </object>
+ <object class="NSCustomObject" id="575648047">
+ <string key="NSClassName">NSApplication</string>
+ </object>
+ <object class="NSWindowTemplate" id="392237883">
+ <int key="NSWindowStyleMask">3</int>
+ <int key="NSWindowBacking">2</int>
+ <string key="NSWindowRect">{{196, 192}, {393, 318}}</string>
+ <int key="NSWTFlags">536871936</int>
+ <string key="NSWindowTitle">Window</string>
+ <string key="NSWindowClass">NSWindow</string>
+ <nil key="NSViewClass"/>
+ <nil key="NSUserInterfaceItemIdentifier"/>
+ <object class="NSView" key="NSWindowView" id="640013893">
+ <nil key="NSNextResponder"/>
+ <int key="NSvFlags">256</int>
+ <array class="NSMutableArray" key="NSSubviews">
+ <object class="NSScrollView" id="85174318">
+ <reference key="NSNextResponder" ref="640013893"/>
+ <int key="NSvFlags">268</int>
+ <array class="NSMutableArray" key="NSSubviews">
+ <object class="NSClipView" id="410309725">
+ <reference key="NSNextResponder" ref="85174318"/>
+ <int key="NSvFlags">2322</int>
+ <array class="NSMutableArray" key="NSSubviews">
+ <object class="NSTableView" id="497150328">
+ <reference key="NSNextResponder" ref="410309725"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrameSize">{223, 32}</string>
+ <reference key="NSSuperview" ref="410309725"/>
+ <reference key="NSNextKeyView" ref="975309690"/>
+ <bool key="NSEnabled">YES</bool>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ <bool key="NSControlAllowsExpansionToolTips">YES</bool>
+ <object class="NSTableHeaderView" key="NSHeaderView" id="218180457">
+ <reference key="NSNextResponder" ref="700173326"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrameSize">{223, 23}</string>
+ <reference key="NSSuperview" ref="700173326"/>
+ <reference key="NSNextKeyView" ref="837150896"/>
+ <reference key="NSTableView" ref="497150328"/>
+ </object>
+ <object class="_NSCornerView" key="NSCornerView" id="837150896">
+ <reference key="NSNextResponder" ref="85174318"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{224, 0}, {16, 23}}</string>
+ <reference key="NSSuperview" ref="85174318"/>
+ <reference key="NSNextKeyView" ref="410309725"/>
+ </object>
+ <array class="NSMutableArray" key="NSTableColumns">
+ <object class="NSTableColumn" id="867115630">
+ <double key="NSWidth">101</double>
+ <double key="NSMinWidth">40</double>
+ <double key="NSMaxWidth">1000</double>
+ <object class="NSTableHeaderCell" key="NSHeaderCell">
+ <int key="NSCellFlags">75497536</int>
+ <int key="NSCellFlags2">2048</int>
+ <string key="NSContents"/>
+ <object class="NSFont" key="NSSupport" id="26">
+ <bool key="IBIsSystemFont">YES</bool>
+ <double key="NSSize">11</double>
+ <int key="NSfFlags">3100</int>
+ </object>
+ <object class="NSColor" key="NSBackgroundColor" id="907423441">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MC4zMzMzMzI5OQA</bytes>
+ </object>
+ <object class="NSColor" key="NSTextColor" id="1031637411">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">headerTextColor</string>
+ <object class="NSColor" key="NSColor" id="637251812">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MAA</bytes>
+ </object>
+ </object>
+ </object>
+ <object class="NSTextFieldCell" key="NSDataCell" id="1026765034">
+ <int key="NSCellFlags">337641536</int>
+ <int key="NSCellFlags2">2048</int>
+ <string key="NSContents">Text Cell</string>
+ <object class="NSFont" key="NSSupport" id="719066366">
+ <bool key="IBIsSystemFont">YES</bool>
+ <double key="NSSize">13</double>
+ <int key="NSfFlags">1044</int>
+ </object>
+ <reference key="NSControlView" ref="497150328"/>
+ <object class="NSColor" key="NSBackgroundColor" id="421034111">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">controlBackgroundColor</string>
+ <object class="NSColor" key="NSColor" id="450059627">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
+ </object>
+ </object>
+ <object class="NSColor" key="NSTextColor" id="183411164">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">controlTextColor</string>
+ <reference key="NSColor" ref="637251812"/>
+ </object>
+ </object>
+ <int key="NSResizingMask">3</int>
+ <bool key="NSIsResizeable">YES</bool>
+ <bool key="NSIsEditable">YES</bool>
+ <reference key="NSTableView" ref="497150328"/>
+ </object>
+ <object class="NSTableColumn" id="328836390">
+ <double key="NSWidth">116</double>
+ <double key="NSMinWidth">40</double>
+ <double key="NSMaxWidth">1000</double>
+ <object class="NSTableHeaderCell" key="NSHeaderCell">
+ <int key="NSCellFlags">75497536</int>
+ <int key="NSCellFlags2">2048</int>
+ <string key="NSContents"/>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSBackgroundColor" ref="907423441"/>
+ <reference key="NSTextColor" ref="1031637411"/>
+ </object>
+ <object class="NSTextFieldCell" key="NSDataCell" id="114565872">
+ <int key="NSCellFlags">337641536</int>
+ <int key="NSCellFlags2">2048</int>
+ <string key="NSContents">Text Cell</string>
+ <reference key="NSSupport" ref="719066366"/>
+ <reference key="NSControlView" ref="497150328"/>
+ <reference key="NSBackgroundColor" ref="421034111"/>
+ <reference key="NSTextColor" ref="183411164"/>
+ </object>
+ <int key="NSResizingMask">3</int>
+ <bool key="NSIsResizeable">YES</bool>
+ <bool key="NSIsEditable">YES</bool>
+ <reference key="NSTableView" ref="497150328"/>
+ </object>
+ </array>
+ <double key="NSIntercellSpacingWidth">3</double>
+ <double key="NSIntercellSpacingHeight">2</double>
+ <reference key="NSBackgroundColor" ref="421034111"/>
+ <object class="NSColor" key="NSGridColor">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">gridColor</string>
+ <object class="NSColor" key="NSColor">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MC41AA</bytes>
+ </object>
+ </object>
+ <double key="NSRowHeight">17</double>
+ <int key="NSTvFlags">-700448768</int>
+ <reference key="NSDelegate"/>
+ <reference key="NSDataSource"/>
+ <int key="NSColumnAutoresizingStyle">4</int>
+ <int key="NSDraggingSourceMaskForLocal">15</int>
+ <int key="NSDraggingSourceMaskForNonLocal">0</int>
+ <bool key="NSAllowsTypeSelect">YES</bool>
+ <int key="NSTableViewDraggingDestinationStyle">0</int>
+ <int key="NSTableViewGroupRowStyle">1</int>
+ </object>
+ </array>
+ <string key="NSFrame">{{1, 23}, {223, 32}}</string>
+ <reference key="NSSuperview" ref="85174318"/>
+ <reference key="NSNextKeyView" ref="497150328"/>
+ <reference key="NSDocView" ref="497150328"/>
+ <reference key="NSBGColor" ref="421034111"/>
+ <int key="NScvFlags">4</int>
+ <bool key="NSAutomaticallyAdjustsContentInsets">YES</bool>
+ </object>
+ <object class="NSScroller" id="975309690">
+ <reference key="NSNextResponder" ref="85174318"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{224, 23}, {15, 32}}</string>
+ <reference key="NSSuperview" ref="85174318"/>
+ <reference key="NSNextKeyView" ref="745203310"/>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ <string key="NSControlAction">_doScroller:</string>
+ <reference key="NSControlTarget" ref="85174318"/>
+ <reference key="NSTarget" ref="85174318"/>
+ <string key="NSAction">_doScroller:</string>
+ <double key="NSCurValue">37</double>
+ <double key="NSPercent">0.1947367936372757</double>
+ </object>
+ <object class="NSScroller" id="745203310">
+ <reference key="NSNextResponder" ref="85174318"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{1, 55}, {223, 15}}</string>
+ <reference key="NSSuperview" ref="85174318"/>
+ <reference key="NSNextKeyView" ref="826932166"/>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ <string key="NSControlAction">_doScroller:</string>
+ <reference key="NSControlTarget" ref="85174318"/>
+ <int key="NSsFlags">1</int>
+ <reference key="NSTarget" ref="85174318"/>
+ <string key="NSAction">_doScroller:</string>
+ <double key="NSPercent">0.57142859697341919</double>
+ </object>
+ <object class="NSClipView" id="700173326">
+ <reference key="NSNextResponder" ref="85174318"/>
+ <int key="NSvFlags">2338</int>
+ <array class="NSMutableArray" key="NSSubviews">
+ <reference ref="218180457"/>
+ </array>
+ <string key="NSFrame">{{1, 0}, {223, 23}}</string>
+ <reference key="NSSuperview" ref="85174318"/>
+ <reference key="NSNextKeyView" ref="218180457"/>
+ <reference key="NSDocView" ref="218180457"/>
+ <bool key="NSAutomaticallyAdjustsContentInsets">YES</bool>
+ </object>
+ <reference ref="837150896"/>
+ </array>
+ <string key="NSFrame">{{20, 227}, {240, 71}}</string>
+ <reference key="NSSuperview" ref="640013893"/>
+ <reference key="NSNextKeyView" ref="700173326"/>
+ <int key="NSsFlags">133170</int>
+ <reference key="NSVScroller" ref="975309690"/>
+ <reference key="NSHScroller" ref="745203310"/>
+ <reference key="NSContentView" ref="410309725"/>
+ <reference key="NSHeaderClipView" ref="700173326"/>
+ <reference key="NSCornerView" ref="837150896"/>
+ <bytes key="NSScrollAmts">QSAAAEEgAABBmAAAQZgAAA</bytes>
+ <double key="NSMinMagnification">0.25</double>
+ <double key="NSMaxMagnification">4</double>
+ <double key="NSMagnification">1</double>
+ </object>
+ <object class="NSBox" id="1010937789">
+ <reference key="NSNextResponder" ref="640013893"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{266, 0}, {5, 318}}</string>
+ <reference key="NSSuperview" ref="640013893"/>
+ <reference key="NSNextKeyView" ref="321194065"/>
+ <string key="NSOffsets">{0, 0}</string>
+ <object class="NSTextFieldCell" key="NSTitleCell">
+ <int key="NSCellFlags">67108864</int>
+ <int key="NSCellFlags2">0</int>
+ <string key="NSContents">Box</string>
+ <reference key="NSSupport" ref="719066366"/>
+ <object class="NSColor" key="NSBackgroundColor" id="938122495">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">textBackgroundColor</string>
+ <object class="NSColor" key="NSColor" id="103793517">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MQA</bytes>
+ </object>
+ </object>
+ <object class="NSColor" key="NSTextColor">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">labelColor</string>
+ <reference key="NSColor" ref="637251812"/>
+ </object>
+ </object>
+ <int key="NSBorderType">3</int>
+ <int key="NSBoxType">2</int>
+ <int key="NSTitlePosition">0</int>
+ <bool key="NSTransparent">NO</bool>
+ </object>
+ <object class="NSTextField" id="321194065">
+ <reference key="NSNextResponder" ref="640013893"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{280, 281}, {38, 17}}</string>
+ <reference key="NSSuperview" ref="640013893"/>
+ <reference key="NSNextKeyView" ref="437142657"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="765978048">
+ <int key="NSCellFlags">68157504</int>
+ <int key="NSCellFlags2">272630784</int>
+ <string key="NSContents">HaHa</string>
+ <reference key="NSSupport" ref="719066366"/>
+ <reference key="NSControlView" ref="321194065"/>
+ <object class="NSColor" key="NSBackgroundColor" id="434344295">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">controlColor</string>
+ <reference key="NSColor" ref="450059627"/>
+ </object>
+ <reference key="NSTextColor" ref="183411164"/>
+ </object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ <int key="NSTextFieldAlignmentRectInsetsVersion">2</int>
+ </object>
+ <object class="NSSearchField" id="437142657">
+ <reference key="NSNextResponder" ref="640013893"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{277, 251}, {96, 22}}</string>
+ <reference key="NSSuperview" ref="640013893"/>
+ <reference key="NSNextKeyView" ref="426312658"/>
+ <bool key="NSViewIsLayerTreeHost">YES</bool>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSSearchFieldCell" key="NSCell" id="581737406">
+ <int key="NSCellFlags">342884416</int>
+ <int key="NSCellFlags2">268436480</int>
+ <string key="NSContents">Still Haven't Found What I'm Searching For</string>
+ <reference key="NSSupport" ref="719066366"/>
+ <reference key="NSControlView" ref="437142657"/>
+ <bool key="NSDrawsBackground">YES</bool>
+ <int key="NSTextBezelStyle">1</int>
+ <reference key="NSBackgroundColor" ref="938122495"/>
+ <reference key="NSTextColor" ref="183411164"/>
+ <object class="NSButtonCell" key="NSSearchButtonCell">
+ <int key="NSCellFlags">0</int>
+ <int key="NSCellFlags2">0</int>
+ <string key="NSContents">search</string>
+ <reference key="NSControlView" ref="437142657"/>
+ <string key="NSAction">_searchFieldSearch:</string>
+ <reference key="NSTarget" ref="581737406"/>
+ <int key="NSButtonFlags">138690560</int>
+ <int key="NSButtonFlags2">0</int>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">400</int>
+ <int key="NSPeriodicInterval">75</int>
+ </object>
+ <object class="NSButtonCell" key="NSCancelButtonCell">
+ <int key="NSCellFlags">0</int>
+ <int key="NSCellFlags2">0</int>
+ <string key="NSContents">clear</string>
+ <array class="NSMutableArray" key="NSAccessibilityOverriddenAttributes">
+ <dictionary class="NSMutableDictionary">
+ <string key="AXDescription">cancel</string>
+ <integer value="1" key="NSAccessibilityEncodedAttributesValueType"/>
+ </dictionary>
+ </array>
+ <reference key="NSControlView" ref="437142657"/>
+ <string key="NSAction">_searchFieldCancel:</string>
+ <reference key="NSTarget" ref="581737406"/>
+ <int key="NSButtonFlags">138690560</int>
+ <int key="NSButtonFlags2">0</int>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">400</int>
+ <int key="NSPeriodicInterval">75</int>
+ </object>
+ <int key="NSMaximumRecents">255</int>
+ <bytes key="NSSearchFieldFlags">BgAAAA</bytes>
+ </object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ <int key="NSTextFieldAlignmentRectInsetsVersion">2</int>
+ </object>
+ <object class="NSTextField" id="426312658">
+ <reference key="NSNextResponder" ref="640013893"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{277, 219}, {96, 22}}</string>
+ <reference key="NSSuperview" ref="640013893"/>
+ <reference key="NSNextKeyView" ref="582902776"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="403080839">
+ <int key="NSCellFlags">-1804599231</int>
+ <int key="NSCellFlags2">272630784</int>
+ <string key="NSContents">Once upon a time</string>
+ <reference key="NSSupport" ref="719066366"/>
+ <reference key="NSControlView" ref="426312658"/>
+ <bool key="NSDrawsBackground">YES</bool>
+ <reference key="NSBackgroundColor" ref="938122495"/>
+ <object class="NSColor" key="NSTextColor">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">textColor</string>
+ <reference key="NSColor" ref="637251812"/>
+ </object>
+ </object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ <int key="NSTextFieldAlignmentRectInsetsVersion">2</int>
+ </object>
+ <object class="NSButton" id="582902776">
+ <reference key="NSNextResponder" ref="640013893"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{275, 195}, {96, 18}}</string>
+ <reference key="NSSuperview" ref="640013893"/>
+ <reference key="NSNextKeyView" ref="938586919"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="540877530">
+ <int key="NSCellFlags">-2080374784</int>
+ <int key="NSCellFlags2">0</int>
+ <string key="NSContents">CheckMate!</string>
+ <reference key="NSSupport" ref="719066366"/>
+ <reference key="NSControlView" ref="582902776"/>
+ <int key="NSButtonFlags">1211912448</int>
+ <int key="NSButtonFlags2">130</int>
+ <object class="NSCustomResource" key="NSNormalImage">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">NSSwitch</string>
+ </object>
+ <object class="NSButtonImageSource" key="NSAlternateImage">
+ <string key="NSImageName">NSSwitch</string>
+ </object>
+ <string key="NSAlternateContents"/>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ </object>
+ <object class="NSSlider" id="938586919">
+ <reference key="NSNextResponder" ref="640013893"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{276, 159}, {96, 21}}</string>
+ <reference key="NSSuperview" ref="640013893"/>
+ <reference key="NSNextKeyView" ref="672462228"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSSliderCell" key="NSCell" id="630356720">
+ <int key="NSCellFlags">-2080374784</int>
+ <int key="NSCellFlags2">0</int>
+ <string key="NSContents"/>
+ <object class="NSFont" key="NSSupport">
+ <string key="NSName">Helvetica</string>
+ <double key="NSSize">12</double>
+ <int key="NSfFlags">16</int>
+ </object>
+ <reference key="NSControlView" ref="938586919"/>
+ <double key="NSMaxValue">100</double>
+ <double key="NSMinValue">0.0</double>
+ <double key="NSValue">50</double>
+ <double key="NSAltIncValue">0.0</double>
+ <int key="NSNumberOfTickMarks">0</int>
+ <int key="NSTickMarkPosition">1</int>
+ <bool key="NSAllowsTickMarkValuesOnly">NO</bool>
+ <bool key="NSVertical">NO</bool>
+ </object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ </object>
+ <object class="NSButton" id="728377240">
+ <reference key="NSNextResponder" ref="640013893"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{275, 115}, {96, 32}}</string>
+ <reference key="NSSuperview" ref="640013893"/>
+ <reference key="NSNextKeyView" ref="146897443"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="808585577">
+ <int key="NSCellFlags">67108864</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string key="NSContents">Cancel</string>
+ <reference key="NSSupport" ref="719066366"/>
+ <reference key="NSControlView" ref="728377240"/>
+ <int key="NSButtonFlags">-2038284288</int>
+ <int key="NSButtonFlags2">129</int>
+ <string key="NSAlternateContents"/>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ </object>
+ <object class="NSColorWell" id="469359029">
+ <reference key="NSNextResponder" ref="640013893"/>
+ <int key="NSvFlags">268</int>
+ <set class="NSMutableSet" key="NSDragTypes">
+ <string>NSColor pasteboard type</string>
+ </set>
+ <string key="NSFrame">{{279, 62}, {87, 23}}</string>
+ <reference key="NSSuperview" ref="640013893"/>
+ <bool key="NSEnabled">YES</bool>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ <bool key="NSIsBordered">YES</bool>
+ <object class="NSColor" key="NSColor">
+ <int key="NSColorSpace">1</int>
+ <bytes key="NSRGB">MC4wNTgxMzA0OTkgMC4wNTU1NDE4OTkgMQA</bytes>
+ </object>
+ </object>
+ <object class="NSProgressIndicator" id="146897443">
+ <reference key="NSNextResponder" ref="640013893"/>
+ <int key="NSvFlags">1292</int>
+ <string key="NSFrame">{{280, 91}, {85, 12}}</string>
+ <reference key="NSSuperview" ref="640013893"/>
+ <reference key="NSNextKeyView" ref="469359029"/>
+ <int key="NSpiFlags">16648</int>
+ <double key="NSMinValue">16</double>
+ <double key="NSMaxValue">100</double>
+ </object>
+ <object class="NSScrollView" id="826932166">
+ <reference key="NSNextResponder" ref="640013893"/>
+ <int key="NSvFlags">256</int>
+ <array class="NSMutableArray" key="NSSubviews">
+ <object class="NSClipView" id="954815377">
+ <reference key="NSNextResponder" ref="826932166"/>
+ <int key="NSvFlags">2322</int>
+ <array class="NSMutableArray" key="NSSubviews">
+ <object class="NSTextView" id="1039988695">
+ <reference key="NSNextResponder" ref="954815377"/>
+ <int key="NSvFlags">2322</int>
+ <string key="NSFrameSize">{223, 54}</string>
+ <reference key="NSSuperview" ref="954815377"/>
+ <reference key="NSNextKeyView" ref="767227615"/>
+ <object class="NSTextContainer" key="NSTextContainer" id="35629099">
+ <object class="NSLayoutManager" key="NSLayoutManager">
+ <object class="NSTextStorage" key="NSTextStorage">
+ <object class="NSMutableString" key="NSString">
+ <characters key="NS.bytes">Lorem ipsum dolor</characters>
+ </object>
+ <dictionary key="NSAttributes">
+ <object class="NSFont" key="NSFont">
+ <bool key="IBIsSystemFont">YES</bool>
+ <double key="NSSize">10</double>
+ <int key="NSfFlags">2843</int>
+ </object>
+ <object class="NSParagraphStyle" key="NSParagraphStyle">
+ <int key="NSAlignment">3</int>
+ <array key="NSTabStops">
+ <object class="NSTextTab">
+ <double key="NSLocation">0.0</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">56</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">112</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">168</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">224</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">280</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">336</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">392</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">448</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">504</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">560</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">616</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">672</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">728</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">784</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">840</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">896</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">952</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">1008</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">1064</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">1120</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">1176</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">1232</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">1288</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">1344</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">1400</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">1456</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">1512</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">1568</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">1624</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">1680</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">1736</double>
+ </object>
+ </array>
+ </object>
+ </dictionary>
+ <nil key="NSDelegate"/>
+ </object>
+ <array class="NSMutableArray" key="NSTextContainers">
+ <reference ref="35629099"/>
+ </array>
+ <int key="NSLMFlags">38</int>
+ <nil key="NSDelegate"/>
+ </object>
+ <reference key="NSTextView" ref="1039988695"/>
+ <double key="NSWidth">223</double>
+ <int key="NSTCFlags">1</int>
+ </object>
+ <object class="NSTextViewSharedData" key="NSSharedData">
+ <int key="NSFlags">67120103</int>
+ <int key="NSTextCheckingTypes">0</int>
+ <nil key="NSMarkedAttributes"/>
+ <reference key="NSBackgroundColor" ref="103793517"/>
+ <dictionary key="NSSelectedAttributes">
+ <object class="NSColor" key="NSBackgroundColor">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">selectedTextBackgroundColor</string>
+ <reference key="NSColor" ref="450059627"/>
+ </object>
+ <object class="NSColor" key="NSColor">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">selectedTextColor</string>
+ <reference key="NSColor" ref="637251812"/>
+ </object>
+ </dictionary>
+ <reference key="NSInsertionColor" ref="183411164"/>
+ <dictionary key="NSLinkAttributes">
+ <object class="NSColor" key="NSColor">
+ <int key="NSColorSpace">1</int>
+ <bytes key="NSRGB">MCAwIDEAA</bytes>
+ </object>
+ <integer value="1" key="NSUnderline"/>
+ </dictionary>
+ <nil key="NSDefaultParagraphStyle"/>
+ <nil key="NSTextFinder"/>
+ <int key="NSPreferredTextFinderStyle">1</int>
+ </object>
+ <int key="NSTVFlags">70</int>
+ <string key="NSMaxSize">{463, 10000000}</string>
+ <nil key="NSDelegate"/>
+ </object>
+ </array>
+ <string key="NSFrame">{{1, 1}, {223, 54}}</string>
+ <reference key="NSSuperview" ref="826932166"/>
+ <reference key="NSNextKeyView" ref="1039988695"/>
+ <reference key="NSDocView" ref="1039988695"/>
+ <reference key="NSBGColor" ref="103793517"/>
+ <object class="NSCursor" key="NSCursor">
+ <string key="NSHotSpot">{4, -5}</string>
+ <int key="NSCursorType">1</int>
+ </object>
+ <int key="NScvFlags">4</int>
+ <bool key="NSAutomaticallyAdjustsContentInsets">YES</bool>
+ </object>
+ <object class="NSScroller" id="767227615">
+ <reference key="NSNextResponder" ref="826932166"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{224, 1}, {15, 54}}</string>
+ <reference key="NSSuperview" ref="826932166"/>
+ <reference key="NSNextKeyView" ref="1010937789"/>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ <string key="NSControlAction">_doScroller:</string>
+ <reference key="NSControlTarget" ref="826932166"/>
+ <reference key="NSTarget" ref="826932166"/>
+ <string key="NSAction">_doScroller:</string>
+ <double key="NSCurValue">1</double>
+ <double key="NSPercent">0.73888885974884033</double>
+ </object>
+ <object class="NSScroller" id="666418199">
+ <reference key="NSNextResponder" ref="826932166"/>
+ <int key="NSvFlags">-2147483392</int>
+ <string key="NSFrame">{{-100, -100}, {87, 18}}</string>
+ <reference key="NSSuperview" ref="826932166"/>
+ <reference key="NSNextKeyView" ref="954815377"/>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ <string key="NSControlAction">_doScroller:</string>
+ <reference key="NSControlTarget" ref="826932166"/>
+ <int key="NSsFlags">1</int>
+ <reference key="NSTarget" ref="826932166"/>
+ <string key="NSAction">_doScroller:</string>
+ <double key="NSCurValue">1</double>
+ <double key="NSPercent">0.94565218687057495</double>
+ </object>
+ </array>
+ <string key="NSFrame">{{20, 163}, {240, 56}}</string>
+ <reference key="NSSuperview" ref="640013893"/>
+ <reference key="NSNextKeyView" ref="666418199"/>
+ <int key="NSsFlags">133138</int>
+ <reference key="NSVScroller" ref="767227615"/>
+ <reference key="NSHScroller" ref="666418199"/>
+ <reference key="NSContentView" ref="954815377"/>
+ <double key="NSMinMagnification">0.25</double>
+ <double key="NSMaxMagnification">4</double>
+ <double key="NSMagnification">1</double>
+ </object>
+ <object class="NSTabView" id="672462228">
+ <reference key="NSNextResponder" ref="640013893"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{13, 25}, {254, 124}}</string>
+ <reference key="NSSuperview" ref="640013893"/>
+ <reference key="NSNextKeyView" ref="940943414"/>
+ <array class="NSMutableArray" key="NSTabViewItems">
+ <object class="NSTabViewItem" id="229928186">
+ <string key="NSIdentifier">1</string>
+ <object class="NSView" key="NSView" id="940943414">
+ <reference key="NSNextResponder" ref="672462228"/>
+ <int key="NSvFlags">274</int>
+ <string key="NSFrame">{{10, 33}, {234, 78}}</string>
+ <reference key="NSSuperview" ref="672462228"/>
+ </object>
+ <string key="NSLabel">Tab</string>
+ <reference key="NSColor" ref="434344295"/>
+ <reference key="NSTabView" ref="672462228"/>
+ </object>
+ <object class="NSTabViewItem" id="984817245">
+ <string key="NSIdentifier">2</string>
+ <object class="NSView" key="NSView" id="50036484">
+ <nil key="NSNextResponder"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{10, 33}, {234, 78}}</string>
+ </object>
+ <string key="NSLabel">View</string>
+ <reference key="NSColor" ref="434344295"/>
+ <reference key="NSTabView" ref="672462228"/>
+ </object>
+ </array>
+ <reference key="NSSelectedTabViewItem" ref="229928186"/>
+ <reference key="NSFont" ref="719066366"/>
+ <int key="NSTvFlags">0</int>
+ <bool key="NSAllowTruncatedLabels">YES</bool>
+ <bool key="NSDrawsBackground">YES</bool>
+ <array class="NSMutableArray" key="NSSubviews">
+ <reference ref="940943414"/>
+ </array>
+ </object>
+ </array>
+ <string key="NSFrameSize">{393, 318}</string>
+ <reference key="NSNextKeyView" ref="85174318"/>
+ </object>
+ <string key="NSScreenRect">{{0, 0}, {2560, 1577}}</string>
+ <bool key="NSWindowIsRestorable">YES</bool>
+ </object>
+ </array>
+ <object class="IBObjectContainer" key="IBDocument.Objects">
+ <array key="connectionRecords">
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">field_</string>
+ <reference key="source" ref="774623032"/>
+ <reference key="destination" ref="426312658"/>
+ </object>
+ <int key="connectionID">45</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">window</string>
+ <reference key="source" ref="774623032"/>
+ <reference key="destination" ref="392237883"/>
+ </object>
+ <int key="connectionID">29</int>
+ </object>
+ </array>
+ <object class="IBMutableOrderedSet" key="objectRecords">
+ <array key="orderedObjects">
+ <object class="IBObjectRecord">
+ <int key="objectID">0</int>
+ <array key="object" id="0"/>
+ <reference key="children" ref="948991554"/>
+ <nil key="parent"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-2</int>
+ <reference key="object" ref="774623032"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">File's Owner</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-1</int>
+ <reference key="object" ref="121913320"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">First Responder</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-3</int>
+ <reference key="object" ref="575648047"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">Application</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1</int>
+ <reference key="object" ref="392237883"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="640013893"/>
+ </array>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">Window (Window)</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2</int>
+ <reference key="object" ref="640013893"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="728377240"/>
+ <reference ref="85174318"/>
+ <reference ref="321194065"/>
+ <reference ref="437142657"/>
+ <reference ref="426312658"/>
+ <reference ref="582902776"/>
+ <reference ref="826932166"/>
+ <reference ref="1010937789"/>
+ <reference ref="938586919"/>
+ <reference ref="146897443"/>
+ <reference ref="469359029"/>
+ <reference ref="672462228"/>
+ </array>
+ <reference key="parent" ref="392237883"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">5</int>
+ <reference key="object" ref="728377240"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="808585577"/>
+ </array>
+ <reference key="parent" ref="640013893"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">7</int>
+ <reference key="object" ref="85174318"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="497150328"/>
+ <reference ref="745203310"/>
+ <reference ref="218180457"/>
+ <reference ref="975309690"/>
+ </array>
+ <reference key="parent" ref="640013893"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">10</int>
+ <reference key="object" ref="497150328"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="867115630"/>
+ <reference ref="328836390"/>
+ </array>
+ <reference key="parent" ref="85174318"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">12</int>
+ <reference key="object" ref="867115630"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="1026765034"/>
+ </array>
+ <reference key="parent" ref="497150328"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">15</int>
+ <reference key="object" ref="1026765034"/>
+ <reference key="parent" ref="867115630"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">13</int>
+ <reference key="object" ref="328836390"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="114565872"/>
+ </array>
+ <reference key="parent" ref="497150328"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">14</int>
+ <reference key="object" ref="114565872"/>
+ <reference key="parent" ref="328836390"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">16</int>
+ <reference key="object" ref="321194065"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="765978048"/>
+ </array>
+ <reference key="parent" ref="640013893"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">18</int>
+ <reference key="object" ref="437142657"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="581737406"/>
+ </array>
+ <reference key="parent" ref="640013893"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">20</int>
+ <reference key="object" ref="426312658"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="403080839"/>
+ </array>
+ <reference key="parent" ref="640013893"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">22</int>
+ <reference key="object" ref="582902776"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="540877530"/>
+ </array>
+ <reference key="parent" ref="640013893"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">24</int>
+ <reference key="object" ref="826932166"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="1039988695"/>
+ <reference ref="666418199"/>
+ <reference ref="767227615"/>
+ </array>
+ <reference key="parent" ref="640013893"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">27</int>
+ <reference key="object" ref="1039988695"/>
+ <reference key="parent" ref="826932166"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">28</int>
+ <reference key="object" ref="1010937789"/>
+ <reference key="parent" ref="640013893"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">66</int>
+ <reference key="object" ref="938586919"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="630356720"/>
+ </array>
+ <reference key="parent" ref="640013893"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">68</int>
+ <reference key="object" ref="146897443"/>
+ <reference key="parent" ref="640013893"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">69</int>
+ <reference key="object" ref="469359029"/>
+ <reference key="parent" ref="640013893"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">70</int>
+ <reference key="object" ref="672462228"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="229928186"/>
+ <reference ref="984817245"/>
+ </array>
+ <reference key="parent" ref="640013893"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">71</int>
+ <reference key="object" ref="229928186"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="940943414"/>
+ </array>
+ <reference key="parent" ref="672462228"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">74</int>
+ <reference key="object" ref="940943414"/>
+ <reference key="parent" ref="229928186"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">72</int>
+ <reference key="object" ref="984817245"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="50036484"/>
+ </array>
+ <reference key="parent" ref="672462228"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">73</int>
+ <reference key="object" ref="50036484"/>
+ <reference key="parent" ref="984817245"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">77</int>
+ <reference key="object" ref="808585577"/>
+ <reference key="parent" ref="728377240"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">78</int>
+ <reference key="object" ref="765978048"/>
+ <reference key="parent" ref="321194065"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">79</int>
+ <reference key="object" ref="581737406"/>
+ <reference key="parent" ref="437142657"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">80</int>
+ <reference key="object" ref="403080839"/>
+ <reference key="parent" ref="426312658"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">81</int>
+ <reference key="object" ref="540877530"/>
+ <reference key="parent" ref="582902776"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">82</int>
+ <reference key="object" ref="630356720"/>
+ <reference key="parent" ref="938586919"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">83</int>
+ <reference key="object" ref="745203310"/>
+ <reference key="parent" ref="85174318"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">84</int>
+ <reference key="object" ref="218180457"/>
+ <reference key="parent" ref="85174318"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">85</int>
+ <reference key="object" ref="975309690"/>
+ <reference key="parent" ref="85174318"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">86</int>
+ <reference key="object" ref="666418199"/>
+ <reference key="parent" ref="826932166"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">87</int>
+ <reference key="object" ref="767227615"/>
+ <reference key="parent" ref="826932166"/>
+ </object>
+ </array>
+ </object>
+ <dictionary class="NSMutableDictionary" key="flattenedProperties">
+ <string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="-3.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <boolean value="YES" key="1.NSWindowTemplate.visibleAtLaunch"/>
+ <string key="10.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="12.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="13.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="14.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="15.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="16.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="18.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="20.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="22.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="24.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="27.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="28.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="5.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="66.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="68.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="69.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="7.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="70.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="71.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="72.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="73.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="74.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="77.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="78.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="79.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="80.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="81.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="82.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="83.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="84.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="85.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="86.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="87.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ </dictionary>
+ <dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
+ <nil key="activeLocalization"/>
+ <dictionary class="NSMutableDictionary" key="localizations"/>
+ <nil key="sourceID"/>
+ <int key="maxID">87</int>
+ </object>
+ <object class="IBClassDescriber" key="IBDocument.Classes"/>
+ <int key="IBDocument.localizationMode">0</int>
+ <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
+ <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
+ <integer value="1050" key="NS.object.0"/>
+ </object>
+ <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
+ <integer value="4600" key="NS.object.0"/>
+ </object>
+ <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
+ <int key="IBDocument.defaultPropertyAccessControl">3</int>
+ <object class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
+ <string key="NS.key.0">NSSwitch</string>
+ <string key="NS.object.0">{15, 15}</string>
+ </object>
+ </data>
+</archive>
diff --git a/UnitTesting/TestData/GTMUnitTestingTest.nib/info.nib b/UnitTesting/TestData/GTMUnitTestingTest.nib/info.nib
deleted file mode 100644
index 3fb1618..0000000
--- a/UnitTesting/TestData/GTMUnitTestingTest.nib/info.nib
+++ /dev/null
@@ -1,20 +0,0 @@
-<?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>IBFramework Version</key>
- <string>644</string>
- <key>IBLastKnownRelativeProjectPath</key>
- <string>../GTM.xcodeproj</string>
- <key>IBOldestOS</key>
- <integer>5</integer>
- <key>IBOpenObjects</key>
- <array>
- <integer>2</integer>
- </array>
- <key>IBSystem Version</key>
- <string>9C31</string>
- <key>targetFramework</key>
- <string>IBCocoaFramework</string>
-</dict>
-</plist>
diff --git a/UnitTesting/TestData/GTMUnitTestingTest.nib/keyedobjects.nib b/UnitTesting/TestData/GTMUnitTestingTest.nib/keyedobjects.nib
index d3104e2..8a771e8 100644
--- a/UnitTesting/TestData/GTMUnitTestingTest.nib/keyedobjects.nib
+++ b/UnitTesting/TestData/GTMUnitTestingTest.nib/keyedobjects.nib
Binary files differ
diff --git a/UnitTesting/TestData/GTMUnitTestingTestApp.10.6.gtmUTState b/UnitTesting/TestData/GTMUnitTestingTestApp.10.6.gtmUTState
deleted file mode 100644
index 2f2ef56..0000000
--- a/UnitTesting/TestData/GTMUnitTestingTestApp.10.6.gtmUTState
+++ /dev/null
@@ -1,2608 +0,0 @@
-<?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>$GTMArchive</key>
- <string>GTMUnitTestingArchive</string>
- <key>$GTMVersion</key>
- <integer>1</integer>
- <key>ApplicationMainWindow</key>
- <integer>0</integer>
- <key>BoolTest</key>
- <true/>
- <key>BytesTest</key>
- <data>
- Qnl0ZXNUZXN0
- </data>
- <key>DoubleTest</key>
- <real>1</real>
- <key>FloatTest</key>
- <real>1</real>
- <key>Int32Test</key>
- <integer>1</integer>
- <key>Int64Test</key>
- <integer>1</integer>
- <key>IntTest</key>
- <integer>1</integer>
- <key>MenuBar</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>About NewApplication</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 10</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Quit NewApplication</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>,</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Preferences…</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuTitle</key>
- <string>Services</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Services</string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 6</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>h</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Hide NewApplication</string>
- </dict>
- <key>MenuItem 7</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>h</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Hide Others</string>
- </dict>
- <key>MenuItem 8</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show All</string>
- </dict>
- <key>MenuItem 9</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>n</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>New</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>o</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Open…</string>
- </dict>
- <key>MenuItem 10</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>P</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Page Setup...</string>
- <key>MenuItemTooltip</key>
- <string></string>
- </dict>
- <key>MenuItem 11</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>p</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Print…</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Clear Menu</string>
- </dict>
- <key>MenuTitle</key>
- <string>Open Recent</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Open Recent</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>w</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Close</string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <true/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>w</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Close All</string>
- </dict>
- <key>MenuItem 6</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>s</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Save</string>
- </dict>
- <key>MenuItem 7</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>S</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Save As…</string>
- </dict>
- <key>MenuItem 8</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Revert to Saved</string>
- </dict>
- <key>MenuItem 9</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuTitle</key>
- <string>File</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>File</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>z</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Undo</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>Z</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Redo</string>
- </dict>
- <key>MenuItem 10</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>:</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Spelling…</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>;</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Check Spelling</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Check Spelling While Typing</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Check Grammar With Spelling</string>
- </dict>
- <key>MenuTitle</key>
- <string>Spelling and Grammar</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Spelling and Grammar</string>
- </dict>
- <key>MenuItem 11</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>1</integer>
- <key>MenuItemTitle</key>
- <string>Smart Copy/Paste</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>2</integer>
- <key>MenuItemTitle</key>
- <string>Smart Quotes</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>3</integer>
- <key>MenuItemTitle</key>
- <string>Smart Links</string>
- </dict>
- <key>MenuTitle</key>
- <string>Substitutions</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Substitutions</string>
- </dict>
- <key>MenuItem 12</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Start Speaking</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Stop Speaking</string>
- </dict>
- <key>MenuTitle</key>
- <string>Speech</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Speech</string>
- </dict>
- <key>MenuItem 13</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 14</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Special Characters…</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>x</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Cut</string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>c</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Copy</string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>v</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Paste</string>
- </dict>
- <key>MenuItem 6</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Delete</string>
- </dict>
- <key>MenuItem 7</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>a</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Select All</string>
- </dict>
- <key>MenuItem 8</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 9</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>f</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>1</integer>
- <key>MenuItemTitle</key>
- <string>Find…</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>g</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>2</integer>
- <key>MenuItemTitle</key>
- <string>Find Next</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>G</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>3</integer>
- <key>MenuItemTitle</key>
- <string>Find Previous</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>e</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>7</integer>
- <key>MenuItemTitle</key>
- <string>Use Selection for Find</string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>j</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Jump to Selection</string>
- </dict>
- <key>MenuTitle</key>
- <string>Find</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Find</string>
- </dict>
- <key>MenuTitle</key>
- <string>Edit</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Edit</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>t</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>¬Menu Item</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>C</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Colors</string>
- </dict>
- <key>MenuTitle</key>
- <string>¬Menu Title</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>¬Menu Title</string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>t</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Toolbar</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Customize Toolbar…</string>
- </dict>
- <key>MenuTitle</key>
- <string>View</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>View</string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>?</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>NewApplication Help</string>
- </dict>
- <key>MenuTitle</key>
- <string>Help</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Help</string>
- </dict>
- <key>MenuTitle</key>
- <string>AMainMenu</string>
- </dict>
- <key>Window 0</key>
- <dict>
- <key>WindowContent</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSTableView</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>ViewSubView 1</key>
- <dict>
- <key>ControlIsEnabled</key>
- <false/>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSScroller</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 2</key>
- <dict>
- <key>ControlIsEnabled</key>
- <false/>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSScroller</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 3</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>ViewSubView 4</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>ViewSubView 1</key>
- <dict>
- <key>BoxBorderType</key>
- <integer>3</integer>
- <key>BoxTitle</key>
- <string>Box</string>
- <key>BoxTitlePosition</key>
- <integer>0</integer>
- <key>BoxType</key>
- <integer>2</integer>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 10</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewMenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Cut</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Copy</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Paste</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Fonts</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>2</integer>
- <key>MenuItemTitle</key>
- <string>Bold</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>1</integer>
- <key>MenuItemTitle</key>
- <string>Italic</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Underline</string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Outline</string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Styles…</string>
- </dict>
- <key>MenuItem 6</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Colors</string>
- </dict>
- <key>MenuTitle</key>
- <string>Font</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Font</string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Spelling and Grammar</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Check Document Now</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Check Spelling While Typing</string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Check Grammar With Spelling</string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Correct Spelling Automatically</string>
- </dict>
- <key>MenuTitle</key>
- <string>Spelling and Grammar</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Spelling and Grammar</string>
- </dict>
- <key>MenuItem 6</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Replace Quotes</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Replace Dashes</string>
- </dict>
- <key>MenuItem 10</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Smart Links</string>
- </dict>
- <key>MenuItem 11</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Data Detectors</string>
- </dict>
- <key>MenuItem 12</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Text Replacement</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Add Links</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Replace Text</string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Substitutions</string>
- </dict>
- <key>MenuItem 6</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 7</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Smart Copy/Paste</string>
- </dict>
- <key>MenuItem 8</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Smart Quotes</string>
- </dict>
- <key>MenuItem 9</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Smart Dashes</string>
- </dict>
- <key>MenuTitle</key>
- <string>Substitutions</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Substitutions</string>
- </dict>
- <key>MenuItem 7</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Make Upper Case</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Make Lower Case</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Capitalize</string>
- </dict>
- <key>MenuTitle</key>
- <string>Transformations</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Transformations</string>
- </dict>
- <key>MenuItem 8</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Start Speaking</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Stop Speaking</string>
- </dict>
- <key>MenuTitle</key>
- <string>Speech</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Speech</string>
- </dict>
- <key>MenuItem 9</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Paragraph</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>-1</integer>
- <key>MenuItemTitle</key>
- <string> Default</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string> Left to Right</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>1</integer>
- <key>MenuItemTitle</key>
- <string> Right to Left</string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Selection</string>
- </dict>
- <key>MenuItem 6</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>-1</integer>
- <key>MenuItemTitle</key>
- <string> Default</string>
- </dict>
- <key>MenuItem 7</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string> Left to Right</string>
- </dict>
- <key>MenuItem 8</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>1</integer>
- <key>MenuItemTitle</key>
- <string> Right to Left</string>
- </dict>
- <key>MenuTitle</key>
- <string>Writing Direction</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Writing Direction</string>
- </dict>
- <key>MenuTitle</key>
- <string>Menu</string>
- </dict>
- </dict>
- </dict>
- <key>ViewSubView 1</key>
- <dict>
- <key>ControlIsEnabled</key>
- <false/>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSScroller</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 2</key>
- <dict>
- <key>ControlIsEnabled</key>
- <false/>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSScroller</string>
- <key>ViewIsHidden</key>
- <true/>
- </dict>
- </dict>
- <key>ViewSubView 11</key>
- <dict>
- <key>TabItem 0</key>
- <dict>
- <key>TabLabel</key>
- <string>Tab</string>
- <key>TabView</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>TabItem 1</key>
- <dict>
- <key>TabLabel</key>
- <string>View</string>
- <key>TabView</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>ViewSubView 2</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>0</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>HaHa</string>
- <key>CellValue</key>
- <string>HaHa</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSTextField</string>
- <key>ControlValue</key>
- <string>HaHa</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 3</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>0</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>Still Haven't Found What I'm Searching For</string>
- <key>CellValue</key>
- <string>Still Haven't Found What I'm Searching For</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSSearchField</string>
- <key>ControlValue</key>
- <string>Still Haven't Found What I'm Searching For</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 4</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>1</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>Once upon a time</string>
- <key>CellValue</key>
- <string>Once upon a time</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSTextField</string>
- <key>ControlValue</key>
- <string>Once upon a time</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 5</key>
- <dict>
- <key>ButtonAlternateTitle</key>
- <string></string>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>1</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>CheckMate!</string>
- <key>CellValue</key>
- <string>1</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSButton</string>
- <key>ControlValue</key>
- <string>1</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 6</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>1</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string></string>
- <key>CellValue</key>
- <string>50</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSSlider</string>
- <key>ControlValue</key>
- <string>50</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 7</key>
- <dict>
- <key>ButtonAlternateTitle</key>
- <string></string>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>0</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>Cancel</string>
- <key>CellValue</key>
- <string>0</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSButton</string>
- <key>ControlValue</key>
- <string>0</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 8</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSColorWell</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 9</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>WindowIsMain</key>
- <false/>
- <key>WindowIsVisible</key>
- <true/>
- <key>WindowTitle</key>
- <string>Window</string>
- </dict>
-</dict>
-</plist>
diff --git a/UnitTesting/TestData/GTMUnitTestingTestApp.gtmUTState b/UnitTesting/TestData/GTMUnitTestingTestApp.gtmUTState
deleted file mode 100644
index db045bf..0000000
--- a/UnitTesting/TestData/GTMUnitTestingTestApp.gtmUTState
+++ /dev/null
@@ -1,2204 +0,0 @@
-<?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>$GTMArchive</key>
- <string>GTMUnitTestingArchive</string>
- <key>$GTMVersion</key>
- <integer>1</integer>
- <key>ApplicationMainWindow</key>
- <integer>0</integer>
- <key>BoolTest</key>
- <true/>
- <key>BytesTest</key>
- <data>
- Qnl0ZXNUZXN0
- </data>
- <key>DoubleTest</key>
- <real>1</real>
- <key>FloatTest</key>
- <real>1</real>
- <key>Int32Test</key>
- <integer>1</integer>
- <key>Int64Test</key>
- <integer>1</integer>
- <key>IntTest</key>
- <integer>1</integer>
- <key>MenuBar</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>About NewApplication</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 10</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Quit NewApplication</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>,</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Preferences…</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuTitle</key>
- <string>Services</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Services</string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 6</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>h</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Hide NewApplication</string>
- </dict>
- <key>MenuItem 7</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>h</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Hide Others</string>
- </dict>
- <key>MenuItem 8</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show All</string>
- </dict>
- <key>MenuItem 9</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>n</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>New</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>o</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Open…</string>
- </dict>
- <key>MenuItem 10</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>P</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Page Setup...</string>
- <key>MenuItemTooltip</key>
- <string></string>
- </dict>
- <key>MenuItem 11</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>p</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Print…</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Clear Menu</string>
- </dict>
- <key>MenuTitle</key>
- <string>Open Recent</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Open Recent</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>w</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Close</string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <true/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>w</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Close All</string>
- </dict>
- <key>MenuItem 6</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>s</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Save</string>
- </dict>
- <key>MenuItem 7</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>S</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Save As…</string>
- </dict>
- <key>MenuItem 8</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Revert to Saved</string>
- </dict>
- <key>MenuItem 9</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuTitle</key>
- <string>File</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>File</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>z</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Undo</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>Z</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Redo</string>
- </dict>
- <key>MenuItem 10</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>:</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Spelling…</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>;</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Check Spelling</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Check Spelling While Typing</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Check Grammar With Spelling</string>
- </dict>
- <key>MenuTitle</key>
- <string>Spelling and Grammar</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Spelling and Grammar</string>
- </dict>
- <key>MenuItem 11</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>1</integer>
- <key>MenuItemTitle</key>
- <string>Smart Copy/Paste</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>2</integer>
- <key>MenuItemTitle</key>
- <string>Smart Quotes</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>3</integer>
- <key>MenuItemTitle</key>
- <string>Smart Links</string>
- </dict>
- <key>MenuTitle</key>
- <string>Substitutions</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Substitutions</string>
- </dict>
- <key>MenuItem 12</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Start Speaking</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Stop Speaking</string>
- </dict>
- <key>MenuTitle</key>
- <string>Speech</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Speech</string>
- </dict>
- <key>MenuItem 13</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 14</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Special Characters…</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>x</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Cut</string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>c</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Copy</string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>v</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Paste</string>
- </dict>
- <key>MenuItem 6</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Delete</string>
- </dict>
- <key>MenuItem 7</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>a</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Select All</string>
- </dict>
- <key>MenuItem 8</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 9</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>f</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>1</integer>
- <key>MenuItemTitle</key>
- <string>Find…</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>g</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>2</integer>
- <key>MenuItemTitle</key>
- <string>Find Next</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>G</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>3</integer>
- <key>MenuItemTitle</key>
- <string>Find Previous</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>e</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>7</integer>
- <key>MenuItemTitle</key>
- <string>Use Selection for Find</string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>j</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Jump to Selection</string>
- </dict>
- <key>MenuTitle</key>
- <string>Find</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Find</string>
- </dict>
- <key>MenuTitle</key>
- <string>Edit</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Edit</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>t</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>¬Menu Item</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>C</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Colors</string>
- </dict>
- <key>MenuTitle</key>
- <string>¬Menu Title</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>¬Menu Title</string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>t</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Toolbar</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Customize Toolbar…</string>
- </dict>
- <key>MenuTitle</key>
- <string>View</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>View</string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>?</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>NewApplication Help</string>
- </dict>
- <key>MenuTitle</key>
- <string>Help</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Help</string>
- </dict>
- <key>MenuTitle</key>
- <string>AMainMenu</string>
- </dict>
- <key>Window 0</key>
- <dict>
- <key>WindowContent</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSTableView</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>ViewSubView 1</key>
- <dict>
- <key>ControlIsEnabled</key>
- <false/>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSScroller</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 2</key>
- <dict>
- <key>ControlIsEnabled</key>
- <false/>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSScroller</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 3</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>ViewSubView 4</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>ViewSubView 1</key>
- <dict>
- <key>BoxBorderType</key>
- <integer>3</integer>
- <key>BoxTitle</key>
- <string>Box</string>
- <key>BoxTitlePosition</key>
- <integer>0</integer>
- <key>BoxType</key>
- <integer>2</integer>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 10</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewMenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Cut</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Copy</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Paste</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Fonts</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>2</integer>
- <key>MenuItemTitle</key>
- <string>Bold</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>1</integer>
- <key>MenuItemTitle</key>
- <string>Italic</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Underline</string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Outline</string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Styles…</string>
- </dict>
- <key>MenuItem 6</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 7</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Colors</string>
- </dict>
- <key>MenuTitle</key>
- <string>Font</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Font</string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Spelling and Grammar</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Check Document Now</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Check Spelling While Typing</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Check Grammar With Spelling</string>
- </dict>
- <key>MenuTitle</key>
- <string>Spelling and Grammar</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Spelling and Grammar</string>
- </dict>
- <key>MenuItem 6</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Smart Copy/Paste</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Smart Quotes</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Smart Links</string>
- </dict>
- <key>MenuTitle</key>
- <string>Substitutions</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Substitutions</string>
- </dict>
- <key>MenuItem 7</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Start Speaking</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Stop Speaking</string>
- </dict>
- <key>MenuTitle</key>
- <string>Speech</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Speech</string>
- </dict>
- <key>MenuItem 8</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>-1</integer>
- <key>MenuItemTitle</key>
- <string>Default</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Left to Right</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>1</integer>
- <key>MenuItemTitle</key>
- <string>Right to Left</string>
- </dict>
- <key>MenuTitle</key>
- <string>Writing Direction</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Writing Direction</string>
- </dict>
- <key>MenuTitle</key>
- <string>Menu</string>
- </dict>
- </dict>
- </dict>
- <key>ViewSubView 1</key>
- <dict>
- <key>ControlIsEnabled</key>
- <false/>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSScroller</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 2</key>
- <dict>
- <key>ControlIsEnabled</key>
- <false/>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSScroller</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>ViewSubView 11</key>
- <dict>
- <key>TabItem 0</key>
- <dict>
- <key>TabLabel</key>
- <string>Tab</string>
- <key>TabView</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>TabItem 1</key>
- <dict>
- <key>TabLabel</key>
- <string>View</string>
- <key>TabView</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>ViewSubView 2</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>0</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>HaHa</string>
- <key>CellValue</key>
- <string>HaHa</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSTextField</string>
- <key>ControlValue</key>
- <string>HaHa</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 3</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>0</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>Still Haven't Found What I'm Searching For</string>
- <key>CellValue</key>
- <string>Still Haven't Found What I'm Searching For</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSSearchField</string>
- <key>ControlValue</key>
- <string>Still Haven't Found What I'm Searching For</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 4</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>1</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>Once upon a time</string>
- <key>CellValue</key>
- <string>Once upon a time</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSTextField</string>
- <key>ControlValue</key>
- <string>Once upon a time</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 5</key>
- <dict>
- <key>ButtonAlternateTitle</key>
- <string></string>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>1</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>CheckMate!</string>
- <key>CellValue</key>
- <string>1</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSButton</string>
- <key>ControlValue</key>
- <string>1</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 6</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>1</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string></string>
- <key>CellValue</key>
- <string>50</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSSlider</string>
- <key>ControlValue</key>
- <string>50</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 7</key>
- <dict>
- <key>ButtonAlternateTitle</key>
- <string></string>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>0</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>Cancel</string>
- <key>CellValue</key>
- <string>0</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSButton</string>
- <key>ControlValue</key>
- <string>0</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 8</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSColorWell</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 9</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>WindowIsMain</key>
- <false/>
- <key>WindowIsVisible</key>
- <true/>
- <key>WindowTitle</key>
- <string>Window</string>
- </dict>
-</dict>
-</plist>
diff --git a/UnitTesting/TestData/GTMUnitTestingView.10.6.tiff b/UnitTesting/TestData/GTMUnitTestingView.10.6.tiff
deleted file mode 100644
index 3b7545b..0000000
--- a/UnitTesting/TestData/GTMUnitTestingView.10.6.tiff
+++ /dev/null
Binary files differ
diff --git a/UnitTesting/TestData/GTMUnitTestingView.tiff b/UnitTesting/TestData/GTMUnitTestingView.tiff
deleted file mode 100644
index 228df73..0000000
--- a/UnitTesting/TestData/GTMUnitTestingView.tiff
+++ /dev/null
Binary files differ
diff --git a/UnitTesting/TestData/GTMUnitTestingWindow.10.5.6.tiff b/UnitTesting/TestData/GTMUnitTestingWindow.10.5.6.tiff
deleted file mode 100644
index 9179576..0000000
--- a/UnitTesting/TestData/GTMUnitTestingWindow.10.5.6.tiff
+++ /dev/null
Binary files differ
diff --git a/UnitTesting/TestData/GTMUnitTestingWindow.10.5.7.tiff b/UnitTesting/TestData/GTMUnitTestingWindow.10.5.7.tiff
deleted file mode 100644
index 9179576..0000000
--- a/UnitTesting/TestData/GTMUnitTestingWindow.10.5.7.tiff
+++ /dev/null
Binary files differ
diff --git a/UnitTesting/TestData/GTMUnitTestingWindow.10.5.8.tiff b/UnitTesting/TestData/GTMUnitTestingWindow.10.5.8.tiff
deleted file mode 100644
index 9179576..0000000
--- a/UnitTesting/TestData/GTMUnitTestingWindow.10.5.8.tiff
+++ /dev/null
Binary files differ
diff --git a/UnitTesting/TestData/GTMUnitTestingWindow.10.6.gtmUTState b/UnitTesting/TestData/GTMUnitTestingWindow.10.6.gtmUTState
deleted file mode 100644
index 02ec00d..0000000
--- a/UnitTesting/TestData/GTMUnitTestingWindow.10.6.gtmUTState
+++ /dev/null
@@ -1,1308 +0,0 @@
-<?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>$GTMArchive</key>
- <string>GTMUnitTestingArchive</string>
- <key>$GTMVersion</key>
- <integer>1</integer>
- <key>WindowContent</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSTableView</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>ViewSubView 1</key>
- <dict>
- <key>ControlIsEnabled</key>
- <false/>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSScroller</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 2</key>
- <dict>
- <key>ControlIsEnabled</key>
- <false/>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSScroller</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 3</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>ViewSubView 4</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>ViewSubView 1</key>
- <dict>
- <key>BoxBorderType</key>
- <integer>3</integer>
- <key>BoxTitle</key>
- <string>Box</string>
- <key>BoxTitlePosition</key>
- <integer>0</integer>
- <key>BoxType</key>
- <integer>2</integer>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 10</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewMenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Cut</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Copy</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Paste</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Fonts</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>2</integer>
- <key>MenuItemTitle</key>
- <string>Bold</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>1</integer>
- <key>MenuItemTitle</key>
- <string>Italic</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Underline</string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Outline</string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Styles…</string>
- </dict>
- <key>MenuItem 6</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Colors</string>
- </dict>
- <key>MenuTitle</key>
- <string>Font</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Font</string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Spelling and Grammar</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Check Document Now</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Check Spelling While Typing</string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Check Grammar With Spelling</string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Correct Spelling Automatically</string>
- </dict>
- <key>MenuTitle</key>
- <string>Spelling and Grammar</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Spelling and Grammar</string>
- </dict>
- <key>MenuItem 6</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Replace Quotes</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Replace Dashes</string>
- </dict>
- <key>MenuItem 10</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Smart Links</string>
- </dict>
- <key>MenuItem 11</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Data Detectors</string>
- </dict>
- <key>MenuItem 12</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Text Replacement</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Add Links</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Replace Text</string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Substitutions</string>
- </dict>
- <key>MenuItem 6</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 7</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Smart Copy/Paste</string>
- </dict>
- <key>MenuItem 8</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Smart Quotes</string>
- </dict>
- <key>MenuItem 9</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Smart Dashes</string>
- </dict>
- <key>MenuTitle</key>
- <string>Substitutions</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Substitutions</string>
- </dict>
- <key>MenuItem 7</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Make Upper Case</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Make Lower Case</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Capitalize</string>
- </dict>
- <key>MenuTitle</key>
- <string>Transformations</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Transformations</string>
- </dict>
- <key>MenuItem 8</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Start Speaking</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Stop Speaking</string>
- </dict>
- <key>MenuTitle</key>
- <string>Speech</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Speech</string>
- </dict>
- <key>MenuItem 9</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Paragraph</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>-1</integer>
- <key>MenuItemTitle</key>
- <string> Default</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string> Left to Right</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>1</integer>
- <key>MenuItemTitle</key>
- <string> Right to Left</string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Selection</string>
- </dict>
- <key>MenuItem 6</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>-1</integer>
- <key>MenuItemTitle</key>
- <string> Default</string>
- </dict>
- <key>MenuItem 7</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string> Left to Right</string>
- </dict>
- <key>MenuItem 8</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>1</integer>
- <key>MenuItemTitle</key>
- <string> Right to Left</string>
- </dict>
- <key>MenuTitle</key>
- <string>Writing Direction</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Writing Direction</string>
- </dict>
- <key>MenuTitle</key>
- <string>Menu</string>
- </dict>
- </dict>
- </dict>
- <key>ViewSubView 1</key>
- <dict>
- <key>ControlIsEnabled</key>
- <false/>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSScroller</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 2</key>
- <dict>
- <key>ControlIsEnabled</key>
- <false/>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSScroller</string>
- <key>ViewIsHidden</key>
- <true/>
- </dict>
- </dict>
- <key>ViewSubView 11</key>
- <dict>
- <key>TabItem 0</key>
- <dict>
- <key>TabLabel</key>
- <string>Tab</string>
- <key>TabView</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>TabItem 1</key>
- <dict>
- <key>TabLabel</key>
- <string>View</string>
- <key>TabView</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>ViewSubView 2</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>0</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>HaHa</string>
- <key>CellValue</key>
- <string>HaHa</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSTextField</string>
- <key>ControlValue</key>
- <string>HaHa</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 3</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>0</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>Still Haven't Found What I'm Searching For</string>
- <key>CellValue</key>
- <string>Still Haven't Found What I'm Searching For</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSSearchField</string>
- <key>ControlValue</key>
- <string>Still Haven't Found What I'm Searching For</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 4</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>1</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>Once upon a time</string>
- <key>CellValue</key>
- <string>Once upon a time</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSTextField</string>
- <key>ControlValue</key>
- <string>Once upon a time</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 5</key>
- <dict>
- <key>ButtonAlternateTitle</key>
- <string></string>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>1</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>CheckMate!</string>
- <key>CellValue</key>
- <string>1</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSButton</string>
- <key>ControlValue</key>
- <string>1</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 6</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>1</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string></string>
- <key>CellValue</key>
- <string>50</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSSlider</string>
- <key>ControlValue</key>
- <string>50</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 7</key>
- <dict>
- <key>ButtonAlternateTitle</key>
- <string></string>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>0</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>Cancel</string>
- <key>CellValue</key>
- <string>0</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSButton</string>
- <key>ControlValue</key>
- <string>0</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 8</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSColorWell</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 9</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>WindowIsMain</key>
- <false/>
- <key>WindowIsVisible</key>
- <true/>
- <key>WindowTitle</key>
- <string>Window</string>
-</dict>
-</plist>
diff --git a/UnitTesting/TestData/GTMUnitTestingWindow.10.6.tiff b/UnitTesting/TestData/GTMUnitTestingWindow.10.6.tiff
deleted file mode 100644
index 6a88f84..0000000
--- a/UnitTesting/TestData/GTMUnitTestingWindow.10.6.tiff
+++ /dev/null
Binary files differ
diff --git a/UnitTesting/TestData/GTMUnitTestingWindow.gtmUTState b/UnitTesting/TestData/GTMUnitTestingWindow.gtmUTState
deleted file mode 100644
index 8cba4c4..0000000
--- a/UnitTesting/TestData/GTMUnitTestingWindow.gtmUTState
+++ /dev/null
@@ -1,904 +0,0 @@
-<?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>$GTMArchive</key>
- <string>GTMUnitTestingArchive</string>
- <key>$GTMVersion</key>
- <integer>1</integer>
- <key>WindowContent</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSTableView</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>ViewSubView 1</key>
- <dict>
- <key>ControlIsEnabled</key>
- <false/>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSScroller</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 2</key>
- <dict>
- <key>ControlIsEnabled</key>
- <false/>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSScroller</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 3</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>ViewSubView 4</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>ViewSubView 1</key>
- <dict>
- <key>BoxBorderType</key>
- <integer>3</integer>
- <key>BoxTitle</key>
- <string>Box</string>
- <key>BoxTitlePosition</key>
- <integer>0</integer>
- <key>BoxType</key>
- <integer>2</integer>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 10</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewMenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Cut</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Copy</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Paste</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Fonts</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>2</integer>
- <key>MenuItemTitle</key>
- <string>Bold</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>1</integer>
- <key>MenuItemTitle</key>
- <string>Italic</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Underline</string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Outline</string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Styles…</string>
- </dict>
- <key>MenuItem 6</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 7</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Colors</string>
- </dict>
- <key>MenuTitle</key>
- <string>Font</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Font</string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Spelling and Grammar</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Check Document Now</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Check Spelling While Typing</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Check Grammar With Spelling</string>
- </dict>
- <key>MenuTitle</key>
- <string>Spelling and Grammar</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Spelling and Grammar</string>
- </dict>
- <key>MenuItem 6</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Smart Copy/Paste</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Smart Quotes</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Smart Links</string>
- </dict>
- <key>MenuTitle</key>
- <string>Substitutions</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Substitutions</string>
- </dict>
- <key>MenuItem 7</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Start Speaking</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Stop Speaking</string>
- </dict>
- <key>MenuTitle</key>
- <string>Speech</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Speech</string>
- </dict>
- <key>MenuItem 8</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>-1</integer>
- <key>MenuItemTitle</key>
- <string>Default</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Left to Right</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>1</integer>
- <key>MenuItemTitle</key>
- <string>Right to Left</string>
- </dict>
- <key>MenuTitle</key>
- <string>Writing Direction</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Writing Direction</string>
- </dict>
- <key>MenuTitle</key>
- <string>Menu</string>
- </dict>
- </dict>
- </dict>
- <key>ViewSubView 1</key>
- <dict>
- <key>ControlIsEnabled</key>
- <false/>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSScroller</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 2</key>
- <dict>
- <key>ControlIsEnabled</key>
- <false/>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSScroller</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>ViewSubView 11</key>
- <dict>
- <key>TabItem 0</key>
- <dict>
- <key>TabLabel</key>
- <string>Tab</string>
- <key>TabView</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>TabItem 1</key>
- <dict>
- <key>TabLabel</key>
- <string>View</string>
- <key>TabView</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>ViewSubView 2</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>0</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>HaHa</string>
- <key>CellValue</key>
- <string>HaHa</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSTextField</string>
- <key>ControlValue</key>
- <string>HaHa</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 3</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>0</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>Still Haven't Found What I'm Searching For</string>
- <key>CellValue</key>
- <string>Still Haven't Found What I'm Searching For</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSSearchField</string>
- <key>ControlValue</key>
- <string>Still Haven't Found What I'm Searching For</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 4</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>1</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>Once upon a time</string>
- <key>CellValue</key>
- <string>Once upon a time</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSTextField</string>
- <key>ControlValue</key>
- <string>Once upon a time</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 5</key>
- <dict>
- <key>ButtonAlternateTitle</key>
- <string></string>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>1</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>CheckMate!</string>
- <key>CellValue</key>
- <string>1</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSButton</string>
- <key>ControlValue</key>
- <string>1</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 6</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>1</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string></string>
- <key>CellValue</key>
- <string>50</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSSlider</string>
- <key>ControlValue</key>
- <string>50</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 7</key>
- <dict>
- <key>ButtonAlternateTitle</key>
- <string></string>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>0</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>Cancel</string>
- <key>CellValue</key>
- <string>0</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSButton</string>
- <key>ControlValue</key>
- <string>0</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 8</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSColorWell</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 9</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>WindowIsMain</key>
- <false/>
- <key>WindowIsVisible</key>
- <true/>
- <key>WindowTitle</key>
- <string>Window</string>
-</dict>
-</plist>
diff --git a/UnitTesting/TestData/GTMUnitTestingWindow.tiff b/UnitTesting/TestData/GTMUnitTestingWindow.tiff
deleted file mode 100644
index 63f5649..0000000
--- a/UnitTesting/TestData/GTMUnitTestingWindow.tiff
+++ /dev/null
Binary files differ
diff --git a/XcodeConfig/Project/DebugiPhone30.xcconfig b/XcodeConfig/Project/DebugiPhone30.xcconfig
deleted file mode 100644
index 9f4d015..0000000
--- a/XcodeConfig/Project/DebugiPhone30.xcconfig
+++ /dev/null
@@ -1,41 +0,0 @@
-//
-// DebugiPhone30.xcconfig
-//
-// Xcode configuration file for building a Debug configuration of a project
-// for iPhone OS 3.0.
-//
-// Copyright 2009 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-//
-// This is a _Configuration_ Xcode config file for use in the "Based on" popup
-// of the project configuration editor. Do _not_ use this as the config base
-// and individual Xcode target, there are other configuration files for that
-// purpose.
-
-// This file will be going away, please migrate off it. Instead Apple wants
-// you to use the "current" SDK, use DebugiOS.xcconfig and set your min
-// supported iOS version in your project file.
-
-// Pull in the general settings
-#include "../subconfig/General.xcconfig"
-
-// iPhone settings.
-#include "../subconfig/iPhone30.xcconfig"
-
-// Debug settings
-#include "../subconfig/Debug.xcconfig"
-
-// Merge settings
-#include "../subconfig/GTMMerge.xcconfig"
diff --git a/XcodeConfig/Project/DebugiPhone31.xcconfig b/XcodeConfig/Project/DebugiPhone31.xcconfig
deleted file mode 100644
index 99a1f9d..0000000
--- a/XcodeConfig/Project/DebugiPhone31.xcconfig
+++ /dev/null
@@ -1,41 +0,0 @@
-//
-// DebugiPhone31.xcconfig
-//
-// Xcode configuration file for building a Debug configuration of a project
-// for iPhone OS 3.1.
-//
-// Copyright 2009 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-//
-// This is a _Configuration_ Xcode config file for use in the "Based on" popup
-// of the project configuration editor. Do _not_ use this as the config base
-// and individual Xcode target, there are other configuration files for that
-// purpose.
-
-// This file will be going away, please migrate off it. Instead Apple wants
-// you to use the "current" SDK, use DebugiOS.xcconfig and set your min
-// supported iOS version in your project file.
-
-// Pull in the general settings
-#include "../subconfig/General.xcconfig"
-
-// iPhone settings.
-#include "../subconfig/iPhone31.xcconfig"
-
-// Debug settings
-#include "../subconfig/Debug.xcconfig"
-
-// Merge settings
-#include "../subconfig/GTMMerge.xcconfig"
diff --git a/XcodeConfig/Project/DebugiPhone312.xcconfig b/XcodeConfig/Project/DebugiPhone312.xcconfig
deleted file mode 100644
index 04e4db5..0000000
--- a/XcodeConfig/Project/DebugiPhone312.xcconfig
+++ /dev/null
@@ -1,41 +0,0 @@
-//
-// DebugiPhone312.xcconfig
-//
-// Xcode configuration file for building a Debug configuration of a project
-// for iPhone OS 3.1.2.
-//
-// Copyright 2009 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-//
-// This is a _Configuration_ Xcode config file for use in the "Based on" popup
-// of the project configuration editor. Do _not_ use this as the config base
-// and individual Xcode target, there are other configuration files for that
-// purpose.
-
-// This file will be going away, please migrate off it. Instead Apple wants
-// you to use the "current" SDK, use DebugiOS.xcconfig and set your min
-// supported iOS version in your project file.
-
-// Pull in the general settings
-#include "../subconfig/General.xcconfig"
-
-// iPhone settings.
-#include "../subconfig/iPhone312.xcconfig"
-
-// Debug settings
-#include "../subconfig/Debug.xcconfig"
-
-// Merge settings
-#include "../subconfig/GTMMerge.xcconfig"
diff --git a/XcodeConfig/Project/DebugiPhone313.xcconfig b/XcodeConfig/Project/DebugiPhone313.xcconfig
deleted file mode 100644
index aa41387..0000000
--- a/XcodeConfig/Project/DebugiPhone313.xcconfig
+++ /dev/null
@@ -1,41 +0,0 @@
-//
-// DebugiPhone313.xcconfig
-//
-// Xcode configuration file for building a Debug configuration of a project
-// for iPhone OS 3.1.3.
-//
-// Copyright 2010 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-//
-// This is a _Configuration_ Xcode config file for use in the "Based on" popup
-// of the project configuration editor. Do _not_ use this as the config base
-// and individual Xcode target, there are other configuration files for that
-// purpose.
-
-// This file will be going away, please migrate off it. Instead Apple wants
-// you to use the "current" SDK, use DebugiOS.xcconfig and set your min
-// supported iOS version in your project file.
-
-// Pull in the general settings
-#include "../subconfig/General.xcconfig"
-
-// iPhone settings.
-#include "../subconfig/iPhone313.xcconfig"
-
-// Debug settings
-#include "../subconfig/Debug.xcconfig"
-
-// Merge settings
-#include "../subconfig/GTMMerge.xcconfig"
diff --git a/XcodeConfig/Project/DebugiPhone32.xcconfig b/XcodeConfig/Project/DebugiPhone32.xcconfig
deleted file mode 100644
index 7fea13e..0000000
--- a/XcodeConfig/Project/DebugiPhone32.xcconfig
+++ /dev/null
@@ -1,41 +0,0 @@
-//
-// DebugiPhone32.xcconfig
-//
-// Xcode configuration file for building a Debug configuration of a project
-// for iPhone OS 3.2.
-//
-// Copyright 2010 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-//
-// This is a _Configuration_ Xcode config file for use in the "Based on" popup
-// of the project configuration editor. Do _not_ use this as the config base
-// and individual Xcode target, there are other configuration files for that
-// purpose.
-
-// This file will be going away, please migrate off it. Instead Apple wants
-// you to use the "current" SDK, use DebugiOS.xcconfig and set your min
-// supported iOS version in your project file.
-
-// Pull in the general settings
-#include "../subconfig/General.xcconfig"
-
-// iPhone settings.
-#include "../subconfig/iPhone32.xcconfig"
-
-// Debug settings
-#include "../subconfig/Debug.xcconfig"
-
-// Merge settings
-#include "../subconfig/GTMMerge.xcconfig"
diff --git a/XcodeConfig/Project/DebugiPhone40.xcconfig b/XcodeConfig/Project/DebugiPhone40.xcconfig
deleted file mode 100644
index bad8987..0000000
--- a/XcodeConfig/Project/DebugiPhone40.xcconfig
+++ /dev/null
@@ -1,41 +0,0 @@
-//
-// DebugiPhone40.xcconfig
-//
-// Xcode configuration file for building a Debug configuration of a project
-// for iOS 4.0.
-//
-// Copyright 2010 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-//
-// This is a _Configuration_ Xcode config file for use in the "Based on" popup
-// of the project configuration editor. Do _not_ use this as the config base
-// and individual Xcode target, there are other configuration files for that
-// purpose.
-
-// This file will be going away, please migrate off it. Instead Apple wants
-// you to use the "current" SDK, use DebugiOS.xcconfig and set your min
-// supported iOS version in your project file.
-
-// Pull in the general settings
-#include "../subconfig/General.xcconfig"
-
-// iPhone settings.
-#include "../subconfig/iPhone40.xcconfig"
-
-// Debug settings
-#include "../subconfig/Debug.xcconfig"
-
-// Merge settings
-#include "../subconfig/GTMMerge.xcconfig"
diff --git a/XcodeConfig/Project/DebugiPhone41.xcconfig b/XcodeConfig/Project/DebugiPhone41.xcconfig
deleted file mode 100644
index ee0eb92..0000000
--- a/XcodeConfig/Project/DebugiPhone41.xcconfig
+++ /dev/null
@@ -1,41 +0,0 @@
-//
-// DebugiPhone41.xcconfig
-//
-// Xcode configuration file for building a Debug configuration of a project
-// for iOS 4.1.
-//
-// Copyright 2010 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-//
-// This is a _Configuration_ Xcode config file for use in the "Based on" popup
-// of the project configuration editor. Do _not_ use this as the config base
-// and individual Xcode target, there are other configuration files for that
-// purpose.
-
-// This file will be going away, please migrate off it. Instead Apple wants
-// you to use the "current" SDK, use DebugiOS.xcconfig and set your min
-// supported iOS version in your project file.
-
-// Pull in the general settings
-#include "../subconfig/General.xcconfig"
-
-// iPhone settings.
-#include "../subconfig/iPhone41.xcconfig"
-
-// Debug settings
-#include "../subconfig/Debug.xcconfig"
-
-// Merge settings
-#include "../subconfig/GTMMerge.xcconfig"
diff --git a/XcodeConfig/Project/ReleaseiPhone30.xcconfig b/XcodeConfig/Project/ReleaseiPhone30.xcconfig
deleted file mode 100644
index 63bdf4c..0000000
--- a/XcodeConfig/Project/ReleaseiPhone30.xcconfig
+++ /dev/null
@@ -1,41 +0,0 @@
-//
-// ReleaseiPhone30.xcconfig
-//
-// Xcode configuration file for building a Release configuration of a project
-// for iPhone OS 3.0.
-//
-// Copyright 2009 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-//
-// This is a _Configuration_ Xcode config file for use in the "Based on" popup
-// of the project configuration editor. Do _not_ use this as the config base
-// and individual Xcode target, there are other configuration files for that
-// purpose.
-
-// This file will be going away, please migrate off it. Instead Apple wants
-// you to use the "current" SDK, use ReleaseiOS.xcconfig and set your min
-// supported iOS version in your project file.
-
-// Pull in the general settings
-#include "../subconfig/General.xcconfig"
-
-// iPhone settings.
-#include "../subconfig/iPhone30.xcconfig"
-
-// Release settings
-#include "../subconfig/Release.xcconfig"
-
-// Merge settings
-#include "../subconfig/GTMMerge.xcconfig"
diff --git a/XcodeConfig/Project/ReleaseiPhone31.xcconfig b/XcodeConfig/Project/ReleaseiPhone31.xcconfig
deleted file mode 100644
index 8a5a19c..0000000
--- a/XcodeConfig/Project/ReleaseiPhone31.xcconfig
+++ /dev/null
@@ -1,41 +0,0 @@
-//
-// ReleaseiPhone31.xcconfig
-//
-// Xcode configuration file for building a Release configuration of a project
-// for iPhone OS 3.1.
-//
-// Copyright 2009 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-//
-// This is a _Configuration_ Xcode config file for use in the "Based on" popup
-// of the project configuration editor. Do _not_ use this as the config base
-// and individual Xcode target, there are other configuration files for that
-// purpose.
-
-// This file will be going away, please migrate off it. Instead Apple wants
-// you to use the "current" SDK, use ReleaseiOS.xcconfig and set your min
-// supported iOS version in your project file.
-
-// Pull in the general settings
-#include "../subconfig/General.xcconfig"
-
-// iPhone settings.
-#include "../subconfig/iPhone31.xcconfig"
-
-// Release settings
-#include "../subconfig/Release.xcconfig"
-
-// Merge settings
-#include "../subconfig/GTMMerge.xcconfig"
diff --git a/XcodeConfig/Project/ReleaseiPhone312.xcconfig b/XcodeConfig/Project/ReleaseiPhone312.xcconfig
deleted file mode 100644
index 65c42b1..0000000
--- a/XcodeConfig/Project/ReleaseiPhone312.xcconfig
+++ /dev/null
@@ -1,41 +0,0 @@
-//
-// ReleaseiPhone312.xcconfig
-//
-// Xcode configuration file for building a Release configuration of a project
-// for iPhone OS 3.1.2.
-//
-// Copyright 2009 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-//
-// This is a _Configuration_ Xcode config file for use in the "Based on" popup
-// of the project configuration editor. Do _not_ use this as the config base
-// and individual Xcode target, there are other configuration files for that
-// purpose.
-
-// This file will be going away, please migrate off it. Instead Apple wants
-// you to use the "current" SDK, use ReleaseiOS.xcconfig and set your min
-// supported iOS version in your project file.
-
-// Pull in the general settings
-#include "../subconfig/General.xcconfig"
-
-// iPhone settings.
-#include "../subconfig/iPhone312.xcconfig"
-
-// Release settings
-#include "../subconfig/Release.xcconfig"
-
-// Merge settings
-#include "../subconfig/GTMMerge.xcconfig"
diff --git a/XcodeConfig/Project/ReleaseiPhone313.xcconfig b/XcodeConfig/Project/ReleaseiPhone313.xcconfig
deleted file mode 100644
index 65de50a..0000000
--- a/XcodeConfig/Project/ReleaseiPhone313.xcconfig
+++ /dev/null
@@ -1,41 +0,0 @@
-//
-// ReleaseiPhone313.xcconfig
-//
-// Xcode configuration file for building a Release configuration of a project
-// for iPhone OS 3.1.3.
-//
-// Copyright 2010 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-//
-// This is a _Configuration_ Xcode config file for use in the "Based on" popup
-// of the project configuration editor. Do _not_ use this as the config base
-// and individual Xcode target, there are other configuration files for that
-// purpose.
-
-// This file will be going away, please migrate off it. Instead Apple wants
-// you to use the "current" SDK, use ReleaseiOS.xcconfig and set your min
-// supported iOS version in your project file.
-
-// Pull in the general settings
-#include "../subconfig/General.xcconfig"
-
-// iPhone settings.
-#include "../subconfig/iPhone313.xcconfig"
-
-// Release settings
-#include "../subconfig/Release.xcconfig"
-
-// Merge settings
-#include "../subconfig/GTMMerge.xcconfig"
diff --git a/XcodeConfig/Project/ReleaseiPhone32.xcconfig b/XcodeConfig/Project/ReleaseiPhone32.xcconfig
deleted file mode 100644
index 411a9a2..0000000
--- a/XcodeConfig/Project/ReleaseiPhone32.xcconfig
+++ /dev/null
@@ -1,41 +0,0 @@
-//
-// ReleaseiPhone32.xcconfig
-//
-// Xcode configuration file for building a Release configuration of a project
-// for iPhone OS 3.2.
-//
-// Copyright 2010 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-//
-// This is a _Configuration_ Xcode config file for use in the "Based on" popup
-// of the project configuration editor. Do _not_ use this as the config base
-// and individual Xcode target, there are other configuration files for that
-// purpose.
-
-// This file will be going away, please migrate off it. Instead Apple wants
-// you to use the "current" SDK, use ReleaseiOS.xcconfig and set your min
-// supported iOS version in your project file.
-
-// Pull in the general settings
-#include "../subconfig/General.xcconfig"
-
-// iPhone settings.
-#include "../subconfig/iPhone32.xcconfig"
-
-// Release settings
-#include "../subconfig/Release.xcconfig"
-
-// Merge settings
-#include "../subconfig/GTMMerge.xcconfig"
diff --git a/XcodeConfig/Project/ReleaseiPhone40.xcconfig b/XcodeConfig/Project/ReleaseiPhone40.xcconfig
deleted file mode 100644
index 2887fbb..0000000
--- a/XcodeConfig/Project/ReleaseiPhone40.xcconfig
+++ /dev/null
@@ -1,41 +0,0 @@
-//
-// ReleaseiPhone40.xcconfig
-//
-// Xcode configuration file for building a Release configuration of a project
-// for iOS 4.0.
-//
-// Copyright 2010 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-//
-// This is a _Configuration_ Xcode config file for use in the "Based on" popup
-// of the project configuration editor. Do _not_ use this as the config base
-// and individual Xcode target, there are other configuration files for that
-// purpose.
-
-// This file will be going away, please migrate off it. Instead Apple wants
-// you to use the "current" SDK, use ReleaseiOS.xcconfig and set your min
-// supported iOS version in your project file.
-
-// Pull in the general settings
-#include "../subconfig/General.xcconfig"
-
-// iPhone settings.
-#include "../subconfig/iPhone40.xcconfig"
-
-// Release settings
-#include "../subconfig/Release.xcconfig"
-
-// Merge settings
-#include "../subconfig/GTMMerge.xcconfig"
diff --git a/XcodeConfig/Project/ReleaseiPhone41.xcconfig b/XcodeConfig/Project/ReleaseiPhone41.xcconfig
deleted file mode 100644
index f3965b5..0000000
--- a/XcodeConfig/Project/ReleaseiPhone41.xcconfig
+++ /dev/null
@@ -1,41 +0,0 @@
-//
-// ReleaseiPhone41.xcconfig
-//
-// Xcode configuration file for building a Release configuration of a project
-// for iOS 4.1.
-//
-// Copyright 2010 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-//
-// This is a _Configuration_ Xcode config file for use in the "Based on" popup
-// of the project configuration editor. Do _not_ use this as the config base
-// and individual Xcode target, there are other configuration files for that
-// purpose.
-
-// This file will be going away, please migrate off it. Instead Apple wants
-// you to use the "current" SDK, use ReleaseiOS.xcconfig and set your min
-// supported iOS version in your project file.
-
-// Pull in the general settings
-#include "../subconfig/General.xcconfig"
-
-// iPhone settings.
-#include "../subconfig/iPhone41.xcconfig"
-
-// Release settings
-#include "../subconfig/Release.xcconfig"
-
-// Merge settings
-#include "../subconfig/GTMMerge.xcconfig"
diff --git a/XcodeConfig/subconfig/Unittest.xcconfig b/XcodeConfig/subconfig/Unittest.xcconfig
index 96121ee..596c8db 100644
--- a/XcodeConfig/subconfig/Unittest.xcconfig
+++ b/XcodeConfig/subconfig/Unittest.xcconfig
@@ -9,9 +9,9 @@
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy
// of the License at
-//
+//
// http://www.apache.org/licenses/LICENSE-2.0
-//
+//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
@@ -28,6 +28,3 @@ GCC_C_LANGUAGE_STANDARD = gnu99
// Deploment postprocessing is what triggers Xcode to strip, we don't strip
// unittests
DEPLOYMENT_POSTPROCESSING = NO
-
-// Most common unittests will be objective-c
-WRAPPER_EXTENSION = octest
diff --git a/iPhone/GTMFadeTruncatingLabelTest.m b/iPhone/GTMFadeTruncatingLabelTest.m
index 052a32f..478ce9a 100644
--- a/iPhone/GTMFadeTruncatingLabelTest.m
+++ b/iPhone/GTMFadeTruncatingLabelTest.m
@@ -15,7 +15,6 @@
// License for the specific language governing permissions and limitations under
// the License.
//
-#import "GTMNSObject+UnitTesting.h"
#import "GTMSenTestCase.h"
#import "GTMFadeTruncatingLabel.h"
@@ -30,26 +29,14 @@
initWithFrame:CGRectMake(0, 0, 200, 25)]
autorelease];
label.text = @"A very long string that won't fit";
- GTMAssertObjectImageEqualToImageNamed(label,
- @"GTMFadeTruncatingLabelTest1",
- @"Mismatched image.");
label.text = @"A short string";
- GTMAssertObjectImageEqualToImageNamed(label,
- @"GTMFadeTruncatingLabelTest2",
- @"Mismatched image.");
// Dark background, light text.
label.backgroundColor = [UIColor blackColor];
[label setTextColor:[UIColor whiteColor]];
label.text = @"A very long string that won't fit";
- GTMAssertObjectImageEqualToImageNamed(label,
- @"GTMFadeTruncatingLabelTest3",
- @"Mismatched image.");
label.text = @"A short string";
- GTMAssertObjectImageEqualToImageNamed(label,
- @"GTMFadeTruncatingLabelTest4",
- @"Mismatched image.");
}
- (void)testFadeTruncatingLabelLeftAndRight {
@@ -59,9 +46,6 @@
label.truncateMode = GTMFadeTruncatingHeadAndTail;
label.text = @"Fade on both left and right";
- GTMAssertObjectImageEqualToImageNamed(label,
- @"GTMFadeTruncatingLabelTest5",
- @"Mismatched image.");
}
@end
diff --git a/iPhone/GTMUIFont+LineHeight.m b/iPhone/GTMUIFont+LineHeight.m
index 6d5ef11..21f1fda 100644
--- a/iPhone/GTMUIFont+LineHeight.m
+++ b/iPhone/GTMUIFont+LineHeight.m
@@ -20,6 +20,11 @@
#import <Availability.h>
+// Export a nonsense symbol to suppress a libtool warning when this is linked
+// alone in a static lib.
+__attribute__((visibility("default")))
+ char GTMUIFont_LineHeightExportToSuppressLibToolWarning = 0;
+
@implementation UIFont (GTMLineHeight)
- (CGFloat)gtm_lineHeight {
#if __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_7_0
diff --git a/iPhone/GTMUIFont+LineHeightTest.m b/iPhone/GTMUIFont+LineHeightTest.m
index 8da28eb..29e5021 100644
--- a/iPhone/GTMUIFont+LineHeightTest.m
+++ b/iPhone/GTMUIFont+LineHeightTest.m
@@ -6,9 +6,9 @@
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy
// of the License at
-//
+//
// http://www.apache.org/licenses/LICENSE-2.0
-//
+//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
@@ -27,14 +27,14 @@
- (void)testLineHeight {
UIFont *font = [UIFont systemFontOfSize:[UIFont systemFontSize]];
- STAssertNotNil(font, nil);
- STAssertGreaterThanOrEqual([font gtm_lineHeight], (CGFloat)5.0, nil);
+ XCTAssertNotNil(font);
+ XCTAssertGreaterThanOrEqual([font gtm_lineHeight], (CGFloat)5.0);
UIFont *fontSmall = [UIFont systemFontOfSize:[UIFont smallSystemFontSize]];
- STAssertNotNil(fontSmall, nil);
- STAssertGreaterThanOrEqual([fontSmall gtm_lineHeight], (CGFloat)5.0, nil);
-
- STAssertGreaterThan([font gtm_lineHeight], [fontSmall gtm_lineHeight], nil);
+ XCTAssertNotNil(fontSmall);
+ XCTAssertGreaterThanOrEqual([fontSmall gtm_lineHeight], (CGFloat)5.0);
+
+ XCTAssertGreaterThan([font gtm_lineHeight], [fontSmall gtm_lineHeight]);
}
@end
diff --git a/iPhone/GTMUIImage+ResizeTest.m b/iPhone/GTMUIImage+ResizeTest.m
index 458daa7..1bbe04e 100644
--- a/iPhone/GTMUIImage+ResizeTest.m
+++ b/iPhone/GTMUIImage+ResizeTest.m
@@ -17,14 +17,8 @@
//
#import "GTMSenTestCase.h"
-#import "GTMNSObject+UnitTesting.h"
#import "GTMUIImage+Resize.h"
-#define GTMUIImageResizeAssertImageEqual(imageObject, imageSuffix) \
- GTMAssertObjectImageEqualToImageNamed(imageObject, \
- @"GTMUIImage+Resize_" imageSuffix,\
- @"Resized image mismatched.")
-
@interface GTMUIImage_ResizeTest : GTMTestCase
- (UIImage *)testImageNamed:(NSString *)imageName;
@end
@@ -43,7 +37,7 @@
UIImage *actual = [image gtm_imageByResizingToSize:CGSizeMake(100, 100)
preserveAspectRatio:YES
trimToFit:NO];
- STAssertNil(actual, @"Invalid inputs should return nil");
+ XCTAssertNil(actual, @"Invalid inputs should return nil");
}
- (void)testInvalidInput {
@@ -53,62 +47,59 @@
actual = [image gtm_imageByResizingToSize:CGSizeZero
preserveAspectRatio:YES
trimToFit:NO];
- STAssertNil(actual, @"CGSizeZero resize should be ignored.");
+ XCTAssertNil(actual, @"CGSizeZero resize should be ignored.");
actual = [image gtm_imageByResizingToSize:CGSizeMake(0.1, 0.1)
preserveAspectRatio:YES
trimToFit:NO];
- STAssertNil(actual, @"Invalid size should be ignored.");
+ XCTAssertNil(actual, @"Invalid size should be ignored.");
actual = [image gtm_imageByResizingToSize:CGSizeMake(-100, -100)
preserveAspectRatio:YES
trimToFit:NO];
- STAssertNil(actual, @"Invalid size should be ignored.");
+ XCTAssertNil(actual, @"Invalid size should be ignored.");
}
- (void)testImageByResizingWithoutPreservingAspectRatio {
UIImage *actual = nil;
// Square image.
UIImage *originalImage = [self testImageNamed:@"GTMUIImage+Resize_100x100"];
- STAssertNotNil(originalImage, @"Unable to read image.");
+ XCTAssertNotNil(originalImage, @"Unable to read image.");
// Resize with same aspect ratio.
CGSize size50x50 = CGSizeMake(50, 50);
actual = [originalImage gtm_imageByResizingToSize:size50x50
preserveAspectRatio:NO
trimToFit:NO];
- STAssertTrue(CGSizeEqualToSize([actual size], size50x50),
- @"Resized image should equal size: %@ actual: %@",
- NSStringFromCGSize(size50x50),
- NSStringFromCGSize([actual size]));
- GTMUIImageResizeAssertImageEqual(actual, @"100x100_to_50x50");
+ XCTAssertTrue(CGSizeEqualToSize([actual size], size50x50),
+ @"Resized image should equal size: %@ actual: %@",
+ NSStringFromCGSize(size50x50),
+ NSStringFromCGSize([actual size]));
// Resize with different aspect ratio
CGSize size60x40 = CGSizeMake(60, 40);
actual = [originalImage gtm_imageByResizingToSize:size60x40
preserveAspectRatio:NO
trimToFit:NO];
- STAssertTrue(CGSizeEqualToSize([actual size], size60x40),
- @"Resized image should equal size: %@ actual: %@",
- NSStringFromCGSize(size60x40),
- NSStringFromCGSize([actual size]));
- GTMUIImageResizeAssertImageEqual(actual, @"100x100_to_60x40");
+ XCTAssertTrue(CGSizeEqualToSize([actual size], size60x40),
+ @"Resized image should equal size: %@ actual: %@",
+ NSStringFromCGSize(size60x40),
+ NSStringFromCGSize([actual size]));
CGSize size40x60 = CGSizeMake(40, 60);
actual = [originalImage gtm_imageByResizingToSize:size40x60
preserveAspectRatio:NO
trimToFit:NO];
- STAssertTrue(CGSizeEqualToSize([actual size], size40x60),
- @"Resized image should equal size: %@ actual: %@",
- NSStringFromCGSize(size40x60),
- NSStringFromCGSize([actual size]));
- GTMUIImageResizeAssertImageEqual(actual, @"100x100_to_40x60");
+ XCTAssertTrue(CGSizeEqualToSize([actual size], size40x60),
+ @"Resized image should equal size: %@ actual: %@",
+ NSStringFromCGSize(size40x60),
+ NSStringFromCGSize([actual size]));
}
- (void)testImageByResizingPreservingAspectRatioWithoutClip {
UIImage *actual = nil;
UIImage *landscapeImage = [self testImageNamed:@"GTMUIImage+Resize_100x50"];
- STAssertNotNil(landscapeImage, @"Unable to read image.");
+ XCTAssertNotNil(landscapeImage, @"Unable to read image.");
// Landscape resize to 50x50, but clipped to 50x25.
CGSize size50x50 = CGSizeMake(50, 50);
@@ -116,11 +107,10 @@
actual = [landscapeImage gtm_imageByResizingToSize:size50x50
preserveAspectRatio:YES
trimToFit:NO];
- STAssertTrue(CGSizeEqualToSize([actual size], expected50x25),
- @"Resized image should equal size: %@ actual: %@",
- NSStringFromCGSize(expected50x25),
- NSStringFromCGSize([actual size]));
- GTMUIImageResizeAssertImageEqual(actual, @"100x50_to_50x50_noclip");
+ XCTAssertTrue(CGSizeEqualToSize([actual size], expected50x25),
+ @"Resized image should equal size: %@ actual: %@",
+ NSStringFromCGSize(expected50x25),
+ NSStringFromCGSize([actual size]));
// Landscape resize to 60x40, but clipped to 60x30.
CGSize size60x40 = CGSizeMake(60, 40);
@@ -129,11 +119,10 @@
actual = [landscapeImage gtm_imageByResizingToSize:size60x40
preserveAspectRatio:YES
trimToFit:NO];
- STAssertTrue(CGSizeEqualToSize([actual size], expected60x30),
- @"Resized image should equal size: %@ actual: %@",
- NSStringFromCGSize(expected60x30),
- NSStringFromCGSize([actual size]));
- GTMUIImageResizeAssertImageEqual(actual, @"100x50_to_60x40_noclip");
+ XCTAssertTrue(CGSizeEqualToSize([actual size], expected60x30),
+ @"Resized image should equal size: %@ actual: %@",
+ NSStringFromCGSize(expected60x30),
+ NSStringFromCGSize([actual size]));
// Landscape resize to 40x60, but clipped to 40x20.
CGSize expected40x20 = CGSizeMake(40, 20);
@@ -141,11 +130,10 @@
actual = [landscapeImage gtm_imageByResizingToSize:size40x60
preserveAspectRatio:YES
trimToFit:NO];
- STAssertTrue(CGSizeEqualToSize([actual size], expected40x20),
- @"Resized image should equal size: %@ actual: %@",
- NSStringFromCGSize(expected40x20),
- NSStringFromCGSize([actual size]));
- GTMUIImageResizeAssertImageEqual(actual, @"100x50_to_40x60_noclip");
+ XCTAssertTrue(CGSizeEqualToSize([actual size], expected40x20),
+ @"Resized image should equal size: %@ actual: %@",
+ NSStringFromCGSize(expected40x20),
+ NSStringFromCGSize([actual size]));
// Portrait Image
UIImage *portraitImage = [self testImageNamed:@"GTMUIImage+Resize_50x100"];
@@ -155,72 +143,66 @@
actual = [portraitImage gtm_imageByResizingToSize:size50x50
preserveAspectRatio:YES
trimToFit:NO];
- STAssertTrue(CGSizeEqualToSize([actual size], expected25x50),
- @"Resized image should equal size: %@ actual: %@",
- NSStringFromCGSize(expected25x50),
- NSStringFromCGSize([actual size]));
- GTMUIImageResizeAssertImageEqual(actual, @"50x100_to_50x50_noclip");
+ XCTAssertTrue(CGSizeEqualToSize([actual size], expected25x50),
+ @"Resized image should equal size: %@ actual: %@",
+ NSStringFromCGSize(expected25x50),
+ NSStringFromCGSize([actual size]));
// Portrait resize to 60x40, but clipped to 20x40.
CGSize expected20x40 = CGSizeMake(20, 40);
actual = [portraitImage gtm_imageByResizingToSize:size60x40
preserveAspectRatio:YES
trimToFit:NO];
- STAssertTrue(CGSizeEqualToSize([actual size], expected20x40),
- @"Resized image should equal size: %@ actual: %@",
- NSStringFromCGSize(expected20x40),
- NSStringFromCGSize([actual size]));
- GTMUIImageResizeAssertImageEqual(actual, @"50x100_to_60x40_noclip");
+ XCTAssertTrue(CGSizeEqualToSize([actual size], expected20x40),
+ @"Resized image should equal size: %@ actual: %@",
+ NSStringFromCGSize(expected20x40),
+ NSStringFromCGSize([actual size]));
// Portrait resize to 40x60, but clipped to 30x60.
CGSize expected30x60 = CGSizeMake(30, 60);
actual = [portraitImage gtm_imageByResizingToSize:size40x60
preserveAspectRatio:YES
trimToFit:NO];
- STAssertTrue(CGSizeEqualToSize([actual size], expected30x60),
- @"Resized image should equal size: %@ actual: %@",
- NSStringFromCGSize(expected30x60),
- NSStringFromCGSize([actual size]));
- GTMUIImageResizeAssertImageEqual(actual, @"50x100_to_40x60_noclip");
+ XCTAssertTrue(CGSizeEqualToSize([actual size], expected30x60),
+ @"Resized image should equal size: %@ actual: %@",
+ NSStringFromCGSize(expected30x60),
+ NSStringFromCGSize([actual size]));
}
- (void)testImageByResizingPreservingAspectRatioWithClip {
UIImage *actual = nil;
UIImage *landscapeImage = [self testImageNamed:@"GTMUIImage+Resize_100x50"];
- STAssertNotNil(landscapeImage, @"Unable to read image.");
+ XCTAssertNotNil(landscapeImage, @"Unable to read image.");
// Landscape resize to 50x50
CGSize size50x50 = CGSizeMake(50, 50);
actual = [landscapeImage gtm_imageByResizingToSize:size50x50
preserveAspectRatio:YES
trimToFit:YES];
- STAssertTrue(CGSizeEqualToSize([actual size], size50x50),
- @"Resized image should equal size: %@ actual: %@",
- NSStringFromCGSize(size50x50),
- NSStringFromCGSize([actual size]));
- GTMUIImageResizeAssertImageEqual(actual, @"100x50_to_50x50_clip");
+ XCTAssertTrue(CGSizeEqualToSize([actual size], size50x50),
+ @"Resized image should equal size: %@ actual: %@",
+ NSStringFromCGSize(size50x50),
+ NSStringFromCGSize([actual size]));
// Landscape resize to 60x40
CGSize size60x40 = CGSizeMake(60, 40);
actual = [landscapeImage gtm_imageByResizingToSize:size60x40
preserveAspectRatio:YES
trimToFit:YES];
- STAssertTrue(CGSizeEqualToSize([actual size], size60x40),
- @"Resized image should equal size: %@ actual: %@",
- NSStringFromCGSize(size60x40),
- NSStringFromCGSize([actual size]));
- GTMUIImageResizeAssertImageEqual(actual, @"100x50_to_60x40_clip");
+ XCTAssertTrue(CGSizeEqualToSize([actual size], size60x40),
+ @"Resized image should equal size: %@ actual: %@",
+ NSStringFromCGSize(size60x40),
+ NSStringFromCGSize([actual size]));
// Landscape resize to 40x60
CGSize size40x60 = CGSizeMake(40, 60);
actual = [landscapeImage gtm_imageByResizingToSize:size40x60
preserveAspectRatio:YES
trimToFit:YES];
- STAssertTrue(CGSizeEqualToSize([actual size], size40x60),
- @"Resized image should equal size: %@ actual: %@",
- NSStringFromCGSize(size40x60),
- NSStringFromCGSize([actual size]));
- GTMUIImageResizeAssertImageEqual(actual, @"100x50_to_40x60_clip");
+ XCTAssertTrue(CGSizeEqualToSize([actual size], size40x60),
+ @"Resized image should equal size: %@ actual: %@",
+ NSStringFromCGSize(size40x60),
+ NSStringFromCGSize([actual size]));
// Portrait Image.
UIImage *portraitImage = [self testImageNamed:@"GTMUIImage+Resize_50x100"];
@@ -229,56 +211,46 @@
actual = [portraitImage gtm_imageByResizingToSize:size50x50
preserveAspectRatio:YES
trimToFit:YES];
- STAssertTrue(CGSizeEqualToSize([actual size], size50x50),
- @"Resized image should equal size: %@ actual: %@",
- NSStringFromCGSize(size50x50),
- NSStringFromCGSize([actual size]));
- GTMUIImageResizeAssertImageEqual(actual, @"50x100_to_50x50_clip");
+ XCTAssertTrue(CGSizeEqualToSize([actual size], size50x50),
+ @"Resized image should equal size: %@ actual: %@",
+ NSStringFromCGSize(size50x50),
+ NSStringFromCGSize([actual size]));
// Portrait resize to 60x40
actual = [portraitImage gtm_imageByResizingToSize:size60x40
preserveAspectRatio:YES
trimToFit:YES];
- STAssertTrue(CGSizeEqualToSize([actual size], size60x40),
- @"Resized image should equal size: %@ actual: %@",
- NSStringFromCGSize(size60x40),
- NSStringFromCGSize([actual size]));
- GTMUIImageResizeAssertImageEqual(actual, @"50x100_to_60x40_clip");
+ XCTAssertTrue(CGSizeEqualToSize([actual size], size60x40),
+ @"Resized image should equal size: %@ actual: %@",
+ NSStringFromCGSize(size60x40),
+ NSStringFromCGSize([actual size]));
// Portrait resize to 40x60.
actual = [portraitImage gtm_imageByResizingToSize:size40x60
preserveAspectRatio:YES
trimToFit:YES];
- STAssertTrue(CGSizeEqualToSize([actual size], size40x60),
- @"Resized image should equal size: %@ actual: %@",
- NSStringFromCGSize(size40x60),
- NSStringFromCGSize([actual size]));
- GTMUIImageResizeAssertImageEqual(actual, @"50x100_to_40x60_clip");
+ XCTAssertTrue(CGSizeEqualToSize([actual size], size40x60),
+ @"Resized image should equal size: %@ actual: %@",
+ NSStringFromCGSize(size40x60),
+ NSStringFromCGSize([actual size]));
}
- (void)testImageByRotating {
UIImage *actual = nil;
UIImage *landscapeImage = [self testImageNamed:@"GTMUIImage+Resize_100x50"];
- STAssertNotNil(landscapeImage, @"Unable to read image.");
+ XCTAssertNotNil(landscapeImage, @"Unable to read image.");
// Rotate 90 degrees.
actual = [landscapeImage gtm_imageByRotating:UIImageOrientationRight];
- GTMUIImageResizeAssertImageEqual(actual, @"50x100");
// Rotate 180 degrees.
actual = [landscapeImage gtm_imageByRotating:UIImageOrientationDown];
- GTMUIImageResizeAssertImageEqual(actual,
- @"100x50_flipped");
-
// Rotate 270 degrees.
actual = [landscapeImage gtm_imageByRotating:UIImageOrientationLeft];
- GTMUIImageResizeAssertImageEqual(actual,
- @"50x100_flipped");
// Rotate 360 degrees.
actual = [landscapeImage gtm_imageByRotating:UIImageOrientationUp];
- GTMUIImageResizeAssertImageEqual(actual, @"100x50");
}
@end
diff --git a/iPhone/GTMUILocalizerTest.m b/iPhone/GTMUILocalizerTest.m
index a53c249..434e890 100644
--- a/iPhone/GTMUILocalizerTest.m
+++ b/iPhone/GTMUILocalizerTest.m
@@ -58,7 +58,7 @@
- (void)checkValues:(NSString *)value
onController:(GTMUILocalizerTestViewController *)controller {
// Label
- STAssertEqualStrings(value, [[controller label] text], nil);
+ XCTAssertEqualStrings(value, [[controller label] text]);
// Button
UIControlState allStates[] = { UIControlStateNormal,
UIControlStateHighlighted,
@@ -66,33 +66,29 @@
UIControlStateSelected };
for (size_t idx = 0; idx < (sizeof(allStates)/sizeof(allStates[0])); ++idx) {
UIControlState state = allStates[idx];
- STAssertEqualStrings(value, [[controller button] titleForState:state], nil);
+ XCTAssertEqualStrings(value, [[controller button] titleForState:state]);
}
// SegementedControl
for (NSUInteger i = 0;
i < [[controller segmentedControl] numberOfSegments];
++i) {
- STAssertEqualStrings(value,
- [[controller segmentedControl] titleForSegmentAtIndex:i], nil);
+ XCTAssertEqualStrings(value,
+ [[controller segmentedControl] titleForSegmentAtIndex:i]);
}
// SearchBar
- STAssertEqualStrings(value, [[controller searchBar] text], nil);
- STAssertEqualStrings(value, [[controller searchBar] placeholder], nil);
- STAssertEqualStrings(value, [[controller searchBar] prompt], nil);
+ XCTAssertEqualStrings(value, [[controller searchBar] text]);
+ XCTAssertEqualStrings(value, [[controller searchBar] placeholder]);
+ XCTAssertEqualStrings(value, [[controller searchBar] prompt]);
// Accessibility label seems to not be working at all. They always are nil.
// Even when setting those explicitly there, the getter always returns nil.
// This might be because the gobal accessibility switch is not on during the
// tests.
#if 0
- STAssertEqualStrings(value, [[controller view] accessibilityLabel],
- nil);
- STAssertEqualStrings(value, [[controller view] accessibilityHint],
- nil);
- STAssertEqualStrings(value, [[controller label] accessibilityLabel],
- nil);
- STAssertEqualStrings(value, [[controller label] accessibilityHint],
- nil);
+ XCTAssertEqualStrings(value, [[controller view] accessibilityLabel]);
+ XCTAssertEqualStrings(value, [[controller view] accessibilityHint]);
+ XCTAssertEqualStrings(value, [[controller label] accessibilityLabel]);
+ XCTAssertEqualStrings(value, [[controller label] accessibilityHint]);
#endif
}
diff --git a/iPhone/GTMUIView+SubtreeDescription.h b/iPhone/GTMUIView+SubtreeDescription.h
deleted file mode 100644
index e713d3d..0000000
--- a/iPhone/GTMUIView+SubtreeDescription.h
+++ /dev/null
@@ -1,60 +0,0 @@
-//
-// GTMUIView+SubtreeDescription.h
-//
-// Copyright 2009 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations
-// under the License.
-//
-#import <UIKit/UIKit.h>
-
-// This entire file, and the corresponding .m is similar to, and predates
-// Apple's recursiveDescription, used like so:
-//
-// (lldb) po [[self view] recursiveDescription]
-//
-// As documented in Technical Note TN2239 iOS Debugging Magic.
-
-// This entire file, and the corresponding .m is DEBUG only.
-// But you can define INCLUDE_UIVIEW_SUBTREE_DESCRIPTION to no-zero to override.
-#if DEBUG || INCLUDE_UIVIEW_SUBTREE_DESCRIPTION
-
-// Example, in debugger, pause the program, then type:
-// po [[[UIApplication sharedApplication] keyWindow] subtreeDescription]
-
-@interface UIView (SubtreeDescription)
-
-// Returns one line, without leading indent, but with a trailing newline,
-// describing the view.
-// If you define a |myViewDescriptionLine| method in your own UIView classes,
-// this will append that result to its description.
-- (NSString *)gtm_subtreeDescriptionLine;
-
-// For debugging. Returns a nicely indented representation of this view's
-// subview hierarchy, each with frame and isHidden.
-- (NSString *)subtreeDescription;
-
-// For debugging. Returns a nicely indented representation of this view's
-// layer hierarchy, with frames and isHidden.
-// Requires QuartzCore to be useful, but your app will still link without it.
-// TODO: should there be an analog of myViewDescriptionLine for layers?
-- (NSString *)sublayersDescription;
-
-@end
-
-@protocol GTMUIViewSubtreeDescription
-// A UIView can implement this and it can add it's own custom description
-// in gtm_subtreeDescriptionLine.
-- (NSString *)myViewDescriptionLine;
-@end
-
-#endif // DEBUG
diff --git a/iPhone/GTMUIView+SubtreeDescription.m b/iPhone/GTMUIView+SubtreeDescription.m
deleted file mode 100644
index 519aed0..0000000
--- a/iPhone/GTMUIView+SubtreeDescription.m
+++ /dev/null
@@ -1,145 +0,0 @@
-//
-// GTMUIView+SubtreeDescription.m
-//
-// Copyright 2009 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations
-// under the License.
-//
-#import "GTMUIView+SubtreeDescription.h"
-
-#if DEBUG || INCLUDE_UIVIEW_SUBTREE_DESCRIPTION
-
-static void AppendLabelFloat(NSMutableString *s, NSString *label, float f) {
- [s appendString:label];
- // Respects gcc warning about using == with floats.
- if (fabs(f - floor(f)) < 1.0e-8) { // Essentially integer.
- int d = f;
- // Respects gcc warning about casting floats to ints.
- [s appendFormat:@"%d", d];
- } else {
- [s appendFormat:@"%3.1f", f];
- }
-}
-
-static NSMutableString *SublayerDescriptionLine(CALayer *layer) {
- NSMutableString *result = [NSMutableString string];
- [result appendFormat:@"%@ %p {", [layer class], layer];
- CGRect frame = [layer frame];
- if (!CGRectIsEmpty(frame)) {
- AppendLabelFloat(result, @"x:", frame.origin.x);
- AppendLabelFloat(result, @" y:", frame.origin.y);
- AppendLabelFloat(result, @" w:", frame.size.width);
- AppendLabelFloat(result, @" h:", frame.size.height);
- }
- [result appendFormat:@"}"];
- if ([layer isHidden]) {
- [result appendString:@" hid"];
- }
- [result appendString:@"\n"];
- return result;
-}
-
-// |sublayersDescription| has a guard so we'll only call this if it is safe
-// to call.
-static NSMutableString *SublayerDescriptionAtLevel(CALayer *layer, int level) {
- NSMutableString *result = [NSMutableString string];
- for (int i = 0; i < level; ++i) {
- [result appendString:@" "];
- }
- [result appendString:SublayerDescriptionLine(layer)];
- // |sublayers| is defined in the QuartzCore framework, which isn't guaranteed
- // to be linked to this program. (So we don't include the header.)
- NSArray *layers = [layer performSelector:NSSelectorFromString(@"sublayers")];
- for (CALayer *l in layers) {
- [result appendString:SublayerDescriptionAtLevel(l, level+1)];
- }
- return result;
-}
-
-@implementation UIView (SubtreeDescription)
-
-// TODO: Consider flagging things which might help in debugging:
-// - alpha < 10%
-// - origin not zero
-// - non-opaque
-// - transform if not identity
-// - view not entirely within ancestor views
-// - (possibly) tag==0
-- (NSString *)gtm_subtreeDescriptionLine {
- NSMutableString *result = [NSMutableString string];
- [result appendFormat:@"%@ %p {", [self class], self];
- CGRect frame = [self frame];
- if (!CGRectIsEmpty(frame)) {
- AppendLabelFloat(result, @"x:", frame.origin.x);
- AppendLabelFloat(result, @" y:", frame.origin.y);
- AppendLabelFloat(result, @" w:", frame.size.width);
- AppendLabelFloat(result, @" h:", frame.size.height);
- }
- [result appendString:@"}"];
- if ([self isHidden]) {
- [result appendString:@" hid"];
- }
-
- if ([self respondsToSelector:@selector(myViewDescriptionLine)]) {
- NSString *customDescription =
- [self performSelector:@selector(myViewDescriptionLine)];
- if (customDescription != nil) {
- [result appendFormat:@" %@", customDescription];
- }
- }
-
- [result appendString:@"\n"];
- return result;
-}
-
-- (NSString *)gtm_subtreeDescriptionAtLevel:(int)level {
- NSMutableString *result = [NSMutableString string];
- for (int i = 0; i < level; ++i) {
- [result appendString:@" "];
- }
- [result appendString:[self gtm_subtreeDescriptionLine]];
- for (UIView *v in [self subviews]) {
- [result appendString:[v gtm_subtreeDescriptionAtLevel:level+1]];
- }
- return result;
-}
-
-- (NSString *)subtreeDescription {
- NSMutableString *result =
- [[[self gtm_subtreeDescriptionLine] mutableCopy] autorelease];
- for (UIView *v in [self subviews]) {
- [result appendString:[v gtm_subtreeDescriptionAtLevel:1]];
- }
- return result;
-}
-
-// for debugging dump the layer hierarchy, frames and isHidden.
-- (NSString *)sublayersDescription {
- CALayer *layer = [self layer];
- SEL sublayers = NSSelectorFromString(@"sublayers");
- if (![layer respondsToSelector:sublayers]) {
- return @"*** Sorry: This app is not linked with the QuartzCore framework.";
- }
- NSMutableString *result = SublayerDescriptionLine(layer);
- NSArray *layers = [layer performSelector:sublayers];
- for (CALayer *l in layers) {
- [result appendString:SublayerDescriptionAtLevel(l, 1)];
- }
- return result;
-}
-
-@end
-
-#endif // DEBUG
-
-
diff --git a/iPhone/GTMUIView+SubtreeDescriptionTest.m b/iPhone/GTMUIView+SubtreeDescriptionTest.m
deleted file mode 100644
index b691cd5..0000000
--- a/iPhone/GTMUIView+SubtreeDescriptionTest.m
+++ /dev/null
@@ -1,150 +0,0 @@
-//
-// GTMUIView+SubtreeDescriptionTest.m
-//
-// Copyright 2009 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations
-// under the License.
-//
-
-#import "GTMNSObject+UnitTesting.h"
-#import "GTMSenTestCase.h"
-#import "GTMUIView+SubtreeDescription.h"
-
-#if !NDEBUG
-
-@interface GTMUIView_SubtreeDescriptionTest : GTMTestCase
-@end
-
-@implementation GTMUIView_SubtreeDescriptionTest
-
-- (void)testSubtreeDescription {
- // Test a single, simple view.
- CGRect frame1 = CGRectMake(0, 0, 100, 200);
- UIView *view1 = [[[UIView alloc] initWithFrame:frame1] autorelease];
- NSString *actual = [view1 subtreeDescription];
- NSString *expected = [NSString stringWithFormat:
- @"UIView %p {x:0 y:0 w:100 h:200}\n", view1];
- STAssertEqualObjects(actual, expected, @"a single, simple view failed");
-
- // Test a view with one child.
- CGRect frame2 = CGRectMake(2, 2, 102, 202);
- UIView *view2 = [[[UIView alloc] initWithFrame:frame2] autorelease];
- [view1 addSubview:view2];
- NSString *actual2 = [view1 subtreeDescription];
- NSString *expected2 = [NSString stringWithFormat:
- @"UIView %p {x:0 y:0 w:100 h:200}\n"
- @" UIView %p {x:2 y:2 w:102 h:202}\n", view1, view2];
- STAssertEqualObjects(actual2, expected2, @"a view with one child");
-
- // Test a view with two children.
- CGRect frame3 = CGRectMake(3, 3, 103, 203);
- UIView *view3 = [[[UIView alloc] initWithFrame:frame3] autorelease];
- [view1 addSubview:view3];
- NSString *actual3 = [view1 subtreeDescription];
- NSString *expected3 = [NSString stringWithFormat:
- @"UIView %p {x:0 y:0 w:100 h:200}\n"
- @" UIView %p {x:2 y:2 w:102 h:202}\n"
- @" UIView %p {x:3 y:3 w:103 h:203}\n",
- view1, view2, view3];
- STAssertEqualObjects(actual3, expected3, @"a view with two children");
-
- // Test a view with two children, one hidden.
- [view3 setHidden:YES];
- NSString *actual4 = [view1 subtreeDescription];
- NSString *expected4 = [NSString stringWithFormat:
- @"UIView %p {x:0 y:0 w:100 h:200}\n"
- @" UIView %p {x:2 y:2 w:102 h:202}\n"
- @" UIView %p {x:3 y:3 w:103 h:203} hid\n",
- view1, view2, view3];
- STAssertEqualObjects(actual4, expected4, @"with two children, one hidden");
-}
-
-- (void)testSublayersDescription {
- // Test a single, simple layer.
- CGRect frame1 = CGRectMake(0, 0, 100, 200);
- UIView *view1 = [[[UIView alloc] initWithFrame:frame1] autorelease];
- NSString *actual = [view1 sublayersDescription];
- NSString *expected = [NSString stringWithFormat:
- @"CALayer %p {x:0 y:0 w:100 h:200}\n", [view1 layer]];
- STAssertEqualObjects(actual, expected, @"a single, simple layer failed");
-
- // Test a layer with one child.
- CGRect frame2 = CGRectMake(2, 2, 102, 202);
- UIView *view2 = [[[UIView alloc] initWithFrame:frame2] autorelease];
- [view1 addSubview:view2];
- NSString *actual2 = [view1 sublayersDescription];
- NSString *expected2 = [NSString stringWithFormat:
- @"CALayer %p {x:0 y:0 w:100 h:200}\n"
- @" CALayer %p {x:2 y:2 w:102 h:202}\n",
- [view1 layer], [view2 layer]];
- STAssertEqualObjects(actual2, expected2, @"a layer with one child");
-
- // Test a layer with two children.
- CGRect frame3 = CGRectMake(3, 3, 103, 203);
- UIView *view3 = [[[UIView alloc] initWithFrame:frame3] autorelease];
- [view1 addSubview:view3];
- NSString *actual3 = [view1 sublayersDescription];
- NSString *expected3 = [NSString stringWithFormat:
- @"CALayer %p {x:0 y:0 w:100 h:200}\n"
- @" CALayer %p {x:2 y:2 w:102 h:202}\n"
- @" CALayer %p {x:3 y:3 w:103 h:203}\n",
- [view1 layer], [view2 layer], [view3 layer]];
- STAssertEqualObjects(actual3, expected3, @"a layer with two children");
-
- // Test a layer with two children, one hidden.
- [view3 setHidden:YES];
- NSString *actual4 = [view1 sublayersDescription];
- NSString *expected4 = [NSString stringWithFormat:
- @"CALayer %p {x:0 y:0 w:100 h:200}\n"
- @" CALayer %p {x:2 y:2 w:102 h:202}\n"
- @" CALayer %p {x:3 y:3 w:103 h:203} hid\n",
- [view1 layer], [view2 layer], [view3 layer]];
- STAssertEqualObjects(actual4, expected4, @"with two children, one hidden");
-}
-
-@end
-
-@interface UIMyTestView : UIView
-- (NSString *)myViewDescriptionLine;
-@end
-
-@implementation UIMyTestView
-- (NSString *)myViewDescriptionLine {
- NSString *result = [NSString stringWithFormat:@"alpha: %3.1f", [self alpha]];
- return result;
-}
-@end
-
-@interface GTMUIView_SubtreeSubClassDescriptionTest : GTMTestCase
-@end
-
-@implementation GTMUIView_SubtreeSubClassDescriptionTest
-- (void)testSubtreeDescription {
- CGRect frame1 = CGRectMake(0, 0, 100, 200);
- UIView *view1 = [[[UIView alloc] initWithFrame:frame1] autorelease];
-
- // Test a view with one child.
- CGRect frame2 = CGRectMake(2, 2, 102, 202);
- UIView *view2 = [[[UIMyTestView alloc] initWithFrame:frame2] autorelease];
- [view1 addSubview:view2];
- NSString *actual2 = [view1 subtreeDescription];
- NSString *expected2 = [NSString stringWithFormat:
- @"UIView %p {x:0 y:0 w:100 h:200}\n"
- @" UIMyTestView %p {x:2 y:2 w:102 h:202} alpha: 1.0\n",
- view1, view2];
- STAssertEqualObjects(actual2, expected2, @"a view with one subclassed child");
-}
-@end
-
-
-#endif
diff --git a/iPhone/TestData/GTMFadeTruncatingLabelTest1.5.png b/iPhone/TestData/GTMFadeTruncatingLabelTest1.5.png
deleted file mode 100644
index 27a1d90..0000000
--- a/iPhone/TestData/GTMFadeTruncatingLabelTest1.5.png
+++ /dev/null
Binary files differ
diff --git a/iPhone/TestData/GTMFadeTruncatingLabelTest1.6.png b/iPhone/TestData/GTMFadeTruncatingLabelTest1.6.png
deleted file mode 100644
index e2a2777..0000000
--- a/iPhone/TestData/GTMFadeTruncatingLabelTest1.6.png
+++ /dev/null
Binary files differ
diff --git a/iPhone/TestData/GTMFadeTruncatingLabelTest1.png b/iPhone/TestData/GTMFadeTruncatingLabelTest1.png
deleted file mode 100644
index d5d7910..0000000
--- a/iPhone/TestData/GTMFadeTruncatingLabelTest1.png
+++ /dev/null
Binary files differ
diff --git a/iPhone/TestData/GTMFadeTruncatingLabelTest2.5.png b/iPhone/TestData/GTMFadeTruncatingLabelTest2.5.png
deleted file mode 100644
index 49377c4..0000000
--- a/iPhone/TestData/GTMFadeTruncatingLabelTest2.5.png
+++ /dev/null
Binary files differ
diff --git a/iPhone/TestData/GTMFadeTruncatingLabelTest2.6.png b/iPhone/TestData/GTMFadeTruncatingLabelTest2.6.png
deleted file mode 100644
index cb840ba..0000000
--- a/iPhone/TestData/GTMFadeTruncatingLabelTest2.6.png
+++ /dev/null
Binary files differ
diff --git a/iPhone/TestData/GTMFadeTruncatingLabelTest2.png b/iPhone/TestData/GTMFadeTruncatingLabelTest2.png
deleted file mode 100644
index 80d95fd..0000000
--- a/iPhone/TestData/GTMFadeTruncatingLabelTest2.png
+++ /dev/null
Binary files differ
diff --git a/iPhone/TestData/GTMFadeTruncatingLabelTest3.5.png b/iPhone/TestData/GTMFadeTruncatingLabelTest3.5.png
deleted file mode 100644
index dd68fe9..0000000
--- a/iPhone/TestData/GTMFadeTruncatingLabelTest3.5.png
+++ /dev/null
Binary files differ
diff --git a/iPhone/TestData/GTMFadeTruncatingLabelTest3.6.png b/iPhone/TestData/GTMFadeTruncatingLabelTest3.6.png
deleted file mode 100644
index b9a07fa..0000000
--- a/iPhone/TestData/GTMFadeTruncatingLabelTest3.6.png
+++ /dev/null
Binary files differ
diff --git a/iPhone/TestData/GTMFadeTruncatingLabelTest3.png b/iPhone/TestData/GTMFadeTruncatingLabelTest3.png
deleted file mode 100644
index eba21b2..0000000
--- a/iPhone/TestData/GTMFadeTruncatingLabelTest3.png
+++ /dev/null
Binary files differ
diff --git a/iPhone/TestData/GTMFadeTruncatingLabelTest4.5.png b/iPhone/TestData/GTMFadeTruncatingLabelTest4.5.png
deleted file mode 100644
index f3bbfb0..0000000
--- a/iPhone/TestData/GTMFadeTruncatingLabelTest4.5.png
+++ /dev/null
Binary files differ
diff --git a/iPhone/TestData/GTMFadeTruncatingLabelTest4.6.png b/iPhone/TestData/GTMFadeTruncatingLabelTest4.6.png
deleted file mode 100644
index 1fecc29..0000000
--- a/iPhone/TestData/GTMFadeTruncatingLabelTest4.6.png
+++ /dev/null
Binary files differ
diff --git a/iPhone/TestData/GTMFadeTruncatingLabelTest4.png b/iPhone/TestData/GTMFadeTruncatingLabelTest4.png
deleted file mode 100644
index e9f59c8..0000000
--- a/iPhone/TestData/GTMFadeTruncatingLabelTest4.png
+++ /dev/null
Binary files differ
diff --git a/iPhone/TestData/GTMFadeTruncatingLabelTest5.5.png b/iPhone/TestData/GTMFadeTruncatingLabelTest5.5.png
deleted file mode 100644
index 60d4242..0000000
--- a/iPhone/TestData/GTMFadeTruncatingLabelTest5.5.png
+++ /dev/null
Binary files differ
diff --git a/iPhone/TestData/GTMFadeTruncatingLabelTest5.6.png b/iPhone/TestData/GTMFadeTruncatingLabelTest5.6.png
deleted file mode 100644
index 8c2db75..0000000
--- a/iPhone/TestData/GTMFadeTruncatingLabelTest5.6.png
+++ /dev/null
Binary files differ
diff --git a/iPhone/TestData/GTMFadeTruncatingLabelTest5.png b/iPhone/TestData/GTMFadeTruncatingLabelTest5.png
deleted file mode 100644
index ba378d2..0000000
--- a/iPhone/TestData/GTMFadeTruncatingLabelTest5.png
+++ /dev/null
Binary files differ
diff --git a/iPhone/TestData/GTMUIImage+Resize_100x100_to_40x60.png b/iPhone/TestData/GTMUIImage+Resize_100x100_to_40x60.png
deleted file mode 100644
index 10223fd..0000000
--- a/iPhone/TestData/GTMUIImage+Resize_100x100_to_40x60.png
+++ /dev/null
Binary files differ
diff --git a/iPhone/TestData/GTMUIImage+Resize_100x100_to_50x50.png b/iPhone/TestData/GTMUIImage+Resize_100x100_to_50x50.png
deleted file mode 100644
index ab71afb..0000000
--- a/iPhone/TestData/GTMUIImage+Resize_100x100_to_50x50.png
+++ /dev/null
Binary files differ
diff --git a/iPhone/TestData/GTMUIImage+Resize_100x100_to_60x40.png b/iPhone/TestData/GTMUIImage+Resize_100x100_to_60x40.png
deleted file mode 100644
index 5683f17..0000000
--- a/iPhone/TestData/GTMUIImage+Resize_100x100_to_60x40.png
+++ /dev/null
Binary files differ
diff --git a/iPhone/TestData/GTMUIImage+Resize_100x50_flipped.png b/iPhone/TestData/GTMUIImage+Resize_100x50_flipped.png
deleted file mode 100644
index c6b1d8f..0000000
--- a/iPhone/TestData/GTMUIImage+Resize_100x50_flipped.png
+++ /dev/null
Binary files differ
diff --git a/iPhone/TestData/GTMUIImage+Resize_100x50_to_40x60_clip.png b/iPhone/TestData/GTMUIImage+Resize_100x50_to_40x60_clip.png
deleted file mode 100644
index b7721ad..0000000
--- a/iPhone/TestData/GTMUIImage+Resize_100x50_to_40x60_clip.png
+++ /dev/null
Binary files differ
diff --git a/iPhone/TestData/GTMUIImage+Resize_100x50_to_40x60_noclip.png b/iPhone/TestData/GTMUIImage+Resize_100x50_to_40x60_noclip.png
deleted file mode 100644
index 0e2c9de..0000000
--- a/iPhone/TestData/GTMUIImage+Resize_100x50_to_40x60_noclip.png
+++ /dev/null
Binary files differ
diff --git a/iPhone/TestData/GTMUIImage+Resize_100x50_to_50x50_clip.png b/iPhone/TestData/GTMUIImage+Resize_100x50_to_50x50_clip.png
deleted file mode 100644
index e913bfb..0000000
--- a/iPhone/TestData/GTMUIImage+Resize_100x50_to_50x50_clip.png
+++ /dev/null
Binary files differ
diff --git a/iPhone/TestData/GTMUIImage+Resize_100x50_to_50x50_noclip.png b/iPhone/TestData/GTMUIImage+Resize_100x50_to_50x50_noclip.png
deleted file mode 100644
index 365dfb6..0000000
--- a/iPhone/TestData/GTMUIImage+Resize_100x50_to_50x50_noclip.png
+++ /dev/null
Binary files differ
diff --git a/iPhone/TestData/GTMUIImage+Resize_100x50_to_60x40_clip.png b/iPhone/TestData/GTMUIImage+Resize_100x50_to_60x40_clip.png
deleted file mode 100644
index b8e6c06..0000000
--- a/iPhone/TestData/GTMUIImage+Resize_100x50_to_60x40_clip.png
+++ /dev/null
Binary files differ
diff --git a/iPhone/TestData/GTMUIImage+Resize_100x50_to_60x40_noclip.png b/iPhone/TestData/GTMUIImage+Resize_100x50_to_60x40_noclip.png
deleted file mode 100644
index 14d96b0..0000000
--- a/iPhone/TestData/GTMUIImage+Resize_100x50_to_60x40_noclip.png
+++ /dev/null
Binary files differ
diff --git a/iPhone/TestData/GTMUIImage+Resize_50x100_flipped.png b/iPhone/TestData/GTMUIImage+Resize_50x100_flipped.png
deleted file mode 100644
index bdce5a2..0000000
--- a/iPhone/TestData/GTMUIImage+Resize_50x100_flipped.png
+++ /dev/null
Binary files differ
diff --git a/iPhone/TestData/GTMUIImage+Resize_50x100_to_40x60_clip.png b/iPhone/TestData/GTMUIImage+Resize_50x100_to_40x60_clip.png
deleted file mode 100644
index 3c68940..0000000
--- a/iPhone/TestData/GTMUIImage+Resize_50x100_to_40x60_clip.png
+++ /dev/null
Binary files differ
diff --git a/iPhone/TestData/GTMUIImage+Resize_50x100_to_40x60_noclip.png b/iPhone/TestData/GTMUIImage+Resize_50x100_to_40x60_noclip.png
deleted file mode 100644
index 8a9b227..0000000
--- a/iPhone/TestData/GTMUIImage+Resize_50x100_to_40x60_noclip.png
+++ /dev/null
Binary files differ
diff --git a/iPhone/TestData/GTMUIImage+Resize_50x100_to_50x50_clip.png b/iPhone/TestData/GTMUIImage+Resize_50x100_to_50x50_clip.png
deleted file mode 100644
index 6d6a5df..0000000
--- a/iPhone/TestData/GTMUIImage+Resize_50x100_to_50x50_clip.png
+++ /dev/null
Binary files differ
diff --git a/iPhone/TestData/GTMUIImage+Resize_50x100_to_50x50_noclip.png b/iPhone/TestData/GTMUIImage+Resize_50x100_to_50x50_noclip.png
deleted file mode 100644
index c79873a..0000000
--- a/iPhone/TestData/GTMUIImage+Resize_50x100_to_50x50_noclip.png
+++ /dev/null
Binary files differ
diff --git a/iPhone/TestData/GTMUIImage+Resize_50x100_to_60x40_clip.png b/iPhone/TestData/GTMUIImage+Resize_50x100_to_60x40_clip.png
deleted file mode 100644
index 87feb9b..0000000
--- a/iPhone/TestData/GTMUIImage+Resize_50x100_to_60x40_clip.png
+++ /dev/null
Binary files differ
diff --git a/iPhone/TestData/GTMUIImage+Resize_50x100_to_60x40_noclip.png b/iPhone/TestData/GTMUIImage+Resize_50x100_to_60x40_noclip.png
deleted file mode 100644
index be94dc6..0000000
--- a/iPhone/TestData/GTMUIImage+Resize_50x100_to_60x40_noclip.png
+++ /dev/null
Binary files differ