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