gh-124502: Add PyUnicode_Equal() function (#124504)

This commit is contained in:
Victor Stinner 2024-10-07 23:24:53 +02:00 committed by GitHub
parent c5df1cb7bd
commit a7f0727ca5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
11 changed files with 111 additions and 2 deletions

View file

@ -1903,6 +1903,39 @@ class PyUnicodeWriterFormatTest(unittest.TestCase):
self.assertEqual(writer.finish(), 'Hello World.')
def test_unicode_equal(self):
unicode_equal = _testlimitedcapi.unicode_equal
def copy(text):
return text.encode().decode()
self.assertTrue(unicode_equal("", ""))
self.assertTrue(unicode_equal("abc", "abc"))
self.assertTrue(unicode_equal("abc", copy("abc")))
self.assertTrue(unicode_equal("\u20ac", copy("\u20ac")))
self.assertTrue(unicode_equal("\U0010ffff", copy("\U0010ffff")))
self.assertFalse(unicode_equal("abc", "abcd"))
self.assertFalse(unicode_equal("\u20ac", "\u20ad"))
self.assertFalse(unicode_equal("\U0010ffff", "\U0010fffe"))
# str subclass
self.assertTrue(unicode_equal("abc", Str("abc")))
self.assertTrue(unicode_equal(Str("abc"), "abc"))
self.assertFalse(unicode_equal("abc", Str("abcd")))
self.assertFalse(unicode_equal(Str("abc"), "abcd"))
# invalid type
for invalid_type in (b'bytes', 123, ("tuple",)):
with self.subTest(invalid_type=invalid_type):
with self.assertRaises(TypeError):
unicode_equal("abc", invalid_type)
with self.assertRaises(TypeError):
unicode_equal(invalid_type, "abc")
# CRASHES unicode_equal("abc", NULL)
# CRASHES unicode_equal(NULL, "abc")
if __name__ == "__main__":
unittest.main()