[shapes] move to per-shape purpose-built _from_raw constructors
This commit is contained in:
parent
85aed4388e
commit
e009417eed
11 changed files with 290 additions and 141 deletions
97
masque/test/test_raw_constructors.py
Normal file
97
masque/test/test_raw_constructors.py
Normal file
|
|
@ -0,0 +1,97 @@
|
|||
import numpy
|
||||
from numpy import pi
|
||||
from numpy.testing import assert_allclose
|
||||
|
||||
from ..shapes import Arc, Circle, Ellipse, Path, Text
|
||||
|
||||
|
||||
def test_circle_raw_constructor_matches_public() -> None:
|
||||
raw = Circle._from_raw(
|
||||
radius=5.0,
|
||||
offset=numpy.array([1.0, 2.0]),
|
||||
annotations={'1': ['circle']},
|
||||
)
|
||||
public = Circle(
|
||||
radius=5.0,
|
||||
offset=(1.0, 2.0),
|
||||
annotations={'1': ['circle']},
|
||||
)
|
||||
assert raw == public
|
||||
|
||||
|
||||
def test_ellipse_raw_constructor_matches_public() -> None:
|
||||
raw = Ellipse._from_raw(
|
||||
radii=numpy.array([3.0, 5.0]),
|
||||
offset=numpy.array([1.0, 2.0]),
|
||||
rotation=5 * pi / 2,
|
||||
annotations={'2': ['ellipse']},
|
||||
)
|
||||
public = Ellipse(
|
||||
radii=(3.0, 5.0),
|
||||
offset=(1.0, 2.0),
|
||||
rotation=5 * pi / 2,
|
||||
annotations={'2': ['ellipse']},
|
||||
)
|
||||
assert raw == public
|
||||
|
||||
|
||||
def test_arc_raw_constructor_matches_public() -> None:
|
||||
raw = Arc._from_raw(
|
||||
radii=numpy.array([10.0, 6.0]),
|
||||
angles=numpy.array([0.0, pi / 2]),
|
||||
width=2.0,
|
||||
offset=numpy.array([1.0, 2.0]),
|
||||
rotation=5 * pi / 2,
|
||||
annotations={'3': ['arc']},
|
||||
)
|
||||
public = Arc(
|
||||
radii=(10.0, 6.0),
|
||||
angles=(0.0, pi / 2),
|
||||
width=2.0,
|
||||
offset=(1.0, 2.0),
|
||||
rotation=5 * pi / 2,
|
||||
annotations={'3': ['arc']},
|
||||
)
|
||||
assert raw == public
|
||||
|
||||
|
||||
def test_path_raw_constructor_matches_public() -> None:
|
||||
raw = Path._from_raw(
|
||||
vertices=numpy.array([[0.0, 0.0], [10.0, 0.0], [10.0, 5.0]]),
|
||||
width=2.0,
|
||||
cap=Path.Cap.SquareCustom,
|
||||
cap_extensions=numpy.array([1.0, 3.0]),
|
||||
annotations={'4': ['path']},
|
||||
)
|
||||
public = Path(
|
||||
vertices=((0.0, 0.0), (10.0, 0.0), (10.0, 5.0)),
|
||||
width=2.0,
|
||||
cap=Path.Cap.SquareCustom,
|
||||
cap_extensions=(1.0, 3.0),
|
||||
annotations={'4': ['path']},
|
||||
)
|
||||
assert raw == public
|
||||
assert raw.cap_extensions is not None
|
||||
assert_allclose(raw.cap_extensions, [1.0, 3.0])
|
||||
|
||||
|
||||
def test_text_raw_constructor_matches_public() -> None:
|
||||
raw = Text._from_raw(
|
||||
string='RAW',
|
||||
height=12.0,
|
||||
font_path='font.otf',
|
||||
offset=numpy.array([1.0, 2.0]),
|
||||
rotation=5 * pi / 2,
|
||||
mirrored=True,
|
||||
annotations={'5': ['text']},
|
||||
)
|
||||
public = Text(
|
||||
string='RAW',
|
||||
height=12.0,
|
||||
font_path='font.otf',
|
||||
offset=(1.0, 2.0),
|
||||
rotation=5 * pi / 2,
|
||||
mirrored=True,
|
||||
annotations={'5': ['text']},
|
||||
)
|
||||
assert raw == public
|
||||
Loading…
Add table
Add a link
Reference in a new issue