Skip to content

Commit

Permalink
Issue python#3282: str.isprintable() should return False for undefine…
Browse files Browse the repository at this point in the history
…d Unicode characters.
  • Loading branch information
birkenfeld committed Jul 4, 2008
1 parent 6e7196f commit d52429f
Show file tree
Hide file tree
Showing 6 changed files with 8,936 additions and 8,817 deletions.
17 changes: 13 additions & 4 deletions Lib/test/test_unicode.py
Original file line number Diff line number Diff line change
Expand Up @@ -420,12 +420,17 @@ def test_isidentifier(self):
self.assertFalse(" ".isidentifier())
self.assertFalse("[".isidentifier())
self.assertFalse("©".isidentifier())
self.assertFalse("0".isidentifier())

def test_isprintable(self):
self.assertTrue("".isprintable())
self.assertTrue("abcdefg".isprintable())
self.assertFalse("abcdefg\n".isprintable())
self.assertTrue("\u0370".isprintable())
# some defined Unicode character
self.assertTrue("\u0374".isprintable())
# undefined character
self.assertFalse("\u0370".isprintable())
# single surrogate character
self.assertFalse("\ud800".isprintable())

def test_contains(self):
Expand Down Expand Up @@ -598,19 +603,23 @@ def __format__(self, format_spec):
# format specifiers for user defined type
self.assertEqual('{0:abc}'.format(C()), 'abc')

# !r, !s and !a coersions
# !r, !s and !a coercions
self.assertEqual('{0!s}'.format('Hello'), 'Hello')
self.assertEqual('{0!s:}'.format('Hello'), 'Hello')
self.assertEqual('{0!s:15}'.format('Hello'), 'Hello ')
self.assertEqual('{0!s:15s}'.format('Hello'), 'Hello ')
self.assertEqual('{0!r}'.format('Hello'), "'Hello'")
self.assertEqual('{0!r:}'.format('Hello'), "'Hello'")
self.assertEqual('{0!r}'.format(F('Hello')), 'F(Hello)')
self.assertEqual('{0!r}'.format(F('\u0370')), 'F(\u0370)')
self.assertEqual('{0!r}'.format('\u0370'), "'\\u0370'") # nonprintable
self.assertEqual('{0!r}'.format('\u0374'), "'\u0374'") # printable
self.assertEqual('{0!r}'.format(F('\u0374')), 'F(\u0374)')
self.assertEqual('{0!a}'.format('Hello'), "'Hello'")
self.assertEqual('{0!a}'.format('\u0370'), "'\\u0370'") # nonprintable
self.assertEqual('{0!a}'.format('\u0374'), "'\\u0374'") # printable
self.assertEqual('{0!a:}'.format('Hello'), "'Hello'")
self.assertEqual('{0!a}'.format(F('Hello')), 'F(Hello)')
self.assertEqual('{0!a}'.format(F('\u0370')), 'F(\\u0370)')
self.assertEqual('{0!a}'.format(F('\u0374')), 'F(\\u0374)')

# test fallback to object.__format__
self.assertEqual('{0}'.format({}), '{}')
Expand Down
3 changes: 3 additions & 0 deletions Misc/NEWS
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ What's new in Python 3.0b2?
Core and Builtins
-----------------

- Issue #3282: str.isprintable() should return False for undefined
Unicode characters.

- Issue #3236: Return small longs from PyLong_FromString.

Library
Expand Down
Loading

0 comments on commit d52429f

Please sign in to comment.