Merge pull request #23504 from keszybz/bls-reordering

Refactor the BLS and add a description of version sorts
This commit is contained in:
Luca Boccassi
2022-05-27 14:36:10 +01:00
committed by GitHub
5 changed files with 507 additions and 307 deletions
+24 -1
View File
@@ -852,8 +852,8 @@ static void test_strverscmp_improved_newer(const char *older, const char *newer)
TEST(strverscmp_improved) {
static const char * const versions[] = {
"",
"~1",
"",
"ab",
"abb",
"abc",
@@ -917,6 +917,29 @@ TEST(strverscmp_improved) {
/* invalid characters */
assert_se(strverscmp_improved("123_aa2-67.89", "123aa+2-67.89") == 0);
/* some corner cases */
assert_se(strverscmp_improved("123.", "123") > 0); /* One more version segment */
assert_se(strverscmp_improved("12_3", "123") < 0); /* 12 < 123 */
assert_se(strverscmp_improved("12_3", "12") > 0); /* 3 > '' */
assert_se(strverscmp_improved("12_3", "12.3") > 0); /* 3 > '' */
assert_se(strverscmp_improved("123.0", "123") > 0); /* 0 > '' */
assert_se(strverscmp_improved("123_0", "123") > 0); /* 0 > '' */
assert_se(strverscmp_improved("123..0", "123.0") < 0); /* '' < 0 */
/* empty strings or strings with ignored characters only */
assert_se(strverscmp_improved("", NULL) == 0);
assert_se(strverscmp_improved(NULL, "") == 0);
assert_se(strverscmp_improved("0_", "0") == 0);
assert_se(strverscmp_improved("_0_", "0") == 0);
assert_se(strverscmp_improved("_0", "0") == 0);
assert_se(strverscmp_improved("0", "0___") == 0);
assert_se(strverscmp_improved("", "_") == 0);
assert_se(strverscmp_improved("_", "") == 0);
assert_se(strverscmp_improved("_", "_") == 0);
assert_se(strverscmp_improved("", "~") > 0);
assert_se(strverscmp_improved("~", "") < 0);
assert_se(strverscmp_improved("~", "~") == 0);
/* non-ASCII digits */
(void) setlocale(LC_NUMERIC, "ar_YE.utf8");
assert_se(strverscmp_improved("1٠١٢٣٤٥٦٧٨٩", "1") == 0);