diff options
author | Victor Stinner <vstinner@python.org> | 2024-10-07 21:24:53 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-10-07 21:24:53 (GMT) |
commit | a7f0727ca575fef4d8891b5ebfe71ef2a774868b (patch) | |
tree | 1e2f68811bc1485f2d97251ceb8453151d36cc5b /Lib | |
parent | c5df1cb7bde7e86f046196b0e34a0b90f8fc11de (diff) | |
download | cpython-a7f0727ca575fef4d8891b5ebfe71ef2a774868b.zip cpython-a7f0727ca575fef4d8891b5ebfe71ef2a774868b.tar.gz cpython-a7f0727ca575fef4d8891b5ebfe71ef2a774868b.tar.bz2 |
gh-124502: Add PyUnicode_Equal() function (#124504)
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/test/test_capi/test_unicode.py | 33 | ||||
-rw-r--r-- | Lib/test/test_stable_abi_ctypes.py | 1 |
2 files changed, 34 insertions, 0 deletions
diff --git a/Lib/test/test_capi/test_unicode.py b/Lib/test/test_capi/test_unicode.py index e6f8542..65d8242 100644 --- a/Lib/test/test_capi/test_unicode.py +++ b/Lib/test/test_capi/test_unicode.py @@ -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() diff --git a/Lib/test/test_stable_abi_ctypes.py b/Lib/test/test_stable_abi_ctypes.py index d16ad7e..b14d500 100644 --- a/Lib/test/test_stable_abi_ctypes.py +++ b/Lib/test/test_stable_abi_ctypes.py @@ -805,6 +805,7 @@ SYMBOL_NAMES = ( "PyUnicode_DecodeUnicodeEscape", "PyUnicode_EncodeFSDefault", "PyUnicode_EncodeLocale", + "PyUnicode_Equal", "PyUnicode_EqualToUTF8", "PyUnicode_EqualToUTF8AndSize", "PyUnicode_FSConverter", |