aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Lib/test/test_textwrap.py
diff options
context:
space:
mode:
authorIrit Katriel <iritkatriel@yahoo.com>2020-10-18 18:01:15 +0100
committerGitHub <noreply@github.com>2020-10-18 20:01:15 +0300
commitb81c833ab51fb7d7f0f8eaace37f60ef7455aa85 (patch)
tree8543955715fe59aa8d762a76b159c93e6f40dadc /Lib/test/test_textwrap.py
parent67f04878debbcec60191cddbddf9c83e8b9b36fe (diff)
downloadcpython-b81c833ab51fb7d7f0f8eaace37f60ef7455aa85.tar.gz
cpython-b81c833ab51fb7d7f0f8eaace37f60ef7455aa85.zip
bpo-28660: Make TextWrapper break long words on hyphens (GH-22721)
Diffstat (limited to 'Lib/test/test_textwrap.py')
-rw-r--r--Lib/test/test_textwrap.py72
1 files changed, 72 insertions, 0 deletions
diff --git a/Lib/test/test_textwrap.py b/Lib/test/test_textwrap.py
index ed97f70ba1f..dfbc2b93dfc 100644
--- a/Lib/test/test_textwrap.py
+++ b/Lib/test/test_textwrap.py
@@ -640,6 +640,78 @@ How *do* you spell that odd word, anyways?
max_lines=4)
+class LongWordWithHyphensTestCase(BaseTestCase):
+ def setUp(self):
+ self.wrapper = TextWrapper()
+ self.text1 = '''\
+We used enyzme 2-succinyl-6-hydroxy-2,4-cyclohexadiene-1-carboxylate synthase.
+'''
+ self.text2 = '''\
+1234567890-1234567890--this_is_a_very_long_option_indeed-good-bye"
+'''
+
+ def test_break_long_words_on_hyphen(self):
+ expected = ['We used enyzme 2-succinyl-6-hydroxy-2,4-',
+ 'cyclohexadiene-1-carboxylate synthase.']
+ self.check_wrap(self.text1, 50, expected)
+
+ expected = ['We used', 'enyzme 2-', 'succinyl-', '6-hydroxy-', '2,4-',
+ 'cyclohexad', 'iene-1-', 'carboxylat', 'e', 'synthase.']
+ self.check_wrap(self.text1, 10, expected)
+
+ expected = ['1234567890', '-123456789', '0--this_is', '_a_very_lo',
+ 'ng_option_', 'indeed-', 'good-bye"']
+ self.check_wrap(self.text2, 10, expected)
+
+ def test_break_long_words_not_on_hyphen(self):
+ expected = ['We used enyzme 2-succinyl-6-hydroxy-2,4-cyclohexad',
+ 'iene-1-carboxylate synthase.']
+ self.check_wrap(self.text1, 50, expected, break_on_hyphens=False)
+
+ expected = ['We used', 'enyzme 2-s', 'uccinyl-6-', 'hydroxy-2,',
+ '4-cyclohex', 'adiene-1-c', 'arboxylate', 'synthase.']
+ self.check_wrap(self.text1, 10, expected, break_on_hyphens=False)
+
+ expected = ['1234567890', '-123456789', '0--this_is', '_a_very_lo',
+ 'ng_option_', 'indeed-', 'good-bye"']
+ self.check_wrap(self.text2, 10, expected)
+
+ def test_break_on_hyphen_but_not_long_words(self):
+ expected = ['We used enyzme',
+ '2-succinyl-6-hydroxy-2,4-cyclohexadiene-1-carboxylate',
+ 'synthase.']
+
+ self.check_wrap(self.text1, 50, expected, break_long_words=False)
+
+ expected = ['We used', 'enyzme',
+ '2-succinyl-6-hydroxy-2,4-cyclohexadiene-1-carboxylate',
+ 'synthase.']
+ self.check_wrap(self.text1, 10, expected, break_long_words=False)
+
+ expected = ['1234567890', '-123456789', '0--this_is', '_a_very_lo',
+ 'ng_option_', 'indeed-', 'good-bye"']
+ self.check_wrap(self.text2, 10, expected)
+
+
+ def test_do_not_break_long_words_or_on_hyphens(self):
+ expected = ['We used enyzme',
+ '2-succinyl-6-hydroxy-2,4-cyclohexadiene-1-carboxylate',
+ 'synthase.']
+ self.check_wrap(self.text1, 50, expected,
+ break_long_words=False,
+ break_on_hyphens=False)
+
+ expected = ['We used', 'enyzme',
+ '2-succinyl-6-hydroxy-2,4-cyclohexadiene-1-carboxylate',
+ 'synthase.']
+ self.check_wrap(self.text1, 10, expected,
+ break_long_words=False,
+ break_on_hyphens=False)
+
+ expected = ['1234567890', '-123456789', '0--this_is', '_a_very_lo',
+ 'ng_option_', 'indeed-', 'good-bye"']
+ self.check_wrap(self.text2, 10, expected)
+
class IndentTestCases(BaseTestCase):
# called before each test method