1
0
mirror of https://github.com/weechat/weechat.git synced 2026-06-26 21:06:38 +02:00

core: add value -1 for keep_eol in function string_strip (issue #1322)

The value -1 means it's a standard split, but empty items are kept, and
separators are not removed at beginning/end of string.
This commit is contained in:
Sébastien Helleu
2019-03-09 21:54:25 +01:00
parent 79d0910c08
commit 8aa5f5375e
3 changed files with 172 additions and 63 deletions
+98
View File
@@ -1034,6 +1034,17 @@ TEST(CoreString, Split)
/* free split with NULL */
string_free_split (NULL);
/* standard split */
argc = -1;
argv = string_split ("abc de fghi", " ", 0, 0, &argc);
LONGS_EQUAL(3, argc);
CHECK(argv);
STRCMP_EQUAL("abc", argv[0]);
STRCMP_EQUAL("de", argv[1]);
STRCMP_EQUAL("fghi", argv[2]);
POINTERS_EQUAL(NULL, argv[3]);
string_free_split (argv);
/* standard split */
argc = -1;
argv = string_split (" abc de fghi ", " ", 0, 0, &argc);
@@ -1096,6 +1107,93 @@ TEST(CoreString, Split)
STRCMP_EQUAL("de fghi ", argv[1]);
POINTERS_EQUAL(NULL, argv[2]);
string_free_split (argv);
/* standard split with comma separator */
argc = -1;
argv = string_split ("abc,de,fghi", ",", 0, 0, &argc);
LONGS_EQUAL(3, argc);
CHECK(argv);
STRCMP_EQUAL("abc", argv[0]);
STRCMP_EQUAL("de", argv[1]);
STRCMP_EQUAL("fghi", argv[2]);
POINTERS_EQUAL(NULL, argv[3]);
string_free_split (argv);
/* standard split with comma separator and empty item (ignore this item) */
argc = -1;
argv = string_split ("abc,,fghi", ",", 0, 0, &argc);
LONGS_EQUAL(2, argc);
CHECK(argv);
STRCMP_EQUAL("abc", argv[0]);
STRCMP_EQUAL("fghi", argv[1]);
POINTERS_EQUAL(NULL, argv[2]);
string_free_split (argv);
/* standard split with comma separtor and empty item (keep this item) */
argc = -1;
argv = string_split ("abc,,fghi", ",", -1, 0, &argc);
LONGS_EQUAL(3, argc);
CHECK(argv);
STRCMP_EQUAL("abc", argv[0]);
STRCMP_EQUAL("", argv[1]);
STRCMP_EQUAL("fghi", argv[2]);
POINTERS_EQUAL(NULL, argv[3]);
string_free_split (argv);
/* standard split with comma separtor and empty items (keep them) */
argc = -1;
argv = string_split (",abc,,fghi,", ",", -1, 0, &argc);
LONGS_EQUAL(5, argc);
CHECK(argv);
STRCMP_EQUAL("", argv[0]);
STRCMP_EQUAL("abc", argv[1]);
STRCMP_EQUAL("", argv[2]);
STRCMP_EQUAL("fghi", argv[3]);
STRCMP_EQUAL("", argv[4]);
POINTERS_EQUAL(NULL, argv[5]);
string_free_split (argv);
/*
* standard split with comma separtor and empty items (keep them),
* max 2 items
*/
argc = -1;
argv = string_split (",abc,,fghi,", ",", -1, 2, &argc);
LONGS_EQUAL(2, argc);
CHECK(argv);
STRCMP_EQUAL("", argv[0]);
STRCMP_EQUAL("abc", argv[1]);
POINTERS_EQUAL(NULL, argv[2]);
string_free_split (argv);
/*
* standard split with comma separtor and empty items (keep them),
* max 3 items
*/
argc = -1;
argv = string_split (",abc,,fghi,", ",", -1, 3, &argc);
LONGS_EQUAL(3, argc);
CHECK(argv);
STRCMP_EQUAL("", argv[0]);
STRCMP_EQUAL("abc", argv[1]);
STRCMP_EQUAL("", argv[2]);
POINTERS_EQUAL(NULL, argv[3]);
string_free_split (argv);
/*
* standard split with comma separtor and empty items (keep them),
* max 4 items
*/
argc = -1;
argv = string_split (",abc,,fghi,", ",", -1, 4, &argc);
LONGS_EQUAL(4, argc);
CHECK(argv);
STRCMP_EQUAL("", argv[0]);
STRCMP_EQUAL("abc", argv[1]);
STRCMP_EQUAL("", argv[2]);
STRCMP_EQUAL("fghi", argv[3]);
POINTERS_EQUAL(NULL, argv[4]);
string_free_split (argv);
}
/*