1from PyObjCTools.TestSupport import *
2
3import Quartz
4
5try:
6    unicode
7except NameError:
8    unicode = str
9
10try:
11    long
12except NameError:
13    long = int
14
15class TestCGImageSource (TestCase):
16    def testConstants(self):
17        self.assertEqual(Quartz.kCGImageStatusUnexpectedEOF, -5)
18        self.assertEqual(Quartz.kCGImageStatusInvalidData, -4)
19        self.assertEqual(Quartz.kCGImageStatusUnknownType, -3)
20        self.assertEqual(Quartz.kCGImageStatusReadingHeader, -2)
21        self.assertEqual(Quartz.kCGImageStatusIncomplete, -1)
22        self.assertEqual(Quartz.kCGImageStatusComplete, 0)
23
24        self.assertIsInstance(Quartz.kCGImageSourceTypeIdentifierHint, unicode)
25        self.assertIsInstance(Quartz.kCGImageSourceShouldCache, unicode)
26        self.assertIsInstance(Quartz.kCGImageSourceShouldAllowFloat, unicode)
27        self.assertIsInstance(Quartz.kCGImageSourceCreateThumbnailFromImageIfAbsent, unicode)
28        self.assertIsInstance(Quartz.kCGImageSourceThumbnailMaxPixelSize, unicode)
29        self.assertIsInstance(Quartz.kCGImageSourceCreateThumbnailWithTransform, unicode)
30
31    def testTypes(self):
32        self.assertIsCFType(Quartz.CGImageSourceRef)
33
34    def testFunctions(self):
35        self.assertIsInstance(Quartz.CGImageSourceGetTypeID(), (int, long))
36
37        self.assertResultIsCFRetained(Quartz.CGImageSourceCopyTypeIdentifiers)
38        self.assertResultIsCFRetained(Quartz.CGImageSourceCreateWithDataProvider)
39        self.assertResultIsCFRetained(Quartz.CGImageSourceCreateWithData)
40        self.assertResultIsCFRetained(Quartz.CGImageSourceCreateWithURL)
41
42        Quartz.CGImageSourceGetType
43        Quartz.CGImageSourceGetCount
44
45        self.assertResultIsCFRetained(Quartz.CGImageSourceCopyProperties)
46        self.assertResultIsCFRetained(Quartz.CGImageSourceCopyPropertiesAtIndex)
47        self.assertResultIsCFRetained(Quartz.CGImageSourceCreateImageAtIndex)
48        self.assertResultIsCFRetained(Quartz.CGImageSourceCreateThumbnailAtIndex)
49        self.assertResultIsCFRetained(Quartz.CGImageSourceCreateIncremental)
50        self.assertArgHasType(Quartz.CGImageSourceUpdateData, 2, objc._C_BOOL)
51        self.assertArgHasType(Quartz.CGImageSourceUpdateDataProvider, 2, objc._C_BOOL)
52
53        Quartz.CGImageSourceGetStatus
54        Quartz.CGImageSourceGetStatusAtIndex
55
56    @min_os_level('10.8')
57    def testFunctions10_8(self):
58        self.assertResultIsCFRetained(Quartz.CGImageSourceCopyMetadataAtIndex)
59
60if __name__ == "__main__":
61    main()
62