1 2from PyObjCTools.TestSupport import * 3from AppKit import * 4 5try: 6 unicode 7except NameError: 8 unicode = str 9 10 11try: 12 long 13except NameError: 14 long = int 15 16class TestNSApplicationHelper (NSObject): 17 def copyWithZone_(self, zone): 18 return self 19 20 def writeSelectionToPasteboard_types_(self, pb, tp): 21 return 1 22 def readSelectionFromPasteboard_(self, pb): 23 return 1 24 def application_openFile_(self, sender, file): 25 return 1 26 def application_openTempFile_(self, sender, file): 27 return 1 28 def applicationShouldOpenUntitledFile_(self, sender): 29 return 1 30 def application_openFileWithoutUI_(self, sender, file): 31 return 1 32 def application_printFile_(self, sender, file): 33 return 1 34 def application_printFiles_withSettings_showPrintPanels_( 35 self, a, f, s, sh): 36 return 1 37 def applicationShouldTerminateAfterLastWindowClosed_(self, sender): 38 return 1 39 def applicationShouldHandleReopen_hasVisibleWindows_(self, sender, flag): 40 return 1 41 42 43class TestNSApplication (TestCase): 44 def testConstants(self): 45 self.assertEqual(NSAppKitVersionNumber10_0, 577) 46 self.assertEqual(NSAppKitVersionNumber10_1, 620) 47 self.assertEqual(NSAppKitVersionNumber10_2, 663) 48 self.assertEqual(NSAppKitVersionNumber10_2_3, 663.6) 49 self.assertEqual(NSAppKitVersionNumber10_3, 743) 50 self.assertEqual(NSAppKitVersionNumber10_3_2, 743.14) 51 self.assertEqual(NSAppKitVersionNumber10_3_3, 743.2) 52 self.assertEqual(NSAppKitVersionNumber10_3_5, 743.24) 53 self.assertEqual(NSAppKitVersionNumber10_3_7, 743.33) 54 self.assertEqual(NSAppKitVersionNumber10_3_9, 743.36) 55 self.assertEqual(NSAppKitVersionNumber10_4, 824) 56 self.assertEqual(NSAppKitVersionNumber10_4_1, 824.1) 57 self.assertEqual(NSAppKitVersionNumber10_4_3, 824.23) 58 self.assertEqual(NSAppKitVersionNumber10_4_4,824.33) 59 self.assertEqual(NSAppKitVersionNumber10_4_7, 824.41) 60 self.assertEqual(NSAppKitVersionNumber10_5, 949) 61 self.assertEqual(NSAppKitVersionNumber10_5_2, 949.27) 62 self.assertEqual(NSAppKitVersionNumber10_5_3, 949.33) 63 self.assertEqual(NSAppKitVersionNumber10_6, 1038) 64 65 66 self.assertIsInstance(NSModalPanelRunLoopMode, unicode) 67 self.assertIsInstance(NSEventTrackingRunLoopMode, unicode) 68 69 self.assertEqual(NSRunStoppedResponse, -1000) 70 self.assertEqual(NSRunAbortedResponse, -1001) 71 self.assertEqual(NSRunContinuesResponse, -1002) 72 73 self.assertEqual(NSUpdateWindowsRunLoopOrdering, 500000) 74 75 self.assertEqual(NSCriticalRequest, 0) 76 self.assertEqual(NSInformationalRequest, 10) 77 78 self.assertEqual(NSApplicationDelegateReplySuccess, 0) 79 self.assertEqual(NSApplicationDelegateReplyCancel, 1) 80 self.assertEqual(NSApplicationDelegateReplyFailure, 2) 81 82 self.assertEqual(NSTerminateCancel, 0) 83 self.assertEqual(NSTerminateNow, 1) 84 self.assertEqual(NSTerminateLater, 2) 85 86 self.assertEqual(NSPrintingCancelled, 0) 87 self.assertEqual(NSPrintingSuccess, 1) 88 self.assertEqual(NSPrintingFailure, 3) 89 self.assertEqual(NSPrintingReplyLater, 2) 90 91 self.assertIsInstance(NSApplicationDidBecomeActiveNotification, unicode) 92 self.assertIsInstance(NSApplicationDidHideNotification, unicode) 93 self.assertIsInstance(NSApplicationDidFinishLaunchingNotification, unicode) 94 self.assertIsInstance(NSApplicationDidResignActiveNotification, unicode) 95 self.assertIsInstance(NSApplicationDidUnhideNotification, unicode) 96 self.assertIsInstance(NSApplicationDidUpdateNotification, unicode) 97 self.assertIsInstance(NSApplicationWillBecomeActiveNotification, unicode) 98 self.assertIsInstance(NSApplicationWillHideNotification, unicode) 99 self.assertIsInstance(NSApplicationWillFinishLaunchingNotification, unicode) 100 self.assertIsInstance(NSApplicationWillResignActiveNotification, unicode) 101 self.assertIsInstance(NSApplicationWillUnhideNotification, unicode) 102 self.assertIsInstance(NSApplicationWillUpdateNotification, unicode) 103 self.assertIsInstance(NSApplicationWillTerminateNotification, unicode) 104 self.assertIsInstance(NSApplicationDidChangeScreenParametersNotification, unicode) 105 106 107 def testFunctions(self): 108 # Testing the next function is not doable in this context... 109 NSApplicationMain 110 self.assertResultIsBOOL(NSApplicationLoad) 111 self.assertIsInstance(NSApplicationLoad(), bool) 112 113 self.assertResultIsBOOL(NSShowsServicesMenuItem) 114 self.assertIsInstance(NSShowsServicesMenuItem("foobar"), bool) 115 116 self.assertIsInstance(NSSetShowsServicesMenuItem("foobar", 1), (int, long)) 117 self.assertArgIsBOOL(NSSetShowsServicesMenuItem, 1) 118 119 NSUpdateDynamicServices() 120 121 pboard = NSPasteboard.pasteboardWithName_("pyobjctest") 122 self.assertIsInstance(pboard, NSPasteboard) 123 self.assertIsInstance(NSPerformService("help", pboard), bool) 124 125 v = TestNSApplicationHelper.alloc().init() 126 NSRegisterServicesProvider("foobar", v) 127 NSUnregisterServicesProvider("foobar") 128 129 def testNSApp(self): 130 self.assertIsNot(NSApp, None) 131 self.assertEqual(type(NSApp).__name__, "_NSApp") 132 self.assertHasAttr(NSApp, '__call__') 133 app = NSApp() 134 if app is not None: 135 self.assertIsInstance(app, NSApplication) 136 137 def testNSModalSession(self): 138 self.assertIsOpaquePointer(NSModalSession) 139 140 app = NSApplication.sharedApplication() 141 window = NSWindow.alloc().init() 142 session = app.beginModalSessionForWindow_(window) 143 self.assertIsInstance(session, NSModalSession) 144 app.endModalSession_(session) 145 146 def testMethods(self): 147 self.assertResultIsBOOL(NSApplication.isActive) 148 self.assertResultIsBOOL(NSApplication.isHidden) 149 self.assertResultIsBOOL(NSApplication.isRunning) 150 self.assertArgIsBOOL(NSApplication.activateIgnoringOtherApps_, 0) 151 152 self.assertArgIsSEL(NSApplication.beginSheet_modalForWindow_modalDelegate_didEndSelector_contextInfo_, 3, b'v@:@' + objc._C_NSInteger + b'^v') 153 self.assertArgHasType(NSApplication.beginSheet_modalForWindow_modalDelegate_didEndSelector_contextInfo_, 4, b'^v') 154 155 156 self.assertArgIsBOOL(NSApplication.postEvent_atStart_, 1) 157 self.assertArgIsBOOL(NSApplication.makeWindowsPerform_inOrder_, 1) 158 self.assertArgIsBOOL(NSApplication.setWindowsNeedUpdate_, 0) 159 self.assertResultIsBOOL(NSApplication.sendAction_to_from_) 160 self.assertResultIsBOOL(NSApplication.tryToPerform_with_) 161 self.assertArgIsBOOL(NSApplication.replyToApplicationShouldTerminate_, 0) 162 self.assertArgIsBOOL(NSApplication.addWindowsItem_title_filename_, 2) 163 self.assertArgIsBOOL(NSApplication.changeWindowsItem_title_filename_, 2) 164 165 def testDelegateMethods(self): 166 self.assertResultIsBOOL(TestNSApplicationHelper.application_openFile_) 167 self.assertResultIsBOOL(TestNSApplicationHelper.application_openTempFile_) 168 self.assertResultIsBOOL(TestNSApplicationHelper.applicationShouldOpenUntitledFile_) 169 self.assertResultIsBOOL(TestNSApplicationHelper.application_openFileWithoutUI_) 170 self.assertResultIsBOOL(TestNSApplicationHelper.application_printFile_) 171 self.assertArgIsBOOL(TestNSApplicationHelper.application_printFiles_withSettings_showPrintPanels_, 3) 172 self.assertResultIsBOOL(TestNSApplicationHelper.applicationShouldTerminateAfterLastWindowClosed_) 173 self.assertResultIsBOOL(TestNSApplicationHelper.applicationShouldHandleReopen_hasVisibleWindows_) 174 self.assertArgIsBOOL(TestNSApplicationHelper.applicationShouldHandleReopen_hasVisibleWindows_, 1) 175 176 self.assertResultIsBOOL(TestNSApplicationHelper.writeSelectionToPasteboard_types_) 177 self.assertResultIsBOOL(TestNSApplicationHelper.readSelectionFromPasteboard_) 178 179 180 @min_os_level('10.6') 181 def testConstants10_6(self): 182 self.assertEqual(NSAppKitVersionNumber10_4_1, 824.1) 183 self.assertEqual(NSAppKitVersionNumber10_4_3, 824.23) 184 self.assertEqual(NSAppKitVersionNumber10_4_4, 824.33) 185 self.assertEqual(NSAppKitVersionNumber10_4_7, 824.41) 186 self.assertEqual(NSAppKitVersionNumber10_5, 949) 187 self.assertEqual(NSAppKitVersionNumber10_5_2, 949.27) 188 self.assertEqual(NSAppKitVersionNumber10_5_3, 949.33) 189 self.assertEqual(NSAppKitVersionNumber10_5_3, 949.33) 190 191 self.assertEqual(NSApplicationPresentationDefault, 0) 192 self.assertEqual(NSApplicationPresentationAutoHideDock, (1 << 0)) 193 self.assertEqual(NSApplicationPresentationHideDock, (1 << 1)) 194 self.assertEqual(NSApplicationPresentationAutoHideMenuBar, (1 << 2)) 195 self.assertEqual(NSApplicationPresentationHideMenuBar, (1 << 3)) 196 self.assertEqual(NSApplicationPresentationDisableAppleMenu, (1 << 4)) 197 self.assertEqual(NSApplicationPresentationDisableProcessSwitching, (1 << 5)) 198 self.assertEqual(NSApplicationPresentationDisableForceQuit, (1 << 6)) 199 self.assertEqual(NSApplicationPresentationDisableSessionTermination, (1 << 7)) 200 self.assertEqual(NSApplicationPresentationDisableHideApplication, (1 << 8)) 201 self.assertEqual(NSApplicationPresentationDisableMenuBarTransparency, (1 << 9)) 202 203 self.assertEqual(NSUserInterfaceLayoutDirectionLeftToRight, 0) 204 self.assertEqual(NSUserInterfaceLayoutDirectionRightToLeft, 1) 205 206 @min_os_level('10.7') 207 def testConstants10_7(self): 208 self.assertEqual(NSApplicationPresentationFullScreen, 1<<10) 209 self.assertEqual(NSApplicationPresentationAutoHideToolbar, 1<<11) 210 self.assertEqual(NSRemoteNotificationTypeNone, 0) 211 self.assertEqual(NSRemoteNotificationTypeBadge, 1) 212 213 self.assertEqual(NSAppKitVersionNumber10_7, 1138) 214 self.assertEqual(NSAppKitVersionNumber10_7_2, 1138.23) 215 216 self.assertIsInstance(NSApplicationLaunchRemoteNotificationKey, unicode) 217 self.assertIsInstance(NSApplicationLaunchIsDefaultLaunchKey, unicode) 218 219 @min_os_level('10.8') 220 def testConstants10_8(self): 221 self.assertIsInstance(NSApplicationLaunchUserNotificationKey, unicode) 222 self.assertIsInstance(NSTextAlternativesAttributeName, unicode) 223 self.assertIsInstance(NSUsesScreenFontsDocumentAttribute, unicode) 224 225 self.assertEqual(NSRemoteNotificationTypeSound, 2) 226 self.assertEqual(NSRemoteNotificationTypeAlert, 4) 227 228 @min_os_level('10.6') 229 def testMethods10_6(self): 230 self.assertResultIsBOOL(NSApplication.setActivationPolicy_) 231 self.assertResultIsBOOL(NSApplication.isFullKeyboardAccessEnabled) 232 233 234 235if __name__ == "__main__": 236 main() 237