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.assertEquals(p.m11, 0)
13        self.assertEquals(p.m12, 0)
14        self.assertEquals(p.m21, 0)
15        self.assertEquals(p.m22, 0)
16        self.assertEquals(p.tX, 0)
17        self.assertEquals(p.tY, 0)
18
19        p = NSAffineTransformStruct(1,2, 3, 4, 5, 6)
20        self.assert_(isinstance(p, NSAffineTransformStruct))
21        self.assertEquals(p.m11, 1)
22        self.assertEquals(p.m12, 2)
23        self.assertEquals(p.m21, 3)
24        self.assertEquals(p.m22, 4)
25        self.assertEquals(p.tX, 5)
26        self.assertEquals(p.tY, 6)
27        self.assertEquals(p[0], 1)
28        self.assertEquals(p[1], 2)
29        self.assertEquals(p[2], 3)
30        self.assertEquals(p[3], 4)
31        self.assertEquals(p[4], 5)
32        self.assertEquals(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.assertEquals(p.m11, 6)
37        self.assertEquals(p.m12, 5)
38        self.assertEquals(p.m21, 4)
39        self.assertEquals(p.m22, 3)
40        self.assertEquals(p.tX, 2)
41        self.assertEquals(p.tY, 1)
42        self.assertEquals(p[0], 6)
43        self.assertEquals(p[1], 5)
44        self.assertEquals(p[2], 4)
45        self.assertEquals(p[3], 3)
46        self.assertEquals(p[4], 2)
47        self.assertEquals(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.assertEquals(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.assertEquals(repr(p), "<NSAffineTransformStruct m11=1 m12=2 m21=3 m22=4 tX=5 tY=6>")
107
108        p.tX = p
109        self.assertEquals(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.assertEquals(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.assertEquals(str(p), "<NSAffineTransformStruct m11=1 m12=2 m21=3 m22=4 tX=5 tY=6>")
117
118        p.tX = p
119        self.assertEquals(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.assertEquals(q, (1.0,2.0,3.0,4.0,5.0,6.0))
127
128    def testDeleteSlice(self):
129        p = NSAffineTransformStruct(1,2)
130        self.assertRaises(TypeError, operator.delitem, p, 0)
131        self.assertRaises(TypeError, operator.delslice, p, 0, 3)
132
133    def testAssignSlice(self):
134        p = NSAffineTransformStruct(1,2,3,4,5,6)
135        p[:] = (4,5,6,7,8,9)
136
137        self.assert_(isinstance(p, NSAffineTransformStruct))
138        self.assertEquals(p.m11, 4)
139        self.assertEquals(p.m12, 5)
140        self.assertEquals(p.m21, 6)
141        self.assertEquals(p.m22, 7)
142        self.assertEquals(p.tX, 8)
143        self.assertEquals(p.tY, 9)
144
145        p[:] = p
146        self.assert_(isinstance(p, NSAffineTransformStruct))
147        self.assertEquals(p.m11, 4)
148        self.assertEquals(p.m12, 5)
149        self.assertEquals(p.m21, 6)
150        self.assertEquals(p.m22, 7)
151        self.assertEquals(p.tX, 8)
152        self.assertEquals(p.tY, 9)
153
154        p[1:4] = range(3)
155        self.assertEquals(p.m11, 4)
156        self.assertEquals(p.m12, 0)
157        self.assertEquals(p.m21, 1)
158        self.assertEquals(p.m22, 2)
159        self.assertEquals(p.tX, 8)
160        self.assertEquals(p.tY, 9)
161
162        self.assertRaises(TypeError, operator.setslice, p, 0, 2, [1,2,3])
163        self.assertRaises(TypeError, operator.setslice, p, 0, 2, [3])
164
165        self.assertRaises(TypeError, operator.delslice, p, 0, 0)
166        self.assertRaises(TypeError, operator.delslice, p, 0, 1)
167        self.assertRaises(TypeError, operator.delslice, p, 0, 2)
168
169
170class TestAffineTransform (TestCase):
171    def testStructReturn (self):
172        transform = NSAffineTransform.transform()
173        s = transform.transformStruct()
174        self.failUnless(isinstance(s, NSAffineTransformStruct))
175
176        s = NSAffineTransformStruct(0, 1, 2, 3, 4, 5)
177        transform.setTransformStruct_(s)
178
179        t = transform.transformStruct()
180        self.failUnless(isinstance(t, NSAffineTransformStruct))
181        self.assertEquals(s, t)
182
183
184
185if __name__ == "__main__":
186    main()
187