1from PyObjCTools.TestSupport import *
2
3from objc import *
4from Foundation import *
5
6try:
7    unicode
8except NameError:
9    unicode = str
10
11class TestNSPathUtilities(TestCase):
12    def testSearchPaths(self):
13        self.assert_(
14                NSSearchPathForDirectoriesInDomains( NSAllLibrariesDirectory, NSAllDomainsMask, NO ),
15                      "NSSearchPathForDirectoriesInDomains() failed to return anything." )
16
17        self.assertArgIsBOOL(NSSearchPathForDirectoriesInDomains, 2)
18
19    def testTrue(self):
20        for boolVal in (1, 1==1, YES, -1):
21            self.assert_(
22                NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,NSUserDomainMask, boolVal)[0][0] == '/', boolVal)
23
24    def testFalse(self):
25        for boolVal in (0, 1!=1, NO):
26            self.assert_(
27                NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,NSUserDomainMask, boolVal)[0][0] != '/', boolVal)
28
29    def testFunctions(self):
30        s = NSUserName()
31        self.assertIsInstance(s, unicode)
32        s = NSFullUserName()
33        self.assertIsInstance(s, unicode)
34        s = NSHomeDirectory()
35        self.assertIsInstance(s, unicode)
36        s = NSHomeDirectoryForUser('root')
37        self.assertIsInstance(s, unicode)
38        s = NSTemporaryDirectory()
39        self.assertIsInstance(s, unicode)
40        s = NSOpenStepRootDirectory()
41        self.assertIsInstance(s, unicode)
42
43    def testConstants(self):
44        self.assertEqual(NSApplicationDirectory, 1)
45        self.assertEqual(NSDemoApplicationDirectory, 2)
46        self.assertEqual(NSDeveloperApplicationDirectory, 3)
47        self.assertEqual(NSAdminApplicationDirectory, 4)
48        self.assertEqual(NSLibraryDirectory, 5)
49        self.assertEqual(NSDeveloperDirectory, 6)
50        self.assertEqual(NSUserDirectory, 7)
51        self.assertEqual(NSDocumentationDirectory, 8)
52        self.assertEqual(NSDocumentDirectory, 9)
53        self.assertEqual(NSCoreServiceDirectory, 10)
54        self.assertEqual(NSDesktopDirectory, 12)
55        self.assertEqual(NSCachesDirectory, 13)
56        self.assertEqual(NSApplicationSupportDirectory, 14)
57        self.assertEqual(NSDownloadsDirectory, 15)
58        self.assertEqual(NSAllApplicationsDirectory, 100)
59        self.assertEqual(NSAllLibrariesDirectory, 101)
60
61        self.assertEqual(NSUserDomainMask, 1)
62        self.assertEqual(NSLocalDomainMask, 2)
63        self.assertEqual(NSNetworkDomainMask, 4)
64        self.assertEqual(NSSystemDomainMask, 8)
65        self.assertEqual(NSAllDomainsMask, 0x0ffff)
66
67    @min_os_level('10.6')
68    def testConstants10_6(self):
69        self.assertEqual(NSAutosavedInformationDirectory, 11)
70
71        self.assertEqual(NSInputMethodsDirectory, 16)
72        self.assertEqual(NSMoviesDirectory, 17)
73        self.assertEqual(NSMusicDirectory, 18)
74        self.assertEqual(NSPicturesDirectory, 19)
75        self.assertEqual(NSPrinterDescriptionDirectory, 20)
76        self.assertEqual(NSSharedPublicDirectory, 21)
77        self.assertEqual(NSPreferencePanesDirectory, 22)
78        self.assertEqual(NSItemReplacementDirectory, 99)
79
80    @min_os_level('10.8')
81    def testConstants10_8(self):
82        self.assertEqual(NSApplicationScriptsDirectory, 23)
83        self.assertEqual(NSTrashDirectory, 102)
84
85    def testMethods(self):
86        self.assertResultIsBOOL(NSString.isAbsolutePath)
87        self.assertArgIsOut(NSString.completePathIntoString_caseSensitive_matchesIntoArray_filterTypes_, 0)
88        self.assertArgIsBOOL(NSString.completePathIntoString_caseSensitive_matchesIntoArray_filterTypes_, 1)
89        self.assertArgIsOut(NSString.completePathIntoString_caseSensitive_matchesIntoArray_filterTypes_, 2)
90        self.assertResultIsBOOL(NSString.getFileSystemRepresentation_maxLength_)
91        self.assertArgHasType(NSString.getFileSystemRepresentation_maxLength_, 0, b'o^' + objc._C_CHAR_AS_TEXT)
92        self.assertArgSizeInArg(NSString.getFileSystemRepresentation_maxLength_, 0, 1)
93
94if __name__ == '__main__':
95    main( )
96