Merged revisions 65041 via svnmerge from

svn+ssh://pythondev@svn.python.org/python/trunk

........
  r65041 | georg.brandl | 2008-07-17 00:57:41 +0200 (Thu, 17 Jul 2008) | 3 lines

  #3156: fix consistency in what type bytearray methods accept as items.
  Also rename confusing "item" parameters to "index".
........
This commit is contained in:
Georg Brandl 2008-07-16 23:15:30 +00:00
parent 01ca04cc49
commit 9a54d7c350
2 changed files with 57 additions and 62 deletions

View file

@ -17,6 +17,12 @@
import test.string_tests
import test.buffer_tests
class Indexable:
def __init__(self, value=0):
self.value = value
def __index__(self):
return self.value
class BaseBytesTest(unittest.TestCase):
@ -53,15 +59,11 @@ def test_from_list(self):
self.assertEqual(list(b), ints)
def test_from_index(self):
class C:
def __init__(self, i=0):
self.i = i
def __index__(self):
return self.i
b = self.type2test([C(), C(1), C(254), C(255)])
b = self.type2test([Indexable(), Indexable(1), Indexable(254),
Indexable(255)])
self.assertEqual(list(b), [0, 1, 254, 255])
self.assertRaises(ValueError, bytearray, [C(-1)])
self.assertRaises(ValueError, bytearray, [C(256)])
self.assertRaises(ValueError, bytearray, [Indexable(-1)])
self.assertRaises(ValueError, bytearray, [Indexable(256)])
def test_from_ssize(self):
self.assertEqual(bytearray(0), b'')
@ -506,12 +508,7 @@ def test_setitem(self):
self.assertEqual(b, bytearray([1, 100, 3]))
b[-1] = 200
self.assertEqual(b, bytearray([1, 100, 200]))
class C:
def __init__(self, i=0):
self.i = i
def __index__(self):
return self.i
b[0] = C(10)
b[0] = Indexable(10)
self.assertEqual(b, bytearray([10, 100, 200]))
try:
b[3] = 0
@ -529,7 +526,7 @@ def __index__(self):
except ValueError:
pass
try:
b[0] = C(-1)
b[0] = Indexable(-1)
self.fail("Didn't raise ValueError")
except ValueError:
pass
@ -665,6 +662,9 @@ def test_extend(self):
self.assertRaises(ValueError, a.extend, [0, 1, 2, 256])
self.assertRaises(ValueError, a.extend, [0, 1, 2, -1])
self.assertEqual(len(a), 0)
a = bytearray(b'')
a.extend([Indexable(ord('a'))])
self.assertEqual(a, b'a')
def test_remove(self):
b = bytearray(b'hello')
@ -680,6 +680,8 @@ def test_remove(self):
b.remove(ord('h'))
self.assertEqual(b, b'e')
self.assertRaises(TypeError, lambda: b.remove(b'e'))
b.remove(Indexable(ord('e')))
self.assertEqual(b, b'')
def test_pop(self):
b = bytearray(b'world')
@ -701,6 +703,9 @@ def test_append(self):
b.append(ord('A'))
self.assertEqual(len(b), 1)
self.assertRaises(TypeError, lambda: b.append(b'o'))
b = bytearray()
b.append(Indexable(ord('A')))
self.assertEqual(b, b'A')
def test_insert(self):
b = bytearray(b'msssspp')
@ -710,6 +715,9 @@ def test_insert(self):
b.insert(1000, ord('i'))
self.assertEqual(b, b'mississippi')
self.assertRaises(TypeError, lambda: b.insert(0, b'1'))
b = bytearray()
b.insert(0, Indexable(ord('A')))
self.assertEqual(b, b'A')
def test_partition_bytearray_doesnt_share_nullstring(self):
a, b, c = bytearray(b"x").partition(b"y")