aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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