1import os
2from PyObjCTools.TestSupport import *
3from CoreFoundation import *
4import sys
5
6
7class TestURLAccess (TestCase):
8    def testConstants(self):
9        self.assertEqual(kCFURLUnknownError , -10  )
10        self.assertEqual(kCFURLUnknownSchemeError , -11    )
11        self.assertEqual(kCFURLResourceNotFoundError , -12 )
12        self.assertEqual(kCFURLResourceAccessViolationError , -13  )
13        self.assertEqual(kCFURLRemoteHostUnavailableError , -14    )
14        self.assertEqual(kCFURLImproperArgumentsError , -15    )
15        self.assertEqual(kCFURLUnknownPropertyKeyError , -16   )
16        self.assertEqual(kCFURLPropertyKeyUnavailableError , -17   )
17        self.assertEqual(kCFURLTimeoutError , -18 )
18        self.assertIsInstance( kCFURLFileExists, unicode)
19        self.assertIsInstance( kCFURLFileDirectoryContents, unicode)
20        self.assertIsInstance( kCFURLFileLength, unicode)
21        self.assertIsInstance( kCFURLFileLastModificationTime, unicode)
22        self.assertIsInstance( kCFURLFilePOSIXMode, unicode)
23        self.assertIsInstance( kCFURLFileOwnerID, unicode)
24        self.assertIsInstance( kCFURLHTTPStatusCode, unicode)
25        self.assertIsInstance( kCFURLHTTPStatusLine, unicode)
26    def testFunctions(self):
27        url = CFURLCreateWithFileSystemPath(None, __file__, kCFURLPOSIXPathStyle, False)
28
29        self.assertArgIsOut(CFURLCreatePropertyFromResource, 3)
30        val, errorCode = CFURLCreatePropertyFromResource(None, url, kCFURLFileExists, None)
31        self.assertIsInstance(errorCode, (int, long))
32        self.assertIs(val, True)
33        self.assertResultIsBOOL(CFURLCreateDataAndPropertiesFromResource)
34        self.assertArgIsOut(CFURLCreateDataAndPropertiesFromResource, 2)
35        self.assertArgIsOut(CFURLCreateDataAndPropertiesFromResource, 3)
36        self.assertArgIsOut(CFURLCreateDataAndPropertiesFromResource, 5)
37        ok, data, properties, errorCode = CFURLCreateDataAndPropertiesFromResource(
38                None, url, None, None, None, None)
39        self.assertTrue(ok)
40        self.assertIsInstance(data, CFDataRef)
41        self.assertIsInstance(properties, CFDictionaryRef)
42        self.assertIsInstance(errorCode, (int, long))
43        self.assertTrue(properties[kCFURLFileExists])
44
45        self.assertResultIsBOOL(CFURLWriteDataAndPropertiesToResource)
46        self.assertArgIsOut(CFURLWriteDataAndPropertiesToResource, 3)
47        url = CFURLCreateWithFileSystemPath(None, __file__ + "TEST", kCFURLPOSIXPathStyle, False)
48
49        if sys.version_info[0] == 3:
50            def buffer(value):
51                return value
52        else:
53            from __builtin__ import buffer
54
55        ok, errorCode = CFURLWriteDataAndPropertiesToResource(
56                url, buffer(b"foobar"), None, None)
57        self.assertTrue(ok)
58        self.assertIsInstance(errorCode, (int, long))
59        self.assertTrue(os.path.exists(__file__ + "TEST"))
60        data = open(__file__ + "TEST", 'r').read()
61        self.assertEqual(data , 'foobar')
62        self.assertResultIsBOOL(CFURLDestroyResource)
63        self.assertArgIsOut(CFURLDestroyResource, 1)
64        ok, errorCode = CFURLDestroyResource(url, None)
65        self.assertTrue(ok)
66        self.assertIsInstance(errorCode, (int, long))
67        self.assertFalse(os.path.exists(__file__ + "TEST"))
68
69
70
71
72if __name__ == "__main__":
73    main()
74