Changes in uspace/srv/hid/display/test/seat.c [ededdc4:9e84d2c] in mainline
- File:
-
- 1 edited
-
uspace/srv/hid/display/test/seat.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/hid/display/test/seat.c
rededdc4 r9e84d2c 1 1 /* 2 * Copyright (c) 202 3Jiri Svoboda2 * Copyright (c) 2021 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 90 90 } 91 91 92 /** Evacuate focus from window. 92 /** Evacuate focus when another window is available. */ 93 PCUT_TEST(evac_focus_two_windows) 94 { 95 ds_display_t *disp; 96 ds_client_t *client; 97 ds_seat_t *seat; 98 ds_window_t *w0; 99 ds_window_t *w1; 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; 116 117 rc = ds_window_create(client, ¶ms, &w1); 118 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 119 120 rc = ds_window_create(client, ¶ms, &w0); 121 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 122 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_wnd_refs(seat, w1); 129 PCUT_ASSERT_EQUALS(w0, seat->focus); 130 PCUT_ASSERT_TRUE(called_cb); 131 132 ds_window_destroy(w0); 133 ds_window_destroy(w1); 134 ds_seat_destroy(seat); 135 ds_client_destroy(client); 136 ds_display_destroy(disp); 137 } 138 139 /** Evacuate focus from the only existing window. 93 140 * 94 141 * After evacuating no window should be focused … … 172 219 173 220 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)181 {182 ds_display_t *disp;183 ds_client_t *client;184 ds_seat_t *seat;185 ds_window_t *w0;186 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, &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);207 208 rc = ds_window_create(client, ¶ms, &w1);209 PCUT_ASSERT_ERRNO_VAL(EOK, rc);210 211 rc = ds_window_create(client, ¶ms, &w0);212 PCUT_ASSERT_ERRNO_VAL(EOK, rc);213 214 PCUT_ASSERT_EQUALS(w0, seat->focus);215 216 ds_window_unfocus(w0);217 218 /* The previous window, w2, should be focused now */219 PCUT_ASSERT_EQUALS(w2, seat->focus);220 221 ds_window_destroy(w0);222 ds_window_destroy(w1);223 ds_seat_destroy(seat);224 ds_client_destroy(client);225 ds_display_destroy(disp);226 }227 228 /** Unfocus window when two windows and one system window are available */229 PCUT_TEST(unfocus_wnd_two_windows_one_sys)230 {231 ds_display_t *disp;232 ds_client_t *client;233 ds_seat_t *seat;234 ds_window_t *w0;235 ds_window_t *w1;236 ds_window_t *w2;237 display_wnd_params_t params;238 bool called_cb = false;239 errno_t rc;240 241 rc = ds_display_create(NULL, df_none, &disp);242 PCUT_ASSERT_ERRNO_VAL(EOK, rc);243 244 rc = ds_client_create(disp, &test_ds_client_cb, &called_cb, &client);245 PCUT_ASSERT_ERRNO_VAL(EOK, rc);246 247 rc = ds_seat_create(disp, &seat);248 PCUT_ASSERT_ERRNO_VAL(EOK, rc);249 250 display_wnd_params_init(¶ms);251 params.rect.p0.x = params.rect.p0.y = 0;252 params.rect.p1.x = params.rect.p1.y = 1;253 254 params.flags |= wndf_system;255 rc = ds_window_create(client, ¶ms, &w2);256 PCUT_ASSERT_ERRNO_VAL(EOK, rc);257 258 params.flags &= ~wndf_system;259 rc = ds_window_create(client, ¶ms, &w1);260 PCUT_ASSERT_ERRNO_VAL(EOK, rc);261 262 rc = ds_window_create(client, ¶ms, &w0);263 PCUT_ASSERT_ERRNO_VAL(EOK, rc);264 265 PCUT_ASSERT_EQUALS(w0, seat->focus);266 267 ds_window_unfocus(w0);268 269 /* The previous non-system window is w1, w2 should be skipped */270 PCUT_ASSERT_EQUALS(w1, seat->focus);271 272 ds_window_destroy(w0);273 ds_window_destroy(w1);274 ds_seat_destroy(seat);275 ds_client_destroy(client);276 ds_display_destroy(disp);277 }278 279 /** Unfocus window when one window and one system window is available */280 PCUT_TEST(unfocus_wnd_one_window_one_sys)281 {282 ds_display_t *disp;283 ds_client_t *client;284 ds_seat_t *seat;285 ds_window_t *w0;286 ds_window_t *w1;287 display_wnd_params_t params;288 bool called_cb = false;289 errno_t rc;290 291 rc = ds_display_create(NULL, df_none, &disp);292 PCUT_ASSERT_ERRNO_VAL(EOK, rc);293 294 rc = ds_client_create(disp, &test_ds_client_cb, &called_cb, &client);295 PCUT_ASSERT_ERRNO_VAL(EOK, rc);296 297 rc = ds_seat_create(disp, &seat);298 PCUT_ASSERT_ERRNO_VAL(EOK, rc);299 300 display_wnd_params_init(¶ms);301 params.rect.p0.x = params.rect.p0.y = 0;302 params.rect.p1.x = params.rect.p1.y = 1;303 304 params.flags |= wndf_system;305 rc = ds_window_create(client, ¶ms, &w1);306 PCUT_ASSERT_ERRNO_VAL(EOK, rc);307 308 params.flags &= ~wndf_system;309 rc = ds_window_create(client, ¶ms, &w0);310 PCUT_ASSERT_ERRNO_VAL(EOK, rc);311 312 PCUT_ASSERT_EQUALS(w0, seat->focus);313 314 ds_window_unfocus(w0);315 316 /* Since no non-system window is available, w1 should be focused */317 PCUT_ASSERT_EQUALS(w1, seat->focus);318 319 ds_window_destroy(w0);320 ds_window_destroy(w1);321 ds_seat_destroy(seat);322 ds_client_destroy(client);323 ds_display_destroy(disp);324 }325 326 /** Unfocus window when one window is available */327 PCUT_TEST(unfocus_wnd_one_window)328 {329 ds_display_t *disp;330 ds_client_t *client;331 ds_seat_t *seat;332 ds_window_t *w0;333 display_wnd_params_t params;334 bool called_cb = false;335 errno_t rc;336 337 rc = ds_display_create(NULL, df_none, &disp);338 PCUT_ASSERT_ERRNO_VAL(EOK, rc);339 340 rc = ds_client_create(disp, &test_ds_client_cb, &called_cb, &client);341 PCUT_ASSERT_ERRNO_VAL(EOK, rc);342 343 rc = ds_seat_create(disp, &seat);344 PCUT_ASSERT_ERRNO_VAL(EOK, rc);345 346 display_wnd_params_init(¶ms);347 params.rect.p0.x = params.rect.p0.y = 0;348 params.rect.p1.x = params.rect.p1.y = 1;349 350 rc = ds_window_create(client, ¶ms, &w0);351 PCUT_ASSERT_ERRNO_VAL(EOK, rc);352 353 PCUT_ASSERT_EQUALS(w0, seat->focus);354 355 ds_window_unfocus(w0);356 357 /* Since no other window is availabe, no window should be focused */358 PCUT_ASSERT_EQUALS(NULL, seat->focus);359 360 ds_window_destroy(w0);361 221 ds_seat_destroy(seat); 362 222 ds_client_destroy(client);
Note:
See TracChangeset
for help on using the changeset viewer.
