Skip to content

Commit 8dc913d

Browse files
Sanity check dash arguments (#910)
* Sanity check dash arguments. Fixes #909. * Fix dash sanity test.
1 parent b16acf6 commit 8dc913d

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

kiva/celiagg.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -280,6 +280,15 @@ def set_line_dash(self, lengths, phase=0):
280280
"""
281281
if lengths is not None:
282282
count = len(lengths)
283+
if count % 2 == 1:
284+
raise ValueError(
285+
"Array of lengths should have an even number of values, "
286+
f"got {lengths!r}"
287+
)
288+
if any(length <= 0 for length in lengths):
289+
raise ValueError(
290+
f"All length values should be positive, got {lengths!r}"
291+
)
283292
lengths = np.array(lengths).reshape(count // 2, 2)
284293
else:
285294
lengths = []

kiva/tests/test_celiagg_drawing.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515

1616
class TestCeliaggDrawing(DrawingImageTester, unittest.TestCase):
17+
1718
def create_graphics_context(self, width, height, pixel_scale):
1819
return GraphicsContext((width, height), base_pixel_scale=pixel_scale)
1920

@@ -37,3 +38,12 @@ def test_ipython_repr_png(self):
3738
with open(filename, 'wb') as fp:
3839
fp.write(stream)
3940
self.assertImageSavedWithContent(filename)
41+
42+
def test_set_line_dash_odd(self):
43+
with self.assertRaises(ValueError):
44+
self.gc.set_line_dash([1.0, 2.0, 3.0])
45+
46+
def test_set_line_dash_positive(self):
47+
# regression test for #909
48+
with self.assertRaises(ValueError):
49+
self.gc.set_line_dash([0.0, 0.0])

0 commit comments

Comments
 (0)