1 2from PyObjCTools.TestSupport import * 3from Quartz.CoreGraphics import * 4 5class TestCGGeometry (TestCase): 6 def testStruct(self): 7 v = CGPoint() 8 self.assertIsInstance(v.x, float) 9 self.assertIsInstance(v.y, float) 10 11 v = CGSize() 12 self.assertIsInstance(v.width, float) 13 self.assertIsInstance(v.height, float) 14 15 v = CGRect() 16 self.assertIsInstance(v.origin, CGPoint) 17 self.assertIsInstance(v.size, CGSize) 18 19 def testConstants(self): 20 self.assertEqual(CGRectMinXEdge, 0) 21 self.assertEqual(CGRectMinYEdge, 1) 22 self.assertEqual(CGRectMaxXEdge, 2) 23 self.assertEqual(CGRectMaxYEdge, 3) 24 25 self.assertIsInstance(CGPointZero, CGPoint) 26 self.assertEqual(CGPointZero.x, 0.0) 27 self.assertEqual(CGPointZero.y, 0.0) 28 29 self.assertIsInstance(CGSizeZero, CGSize) 30 self.assertEqual(CGSizeZero.width, 0.0) 31 self.assertEqual(CGSizeZero.height, 0.0) 32 33 self.assertIsInstance(CGRectZero, CGRect) 34 self.assertEqual(CGRectZero.origin, CGPointZero) 35 self.assertEqual(CGRectZero.size, CGSizeZero) 36 37 self.assertIsInstance(CGRectNull, CGRect) 38 self.assertIsInstance(CGRectInfinite, CGRect) 39 40 def testFunctions(self): 41 v = CGPointMake(2.5, 3.5) 42 self.assertIsInstance(v, CGPoint) 43 self.assertEqual(v.x, 2.5) 44 self.assertEqual(v.y, 3.5) 45 46 v = CGSizeMake(2.5, 3.5) 47 self.assertIsInstance(v, CGSize) 48 self.assertEqual(v.width, 2.5) 49 self.assertEqual(v.height, 3.5) 50 51 v = CGRectMake(2.5, 3.5, 15.5, 25.5) 52 self.assertIsInstance(v, CGRect) 53 self.assertEqual(v.origin.x, 2.5) 54 self.assertEqual(v.origin.y, 3.5) 55 self.assertEqual(v.size.width, 15.5) 56 self.assertEqual(v.size.height, 25.5) 57 rect = v 58 59 v = CGRectGetMinX(rect) 60 self.assertEqual(v, min(rect.origin.x, rect.origin.x + rect.size.width)) 61 v = CGRectGetMidX(rect) 62 self.assertEqual(v, rect.origin.x + (rect.size.width/2)) 63 64 v = CGRectGetMaxX(rect) 65 self.assertEqual(v, max(rect.origin.x, rect.origin.x + rect.size.width)) 66 67 v = CGRectGetMinY(rect) 68 self.assertEqual(v, min(rect.origin.y, rect.origin.y + rect.size.height)) 69 v = CGRectGetMidY(rect) 70 self.assertEqual(v, rect.origin.y + (rect.size.height/2)) 71 72 v = CGRectGetMaxY(rect) 73 self.assertEqual(v, max(rect.origin.y, rect.origin.y + rect.size.height)) 74 75 self.assertEqual(CGRectGetWidth(rect), abs(rect.size.width)) 76 self.assertEqual(CGRectGetHeight(rect), abs(rect.size.height)) 77 78 self.assertResultHasType(CGPointEqualToPoint, objc._C_BOOL) 79 self.assertTrue(CGPointEqualToPoint((1, 1), (2, 2)) is False) 80 self.assertTrue(CGPointEqualToPoint((1, 1), (1, 1)) is True) 81 82 self.assertResultHasType(CGSizeEqualToSize, objc._C_BOOL) 83 self.assertTrue(CGSizeEqualToSize((1, 1), (2, 2)) is False) 84 self.assertTrue(CGSizeEqualToSize((1, 1), (1, 1)) is True) 85 86 self.assertResultHasType(CGRectEqualToRect, objc._C_BOOL) 87 self.assertTrue(CGRectEqualToRect(((1,1), (1,1)), ((2,2), (2,2))) is False) 88 self.assertTrue(CGRectEqualToRect(((1,1), (1,1)), ((1,1), (1,1))) is True) 89 90 v = CGRectStandardize(((90, 90), (-4, -5))) 91 self.assertIsInstance(v, CGRect) 92 self.assertEqual(v, CGRectMake(86, 85, 4, 5)) 93 94 self.assertResultHasType(CGRectIsEmpty, objc._C_BOOL) 95 self.assertTrue(CGRectIsEmpty(rect) is False) 96 self.assertTrue(CGRectIsEmpty(CGRectZero) is True) 97 98 self.assertResultHasType(CGRectIsNull, objc._C_BOOL) 99 self.assertTrue(CGRectIsNull(rect) is False) 100 self.assertTrue(CGRectIsNull(CGRectNull) is True) 101 102 self.assertResultHasType(CGRectIsInfinite, objc._C_BOOL) 103 self.assertTrue(CGRectIsInfinite(rect) is False) 104 self.assertTrue(CGRectIsInfinite(CGRectInfinite) is True) 105 106 v = CGRectInset(rect, 2, 3) 107 self.assertIsInstance(v, CGRect) 108 self.assertEqual(v.origin.x, rect.origin.x + 2) 109 self.assertEqual(v.origin.y, rect.origin.y + 3) 110 self.assertEqual(v.size.width, rect.size.width - 4) 111 self.assertEqual(v.size.height, rect.size.height - 6) 112 113 v = CGRectIntegral(CGRectMake(1.5, 2.5, 3.5, 4.5)) 114 self.assertIsInstance(v, CGRect) 115 self.assertEqual(v, ((1, 2), (4, 5))) 116 117 v = CGRectUnion(((1,1), (4,5)), ((99,5), (40, 40))) 118 self.assertIsInstance(v, CGRect) 119 120 v = CGRectIntersection(((1,1), (4,5)), ((99,5), (40, 40))) 121 self.assertIsInstance(v, CGRect) 122 123 r = CGRectOffset(rect, 9, -5) 124 self.assertIsInstance(v, CGRect) 125 126 self.assertArgIsOut(CGRectDivide, 1) 127 self.assertArgIsOut(CGRectDivide, 2) 128 slice, remainder = CGRectDivide(rect, None, None, 10, CGRectMinYEdge) 129 self.assertIsInstance(slice, CGRect) 130 self.assertIsInstance(remainder, CGRect) 131 132 self.assertResultHasType(CGRectContainsPoint, objc._C_BOOL) 133 self.assertResultHasType(CGRectContainsRect, objc._C_BOOL) 134 self.assertResultHasType(CGRectIntersectsRect, objc._C_BOOL) 135 self.assertTrue(CGRectContainsPoint(rect, rect.origin) is True) 136 self.assertTrue(CGRectContainsRect(rect, rect) is True) 137 self.assertTrue(CGRectIntersectsRect(rect, rect) is True) 138 139 @min_os_level('10.5') 140 def testFunctions10_5(self): 141 d = CGPointCreateDictionaryRepresentation((10, 5)) 142 self.assertIsInstance(d, CFDictionaryRef) 143 144 ok, p = CGPointMakeWithDictionaryRepresentation(d, None) 145 self.assertTrue(ok is True) 146 self.assertIsInstance(p, CGPoint) 147 self.assertEqual(p.x, 10) 148 self.assertEqual(p.y, 5) 149 150 d = CGSizeCreateDictionaryRepresentation((10, 5)) 151 self.assertIsInstance(d, CFDictionaryRef) 152 153 ok, p = CGSizeMakeWithDictionaryRepresentation(d, None) 154 self.assertTrue(ok is True) 155 self.assertIsInstance(p, CGSize) 156 self.assertEqual(p.width, 10) 157 self.assertEqual(p.height, 5) 158 159 d = CGRectCreateDictionaryRepresentation(CGRectMake(0, 10, 20, 30)) 160 self.assertIsInstance(d, CFDictionaryRef) 161 162 ok, p = CGRectMakeWithDictionaryRepresentation(d, None) 163 self.assertTrue(ok is True) 164 self.assertIsInstance(p, CGRect) 165 self.assertEqual(p, CGRectMake(0, 10, 20, 30)) 166 167 168 169if __name__ == "__main__": 170 main() 171