1from fontTools.pens.perimeterPen import PerimeterPen 2import unittest 3 4 5def draw1_(pen): 6 pen.moveTo((254, 360)) 7 pen.lineTo((771, 367)) 8 pen.curveTo((800, 393), (808, 399), (819, 412)) 9 pen.curveTo((818, 388), (774, 138), (489, 145)) 10 pen.curveTo((188, 145), (200, 398), (200, 421)) 11 pen.curveTo((209, 409), (220, 394), (254, 360)) 12 pen.closePath() 13 14 15def draw2_(pen): 16 pen.moveTo((254, 360)) 17 pen.curveTo((220, 394), (209, 409), (200, 421)) 18 pen.curveTo((200, 398), (188, 145), (489, 145)) 19 pen.curveTo((774, 138), (818, 388), (819, 412)) 20 pen.curveTo((808, 399), (800, 393), (771, 367)) 21 pen.closePath() 22 23 24def draw3_(pen): 25 pen.moveTo((771, 367)) 26 pen.curveTo((800, 393), (808, 399), (819, 412)) 27 pen.curveTo((818, 388), (774, 138), (489, 145)) 28 pen.curveTo((188, 145), (200, 398), (200, 421)) 29 pen.curveTo((209, 409), (220, 394), (254, 360)) 30 pen.closePath() 31 32 33def draw4_(pen): 34 pen.moveTo((771, 367)) 35 pen.lineTo((254, 360)) 36 pen.curveTo((220, 394), (209, 409), (200, 421)) 37 pen.curveTo((200, 398), (188, 145), (489, 145)) 38 pen.curveTo((774, 138), (818, 388), (819, 412)) 39 pen.curveTo((808, 399), (800, 393), (771, 367)) 40 pen.closePath() 41 42 43def draw5_(pen): 44 pen.moveTo((254, 360)) 45 pen.lineTo((771, 367)) 46 pen.qCurveTo((793, 386), (802, 394)) 47 pen.qCurveTo((811, 402), (819, 412)) 48 pen.qCurveTo((819, 406), (814, 383.5)) 49 pen.qCurveTo((809, 361), (796, 330.5)) 50 pen.qCurveTo((783, 300), (760.5, 266.5)) 51 pen.qCurveTo((738, 233), (701, 205.5)) 52 pen.qCurveTo((664, 178), (612, 160.5)) 53 pen.qCurveTo((560, 143), (489, 145)) 54 pen.qCurveTo((414, 145), (363, 164)) 55 pen.qCurveTo((312, 183), (280, 211.5)) 56 pen.qCurveTo((248, 240), (231.5, 274.5)) 57 pen.qCurveTo((215, 309), (208, 339.5)) 58 pen.qCurveTo((201, 370), (200.5, 392.5)) 59 pen.qCurveTo((200, 415), (200, 421)) 60 pen.qCurveTo((207, 412), (217.5, 399)) 61 pen.qCurveTo((228, 386), (254, 360)) 62 pen.closePath() 63 64 65def draw6_(pen): 66 pen.moveTo((254, 360)) 67 pen.qCurveTo((228, 386), (217.5, 399)) 68 pen.qCurveTo((207, 412), (200, 421)) 69 pen.qCurveTo((200, 415), (200.5, 392.5)) 70 pen.qCurveTo((201, 370), (208, 339.5)) 71 pen.qCurveTo((215, 309), (231.5, 274.5)) 72 pen.qCurveTo((248, 240), (280, 211.5)) 73 pen.qCurveTo((312, 183), (363, 164)) 74 pen.qCurveTo((414, 145), (489, 145)) 75 pen.qCurveTo((560, 143), (612, 160.5)) 76 pen.qCurveTo((664, 178), (701, 205.5)) 77 pen.qCurveTo((738, 233), (760.5, 266.5)) 78 pen.qCurveTo((783, 300), (796, 330.5)) 79 pen.qCurveTo((809, 361), (814, 383.5)) 80 pen.qCurveTo((819, 406), (819, 412)) 81 pen.qCurveTo((811, 402), (802, 394)) 82 pen.qCurveTo((793, 386), (771, 367)) 83 pen.closePath() 84 85 86def draw7_(pen): 87 pen.moveTo((771, 367)) 88 pen.qCurveTo((793, 386), (802, 394)) 89 pen.qCurveTo((811, 402), (819, 412)) 90 pen.qCurveTo((819, 406), (814, 383.5)) 91 pen.qCurveTo((809, 361), (796, 330.5)) 92 pen.qCurveTo((783, 300), (760.5, 266.5)) 93 pen.qCurveTo((738, 233), (701, 205.5)) 94 pen.qCurveTo((664, 178), (612, 160.5)) 95 pen.qCurveTo((560, 143), (489, 145)) 96 pen.qCurveTo((414, 145), (363, 164)) 97 pen.qCurveTo((312, 183), (280, 211.5)) 98 pen.qCurveTo((248, 240), (231.5, 274.5)) 99 pen.qCurveTo((215, 309), (208, 339.5)) 100 pen.qCurveTo((201, 370), (200.5, 392.5)) 101 pen.qCurveTo((200, 415), (200, 421)) 102 pen.qCurveTo((207, 412), (217.5, 399)) 103 pen.qCurveTo((228, 386), (254, 360)) 104 pen.closePath() 105 106 107def draw8_(pen): 108 pen.moveTo((771, 367)) 109 pen.lineTo((254, 360)) 110 pen.qCurveTo((228, 386), (217.5, 399)) 111 pen.qCurveTo((207, 412), (200, 421)) 112 pen.qCurveTo((200, 415), (200.5, 392.5)) 113 pen.qCurveTo((201, 370), (208, 339.5)) 114 pen.qCurveTo((215, 309), (231.5, 274.5)) 115 pen.qCurveTo((248, 240), (280, 211.5)) 116 pen.qCurveTo((312, 183), (363, 164)) 117 pen.qCurveTo((414, 145), (489, 145)) 118 pen.qCurveTo((560, 143), (612, 160.5)) 119 pen.qCurveTo((664, 178), (701, 205.5)) 120 pen.qCurveTo((738, 233), (760.5, 266.5)) 121 pen.qCurveTo((783, 300), (796, 330.5)) 122 pen.qCurveTo((809, 361), (814, 383.5)) 123 pen.qCurveTo((819, 406), (819, 412)) 124 pen.qCurveTo((811, 402), (802, 394)) 125 pen.qCurveTo((793, 386), (771, 367)) 126 pen.closePath() 127 128 129class PerimeterPenTest(unittest.TestCase): 130 def test_PScontour_clockwise_line_first(self): 131 pen = PerimeterPen(None) 132 draw1_(pen) 133 self.assertEqual(1589, round(pen.value)) 134 135 def test_PScontour_counterclockwise_line_last(self): 136 pen = PerimeterPen(None) 137 draw2_(pen) 138 self.assertEqual(1589, round(pen.value)) 139 140 def test_PScontour_clockwise_line_last(self): 141 pen = PerimeterPen(None) 142 draw3_(pen) 143 self.assertEqual(1589, round(pen.value)) 144 145 def test_PScontour_counterclockwise_line_first(self): 146 pen = PerimeterPen(None) 147 draw4_(pen) 148 self.assertEqual(1589, round(pen.value)) 149 150 def test_TTcontour_clockwise_line_first(self): 151 pen = PerimeterPen(None) 152 draw5_(pen) 153 self.assertEqual(1589, round(pen.value)) 154 155 def test_TTcontour_counterclockwise_line_last(self): 156 pen = PerimeterPen(None) 157 draw6_(pen) 158 self.assertEqual(1589, round(pen.value)) 159 160 def test_TTcontour_clockwise_line_last(self): 161 pen = PerimeterPen(None) 162 draw7_(pen) 163 self.assertEqual(1589, round(pen.value)) 164 165 def test_TTcontour_counterclockwise_line_first(self): 166 pen = PerimeterPen(None) 167 draw8_(pen) 168 self.assertEqual(1589, round(pen.value)) 169 170 171if __name__ == "__main__": 172 import sys 173 174 sys.exit(unittest.main()) 175