1 2from PyObjCTools.TestSupport import * 3from Quartz import * 4import Quartz 5from Foundation import NSMutableData 6import os 7 8class TestCGDataConsumer (TestCase): 9 def testTypes(self): 10 self.assertIsCFType(CGDataConsumerRef) 11 12 def testFunctions(self): 13 self.assertIsInstance(CGDataConsumerGetTypeID(), (int, long)) 14 15 url = CFURLCreateWithFileSystemPath(None, 16 "/tmp/pyobjc.test.pdf", kCFURLPOSIXPathStyle, False) 17 self.assertIsInstance(url, CFURLRef) 18 try: 19 consumer = CGDataConsumerCreateWithURL(url) 20 self.assertIsInstance(consumer, CGDataConsumerRef) 21 22 data = NSMutableData.data() 23 self.assertIsInstance(data, CFMutableDataRef) 24 25 consumer = CGDataConsumerCreateWithCFData(data) 26 self.assertIsInstance(consumer, CGDataConsumerRef) 27 28 v = CGDataConsumerRetain(consumer) 29 self.assertTrue(v is consumer) 30 CGDataConsumerRelease(consumer) 31 32 finally: 33 del url 34 if os.path.exists("/tmp/pyobjc.test.pdf"): 35 os.unlink("/tmp/pyobjc.test.pdf") 36 37 def putBytes(info, buffer, bufsize): 38 self.assertIsInstance(buffer, str) 39 self.assertEqual(len(buffer), bufsize) 40 info.append(buffer) 41 return bufsize 42 43 def release(info): 44 released.append(info) 45 46 47 output = [] 48 released = [] 49 consumer = CGDataConsumerCreate(output, (putBytes, release)) 50 self.assertIsInstance(consumer, CGDataConsumerRef) 51 52 ctx = CGPDFContextCreate(consumer, CGRectMake(0, 0, 500, 500), None) 53 self.assertIsInstance(ctx, CGContextRef) 54 CGContextBeginPage(ctx, None) 55 CGContextFillRect(ctx, ((10, 10), (50, 30))) 56 CGContextEndPage(ctx) 57 CGContextFlush(ctx) 58 if hasattr(Quartz, 'CGPDFContextClose'): CGPDFContextClose(ctx) 59 60 del ctx 61 del consumer 62 63 self.failIfEqual(len(output), 0) 64 self.failIfEqual(len(released), 0) 65 66 67if __name__ == "__main__": 68 main() 69