from PyObjCTools.TestSupport import * from Quartz import * import Quartz from Foundation import NSMutableData import os class TestCGDataConsumer (TestCase): def testTypes(self): self.assertIsCFType(CGDataConsumerRef) def testFunctions(self): self.assertIsInstance(CGDataConsumerGetTypeID(), (int, long)) url = CFURLCreateWithFileSystemPath(None, "/tmp/pyobjc.test.pdf", kCFURLPOSIXPathStyle, False) self.assertIsInstance(url, CFURLRef) try: consumer = CGDataConsumerCreateWithURL(url) self.assertIsInstance(consumer, CGDataConsumerRef) data = NSMutableData.data() self.assertIsInstance(data, CFMutableDataRef) consumer = CGDataConsumerCreateWithCFData(data) self.assertIsInstance(consumer, CGDataConsumerRef) v = CGDataConsumerRetain(consumer) self.assertTrue(v is consumer) CGDataConsumerRelease(consumer) finally: del url if os.path.exists("/tmp/pyobjc.test.pdf"): os.unlink("/tmp/pyobjc.test.pdf") def putBytes(info, buffer, bufsize): self.assertIsInstance(buffer, str) self.assertEqual(len(buffer), bufsize) info.append(buffer) return bufsize def release(info): released.append(info) output = [] released = [] consumer = CGDataConsumerCreate(output, (putBytes, release)) self.assertIsInstance(consumer, CGDataConsumerRef) ctx = CGPDFContextCreate(consumer, CGRectMake(0, 0, 500, 500), None) self.assertIsInstance(ctx, CGContextRef) CGContextBeginPage(ctx, None) CGContextFillRect(ctx, ((10, 10), (50, 30))) CGContextEndPage(ctx) CGContextFlush(ctx) if hasattr(Quartz, 'CGPDFContextClose'): CGPDFContextClose(ctx) del ctx del consumer self.failIfEqual(len(output), 0) self.failIfEqual(len(released), 0) if __name__ == "__main__": main()