Home | History | Annotate | Download | only in test
      1 """Unit tests for buffer objects.
      2 
      3 For now, tests just new or changed functionality.
      4 
      5 """
      6 
      7 import unittest
      8 from test import test_support
      9 
     10 class BufferTests(unittest.TestCase):
     11 
     12     def test_extended_getslice(self):
     13         # Test extended slicing by comparing with list slicing.
     14         s = "".join(chr(c) for c in list(range(255, -1, -1)))
     15         b = buffer(s)
     16         indices = (0, None, 1, 3, 19, 300, -1, -2, -31, -300)
     17         for start in indices:
     18             for stop in indices:
     19                 # Skip step 0 (invalid)
     20                 for step in indices[1:]:
     21                     self.assertEqual(b[start:stop:step],
     22                                      s[start:stop:step])
     23 
     24     def test_newbuffer_interface(self):
     25         # Test that the buffer object has the new buffer interface
     26         # as used by the memoryview object
     27         s = "".join(chr(c) for c in list(range(255, -1, -1)))
     28         b = buffer(s)
     29         m = memoryview(b) # Should not raise an exception
     30         self.assertEqual(m.tobytes(), s)
     31 
     32 
     33 def test_main():
     34     with test_support.check_py3k_warnings(("buffer.. not supported",
     35                                            DeprecationWarning)):
     36         test_support.run_unittest(BufferTests)
     37 
     38 if __name__ == "__main__":
     39     test_main()
     40