1#
2# Tests for the struct-wrappers for NSPoint, NSSize, NSRange and NSRect.
3#
4from Foundation import *
5from PyObjCTools.TestSupport import *
6import operator
7
8class TestNSPoint (TestCase):
9    def testConstructor(self):
10        p = NSPoint()
11        self.assert_(isinstance(p, NSPoint))
12        self.assertEquals(p.x, 0)
13        self.assertEquals(p.y, 0)
14
15        p = NSPoint(1,2)
16        self.assert_(isinstance(p, NSPoint))
17        self.assertEquals(p.x, 1)
18        self.assertEquals(p.y, 2)
19        self.assertEquals(p[0], 1)
20        self.assertEquals(p[1], 2)
21
22        p = NSPoint(y=1,x=2)
23        self.assert_(isinstance(p, NSPoint))
24        self.assertEquals(p.x, 2)
25        self.assertEquals(p.y, 1)
26        self.assertEquals(p[1], 1)
27        self.assertEquals(p[0], 2)
28
29        self.assertRaises(TypeError, NSPoint, 1, 2, 3)
30        self.assertRaises(TypeError, NSPoint, 1, 2, y=3)
31        self.assertRaises(TypeError, NSPoint, 1, x=3)
32        self.assertRaises(TypeError, NSPoint, x=3, z=4)
33
34    def testMakePoint(self):
35        p = NSMakePoint(1, 2)
36        self.assert_(isinstance(p, NSPoint))
37        self.assertEquals(p.x, 1)
38        self.assertEquals(p.y, 2)
39
40    def testHash(self):
41        p = NSMakePoint(1, 2)
42        self.assertRaises(TypeError, hash, p)
43
44    def testCompare(self):
45        p = NSMakePoint(1, 2)
46        q = NSMakePoint(2, 3)
47        P = (1, 2)
48        Q = (2, 3)
49
50        self.assert_(not (p < p))
51        self.assert_(not (p < P))
52        self.assert_(p < q)
53        self.assert_(p < Q)
54
55        self.assert_(p <= p)
56        self.assert_(p <= P)
57        self.assert_(p <= q)
58        self.assert_(p <= Q)
59
60        self.assert_(p == p)
61        self.assert_(p == P)
62        self.assert_(not (p == q))
63        self.assert_(not (p == Q))
64
65        self.assert_(p != q)
66        self.assert_(p != Q)
67        self.assert_(not(p != p))
68        self.assert_(not(p != P))
69
70        self.assert_(q >= p)
71        self.assert_(q >= P)
72        self.assert_(q >= q)
73        self.assert_(q >= Q)
74
75        self.assert_(not (q > q))
76        self.assert_(not (q > Q))
77        self.assert_(q > p)
78        self.assert_(q > P)
79
80    def testRepr(self):
81        p = NSPoint()
82        self.assertEquals(repr(p), "<NSPoint x=0.0 y=0.0>")
83
84        p = NSPoint(42, 98)
85        self.assertEquals(repr(p), "<NSPoint x=42 y=98>")
86
87        p.x = p
88        self.assertEquals(repr(p), "<NSPoint x=<NSPoint ...> y=98>")
89
90    def testStr(self):
91        p = NSPoint()
92        self.assertEquals(str(p), "<NSPoint x=0.0 y=0.0>")
93
94        p = NSPoint(42, 98)
95        self.assertEquals(str(p), "<NSPoint x=42 y=98>")
96
97        p.x = p
98        self.assertEquals(repr(p), "<NSPoint x=<NSPoint ...> y=98>")
99
100    def testSlice(self):
101        p = NSPoint(1,2)
102        q = p[:]
103
104        self.assert_(isinstance(q, tuple))
105        self.assertEquals(q, (1.0,2.0))
106
107    def testDeleteAttr(self):
108        p = NSPoint(1,2)
109        self.assertRaises(TypeError, delattr, p, 'x')
110
111    def testDeleteSlice(self):
112        p = NSPoint(1,2)
113        self.assertRaises(TypeError, operator.delitem, p, 0)
114
115    def testAssignSlice(self):
116        p = NSPoint(1,2)
117        p[:] = (4,5)
118
119        self.assert_(isinstance(p, NSPoint))
120        self.assertEquals(p.x, 4)
121        self.assertEquals(p.y, 5)
122
123        p[:] = p
124        self.assert_(isinstance(p, NSPoint))
125        self.assertEquals(p.x, 4)
126        self.assertEquals(p.y, 5)
127
128        self.assertRaises(TypeError, operator.setslice, p, 0, 2, [1,2,3])
129        self.assertRaises(TypeError, operator.setslice, p, 0, 2, [3])
130        self.assertRaises(TypeError, operator.setslice, p, 0, 3, [1,2,3])
131
132        self.assertRaises(TypeError, operator.delslice, p, 0, 0)
133        self.assertRaises(TypeError, operator.delslice, p, 0, 1)
134        self.assertRaises(TypeError, operator.delslice, p, 0, 2)
135
136class TestNSSize (TestCase):
137    def testConstructor(self):
138        p = NSSize()
139        self.assert_(isinstance(p, NSSize))
140        self.assertEquals(p.width, 0)
141        self.assertEquals(p.height, 0)
142
143        p = NSSize(1,2)
144        self.assert_(isinstance(p, NSSize))
145        self.assertEquals(p.width, 1)
146        self.assertEquals(p.height, 2)
147        self.assertEquals(p[0], 1)
148        self.assertEquals(p[1], 2)
149
150        p = NSSize(height=1,width=2)
151        self.assert_(isinstance(p, NSSize))
152        self.assertEquals(p.width, 2)
153        self.assertEquals(p.height, 1)
154        self.assertEquals(p[1], 1)
155        self.assertEquals(p[0], 2)
156
157        self.assertRaises(TypeError, NSSize, 1, 2, 3)
158        self.assertRaises(TypeError, NSSize, 1, 2, height=3)
159        self.assertRaises(TypeError, NSSize, 1, width=3)
160        self.assertRaises(TypeError, NSSize, width=3, z=4)
161
162    def testMakeSize(self):
163        p = NSMakeSize(1, 2)
164        self.assert_(isinstance(p, NSSize))
165        self.assertEquals(p.width, 1)
166        self.assertEquals(p.height, 2)
167
168class TestNSRange (TestCase):
169    def testConstructor(self):
170        p = NSRange()
171        self.assert_(isinstance(p, NSRange))
172        self.assertEquals(p.location, 0)
173        self.assertEquals(p.length, 0)
174
175        p = NSRange(1,2)
176        self.assert_(isinstance(p, NSRange))
177        self.assertEquals(p.location, 1)
178        self.assertEquals(p.length, 2)
179        self.assertEquals(p[0], 1)
180        self.assertEquals(p[1], 2)
181
182        p = NSRange(length=1,location=2)
183        self.assert_(isinstance(p, NSRange))
184        self.assertEquals(p.location, 2)
185        self.assertEquals(p.length, 1)
186        self.assertEquals(p[1], 1)
187        self.assertEquals(p[0], 2)
188
189        self.assertRaises(TypeError, NSRange, 1, 2, 3)
190        self.assertRaises(TypeError, NSRange, 1, 2, length=3)
191        self.assertRaises(TypeError, NSRange, 1, location=3)
192        self.assertRaises(TypeError, NSRange, location=3, z=4)
193
194    def testMakeSize(self):
195        p = NSMakeSize(1, 2)
196        self.assert_(isinstance(p, NSSize))
197        self.assertEquals(p.width, 1)
198        self.assertEquals(p.height, 2)
199
200class TestNSRect (TestCase):
201    def testConstructor(self):
202        p = NSRect()
203        self.assert_(isinstance(p, NSRect))
204        self.assert_(p.origin is not None)
205        self.assert_(p.size is not None)
206        self.assertEquals(p.origin, NSPoint(0, 0))
207        self.assertEquals(p.size, NSSize(0, 0))
208
209        p = NSRect(1,2)
210        self.assert_(isinstance(p, NSRect))
211        self.assertEquals(p.origin, 1)
212        self.assertEquals(p.size, 2)
213        self.assertEquals(p[0], 1)
214        self.assertEquals(p[1], 2)
215
216        p = NSRect(size=1,origin=2)
217        self.assert_(isinstance(p, NSRect))
218        self.assertEquals(p.origin, 2)
219        self.assertEquals(p.size, 1)
220        self.assertEquals(p[1], 1)
221        self.assertEquals(p[0], 2)
222
223        self.assertRaises(TypeError, NSRect, 1, 2, 3)
224        self.assertRaises(TypeError, NSRect, 1, 2, origin=3)
225        self.assertRaises(TypeError, NSRect, 1, origin=3)
226        self.assertRaises(TypeError, NSRect, origin=3, z=4)
227
228    def testMakeRect(self):
229        p = NSMakeRect(1, 2, 3, 4)
230        self.assert_(isinstance(p, NSRect))
231        self.assertEquals(p.origin, (1, 2))
232        self.assertEquals(p.size, (3,4))
233        self.assertEquals(p.origin.x, 1)
234        self.assertEquals(p.origin.y, 2)
235        self.assertEquals(p.size.width, 3)
236        self.assertEquals(p.size.height, 4)
237
238if __name__ == "__main__":
239    main()
240