Source for: test_fill_row.py [raw]
1import pytest
2
3import boxes
4
5
6def test_fill_row():
7 letters = [boxes.Box(letter="x", x=i, w=1) for i in range(100)]
8 letters[90].letter = " "
9 page = boxes.Box(x=0, y=0, w=30, h=30)
10 row = boxes.fill_row(letters, page, 0)
11 assert len(row) == 91
12 assert len(letters) == 9
13 assert row[-1].letter == " "
14
15
16def test_fill_row_with_breaking_chars():
17 letters = [boxes.Box(letter=" ", x=i, w=1) for i in range(100)]
18 page = boxes.Box(x=0, y=0, w=30, h=30)
19 row = boxes.fill_row(letters, page, 0)
20 assert len(row) == 31
21 assert len(letters) == 69
22
23
24def test_fill_row_with_a_newline():
25 letters = [boxes.Box(letter="x", x=i, w=1) for i in range(100)]
26 letters[90].letter = "\n"
27 page = boxes.Box(x=0, y=0, w=30, h=30)
28 row = boxes.fill_row(letters, page, 0)
29 assert len(row) == 91
30 assert len(letters) == 9
31 assert row[-1].letter == "\n"
32
33
34def test_fill_row_backtrack():
35 letters = [boxes.Box(letter="x", x=i, w=1) for i in range(100)]
36 for x in (5, 25, 40):
37 letters[x].letter = " "
38 letters[x].stretchy = True
39 page = boxes.Box(x=0, y=0, w=30, h=30)
40 row = boxes.fill_row(letters, page, 0)
41
42 # Because of backtracking, it breaks underfull
43 assert len(row) == 26
44 assert len(letters) == 74
45 assert row[-1].letter == " "
46