1
2from PyObjCTools.TestSupport import *
3from Quartz.CoreGraphics import *
4from Foundation import NSData
5
6import sys
7
8if sys.version_info[0] != 2:
9    def buffer(value):
10        if isinstance(value, bytes):
11            return value
12        return value.encode('latin1')
13
14class TestCGDataProvider (TestCase):
15    def testTypes(self):
16        self.assertIsCFType(CGDataProviderRef)
17
18    def testFunctions(self):
19        provider = CGDataProviderCreateWithCFData(buffer("data"))
20        self.assertIsInstance(provider, CGDataProviderRef)
21
22        url = CFURLCreateWithFileSystemPath(None,
23                "/Library/Documentation/Acknowledgements.rtf",
24                kCFURLPOSIXPathStyle, False)
25
26        provider = CGDataProviderCreateWithURL(url)
27        self.assertIsInstance(provider, CGDataProviderRef)
28
29        v = CGDataProviderRetain(provider)
30        self.assertTrue(v is provider)
31        CGDataProviderRelease(provider)
32
33        data = CGDataProviderCopyData(provider)
34        self.assertIsInstance(data, CFDataRef)
35
36        info = [b"hello world", False]
37        def release(info):
38            info[-1] = True
39        provider = CGDataProviderCreateWithData(info, info[0], len(info[0]), release)
40        self.assertIsInstance(provider, CGDataProviderRef)
41        del provider
42
43        self.assertTrue(info[-1])
44
45
46
47    def testMissing(self):
48        self.fail("CGDataProviderCreateSequential") # + callbacks
49        self.fail("CGDataProviderCreateDirect") # + callbacks
50        self.fail("CGDataProviderCreate") # + callbacks
51        self.fail("CGDataProviderCreateDirectAccess") # + callbacks
52
53if __name__ == "__main__":
54    main()
55