From cca3845a4d33812a63175328da7e010fd9b9ccae Mon Sep 17 00:00:00 2001 From: Akos Horvath Date: Sat, 6 Apr 2024 18:01:27 +0200 Subject: [PATCH] add test for wm_find_client_direction --- src/tests.c | 100 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) diff --git a/src/tests.c b/src/tests.c index 1442bd6..fa28e6c 100644 --- a/src/tests.c +++ b/src/tests.c @@ -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),