1# Test special methods of NSBezierPath 2# TODO: Test implementing these in python. 3from PyObjCTools.TestSupport import * 4import objc 5 6from AppKit import * 7 8class TestNSBezierPath(TestCase): 9 if not hasattr(TestCase, 'assertAlmostEquals'): 10 def assertAlmostEquals(self, val1, val2): 11 self.assert_(abs(val1 - val2) < 0.000001) 12 13 def assertPointEquals(self, point1, point2): 14 self.assertAlmostEquals(point1[0], point2[0]) 15 self.assertAlmostEquals(point1[1], point2[1]) 16 17 def test_creation(self): 18 p = NSBezierPath.bezierPath() 19 self.assert_(p is not None) 20 self.assertEquals(p.elementCount(), 0) 21 22 p = NSBezierPath.bezierPathWithOvalInRect_(((0, 0), (100, 50))) 23 self.assert_(p is not None) 24 self.assertEquals(p.elementCount(), 5) 25 26 def test_appendPoints(self): 27 p = NSBezierPath.bezierPath() 28 self.assert_(p is not None) 29 self.assertEquals(p.elementCount(), 0) 30 31 points = [ (0, 0), (100, 0), (100, 100), (0, 0) ] 32 p.appendBezierPathWithPoints_count_(points, 3) 33 self.assertEquals(p.elementCount(), 3) 34 35 def test_setLineDash(self): 36 p = NSBezierPath.bezierPath() 37 p.setLineDash_count_phase_((10, 10, 20, 5), 4, 45.0) 38 39 pattern, count, phase = p.getLineDash_count_phase_(objc.NULL, 0, None) 40 #self.assertEquals(pattern, None) 41 self.assertEquals(pattern, objc.NULL) 42 self.assertEquals(count, 4) 43 self.assertAlmostEquals(phase, 45.0) 44 45 pattern, count, phase = p.getLineDash_count_phase_(None, 4, None) 46 self.assertAlmostEquals(pattern[0], 10) 47 self.assertAlmostEquals(pattern[1], 10) 48 self.assertAlmostEquals(pattern[2], 20) 49 self.assertAlmostEquals(pattern[3], 5) 50 self.assertEquals(count, 4) 51 self.assertAlmostEquals(phase, 45.0) 52 53 def test_elementAtIndex(self): 54 p = NSBezierPath.bezierPath() 55 p.moveToPoint_((10, 10)) 56 p.lineToPoint_((20, 30)) 57 p.lineToPoint_((30, 20)) 58 p.curveToPoint_controlPoint1_controlPoint2_((40, 41), (10, 11), (20, 21)) 59 p.closePath() 60 61 self.assertEquals(p.elementAtIndex_(0), NSMoveToBezierPathElement) 62 self.assertEquals(p.elementAtIndex_(1), NSLineToBezierPathElement) 63 self.assertEquals(p.elementAtIndex_(2), NSLineToBezierPathElement) 64 self.assertEquals(p.elementAtIndex_(3), NSCurveToBezierPathElement) 65 self.assertEquals(p.elementAtIndex_(4), NSClosePathBezierPathElement) 66 67 tp, points = p.elementAtIndex_associatedPoints_(0) 68 self.assertEquals(tp, NSMoveToBezierPathElement) 69 self.assertEquals(len(points), 1) 70 self.assertPointEquals(points[0], (10, 10)) 71 72 tp, points = p.elementAtIndex_associatedPoints_(1) 73 self.assertEquals(tp, NSLineToBezierPathElement) 74 self.assertEquals(len(points), 1) 75 self.assertPointEquals(points[0], (20, 30)) 76 77 tp, points = p.elementAtIndex_associatedPoints_(2) 78 self.assertEquals(tp, NSLineToBezierPathElement) 79 self.assertEquals(len(points), 1) 80 self.assertPointEquals(points[0], (30, 20)) 81 82 tp, points = p.elementAtIndex_associatedPoints_(3) 83 self.assertEquals(tp, NSCurveToBezierPathElement) 84 self.assertEquals(len(points), 3) 85 self.assertPointEquals(points[0], (10, 11)) # control point 1 86 self.assertPointEquals(points[1], (20, 21)) # control point 2 87 self.assertPointEquals(points[2], (40, 41)) # end point 88 89 tp, points = p.elementAtIndex_associatedPoints_(4) 90 self.assertEquals(tp, NSClosePathBezierPathElement) 91 self.assertEquals(len(points), 0) 92 93 def test_setAssociatedPoints(self): 94 p = NSBezierPath.bezierPath() 95 p.moveToPoint_((10, 10)) 96 p.lineToPoint_((20, 30)) 97 p.lineToPoint_((30, 20)) 98 p.curveToPoint_controlPoint1_controlPoint2_((40, 41), (10, 11), (20, 21)) 99 p.closePath() 100 101 p.setAssociatedPoints_atIndex_([(0, 1)], 0) 102 tp, points = p.elementAtIndex_associatedPoints_(0) 103 self.assertEquals(tp, NSMoveToBezierPathElement) 104 self.assertEquals(len(points), 1) 105 self.assertPointEquals(points[0], (0, 1)) 106 107 p.setAssociatedPoints_atIndex_([(0, 1), (2,3), (3,4)], 3) 108 tp, points = p.elementAtIndex_associatedPoints_(3) 109 self.assertEquals(tp, NSCurveToBezierPathElement) 110 self.assertEquals(len(points), 3) 111 self.assertPointEquals(points[0], (0, 1)) # control point 1 112 self.assertPointEquals(points[1], (2, 3)) # control point 2 113 self.assertPointEquals(points[2], (3, 4)) # end point 114 115 116 def testConstants(self): 117 self.failUnlessEqual(NSButtLineCapStyle, 0) 118 self.failUnlessEqual(NSRoundLineCapStyle, 1) 119 self.failUnlessEqual(NSSquareLineCapStyle, 2) 120 self.failUnlessEqual(NSMiterLineJoinStyle, 0) 121 self.failUnlessEqual(NSRoundLineJoinStyle, 1) 122 self.failUnlessEqual(NSBevelLineJoinStyle, 2) 123 self.failUnlessEqual(NSNonZeroWindingRule, 0) 124 self.failUnlessEqual(NSEvenOddWindingRule, 1) 125 self.failUnlessEqual(NSMoveToBezierPathElement, 0) 126 self.failUnlessEqual(NSLineToBezierPathElement, 1) 127 self.failUnlessEqual(NSCurveToBezierPathElement, 2) 128 self.failUnlessEqual(NSClosePathBezierPathElement, 3) 129 130 131 def testMethods(self): 132 self.failUnlessResultIsBOOL(NSBezierPath.isEmpty) 133 self.failUnlessResultIsBOOL(NSBezierPath.containsPoint_) 134 self.failUnlessResultIsBOOL(NSBezierPath.cachesBezierPath) 135 self.failUnlessArgIsBOOL(NSBezierPath.setCachesBezierPath_, 0) 136 137 138if __name__ == '__main__': 139 main( ) 140