summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--wasp/boards/simulator/test_unit.py13
-rw-r--r--wasp/draw565.py7
2 files changed, 17 insertions, 3 deletions
diff --git a/wasp/boards/simulator/test_unit.py b/wasp/boards/simulator/test_unit.py
index f292c9a..4e52322 100644
--- a/wasp/boards/simulator/test_unit.py
+++ b/wasp/boards/simulator/test_unit.py
@@ -57,3 +57,16 @@ def test_font_width(draw):
if f.max_ch() >= 90:
assert draw.bounding_box('IIII')[0] < draw.bounding_box('WWWW')[0]
+
+@pytest.mark.parametrize("input,expected", (
+ ('abc', [0, 3]),
+ ('one.two', [0, 7]),
+ ('one two', [0, 7]),
+ ('one two three', [0, 13]),
+ ('abcdefghijklmnopqrstuvwxyz', [0, 17, 26]),
+ ('abcdefghijklm nopqrstuvwxyz', [0, 14, 27]),
+ ('abcde fghij klmno pqrst uvwxyz', [0, 18, 30]),
+
+))
+def test_wrap(draw, input, expected):
+ assert draw.wrap(input, 240) == expected
diff --git a/wasp/draw565.py b/wasp/draw565.py
index 50f5547..c6982ff 100644
--- a/wasp/draw565.py
+++ b/wasp/draw565.py
@@ -366,12 +366,15 @@ class Draw565(object):
l = 0
for i in range(start, max+1):
- if i >= len(s):
+ if i >= max:
+ end = i
break
ch = s[i]
(_, h, w) = font.get_ch(ch)
l += w + 1
if l > width:
+ if end <= start:
+ end = i
break
# Break the line immediately if requested
@@ -382,8 +385,6 @@ class Draw565(object):
# Remember the right-most place we can cleanly break the line
if ch == ' ':
end = i+1
- if end <= start:
- end = i
chunks.append(end)
return chunks