tests/slist: Exercise CONTAINER macros
Change-Id: I8439febd605c50ee829f16bc68c53c7d5aebd5d2 Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
This commit is contained in:
parent
fd36f9c644
commit
2970771bbe
1 changed files with 111 additions and 36 deletions
|
@ -9,15 +9,22 @@
|
||||||
|
|
||||||
static sys_slist_t test_list;
|
static sys_slist_t test_list;
|
||||||
|
|
||||||
static sys_snode_t test_node_1;
|
struct container_node {
|
||||||
static sys_snode_t test_node_2;
|
sys_snode_t node;
|
||||||
static sys_snode_t test_node_3;
|
int unused;
|
||||||
static sys_snode_t test_node_4;
|
};
|
||||||
|
|
||||||
|
static struct container_node test_node_1;
|
||||||
|
static struct container_node test_node_2;
|
||||||
|
static struct container_node test_node_3;
|
||||||
|
static struct container_node test_node_4;
|
||||||
|
|
||||||
static inline bool verify_emptyness(sys_slist_t *list)
|
static inline bool verify_emptyness(sys_slist_t *list)
|
||||||
{
|
{
|
||||||
sys_snode_t *node;
|
sys_snode_t *node;
|
||||||
sys_snode_t *s_node;
|
sys_snode_t *s_node;
|
||||||
|
struct container_node *cnode;
|
||||||
|
struct container_node *s_cnode;
|
||||||
int count;
|
int count;
|
||||||
|
|
||||||
if (!sys_slist_is_empty(list)) {
|
if (!sys_slist_is_empty(list)) {
|
||||||
|
@ -49,6 +56,24 @@ static inline bool verify_emptyness(sys_slist_t *list)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
count = 0;
|
||||||
|
SYS_SLIST_FOR_EACH_CONTAINER(list, cnode, node) {
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (count) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
count = 0;
|
||||||
|
SYS_SLIST_FOR_EACH_CONTAINER_SAFE(list, cnode, s_cnode, node) {
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (count) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -56,6 +81,8 @@ static inline bool verify_content_amount(sys_slist_t *list, int amount)
|
||||||
{
|
{
|
||||||
sys_snode_t *node;
|
sys_snode_t *node;
|
||||||
sys_snode_t *s_node;
|
sys_snode_t *s_node;
|
||||||
|
struct container_node *cnode;
|
||||||
|
struct container_node *s_cnode;
|
||||||
int count;
|
int count;
|
||||||
|
|
||||||
if (sys_slist_is_empty(list)) {
|
if (sys_slist_is_empty(list)) {
|
||||||
|
@ -88,6 +115,24 @@ static inline bool verify_content_amount(sys_slist_t *list, int amount)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
count = 0;
|
||||||
|
SYS_SLIST_FOR_EACH_CONTAINER(list, cnode, node) {
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (count != amount) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
count = 0;
|
||||||
|
SYS_SLIST_FOR_EACH_CONTAINER_SAFE(list, cnode, s_cnode, node) {
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (count != amount) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -124,69 +169,99 @@ void slist_test(void)
|
||||||
assert_true((verify_emptyness(&test_list)), "test_list should be empty");
|
assert_true((verify_emptyness(&test_list)), "test_list should be empty");
|
||||||
|
|
||||||
/* Appending node 1 */
|
/* Appending node 1 */
|
||||||
sys_slist_append(&test_list, &test_node_1);
|
sys_slist_append(&test_list, &test_node_1.node);
|
||||||
assert_true((verify_content_amount(&test_list, 1)), "test_list has wrong content");
|
assert_true((verify_content_amount(&test_list, 1)),
|
||||||
|
"test_list has wrong content");
|
||||||
|
|
||||||
assert_true((verify_tail_head(&test_list, &test_node_1, &test_node_1, true)), "test_list head/tail are wrong");
|
assert_true((verify_tail_head(&test_list, &test_node_1.node,
|
||||||
|
&test_node_1.node, true)),
|
||||||
|
"test_list head/tail are wrong");
|
||||||
|
|
||||||
/* Finding and removing node 1 */
|
/* Finding and removing node 1 */
|
||||||
sys_slist_find_and_remove(&test_list, &test_node_1);
|
sys_slist_find_and_remove(&test_list, &test_node_1.node);
|
||||||
assert_true((verify_emptyness(&test_list)), "test_list should be empty");
|
assert_true((verify_emptyness(&test_list)),
|
||||||
|
"test_list should be empty");
|
||||||
|
|
||||||
/* Prepending node 1 */
|
/* Prepending node 1 */
|
||||||
sys_slist_prepend(&test_list, &test_node_1);
|
sys_slist_prepend(&test_list, &test_node_1.node);
|
||||||
assert_true((verify_content_amount(&test_list, 1)), "test_list has wrong content");
|
assert_true((verify_content_amount(&test_list, 1)),
|
||||||
|
"test_list has wrong content");
|
||||||
|
|
||||||
assert_true((verify_tail_head(&test_list, &test_node_1, &test_node_1, true)), "test_list head/tail are wrong");
|
assert_true((verify_tail_head(&test_list, &test_node_1.node,
|
||||||
|
&test_node_1.node, true)),
|
||||||
|
"test_list head/tail are wrong");
|
||||||
|
|
||||||
/* Removing node 1 */
|
/* Removing node 1 */
|
||||||
sys_slist_remove(&test_list, NULL, &test_node_1);
|
sys_slist_remove(&test_list, NULL, &test_node_1.node);
|
||||||
assert_true((verify_emptyness(&test_list)), "test_list should be empty");
|
assert_true((verify_emptyness(&test_list)),
|
||||||
|
"test_list should be empty");
|
||||||
|
|
||||||
/* Appending node 1 */
|
/* Appending node 1 */
|
||||||
sys_slist_append(&test_list, &test_node_1);
|
sys_slist_append(&test_list, &test_node_1.node);
|
||||||
/* Prepending node 2 */
|
/* Prepending node 2 */
|
||||||
sys_slist_prepend(&test_list, &test_node_2);
|
sys_slist_prepend(&test_list, &test_node_2.node);
|
||||||
|
|
||||||
assert_true((verify_content_amount(&test_list, 2)), "test_list has wrong content");
|
assert_true((verify_content_amount(&test_list, 2)),
|
||||||
|
"test_list has wrong content");
|
||||||
|
|
||||||
assert_true((verify_tail_head(&test_list, &test_node_2, &test_node_1, false)), "test_list head/tail are wrong");
|
assert_true((verify_tail_head(&test_list, &test_node_2.node,
|
||||||
|
&test_node_1.node, false)),
|
||||||
|
"test_list head/tail are wrong");
|
||||||
|
|
||||||
/* Appending node 3 */
|
/* Appending node 3 */
|
||||||
sys_slist_append(&test_list, &test_node_3);
|
sys_slist_append(&test_list, &test_node_3.node);
|
||||||
|
|
||||||
assert_true((verify_content_amount(&test_list, 3)), "test_list has wrong content");
|
assert_true((verify_content_amount(&test_list, 3)),
|
||||||
|
"test_list has wrong content");
|
||||||
|
|
||||||
assert_true((verify_tail_head(&test_list, &test_node_2, &test_node_3, false)), "test_list head/tail are wrong");
|
assert_true((verify_tail_head(&test_list, &test_node_2.node,
|
||||||
|
&test_node_3.node, false)),
|
||||||
|
"test_list head/tail are wrong");
|
||||||
|
|
||||||
assert_true((sys_slist_peek_next(&test_node_2) == &test_node_1), "test_list node links are wrong");
|
assert_true((sys_slist_peek_next(&test_node_2.node) ==
|
||||||
|
&test_node_1.node),
|
||||||
|
"test_list node links are wrong");
|
||||||
|
|
||||||
/* Inserting node 4 after node 2 */
|
/* Inserting node 4 after node 2 */
|
||||||
sys_slist_insert(&test_list, &test_node_2, &test_node_4);
|
sys_slist_insert(&test_list, &test_node_2.node, &test_node_4.node);
|
||||||
|
|
||||||
assert_true((verify_tail_head(&test_list, &test_node_2, &test_node_3, false)), "test_list head/tail are wrong");
|
assert_true((verify_tail_head(&test_list, &test_node_2.node,
|
||||||
|
&test_node_3.node, false)),
|
||||||
|
"test_list head/tail are wrong");
|
||||||
|
|
||||||
assert_true((sys_slist_peek_next(&test_node_2) == &test_node_4), "test_list node links are wrong");
|
assert_true((sys_slist_peek_next(&test_node_2.node) ==
|
||||||
|
&test_node_4.node),
|
||||||
|
"test_list node links are wrong");
|
||||||
|
|
||||||
/* Finding and removing node 1 */
|
/* Finding and removing node 1 */
|
||||||
sys_slist_find_and_remove(&test_list, &test_node_1);
|
sys_slist_find_and_remove(&test_list, &test_node_1.node);
|
||||||
assert_true((verify_content_amount(&test_list, 3)), "test_list has wrong content");
|
assert_true((verify_content_amount(&test_list, 3)),
|
||||||
|
"test_list has wrong content");
|
||||||
|
|
||||||
assert_true((verify_tail_head(&test_list, &test_node_2, &test_node_3, false)), "test_list head/tail are wrong");
|
assert_true((verify_tail_head(&test_list, &test_node_2.node,
|
||||||
|
&test_node_3.node, false)),
|
||||||
|
"test_list head/tail are wrong");
|
||||||
|
|
||||||
/* Removing node 3 */
|
/* Removing node 3 */
|
||||||
sys_slist_remove(&test_list, &test_node_4, &test_node_3);
|
sys_slist_remove(&test_list, &test_node_4.node, &test_node_3.node);
|
||||||
assert_true((verify_content_amount(&test_list, 2)), "test_list has wrong content");
|
assert_true((verify_content_amount(&test_list, 2)),
|
||||||
|
"test_list has wrong content");
|
||||||
|
|
||||||
assert_true((verify_tail_head(&test_list, &test_node_2, &test_node_4, false)), "test_list head/tail are wrong");
|
assert_true((verify_tail_head(&test_list, &test_node_2.node,
|
||||||
|
&test_node_4.node, false)),
|
||||||
|
"test_list head/tail are wrong");
|
||||||
|
|
||||||
/* Removing node 4 */
|
/* Removing node 4 */
|
||||||
sys_slist_remove(&test_list, &test_node_2, &test_node_4);
|
sys_slist_remove(&test_list, &test_node_2.node, &test_node_4.node);
|
||||||
assert_true((verify_content_amount(&test_list, 1)), "test_list has wrong content");
|
assert_true((verify_content_amount(&test_list, 1)),
|
||||||
|
"test_list has wrong content");
|
||||||
|
|
||||||
assert_true((verify_tail_head(&test_list, &test_node_2, &test_node_2, true)), "test_list head/tail are wrong");
|
assert_true((verify_tail_head(&test_list, &test_node_2.node,
|
||||||
|
&test_node_2.node, true)),
|
||||||
|
"test_list head/tail are wrong");
|
||||||
|
|
||||||
/* Removing node 2 */
|
/* Removing node 2 */
|
||||||
sys_slist_remove(&test_list, NULL, &test_node_2);
|
sys_slist_remove(&test_list, NULL, &test_node_2.node);
|
||||||
assert_true((verify_emptyness(&test_list)), "test_list should be empty");
|
assert_true((verify_emptyness(&test_list)),
|
||||||
|
"test_list should be empty");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue