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 def testFunctions(self): 41 p1 = NSPoint(1, 2) 42 p2 = NSPoint(3, 4) 43 44 s1 = NSSize(4, 5) 45 s2 = NSSize(7, 8) 46 47 r0 = NSRect(NSPoint(9, 10), NSSize(0, 0)) 48 r1 = NSRect(NSPoint(0, 1), NSSize(4, 5)) 49 r2 = NSRect(NSPoint(4.5, 5.5), NSSize(7.5, 8.5)) 50 51 52 53 self.assertIs(NSEqualPoints(p1, p1), True) 54 self.assertIs(NSEqualPoints(p1, p2), False) 55 self.assertIs(NSEqualSizes(s1, s1), True) 56 self.assertIs(NSEqualSizes(s1, s2), False) 57 self.assertIs(NSEqualRects(r1, r1), True) 58 self.assertIs(NSEqualRects(r1, r2), False) 59 self.assertIs(NSIsEmptyRect(r0), True) 60 self.assertIs(NSIsEmptyRect(r1), False) 61 ra = NSInsetRect(r1, 2, 3) 62 self.assertEqual(ra, NSRect(NSPoint(2, 4), NSSize(0, -1))) 63 64 ra = NSIntegralRect(r2) 65 self.assertEqual(ra, NSRect(NSPoint(4, 5), NSSize(8, 9))) 66 67 ra = NSUnionRect(r1, r2) 68 self.assertEqual(ra, NSRect(NSPoint(0, 1), NSSize(12, 13))) 69 70 ra = NSIntersectionRect(r1, r2) 71 self.assertEqual(ra, NSRect(NSPoint(0, 0), NSSize(0, 0))) 72 73 ra = NSOffsetRect(r1, 5, 6) 74 self.assertEqual(ra, NSRect(NSPoint(5, 7), NSSize(4,5))) 75 76 slice, rem = NSDivideRect(r2, None, None, 1.5, NSMaxYEdge) 77 self.assertEqual(slice, NSRect(NSPoint(4.5, 12.5), NSSize(7.5, 1.5))) 78 self.assertEqual(rem, NSRect(NSPoint(4.5, 5.5), NSSize(7.5, 7.0))) 79 80 self.assertIs(NSPointInRect(p1, r1), True) 81 self.assertIs(NSMouseInRect(p1, r1, False), True) 82 self.assertIs(NSMouseInRect(p2, r2, True), False) 83 self.assertIs(NSContainsRect(r1, r2), False) 84 self.assertIs(NSIntersectsRect(r1, r2), False) 85 self.assertEqual(NSStringFromPoint(p1), u'{1, 2}') 86 self.assertEqual(NSStringFromSize(s1), u'{4, 5}') 87 self.assertEqual(NSStringFromRect(r1), u'{{0, 1}, {4, 5}}') 88 v = NSPointFromString('{1, 2}') 89 self.assertEqual(v, p1) 90 v = NSSizeFromString('{4,5}') 91 self.assertEqual(v, s1) 92 v = NSRectFromString(u'{ {0,1} , { 4, 5}}') 93 self.assertEqual(v, r1) 94 95 def testValueMethods(self): 96 v = NSValue.valueWithPoint_(NSPoint(2, 3)) 97 w = v.pointValue() 98 self.assertIsInstance(w, NSPoint) 99 self.assertEqual(w, (2,3)) 100 101 w = v.sizeValue() 102 self.assertIsInstance(w, NSSize) 103 self.assertEqual(w, (2,3)) 104 105 v = NSValue.valueWithSize_(NSSize(9, 8)) 106 w = v.sizeValue() 107 self.assertIsInstance(w, NSSize) 108 self.assertEqual(w, (9,8)) 109 110 v = NSValue.valueWithRect_(NSRect(NSPoint(9, 10), NSSize(11, 12))) 111 w = v.rectValue() 112 self.assertIsInstance(w, NSRect) 113 self.assertEqual(w, ((9,10),(11,12))) 114 115 self.assertArgHasType(NSValue.valueWithPoint_, 0, NSPoint.__typestr__) 116 self.assertResultHasType(NSValue.pointValue, NSPoint.__typestr__) 117 self.assertArgHasType(NSValue.valueWithSize_, 0, NSSize.__typestr__) 118 self.assertResultHasType(NSValue.sizeValue, NSSize.__typestr__) 119 self.assertArgHasType(NSValue.valueWithRect_, 0, NSRect.__typestr__) 120 self.assertResultHasType(NSValue.rectValue, NSRect.__typestr__) 121 122 123 def testCoderMethods(self): 124 self.assertArgHasType(NSCoder.encodePoint_, 0, NSPoint.__typestr__) 125 self.assertResultHasType(NSCoder.decodePoint, NSPoint.__typestr__) 126 self.assertArgHasType(NSCoder.encodeSize_, 0, NSSize.__typestr__) 127 self.assertResultHasType(NSCoder.decodeSize, NSSize.__typestr__) 128 self.assertArgHasType(NSCoder.encodeRect_, 0, NSRect.__typestr__) 129 self.assertResultHasType(NSCoder.decodeRect, NSRect.__typestr__) 130 131 132if __name__ == "__main__": 133 main() 134