Changeset 17c0f5d in mainline for uspace/srv/hid/display/test/seat.c
- Timestamp:
- 2023-01-05T19:28:22Z (16 months ago)
- Branches:
- master, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- ededdc4
- Parents:
- 5d86797
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/hid/display/test/seat.c
r5d86797 r17c0f5d 1 1 /* 2 * Copyright (c) 202 1Jiri Svoboda2 * Copyright (c) 2023 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 224 224 } 225 225 226 /** Unfocus window when three windows are available */ 227 PCUT_TEST(unfocus_wnd_three_windows) 228 { 229 ds_display_t *disp; 230 ds_client_t *client; 231 ds_seat_t *seat; 232 ds_window_t *w0; 233 ds_window_t *w1; 234 ds_window_t *w2; 235 display_wnd_params_t params; 236 bool called_cb = false; 237 errno_t rc; 238 239 rc = ds_display_create(NULL, df_none, &disp); 240 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 241 242 rc = ds_client_create(disp, &test_ds_client_cb, &called_cb, &client); 243 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 244 245 rc = ds_seat_create(disp, &seat); 246 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 247 248 display_wnd_params_init(¶ms); 249 params.rect.p0.x = params.rect.p0.y = 0; 250 params.rect.p1.x = params.rect.p1.y = 1; 251 252 rc = ds_window_create(client, ¶ms, &w2); 253 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 254 255 rc = ds_window_create(client, ¶ms, &w1); 256 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 257 258 rc = ds_window_create(client, ¶ms, &w0); 259 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 260 261 PCUT_ASSERT_EQUALS(w0, seat->focus); 262 263 ds_window_unfocus(w0); 264 265 /* The previous window, w2, should be focused now */ 266 PCUT_ASSERT_EQUALS(w2, seat->focus); 267 268 ds_window_destroy(w0); 269 ds_window_destroy(w1); 270 ds_seat_destroy(seat); 271 ds_client_destroy(client); 272 ds_display_destroy(disp); 273 } 274 275 /** Unfocus window when two windows and one system window are available */ 276 PCUT_TEST(unfocus_wnd_two_windows_one_sys) 277 { 278 ds_display_t *disp; 279 ds_client_t *client; 280 ds_seat_t *seat; 281 ds_window_t *w0; 282 ds_window_t *w1; 283 ds_window_t *w2; 284 display_wnd_params_t params; 285 bool called_cb = false; 286 errno_t rc; 287 288 rc = ds_display_create(NULL, df_none, &disp); 289 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 290 291 rc = ds_client_create(disp, &test_ds_client_cb, &called_cb, &client); 292 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 293 294 rc = ds_seat_create(disp, &seat); 295 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 296 297 display_wnd_params_init(¶ms); 298 params.rect.p0.x = params.rect.p0.y = 0; 299 params.rect.p1.x = params.rect.p1.y = 1; 300 301 params.flags |= wndf_system; 302 rc = ds_window_create(client, ¶ms, &w2); 303 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 304 305 params.flags &= ~wndf_system; 306 rc = ds_window_create(client, ¶ms, &w1); 307 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 308 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 /* The previous non-system window is w1, w2 should be skipped */ 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 and one system window is available */ 327 PCUT_TEST(unfocus_wnd_one_window_one_sys) 328 { 329 ds_display_t *disp; 330 ds_client_t *client; 331 ds_seat_t *seat; 332 ds_window_t *w0; 333 ds_window_t *w1; 334 display_wnd_params_t params; 335 bool called_cb = false; 336 errno_t rc; 337 338 rc = ds_display_create(NULL, df_none, &disp); 339 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 340 341 rc = ds_client_create(disp, &test_ds_client_cb, &called_cb, &client); 342 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 343 344 rc = ds_seat_create(disp, &seat); 345 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 346 347 display_wnd_params_init(¶ms); 348 params.rect.p0.x = params.rect.p0.y = 0; 349 params.rect.p1.x = params.rect.p1.y = 1; 350 351 params.flags |= wndf_system; 352 rc = ds_window_create(client, ¶ms, &w1); 353 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 354 355 params.flags &= ~wndf_system; 356 rc = ds_window_create(client, ¶ms, &w0); 357 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 358 359 PCUT_ASSERT_EQUALS(w0, seat->focus); 360 361 ds_window_unfocus(w0); 362 363 /* Since no non-system window is available, w1 should be focused */ 364 PCUT_ASSERT_EQUALS(w1, seat->focus); 365 366 ds_window_destroy(w0); 367 ds_window_destroy(w1); 368 ds_seat_destroy(seat); 369 ds_client_destroy(client); 370 ds_display_destroy(disp); 371 } 372 373 /** Unfocus window when one window is available */ 374 PCUT_TEST(unfocus_wnd_one_window) 375 { 376 ds_display_t *disp; 377 ds_client_t *client; 378 ds_seat_t *seat; 379 ds_window_t *w0; 380 display_wnd_params_t params; 381 bool called_cb = false; 382 errno_t rc; 383 384 rc = ds_display_create(NULL, df_none, &disp); 385 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 386 387 rc = ds_client_create(disp, &test_ds_client_cb, &called_cb, &client); 388 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 389 390 rc = ds_seat_create(disp, &seat); 391 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 392 393 display_wnd_params_init(¶ms); 394 params.rect.p0.x = params.rect.p0.y = 0; 395 params.rect.p1.x = params.rect.p1.y = 1; 396 397 rc = ds_window_create(client, ¶ms, &w0); 398 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 399 400 PCUT_ASSERT_EQUALS(w0, seat->focus); 401 402 ds_window_unfocus(w0); 403 404 /* Since no other window is availabe, no window should be focused */ 405 PCUT_ASSERT_EQUALS(NULL, seat->focus); 406 407 ds_window_destroy(w0); 408 ds_seat_destroy(seat); 409 ds_client_destroy(client); 410 ds_display_destroy(disp); 411 } 412 226 413 /** Switch focus when another window is available. */ 227 414 PCUT_TEST(switch_focus_two_windows)
Note:
See TracChangeset
for help on using the changeset viewer.