1
2from PyObjCTools.TestSupport import *
3from AppKit import *
4
5class TestNSApplicationHelper (NSObject):
6    def copyWithZone_(self, zone):
7        return self
8
9    def writeSelectionToPasteboard_types_(self, pb, tp):
10        return 1
11    def readSelectionFromPasteboard_(self, pb):
12        return 1
13    def application_openFile_(self, sender, file):
14        return 1
15    def application_openTempFile_(self, sender, file):
16        return 1
17    def applicationShouldOpenUntitledFile_(self, sender):
18        return 1
19    def application_openFileWithoutUI_(self, sender, file):
20        return 1
21    def application_printFile_(self, sender, file):
22        return 1
23    def application_printFiles_withSettings_showPrintPanels_(
24            self, a, f, s, sh):
25        return 1
26    def applicationShouldTerminateAfterLastWindowClosed_(self, sender):
27        return 1
28    def applicationShouldHandleReopen_hasVisibleWindows_(self, sender, flag):
29        return 1
30
31
32class TestNSApplication (TestCase):
33    def testConstants(self):
34        self.failUnlessEqual(NSAppKitVersionNumber10_0, 577)
35        self.failUnlessEqual(NSAppKitVersionNumber10_1, 620)
36        self.failUnlessEqual(NSAppKitVersionNumber10_2, 663)
37        self.failUnlessEqual(NSAppKitVersionNumber10_2_3, 663.6)
38        self.failUnlessEqual(NSAppKitVersionNumber10_3, 743)
39        self.failUnlessEqual(NSAppKitVersionNumber10_3_2, 743.14)
40        self.failUnlessEqual(NSAppKitVersionNumber10_3_3, 743.2)
41        self.failUnlessEqual(NSAppKitVersionNumber10_3_5, 743.24)
42        self.failUnlessEqual(NSAppKitVersionNumber10_3_7, 743.33)
43        self.failUnlessEqual(NSAppKitVersionNumber10_3_9, 743.36)
44        self.failUnlessEqual(NSAppKitVersionNumber10_4, 824)
45
46        self.failUnlessIsInstance(NSModalPanelRunLoopMode, unicode)
47        self.failUnlessIsInstance(NSEventTrackingRunLoopMode, unicode)
48
49        self.failUnlessEqual(NSRunStoppedResponse, -1000)
50        self.failUnlessEqual(NSRunAbortedResponse, -1001)
51        self.failUnlessEqual(NSRunContinuesResponse, -1002)
52
53        self.failUnlessEqual(NSUpdateWindowsRunLoopOrdering, 500000)
54
55        self.failUnlessEqual(NSCriticalRequest, 0)
56        self.failUnlessEqual(NSInformationalRequest, 10)
57
58        self.failUnlessEqual(NSApplicationDelegateReplySuccess, 0)
59        self.failUnlessEqual(NSApplicationDelegateReplyCancel, 1)
60        self.failUnlessEqual(NSApplicationDelegateReplyFailure, 2)
61
62        self.failUnlessEqual(NSTerminateCancel, 0)
63        self.failUnlessEqual(NSTerminateNow, 1)
64        self.failUnlessEqual(NSTerminateLater, 2)
65
66        self.failUnlessEqual(NSPrintingCancelled, 0)
67        self.failUnlessEqual(NSPrintingSuccess, 1)
68        self.failUnlessEqual(NSPrintingFailure, 3)
69        self.failUnlessEqual(NSPrintingReplyLater, 2)
70
71        self.failUnlessIsInstance(NSApplicationDidBecomeActiveNotification, unicode)
72        self.failUnlessIsInstance(NSApplicationDidHideNotification, unicode)
73        self.failUnlessIsInstance(NSApplicationDidFinishLaunchingNotification, unicode)
74        self.failUnlessIsInstance(NSApplicationDidResignActiveNotification, unicode)
75        self.failUnlessIsInstance(NSApplicationDidUnhideNotification, unicode)
76        self.failUnlessIsInstance(NSApplicationDidUpdateNotification, unicode)
77        self.failUnlessIsInstance(NSApplicationWillBecomeActiveNotification, unicode)
78        self.failUnlessIsInstance(NSApplicationWillHideNotification, unicode)
79        self.failUnlessIsInstance(NSApplicationWillFinishLaunchingNotification, unicode)
80        self.failUnlessIsInstance(NSApplicationWillResignActiveNotification, unicode)
81        self.failUnlessIsInstance(NSApplicationWillUnhideNotification, unicode)
82        self.failUnlessIsInstance(NSApplicationWillUpdateNotification, unicode)
83        self.failUnlessIsInstance(NSApplicationWillTerminateNotification, unicode)
84        self.failUnlessIsInstance(NSApplicationDidChangeScreenParametersNotification, unicode)
85
86
87    def testFunctions(self):
88        # Testing the next function is not doable in this context...
89        NSApplicationMain
90        self.failUnlessResultIsBOOL(NSApplicationLoad)
91        self.failUnlessIsInstance(NSApplicationLoad(), bool)
92
93        self.failUnlessResultIsBOOL(NSShowsServicesMenuItem)
94        self.failUnlessIsInstance(NSShowsServicesMenuItem("foobar"), bool)
95
96        self.failUnlessIsInstance(NSSetShowsServicesMenuItem("foobar", 1), (int, long))
97        self.failUnlessArgIsBOOL(NSSetShowsServicesMenuItem, 1)
98
99        NSUpdateDynamicServices()
100
101        pboard = NSPasteboard.pasteboardWithName_("pyobjctest")
102        self.failUnlessIsInstance(pboard, NSPasteboard)
103        self.failUnlessIsInstance(NSPerformService("help", pboard), bool)
104
105        objc.setVerbose(1)
106        v = TestNSApplicationHelper.alloc().init()
107        NSRegisterServicesProvider("foobar", v)
108        NSUnregisterServicesProvider("foobar")
109
110    def testNSApp(self):
111        self.failIf(NSApp is None)
112        self.failUnlessEqual(type(NSApp).__name__, "_NSApp")
113        self.failUnless(hasattr(NSApp, '__call__'))
114        app = NSApp()
115        self.failUnless(app is None or isinstance(app, NSApplication))
116
117    def testNSModalSession(self):
118        self.failUnlessIsOpaquePointer(NSModalSession)
119
120        app = NSApplication.sharedApplication()
121        window = NSWindow.alloc().init()
122        session = app.beginModalSessionForWindow_(window)
123        self.failUnlessIsInstance(session, NSModalSession)
124        app.endModalSession_(session)
125
126    def testMethods(self):
127        self.failUnlessResultIsBOOL(NSApplication.isActive)
128        self.failUnlessResultIsBOOL(NSApplication.isHidden)
129        self.failUnlessResultIsBOOL(NSApplication.isRunning)
130        self.failUnlessArgIsBOOL(NSApplication.activateIgnoringOtherApps_, 0)
131
132        self.failUnlessArgIsSEL(NSApplication.beginSheet_modalForWindow_modalDelegate_didEndSelector_contextInfo_, 3, 'v@:@' + objc._C_NSInteger + '^v')
133        self.failUnlessArgHasType(NSApplication.beginSheet_modalForWindow_modalDelegate_didEndSelector_contextInfo_, 4, '^v')
134
135
136        self.failUnlessArgIsBOOL(NSApplication.postEvent_atStart_, 1)
137        self.failUnlessArgIsBOOL(NSApplication.makeWindowsPerform_inOrder_, 1)
138        self.failUnlessArgIsBOOL(NSApplication.setWindowsNeedUpdate_, 0)
139        self.failUnlessResultIsBOOL(NSApplication.sendAction_to_from_)
140        self.failUnlessResultIsBOOL(NSApplication.tryToPerform_with_)
141        self.failUnlessArgIsBOOL(NSApplication.replyToApplicationShouldTerminate_, 0)
142        self.failUnlessArgIsBOOL(NSApplication.addWindowsItem_title_filename_, 2)
143        self.failUnlessArgIsBOOL(NSApplication.changeWindowsItem_title_filename_, 2)
144
145    def testDelegateMethods(self):
146        self.failUnlessResultIsBOOL(TestNSApplicationHelper.application_openFile_)
147        self.failUnlessResultIsBOOL(TestNSApplicationHelper.application_openTempFile_)
148        self.failUnlessResultIsBOOL(TestNSApplicationHelper.applicationShouldOpenUntitledFile_)
149        self.failUnlessResultIsBOOL(TestNSApplicationHelper.application_openFileWithoutUI_)
150        self.failUnlessResultIsBOOL(TestNSApplicationHelper.application_printFile_)
151        self.failUnlessArgIsBOOL(TestNSApplicationHelper.application_printFiles_withSettings_showPrintPanels_, 3)
152        self.failUnlessResultIsBOOL(TestNSApplicationHelper.applicationShouldTerminateAfterLastWindowClosed_)
153        self.failUnlessResultIsBOOL(TestNSApplicationHelper.applicationShouldHandleReopen_hasVisibleWindows_)
154        self.failUnlessArgIsBOOL(TestNSApplicationHelper.applicationShouldHandleReopen_hasVisibleWindows_, 1)
155
156        self.failUnlessResultIsBOOL(TestNSApplicationHelper.writeSelectionToPasteboard_types_)
157        self.failUnlessResultIsBOOL(TestNSApplicationHelper.readSelectionFromPasteboard_)
158
159
160if __name__ == "__main__":
161    main()
162