1'''
2Some simple tests to check that the framework is properly wrapped.
3'''
4import objc
5from PyObjCTools.TestSupport import *
6import LaunchServices
7
8class TestLaunchServices (TestCase):
9    def testValues(self):
10        # Use this to test for a number of enum and #define values
11        self.assert_( hasattr(LaunchServices, 'kLSRequestAllInfo') )
12        self.assert_( isinstance(LaunchServices.kLSRequestAllInfo, (int, long)) )
13        # Note: the header file seems to indicate otherwise but the value
14        # really is a signed integer!
15        #self.assertEquals(LaunchServices.kLSRequestAllInfo, 0xffffffff)
16        self.assertEquals(LaunchServices.kLSRequestAllInfo, -1)
17
18        self.assert_( hasattr(LaunchServices, 'kLSLaunchInProgressErr') )
19        self.assert_( isinstance(LaunchServices.kLSLaunchInProgressErr, (int, long)) )
20        self.assertEquals(LaunchServices.kLSLaunchInProgressErr, -10818)
21
22
23        self.assert_( hasattr(LaunchServices, 'kLSInvalidExtensionIndex') )
24        self.assert_( isinstance(LaunchServices.kLSInvalidExtensionIndex, (int, long)) )
25
26
27    def testVariables(self):
28        self.assert_( hasattr(LaunchServices, 'kUTTypeItem') )
29        self.assert_( isinstance(LaunchServices.kUTTypeItem, unicode) )
30
31        self.assert_( hasattr(LaunchServices, 'kUTTypeApplication') )
32        self.assert_( isinstance(LaunchServices.kUTTypeApplication, unicode) )
33
34        self.assert_( hasattr(LaunchServices, 'kUTExportedTypeDeclarationsKey') )
35        self.assert_( isinstance(LaunchServices.kUTExportedTypeDeclarationsKey, unicode) )
36
37    def testFunctions(self):
38        self.assert_( hasattr(LaunchServices, 'UTTypeEqual') )
39        self.assert_( isinstance(LaunchServices.UTTypeEqual, objc.function) )
40
41        self.assert_( hasattr(LaunchServices, 'UTCreateStringForOSType') )
42        self.assert_( isinstance(LaunchServices.UTCreateStringForOSType, objc.function) )
43
44        self.assert_( hasattr(LaunchServices, 'LSSetDefaultHandlerForURLScheme') )
45        self.assert_( isinstance(LaunchServices.LSSetDefaultHandlerForURLScheme, objc.function) )
46
47        self.assert_( hasattr(LaunchServices, '_LSCopyAllApplicationURLs') )
48        self.assert_( isinstance(LaunchServices._LSCopyAllApplicationURLs, objc.function) )
49
50        arr = LaunchServices._LSCopyAllApplicationURLs(None)
51        self.assert_( isinstance(arr, objc.lookUpClass('NSArray') ) )
52        for a in arr:
53            if str(a) == 'file://localhost/Applications/Calculator.app/':
54                break
55        else:
56            self.fail("No Calculator.app?")
57
58        fn = LaunchServices.LSGetExtensionInfo
59        self.assertEquals( fn(10, u'hello.text', None), (0, 6) )
60        self.assertEquals( fn(10, 'hello.text', None), (0, 6) )
61
62if __name__ == "__main__":
63    main()
64
65