1 2from PyObjCTools.TestSupport import * 3from Quartz.CoreGraphics import * 4import array 5 6try: 7 long 8except NameError: 9 long = int 10 11class TestCGBitmapContext (TestCase): 12 def testFunctions(self): 13 bytes_val = array.array('B', (0 for i in range(100*80*4))) 14 self.assertIsInstance(bytes_val, array.array) 15 self.assertEqual(len(bytes_val), 100*80*4) 16 ctx = CGBitmapContextCreate(bytes_val, 100, 80, 8, 400, CGColorSpaceCreateDeviceRGB(), kCGImageAlphaPremultipliedLast) 17 self.assertIsInstance(ctx, CGContextRef) 18 19 buf = CGBitmapContextGetData(ctx) 20 self.assertIsInstance(buf, objc.varlist) 21 self.assertIsInstance(buf[0], bytes) 22 23 self.assertEqual(CGBitmapContextGetWidth(ctx), 100) 24 self.assertEqual(CGBitmapContextGetHeight(ctx), 80) 25 self.assertEqual(CGBitmapContextGetBitsPerComponent(ctx), 8) 26 self.assertEqual(CGBitmapContextGetBitsPerPixel(ctx), 32) 27 self.assertEqual(CGBitmapContextGetBytesPerRow(ctx), 400) 28 29 v = CGBitmapContextGetColorSpace(ctx) 30 self.assertIsInstance(v, CGColorSpaceRef) 31 32 v = CGBitmapContextGetAlphaInfo(ctx) 33 self.assertIsInstance(v, (int, long)) 34 35 v = CGBitmapContextGetBitmapInfo(ctx) 36 self.assertIsInstance(v, (int, long)) 37 38 img = CGBitmapContextCreateImage(ctx) 39 self.assertIsInstance(img, CGImageRef) 40 41 42 @min_os_level('10.6') 43 def testFunctions10_6(self): 44 bytes_val = array.array('B', (0 for i in range(100*80*4))) 45 ctx = CGBitmapContextCreateWithData(bytes_val, 100, 80, 8, 400, CGColorSpaceCreateDeviceRGB(), kCGImageAlphaPremultipliedLast, None, None) 46 self.assertIsInstance(ctx, CGContextRef) 47 del ctx 48 49 list = [] 50 release_info = object() 51 def callback(info, data): 52 list.append((info, data)) 53 54 ctx = CGBitmapContextCreateWithData(bytes_val, 100, 80, 8, 400, CGColorSpaceCreateDeviceRGB(), kCGImageAlphaPremultipliedLast, callback, release_info) 55 self.assertIsInstance(ctx, CGContextRef) 56 del ctx 57 58 self.assertEquals(len(list), 1) 59 self.assertIs(list[0][0], release_info) 60 self.assertIs(list[0][1], bytes_val) 61 62 63if __name__ == "__main__": 64 main() 65