1 """Test the textwrap module"""
4 from cola
import textwrap
7 class WordWrapDefaults
:
12 def wrap(self
, text
, break_on_hyphens
=True):
13 return textwrap
.word_wrap(
14 text
, self
.tabwidth
, self
.limit
, break_on_hyphens
=break_on_hyphens
20 """Provide default word wrap options for tests"""
21 return WordWrapDefaults()
24 def test_word_wrap(wordwrap
):
27 12345678901 3 56 8 01 3 5 7
35 assert expect
== wordwrap
.wrap(text
)
38 def test_word_wrap_dashes(wordwrap
):
42 assert expect
== wordwrap
.wrap(text
)
45 def test_word_wrap_leading_spaces(wordwrap
):
49 assert expect
== wordwrap
.wrap('1234 5')
50 assert expect
== wordwrap
.wrap('1234 5')
51 assert expect
== wordwrap
.wrap('1234 5')
52 assert expect
== wordwrap
.wrap('1234 5')
53 assert expect
== wordwrap
.wrap('1234 5')
56 assert expect
== wordwrap
.wrap('123 4')
57 assert expect
== wordwrap
.wrap('123 4')
58 assert expect
== wordwrap
.wrap('123 4')
59 assert expect
== wordwrap
.wrap('123 4')
60 assert expect
== wordwrap
.wrap('123 4')
63 def test_word_wrap_double_dashes(wordwrap
):
67 actual
= wordwrap
.wrap(text
, break_on_hyphens
=True)
68 assert expect
== actual
71 actual
= wordwrap
.wrap(text
, break_on_hyphens
=False)
72 assert expect
== actual
75 def test_word_wrap_many_lines(wordwrap
):
90 actual
= wordwrap
.wrap(text
)
91 assert expect
== actual
94 def test_word_python_code(wordwrap
):
104 actual
= wordwrap
.wrap(text
)
105 assert expect
== actual
108 def test_word_wrap_spaces(wordwrap
):
112 actual
= wordwrap
.wrap(text
)
113 assert expect
== actual
116 def test_word_wrap_special_tag(wordwrap
):
119 This test is so meta, even this sentence
121 Cheered-on-by: Avoids word-wrap
122 C.f. This also avoids word-wrap
123 References: This also avoids word-wrap
124 See-also: This also avoids word-wrap
125 Related-to: This also avoids word-wrap
126 Link: This also avoids word-wrap
139 Cheered-on-by: Avoids word-wrap
140 C.f. This also avoids word-wrap
141 References: This also avoids word-wrap
142 See-also: This also avoids word-wrap
143 Related-to: This also avoids word-wrap
144 Link: This also avoids word-wrap
146 actual
= wordwrap
.wrap(text
)
147 assert expect
== actual
150 def test_word_wrap_space_at_start_of_wrap(wordwrap
):
151 inputs
= """0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 """
152 expect
= """0 1 2 3 4 5 6 7 8 9\n0 1 2 3 4 5 6 7 8"""
155 actual
= wordwrap
.wrap(inputs
)
156 assert expect
== actual
159 def test_word_wrap_keeps_tabs_at_start(wordwrap
):
160 inputs
= """\tfirst line\n\n\tsecond line"""
161 expect
= """\tfirst line\n\n\tsecond line"""
164 actual
= wordwrap
.wrap(inputs
)
165 assert expect
== actual
168 def test_word_wrap_keeps_twospace_indents(wordwrap
):
169 inputs
= """first line\n\n* branch:\n line1\n line2\n"""
170 expect
= """first line\n\n* branch:\n line1\n line2\n"""
173 actual
= wordwrap
.wrap(inputs
)
174 assert expect
== actual
177 def test_word_wrap_ranges():
178 text
= 'a bb ccc dddd\neeeee'
179 expect
= 'a\nbb\nccc\ndddd\neeeee'
180 actual
= textwrap
.word_wrap(text
, 8, 2)
181 assert expect
== actual
183 expect
= 'a bb\nccc\ndddd\neeeee'
184 actual
= textwrap
.word_wrap(text
, 8, 4)
185 assert expect
== actual
187 text
= 'a bb ccc dddd\n\teeeee'
188 expect
= 'a bb\nccc\ndddd\n\t\neeeee'
189 actual
= textwrap
.word_wrap(text
, 8, 4)
190 assert expect
== actual
194 text
= 'xx0 xx1 xx2 xx3 xx4 xx5 xx6 xx7 xx8 xx9 xxa xxb'
196 expect
= 'xx0 xx1 xx2 xx3 xx4 xx5 xx6\nxx7 xx8 xx9 xxa xxb'
197 actual
= textwrap
.word_wrap(text
, 8, 27)
198 assert expect
== actual
200 expect
= 'xx0 xx1 xx2 xx3 xx4 xx5\nxx6 xx7 xx8 xx9 xxa xxb'
201 actual
= textwrap
.word_wrap(text
, 8, 26)
202 assert expect
== actual
204 actual
= textwrap
.word_wrap(text
, 8, 25)
205 assert expect
== actual
207 actual
= textwrap
.word_wrap(text
, 8, 24)
208 assert expect
== actual
210 actual
= textwrap
.word_wrap(text
, 8, 23)
211 assert expect
== actual
213 expect
= 'xx0 xx1 xx2 xx3 xx4\nxx5 xx6 xx7 xx8 xx9\nxxa xxb'
214 actual
= textwrap
.word_wrap(text
, 8, 22)
215 assert expect
== actual