1 2from PyObjCTools.TestSupport import * 3from Quartz import * 4 5try: 6 unicode 7except NameError: 8 unicode = str 9 10class TestCVBuffer (TestCase): 11 def testConstants(self): 12 self.assertIsInstance(kCVBufferPropagatedAttachmentsKey, unicode) 13 self.assertIsInstance(kCVBufferNonPropagatedAttachmentsKey, unicode) 14 self.assertIsInstance(kCVBufferMovieTimeKey, unicode) 15 self.assertIsInstance(kCVBufferTimeValueKey, unicode) 16 self.assertIsInstance(kCVBufferTimeScaleKey, unicode) 17 18 self.assertEqual(kCVAttachmentMode_ShouldNotPropagate, 0) 19 self.assertEqual(kCVAttachmentMode_ShouldPropagate, 1) 20 21 def testFunctions(self): 22 rv, buf = CVOpenGLBufferCreate(None, 100, 100, {"a":"b"}, None) 23 self.assertEqual(rv, 0) 24 self.assertIsInstance(buf, CVOpenGLBufferRef) 25 26 rv, buf2 = CVOpenGLBufferCreate(None, 100, 100, {"a":"b"}, None) 27 self.assertEqual(rv, 0) 28 self.assertIsInstance(buf2, CVOpenGLBufferRef) 29 30 v = CVBufferRetain(buf) 31 self.assertTrue(v is buf) 32 CVBufferRelease(v) 33 34 ctx = object() 35 36 self.assertArgHasType(CVBufferSetAttachment, 2, b'@') 37 self.assertArgHasType(CVBufferSetAttachment, 0, b'^{__CVBuffer=}') 38 CVBufferSetAttachment(buf, b"pyobjc.test".decode('latin1'), ctx, kCVAttachmentMode_ShouldPropagate) 39 40 self.assertArgHasType(CVBufferGetAttachment, 0, b'^{__CVBuffer=}') 41 self.assertResultHasType(CVBufferGetAttachment, b'@') 42 self.assertArgIsOut(CVBufferGetAttachment, 2) 43 v, mode = CVBufferGetAttachment(buf, b"pyobjc.test".decode('latin1'), None) 44 self.assertTrue(v is ctx) 45 self.assertEqual(mode, kCVAttachmentMode_ShouldPropagate) 46 47 self.assertArgHasType(CVBufferGetAttachments, 0, b'^{__CVBuffer=}') 48 v = CVBufferGetAttachments(buf, kCVAttachmentMode_ShouldPropagate) 49 self.assertIsInstance(v, CFDictionaryRef) 50 self.assertTrue("pyobjc.test" in v) 51 52 self.assertArgHasType(CVBufferSetAttachments, 0, b'^{__CVBuffer=}') 53 CVBufferSetAttachments(buf, { 54 "pyobjc.test2": 42, 55 "pyobjc.test3": b"hello".decode('latin1') 56 }, kCVAttachmentMode_ShouldPropagate) 57 58 self.assertArgHasType(CVBufferPropagateAttachments, 0, b'^{__CVBuffer=}') 59 self.assertArgHasType(CVBufferPropagateAttachments, 1, b'^{__CVBuffer=}') 60 CVBufferPropagateAttachments(buf, buf2) 61 62 v = CVBufferGetAttachments(buf2, kCVAttachmentMode_ShouldPropagate) 63 self.assertIsInstance(v, CFDictionaryRef) 64 self.assertTrue("pyobjc.test2" in v) 65 66 self.assertArgHasType(CVBufferRemoveAttachment, 0, b'^{__CVBuffer=}') 67 CVBufferRemoveAttachment(buf, "pyobjc.test") 68 v = CVBufferGetAttachments(buf, kCVAttachmentMode_ShouldPropagate) 69 self.assertIsInstance(v, CFDictionaryRef) 70 self.assertFalse("pyobjc.test" in v) 71 72 self.assertArgHasType(CVBufferRemoveAllAttachments, 0, b'^{__CVBuffer=}') 73 CVBufferRemoveAllAttachments(buf) 74 v = CVBufferGetAttachments(buf, kCVAttachmentMode_ShouldPropagate) 75 self.assertIsInstance(v, CFDictionaryRef) 76 self.assertFalse("pyobjc.test2" in v) 77 78 79if __name__ == "__main__": 80 main() 81