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