1from PyObjCTools.TestSupport import *
2
3from Foundation import *
4import Foundation
5
6
7class TestNSGeometry (TestCase):
8    def testConstants(self):
9        self.assertEquals(NSMinXEdge, 0)
10        self.assertEquals(NSMinYEdge, 1)
11        self.assertEquals(NSMaxXEdge, 2)
12        self.assertEquals(NSMaxYEdge, 3)
13
14        self.assertEquals(NSZeroPoint, NSPoint())
15        self.assertEquals(NSZeroSize, NSSize())
16        self.assertEquals(NSZeroRect, NSRect())
17
18    def testInlines(self):
19        self.assertEquals(NSMakePoint(1, 2), NSPoint(1, 2))
20        self.assertEquals(NSMakeSize(4, 5), NSSize(4, 5))
21        self.assertEquals(NSMakeRect(1, 2, 3, 4), NSRect(NSPoint(1, 2), NSSize(3, 4)))
22
23        rect = NSRect(NSPoint(1,2), NSSize(4,6))
24        self.assertEquals(NSMaxX(rect), 5)
25        self.assertEquals(NSMaxY(rect), 8)
26        self.assertEquals(NSMidX(rect), 3)
27        self.assertEquals(NSMidY(rect), 5)
28        self.assertEquals(NSMinX(rect), 1)
29        self.assertEquals(NSMinY(rect), 2)
30        self.assertEquals(NSWidth(rect), 4)
31        self.assertEquals(NSHeight(rect), 6)
32
33        # Cannot test these here, need to be tested in the Quartz unittests
34        self.failUnless(hasattr(Foundation, 'NSRectFromCGRect'))
35        self.failUnless(hasattr(Foundation, 'NSRectToCGRect'))
36        self.failUnless(hasattr(Foundation, 'NSPointFromCGPoint'))
37        self.failUnless(hasattr(Foundation, 'NSPointToCGPoint'))
38        self.failUnless(hasattr(Foundation, 'NSSizeFromCGSize'))
39        self.failUnless(hasattr(Foundation, 'NSSizeToCGSize'))
40
41    def testFunctions(self):
42        p1 = NSPoint(1, 2)
43        p2 = NSPoint(3, 4)
44
45        s1 = NSSize(4, 5)
46        s2 = NSSize(7, 8)
47
48        r0 = NSRect(NSPoint(9, 10), NSSize(0, 0))
49        r1 = NSRect(NSPoint(0, 1), NSSize(4, 5))
50        r2 = NSRect(NSPoint(4.5, 5.5), NSSize(7.5, 8.5))
51
52
53
54        self.failUnless(NSEqualPoints(p1, p1) is True)
55        self.failUnless(NSEqualPoints(p1, p2) is False)
56
57        self.failUnless(NSEqualSizes(s1, s1) is True)
58        self.failUnless(NSEqualSizes(s1, s2) is False)
59
60        self.failUnless(NSEqualRects(r1, r1) is True)
61        self.failUnless(NSEqualRects(r1, r2) is False)
62
63        self.failUnless(NSIsEmptyRect(r0) is True)
64        self.failUnless(NSIsEmptyRect(r1) is False)
65
66        ra = NSInsetRect(r1, 2, 3)
67        self.assertEquals(ra, NSRect(NSPoint(2, 4), NSSize(0, -1)))
68
69        ra = NSIntegralRect(r2)
70        self.assertEquals(ra, NSRect(NSPoint(4, 5), NSSize(8, 9)))
71
72        ra = NSUnionRect(r1, r2)
73        self.assertEquals(ra, NSRect(NSPoint(0, 1), NSSize(12, 13)))
74
75        ra = NSIntersectionRect(r1, r2)
76        self.assertEquals(ra, NSRect(NSPoint(0, 0), NSSize(0, 0)))
77
78        ra = NSOffsetRect(r1, 5, 6)
79        self.assertEquals(ra, NSRect(NSPoint(5, 7), NSSize(4,5)))
80
81        slice, rem = NSDivideRect(r2, None, None, 1.5, NSMaxYEdge)
82        self.assertEquals(slice, NSRect(NSPoint(4.5, 12.5), NSSize(7.5, 1.5)))
83        self.assertEquals(rem, NSRect(NSPoint(4.5, 5.5), NSSize(7.5, 7.0)))
84
85        self.failUnless(NSPointInRect(p1, r1) is True)
86        self.failUnless(NSMouseInRect(p1, r1, False) is True)
87        self.failUnless(NSMouseInRect(p2, r2, True) is False)
88
89        self.failUnless(NSContainsRect(r1, r2) is False)
90        self.failUnless(NSIntersectsRect(r1, r2) is False)
91
92        self.assertEquals(NSStringFromPoint(p1), u'{1, 2}')
93        self.assertEquals(NSStringFromSize(s1), u'{4, 5}')
94        self.assertEquals(NSStringFromRect(r1),  u'{{0, 1}, {4, 5}}')
95        v = NSPointFromString('{1, 2}')
96        self.assertEquals(v, p1)
97        v = NSSizeFromString('{4,5}')
98        self.assertEquals(v, s1)
99        v = NSRectFromString(u'{   {0,1}  , {  4, 5}}')
100        self.assertEquals(v, r1)
101
102    def testValueMethods(self):
103        v = NSValue.valueWithPoint_(NSPoint(2, 3))
104        w = v.pointValue()
105        self.failUnless(isinstance(w, NSPoint))
106        self.assertEquals(w, (2,3))
107
108        w = v.sizeValue()
109        self.failUnless(isinstance(w, NSSize))
110        self.assertEquals(w, (2,3))
111
112        v = NSValue.valueWithSize_(NSSize(9, 8))
113        w = v.sizeValue()
114        self.failUnless(isinstance(w, NSSize))
115        self.assertEquals(w, (9,8))
116
117        v = NSValue.valueWithRect_(NSRect(NSPoint(9, 10), NSSize(11, 12)))
118        w = v.rectValue()
119        self.failUnless(isinstance(w, NSRect))
120        self.assertEquals(w, ((9,10),(11,12)))
121
122        self.failUnlessArgHasType(NSValue.valueWithPoint_, 0, NSPoint.__typestr__)
123        self.failUnlessResultHasType(NSValue.pointValue, NSPoint.__typestr__)
124        self.failUnlessArgHasType(NSValue.valueWithSize_, 0, NSSize.__typestr__)
125        self.failUnlessResultHasType(NSValue.sizeValue, NSSize.__typestr__)
126        self.failUnlessArgHasType(NSValue.valueWithRect_, 0, NSRect.__typestr__)
127        self.failUnlessResultHasType(NSValue.rectValue, NSRect.__typestr__)
128
129
130    def testCoderMethods(self):
131        self.failUnlessArgHasType(NSCoder.encodePoint_, 0, NSPoint.__typestr__)
132        self.failUnlessResultHasType(NSCoder.decodePoint, NSPoint.__typestr__)
133        self.failUnlessArgHasType(NSCoder.encodeSize_, 0, NSSize.__typestr__)
134        self.failUnlessResultHasType(NSCoder.decodeSize, NSSize.__typestr__)
135        self.failUnlessArgHasType(NSCoder.encodeRect_, 0, NSRect.__typestr__)
136        self.failUnlessResultHasType(NSCoder.decodeRect, NSRect.__typestr__)
137
138
139if __name__ == "__main__":
140    main()
141