1
2from PyObjCTools.TestSupport import *
3from Quartz import *
4import Quartz
5import os
6
7class TestCGLayer (TestCase):
8    def testTypes(self):
9        self.assertIsCFType(CGLayerRef)
10
11    def setUp(self):
12        url = CFURLCreateWithFileSystemPath(None,
13            "/tmp/pyobjc.test.pdf", kCFURLPOSIXPathStyle, False)
14        self.assertIsInstance(url, CFURLRef)
15        context = CGPDFContextCreateWithURL(url,
16            ((0, 0), (1000, 1000)), None)
17        self.assertIsInstance(context, CGContextRef)
18        CGContextBeginPage(context, objc.NULL)
19
20        self.context = context
21
22    def tearDown(self):
23        CGContextEndPage(self.context)
24        if hasattr(Quartz, 'CGPDFContextClose'): CGPDFContextClose(self.context)
25        self.context = None
26        if os.path.exists("/tmp/pyobjc.test.pdf"):
27            os.unlink("/tmp/pyobjc.test.pdf")
28
29
30    def testFunctions(self):
31        self.assertResultIsCFRetained(CGLayerCreateWithContext)
32        layer = CGLayerCreateWithContext(self.context, CGSize(50, 100), None)
33        self.assertIsInstance(layer, CGLayerRef)
34
35        v = CGLayerRetain(layer)
36        self.assertTrue(v is layer)
37        CGLayerRelease(layer)
38
39        sz = CGLayerGetSize(layer)
40        self.assertIsInstance(sz, CGSize)
41        self.assertEqual(sz, CGSize(50, 100))
42
43        self.failIfResultIsCFRetained(CGLayerGetContext)
44        ctx = CGLayerGetContext(layer)
45        self.assertIsInstance(ctx, CGContextRef)
46        self.failIf(ctx is self.context)
47
48        CGContextDrawLayerInRect(self.context, CGRectMake(0, 0, 50, 50), layer)
49        CGContextDrawLayerAtPoint(self.context, CGPoint(10, 10), layer)
50
51        self.assertIsInstance(CGLayerGetTypeID(), (int, long))
52
53if __name__ == "__main__":
54    main()
55