Fix PyString_Format() so that '%c' % u'a' returns u'a'

instead of raising a TypeError. (From SF patch #710127)

Add tests to verify this is fixed.

Add various tests for '%c' % int.
This commit is contained in:
Walter Dörwald 2003-03-31 18:07:50 +00:00
parent 2a04623ddd
commit 43440a621e
5 changed files with 18 additions and 0 deletions

View file

@ -358,6 +358,8 @@ class UnicodeTest(
self.assertEqual(u"%r, %r" % (u"abc", "abc"), u"u'abc', 'abc'")
self.assertEqual(u"%(x)s, %(y)s" % {'x':u"abc", 'y':"def"}, u'abc, def')
self.assertEqual(u"%(x)s, %(\xfc)s" % {'x':u"abc", u'\xfc':"def"}, u'abc, def')
self.assertEqual(u'%c' % 0x1234, u'\u1234')
self.assertRaises(ValueError, u'%c'.__mod__, sys.maxunicode+1)
# formatting jobs delegated from the string implementation:
self.assertEqual('...%(foo)s...' % {'foo':u"abc"}, u'...abc...')
@ -375,6 +377,7 @@ class UnicodeTest(
self.assertEqual('%*.*s' % (5,3,u'abc',), u' abc')
self.assertEqual('%i %*.*s' % (10, 5,3,u'abc',), u'10 abc')
self.assertEqual('%i%s %*.*s' % (10, 3, 5, 3, u'abc',), u'103 abc')
self.assertEqual('%c' % u'a', u'a')
self.assertRaises(ValueError, u"%c".__mod__, (sys.maxunicode+1,))