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