1from PyObjCTools.TestSupport import *
2import objc
3import os
4
5from AppKit import *
6
7
8class TestNSWorkspace(TestCase):
9    def testInfoForFile(self):
10        ws = NSWorkspace.sharedWorkspace()
11
12        # A method with 2 output parameters, this means the result
13        # is a tuple with 3 elements (return value, param1, param2)
14        res = ws.getInfoForFile_application_type_(u'/', None, None)
15        self.assert_(isinstance(res, tuple))
16        self.assert_(len(res) == 3)
17        self.assert_(res[0] == 1)
18        self.assert_(res[1] == u'/System/Library/CoreServices/Finder.app')
19        self.assert_(res[2] == u'')
20
21    def testConstants(self):
22        self.assertEquals(NSWorkspaceLaunchAndPrint, 2)
23        self.assertEquals(NSWorkspaceLaunchInhibitingBackgroundOnly, 0x00000080)
24        self.assertEquals(NSWorkspaceLaunchWithoutAddingToRecents, 0x00000100)
25        self.assertEquals(NSWorkspaceLaunchWithoutActivation, 0x00000200)
26        self.assertEquals(NSWorkspaceLaunchAsync, 0x00010000)
27        self.assertEquals(NSWorkspaceLaunchAllowingClassicStartup, 0x00020000)
28        self.assertEquals(NSWorkspaceLaunchPreferringClassic, 0x00040000)
29        self.assertEquals(NSWorkspaceLaunchNewInstance, 0x00080000)
30        self.assertEquals(NSWorkspaceLaunchAndHide, 0x00100000)
31        self.assertEquals(NSWorkspaceLaunchAndHideOthers, 0x00200000)
32        self.assertEquals(NSWorkspaceLaunchDefault, (
33                NSWorkspaceLaunchAsync | NSWorkspaceLaunchAllowingClassicStartup))
34
35        self.assertEquals(NSExcludeQuickDrawElementsIconCreationOption, 1 << 1)
36        self.assertEquals(NSExclude10_4ElementsIconCreationOption, 1 << 2)
37
38        self.failUnless(isinstance(NSWorkspaceDidLaunchApplicationNotification, unicode))
39        self.failUnless(isinstance(NSWorkspaceDidMountNotification, unicode))
40        self.failUnless(isinstance(NSWorkspaceDidPerformFileOperationNotification, unicode))
41        self.failUnless(isinstance(NSWorkspaceDidTerminateApplicationNotification, unicode))
42        self.failUnless(isinstance(NSWorkspaceDidUnmountNotification, unicode))
43        self.failUnless(isinstance(NSWorkspaceWillLaunchApplicationNotification, unicode))
44        self.failUnless(isinstance(NSWorkspaceWillPowerOffNotification, unicode))
45        self.failUnless(isinstance(NSWorkspaceWillUnmountNotification, unicode))
46        self.failUnless(isinstance(NSWorkspaceWillSleepNotification, unicode))
47        self.failUnless(isinstance(NSWorkspaceDidWakeNotification, unicode))
48        self.failUnless(isinstance(NSWorkspaceSessionDidBecomeActiveNotification, unicode))
49        self.failUnless(isinstance(NSWorkspaceSessionDidResignActiveNotification, unicode))
50        self.failUnless(isinstance(NSPlainFileType, unicode))
51        self.failUnless(isinstance(NSDirectoryFileType, unicode))
52        self.failUnless(isinstance(NSApplicationFileType, unicode))
53        self.failUnless(isinstance(NSFilesystemFileType, unicode))
54        self.failUnless(isinstance(NSShellCommandFileType, unicode))
55        self.failUnless(isinstance(NSWorkspaceMoveOperation, unicode))
56        self.failUnless(isinstance(NSWorkspaceCopyOperation, unicode))
57        self.failUnless(isinstance(NSWorkspaceLinkOperation, unicode))
58        self.failUnless(isinstance(NSWorkspaceCompressOperation, unicode))
59        self.failUnless(isinstance(NSWorkspaceDecompressOperation, unicode))
60        self.failUnless(isinstance(NSWorkspaceEncryptOperation, unicode))
61        self.failUnless(isinstance(NSWorkspaceDecryptOperation, unicode))
62        self.failUnless(isinstance(NSWorkspaceDestroyOperation, unicode))
63        self.failUnless(isinstance(NSWorkspaceRecycleOperation, unicode))
64        self.failUnless(isinstance(NSWorkspaceDuplicateOperation, unicode))
65
66    def testMethods(self):
67        self.failUnlessResultIsBOOL(NSWorkspace.openFile_)
68        self.failUnlessResultIsBOOL(NSWorkspace.openFile_withApplication_)
69        self.failUnlessResultIsBOOL(NSWorkspace.openFile_withApplication_andDeactivate_)
70        self.failUnlessArgIsBOOL(NSWorkspace.openFile_withApplication_andDeactivate_, 2)
71        self.failUnlessResultIsBOOL(NSWorkspace.openTempFile_)
72        self.failUnlessResultIsBOOL(NSWorkspace.openFile_fromImage_at_inView_)
73        self.failUnlessResultIsBOOL(NSWorkspace.openURL_)
74        self.failUnlessResultIsBOOL(NSWorkspace.launchApplication_)
75        self.failUnlessResultIsBOOL(NSWorkspace.launchApplication_showIcon_autolaunch_)
76        self.failUnlessArgIsBOOL(NSWorkspace.launchApplication_showIcon_autolaunch_, 1)
77        self.failUnlessArgIsBOOL(NSWorkspace.launchApplication_showIcon_autolaunch_, 2)
78        self.failUnlessResultIsBOOL(NSWorkspace.selectFile_inFileViewerRootedAtPath_)
79        self.failUnlessResultIsBOOL(NSWorkspace.fileSystemChanged)
80        self.failUnlessResultIsBOOL(NSWorkspace.userDefaultsChanged)
81        self.failUnlessResultIsBOOL(NSWorkspace.getInfoForFile_application_type_)
82        self.failUnlessArgIsOut(NSWorkspace.getInfoForFile_application_type_, 1)
83        self.failUnlessArgIsOut(NSWorkspace.getInfoForFile_application_type_, 2)
84        self.failUnlessResultIsBOOL(NSWorkspace.isFilePackageAtPath_)
85        self.failUnlessResultIsBOOL(NSWorkspace.setIcon_forFile_options_)
86        self.failUnlessResultIsBOOL(NSWorkspace.getFileSystemInfoForPath_isRemovable_isWritable_isUnmountable_description_type_)
87        self.failUnlessArgHasType(NSWorkspace.getFileSystemInfoForPath_isRemovable_isWritable_isUnmountable_description_type_, 1, 'o^' + objc._C_NSBOOL)
88        self.failUnlessArgHasType(NSWorkspace.getFileSystemInfoForPath_isRemovable_isWritable_isUnmountable_description_type_, 2, 'o^' + objc._C_NSBOOL)
89        self.failUnlessArgHasType(NSWorkspace.getFileSystemInfoForPath_isRemovable_isWritable_isUnmountable_description_type_, 3, 'o^' + objc._C_NSBOOL)
90        self.failUnlessArgIsOut(NSWorkspace.getFileSystemInfoForPath_isRemovable_isWritable_isUnmountable_description_type_, 4)
91        self.failUnlessArgIsOut(NSWorkspace.getFileSystemInfoForPath_isRemovable_isWritable_isUnmountable_description_type_, 5)
92        self.failUnlessResultIsBOOL(NSWorkspace.performFileOperation_source_destination_files_tag_)
93        self.failUnlessArgIsOut(NSWorkspace.performFileOperation_source_destination_files_tag_, 4)
94        self.failUnlessResultIsBOOL(NSWorkspace.unmountAndEjectDeviceAtPath_)
95        self.failUnlessResultIsBOOL(NSWorkspace.launchAppWithBundleIdentifier_options_additionalEventParamDescriptor_launchIdentifier_)
96        self.failUnlessArgIsOut(NSWorkspace.launchAppWithBundleIdentifier_options_additionalEventParamDescriptor_launchIdentifier_, 3)
97        self.failUnlessResultIsBOOL(NSWorkspace.openURLs_withAppBundleIdentifier_options_additionalEventParamDescriptor_launchIdentifiers_)
98        self.failUnlessArgIsOut(NSWorkspace.openURLs_withAppBundleIdentifier_options_additionalEventParamDescriptor_launchIdentifiers_, 4)
99        self.failUnlessArgIsOut(NSWorkspace.typeOfFile_error_, 1)
100        self.failUnlessResultIsBOOL(NSWorkspace.filenameExtension_isValidForType_)
101        self.failUnlessResultIsBOOL(NSWorkspace.type_conformsToType_)
102
103
104if __name__ == '__main__':
105    main( )
106