add tests for RecordingPointPen
This commit is contained in:
parent
b885a852ed
commit
ae5212f76b
@ -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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user