1
2from PyObjCTools.TestSupport import *
3from LaunchServices import *
4
5class TestLSSharedFileList (TestCase):
6    def testTypes(self):
7        self.assertIsCFType(LSSharedFileListRef)
8        self.assertIsCFType(LSSharedFileListItemRef)
9
10    @min_os_level('10.5')
11    def testConstants10_5(self):
12        self.assertIsInstance(kLSSharedFileListFavoriteVolumes, unicode)
13        self.assertIsInstance(kLSSharedFileListFavoriteItems, unicode)
14        self.assertIsInstance(kLSSharedFileListRecentApplicationItems, unicode)
15        self.assertIsInstance(kLSSharedFileListRecentDocumentItems, unicode)
16        self.assertIsInstance(kLSSharedFileListRecentServerItems, unicode)
17        self.assertIsInstance(kLSSharedFileListSessionLoginItems, unicode)
18        self.assertIsInstance(kLSSharedFileListGlobalLoginItems, unicode)
19        self.assertIsInstance(kLSSharedFileListRecentItemsMaxAmount, unicode)
20        self.assertIsInstance(kLSSharedFileListVolumesComputerVisible, unicode)
21        self.assertIsInstance(kLSSharedFileListVolumesIDiskVisible, unicode)
22        self.assertIsInstance(kLSSharedFileListVolumesNetworkVisible, unicode)
23        self.assertIsInstance(kLSSharedFileListItemHidden, unicode)
24
25    @min_os_level('10.5')
26    def testMagicConstants10_5(self):
27        self.assertIsInstance(kLSSharedFileListItemBeforeFirst, LSSharedFileListItemRef)
28        self.assertIsInstance(kLSSharedFileListItemLast, LSSharedFileListItemRef)
29
30    def testConstants(self):
31        self.assertEqual(kLSSharedFileListNoUserInteraction, 1)
32        self.assertEqual(kLSSharedFileListDoNotMountVolumes, 2)
33
34    def testFunctions(self):
35        self.assertIsInstance(LSSharedFileListGetTypeID(), (int, long))
36        self.assertIsInstance(LSSharedFileListItemGetTypeID(), (int, long))
37
38        self.assertResultIsCFRetained(LSSharedFileListCreate)
39        lst = LSSharedFileListCreate(None, kLSSharedFileListFavoriteItems, None)
40        self.assertIsInstance(lst, LSSharedFileListRef)
41
42        rl = CFRunLoopGetCurrent()
43
44
45        self.assertArgIsFunction(LSSharedFileListAddObserver, 3, b'v^{OpaqueLSSharedFileListRef=}^v', True)
46        self.assertArgHasType(LSSharedFileListAddObserver, 4, b'^v')
47
48        @objc.callbackFor(LSSharedFileListAddObserver)
49        def callback(lst, ctxt):
50            pass
51
52        LSSharedFileListAddObserver(lst, rl, kCFRunLoopDefaultMode, callback, None)
53        LSSharedFileListRemoveObserver(lst, rl, kCFRunLoopDefaultMode, callback, None)
54
55        v = LSSharedFileListGetSeedValue(lst)
56        self.assertIsInstance(v, (int, long))
57
58        self.assertResultIsCFRetained(LSSharedFileListCopyProperty)
59        self.assertResultHasType(LSSharedFileListCopyProperty, b'@')
60        v = LSSharedFileListCopyProperty(lst, u"pyobjc.name")
61
62        v = LSSharedFileListSetProperty(lst, u"pyobjc.name", u"value")
63        self.assertIsInstance(v, (int, long))
64        v = LSSharedFileListCopyProperty(lst, u"pyobjc.name")
65        self.assertEqual(v, u"value")
66
67        self.assertArgIsOut(LSSharedFileListCopySnapshot, 1)
68        v, seed = LSSharedFileListCopySnapshot(lst, None)
69        self.assertIsInstance(v, CFArrayRef)
70        self.assertIsInstance(seed, (int,long))
71
72        self.assertResultIsCFRetained(LSSharedFileListInsertItemURL)
73        item = LSSharedFileListInsertItemURL(lst, kLSSharedFileListItemLast, u"PyObjC.Test", None,
74                CFURLCreateWithString(None, "file:///etc/hosts", None), {}, [])
75        self.assertIsInstance(item, LSSharedFileListItemRef)
76
77        v = LSSharedFileListItemGetID(item)
78        self.assertIsInstance(v, (int, long))
79
80        v = LSSharedFileListItemCopyIconRef(item)
81        if v is not None:
82            self.assertIsInstance(v, IconRef)
83
84        self.assertResultIsCFRetained(LSSharedFileListItemCopyDisplayName)
85        v = LSSharedFileListItemCopyDisplayName(item)
86        self.assertIsInstance(v, unicode)
87
88        self.assertArgIsOut(LSSharedFileListItemResolve, 2)
89        self.assertArgIsOut(LSSharedFileListItemResolve, 3)
90        self.assertArgIsCFRetained(LSSharedFileListItemResolve, 2)
91        v, url, ref = LSSharedFileListItemResolve(item, 0, None, objc.NULL)
92        self.assertIsInstance(v, (int, long))
93        if url is not None:
94            self.assertIsInstance(url, CFURLRef)
95
96        v = LSSharedFileListItemSetProperty(item, u"pyobjc.name", u"pyobjc.test")
97        self.assertIsInstance(v, (int, long))
98
99        self.assertResultIsCFRetained(LSSharedFileListItemCopyProperty)
100        v = LSSharedFileListItemCopyProperty(item, u"pyobjc.name")
101        if v is not None:
102            self.assertEqual(v, "pyobjc.test")
103
104        v = LSSharedFileListItemMove(lst, item, kLSSharedFileListItemBeforeFirst)
105        self.assertIsInstance(v, (int, long))
106
107        v = LSSharedFileListItemRemove(lst, item)
108        self.assertIsInstance(v, (int, long))
109
110        v = LSSharedFileListRemoveAllItems(lst)
111        self.assertIsInstance(v, (int, long))
112
113
114
115
116    @expectedFailure
117    def testMissing(self):
118        # Needs more infrastructure
119        self.fail('LSSharedFileListSetAuthorization')
120
121        # FSRef suckage
122        self.fail('LSSharedFileListItemRef')
123
124
125
126
127
128
129
130
131
132
133if __name__ == "__main__":
134    main()
135