[Arc] Error out on zero radius
This commit is contained in:
parent
f1e25debec
commit
2176d56b4c
2 changed files with 15 additions and 6 deletions
|
|
@ -54,8 +54,8 @@ class Arc(PositionableImpl, Shape):
|
||||||
val = numpy.array(val, dtype=float).flatten()
|
val = numpy.array(val, dtype=float).flatten()
|
||||||
if not val.size == 2:
|
if not val.size == 2:
|
||||||
raise PatternError('Radii must have length 2')
|
raise PatternError('Radii must have length 2')
|
||||||
if not val.min() >= 0:
|
if not val.min() > 0:
|
||||||
raise PatternError('Radii must be non-negative')
|
raise PatternError('Radii must be positive')
|
||||||
self._radii = val
|
self._radii = val
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
|
@ -64,8 +64,8 @@ class Arc(PositionableImpl, Shape):
|
||||||
|
|
||||||
@radius_x.setter
|
@radius_x.setter
|
||||||
def radius_x(self, val: float) -> None:
|
def radius_x(self, val: float) -> None:
|
||||||
if not val >= 0:
|
if not val > 0:
|
||||||
raise PatternError('Radius must be non-negative')
|
raise PatternError('Radius must be positive')
|
||||||
self._radii[0] = val
|
self._radii[0] = val
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
|
@ -74,8 +74,8 @@ class Arc(PositionableImpl, Shape):
|
||||||
|
|
||||||
@radius_y.setter
|
@radius_y.setter
|
||||||
def radius_y(self, val: float) -> None:
|
def radius_y(self, val: float) -> None:
|
||||||
if not val >= 0:
|
if not val > 0:
|
||||||
raise PatternError('Radius must be non-negative')
|
raise PatternError('Radius must be positive')
|
||||||
self._radii[1] = val
|
self._radii[1] = val
|
||||||
|
|
||||||
# arc start/stop angle properties
|
# arc start/stop angle properties
|
||||||
|
|
|
||||||
|
|
@ -128,6 +128,15 @@ def test_ellipse_integer_radii_scale_cleanly() -> None:
|
||||||
assert_allclose(ellipse.radii, [5, 10])
|
assert_allclose(ellipse.radii, [5, 10])
|
||||||
|
|
||||||
|
|
||||||
|
def test_arc_rejects_zero_radii_up_front() -> None:
|
||||||
|
with pytest.raises(PatternError, match='Radii must be positive'):
|
||||||
|
Arc(radii=(0, 5), angles=(0, 1), width=1)
|
||||||
|
with pytest.raises(PatternError, match='Radii must be positive'):
|
||||||
|
Arc(radii=(5, 0), angles=(0, 1), width=1)
|
||||||
|
with pytest.raises(PatternError, match='Radii must be positive'):
|
||||||
|
Arc(radii=(0, 0), angles=(0, 1), width=1)
|
||||||
|
|
||||||
|
|
||||||
def test_path_edge_cases() -> None:
|
def test_path_edge_cases() -> None:
|
||||||
# Zero-length segments
|
# Zero-length segments
|
||||||
p = MPath(vertices=[[0, 0], [0, 0], [10, 0]], width=2)
|
p = MPath(vertices=[[0, 0], [0, 0], [10, 0]], width=2)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue