1
2from PyObjCTools.TestSupport import *
3from Quartz.QuartzCore import *
4from Quartz import *
5from Foundation import NSValue
6
7class TestCATransform3D (TestCase):
8
9    @min_os_level('10.5')
10    def testStructs(self):
11        v = CATransform3D()
12        self.assertIsInstance(v.m11, float)
13        self.assertIsInstance(v.m12, float)
14        self.assertIsInstance(v.m13, float)
15        self.assertIsInstance(v.m14, float)
16
17        self.assertIsInstance(v.m21, float)
18        self.assertIsInstance(v.m22, float)
19        self.assertIsInstance(v.m23, float)
20        self.assertIsInstance(v.m24, float)
21
22        self.assertIsInstance(v.m31, float)
23        self.assertIsInstance(v.m32, float)
24        self.assertIsInstance(v.m33, float)
25        self.assertIsInstance(v.m34, float)
26
27        self.assertIsInstance(v.m41, float)
28        self.assertIsInstance(v.m42, float)
29        self.assertIsInstance(v.m43, float)
30        self.assertIsInstance(v.m44, float)
31
32
33    @min_os_level('10.5')
34    def testConstants(self):
35        self.assertIsInstance(CATransform3DIdentity, CATransform3D)
36
37    @min_os_level('10.5')
38    def testFunctions(self):
39        self.assertResultHasType(CATransform3DIsIdentity, objc._C_BOOL)
40        v = CATransform3DIsIdentity(CATransform3DIdentity)
41        self.assertTrue(v is True)
42
43        self.assertResultHasType(CATransform3DEqualToTransform, objc._C_BOOL)
44        v = CATransform3DEqualToTransform(CATransform3DIdentity, CATransform3DIdentity)
45        self.assertTrue(v is True)
46
47        tf1 = CATransform3DMakeTranslation(1.0, 2.0, 3.0)
48        self.assertIsInstance(tf1, CATransform3D)
49
50        tf2 = CATransform3DMakeScale(1.0, 2.0, 3.0)
51        self.assertIsInstance(tf2, CATransform3D)
52
53        tf3 = CATransform3DMakeRotation(1.0, 2.0, 3.0, 4.0)
54        self.assertIsInstance(tf3, CATransform3D)
55
56        tf4 = CATransform3DTranslate(tf1, 1.0, 2.0, 3.0)
57        self.assertIsInstance(tf4, CATransform3D)
58
59        tf5 = CATransform3DScale(tf1, 1.0, 2.0, 3.0)
60        self.assertIsInstance(tf5, CATransform3D)
61
62        tf6 = CATransform3DRotate(tf1, 1.0, 2.0, 3.0, 4.0)
63        self.assertIsInstance(tf6, CATransform3D)
64
65        v = CATransform3DConcat(tf1, tf2)
66        self.assertIsInstance(v, CATransform3D)
67
68        v = CATransform3DInvert(tf3)
69        self.assertIsInstance(v, CATransform3D)
70
71        tf7 = CATransform3DMakeAffineTransform(CGAffineTransformIdentity)
72        self.assertIsInstance(tf7, CATransform3D)
73
74        self.assertResultHasType(CATransform3DIsAffine, objc._C_BOOL)
75        v = CATransform3DIsAffine(tf6)
76        self.assertTrue(v is False)
77        v = CATransform3DIsAffine(tf7)
78        self.assertTrue(v is True)
79
80        v = CATransform3DGetAffineTransform(tf7)
81        self.assertIsInstance(v, CGAffineTransform)
82
83
84        self.assertResultHasType(NSValue.CATransform3DValue, CATransform3D.__typestr__)
85        self.assertArgHasType(NSValue.valueWithCATransform3D_, 0, CATransform3D.__typestr__)
86
87
88if __name__ == "__main__":
89    main()
90