MCPcopy Index your code
hub / github.com/python/cpython / test_find

Method test_find

Lib/test/test_capi/test_unicode.py:1324–1361  ·  view source on GitHub ↗

Test PyUnicode_Find()

(self)

Source from the content-addressed store, hash-verified

1322 @support.cpython_only
1323 @unittest.skipIf(_testlimitedcapi is None, 'need _testlimitedcapi module')
1324 def test_find(self):
1325 """Test PyUnicode_Find()"""
1326 from _testlimitedcapi import unicode_find as find
1327
1328 for str in "\xa1", "\u8000\u8080", "\ud800\udc02", "\U0001f100\U0001f1f1":
1329 for i, ch in enumerate(str):
1330 self.assertEqual(find(str, ch, 0, len(str), 1), i)
1331 self.assertEqual(find(str, ch, 0, len(str), -1), i)
1332
1333 str = "!>_<!"
1334 self.assertEqual(find(str, 'z', 0, len(str), 1), -1)
1335 self.assertEqual(find(str, 'z', 0, len(str), -1), -1)
1336 self.assertEqual(find(str, '', 0, len(str), 1), 0)
1337 self.assertEqual(find(str, '', 0, len(str), -1), len(str))
1338 # start < end
1339 self.assertEqual(find(str, '!', 1, len(str)+1, 1), 4)
1340 self.assertEqual(find(str, '!', 1, PY_SSIZE_T_MAX, 1), 4)
1341 self.assertEqual(find(str, '!', 0, len(str)+1, -1), 4)
1342 self.assertEqual(find(str, '!', 0, PY_SSIZE_T_MAX, -1), 4)
1343 # start >= end
1344 self.assertEqual(find(str, '!', 0, 0, 1), -1)
1345 self.assertEqual(find(str, '!', 0, 0, -1), -1)
1346 self.assertEqual(find(str, '!', len(str), 0, 1), -1)
1347 self.assertEqual(find(str, '!', len(str), 0, -1), -1)
1348 # negative
1349 self.assertEqual(find(str, '!', -len(str), -1, 1), 0)
1350 self.assertEqual(find(str, '!', -len(str), -1, -1), 0)
1351 self.assertEqual(find(str, '!', PY_SSIZE_T_MIN, -1, 1), 0)
1352 self.assertEqual(find(str, '!', PY_SSIZE_T_MIN, -1, -1), 0)
1353 self.assertEqual(find(str, '!', PY_SSIZE_T_MIN, PY_SSIZE_T_MAX, 1), 0)
1354 self.assertEqual(find(str, '!', PY_SSIZE_T_MIN, PY_SSIZE_T_MAX, -1), 4)
1355 # bad arguments
1356 self.assertRaises(TypeError, find, str, b'!', 0, len(str), 1)
1357 self.assertRaises(TypeError, find, b"!>_<!", '!', 0, len(str), 1)
1358 self.assertRaises(TypeError, find, str, ord('!'), 0, len(str), 1)
1359 self.assertRaises(TypeError, find, [], '!', 0, len(str), 1)
1360 # CRASHES find(NULL, '!', 0, len(str), 1)
1361 # CRASHES find(str, NULL, 0, len(str), 1)
1362
1363 @support.cpython_only
1364 @unittest.skipIf(_testlimitedcapi is None, 'need _testlimitedcapi module')

Callers

nothing calls this directly

Calls 4

enumerateFunction · 0.85
findFunction · 0.50
assertEqualMethod · 0.45
assertRaisesMethod · 0.45

Tested by

no test coverage detected