1
0
mirror of https://github.com/weechat/weechat.git synced 2026-07-05 01:03:14 +02:00

api: return arithmetic difference between chars in string comparison functions

Return code is changed for the following functions:

- string_strcasecmp
- string_strcasecmp_range
- string_strncasecmp
- string_strncasecmp_range
- string_strcmp_ignore_chars
- utf8_charcmp
- utf8_charcasecmp
- utf8_charcasecmp_range
This commit is contained in:
Sébastien Helleu
2022-12-24 16:25:20 +01:00
parent 5fc656a1b8
commit 083032972d
12 changed files with 474 additions and 353 deletions
+26 -22
View File
@@ -602,43 +602,47 @@ TEST(CoreUtf8, Comparison)
{
/* case-sensitive comparison */
LONGS_EQUAL(0, utf8_charcmp (NULL, NULL));
LONGS_EQUAL(-1, utf8_charcmp (NULL, "abc"));
LONGS_EQUAL(1, utf8_charcmp ("abc", NULL));
LONGS_EQUAL(-97, utf8_charcmp (NULL, "abc"));
LONGS_EQUAL(97, utf8_charcmp ("abc", NULL));
LONGS_EQUAL(0, utf8_charcmp ("axx", "azz"));
LONGS_EQUAL(-1, utf8_charcmp ("A", "Z"));
LONGS_EQUAL(1, utf8_charcmp ("Z", "A"));
LONGS_EQUAL(-1, utf8_charcmp ("A", "a"));
LONGS_EQUAL(-1, utf8_charcmp ("ë", ""));
LONGS_EQUAL(1, utf8_charcmp ("ë", ""));
LONGS_EQUAL(-1, utf8_charcmp ("", "ë"));
LONGS_EQUAL(-2, utf8_charcmp ("A", "C"));
LONGS_EQUAL(2, utf8_charcmp ("C", "A"));
LONGS_EQUAL(-32, utf8_charcmp ("A", "a"));
LONGS_EQUAL(-8129, utf8_charcmp ("ë", ""));
LONGS_EQUAL(235, utf8_charcmp ("ë", ""));
LONGS_EQUAL(-235, utf8_charcmp ("", "ë"));
/* case-insensitive comparison */
LONGS_EQUAL(0, utf8_charcasecmp (NULL, NULL));
LONGS_EQUAL(-1, utf8_charcasecmp (NULL, "abc"));
LONGS_EQUAL(1, utf8_charcasecmp ("abc", NULL));
LONGS_EQUAL(-97, utf8_charcasecmp (NULL, "abc"));
LONGS_EQUAL(97, utf8_charcasecmp ("abc", NULL));
LONGS_EQUAL(0, utf8_charcasecmp ("axx", "azz"));
LONGS_EQUAL(-1, utf8_charcasecmp ("A", "Z"));
LONGS_EQUAL(1, utf8_charcasecmp ("Z", "A"));
LONGS_EQUAL(-2, utf8_charcasecmp ("A", "C"));
LONGS_EQUAL(2, utf8_charcasecmp ("C", "A"));
LONGS_EQUAL(0, utf8_charcasecmp ("A", "a"));
LONGS_EQUAL(-1, utf8_charcasecmp ("ë", ""));
LONGS_EQUAL(-8129, utf8_charcasecmp ("ë", ""));
/* case-insensitive comparison with a range */
LONGS_EQUAL(0, utf8_charcasecmp_range (NULL, NULL, 30));
LONGS_EQUAL(-1, utf8_charcasecmp_range (NULL, "abc", 30));
LONGS_EQUAL(1, utf8_charcasecmp_range ("abc", NULL, 30));
LONGS_EQUAL(-97, utf8_charcasecmp_range (NULL, "abc", 30));
LONGS_EQUAL(97, utf8_charcasecmp_range ("abc", NULL, 30));
LONGS_EQUAL(0, utf8_charcasecmp_range ("axx", "azz", 30));
LONGS_EQUAL(-1, utf8_charcasecmp_range ("A", "Z", 30));
LONGS_EQUAL(1, utf8_charcasecmp_range ("Z", "A", 30));
LONGS_EQUAL(-2, utf8_charcasecmp_range ("A", "C", 30));
LONGS_EQUAL(2, utf8_charcasecmp_range ("C", "A", 30));
LONGS_EQUAL(0, utf8_charcasecmp_range ("A", "a", 30));
LONGS_EQUAL(-1, utf8_charcasecmp_range ("ë", "", 30));
LONGS_EQUAL(-8129, utf8_charcasecmp_range ("ë", "", 30));
LONGS_EQUAL(0, utf8_charcasecmp_range ("[", "{", 30));
LONGS_EQUAL(0, utf8_charcasecmp_range ("]", "}", 30));
LONGS_EQUAL(0, utf8_charcasecmp_range ("\\", "|", 30));
LONGS_EQUAL(0, utf8_charcasecmp_range ("^", "~", 30));
LONGS_EQUAL(-1, utf8_charcasecmp_range ("[", "{", 26));
LONGS_EQUAL(-1, utf8_charcasecmp_range ("]", "}", 26));
LONGS_EQUAL(-1, utf8_charcasecmp_range ("\\", "|", 26));
LONGS_EQUAL(-1, utf8_charcasecmp_range ("^", "~", 26));
LONGS_EQUAL(-32, utf8_charcasecmp_range ("[", "{", 26));
LONGS_EQUAL(32, utf8_charcasecmp_range ("{", "[", 26));
LONGS_EQUAL(-32, utf8_charcasecmp_range ("]", "}", 26));
LONGS_EQUAL(32, utf8_charcasecmp_range ("}", "]", 26));
LONGS_EQUAL(-32, utf8_charcasecmp_range ("\\", "|", 26));
LONGS_EQUAL(32, utf8_charcasecmp_range ("|", "\\", 26));
LONGS_EQUAL(-32, utf8_charcasecmp_range ("^", "~", 26));
LONGS_EQUAL(32, utf8_charcasecmp_range ("~", "^", 26));
}
/*