add tests for wm_treenode_remove_client
This commit is contained in:
parent
3742a49f32
commit
653b5112ba
112
src/tests.c
112
src/tests.c
@ -1,4 +1,6 @@
|
||||
#include "util.h"
|
||||
#include "client.h"
|
||||
#include "wm.h"
|
||||
#include <stdarg.h>
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
@ -173,6 +175,114 @@ static void test_wm_find_client_nodes(void **state)
|
||||
wm_nodearray_free(client_nodes);
|
||||
}
|
||||
|
||||
static void test_wm_treenode_remove_client1(void **state)
|
||||
{
|
||||
TreeNode *root = wm_treenode_new(NODE_VERTICAL, NULL);
|
||||
TreeNode *parent_node1 = wm_treenode_new(NODE_VERTICAL, root);
|
||||
TreeNode *parent_node2 = wm_treenode_new(NODE_HORIZONTAL, root);
|
||||
TreeNode *client_node1 = wm_treenode_new(NODE_CLIENT, parent_node1);
|
||||
TreeNode *client_node2 = wm_treenode_new(NODE_CLIENT, parent_node1);
|
||||
TreeNode *client_node3 = wm_treenode_new(NODE_CLIENT, parent_node2);
|
||||
TreeNode *client_node4 = wm_treenode_new(NODE_CLIENT, parent_node2);
|
||||
|
||||
wm_nodearray_push(root->children, parent_node1);
|
||||
wm_nodearray_push(root->children, parent_node2);
|
||||
|
||||
wm_nodearray_push(parent_node1->children, client_node1);
|
||||
wm_nodearray_push(parent_node1->children, client_node2);
|
||||
|
||||
wm_nodearray_push(parent_node2->children, client_node3);
|
||||
wm_nodearray_push(parent_node2->children, client_node4);
|
||||
|
||||
Workspace ws = (Workspace) {
|
||||
.tree = root,
|
||||
.monitor = &(Monitor) {0},
|
||||
};
|
||||
Client client1 = (Client) {.ws = &ws, .name = ""};
|
||||
Client client2 = (Client) {.ws = &ws, .name = ""};
|
||||
Client client3 = (Client) {.ws = &ws, .name = ""};
|
||||
Client client4 = (Client) {.ws = &ws, .name = ""};
|
||||
|
||||
client_node1->client = &client1;
|
||||
client_node2->client = &client2;
|
||||
client_node3->client = &client3;
|
||||
client_node4->client = &client4;
|
||||
|
||||
root->pos.x = 0;
|
||||
root->pos.y = 0;
|
||||
root->pos.w = 1000;
|
||||
root->pos.w = 1000;
|
||||
|
||||
wm_treenode_split_space(root, &parent_node1->pos, &parent_node2->pos);
|
||||
wm_treenode_split_space(parent_node1, &client_node1->pos, &client_node2->pos);
|
||||
wm_treenode_split_space(parent_node2, &client_node3->pos, &client_node4->pos);
|
||||
|
||||
TreeNode *new_client_node = wm_treenode_remove_client(&(Wm) {0}, root, &client4);
|
||||
|
||||
assert_ptr_equal(new_client_node, parent_node2);
|
||||
assert_int_equal(parent_node2->type, NODE_CLIENT);
|
||||
assert_ptr_equal(parent_node2->client, &client3);
|
||||
assert_int_equal(parent_node2->children->size, 0);
|
||||
|
||||
wm_treenode_free(root);
|
||||
wm_treenode_free(parent_node1);
|
||||
wm_treenode_free(parent_node2);
|
||||
wm_treenode_free(client_node1);
|
||||
wm_treenode_free(client_node2);
|
||||
}
|
||||
|
||||
static void test_wm_treenode_remove_client2(void **state)
|
||||
{
|
||||
TreeNode *root = wm_treenode_new(NODE_VERTICAL, NULL);
|
||||
TreeNode *parent_node1 = wm_treenode_new(NODE_VERTICAL, root);
|
||||
TreeNode *client_node1 = wm_treenode_new(NODE_CLIENT, root);
|
||||
TreeNode *client_node2 = wm_treenode_new(NODE_CLIENT, parent_node1);
|
||||
TreeNode *client_node3 = wm_treenode_new(NODE_CLIENT, parent_node1);
|
||||
|
||||
TreeNode parent_node1_val = *parent_node1;
|
||||
|
||||
wm_nodearray_push(root->children, parent_node1);
|
||||
wm_nodearray_push(root->children, client_node1);
|
||||
|
||||
wm_nodearray_push(parent_node1->children, client_node2);
|
||||
wm_nodearray_push(parent_node1->children, client_node3);
|
||||
|
||||
Workspace ws = (Workspace) {
|
||||
.tree = root,
|
||||
.monitor = &(Monitor) {0},
|
||||
};
|
||||
Client client1 = (Client) {.ws = &ws, .name = ""};
|
||||
Client client2 = (Client) {.ws = &ws, .name = ""};
|
||||
Client client3 = (Client) {.ws = &ws, .name = ""};
|
||||
|
||||
client_node1->client = &client1;
|
||||
client_node2->client = &client2;
|
||||
client_node3->client = &client3;
|
||||
|
||||
root->pos.x = 0;
|
||||
root->pos.y = 0;
|
||||
root->pos.w = 1000;
|
||||
root->pos.w = 1000;
|
||||
|
||||
wm_treenode_split_space(root, &parent_node1->pos, &client_node1->pos);
|
||||
wm_treenode_split_space(parent_node1, &client_node2->pos, &client_node3->pos);
|
||||
|
||||
TreeNode *new_client_node = wm_treenode_remove_client(&(Wm) {0}, root, &client1);
|
||||
|
||||
assert_ptr_equal(new_client_node, client_node2);
|
||||
assert_int_equal(root->id, parent_node1_val.id);
|
||||
assert_ptr_equal(root->children, parent_node1_val.children);
|
||||
assert_int_equal(root->children->size, 2);
|
||||
assert_ptr_equal(root->children->nodes[0], client_node2);
|
||||
assert_ptr_equal(root->children->nodes[1], client_node3);
|
||||
assert_ptr_equal(client_node2->parent, root);
|
||||
assert_ptr_equal(client_node3->parent, root);
|
||||
|
||||
wm_treenode_free(root);
|
||||
wm_treenode_free(client_node2);
|
||||
wm_treenode_free(client_node3);
|
||||
}
|
||||
|
||||
static void test_wm_postorder_traversal(void **state)
|
||||
{
|
||||
TreeNode *node1 = (TreeNode*)*state;
|
||||
@ -372,6 +482,8 @@ int main(void)
|
||||
cmocka_unit_test(test_wm_treenode_split_space),
|
||||
cmocka_unit_test(test_wm_all_nodes_to_array),
|
||||
cmocka_unit_test(test_wm_find_client_nodes),
|
||||
cmocka_unit_test(test_wm_treenode_remove_client1),
|
||||
cmocka_unit_test(test_wm_treenode_remove_client2),
|
||||
};
|
||||
|
||||
const struct CMUnitTest test_group2[] = {
|
||||
|
Loading…
x
Reference in New Issue
Block a user