Skip to content

Commit 208642c

Browse files
amishhaagitster
authored andcommitted
u-string-list: add unit tests for string-list methods
Unit tests in u-string-list.c does not cover several methods in string-list, this gap in coverage makes it difficult to ensure no regressions are introduced in future changes. Add unit tests for the following methods to enhance coverage: string_list_remove_empty_items() unsorted_string_list_has_string() unsorted_string_list_delete_item() string_list_has_string() string_list_insert() string_list_sort() string_list_remove() Signed-off-by: Amisha Chhajed <amishhhaaaa@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
1 parent 6959eee commit 208642c

1 file changed

Lines changed: 209 additions & 0 deletions

File tree

t/unit-tests/u-string-list.c

Lines changed: 209 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,138 @@ void test_string_list__filter(void)
243243
t_string_list_clear(&list, 0);
244244
}
245245

246+
static void t_string_list_has_string(
247+
struct string_list *list,
248+
const char *string,
249+
int expected)
250+
{
251+
int has_string = string_list_has_string(list, string);
252+
cl_assert_equal_i(has_string, expected);
253+
}
254+
255+
void test_string_list__has_string(void)
256+
{
257+
struct string_list list = STRING_LIST_INIT_DUP;
258+
259+
t_create_string_list_dup(&list, 0, NULL);
260+
t_string_list_has_string(&list, "", 0);
261+
262+
t_create_string_list_dup(&list, 0, "a", "b", "c", NULL);
263+
t_string_list_has_string(&list, "a", 1);
264+
t_string_list_has_string(&list, "b", 1);
265+
t_string_list_has_string(&list, "c", 1);
266+
t_string_list_has_string(&list, "d", 0);
267+
268+
t_string_list_clear(&list, 0);
269+
}
270+
271+
static void t_string_list_insert(struct string_list *expected_strings, ...)
272+
{
273+
struct string_list strings_to_insert = STRING_LIST_INIT_DUP;
274+
struct string_list list = STRING_LIST_INIT_DUP;
275+
va_list ap;
276+
277+
va_start(ap, expected_strings);
278+
t_vcreate_string_list_dup(&strings_to_insert, 0, ap);
279+
va_end(ap);
280+
281+
for (size_t i = 0; i < strings_to_insert.nr; i++)
282+
string_list_insert(&list, strings_to_insert.items[i].string);
283+
284+
t_string_list_equal(&list, expected_strings);
285+
286+
string_list_clear(&strings_to_insert, 0);
287+
string_list_clear(&list, 0);
288+
}
289+
290+
void test_string_list__insert(void)
291+
{
292+
struct string_list expected_strings = STRING_LIST_INIT_DUP;
293+
294+
t_create_string_list_dup(&expected_strings, 0, NULL);
295+
t_string_list_insert(&expected_strings, NULL);
296+
297+
t_create_string_list_dup(&expected_strings, 0, "a", "b", NULL);
298+
t_string_list_insert(&expected_strings, "b", "a", "a", "b", NULL);
299+
300+
t_create_string_list_dup(&expected_strings, 0, "a", "b", "c", NULL);
301+
t_string_list_insert(&expected_strings, "c", "b", "a", "c", "b", NULL);
302+
303+
t_create_string_list_dup(&expected_strings, 0, "", "a", NULL);
304+
t_string_list_insert(&expected_strings, "a", "a", "a", "", NULL);
305+
306+
t_string_list_clear(&expected_strings, 0);
307+
}
308+
309+
static void t_string_list_sort(struct string_list *list, ...)
310+
{
311+
struct string_list expected_strings = STRING_LIST_INIT_DUP;
312+
va_list ap;
313+
314+
va_start(ap, list);
315+
t_vcreate_string_list_dup(&expected_strings, 0, ap);
316+
va_end(ap);
317+
318+
string_list_sort(list);
319+
t_string_list_equal(list, &expected_strings);
320+
321+
string_list_clear(&expected_strings, 0);
322+
}
323+
324+
void test_string_list__sort(void)
325+
{
326+
struct string_list list = STRING_LIST_INIT_DUP;
327+
328+
t_create_string_list_dup(&list, 0, NULL);
329+
t_string_list_sort(&list, NULL);
330+
331+
t_create_string_list_dup(&list, 0, "b", "", "a", NULL);
332+
t_string_list_sort(&list, "", "a", "b", NULL);
333+
334+
t_create_string_list_dup(&list, 0, "c", "a", "b", "a", NULL);
335+
t_string_list_sort(&list, "a", "a", "b", "c", NULL);
336+
337+
t_string_list_clear(&list, 0);
338+
}
339+
340+
static void t_string_list_remove(
341+
struct string_list *expected_strings,
342+
struct string_list *list,
343+
char const *str)
344+
{
345+
string_list_remove(list, str, 0);
346+
t_string_list_equal(list, expected_strings);
347+
}
348+
349+
void test_string_list__remove(void)
350+
{
351+
struct string_list expected_strings = STRING_LIST_INIT_DUP;
352+
struct string_list list = STRING_LIST_INIT_DUP;
353+
354+
t_create_string_list_dup(&expected_strings, 0, NULL);
355+
t_create_string_list_dup(&list, 0, NULL);
356+
t_string_list_remove(&expected_strings, &list, "");
357+
358+
t_create_string_list_dup(&expected_strings, 0, "a", NULL);
359+
t_create_string_list_dup(&list, 0, "a", "a", NULL);
360+
t_string_list_remove(&expected_strings, &list, "a");
361+
362+
t_create_string_list_dup(&expected_strings, 0, "a", "b", "b", NULL);
363+
t_create_string_list_dup(&list, 0, "a", "b", "b", "c", NULL);
364+
t_string_list_remove(&expected_strings, &list, "c");
365+
366+
t_create_string_list_dup(&expected_strings, 0, "a", "b", "d", NULL);
367+
t_create_string_list_dup(&list, 0, "a", "b", "c", "d", NULL);
368+
t_string_list_remove(&expected_strings, &list, "c");
369+
370+
t_create_string_list_dup(&expected_strings, 0, "a", "b", "c", "d", NULL);
371+
t_create_string_list_dup(&list, 0, "a", "b", "c", "d", NULL);
372+
t_string_list_remove(&expected_strings, &list, "e");
373+
374+
t_string_list_clear(&expected_strings, 0);
375+
t_string_list_clear(&list, 0);
376+
}
377+
246378
static void t_string_list_remove_duplicates(struct string_list *list, ...)
247379
{
248380
struct string_list expected_strings = STRING_LIST_INIT_DUP;
@@ -304,3 +436,80 @@ void test_string_list__remove_duplicates(void)
304436

305437
t_string_list_clear(&list, 0);
306438
}
439+
440+
static void t_string_list_remove_empty_items(
441+
struct string_list *expected_strings,
442+
struct string_list *list)
443+
{
444+
string_list_remove_empty_items(list, 0);
445+
t_string_list_equal(list, expected_strings);
446+
}
447+
448+
void test_string_list__remove_empty_items(void)
449+
{
450+
struct string_list expected_strings = STRING_LIST_INIT_DUP;
451+
struct string_list list = STRING_LIST_INIT_DUP;
452+
453+
t_create_string_list_dup(&expected_strings, 0, NULL);
454+
t_create_string_list_dup(&list, 0, "", "", "", NULL);
455+
t_string_list_remove_empty_items(&expected_strings, &list);
456+
457+
t_create_string_list_dup(&expected_strings, 0, "a", "b", NULL);
458+
t_create_string_list_dup(&list, 0, "a", "", "b", "", NULL);
459+
t_string_list_remove_empty_items(&expected_strings, &list);
460+
461+
t_string_list_clear(&expected_strings, 0);
462+
t_string_list_clear(&list, 0);
463+
}
464+
465+
static void t_string_list_unsorted_string_list_has_string(
466+
struct string_list *list,
467+
const char *str, int expected)
468+
{
469+
int has_string = unsorted_string_list_has_string(list, str);
470+
cl_assert_equal_i(has_string, expected);
471+
}
472+
473+
void test_string_list__unsorted_string_list_has_string(void)
474+
{
475+
struct string_list list = STRING_LIST_INIT_DUP;
476+
477+
t_create_string_list_dup(&list, 0, "b", "d", "a", NULL);
478+
t_string_list_unsorted_string_list_has_string(&list, "a", 1);
479+
t_string_list_unsorted_string_list_has_string(&list, "b", 1);
480+
t_string_list_unsorted_string_list_has_string(&list, "c", 0);
481+
t_string_list_unsorted_string_list_has_string(&list, "d", 1);
482+
483+
t_string_list_clear(&list, 0);
484+
}
485+
486+
static void t_string_list_unsorted_string_list_delete_item(
487+
struct string_list *expected_list,
488+
struct string_list *list,
489+
int i)
490+
{
491+
unsorted_string_list_delete_item(list, i, 0);
492+
493+
t_string_list_equal(list, expected_list);
494+
}
495+
496+
void test_string_list__unsorted_string_list_delete_item(void)
497+
{
498+
struct string_list expected_strings = STRING_LIST_INIT_DUP;
499+
struct string_list list = STRING_LIST_INIT_DUP;
500+
501+
t_create_string_list_dup(&expected_strings, 0, "a", "c", "b", NULL);
502+
t_create_string_list_dup(&list, 0, "a", "d", "b", "c", NULL);
503+
t_string_list_unsorted_string_list_delete_item(&expected_strings, &list, 1);
504+
505+
t_create_string_list_dup(&expected_strings, 0, NULL);
506+
t_create_string_list_dup(&list, 0, "", NULL);
507+
t_string_list_unsorted_string_list_delete_item(&expected_strings, &list, 0);
508+
509+
t_create_string_list_dup(&expected_strings, 0, "a", "d", "c", "b", NULL);
510+
t_create_string_list_dup(&list, 0, "a", "d", "c", "b", "d", NULL);
511+
t_string_list_unsorted_string_list_delete_item(&expected_strings, &list, 4);
512+
513+
t_string_list_clear(&expected_strings, 0);
514+
t_string_list_clear(&list, 0);
515+
}

0 commit comments

Comments
 (0)