Changes in uspace/srv/hid/display/test/seat.c [9e84d2c:ededdc4] 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
r9e84d2c rededdc4 1 1 /* 2 * Copyright (c) 202 1Jiri Svoboda2 * Copyright (c) 2023 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 90 90 } 91 91 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. 92 /** Evacuate focus from window. 140 93 * 141 94 * After evacuating no window should be focused … … 219 172 220 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) 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); 221 361 ds_seat_destroy(seat); 222 362 ds_client_destroy(client);
Note:
See TracChangeset
for help on using the changeset viewer.
