1#
2# Tests for the struct-wrapper for NSAffineTransformStruct
3#
4from Foundation import *
5from PyObjCTools.TestSupport import *
6import operator
7
8class TestNSAffineTransformStruct (TestCase):
9    def testConstructor(self):
10        p = NSAffineTransformStruct()
11        self.assert_(isinstance(p, NSAffineTransformStruct))
12        self.assertEqual(p.m11, 0)
13        self.assertEqual(p.m12, 0)
14        self.assertEqual(p.m21, 0)
15        self.assertEqual(p.m22, 0)
16        self.assertEqual(p.tX, 0)
17        self.assertEqual(p.tY, 0)
18
19        p = NSAffineTransformStruct(1,2, 3, 4, 5, 6)
20        self.assert_(isinstance(p, NSAffineTransformStruct))
21        self.assertEqual(p.m11, 1)
22        self.assertEqual(p.m12, 2)
23        self.assertEqual(p.m21, 3)
24        self.assertEqual(p.m22, 4)
25        self.assertEqual(p.tX, 5)
26        self.assertEqual(p.tY, 6)
27        self.assertEqual(p[0], 1)
28        self.assertEqual(p[1], 2)
29        self.assertEqual(p[2], 3)
30        self.assertEqual(p[3], 4)
31        self.assertEqual(p[4], 5)
32        self.assertEqual(p[5], 6)
33
34        p = NSAffineTransformStruct(tY=1,tX=2, m22=3, m21=4, m12=5, m11=6)
35        self.assert_(isinstance(p, NSAffineTransformStruct))
36        self.assertEqual(p.m11, 6)
37        self.assertEqual(p.m12, 5)
38        self.assertEqual(p.m21, 4)
39        self.assertEqual(p.m22, 3)
40        self.assertEqual(p.tX, 2)
41        self.assertEqual(p.tY, 1)
42        self.assertEqual(p[0], 6)
43        self.assertEqual(p[1], 5)
44        self.assertEqual(p[2], 4)
45        self.assertEqual(p[3], 3)
46        self.assertEqual(p[4], 2)
47        self.assertEqual(p[5], 1)
48
49        self.assertRaises(TypeError, NSAffineTransformStruct, 1, 2, 3, 4, 5, 6, 7, 8)
50        self.assertRaises(TypeError, NSAffineTransformStruct, 1, 2, 3, 4, 5, 6, tY=3)
51        self.assertRaises(TypeError, NSAffineTransformStruct, 1, 2, 3, 4, 5, m11=3)
52        self.assertRaises(TypeError, NSAffineTransformStruct, m11=3, mXY=4)
53
54    def testHash(self):
55        p = NSAffineTransformStruct()
56        self.assertRaises(TypeError, hash, p)
57
58    def testCompare(self):
59        p = NSAffineTransformStruct(1, 2, 3, 4, 5, 6)
60        q = NSAffineTransformStruct(1, 2, 3, 4, 5, 7)
61        P = (1, 2, 3, 4, 5, 6)
62        Q = (1, 2, 3, 4, 5, 7)
63
64        self.assert_(not (p == P[:4]))
65        self.assert_((p != P[:4]))
66        self.assert_(not (p <= P[:4]))
67        self.assert_(not (p < P[:4]))
68        self.assert_((p > P[:4]))
69        self.assert_((p >= P[:4]))
70
71        self.assert_(not (p < p))
72        self.assert_(not (p < P))
73        self.assert_(p < q)
74        self.assert_(p < Q)
75
76        self.assert_(p <= p)
77        self.assert_(p <= P)
78        self.assert_(p <= q)
79        self.assert_(p <= Q)
80
81        self.assert_(p == p)
82        self.assert_(p == P)
83        self.assert_(not (p == q))
84        self.assert_(not (p == Q))
85
86        self.assert_(p != q)
87        self.assert_(p != Q)
88        self.assert_(not(p != p))
89        self.assert_(not(p != P))
90
91        self.assert_(q >= p)
92        self.assert_(q >= P)
93        self.assert_(q >= q)
94        self.assert_(q >= Q)
95
96        self.assert_(not (q > q))
97        self.assert_(not (q > Q))
98        self.assert_(q > p)
99        self.assert_(q > P)
100
101    def testRepr(self):
102        p = NSAffineTransformStruct()
103        self.assertEqual(repr(p), "<NSAffineTransformStruct m11=0.0 m12=0.0 m21=0.0 m22=0.0 tX=0.0 tY=0.0>")
104
105        p = NSAffineTransformStruct(1, 2, 3, 4, 5, 6)
106        self.assertEqual(repr(p), "<NSAffineTransformStruct m11=1 m12=2 m21=3 m22=4 tX=5 tY=6>")
107
108        p.tX = p
109        self.assertEqual(repr(p), "<NSAffineTransformStruct m11=1 m12=2 m21=3 m22=4 tX=<NSAffineTransformStruct ...> tY=6>")
110
111    def testStr(self):
112        p = NSAffineTransformStruct()
113        self.assertEqual(str(p), "<NSAffineTransformStruct m11=0.0 m12=0.0 m21=0.0 m22=0.0 tX=0.0 tY=0.0>")
114
115        p = NSAffineTransformStruct(1, 2, 3, 4, 5, 6)
116        self.assertEqual(str(p), "<NSAffineTransformStruct m11=1 m12=2 m21=3 m22=4 tX=5 tY=6>")
117
118        p.tX = p
119        self.assertEqual(str(p), "<NSAffineTransformStruct m11=1 m12=2 m21=3 m22=4 tX=<NSAffineTransformStruct ...> tY=6>")
120
121    def testSlice(self):
122        p = NSAffineTransformStruct(1,2,3,4,5,6)
123        q = p[:]
124
125        self.assert_(isinstance(q, tuple))
126        self.assertEqual(q, (1.0,2.0,3.0,4.0,5.0,6.0))
127
128    def testDeleteSlice(self):
129        p = NSAffineTransformStruct(1,2)
130
131        def delslice(o, b, e):
132            del o[b:e]
133
134        self.assertRaises(TypeError, operator.delitem, p, 0)
135        self.assertRaises(TypeError, delslice, p, 0, 3)
136
137    def testAssignSlice(self):
138        p = NSAffineTransformStruct(1,2,3,4,5,6)
139        p[:] = (4,5,6,7,8,9)
140
141        self.assert_(isinstance(p, NSAffineTransformStruct))
142        self.assertEqual(p.m11, 4)
143        self.assertEqual(p.m12, 5)
144        self.assertEqual(p.m21, 6)
145        self.assertEqual(p.m22, 7)
146        self.assertEqual(p.tX, 8)
147        self.assertEqual(p.tY, 9)
148
149        p[:] = p
150        self.assert_(isinstance(p, NSAffineTransformStruct))
151        self.assertEqual(p.m11, 4)
152        self.assertEqual(p.m12, 5)
153        self.assertEqual(p.m21, 6)
154        self.assertEqual(p.m22, 7)
155        self.assertEqual(p.tX, 8)
156        self.assertEqual(p.tY, 9)
157
158        p[1:4] = range(3)
159        self.assertEqual(p.m11, 4)
160        self.assertEqual(p.m12, 0)
161        self.assertEqual(p.m21, 1)
162        self.assertEqual(p.m22, 2)
163        self.assertEqual(p.tX, 8)
164        self.assertEqual(p.tY, 9)
165
166        def setslice(o, b, e, v):
167            o[b:e] = v
168
169        def delslice(o, b, e):
170            del o[b:e]
171
172        self.assertRaises(TypeError, setslice, p, 0, 2, [1,2,3])
173        self.assertRaises(TypeError, setslice, p, 0, 2, [3])
174
175        self.assertRaises(TypeError, delslice, p, 0, 0)
176        self.assertRaises(TypeError, delslice, p, 0, 1)
177        self.assertRaises(TypeError, delslice, p, 0, 2)
178
179
180class TestAffineTransform (TestCase):
181    def testStructReturn (self):
182        transform = NSAffineTransform.transform()
183        s = transform.transformStruct()
184        self.assertIsInstance(s, NSAffineTransformStruct)
185        s = NSAffineTransformStruct(0, 1, 2, 3, 4, 5)
186        transform.setTransformStruct_(s)
187
188        t = transform.transformStruct()
189        self.assertIsInstance(t, NSAffineTransformStruct)
190        self.assertEqual(s, t)
191
192        v = transform.transformPoint_((1,1))
193        self.assertIsInstance(v, NSPoint)
194
195        v = transform.transformSize_((1,1))
196        self.assertIsInstance(v, NSSize)
197
198
199
200
201if __name__ == "__main__":
202    main()
203