mirror of
https://github.com/python/cpython.git
synced 2025-08-27 20:25:18 +00:00
Issue #27506: Support bytes/bytearray.translate() delete as keyword argument
Patch by Xiang Zhang.
This commit is contained in:
parent
8c3c52b19f
commit
1b6c6da85d
7 changed files with 76 additions and 80 deletions
|
@ -689,6 +689,37 @@ class BaseBytesTest:
|
|||
test.support.check_free_after_iterating(self, iter, self.type2test)
|
||||
test.support.check_free_after_iterating(self, reversed, self.type2test)
|
||||
|
||||
def test_translate(self):
|
||||
b = self.type2test(b'hello')
|
||||
rosetta = bytearray(range(256))
|
||||
rosetta[ord('o')] = ord('e')
|
||||
|
||||
self.assertRaises(TypeError, b.translate)
|
||||
self.assertRaises(TypeError, b.translate, None, None)
|
||||
self.assertRaises(ValueError, b.translate, bytes(range(255)))
|
||||
|
||||
c = b.translate(rosetta, b'hello')
|
||||
self.assertEqual(b, b'hello')
|
||||
self.assertIsInstance(c, self.type2test)
|
||||
|
||||
c = b.translate(rosetta)
|
||||
d = b.translate(rosetta, b'')
|
||||
self.assertEqual(c, d)
|
||||
self.assertEqual(c, b'helle')
|
||||
|
||||
c = b.translate(rosetta, b'l')
|
||||
self.assertEqual(c, b'hee')
|
||||
c = b.translate(None, b'e')
|
||||
self.assertEqual(c, b'hllo')
|
||||
|
||||
# test delete as a keyword argument
|
||||
c = b.translate(rosetta, delete=b'')
|
||||
self.assertEqual(c, b'helle')
|
||||
c = b.translate(rosetta, delete=b'l')
|
||||
self.assertEqual(c, b'hee')
|
||||
c = b.translate(None, delete=b'e')
|
||||
self.assertEqual(c, b'hllo')
|
||||
|
||||
|
||||
class BytesTest(BaseBytesTest, unittest.TestCase):
|
||||
type2test = bytes
|
||||
|
@ -1449,24 +1480,6 @@ class AssortedBytesTest(unittest.TestCase):
|
|||
self.assertRaises(SyntaxError, eval,
|
||||
'b"%s"' % chr(c))
|
||||
|
||||
def test_translate(self):
|
||||
b = b'hello'
|
||||
ba = bytearray(b)
|
||||
rosetta = bytearray(range(0, 256))
|
||||
rosetta[ord('o')] = ord('e')
|
||||
c = b.translate(rosetta, b'l')
|
||||
self.assertEqual(b, b'hello')
|
||||
self.assertEqual(c, b'hee')
|
||||
c = ba.translate(rosetta, b'l')
|
||||
self.assertEqual(ba, b'hello')
|
||||
self.assertEqual(c, b'hee')
|
||||
c = b.translate(None, b'e')
|
||||
self.assertEqual(c, b'hllo')
|
||||
c = ba.translate(None, b'e')
|
||||
self.assertEqual(c, b'hllo')
|
||||
self.assertRaises(TypeError, b.translate, None, None)
|
||||
self.assertRaises(TypeError, ba.translate, None, None)
|
||||
|
||||
def test_split_bytearray(self):
|
||||
self.assertEqual(b'a b'.split(memoryview(b' ')), [b'a', b'b'])
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue