Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 43 additions & 3 deletions Lib/test/test_bytes.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,11 +69,49 @@ def test_empty_sequence(self):
self.assertRaises(IndexError, lambda: b[-sys.maxsize-2])
self.assertRaises(IndexError, lambda: b[-10**100])

def test_from_iterable(self):
b = self.type2test(range(256))
self.assertEqual(len(b), 256)
self.assertEqual(list(b), list(range(256)))

# Non-sequence iterable.
b = self.type2test({42})
self.assertEqual(b, b"*")
b = self.type2test({43, 45})
self.assertIn(tuple(b), {(43, 45), (45, 43)})

# Iterator that has a __length_hint__.
b = self.type2test(iter(range(256)))
self.assertEqual(len(b), 256)
self.assertEqual(list(b), list(range(256)))

# Iterator that doesn't have a __length_hint__.
b = self.type2test(i for i in range(256) if i % 2)
self.assertEqual(len(b), 128)
self.assertEqual(list(b), list(range(256))[1::2])

# Sequence without __iter__.
class S:
def __getitem__(self, i):
return (1, 2, 3)[i]
b = self.type2test(S())
self.assertEqual(b, b"\x01\x02\x03")

def test_from_tuple(self):
# There is a special case for tuples.
b = self.type2test(tuple(range(256)))
self.assertEqual(len(b), 256)
self.assertEqual(list(b), list(range(256)))
b = self.type2test((1, 2, 3))
self.assertEqual(b, b"\x01\x02\x03")

def test_from_list(self):
ints = list(range(256))
b = self.type2test(i for i in ints)
# There is a special case for lists.
b = self.type2test(list(range(256)))
self.assertEqual(len(b), 256)
self.assertEqual(list(b), ints)
self.assertEqual(list(b), list(range(256)))
b = self.type2test([1, 2, 3])
self.assertEqual(b, b"\x01\x02\x03")

def test_from_index(self):
b = self.type2test([Indexable(), Indexable(1), Indexable(254),
Expand All @@ -85,6 +123,8 @@ def test_from_index(self):
def test_from_buffer(self):
a = self.type2test(array.array('B', [1, 2, 3]))
self.assertEqual(a, b"\x01\x02\x03")
a = self.type2test(b"\x01\x02\x03")
self.assertEqual(a, b"\x01\x02\x03")

# http://bugs.python.org/issue29159
# Fallback when __index__ raises exception other than OverflowError
Expand Down