769
769
self.assertEqual(b, b"")
770
770
self.assertEqual(c, b"")
772
def test_resize_forbidden(self):
773
# #4509: can't resize a bytearray when there are buffer exports, even
774
# if it wouldn't reallocate the underlying buffer.
775
# Furthermore, no destructive changes to the buffer may be applied
776
# before raising the error.
777
b = bytearray(range(10))
780
b[1:-1] = range(n + 1, 2*n - 1)
783
self.assertRaises(BufferError, resize, 11)
784
self.assertEquals(b, orig)
785
self.assertRaises(BufferError, resize, 9)
786
self.assertEquals(b, orig)
787
self.assertRaises(BufferError, resize, 0)
788
self.assertEquals(b, orig)
789
# Other operations implying resize
790
self.assertRaises(BufferError, b.pop, 0)
791
self.assertEquals(b, orig)
792
self.assertRaises(BufferError, b.remove, b[1])
793
self.assertEquals(b, orig)
796
self.assertRaises(BufferError, delitem)
797
self.assertEquals(b, orig)
798
# deleting a non-contiguous slice
801
self.assertRaises(BufferError, delslice)
802
self.assertEquals(b, orig)
773
804
class AssortedBytesTest(unittest.TestCase):
858
889
def test_translate(self):
860
892
rosetta = bytearray(range(0, 256))
861
893
rosetta[ord('o')] = ord('e')
862
894
c = b.translate(rosetta, b'l')
863
895
self.assertEqual(b, b'hello')
864
896
self.assertEqual(c, b'hee')
897
c = ba.translate(rosetta, b'l')
898
self.assertEqual(ba, b'hello')
899
self.assertEqual(c, b'hee')
900
c = b.translate(None, b'e')
901
self.assertEqual(c, b'hllo')
902
self.assertRaises(TypeError, b.translate, b'a'*256, None)
903
self.assertRaises(TypeError, ba.translate, b'a'*256, None)
866
905
def test_split_bytearray(self):
867
906
self.assertEqual(b'a b'.split(memoryview(b' ')), [b'a', b'b'])