1
2from PyObjCTools.TestSupport import *
3from Quartz import *
4
5try:
6    unicode
7except NameError:
8    unicode = str
9
10class TestCVImageBuffer (TestCase):
11
12    def testFunctions(self):
13        self.assertResultHasType(CVImageBufferGetEncodedSize, CGSize.__typestr__)
14        self.assertResultHasType(CVImageBufferGetDisplaySize, CGSize.__typestr__)
15        self.assertResultHasType(CVImageBufferGetCleanRect, CGRect.__typestr__)
16
17    @expectedFailure
18    def testsMissing(self):
19        # FIXME
20        CVImageBufferGetColorSpace
21        self.fail("Reimplement function tests using an actual buffer")
22
23    def testConstants(self):
24        self.assertIsInstance(kCVImageBufferCGColorSpaceKey, unicode)
25        self.assertIsInstance(kCVImageBufferCleanApertureKey, unicode)
26        self.assertIsInstance(kCVImageBufferCleanApertureWidthKey, unicode)
27        self.assertIsInstance(kCVImageBufferCleanApertureHeightKey, unicode)
28        self.assertIsInstance(kCVImageBufferCleanApertureHorizontalOffsetKey, unicode)
29        self.assertIsInstance(kCVImageBufferCleanApertureVerticalOffsetKey, unicode)
30        self.assertIsInstance(kCVImageBufferPreferredCleanApertureKey, unicode)
31        self.assertIsInstance(kCVImageBufferFieldCountKey, unicode)
32        self.assertIsInstance(kCVImageBufferFieldDetailKey, unicode)
33        self.assertIsInstance(kCVImageBufferFieldDetailTemporalTopFirst, unicode)
34        self.assertIsInstance(kCVImageBufferFieldDetailTemporalBottomFirst, unicode)
35        self.assertIsInstance(kCVImageBufferFieldDetailSpatialFirstLineEarly, unicode)
36        self.assertIsInstance(kCVImageBufferFieldDetailSpatialFirstLineLate, unicode)
37        self.assertIsInstance(kCVImageBufferPixelAspectRatioKey, unicode)
38        self.assertIsInstance(kCVImageBufferPixelAspectRatioHorizontalSpacingKey, unicode)
39        self.assertIsInstance(kCVImageBufferPixelAspectRatioVerticalSpacingKey, unicode)
40        self.assertIsInstance(kCVImageBufferDisplayDimensionsKey, unicode)
41        self.assertIsInstance(kCVImageBufferDisplayWidthKey, unicode)
42        self.assertIsInstance(kCVImageBufferDisplayHeightKey, unicode)
43        self.assertIsInstance(kCVImageBufferGammaLevelKey, unicode)
44        self.assertIsInstance(kCVImageBufferYCbCrMatrixKey, unicode)
45        self.assertIsInstance(kCVImageBufferYCbCrMatrix_ITU_R_709_2, unicode)
46        self.assertIsInstance(kCVImageBufferYCbCrMatrix_ITU_R_601_4, unicode)
47        self.assertIsInstance(kCVImageBufferYCbCrMatrix_SMPTE_240M_1995, unicode)
48
49    @min_os_level('10.5')
50    def testConstants10_5(self):
51        self.assertIsInstance(kCVImageBufferColorPrimaries_ITU_R_709_2, unicode)
52        self.assertIsInstance(kCVImageBufferColorPrimaries_EBU_3213, unicode)
53        self.assertIsInstance(kCVImageBufferColorPrimaries_SMPTE_C, unicode)
54        self.assertIsInstance(kCVImageBufferTransferFunctionKey, unicode)
55        self.assertIsInstance(kCVImageBufferTransferFunction_ITU_R_709_2, unicode)
56        self.assertIsInstance(kCVImageBufferTransferFunction_EBU_3213, unicode)
57        self.assertIsInstance(kCVImageBufferTransferFunction_SMPTE_C, unicode)
58        self.assertIsInstance(kCVImageBufferChromaLocationTopFieldKey, unicode)
59        self.assertIsInstance(kCVImageBufferChromaLocationBottomFieldKey, unicode)
60        self.assertIsInstance(kCVImageBufferChromaLocation_Left, unicode)
61        self.assertIsInstance(kCVImageBufferChromaLocation_Center, unicode)
62        self.assertIsInstance(kCVImageBufferChromaLocation_TopLeft, unicode)
63        self.assertIsInstance(kCVImageBufferChromaLocation_Top, unicode)
64        self.assertIsInstance(kCVImageBufferChromaLocation_BottomLeft, unicode)
65        self.assertIsInstance(kCVImageBufferChromaLocation_Bottom, unicode)
66        self.assertIsInstance(kCVImageBufferChromaLocation_DV420, unicode)
67        self.assertIsInstance(kCVImageBufferChromaSubsamplingKey, unicode)
68        self.assertIsInstance(kCVImageBufferChromaSubsampling_420, unicode)
69        self.assertIsInstance(kCVImageBufferChromaSubsampling_422, unicode)
70        self.assertIsInstance(kCVImageBufferChromaSubsampling_411, unicode)
71        self.assertIsInstance(kCVImageBufferColorPrimariesKey, unicode)
72
73    @min_os_level('10.6')
74    def testConstants10_6(self):
75        self.assertIsInstance(kCVImageBufferICCProfileKey, unicode)
76        self.assertIsInstance(kCVImageBufferTransferFunction_SMPTE_240M_1995, unicode)
77        self.assertIsInstance(kCVImageBufferTransferFunction_UseGamma, unicode)
78        self.assertIsInstance(kCVImageBufferTransferFunction_EBU_3213, unicode)
79        self.assertIsInstance(kCVImageBufferTransferFunction_SMPTE_C, unicode)
80
81    @min_os_level('10.8')
82    def testConstants10_8(self):
83        self.assertIsInstance(kCVImageBufferColorPrimaries_P22, unicode)
84
85    @min_os_level('10.8')
86    def testFunctions10_8(self):
87        self.assertResultIsCFRetained(CVImageBufferCreateColorSpaceFromAttachments)
88
89if __name__ == "__main__":
90    main()
91