1from PyObjCTools.TestSupport import * 2 3from Foundation import * 4import Foundation 5 6 7class TestNSGeometry (TestCase): 8 def testConstants(self): 9 self.assertEqual(NSMinXEdge, 0) 10 self.assertEqual(NSMinYEdge, 1) 11 self.assertEqual(NSMaxXEdge, 2) 12 self.assertEqual(NSMaxYEdge, 3) 13 14 self.assertEqual(NSZeroPoint, NSPoint()) 15 self.assertEqual(NSZeroSize, NSSize()) 16 self.assertEqual(NSZeroRect, NSRect()) 17 18 def testInlines(self): 19 self.assertEqual(NSMakePoint(1, 2), NSPoint(1, 2)) 20 self.assertEqual(NSMakeSize(4, 5), NSSize(4, 5)) 21 self.assertEqual(NSMakeRect(1, 2, 3, 4), NSRect(NSPoint(1, 2), NSSize(3, 4))) 22 23 rect = NSRect(NSPoint(1,2), NSSize(4,6)) 24 self.assertEqual(NSMaxX(rect), 5) 25 self.assertEqual(NSMaxY(rect), 8) 26 self.assertEqual(NSMidX(rect), 3) 27 self.assertEqual(NSMidY(rect), 5) 28 self.assertEqual(NSMinX(rect), 1) 29 self.assertEqual(NSMinY(rect), 2) 30 self.assertEqual(NSWidth(rect), 4) 31 self.assertEqual(NSHeight(rect), 6) 32 33 # Cannot test these here, need to be tested in the Quartz unittests 34 self.assertHasAttr(Foundation, 'NSRectFromCGRect') 35 self.assertHasAttr(Foundation, 'NSRectToCGRect') 36 self.assertHasAttr(Foundation, 'NSPointFromCGPoint') 37 self.assertHasAttr(Foundation, 'NSPointToCGPoint') 38 self.assertHasAttr(Foundation, 'NSSizeFromCGSize') 39 self.assertHasAttr(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.assertIs(NSEqualPoints(p1, p1), True) 55 self.assertIs(NSEqualPoints(p1, p2), False) 56 self.assertIs(NSEqualSizes(s1, s1), True) 57 self.assertIs(NSEqualSizes(s1, s2), False) 58 self.assertIs(NSEqualRects(r1, r1), True) 59 self.assertIs(NSEqualRects(r1, r2), False) 60 self.assertIs(NSIsEmptyRect(r0), True) 61 self.assertIs(NSIsEmptyRect(r1), False) 62 ra = NSInsetRect(r1, 2, 3) 63 self.assertEqual(ra, NSRect(NSPoint(2, 4), NSSize(0, -1))) 64 65 ra = NSIntegralRect(r2) 66 self.assertEqual(ra, NSRect(NSPoint(4, 5), NSSize(8, 9))) 67 68 ra = NSUnionRect(r1, r2) 69 self.assertEqual(ra, NSRect(NSPoint(0, 1), NSSize(12, 13))) 70 71 ra = NSIntersectionRect(r1, r2) 72 self.assertEqual(ra, NSRect(NSPoint(0, 0), NSSize(0, 0))) 73 74 ra = NSOffsetRect(r1, 5, 6) 75 self.assertEqual(ra, NSRect(NSPoint(5, 7), NSSize(4,5))) 76 77 slice, rem = NSDivideRect(r2, None, None, 1.5, NSMaxYEdge) 78 self.assertEqual(slice, NSRect(NSPoint(4.5, 12.5), NSSize(7.5, 1.5))) 79 self.assertEqual(rem, NSRect(NSPoint(4.5, 5.5), NSSize(7.5, 7.0))) 80 81 self.assertIs(NSPointInRect(p1, r1), True) 82 self.assertIs(NSMouseInRect(p1, r1, False), True) 83 self.assertIs(NSMouseInRect(p2, r2, True), False) 84 self.assertIs(NSContainsRect(r1, r2), False) 85 self.assertIs(NSIntersectsRect(r1, r2), False) 86 self.assertEqual(NSStringFromPoint(p1), b'{1, 2}'.decode('ascii')) 87 self.assertEqual(NSStringFromSize(s1), b'{4, 5}'.decode('ascii')) 88 self.assertEqual(NSStringFromRect(r1), b'{{0, 1}, {4, 5}}'.decode('ascii')) 89 v = NSPointFromString('{1, 2}') 90 self.assertEqual(v, p1) 91 v = NSSizeFromString('{4,5}') 92 self.assertEqual(v, s1) 93 v = NSRectFromString(b'{ {0,1} , { 4, 5}}'.decode('ascii')) 94 self.assertEqual(v, r1) 95 96 def testValueMethods(self): 97 v = NSValue.valueWithPoint_(NSPoint(2, 3)) 98 w = v.pointValue() 99 self.assertIsInstance(w, NSPoint) 100 self.assertEqual(w, (2,3)) 101 102 w = v.sizeValue() 103 self.assertIsInstance(w, NSSize) 104 self.assertEqual(w, (2,3)) 105 106 v = NSValue.valueWithSize_(NSSize(9, 8)) 107 w = v.sizeValue() 108 self.assertIsInstance(w, NSSize) 109 self.assertEqual(w, (9,8)) 110 111 v = NSValue.valueWithRect_(NSRect(NSPoint(9, 10), NSSize(11, 12))) 112 w = v.rectValue() 113 self.assertIsInstance(w, NSRect) 114 self.assertEqual(w, ((9,10),(11,12))) 115 116 self.assertArgHasType(NSValue.valueWithPoint_, 0, NSPoint.__typestr__) 117 self.assertResultHasType(NSValue.pointValue, NSPoint.__typestr__) 118 self.assertArgHasType(NSValue.valueWithSize_, 0, NSSize.__typestr__) 119 self.assertResultHasType(NSValue.sizeValue, NSSize.__typestr__) 120 self.assertArgHasType(NSValue.valueWithRect_, 0, NSRect.__typestr__) 121 self.assertResultHasType(NSValue.rectValue, NSRect.__typestr__) 122 123 124 def testCoderMethods(self): 125 self.assertArgHasType(NSCoder.encodePoint_, 0, NSPoint.__typestr__) 126 self.assertResultHasType(NSCoder.decodePoint, NSPoint.__typestr__) 127 self.assertArgHasType(NSCoder.encodePoint_forKey_, 0, NSPoint.__typestr__) 128 self.assertResultHasType(NSCoder.decodePointForKey_, NSPoint.__typestr__) 129 130 self.assertArgHasType(NSCoder.encodeSize_, 0, NSSize.__typestr__) 131 self.assertResultHasType(NSCoder.decodeSize, NSSize.__typestr__) 132 self.assertArgHasType(NSCoder.encodeSize_forKey_, 0, NSSize.__typestr__) 133 self.assertResultHasType(NSCoder.decodeSizeForKey_, NSSize.__typestr__) 134 135 self.assertArgHasType(NSCoder.encodeRect_, 0, NSRect.__typestr__) 136 self.assertResultHasType(NSCoder.decodeRect, NSRect.__typestr__) 137 self.assertArgHasType(NSCoder.encodeRect_forKey_, 0, NSRect.__typestr__) 138 self.assertResultHasType(NSCoder.decodeRectForKey_, NSRect.__typestr__) 139 140 @min_os_level('10.7') 141 def testConstants10_7(self): 142 self.assertEqual(NSAlignMinXInward, 1 << 0) 143 self.assertEqual(NSAlignMinYInward, 1 << 1) 144 self.assertEqual(NSAlignMaxXInward, 1 << 2) 145 self.assertEqual(NSAlignMaxYInward, 1 << 3) 146 self.assertEqual(NSAlignWidthInward, 1 << 4) 147 self.assertEqual(NSAlignHeightInward, 1 << 5) 148 self.assertEqual(NSAlignMinXOutward, 1 << 8) 149 self.assertEqual(NSAlignMinYOutward, 1 << 9) 150 self.assertEqual(NSAlignMaxXOutward, 1 << 10) 151 self.assertEqual(NSAlignMaxYOutward, 1 << 11) 152 self.assertEqual(NSAlignWidthOutward, 1 << 12) 153 self.assertEqual(NSAlignHeightOutward, 1 << 13) 154 self.assertEqual(NSAlignMinXNearest, 1 << 16) 155 self.assertEqual(NSAlignMinYNearest, 1 << 17) 156 self.assertEqual(NSAlignMaxXNearest, 1 << 18) 157 self.assertEqual(NSAlignMaxYNearest, 1 << 19) 158 self.assertEqual(NSAlignWidthNearest, 1 << 20) 159 self.assertEqual(NSAlignHeightNearest, 1 << 21) 160 self.assertEqual(NSAlignRectFlipped, 1 << 63) 161 self.assertEqual(NSAlignAllEdgesInward, NSAlignMinXInward|NSAlignMaxXInward|NSAlignMinYInward|NSAlignMaxYInward) 162 self.assertEqual(NSAlignAllEdgesOutward, NSAlignMinXOutward|NSAlignMaxXOutward|NSAlignMinYOutward|NSAlignMaxYOutward) 163 self.assertEqual(NSAlignAllEdgesNearest, NSAlignMinXNearest|NSAlignMaxXNearest|NSAlignMinYNearest|NSAlignMaxYNearest) 164 165 @min_os_level('10.7') 166 def testFunctions10_7(self): 167 r2 = NSRect(NSPoint(4.5, 5.5), NSSize(7.5, 8.5)) 168 r = NSIntegralRectWithOptions(r2, NSAlignAllEdgesNearest) 169 self.assertIsInstance(r, NSRect) 170 171if __name__ == "__main__": 172 main() 173