(self)
| 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): |
nothing calls this directly
no test coverage detected