-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathjustify_test.py
executable file
·174 lines (163 loc) · 11.2 KB
/
justify_test.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
import justify
def test_is_blank():
tests_1 = [
'',
'\n',
' ' * 4,
' ' * 8,
'\t',
'\t' * 2,
'\t' * 2 + ' ' * 2,
]
tests_2 = [
'Hello',
' World',
'\t\t\t\t\t\t!',
]
for test in tests_1:
assert justify.is_blank(test)
for test in tests_2:
assert not justify.is_blank(test)
def test_is_start_of_list_item():
tests_1 = [
'- test test test test.'
'* test test test test.'
'5. test test test test.'
'5) test test test test.'
'15. test test test test.'
'15) test test test test.'
'[2] test test test test.'
'[12] test test test test.'
'\\item Test test test.',
]
tests_2 = [
'-test test test test.'
'-- test test test test.'
'** test test test test.'
'5 test test test test.'
'5.test test test test.'
'5)test test test test.'
'15 test test test test.'
'15.test test test test.'
'15)test test test test.'
'20] test test test test.'
'[20 test test test test.'
'[20]test test test test.'
]
for test in tests_1:
assert justify.is_start_of_list_item(test)
for test in tests_2:
assert not justify.is_start_of_list_item(test)
def test_is_latex_command():
tests_1 = [
'\\section{Chapter 1}',
'\\begin{center}',
'\\includegraphics{image.png}',
'\\includegraphics[width=1]{image.png}',
'\\end{center}',
]
tests_2 = [
'begin{center}',
'\\textbf{Python}: a programming language',
'end{center}',
]
for test in tests_1:
assert justify.is_latex_command(test)
for test in tests_2:
assert not justify.is_latex_command(test)
def test_text2blocks():
tests = [
'\nA quo autem hic quis id neque. Dolor numquam non iure.\nQuod ipsum officia ad repudiandae est id.\n\nEveniet dolores quis debitis. Deserunt quod tempora rerum ea hic cum.\nEst aperiam velit corrupti.\nLaudantium et laboriosam placeat quia consequatur perspiciatis id molestias.\n\nBlanditiis magnam consequatur aperiam rerum rerum.\nVoluptas cumque rerum et molestias quos at quis.',
'A quo autem hic quis id neque. Dolor numquam non iure.\n\n\n\nBlanditiis magnam consequatur aperiam rerum rerum.\nVoluptas cumque rerum et molestias quos at quis.\n',
]
expected = [
[
'',
'A quo autem hic quis id neque. Dolor numquam non iure.\nQuod ipsum officia ad repudiandae est id.',
'',
'Eveniet dolores quis debitis. Deserunt quod tempora rerum ea hic cum.\nEst aperiam velit corrupti.\nLaudantium et laboriosam placeat quia consequatur perspiciatis id molestias.',
'',
'Blanditiis magnam consequatur aperiam rerum rerum.\nVoluptas cumque rerum et molestias quos at quis.',
],
[
"A quo autem hic quis id neque. Dolor numquam non iure.",
'', '', '',
"Blanditiis magnam consequatur aperiam rerum rerum.\nVoluptas cumque rerum et molestias quos at quis.",
],
]
for i in range(0, len(tests)):
blocks = justify.text2blocks(tests[i])
assert len(blocks) == len(expected[i])
assert blocks == expected[i]
def test_detect_multiline_prefix():
tests = [
'# Lorem upsum\n# Quae voluptatum earum sapiente unde ab corporis ducimus iure. Debitis\n# voluptatibus id incidunt incidunt doloremque. Est ut laborum dolorum voluptas\n# reiciendis velit itaque voluptatibus. Tempora repellendus iure qui natus rerum',
'# Quae voluptatum earum sapiente unde ab corporis ducimus iure. Debitis\n# voluptatibus id incidunt incidunt doloremque. Est ut laborum dolorum voluptas\n#\n#\n# reiciendis velit itaque voluptatibus. Tempora repellendus iure qui natus rerum\n# reiciendis',
'\t\t\tHello\n\t\t\tQuae voluptatum earum sapiente unde ab corporis ducimus iure. Debitis\n\t\t\tvoluptatibus id incidunt incidunt doloremque. Est ut laborum dolorum voluptas\n',
' Lorem upsum\n Quae voluptatum earum sapiente unde ab corporis ducimus iure. Debitis\n voluptatibus id incidunt incidunt doloremque. Est ut laborum dolorum voluptas\n',
' // LOREM UPSUM\n //\n // Tempora repellendus iure qui natus rerum\n // voluptatibus id incidunt incidunt doloremque.\n // Est ut laborum dolorum voluptas\n //\n //\n // Quae voluptatum earum sapiente unde ab corporis ducimus iure. Debitis',
]
expected = [
"# ", "#", "\t\t\t", " ", " //"
]
for i in range(0, len(tests)):
assert expected[i] == justify.detect_multiline_prefix(tests[i])
def test_remove_multiline_prefix():
original = "Magnam rerum ea cupiditate pariatur ipsam.\nEst sed sed suscipit et error maxime qui non.\nEt iure sequi nihil enim dolorum.\nConsequatur similique quam culpa et."
tests = [
"# Magnam rerum ea cupiditate pariatur ipsam.\n# Est sed sed suscipit et error maxime qui non.\n# Et iure sequi nihil enim dolorum.\n# Consequatur similique quam culpa et.",
" Magnam rerum ea cupiditate pariatur ipsam.\n Est sed sed suscipit et error maxime qui non.\n Et iure sequi nihil enim dolorum.\n Consequatur similique quam culpa et.",
"// Magnam rerum ea cupiditate pariatur ipsam.\n// Est sed sed suscipit et error maxime qui non.\n// Et iure sequi nihil enim dolorum.\n// Consequatur similique quam culpa et.",
]
for test in tests:
prefix = justify.detect_multiline_prefix(test)
result = justify.remove_multiline_prefix(test, prefix)
assert result == original
def test_prepend_multineline_prefix():
original = "Magnam rerum ea cupiditate pariatur ipsam.\nEst sed sed suscipit et error maxime qui non.\nEt iure sequi nihil enim dolorum.\nConsequatur similique quam culpa et."
tests = ["# ", " ", "// " ]
expected = [
"# Magnam rerum ea cupiditate pariatur ipsam.\n# Est sed sed suscipit et error maxime qui non.\n# Et iure sequi nihil enim dolorum.\n# Consequatur similique quam culpa et.",
" Magnam rerum ea cupiditate pariatur ipsam.\n Est sed sed suscipit et error maxime qui non.\n Et iure sequi nihil enim dolorum.\n Consequatur similique quam culpa et.",
"// Magnam rerum ea cupiditate pariatur ipsam.\n// Est sed sed suscipit et error maxime qui non.\n// Et iure sequi nihil enim dolorum.\n// Consequatur similique quam culpa et.",
]
for i in range(0, len(tests)):
prefix = tests[i]
result = justify.prepend_multiline_prefix(original, prefix)
assert expected[i] == result
def test_justify_block():
text = "Labore ex id et laborum itaque. Nihil aspernatur aut officiis quos eveniet ex est. Quis mollitia voluptate optio. Nisi laboriosam nam animi et accusamus. Voluptatem explicabo qui facilis voluptate ut. Ut et dolores quas omnis. Et aut repellendus omnis facilis. Aliquam et rerum placeat quis deleniti saepe sed. Fugiat inventore sapiente nihil cupiditate dolores quia fuga velit. Veniam dolore porro aut ratione sed quis. Debitis voluptatem soluta eius delectus eum sint. Atque illo quae provident rem minus."
sizes = [50, 80, 120]
expected = [
"Labore ex id et laborum itaque. Nihil aspernatur\naut officiis quos eveniet ex est. Quis mollitia\nvoluptate optio. Nisi laboriosam nam animi et\naccusamus. Voluptatem explicabo qui facilis\nvoluptate ut. Ut et dolores quas omnis. Et aut\nrepellendus omnis facilis. Aliquam et rerum\nplaceat quis deleniti saepe sed. Fugiat inventore\nsapiente nihil cupiditate dolores quia fuga velit.\nVeniam dolore porro aut ratione sed quis. Debitis\nvoluptatem soluta eius delectus eum sint. Atque\nillo quae provident rem minus.",
"Labore ex id et laborum itaque. Nihil aspernatur aut officiis quos eveniet ex\nest. Quis mollitia voluptate optio. Nisi laboriosam nam animi et accusamus.\nVoluptatem explicabo qui facilis voluptate ut. Ut et dolores quas omnis. Et aut\nrepellendus omnis facilis. Aliquam et rerum placeat quis deleniti saepe sed.\nFugiat inventore sapiente nihil cupiditate dolores quia fuga velit. Veniam\ndolore porro aut ratione sed quis. Debitis voluptatem soluta eius delectus eum\nsint. Atque illo quae provident rem minus.",
"Labore ex id et laborum itaque. Nihil aspernatur aut officiis quos eveniet ex est. Quis mollitia voluptate optio. Nisi\nlaboriosam nam animi et accusamus. Voluptatem explicabo qui facilis voluptate ut. Ut et dolores quas omnis. Et aut\nrepellendus omnis facilis. Aliquam et rerum placeat quis deleniti saepe sed. Fugiat inventore sapiente nihil cupiditate\ndolores quia fuga velit. Veniam dolore porro aut ratione sed quis. Debitis voluptatem soluta eius delectus eum sint.\nAtque illo quae provident rem minus."
]
l = len(sizes)
for i in range(0, l):
n = sizes[i]
result = justify.justify_block(text, n)
assert result == expected[i]
def test_justify_list_item():
original = "Est incidunt perferendis sed beatae sint provident culpa. Ducimus ea nemo animi ea et et et. Cumque eos quidem in quia velit vel rerum. Repellendus possimus provident qui veritatis magnam totam."
bullets = ["- ", "* ", "\\item ", "1. ", "1) ", "12. ", "12) "]
expected = [
"- Est incidunt perferendis sed beatae sint provident culpa. Ducimus ea nemo\n animi ea et et et. Cumque eos quidem in quia velit vel rerum. Repellendus\n possimus provident qui veritatis magnam totam.",
"* Est incidunt perferendis sed beatae sint provident culpa. Ducimus ea nemo\n animi ea et et et. Cumque eos quidem in quia velit vel rerum. Repellendus\n possimus provident qui veritatis magnam totam.",
"\\item Est incidunt perferendis sed beatae sint provident culpa. Ducimus ea nemo\n animi ea et et et. Cumque eos quidem in quia velit vel rerum. Repellendus\n possimus provident qui veritatis magnam totam.",
"1. Est incidunt perferendis sed beatae sint provident culpa. Ducimus ea nemo\n animi ea et et et. Cumque eos quidem in quia velit vel rerum. Repellendus\n possimus provident qui veritatis magnam totam.",
"1) Est incidunt perferendis sed beatae sint provident culpa. Ducimus ea nemo\n animi ea et et et. Cumque eos quidem in quia velit vel rerum. Repellendus\n possimus provident qui veritatis magnam totam.",
"12. Est incidunt perferendis sed beatae sint provident culpa. Ducimus ea nemo\n animi ea et et et. Cumque eos quidem in quia velit vel rerum. Repellendus\n possimus provident qui veritatis magnam totam.",
"12) Est incidunt perferendis sed beatae sint provident culpa. Ducimus ea nemo\n animi ea et et et. Cumque eos quidem in quia velit vel rerum. Repellendus\n possimus provident qui veritatis magnam totam.",
]
for i in range(0, len(bullets)):
item = bullets[i] + original
result = justify.justify_list_item(item, 80)
assert result == expected[i]
def test_justify():
with open('A.txt', 'r') as f:
text = f.read()
with open('B.txt', 'r') as f:
expected = f.read()
result = justify.justify(text)
assert result == expected