1from PyObjCTools.TestSupport import *
2
3import Quartz
4
5CGDisplayStreamFrameAvailableHandler = b'vIQ@@'
6
7try:
8    long
9except NameError:
10    long = int
11
12try:
13    unicode
14except NameError:
15    unicode = str
16
17class TestCGDisplayStream (TestCase):
18    @min_os_level('10.8')
19    def testTypes10_8(self):
20        self.assertIsCFType(Quartz.CGDisplayStreamRef)
21        self.assertIsCFType(Quartz.CGDisplayStreamUpdateRef)
22
23    @min_os_level('10.8')
24    def testConstants10_8(self):
25        self.assertEqual(Quartz.kCGDisplayStreamUpdateRefreshedRects, 0)
26        self.assertEqual(Quartz.kCGDisplayStreamUpdateMovedRects, 1)
27        self.assertEqual(Quartz.kCGDisplayStreamUpdateDirtyRects, 2)
28        self.assertEqual(Quartz.kCGDisplayStreamUpdateReducedDirtyRects, 3)
29
30        self.assertEqual(Quartz.kCGDisplayStreamFrameStatusFrameComplete, 0)
31        self.assertEqual(Quartz.kCGDisplayStreamFrameStatusFrameIdle, 1)
32        self.assertEqual(Quartz.kCGDisplayStreamFrameStatusFrameBlank, 2)
33        self.assertEqual(Quartz.kCGDisplayStreamFrameStatusStopped, 3)
34
35        self.assertIsInstance(Quartz.kCGDisplayStreamSourceRect, unicode)
36        self.assertIsInstance(Quartz.kCGDisplayStreamPreserveAspectRatio, unicode)
37        self.assertIsInstance(Quartz.kCGDisplayStreamColorSpace, unicode)
38        self.assertIsInstance(Quartz.kCGDisplayStreamMinimumFrameTime, unicode)
39        self.assertIsInstance(Quartz.kCGDisplayStreamShowCursor, unicode)
40        self.assertIsInstance(Quartz.kCGDisplayStreamQueueDepth, unicode)
41        self.assertIsInstance(Quartz.kCGDisplayStreamYCbCrMatrix, unicode)
42        self.assertIsInstance(Quartz.kCGDisplayStreamYCbCrMatrix_ITU_R_709_2, unicode)
43        self.assertIsInstance(Quartz.kCGDisplayStreamYCbCrMatrix_ITU_R_601_4, unicode)
44        self.assertIsInstance(Quartz.kCGDisplayStreamYCbCrMatrix_SMPTE_240M_1995, unicode)
45
46    @min_os_level('10.8')
47    def testFunctions10_8(self):
48        self.assertIsInstance(Quartz.CGDisplayStreamUpdateGetTypeID(), (int, long))
49        self.assertIsInstance(Quartz.CGDisplayStreamGetTypeID(), (int, long))
50
51        self.assertResultSizeInArg(Quartz.CGDisplayStreamUpdateGetRects, 2)
52        self.assertArgIsOut(Quartz.CGDisplayStreamUpdateGetRects, 2)
53
54        Quartz.CGDisplayStreamUpdateCreateMergedUpdate # XXX: test using actual call
55
56        self.assertArgIsOut(Quartz.CGDisplayStreamUpdateGetMovedRectsDelta, 1)
57        self.assertArgIsOut(Quartz.CGDisplayStreamUpdateGetMovedRectsDelta, 2)
58
59        Quartz.CGDisplayStreamUpdateGetDropCount # XXX
60
61        self.assertResultIsCFRetained(Quartz.CGDisplayStreamCreate)
62        self.assertArgIsBlock(Quartz.CGDisplayStreamCreate, 5, CGDisplayStreamFrameAvailableHandler)
63
64        self.assertResultIsCFRetained(Quartz.CGDisplayStreamCreateWithDispatchQueue)
65        self.assertArgIsBlock(Quartz.CGDisplayStreamCreateWithDispatchQueue, 6, CGDisplayStreamFrameAvailableHandler)
66
67        Quartz.CGDisplayStreamStart # XXX
68        Quartz.CGDisplayStreamStop # XXX
69
70        Quartz.CGDisplayStreamGetRunLoopSource # XXX
71
72if __name__ == "__main__":
73    main()
74