mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
Add iswide() and width() method for UserString according as the
addition to unicode objects.
This commit is contained in:
parent
0701bd64aa
commit
5f5125997b
3 changed files with 31 additions and 1 deletions
|
@ -126,6 +126,10 @@ class UserString:
|
||||||
def upper(self): return self.__class__(self.data.upper())
|
def upper(self): return self.__class__(self.data.upper())
|
||||||
def zfill(self, width): return self.__class__(self.data.zfill(width))
|
def zfill(self, width): return self.__class__(self.data.zfill(width))
|
||||||
|
|
||||||
|
# the following methods are defined for unicode objects only:
|
||||||
|
def iswide(self): return self.data.iswide()
|
||||||
|
def width(self): return self.data.width()
|
||||||
|
|
||||||
class MutableString(UserString):
|
class MutableString(UserString):
|
||||||
"""mutable string objects
|
"""mutable string objects
|
||||||
|
|
||||||
|
|
|
@ -695,3 +695,28 @@ class MixinStrUserStringTest:
|
||||||
|
|
||||||
self.checkraises(TypeError, 'xyz', 'decode', 42)
|
self.checkraises(TypeError, 'xyz', 'decode', 42)
|
||||||
self.checkraises(TypeError, 'xyz', 'encode', 42)
|
self.checkraises(TypeError, 'xyz', 'encode', 42)
|
||||||
|
|
||||||
|
|
||||||
|
class MixinUnicodeUserStringTest:
|
||||||
|
# Additional tests that only work with
|
||||||
|
# unicode compatible object, i.e. unicode and UserString
|
||||||
|
|
||||||
|
def test_iswide(self):
|
||||||
|
self.checkequal(False, u'', 'iswide')
|
||||||
|
self.checkequal(False, u'\x1f', 'iswide') # Neutral
|
||||||
|
self.checkequal(False, u'\x20', 'iswide') # Narrow
|
||||||
|
self.checkequal(True, u'\u2329', 'iswide') # Wide
|
||||||
|
self.checkequal(False, u'\uff64', 'iswide') # Half
|
||||||
|
self.checkequal(True, u'\u3000', 'iswide') # Full
|
||||||
|
self.checkequal(False, u'\u2460', 'iswide') # Ambiguous
|
||||||
|
self.checkequal(True, u'\ud55c\uae00', 'iswide')
|
||||||
|
self.checkequal(False, u'\ud55c\u2606\uae00', 'iswide')
|
||||||
|
|
||||||
|
def test_width(self):
|
||||||
|
self.checkequal(0, u'', 'width')
|
||||||
|
self.checkequal(4, u'abcd', 'width')
|
||||||
|
self.checkequal(2, u'\u0187\u01c9', 'width')
|
||||||
|
self.checkequal(3, u'\u2460\u2329', 'width')
|
||||||
|
self.checkequal(3, u'\u2329\u2460', 'width')
|
||||||
|
self.checkequal(4, u'\ud55c\uae00', 'width')
|
||||||
|
self.checkequal(5, u'\ud55c\u2606\uae00', 'width')
|
||||||
|
|
|
@ -11,7 +11,8 @@ class UserStringTest(
|
||||||
string_tests.CommonTest,
|
string_tests.CommonTest,
|
||||||
string_tests.MixinStrUnicodeUserStringTest,
|
string_tests.MixinStrUnicodeUserStringTest,
|
||||||
string_tests.MixinStrStringUserStringTest,
|
string_tests.MixinStrStringUserStringTest,
|
||||||
string_tests.MixinStrUserStringTest
|
string_tests.MixinStrUserStringTest,
|
||||||
|
string_tests.MixinUnicodeUserStringTest
|
||||||
):
|
):
|
||||||
|
|
||||||
type2test = UserString
|
type2test = UserString
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue