|
2 | 2 | from test.support import import_helper
|
3 | 3 |
|
4 | 4 | _testlimitedcapi = import_helper.import_module('_testlimitedcapi')
|
| 5 | +_testcapi = import_helper.import_module('_testcapi') |
5 | 6 | from _testcapi import PY_SSIZE_T_MIN, PY_SSIZE_T_MAX
|
6 | 7 |
|
7 | 8 | NULL = None
|
@@ -217,6 +218,35 @@ def test_decodeescape(self):
|
217 | 218 | # CRASHES decodeescape(b'abc', NULL, -1)
|
218 | 219 | # CRASHES decodeescape(NULL, NULL, 1)
|
219 | 220 |
|
| 221 | + def test_resize(self): |
| 222 | + """Test _PyBytes_Resize()""" |
| 223 | + resize = _testcapi.bytes_resize |
| 224 | + |
| 225 | + for new in True, False: |
| 226 | + self.assertEqual(resize(b'abc', 0, new), b'') |
| 227 | + self.assertEqual(resize(b'abc', 1, new), b'a') |
| 228 | + self.assertEqual(resize(b'abc', 2, new), b'ab') |
| 229 | + self.assertEqual(resize(b'abc', 3, new), b'abc') |
| 230 | + b = resize(b'abc', 4, new) |
| 231 | + self.assertEqual(len(b), 4) |
| 232 | + self.assertEqual(b[:3], b'abc') |
| 233 | + |
| 234 | + self.assertEqual(resize(b'a', 0, new), b'') |
| 235 | + self.assertEqual(resize(b'a', 1, new), b'a') |
| 236 | + b = resize(b'a', 2, new) |
| 237 | + self.assertEqual(len(b), 2) |
| 238 | + self.assertEqual(b[:1], b'a') |
| 239 | + |
| 240 | + self.assertEqual(resize(b'', 0, new), b'') |
| 241 | + self.assertEqual(len(resize(b'', 1, new)), 1) |
| 242 | + self.assertEqual(len(resize(b'', 2, new)), 2) |
| 243 | + |
| 244 | + self.assertRaises(SystemError, resize, b'abc', -1, False) |
| 245 | + self.assertRaises(SystemError, resize, bytearray(b'abc'), 3, False) |
| 246 | + |
| 247 | + # CRASHES resize(NULL, 0, False) |
| 248 | + # CRASHES resize(NULL, 3, False) |
| 249 | + |
220 | 250 |
|
221 | 251 | if __name__ == "__main__":
|
222 | 252 | unittest.main()
|
0 commit comments