Compare commits
2 Commits
d5c745f8e1
...
ff1c32bb33
Author | SHA1 | Date | |
---|---|---|---|
ff1c32bb33 | |||
8629efe06f |
19
src/tests.c
19
src/tests.c
@ -196,6 +196,24 @@ static void test_wm_treenode_all_lmds(void **state)
|
||||
wm_ptrarray_free(&ret);
|
||||
}
|
||||
|
||||
static void test_wm_treenode_all_keyroots(void **state)
|
||||
{
|
||||
TreeNode *node1 = (TreeNode*)*state;
|
||||
|
||||
PtrArray keyroots = wm_treenode_all_keyroots(node1);
|
||||
TreeNode **keyroot_nodes = (TreeNode**)keyroots.ptrs;
|
||||
|
||||
assert_int_equal(keyroots.size, 5);
|
||||
|
||||
assert_int_equal(keyroot_nodes[0]->id, 5);
|
||||
assert_int_equal(keyroot_nodes[1]->id, 6);
|
||||
assert_int_equal(keyroot_nodes[2]->id, 8);
|
||||
assert_int_equal(keyroot_nodes[3]->id, 3);
|
||||
assert_int_equal(keyroot_nodes[4]->id, 1);
|
||||
|
||||
wm_ptrarray_free(&keyroots);
|
||||
}
|
||||
|
||||
static int test2_setup(void **state)
|
||||
{
|
||||
TreeNode *node1 = wm_treenode_new(NODE_VERTICAL, NULL);
|
||||
@ -299,6 +317,7 @@ int main(void)
|
||||
cmocka_unit_test(test_wm_treenode_lmd),
|
||||
cmocka_unit_test(test_wm_is_treenode_keyroot),
|
||||
cmocka_unit_test(test_wm_treenode_all_lmds),
|
||||
cmocka_unit_test(test_wm_treenode_all_keyroots),
|
||||
};
|
||||
|
||||
cmocka_run_group_tests(test_group1, NULL, NULL);
|
||||
|
17
src/util.c
17
src/util.c
@ -313,6 +313,23 @@ bool wm_is_treenode_keyroot(TreeNode *node)
|
||||
return wm_treenode_lmd(node) != wm_treenode_lmd(node->parent);
|
||||
}
|
||||
|
||||
PtrArray wm_treenode_all_keyroots(TreeNode *node)
|
||||
{
|
||||
assert(node);
|
||||
|
||||
PtrArray ret = wm_ptrarray_new();
|
||||
PtrArray postorder = wm_postorder_traversal(node);
|
||||
|
||||
for (size_t i = 0; i < postorder.size; i++) {
|
||||
TreeNode *node = ((TreeNode**)postorder.ptrs)[i];
|
||||
if (wm_is_treenode_keyroot(node))
|
||||
wm_ptrarray_push(&ret, node);
|
||||
}
|
||||
|
||||
wm_ptrarray_free(&postorder);
|
||||
return ret;
|
||||
}
|
||||
|
||||
void wm_treenode_print(TreeNode *node)
|
||||
{
|
||||
char *str = wm_treenode_to_str(node);
|
||||
|
@ -106,6 +106,7 @@ TreeNode* wm_treenode_lmd(TreeNode *node);
|
||||
PtrArray wm_treenode_all_lmds(TreeNode *node);
|
||||
PtrArray wm_postorder_traversal(TreeNode *tree);
|
||||
bool wm_is_treenode_keyroot(TreeNode *node);
|
||||
PtrArray wm_treenode_all_keyroots(TreeNode *node);
|
||||
|
||||
ClientArray wm_clientarray_new();
|
||||
void wm_clientarray_push(ClientArray *arr, Client node);
|
||||
|
Loading…
x
Reference in New Issue
Block a user