]> granicus.if.org Git - python/commitdiff
SF #847346: merge from release23-maint branch: remove misguided
authorGreg Ward <gward@python.net>
Thu, 13 May 2004 01:53:10 +0000 (01:53 +0000)
committerGreg Ward <gward@python.net>
Thu, 13 May 2004 01:53:10 +0000 (01:53 +0000)
optimization for short input; beef up tests for fix_sentence_endings
feature.

Lib/test/test_textwrap.py
Lib/textwrap.py

index 9b8c58f1b730fe431c78fb22f46dc342c26cafd7..5ff4bcca296084a3e601ae422a976ef4b00d546f 100644 (file)
@@ -47,7 +47,7 @@ class BaseTestCase(unittest.TestCase):
 class WrapTestCase(BaseTestCase):
 
     def setUp(self):
-        self.wrapper = TextWrapper(width=45, fix_sentence_endings=True)
+        self.wrapper = TextWrapper(width=45)
 
     def test_simple(self):
         # Simple case: just words, spaces, and a bit of punctuation
@@ -84,13 +84,51 @@ What a mess!
                   "wrapped.  Some lines are  tabbed too.  What a",
                   "mess!"]
 
-        result = self.wrapper.wrap(text)
+        wrapper = TextWrapper(45, fix_sentence_endings=True)
+        result = wrapper.wrap(text)
         self.check(result, expect)
 
-        result = self.wrapper.fill(text)
+        result = wrapper.fill(text)
         self.check(result, '\n'.join(expect))
 
-
+    def test_fix_sentence_endings(self):
+        wrapper = TextWrapper(60, fix_sentence_endings=True)
+
+        # SF #847346: ensure that fix_sentence_endings=True does the
+        # right thing even on input short enough that it doesn't need to
+        # be wrapped.
+        text = "A short line. Note the single space."
+        expect = ["A short line.  Note the single space."]
+        self.check(wrapper.wrap(text), expect)
+
+        # Test some of the hairy end cases that _fix_sentence_endings()
+        # is supposed to handle (the easy stuff is tested in
+        # test_whitespace() above).
+        text = "Well, Doctor? What do you think?"
+        expect = ["Well, Doctor?  What do you think?"]
+        self.check(wrapper.wrap(text), expect)
+
+        text = "Well, Doctor?\nWhat do you think?"
+        self.check(wrapper.wrap(text), expect)
+
+        text = 'I say, chaps! Anyone for "tennis?"\nHmmph!'
+        expect = ['I say, chaps!  Anyone for "tennis?"  Hmmph!']
+        self.check(wrapper.wrap(text), expect)
+
+        wrapper.width = 20
+        expect = ['I say, chaps!', 'Anyone for "tennis?"', 'Hmmph!']
+        self.check(wrapper.wrap(text), expect)
+
+        text = 'And she said, "Go to hell!"\nCan you believe that?'
+        expect = ['And she said, "Go to',
+                  'hell!"  Can you',
+                  'believe that?']
+        self.check(wrapper.wrap(text), expect)
+
+        wrapper.width = 60
+        expect = ['And she said, "Go to hell!"  Can you believe that?']
+        self.check(wrapper.wrap(text), expect)
+        
     def test_wrap_short(self):
         # Wrapping to make short lines longer
 
index f371fbbe5ac7d8221277226969a0d61ca66eaadd..d9df01928c61dbc77bacfc1dc960a5233d1b3b90 100644 (file)
@@ -90,14 +90,14 @@ class TextWrapper:
                                  % string.lowercase)
 
 
-    def __init__ (self,
-                  width=70,
-                  initial_indent="",
-                  subsequent_indent="",
-                  expand_tabs=True,
-                  replace_whitespace=True,
-                  fix_sentence_endings=False,
-                  break_long_words=True):
+    def __init__(self,
+                 width=70,
+                 initial_indent="",
+                 subsequent_indent="",
+                 expand_tabs=True,
+                 replace_whitespace=True,
+                 fix_sentence_endings=False,
+                 break_long_words=True):
         self.width = width
         self.initial_indent = initial_indent
         self.subsequent_indent = subsequent_indent
@@ -268,8 +268,6 @@ class TextWrapper:
         """
         text = self._munge_whitespace(text)
         indent = self.initial_indent
-        if len(text) + len(indent) <= self.width:
-            return [indent + text]
         chunks = self._split(text)
         if self.fix_sentence_endings:
             self._fix_sentence_endings(chunks)