status: use generators instead of list comprehensions
[git-cola.git] / test / textwrap_test.py
blob16d372712d47a4d3ed2ec6fa8195ab6f15111a5d
1 #!/usr/bin/env python
3 from __future__ import absolute_import, division, unicode_literals
5 import unittest
6 from cola import textwrap
9 class WordWrapTestCase(unittest.TestCase):
10 def setUp(self):
11 self.tabwidth = 8
12 self.limit = None
14 def wrap(self, text, break_on_hyphens=True):
15 return textwrap.word_wrap(
16 text, self.tabwidth, self.limit, break_on_hyphens=break_on_hyphens
19 def test_word_wrap(self):
20 self.limit = 16
21 text = """
22 12345678901 3 56 8 01 3 5 7
24 1 3 5"""
25 expect = """
26 12345678901 3 56
27 8 01 3 5 7
29 1 3 5"""
30 self.assertEqual(expect, self.wrap(text))
32 def test_word_wrap_dashes(self):
33 self.limit = 4
34 text = '123-5'
35 expect = '123-5'
36 self.assertEqual(expect, self.wrap(text))
38 def test_word_wrap_leading_spaces(self):
39 self.limit = 4
40 expect = '1234\n5'
42 self.assertEqual(expect, self.wrap('1234 5'))
43 self.assertEqual(expect, self.wrap('1234 5'))
44 self.assertEqual(expect, self.wrap('1234 5'))
45 self.assertEqual(expect, self.wrap('1234 5'))
46 self.assertEqual(expect, self.wrap('1234 5'))
48 expect = '123\n4'
49 self.assertEqual(expect, self.wrap('123 4'))
50 self.assertEqual(expect, self.wrap('123 4'))
51 self.assertEqual(expect, self.wrap('123 4'))
52 self.assertEqual(expect, self.wrap('123 4'))
53 self.assertEqual(expect, self.wrap('123 4'))
55 def test_word_wrap_double_dashes(self):
56 self.limit = 4
57 text = '12--5'
58 expect = '12--\n5'
59 self.assertEqual(expect, self.wrap(text, break_on_hyphens=True))
61 expect = '12--5'
62 self.assertEqual(expect, self.wrap(text, break_on_hyphens=False))
64 def test_word_wrap_many_lines(self):
65 self.limit = 2
66 text = """
70 bb cc dd"""
71 expect = """
77 dd"""
78 self.assertEqual(expect, self.wrap(text))
80 def test_word_python_code(self):
81 self.limit = 78
82 text = """
83 if True:
84 print "hello world"
85 else:
86 print "hello world"
88 """
89 self.assertEqual(text, self.wrap(text))
91 def test_word_wrap_spaces(self):
92 self.limit = 2
93 text = ' ' * 6
94 self.assertEqual('', self.wrap(text))
96 def test_word_wrap_special_tag(self):
97 self.limit = 2
98 text = """
99 This test is so meta, even this sentence
101 Cheered-on-by: Avoids word-wrap
102 C.f. This also avoids word-wrap
103 References: This also avoids word-wrap
104 See-also: This also avoids word-wrap
105 Related-to: This also avoids word-wrap
106 Link: This also avoids word-wrap
109 expect = """
110 This
111 test
114 meta,
115 even
116 this
117 sentence
119 Cheered-on-by: Avoids word-wrap
120 C.f. This also avoids word-wrap
121 References: This also avoids word-wrap
122 See-also: This also avoids word-wrap
123 Related-to: This also avoids word-wrap
124 Link: This also avoids word-wrap
127 self.assertEqual(self.wrap(text), expect)
129 def test_word_wrap_space_at_start_of_wrap(self):
130 inputs = """0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 """
131 expect = """0 1 2 3 4 5 6 7 8 9\n0 1 2 3 4 5 6 7 8"""
132 self.limit = 20
133 actual = self.wrap(inputs)
134 self.assertEqual(expect, actual)
136 def test_word_wrap_keeps_tabs_at_start(self):
137 inputs = """\tfirst line\n\n\tsecond line"""
138 expect = """\tfirst line\n\n\tsecond line"""
139 self.limit = 20
140 actual = self.wrap(inputs)
141 self.assertEqual(expect, actual)
143 def test_word_wrap_keeps_twospace_indents(self):
144 inputs = """first line\n\n* branch:\n line1\n line2\n"""
145 expect = """first line\n\n* branch:\n line1\n line2\n"""
146 self.limit = 20
147 actual = self.wrap(inputs)
148 self.assertEqual(expect, actual)
150 def test_word_wrap_ranges(self):
151 text = 'a bb ccc dddd\neeeee'
152 expect = 'a\nbb\nccc\ndddd\neeeee'
153 actual = textwrap.word_wrap(text, 8, 2)
154 self.assertEqual(expect, actual)
156 expect = 'a bb\nccc\ndddd\neeeee'
157 actual = textwrap.word_wrap(text, 8, 4)
158 self.assertEqual(expect, actual)
160 text = 'a bb ccc dddd\n\teeeee'
161 expect = 'a bb\nccc\ndddd\n\t\neeeee'
162 actual = textwrap.word_wrap(text, 8, 4)
163 self.assertEqual(expect, actual)
165 def test_triplets(self):
166 text = 'xx0 xx1 xx2 xx3 xx4 xx5 xx6 xx7 xx8 xx9 xxa xxb'
168 expect = 'xx0 xx1 xx2 xx3 xx4 xx5 xx6\nxx7 xx8 xx9 xxa xxb'
169 actual = textwrap.word_wrap(text, 8, 27)
170 self.assertEqual(expect, actual)
172 expect = 'xx0 xx1 xx2 xx3 xx4 xx5\nxx6 xx7 xx8 xx9 xxa xxb'
173 actual = textwrap.word_wrap(text, 8, 26)
174 self.assertEqual(expect, actual)
176 actual = textwrap.word_wrap(text, 8, 25)
177 self.assertEqual(expect, actual)
179 actual = textwrap.word_wrap(text, 8, 24)
180 self.assertEqual(expect, actual)
182 actual = textwrap.word_wrap(text, 8, 23)
183 self.assertEqual(expect, actual)
185 expect = 'xx0 xx1 xx2 xx3 xx4\nxx5 xx6 xx7 xx8 xx9\nxxa xxb'
186 actual = textwrap.word_wrap(text, 8, 22)
187 self.assertEqual(expect, actual)
190 if __name__ == '__main__':
191 unittest.main()