Skip to content

Commit 4899c09

Browse files
Andrew Boienashif
authored andcommitted
lib: os: fix slist code coverage
Some of the slist APIs were only being indirectly exercised; add to the slist test case to cover everything explicitly. Signed-off-by: Andrew Boie <[email protected]>
1 parent 528f787 commit 4899c09

File tree

1 file changed

+64
-3
lines changed

1 file changed

+64
-3
lines changed

tests/kernel/common/src/slist.c

Lines changed: 64 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
#include <misc/slist.h>
99

1010
static sys_slist_t test_list;
11+
static sys_slist_t append_list;
1112

1213
struct container_node {
1314
sys_snode_t node;
@@ -174,7 +175,8 @@ static inline bool verify_tail_head(sys_slist_t *list,
174175
*
175176
* @see sys_slist_init(), sys_slist_append(),
176177
* sys_slist_find_and_remove(), sys_slist_prepend(),
177-
* sys_slist_remove()
178+
* sys_slist_remove(), sys_slist_get(), sys_slist_get_not_empty(),
179+
* sys_slist_append_list(), sys_slist_merge_list()
178180
*/
179181
void test_slist(void)
180182
{
@@ -236,14 +238,14 @@ void test_slist(void)
236238
&test_node_1.node),
237239
"test_list node links are wrong");
238240

239-
/* Inserting node 4 after node 2 */
241+
/* Inserting node 4 after node 2, peek with nocheck variant */
240242
sys_slist_insert(&test_list, &test_node_2.node, &test_node_4.node);
241243

242244
zassert_true((verify_tail_head(&test_list, &test_node_2.node,
243245
&test_node_3.node, false)),
244246
"test_list head/tail are wrong");
245247

246-
zassert_true((sys_slist_peek_next(&test_node_2.node) ==
248+
zassert_true((sys_slist_peek_next_no_check(&test_node_2.node) ==
247249
&test_node_4.node),
248250
"test_list node links are wrong");
249251

@@ -323,6 +325,65 @@ void test_slist(void)
323325
ii++;
324326
}
325327
zassert_equal(ii, 2, "");
328+
329+
/* test sys_slist_get_not_empty() and sys_slist_get() APIs */
330+
for (ii = 0; ii < 6; ii++) {
331+
node = sys_slist_get_not_empty(&test_list);
332+
zassert_equal(((struct data_node *)node)->data, ii, "");
333+
}
334+
for (ii = 0; ii < 6; ii++) {
335+
/* regenerate test_list since we just emptied it */
336+
sys_slist_append(&test_list, &data_node[ii].node);
337+
}
338+
for (ii = 0; ii < 6; ii++) {
339+
node = sys_slist_get(&test_list);
340+
zassert_equal(((struct data_node *)node)->data, ii, "");
341+
}
342+
node = sys_slist_get(&test_list);
343+
zassert_equal(node, NULL, "");
344+
345+
/* test sys_slist_append_list() */
346+
sys_slist_init(&append_list);
347+
struct data_node data_node_append[6] = {
348+
{ .data = 6 },
349+
{ .data = 7 },
350+
{ .data = 8 },
351+
{ .data = 9 },
352+
{ .data = 10 },
353+
{ .data = 11 },
354+
};
355+
for (ii = 0; ii < 6; ii++) {
356+
/* regenerate test_list, which we just emptied */
357+
sys_slist_append(&test_list, &data_node[ii].node);
358+
/* Build append_list so that the node pointers are correct */
359+
sys_slist_append(&append_list, &data_node_append[ii].node);
360+
}
361+
sys_slist_append_list(&test_list, &data_node_append[0].node,
362+
&data_node_append[5].node);
363+
for (ii = 0; ii < 12; ii++) {
364+
node = sys_slist_get(&test_list);
365+
zassert_equal(((struct data_node *)node)->data, ii,
366+
"expected %d got %d", ii,
367+
((struct data_node *)node)->data);
368+
}
369+
370+
/* test sys_slist_merge_slist */
371+
sys_slist_init(&test_list);
372+
sys_slist_init(&append_list);
373+
for (ii = 0; ii < 6; ii++) {
374+
/* regenerate both lists */
375+
sys_slist_append(&test_list, &data_node[ii].node);
376+
sys_slist_append(&append_list, &data_node_append[ii].node);
377+
}
378+
sys_slist_merge_slist(&test_list, &append_list);
379+
for (ii = 0; ii < 12; ii++) {
380+
node = sys_slist_get(&test_list);
381+
zassert_equal(((struct data_node *)node)->data, ii,
382+
"expected %d got %d", ii,
383+
((struct data_node *)node)->data);
384+
}
385+
zassert_true(sys_slist_is_empty(&append_list),
386+
"merged list is not empty");
326387
}
327388

328389
/**

0 commit comments

Comments
 (0)