1
0
mirror of https://github.com/weechat/weechat.git synced 2026-06-30 14:56:39 +02:00

core: add function string_levenshtein (issue #1877)

This commit is contained in:
Sébastien Helleu
2023-01-30 20:41:36 +01:00
parent 269b8fc66e
commit 38ffac78f3
3 changed files with 113 additions and 0 deletions
+54
View File
@@ -2540,6 +2540,60 @@ TEST(CoreString, InputForBuffer)
config_file_option_reset (config_look_command_chars, 1);
}
/*
* Tests functions:
* string_levenshtein
*/
TEST(CoreString, Levenshtein)
{
LONGS_EQUAL(0, string_levenshtein (NULL, NULL, 1));
LONGS_EQUAL(0, string_levenshtein ("", "", 1));
LONGS_EQUAL(3, string_levenshtein (NULL, "abc", 1));
LONGS_EQUAL(3, string_levenshtein ("abc", NULL, 1));
LONGS_EQUAL(3, string_levenshtein ("", "abc", 1));
LONGS_EQUAL(3, string_levenshtein ("abc", "", 1));
LONGS_EQUAL(0, string_levenshtein ("abc", "abc", 1));
LONGS_EQUAL(1, string_levenshtein ("abc", "ab", 1));
LONGS_EQUAL(1, string_levenshtein ("ab", "abc", 1));
LONGS_EQUAL(2, string_levenshtein ("abc", "a", 1));
LONGS_EQUAL(2, string_levenshtein ("a", "abc", 1));
LONGS_EQUAL(3, string_levenshtein ("abc", "", 1));
LONGS_EQUAL(3, string_levenshtein ("", "abc", 1));
LONGS_EQUAL(3, string_levenshtein ("abc", "ABC", 1));
LONGS_EQUAL(3, string_levenshtein ("abc", "AB", 1));
LONGS_EQUAL(3, string_levenshtein ("ab", "ABC", 1));
LONGS_EQUAL(3, string_levenshtein ("abc", "A", 1));
LONGS_EQUAL(3, string_levenshtein ("a", "ABC", 1));
LONGS_EQUAL(3, string_levenshtein ("abc", "", 1));
LONGS_EQUAL(3, string_levenshtein ("", "ABC", 1));
LONGS_EQUAL(0, string_levenshtein ("abc", "ABC", 0));
LONGS_EQUAL(1, string_levenshtein ("abc", "AB", 0));
LONGS_EQUAL(1, string_levenshtein ("ab", "ABC", 0));
LONGS_EQUAL(2, string_levenshtein ("abc", "A", 0));
LONGS_EQUAL(2, string_levenshtein ("a", "ABC", 0));
LONGS_EQUAL(3, string_levenshtein ("abc", "", 0));
LONGS_EQUAL(3, string_levenshtein ("", "ABC", 0));
LONGS_EQUAL(2, string_levenshtein ("response", "respond", 1));
LONGS_EQUAL(4, string_levenshtein ("response", "resist", 1));
LONGS_EQUAL(2, string_levenshtein ("response", "responsive", 1));
/* with UTF-8 chars */
LONGS_EQUAL(1, string_levenshtein ("é", "É", 1));
LONGS_EQUAL(0, string_levenshtein ("é", "É", 0));
LONGS_EQUAL(1, string_levenshtein ("é", "à", 1));
LONGS_EQUAL(1, string_levenshtein ("é", "à", 0));
LONGS_EQUAL(1, string_levenshtein ("", "to", 1));
LONGS_EQUAL(1, string_levenshtein ("noël", "noel", 1));
LONGS_EQUAL(2, string_levenshtein ("bôô", "boo", 1));
LONGS_EQUAL(2, string_levenshtein ("界世", "こん", 1));
}
/*
* Tests functions:
* string_get_priority_and_name