add tests for RecordingPointPen

This commit is contained in:
Cosimo Lupo 2019-11-28 15:32:55 +00:00
parent b885a852ed
commit ae5212f76b
No known key found for this signature in database
GPG Key ID: 179A8F0895A02F4F

View File

@ -1,19 +1,29 @@
from fontTools.misc.py23 import * from fontTools.pens.recordingPen import (
from fontTools.pens.recordingPen import RecordingPen, DecomposingRecordingPen RecordingPen,
DecomposingRecordingPen,
RecordingPointPen,
)
import pytest import pytest
class _TestGlyph(object): class _TestGlyph(object):
def draw(self, pen): def draw(self, pen):
pen.moveTo((0.0, 0.0)) pen.moveTo((0.0, 0.0))
pen.lineTo((0.0, 100.0)) pen.lineTo((0.0, 100.0))
pen.curveTo((50.0, 75.0), (60.0, 50.0), (50.0, 0.0)) pen.curveTo((50.0, 75.0), (60.0, 50.0), (50.0, 0.0))
pen.closePath() 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): class RecordingPenTest(object):
def test_addComponent(self): def test_addComponent(self):
pen = RecordingPen() pen = RecordingPen()
pen.addComponent("a", (2, 0, 0, 3, -10, 5)) pen.addComponent("a", (2, 0, 0, 3, -10, 5))
@ -21,18 +31,42 @@ class RecordingPenTest(object):
class DecomposingRecordingPenTest(object): class DecomposingRecordingPenTest(object):
def test_addComponent_decomposed(self): def test_addComponent_decomposed(self):
pen = DecomposingRecordingPen({"a": _TestGlyph()}) pen = DecomposingRecordingPen({"a": _TestGlyph()})
pen.addComponent("a", (2, 0, 0, 3, -10, 5)) pen.addComponent("a", (2, 0, 0, 3, -10, 5))
assert pen.value == [ assert pen.value == [
('moveTo', ((-10.0, 5.0),)), ("moveTo", ((-10.0, 5.0),)),
('lineTo', ((-10.0, 305.0),)), ("lineTo", ((-10.0, 305.0),)),
('curveTo', ((90.0, 230.0), (110.0, 155.0), (90.0, 5.0),)), ("curveTo", ((90.0, 230.0), (110.0, 155.0), (90.0, 5.0))),
('closePath', ())] ("closePath", ()),
]
def test_addComponent_missing_raises(self): def test_addComponent_missing_raises(self):
pen = DecomposingRecordingPen(dict()) pen = DecomposingRecordingPen(dict())
with pytest.raises(KeyError) as excinfo: with pytest.raises(KeyError) as excinfo:
pen.addComponent("a", (1, 0, 0, 1, 0, 0)) pen.addComponent("a", (1, 0, 0, 1, 0, 0))
assert excinfo.value.args[0] == "a" 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