1 2from PyObjCTools.TestSupport import * 3from Quartz.CoreGraphics import * 4import os 5 6class TestCGPattern (TestCase): 7 def testConstants(self): 8 self.failUnlessEqual(kCGPatternTilingNoDistortion, 0) 9 self.failUnlessEqual(kCGPatternTilingConstantSpacingMinimalDistortion, 1) 10 self.failUnlessEqual(kCGPatternTilingConstantSpacing, 2) 11 12 def testFunctions(self): 13 self.failUnlessIsInstance(CGPatternGetTypeID(), (int, long)) 14 15 myInfo = object() 16 cnt = [0] 17 def drawPattern(info, context): 18 self.failUnless(info is myInfo) 19 self.failUnlessIsInstance(context, CGContextRef) 20 cnt[0] += 1 21 22 pattern = CGPatternCreate(myInfo, CGRectMake(0, 0, 10, 10), CGAffineTransformIdentity, 10.0, 10.0, 23 kCGPatternTilingConstantSpacing, True, drawPattern) 24 self.failUnlessIsInstance(pattern, CGPatternRef) 25 26 v = CGPatternRetain(pattern) 27 self.failUnless(v is pattern) 28 CGPatternRelease(pattern) 29 30 url = CFURLCreateWithFileSystemPath(None, 31 "/tmp/pyobjc.test.pdf", kCFURLPOSIXPathStyle, False) 32 self.failUnlessIsInstance(url, CFURLRef) 33 context = CGPDFContextCreateWithURL(url, 34 ((0, 0), (1000, 1000)), None) 35 self.failUnlessIsInstance(context, CGContextRef) 36 CGContextBeginPage(context, objc.NULL) 37 try: 38 color = CGColorCreateWithPattern(CGColorSpaceCreatePattern(None), pattern, (0.5, 0.5, 0.5, 0.5)) 39 self.failUnlessIsInstance(color, CGColorRef) 40 41 v = CGColorGetPattern(color) 42 self.failUnless(v is pattern) 43 44 # Now draw something with the pattern color to ensure that the callback 45 # is actually called at least once. 46 CGContextSetFillColorWithColor(context, color) 47 CGContextSetStrokeColorWithColor(context, color) 48 CGContextFillRect(context, ((0, 0), (50, 50))) 49 50 51 finally: 52 CGContextEndPage(context) 53 CGPDFContextClose(context) 54 if os.path.exists("/tmp/pyobjc.test.pdf"): 55 os.unlink("/tmp/pyobjc.test.pdf") 56 57 self.failIfEqual(cnt[0], 0) 58 59 60if __name__ == "__main__": 61 main() 62