Home | History | Annotate | Download | only in test
      1 from ctypes import *
      2 import unittest
      3 
      4 class StringBufferTestCase(unittest.TestCase):
      5 
      6     def test_buffer(self):
      7         b = create_string_buffer(32)
      8         self.assertEqual(len(b), 32)
      9         self.assertEqual(sizeof(b), 32 * sizeof(c_char))
     10         self.assertTrue(type(b[0]) is str)
     11 
     12         b = create_string_buffer("abc")
     13         self.assertEqual(len(b), 4) # trailing nul char
     14         self.assertEqual(sizeof(b), 4 * sizeof(c_char))
     15         self.assertTrue(type(b[0]) is str)
     16         self.assertEqual(b[0], "a")
     17         self.assertEqual(b[:], "abc\0")
     18         self.assertEqual(b[::], "abc\0")
     19         self.assertEqual(b[::-1], "\0cba")
     20         self.assertEqual(b[::2], "ac")
     21         self.assertEqual(b[::5], "a")
     22 
     23     def test_buffer_interface(self):
     24         self.assertEqual(len(bytearray(create_string_buffer(0))), 0)
     25         self.assertEqual(len(bytearray(create_string_buffer(1))), 1)
     26 
     27     def test_string_conversion(self):
     28         b = create_string_buffer(u"abc")
     29         self.assertEqual(len(b), 4) # trailing nul char
     30         self.assertEqual(sizeof(b), 4 * sizeof(c_char))
     31         self.assertTrue(type(b[0]) is str)
     32         self.assertEqual(b[0], "a")
     33         self.assertEqual(b[:], "abc\0")
     34         self.assertEqual(b[::], "abc\0")
     35         self.assertEqual(b[::-1], "\0cba")
     36         self.assertEqual(b[::2], "ac")
     37         self.assertEqual(b[::5], "a")
     38 
     39     try:
     40         c_wchar
     41     except NameError:
     42         pass
     43     else:
     44         def test_unicode_buffer(self):
     45             b = create_unicode_buffer(32)
     46             self.assertEqual(len(b), 32)
     47             self.assertEqual(sizeof(b), 32 * sizeof(c_wchar))
     48             self.assertTrue(type(b[0]) is unicode)
     49 
     50             b = create_unicode_buffer(u"abc")
     51             self.assertEqual(len(b), 4) # trailing nul char
     52             self.assertEqual(sizeof(b), 4 * sizeof(c_wchar))
     53             self.assertTrue(type(b[0]) is unicode)
     54             self.assertEqual(b[0], u"a")
     55             self.assertEqual(b[:], "abc\0")
     56             self.assertEqual(b[::], "abc\0")
     57             self.assertEqual(b[::-1], "\0cba")
     58             self.assertEqual(b[::2], "ac")
     59             self.assertEqual(b[::5], "a")
     60 
     61         def test_unicode_conversion(self):
     62             b = create_unicode_buffer("abc")
     63             self.assertEqual(len(b), 4) # trailing nul char
     64             self.assertEqual(sizeof(b), 4 * sizeof(c_wchar))
     65             self.assertTrue(type(b[0]) is unicode)
     66             self.assertEqual(b[0], u"a")
     67             self.assertEqual(b[:], "abc\0")
     68             self.assertEqual(b[::], "abc\0")
     69             self.assertEqual(b[::-1], "\0cba")
     70             self.assertEqual(b[::2], "ac")
     71             self.assertEqual(b[::5], "a")
     72 
     73 if __name__ == "__main__":
     74     unittest.main()
     75