diff options
| author | R David Murray <rdmurray@bitdance.com> | 2012-09-08 17:42:01 (GMT) | 
|---|---|---|
| committer | R David Murray <rdmurray@bitdance.com> | 2012-09-08 17:42:01 (GMT) | 
| commit | 1b6e7c47f2b9f02c90423684376591a1c9f5c0cc (patch) | |
| tree | f9008fc9581aa9f1d7add921e974924f97d76cca /Lib/test | |
| parent | b676727dca5ebb5490acdd18becad93afe9d70a1 (diff) | |
| download | cpython-1b6e7c47f2b9f02c90423684376591a1c9f5c0cc.zip cpython-1b6e7c47f2b9f02c90423684376591a1c9f5c0cc.tar.gz cpython-1b6e7c47f2b9f02c90423684376591a1c9f5c0cc.tar.bz2  | |
#15510: clarify textwrap's handling of whitespace, and add confirming tests.
Patch by Chris Jerdonek.
Diffstat (limited to 'Lib/test')
| -rw-r--r-- | Lib/test/test_textwrap.py | 62 | 
1 files changed, 55 insertions, 7 deletions
diff --git a/Lib/test/test_textwrap.py b/Lib/test/test_textwrap.py index 63a54d9..7b72672 100644 --- a/Lib/test/test_textwrap.py +++ b/Lib/test/test_textwrap.py @@ -66,6 +66,15 @@ class WrapTestCase(BaseTestCase):                           "I'm glad to hear it!"])          self.check_wrap(text, 80, [text]) +    def test_empty_string(self): +        # Check that wrapping the empty string returns an empty list. +        self.check_wrap("", 6, []) +        self.check_wrap("", 6, [], drop_whitespace=False) + +    def test_empty_string_with_initial_indent(self): +        # Check that the empty string is not indented. +        self.check_wrap("", 6, [], initial_indent="++") +        self.check_wrap("", 6, [], initial_indent="++", drop_whitespace=False)      def test_whitespace(self):          # Whitespace munging and end-of-sentence detection @@ -323,7 +332,32 @@ What a mess!                           ["blah", " ", "(ding", " ", "dong),",                            " ", "wubba"]) -    def test_initial_whitespace(self): +    def test_drop_whitespace_false(self): +        # Check that drop_whitespace=False preserves whitespace. +        # SF patch #1581073 +        text = " This is a    sentence with     much whitespace." +        self.check_wrap(text, 10, +                        [" This is a", "    ", "sentence ", +                         "with     ", "much white", "space."], +                        drop_whitespace=False) + +    def test_drop_whitespace_false_whitespace_only(self): +        # Check that drop_whitespace=False preserves a whitespace-only string. +        self.check_wrap("   ", 6, ["   "], drop_whitespace=False) + +    def test_drop_whitespace_false_whitespace_only_with_indent(self): +        # Check that a whitespace-only string gets indented (when +        # drop_whitespace is False). +        self.check_wrap("   ", 6, ["     "], drop_whitespace=False, +                        initial_indent="  ") + +    def test_drop_whitespace_whitespace_only(self): +        # Check drop_whitespace on a whitespace-only string. +        self.check_wrap("  ", 6, []) + +    def test_drop_whitespace_leading_whitespace(self): +        # Check that drop_whitespace does not drop leading whitespace (if +        # followed by non-whitespace).          # SF bug #622849 reported inconsistent handling of leading          # whitespace; let's test that a bit, shall we?          text = " This is a sentence with leading whitespace." @@ -332,13 +366,27 @@ What a mess!          self.check_wrap(text, 30,                          [" This is a sentence with", "leading whitespace."]) -    def test_no_drop_whitespace(self): -        # SF patch #1581073 -        text = " This is a    sentence with     much whitespace." -        self.check_wrap(text, 10, -                        [" This is a", "    ", "sentence ", -                         "with     ", "much white", "space."], +    def test_drop_whitespace_whitespace_line(self): +        # Check that drop_whitespace skips the whole line if a non-leading +        # line consists only of whitespace. +        text = "abcd    efgh" +        # Include the result for drop_whitespace=False for comparison. +        self.check_wrap(text, 6, ["abcd", "    ", "efgh"],                          drop_whitespace=False) +        self.check_wrap(text, 6, ["abcd", "efgh"]) + +    def test_drop_whitespace_whitespace_only_with_indent(self): +        # Check that initial_indent is not applied to a whitespace-only +        # string.  This checks a special case of the fact that dropping +        # whitespace occurs before indenting. +        self.check_wrap("  ", 6, [], initial_indent="++") + +    def test_drop_whitespace_whitespace_indent(self): +        # Check that drop_whitespace does not drop whitespace indents. +        # This checks a special case of the fact that dropping whitespace +        # occurs before indenting. +        self.check_wrap("abcd efgh", 6, ["  abcd", "  efgh"], +                        initial_indent="  ", subsequent_indent="  ")      if test_support.have_unicode:          def test_unicode(self):  | 
