MCPcopy Index your code
hub / github.com/python/cpython / test_take_bytes

Method test_take_bytes

Lib/test/test_bytes.py:1532–1586  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

1530 self.assertRaises(MemoryError, bytearray(1000).resize, sys.maxsize)
1531
1532 def test_take_bytes(self):
1533 ba = bytearray(b'ab')
1534 self.assertEqual(ba.take_bytes(), b'ab')
1535 self.assertEqual(len(ba), 0)
1536 self.assertEqual(ba, bytearray(b''))
1537 self.assertEqual(ba.__alloc__(), 0)
1538 base_size = sys.getsizeof(bytearray())
1539 self.assertEqual(sys.getsizeof(ba), base_size)
1540
1541 # Positive and negative slicing.
1542 ba = bytearray(b'abcdef')
1543 self.assertEqual(ba.take_bytes(1), b'a')
1544 self.assertEqual(ba, bytearray(b'bcdef'))
1545 self.assertEqual(len(ba), 5)
1546 self.assertEqual(ba.take_bytes(-5), b'')
1547 self.assertEqual(ba, bytearray(b'bcdef'))
1548 self.assertEqual(len(ba), 5)
1549 self.assertEqual(ba.take_bytes(-3), b'bc')
1550 self.assertEqual(ba, bytearray(b'def'))
1551 self.assertEqual(len(ba), 3)
1552 self.assertEqual(ba.take_bytes(3), b'def')
1553 self.assertEqual(ba, bytearray(b''))
1554 self.assertEqual(len(ba), 0)
1555
1556 # Take nothing from emptiness.
1557 self.assertEqual(ba.take_bytes(0), b'')
1558 self.assertEqual(ba.take_bytes(), b'')
1559 self.assertEqual(ba.take_bytes(None), b'')
1560
1561 # Out of bounds, bad take value.
1562 self.assertRaises(IndexError, ba.take_bytes, -1)
1563 self.assertRaises(TypeError, ba.take_bytes, 3.14)
1564 ba = bytearray(b'abcdef')
1565 self.assertRaises(IndexError, ba.take_bytes, 7)
1566
1567 # Offset between physical and logical start (ob_bytes != ob_start).
1568 ba = bytearray(b'abcde')
1569 del ba[:2]
1570 self.assertEqual(ba, bytearray(b'cde'))
1571 self.assertEqual(ba.take_bytes(), b'cde')
1572
1573 # Overallocation at end.
1574 ba = bytearray(b'abcde')
1575 del ba[-2:]
1576 self.assertEqual(ba, bytearray(b'abc'))
1577 self.assertEqual(ba.take_bytes(), b'abc')
1578 ba = bytearray(b'abcde')
1579 ba.resize(4)
1580 self.assertEqual(ba.take_bytes(), b'abcd')
1581
1582 # Take of a bytearray with references should fail.
1583 ba = bytearray(b'abc')
1584 with memoryview(ba) as mv:
1585 self.assertRaises(BufferError, ba.take_bytes)
1586 self.assertEqual(ba.take_bytes(), b'abc')
1587
1588 @support.cpython_only # tests an implementation detail
1589 def test_take_bytes_optimization(self):

Callers

nothing calls this directly

Calls 4

take_bytesMethod · 0.80
assertEqualMethod · 0.45
assertRaisesMethod · 0.45
resizeMethod · 0.45

Tested by

no test coverage detected