1 2from PyObjCTools.TestSupport import * 3from CoreText import * 4from Quartz import * 5 6import os 7 8class TestCTFrame (TestCase): 9 10 def testTypes(self): 11 self.assertIsInstance(CTFrameRef, objc.objc_class) 12 13 def testConstants(self): 14 self.assertEqual(kCTFrameProgressionTopToBottom, 0) 15 self.assertEqual(kCTFrameProgressionRightToLeft, 1) 16 17 self.assertIsInstance(kCTFrameProgressionAttributeName, unicode) 18 19 def testFunctions(self): 20 v = CTFrameGetTypeID() 21 self.assertIsInstance(v, (int, long)) 22 23 setter = CTFramesetterCreateWithAttributedString( 24 CFAttributedStringCreate(None, u"hello", None)) 25 self.assertIsInstance(setter, CTFramesetterRef) 26 27 path = CGPathCreateMutable() 28 self.assertIsInstance(path, CGPathRef) 29 CGPathAddRect(path, None, CGRect(CGPoint(0, 0), CGSize(400, 400))) 30 attr = { 'foo': 42 } 31 frame = CTFramesetterCreateFrame(setter, CFRange(0, 5), 32 path, attr) 33 self.assertIsInstance(frame, CTFrameRef) 34 35 v = CTFrameGetStringRange(frame) 36 self.assertIsInstance(v, CFRange) 37 38 v = CTFrameGetVisibleStringRange(frame) 39 self.assertIsInstance(v, CFRange) 40 41 self.assertResultIsNotCFRetained(CTFrameGetPath) 42 v = CTFrameGetPath(frame) 43 self.assertIsInstance(v, CGPathRef) 44 45 v = CTFrameGetFrameAttributes(frame) 46 self.assertTrue(v is attr) 47 48 v = CTFrameGetLines(frame) 49 self.assertIsInstance(v, CFArrayRef) 50 51 v = CTFrameGetLineOrigins(frame, CFRange(0, 1), None) 52 self.assertIsInstance(v, tuple) 53 self.assertEqual(len(v), 1) 54 self.assertIsInstance(v[0], CGPoint) 55 56 url = CFURLCreateWithFileSystemPath(None, 57 "/tmp/pyobjc.test.pdf", kCFURLPOSIXPathStyle, False) 58 self.assertIsInstance(url, CFURLRef) 59 ctx = CGPDFContextCreateWithURL(url, CGRect(CGPoint(0, 0), CGSize(1000, 1000)), None) 60 self.assertIsInstance(ctx, CGContextRef) 61 62 CTFrameDraw(frame, ctx) 63 64 if os.path.exists("/tmp/pyobjc.test.pdf"): 65 os.unlink("/tmp/pyobjc.test.pdf") 66 67 68if __name__ == "__main__": 69 main() 70