1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- """Unit tests for buffer objects.
- For now, tests just new or changed functionality.
- """
- import copy
- import pickle
- import sys
- import unittest
- from test import test_support
- class BufferTests(unittest.TestCase):
- def test_extended_getslice(self):
- # Test extended slicing by comparing with list slicing.
- s = "".join(chr(c) for c in list(range(255, -1, -1)))
- b = buffer(s)
- indices = (0, None, 1, 3, 19, 300, -1, -2, -31, -300)
- for start in indices:
- for stop in indices:
- # Skip step 0 (invalid)
- for step in indices[1:]:
- self.assertEqual(b[start:stop:step],
- s[start:stop:step])
- def test_newbuffer_interface(self):
- # Test that the buffer object has the new buffer interface
- # as used by the memoryview object
- s = "".join(chr(c) for c in list(range(255, -1, -1)))
- b = buffer(s)
- m = memoryview(b) # Should not raise an exception
- self.assertEqual(m.tobytes(), s)
- def test_large_buffer_size_and_offset(self):
- data = bytearray('hola mundo')
- buf = buffer(data, sys.maxsize, sys.maxsize)
- self.assertEqual(buf[:4096], "")
- def test_copy(self):
- buf = buffer(b'abc')
- with self.assertRaises(TypeError):
- copy.copy(buf)
- # See issue #22995
- ## def test_pickle(self):
- ## buf = buffer(b'abc')
- ## for proto in range(pickle.HIGHEST_PROTOCOL + 1):
- ## with self.assertRaises(TypeError):
- ## pickle.dumps(buf, proto)
- def test_main():
- with test_support.check_py3k_warnings(("buffer.. not supported",
- DeprecationWarning)):
- test_support.run_unittest(BufferTests)
- if __name__ == "__main__":
- test_main()
|