diff --git a/Tests/pens/recordingPen_test.py b/Tests/pens/recordingPen_test.py index 971536d7a..6977b93b0 100644 --- a/Tests/pens/recordingPen_test.py +++ b/Tests/pens/recordingPen_test.py @@ -1,19 +1,29 @@ -from fontTools.misc.py23 import * -from fontTools.pens.recordingPen import RecordingPen, DecomposingRecordingPen +from fontTools.pens.recordingPen import ( + RecordingPen, + DecomposingRecordingPen, + RecordingPointPen, +) import pytest class _TestGlyph(object): - def draw(self, pen): pen.moveTo((0.0, 0.0)) pen.lineTo((0.0, 100.0)) pen.curveTo((50.0, 75.0), (60.0, 50.0), (50.0, 0.0)) pen.closePath() + def drawPoints(self, pen): + pen.beginPath(identifier="abc") + pen.addPoint((0.0, 0.0), "line", False, "start", identifier="0000") + pen.addPoint((0.0, 100.0), "line", False, None, identifier="0001") + pen.addPoint((50.0, 75.0), None, False, None, identifier="0002") + pen.addPoint((60.0, 50.0), None, False, None, identifier="0003") + pen.addPoint((50.0, 0.0), "curve", True, "last", identifier="0004") + pen.endPath() + class RecordingPenTest(object): - def test_addComponent(self): pen = RecordingPen() pen.addComponent("a", (2, 0, 0, 3, -10, 5)) @@ -21,18 +31,42 @@ class RecordingPenTest(object): class DecomposingRecordingPenTest(object): - def test_addComponent_decomposed(self): pen = DecomposingRecordingPen({"a": _TestGlyph()}) pen.addComponent("a", (2, 0, 0, 3, -10, 5)) assert pen.value == [ - ('moveTo', ((-10.0, 5.0),)), - ('lineTo', ((-10.0, 305.0),)), - ('curveTo', ((90.0, 230.0), (110.0, 155.0), (90.0, 5.0),)), - ('closePath', ())] + ("moveTo", ((-10.0, 5.0),)), + ("lineTo", ((-10.0, 305.0),)), + ("curveTo", ((90.0, 230.0), (110.0, 155.0), (90.0, 5.0))), + ("closePath", ()), + ] def test_addComponent_missing_raises(self): pen = DecomposingRecordingPen(dict()) with pytest.raises(KeyError) as excinfo: pen.addComponent("a", (1, 0, 0, 1, 0, 0)) assert excinfo.value.args[0] == "a" + + +class RecordingPointPenTest: + def test_record_and_replay(self): + pen = RecordingPointPen() + glyph = _TestGlyph() + glyph.drawPoints(pen) + pen.addComponent("a", (2, 0, 0, 2, -10, 5)) + + assert pen.value == [ + ("beginPath", (), {"identifier": "abc"}), + ("addPoint", ((0.0, 0.0), "line", False, "start"), {"identifier": "0000"}), + ("addPoint", ((0.0, 100.0), "line", False, None), {"identifier": "0001"}), + ("addPoint", ((50.0, 75.0), None, False, None), {"identifier": "0002"}), + ("addPoint", ((60.0, 50.0), None, False, None), {"identifier": "0003"}), + ("addPoint", ((50.0, 0.0), "curve", True, "last"), {"identifier": "0004"}), + ("endPath", (), {}), + ("addComponent", ("a", (2, 0, 0, 2, -10, 5)), {}), + ] + + pen2 = RecordingPointPen() + pen.replay(pen2) + + assert pen2.value == pen.value