1
2from PyObjCTools.TestSupport import *
3from Quartz.CoreGraphics import *
4
5class TestCGAffineTransform (TestCase):
6    def testStruct(self):
7        v = CGAffineTransform()
8        self.assertTrue(hasattr(v, "a"))
9        self.assertTrue(hasattr(v, "b"))
10        self.assertTrue(hasattr(v, "c"))
11        self.assertTrue(hasattr(v, "d"))
12        self.assertTrue(hasattr(v, "tx"))
13        self.assertTrue(hasattr(v, "ty"))
14
15    def testConstants(self):
16        self.assertIsInstance(CGAffineTransformIdentity, CGAffineTransform)
17        self.assertIsInstance(CGAffineTransformIdentity.a, float)
18        self.assertIsInstance(CGAffineTransformIdentity.b, float)
19        self.assertIsInstance(CGAffineTransformIdentity.c, float)
20        self.assertIsInstance(CGAffineTransformIdentity.d, float)
21        self.assertIsInstance(CGAffineTransformIdentity.tx, float)
22        self.assertIsInstance(CGAffineTransformIdentity.ty, float)
23
24    def testFunctions(self):
25        tf = CGAffineTransformMake(1.5, 2.5, 3.5, 4.5, 5.5, 6.5)
26        self.assertIsInstance(tf, CGAffineTransform)
27        self.assertEqual(tf.a,  1.5)
28        self.assertEqual(tf.b,  2.5)
29        self.assertEqual(tf.c,  3.5)
30        self.assertEqual(tf.d,  4.5)
31        self.assertEqual(tf.tx, 5.5)
32        self.assertEqual(tf.ty, 6.5)
33
34        tf = CGAffineTransformMakeTranslation(2.5, 3.5)
35        self.assertIsInstance(tf, CGAffineTransform)
36        self.assertEqual(tf.a,  1.0)
37        self.assertEqual(tf.b,  0.0)
38        self.assertEqual(tf.c,  0.0)
39        self.assertEqual(tf.d,  1.0)
40        self.assertEqual(tf.tx, 2.5)
41        self.assertEqual(tf.ty, 3.5)
42
43        tf = CGAffineTransformMakeScale(2.5, 3.5)
44        self.assertIsInstance(tf, CGAffineTransform)
45        self.assertEqual(tf.a,  2.5)
46        self.assertEqual(tf.b,  0.0)
47        self.assertEqual(tf.c,  0.0)
48        self.assertEqual(tf.d,  3.5)
49        self.assertEqual(tf.tx, 0.0)
50        self.assertEqual(tf.ty, 0.0)
51
52        tf = CGAffineTransformMakeRotation(3.4)
53        self.assertIsInstance(tf, CGAffineTransform)
54
55        self.assertResultHasType(CGAffineTransformIsIdentity, objc._C_BOOL)
56        self.assertTrue(CGAffineTransformIsIdentity(tf) is False)
57        self.assertTrue(CGAffineTransformIsIdentity(CGAffineTransformIdentity) is True)
58
59        tf = CGAffineTransformTranslate(tf, 2.5, 3.5)
60        self.assertIsInstance(tf, CGAffineTransform)
61
62        tf = CGAffineTransformScale(tf, 5.5, 9.5)
63        self.assertIsInstance(tf, CGAffineTransform)
64
65        tf = CGAffineTransformRotate(tf, 0.8)
66        self.assertIsInstance(tf, CGAffineTransform)
67
68        tf = CGAffineTransformInvert(tf)
69        self.assertIsInstance(tf, CGAffineTransform)
70
71        tf2 = CGAffineTransformConcat(tf,
72                CGAffineTransformMake(1.0, 1.0, 1.0, 1.0, 1.0, 1.0))
73        self.assertIsInstance(tf2, CGAffineTransform)
74
75        self.assertResultHasType(CGAffineTransformEqualToTransform, objc._C_BOOL)
76        self.assertTrue(CGAffineTransformEqualToTransform(tf, tf2) is False)
77        self.assertTrue(CGAffineTransformEqualToTransform(tf2, tf2) is True)
78
79        pt = CGPointApplyAffineTransform((2.5, 3.5), tf)
80        self.assertIsInstance(pt, CGPoint)
81
82        sz = CGSizeApplyAffineTransform((2.5, 3.5), tf)
83        self.assertIsInstance(sz, CGSize)
84
85        rct = CGRectApplyAffineTransform(((2.5, 3.5), (4.5, 5.5)), tf)
86        self.assertIsInstance(rct, CGRect)
87
88if __name__ == "__main__":
89    main()
90