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