add test for wm_find_client_direction

This commit is contained in:
Akos Horvath 2024-04-06 18:01:27 +02:00
parent 8d32587144
commit cca3845a4d

View File

@ -339,6 +339,105 @@ static void test_wm_treenode_remove_client2(void **state)
wm_treenode_free(client_node3);
}
static void test_wm_find_client_direction_split(void **state)
{
TreeNode *root = wm_treenode_new(NODE_VERTICAL, NULL);
TreeNode *horizontal = wm_treenode_new(NODE_HORIZONTAL, NULL);
TreeNode *client1 = wm_treenode_new(NODE_CLIENT, NULL);
TreeNode *client2 = wm_treenode_new(NODE_CLIENT, NULL);
TreeNode *client3 = wm_treenode_new(NODE_CLIENT, NULL);
wm_treenode_add_child(root, client1);
wm_treenode_add_child(root, horizontal);
wm_treenode_add_child(horizontal, client2);
wm_treenode_add_child(horizontal, client3);
root->pos = (Rect) {.w = 1600, .h = 900, .x = 0, .y = 0};
wm_treenode_split_space(root, &client1->pos, &horizontal->pos);
wm_treenode_split_space(horizontal, &client2->pos, &client3->pos);
Workspace *w = calloc(1, sizeof(Workspace));
w->tree = root;
client1->client = calloc(1, sizeof(Client));
client2->client = calloc(1, sizeof(Client));
client3->client = calloc(1, sizeof(Client));
client1->client->name = "";
client2->client->name = "";
client3->client->name = "";
client1->client->ws = w;
client2->client->ws = w;
client3->client->ws = w;
client1->client->w = client1->pos.w; client1->client->h = client1->pos.h;
client1->client->x = client1->pos.x; client1->client->y = client1->pos.y;
client2->client->w = client2->pos.w; client2->client->h = client2->pos.h;
client2->client->x = client2->pos.x; client2->client->y = client2->pos.y;
client3->client->w = client3->pos.w; client3->client->h = client3->pos.h;
client3->client->x = client3->pos.x; client3->client->y = client3->pos.y;
Monitor *m = calloc(1, sizeof(Workspace));
XineramaScreenInfo info;
info.width = 1600;
info.height = 900;
m->info = info;
client1->client->m = m;
client2->client->m = m;
client3->client->m = m;
Client *ret = wm_find_client_direction(client1->client, UP);
assert_ptr_equal(ret, NULL);
ret = wm_find_client_direction(client1->client, DOWN);
assert_ptr_equal(ret, NULL);
ret = wm_find_client_direction(client1->client, LEFT);
assert_ptr_equal(ret, NULL);
ret = wm_find_client_direction(client1->client, RIGHT);
assert_ptr_equal(ret, client2->client);
ret = wm_find_client_direction(client2->client, UP);
assert_ptr_equal(ret, NULL);
ret = wm_find_client_direction(client2->client, DOWN);
assert_ptr_equal(ret, client3->client);
ret = wm_find_client_direction(client2->client, LEFT);
assert_ptr_equal(ret, client1->client);
ret = wm_find_client_direction(client2->client, RIGHT);
assert_ptr_equal(ret, NULL);
ret = wm_find_client_direction(client3->client, UP);
assert_ptr_equal(ret, client2->client);
ret = wm_find_client_direction(client3->client, DOWN);
assert_ptr_equal(ret, NULL);
ret = wm_find_client_direction(client3->client, LEFT);
assert_ptr_equal(ret, client1->client);
ret = wm_find_client_direction(client3->client, RIGHT);
assert_ptr_equal(ret, NULL);
free(client1->client);
free(client2->client);
free(client3->client);
free(m);
free(w);
wm_treenode_free(root);
wm_treenode_free(horizontal);
wm_treenode_free(client1);
wm_treenode_free(client2);
wm_treenode_free(client3);
}
static void test_wm_ptrarray_2d_index(void **state)
{
size_t x = 5;
@ -1183,6 +1282,7 @@ int main(void)
cmocka_unit_test(test_wm_find_client_nodes),
cmocka_unit_test(test_wm_treenode_remove_client1),
cmocka_unit_test(test_wm_treenode_remove_client2),
cmocka_unit_test(test_wm_find_client_direction_split),
cmocka_unit_test(test_wm_ptrarray_2d_index),
cmocka_unit_test(test_wm_treenode_to_str),
cmocka_unit_test(test_wm_json_obj_to_treenode),