Changes in uspace/srv/hid/display/test/seat.c [acd7ac2:195b7b3] in mainline
- File:
-
- 1 edited
-
uspace/srv/hid/display/test/seat.c (modified) (12 diffs)
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/hid/display/test/seat.c
racd7ac2 r195b7b3 1 1 /* 2 * Copyright (c) 20 23Jiri Svoboda2 * Copyright (c) 2019 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 70 70 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 71 71 72 rc = ds_seat_create(disp, "Alice",&seat);72 rc = ds_seat_create(disp, &seat); 73 73 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 74 74 … … 90 90 } 91 91 92 /** Evacuate focus from window. 93 * 94 * After evacuating no window should be focused 95 */ 96 PCUT_TEST(evac_focus_one_window) 97 { 98 ds_display_t *disp; 99 ds_client_t *client; 100 ds_seat_t *seat; 101 ds_window_t *wnd; 102 display_wnd_params_t params; 103 bool called_cb = false; 104 errno_t rc; 105 106 rc = ds_display_create(NULL, df_none, &disp); 107 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 108 109 rc = ds_client_create(disp, &test_ds_client_cb, &called_cb, &client); 110 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 111 112 rc = ds_seat_create(disp, "Alice", &seat); 113 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 114 115 display_wnd_params_init(¶ms); 116 params.rect.p0.x = params.rect.p0.y = 0; 117 params.rect.p1.x = params.rect.p1.y = 1; 118 119 rc = ds_window_create(client, ¶ms, &wnd); 120 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 121 122 ds_seat_set_focus(seat, wnd); 123 PCUT_ASSERT_EQUALS(wnd, seat->focus); 124 PCUT_ASSERT_TRUE(called_cb); 125 called_cb = false; 126 127 ds_seat_evac_wnd_refs(seat, wnd); 128 PCUT_ASSERT_NULL(seat->focus); 129 PCUT_ASSERT_TRUE(called_cb); 130 131 ds_window_destroy(wnd); 132 ds_seat_destroy(seat); 133 ds_client_destroy(client); 134 ds_display_destroy(disp); 135 } 136 137 /** Evacuate popup reference from window. 138 * 139 * After evacuating no window should be set as the popup 140 */ 141 PCUT_TEST(evac_popup) 142 { 143 ds_display_t *disp; 144 ds_client_t *client; 145 ds_seat_t *seat; 146 ds_window_t *wnd; 147 display_wnd_params_t params; 148 bool called_cb = false; 149 errno_t rc; 150 151 rc = ds_display_create(NULL, df_none, &disp); 152 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 153 154 rc = ds_client_create(disp, &test_ds_client_cb, &called_cb, &client); 155 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 156 157 rc = ds_seat_create(disp, "Alice", &seat); 158 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 159 160 display_wnd_params_init(¶ms); 161 params.rect.p0.x = params.rect.p0.y = 0; 162 params.rect.p1.x = params.rect.p1.y = 1; 163 params.flags |= wndf_popup; 164 165 rc = ds_window_create(client, ¶ms, &wnd); 166 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 167 168 PCUT_ASSERT_EQUALS(wnd, seat->popup); 169 170 ds_seat_evac_wnd_refs(seat, wnd); 171 PCUT_ASSERT_NULL(seat->popup); 172 173 ds_window_destroy(wnd); 174 ds_seat_destroy(seat); 175 ds_client_destroy(client); 176 ds_display_destroy(disp); 177 } 178 179 /** Unfocus window when three windows are available */ 180 PCUT_TEST(unfocus_wnd_three_windows) 92 /** Evacuate focus. */ 93 PCUT_TEST(evac_focus) 181 94 { 182 95 ds_display_t *disp; … … 185 98 ds_window_t *w0; 186 99 ds_window_t *w1; 187 ds_window_t *w2; 188 display_wnd_params_t params; 189 bool called_cb = false; 190 errno_t rc; 191 192 rc = ds_display_create(NULL, df_none, &disp); 193 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 194 195 rc = ds_client_create(disp, &test_ds_client_cb, &called_cb, &client); 196 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 197 198 rc = ds_seat_create(disp, "Alice", &seat); 199 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 200 201 display_wnd_params_init(¶ms); 202 params.rect.p0.x = params.rect.p0.y = 0; 203 params.rect.p1.x = params.rect.p1.y = 1; 204 205 rc = ds_window_create(client, ¶ms, &w2); 206 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 100 display_wnd_params_t params; 101 bool called_cb = false; 102 errno_t rc; 103 104 rc = ds_display_create(NULL, df_none, &disp); 105 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 106 107 rc = ds_client_create(disp, &test_ds_client_cb, &called_cb, &client); 108 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 109 110 rc = ds_seat_create(disp, &seat); 111 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 112 113 display_wnd_params_init(¶ms); 114 params.rect.p0.x = params.rect.p0.y = 0; 115 params.rect.p1.x = params.rect.p1.y = 1; 207 116 208 117 rc = ds_window_create(client, ¶ms, &w1); … … 212 121 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 213 122 214 /* w0 is at the top, then w1, then w2 */ 215 123 ds_seat_set_focus(seat, w1); 124 PCUT_ASSERT_EQUALS(w1, seat->focus); 125 PCUT_ASSERT_TRUE(called_cb); 126 called_cb = false; 127 128 ds_seat_evac_focus(seat, w1); 216 129 PCUT_ASSERT_EQUALS(w0, seat->focus); 217 218 ds_window_unfocus(w0); 219 220 /* The previous window, w1, should be focused now */ 221 PCUT_ASSERT_EQUALS(w1, seat->focus); 130 PCUT_ASSERT_TRUE(called_cb); 222 131 223 132 ds_window_destroy(w0); … … 228 137 } 229 138 230 /** Unfocus window when two windows and one system window are available*/231 PCUT_TEST( unfocus_wnd_two_windows_one_sys)139 /** Test ds_seat_post_kbd_event() with Alt-Tab switches focus */ 140 PCUT_TEST(post_kbd_event_alt_tab) 232 141 { 233 142 ds_display_t *disp; … … 236 145 ds_window_t *w0; 237 146 ds_window_t *w1; 238 ds_window_t *w2;239 display_wnd_params_t params;240 bool called_cb = false;241 errno_t rc;242 243 rc = ds_display_create(NULL, df_none, &disp);244 PCUT_ASSERT_ERRNO_VAL(EOK, rc);245 246 rc = ds_client_create(disp, &test_ds_client_cb, &called_cb, &client);247 PCUT_ASSERT_ERRNO_VAL(EOK, rc);248 249 rc = ds_seat_create(disp, "Alice", &seat);250 PCUT_ASSERT_ERRNO_VAL(EOK, rc);251 252 display_wnd_params_init(¶ms);253 params.rect.p0.x = params.rect.p0.y = 0;254 params.rect.p1.x = params.rect.p1.y = 1;255 256 params.flags |= wndf_system;257 rc = ds_window_create(client, ¶ms, &w2);258 PCUT_ASSERT_ERRNO_VAL(EOK, rc);259 260 params.flags &= ~wndf_system;261 rc = ds_window_create(client, ¶ms, &w1);262 PCUT_ASSERT_ERRNO_VAL(EOK, rc);263 264 rc = ds_window_create(client, ¶ms, &w0);265 PCUT_ASSERT_ERRNO_VAL(EOK, rc);266 267 PCUT_ASSERT_EQUALS(w0, seat->focus);268 269 ds_window_unfocus(w0);270 271 /* The previous non-system window is w1, w2 should be skipped */272 PCUT_ASSERT_EQUALS(w1, seat->focus);273 274 ds_window_destroy(w0);275 ds_window_destroy(w1);276 ds_seat_destroy(seat);277 ds_client_destroy(client);278 ds_display_destroy(disp);279 }280 281 /** Unfocus window when one window and one system window is available */282 PCUT_TEST(unfocus_wnd_one_window_one_sys)283 {284 ds_display_t *disp;285 ds_client_t *client;286 ds_seat_t *seat;287 ds_window_t *w0;288 ds_window_t *w1;289 display_wnd_params_t params;290 bool called_cb = false;291 errno_t rc;292 293 rc = ds_display_create(NULL, df_none, &disp);294 PCUT_ASSERT_ERRNO_VAL(EOK, rc);295 296 rc = ds_client_create(disp, &test_ds_client_cb, &called_cb, &client);297 PCUT_ASSERT_ERRNO_VAL(EOK, rc);298 299 rc = ds_seat_create(disp, "Alice", &seat);300 PCUT_ASSERT_ERRNO_VAL(EOK, rc);301 302 display_wnd_params_init(¶ms);303 params.rect.p0.x = params.rect.p0.y = 0;304 params.rect.p1.x = params.rect.p1.y = 1;305 306 params.flags |= wndf_system;307 rc = ds_window_create(client, ¶ms, &w1);308 PCUT_ASSERT_ERRNO_VAL(EOK, rc);309 310 params.flags &= ~wndf_system;311 rc = ds_window_create(client, ¶ms, &w0);312 PCUT_ASSERT_ERRNO_VAL(EOK, rc);313 314 PCUT_ASSERT_EQUALS(w0, seat->focus);315 316 ds_window_unfocus(w0);317 318 /* Since no non-system window is available, w1 should be focused */319 PCUT_ASSERT_EQUALS(w1, seat->focus);320 321 ds_window_destroy(w0);322 ds_window_destroy(w1);323 ds_seat_destroy(seat);324 ds_client_destroy(client);325 ds_display_destroy(disp);326 }327 328 /** Unfocus window when one window is available */329 PCUT_TEST(unfocus_wnd_one_window)330 {331 ds_display_t *disp;332 ds_client_t *client;333 ds_seat_t *seat;334 ds_window_t *w0;335 display_wnd_params_t params;336 bool called_cb = false;337 errno_t rc;338 339 rc = ds_display_create(NULL, df_none, &disp);340 PCUT_ASSERT_ERRNO_VAL(EOK, rc);341 342 rc = ds_client_create(disp, &test_ds_client_cb, &called_cb, &client);343 PCUT_ASSERT_ERRNO_VAL(EOK, rc);344 345 rc = ds_seat_create(disp, "Alice", &seat);346 PCUT_ASSERT_ERRNO_VAL(EOK, rc);347 348 display_wnd_params_init(¶ms);349 params.rect.p0.x = params.rect.p0.y = 0;350 params.rect.p1.x = params.rect.p1.y = 1;351 352 rc = ds_window_create(client, ¶ms, &w0);353 PCUT_ASSERT_ERRNO_VAL(EOK, rc);354 355 PCUT_ASSERT_EQUALS(w0, seat->focus);356 357 ds_window_unfocus(w0);358 359 /* Since no other window is availabe, no window should be focused */360 PCUT_ASSERT_EQUALS(NULL, seat->focus);361 362 ds_window_destroy(w0);363 ds_seat_destroy(seat);364 ds_client_destroy(client);365 ds_display_destroy(disp);366 }367 368 /** Switch focus when another window is available. */369 PCUT_TEST(switch_focus_two_windows)370 {371 ds_display_t *disp;372 ds_client_t *client;373 ds_seat_t *seat;374 ds_window_t *w0;375 ds_window_t *w1;376 display_wnd_params_t params;377 bool called_cb = false;378 errno_t rc;379 380 rc = ds_display_create(NULL, df_none, &disp);381 PCUT_ASSERT_ERRNO_VAL(EOK, rc);382 383 rc = ds_client_create(disp, &test_ds_client_cb, &called_cb, &client);384 PCUT_ASSERT_ERRNO_VAL(EOK, rc);385 386 rc = ds_seat_create(disp, "Alice", &seat);387 PCUT_ASSERT_ERRNO_VAL(EOK, rc);388 389 display_wnd_params_init(¶ms);390 params.rect.p0.x = params.rect.p0.y = 0;391 params.rect.p1.x = params.rect.p1.y = 1;392 393 rc = ds_window_create(client, ¶ms, &w1);394 PCUT_ASSERT_ERRNO_VAL(EOK, rc);395 396 rc = ds_window_create(client, ¶ms, &w0);397 PCUT_ASSERT_ERRNO_VAL(EOK, rc);398 399 ds_seat_set_focus(seat, w1);400 PCUT_ASSERT_EQUALS(w1, seat->focus);401 PCUT_ASSERT_TRUE(called_cb);402 called_cb = false;403 404 ds_seat_switch_focus(seat);405 PCUT_ASSERT_EQUALS(w0, seat->focus);406 PCUT_ASSERT_TRUE(called_cb);407 408 ds_window_destroy(w0);409 ds_window_destroy(w1);410 ds_seat_destroy(seat);411 ds_client_destroy(client);412 ds_display_destroy(disp);413 }414 415 /** Switch focus with just one existing window.416 *417 * After switching the focus should remain with the same window.418 */419 PCUT_TEST(switch_focus_one_window)420 {421 ds_display_t *disp;422 ds_client_t *client;423 ds_seat_t *seat;424 ds_window_t *wnd;425 display_wnd_params_t params;426 bool called_cb = false;427 errno_t rc;428 429 rc = ds_display_create(NULL, df_none, &disp);430 PCUT_ASSERT_ERRNO_VAL(EOK, rc);431 432 rc = ds_client_create(disp, &test_ds_client_cb, &called_cb, &client);433 PCUT_ASSERT_ERRNO_VAL(EOK, rc);434 435 rc = ds_seat_create(disp, "Alice", &seat);436 PCUT_ASSERT_ERRNO_VAL(EOK, rc);437 438 display_wnd_params_init(¶ms);439 params.rect.p0.x = params.rect.p0.y = 0;440 params.rect.p1.x = params.rect.p1.y = 1;441 442 rc = ds_window_create(client, ¶ms, &wnd);443 PCUT_ASSERT_ERRNO_VAL(EOK, rc);444 445 ds_seat_set_focus(seat, wnd);446 PCUT_ASSERT_EQUALS(wnd, seat->focus);447 PCUT_ASSERT_TRUE(called_cb);448 called_cb = false;449 450 ds_seat_switch_focus(seat);451 PCUT_ASSERT_EQUALS(wnd, seat->focus);452 PCUT_ASSERT_FALSE(called_cb);453 454 ds_window_destroy(wnd);455 ds_seat_destroy(seat);456 ds_client_destroy(client);457 ds_display_destroy(disp);458 }459 460 /** Test ds_seat_post_kbd_event() with Alt-Tab switches focus */461 PCUT_TEST(post_kbd_event_alt_tab)462 {463 ds_display_t *disp;464 ds_client_t *client;465 ds_seat_t *seat;466 ds_window_t *w0;467 ds_window_t *w1;468 147 display_wnd_params_t params; 469 148 bool called_cb = false; … … 477 156 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 478 157 479 rc = ds_seat_create(disp, "Alice",&seat);158 rc = ds_seat_create(disp, &seat); 480 159 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 481 160 … … 530 209 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 531 210 532 rc = ds_seat_create(disp, "Alice",&seat);211 rc = ds_seat_create(disp, &seat); 533 212 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 534 213 … … 594 273 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 595 274 596 rc = ds_seat_create(disp, "Alice",&seat);275 rc = ds_seat_create(disp, &seat); 597 276 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 598 277 … … 620 299 w1->dpos.y = 400; 621 300 622 /* New window gets focused event */ 623 PCUT_ASSERT_TRUE(called_cb); 624 625 called_cb = false; 301 PCUT_ASSERT_FALSE(called_cb); 626 302 627 303 ds_seat_set_focus(seat, w0); … … 690 366 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 691 367 692 rc = ds_seat_create(disp, "Alice",&seat);368 rc = ds_seat_create(disp, &seat); 693 369 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 694 370
Note:
See TracChangeset
for help on using the changeset viewer.
