add tests.c
This commit is contained in:
parent
f885f08dcc
commit
3eee3ea684
121
src/tests.c
Normal file
121
src/tests.c
Normal file
@ -0,0 +1,121 @@
|
||||
#include "util.h"
|
||||
#include <stdarg.h>
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
#include <setjmp.h>
|
||||
#include <cmocka.h>
|
||||
|
||||
static void test_wm_treenode_new(void **state)
|
||||
{
|
||||
TreeNode *node = wm_treenode_new(NODE_VERTICAL, NULL);
|
||||
assert_null(node->client);
|
||||
assert_non_null(node->children.nodes);
|
||||
assert_int_equal(node->children.size, 0);
|
||||
assert_int_equal(node->type, NODE_VERTICAL);
|
||||
|
||||
wm_treenode_free(node);
|
||||
}
|
||||
|
||||
static void test_wm_nodearray_push(void **state)
|
||||
{
|
||||
TreeNode *node = wm_treenode_new(NODE_VERTICAL, NULL);
|
||||
TreeNode *node1 = wm_treenode_new(NODE_VERTICAL, node);
|
||||
|
||||
node1->id = 123;
|
||||
|
||||
assert_null(node->parent);
|
||||
assert_ptr_equal(node1->parent, node);
|
||||
|
||||
wm_nodearray_push(&node->children, node1);
|
||||
|
||||
assert_int_equal(node->children.size, 1);
|
||||
assert_ptr_equal(node->children.nodes[0], node1);
|
||||
assert_int_equal(node1->id, 123);
|
||||
assert_int_equal(node->children.nodes[0]->id, 123);
|
||||
|
||||
wm_treenode_free(node);
|
||||
wm_treenode_free(node1);
|
||||
}
|
||||
|
||||
static void test_wm_find_client_nodes_ptr(void **state)
|
||||
{
|
||||
TreeNode *root = wm_treenode_new(NODE_VERTICAL, NULL);
|
||||
TreeNode *node1 = wm_treenode_new(NODE_CLIENT, NULL);
|
||||
TreeNode *node2 = wm_treenode_new(NODE_CLIENT, NULL);
|
||||
|
||||
node1->client = (Client*)0x123;
|
||||
node2->client = (Client*)0x456;
|
||||
|
||||
const unsigned long ids[] = {123, 456};
|
||||
|
||||
node1->id = ids[0];
|
||||
node2->id = ids[1];
|
||||
|
||||
wm_nodearray_push(&root->children, node1);
|
||||
wm_nodearray_push(&root->children, node2);
|
||||
|
||||
assert_int_equal(root->children.size, 2);
|
||||
assert_ptr_equal(root->children.nodes[0], node1);
|
||||
assert_ptr_equal(root->children.nodes[1], node2);
|
||||
|
||||
PtrArray client_ptrs = wm_treenode_find_client_nodes_ptr(root);
|
||||
|
||||
assert_int_equal(client_ptrs.size, 2);
|
||||
assert_in_set(((TreeNode*)client_ptrs.ptrs[0])->id, ids, 2);
|
||||
assert_in_set(((TreeNode*)client_ptrs.ptrs[1])->id, ids, 2);
|
||||
|
||||
wm_treenode_free(root);
|
||||
wm_treenode_free(node1);
|
||||
wm_treenode_free(node2);
|
||||
wm_ptrarray_free(&client_ptrs);
|
||||
}
|
||||
|
||||
static void test_wm_all_nodes_to_ptrarray(void **state)
|
||||
{
|
||||
TreeNode *root = wm_treenode_new(NODE_VERTICAL, NULL);
|
||||
TreeNode *node1 = wm_treenode_new(NODE_CLIENT, NULL);
|
||||
TreeNode *node2 = wm_treenode_new(NODE_CLIENT, NULL);
|
||||
TreeNode *node3 = wm_treenode_new(NODE_CLIENT, NULL);
|
||||
|
||||
const unsigned long ids[] = {1, 2, 3, 4};
|
||||
|
||||
root->id = ids[0];
|
||||
node1->id = ids[1];
|
||||
node2->id = ids[2];
|
||||
node3->id = ids[3];
|
||||
|
||||
wm_nodearray_push(&root->children, node1);
|
||||
wm_nodearray_push(&root->children, node2);
|
||||
wm_nodearray_push(&root->children, node3);
|
||||
|
||||
assert_int_equal(root->children.size, 3);
|
||||
assert_ptr_equal(root->children.nodes[0], node1);
|
||||
assert_ptr_equal(root->children.nodes[1], node2);
|
||||
assert_ptr_equal(root->children.nodes[2], node3);
|
||||
|
||||
PtrArray all_nodes = wm_all_nodes_to_ptrarray(root);
|
||||
|
||||
assert_int_equal(all_nodes.size, 4);
|
||||
assert_in_set(((TreeNode*)all_nodes.ptrs[0])->id, ids, 4);
|
||||
assert_in_set(((TreeNode*)all_nodes.ptrs[1])->id, ids, 4);
|
||||
assert_in_set(((TreeNode*)all_nodes.ptrs[2])->id, ids, 4);
|
||||
assert_in_set(((TreeNode*)all_nodes.ptrs[3])->id, ids, 4);
|
||||
|
||||
wm_treenode_free(root);
|
||||
wm_treenode_free(node1);
|
||||
wm_treenode_free(node2);
|
||||
wm_treenode_free(node3);
|
||||
wm_ptrarray_free(&all_nodes);
|
||||
}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
const struct CMUnitTest tests[] = {
|
||||
cmocka_unit_test(test_wm_treenode_new),
|
||||
cmocka_unit_test(test_wm_nodearray_push),
|
||||
cmocka_unit_test(test_wm_find_client_nodes_ptr),
|
||||
cmocka_unit_test(test_wm_all_nodes_to_ptrarray),
|
||||
};
|
||||
|
||||
return cmocka_run_group_tests(tests, NULL, NULL);
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user