Changes in uspace/srv/hid/display/test/window.c [9e84d2c:dd7df1c] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/hid/display/test/window.c
r9e84d2c rdd7df1c 1 1 /* 2 * Copyright (c) 20 19Jiri Svoboda2 * Copyright (c) 2023 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 36 36 #include "../client.h" 37 37 #include "../display.h" 38 #include "../idevcfg.h" 38 39 #include "../seat.h" 39 40 #include "../window.h" … … 51 52 }; 52 53 54 /** Test creating and destroying window */ 55 PCUT_TEST(create_destroy) 56 { 57 ds_display_t *disp; 58 ds_client_t *client; 59 ds_seat_t *seat; 60 ds_window_t *wnd; 61 display_wnd_params_t params; 62 errno_t rc; 63 64 rc = ds_display_create(NULL, df_none, &disp); 65 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 66 67 rc = ds_client_create(disp, NULL, NULL, &client); 68 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 69 70 rc = ds_seat_create(disp, "Alice", &seat); 71 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 72 73 display_wnd_params_init(¶ms); 74 params.rect.p0.x = params.rect.p0.y = 0; 75 params.rect.p1.x = params.rect.p1.y = 10; 76 77 rc = ds_window_create(client, ¶ms, &wnd); 78 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 79 80 ds_window_destroy(wnd); 81 ds_seat_destroy(seat); 82 ds_client_destroy(client); 83 ds_display_destroy(disp); 84 } 85 86 /** Test ds_window_bring_to_top() brings window to top */ 87 PCUT_TEST(bring_to_top) 88 { 89 ds_display_t *disp; 90 ds_client_t *client; 91 ds_seat_t *seat; 92 ds_window_t *w1; 93 ds_window_t *w2; 94 display_wnd_params_t params; 95 errno_t rc; 96 97 rc = ds_display_create(NULL, df_none, &disp); 98 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 99 100 rc = ds_client_create(disp, NULL, NULL, &client); 101 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 102 103 rc = ds_seat_create(disp, "Alice", &seat); 104 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 105 106 display_wnd_params_init(¶ms); 107 params.rect.p0.x = params.rect.p0.y = 0; 108 params.rect.p1.x = params.rect.p1.y = 10; 109 110 rc = ds_window_create(client, ¶ms, &w1); 111 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 112 113 rc = ds_window_create(client, ¶ms, &w2); 114 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 115 116 /* w2 should be on the top */ 117 PCUT_ASSERT_EQUALS(w2, ds_display_first_window(disp)); 118 119 /* Bring w1 to top */ 120 ds_window_bring_to_top(w1); 121 122 /* Now w1 should be on the top */ 123 PCUT_ASSERT_EQUALS(w1, ds_display_first_window(disp)); 124 125 ds_window_destroy(w1); 126 ds_window_destroy(w2); 127 ds_seat_destroy(seat); 128 ds_client_destroy(client); 129 ds_display_destroy(disp); 130 } 131 53 132 /** Test ds_window_resize(). */ 54 133 PCUT_TEST(window_resize) … … 69 148 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 70 149 71 rc = ds_seat_create(disp, &seat);150 rc = ds_seat_create(disp, "Alice", &seat); 72 151 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 73 152 … … 99 178 } 100 179 180 /** Test ds_window_get_pos(). */ 181 PCUT_TEST(get_pos) 182 { 183 ds_display_t *disp; 184 ds_client_t *client; 185 ds_seat_t *seat; 186 ds_window_t *wnd; 187 display_wnd_params_t params; 188 gfx_coord2_t pos; 189 errno_t rc; 190 191 rc = ds_display_create(NULL, df_none, &disp); 192 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 193 194 rc = ds_client_create(disp, NULL, NULL, &client); 195 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 196 197 rc = ds_seat_create(disp, "Alice", &seat); 198 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 199 200 display_wnd_params_init(¶ms); 201 params.rect.p0.x = params.rect.p0.y = 0; 202 params.rect.p1.x = params.rect.p1.y = 10; 203 204 rc = ds_window_create(client, ¶ms, &wnd); 205 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 206 207 wnd->dpos.x = 100; 208 wnd->dpos.y = 100; 209 210 ds_window_get_pos(wnd, &pos); 211 212 PCUT_ASSERT_INT_EQUALS(100, pos.x); 213 PCUT_ASSERT_INT_EQUALS(100, pos.y); 214 215 ds_window_destroy(wnd); 216 ds_seat_destroy(seat); 217 ds_client_destroy(client); 218 ds_display_destroy(disp); 219 } 220 221 /** Test ds_window_get_max_rect(). */ 222 PCUT_TEST(get_max_rect) 223 { 224 ds_display_t *disp; 225 ds_client_t *client; 226 ds_seat_t *seat; 227 ds_window_t *wnd; 228 display_wnd_params_t params; 229 gfx_rect_t rect; 230 errno_t rc; 231 232 rc = ds_display_create(NULL, df_none, &disp); 233 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 234 235 rc = ds_client_create(disp, NULL, NULL, &client); 236 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 237 238 rc = ds_seat_create(disp, "Alice", &seat); 239 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 240 241 display_wnd_params_init(¶ms); 242 params.rect.p0.x = params.rect.p0.y = 0; 243 params.rect.p1.x = params.rect.p1.y = 10; 244 245 rc = ds_window_create(client, ¶ms, &wnd); 246 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 247 248 wnd->dpos.x = 100; 249 wnd->dpos.y = 100; 250 251 ds_window_get_max_rect(wnd, &rect); 252 253 PCUT_ASSERT_INT_EQUALS(disp->rect.p0.x, rect.p0.x); 254 PCUT_ASSERT_INT_EQUALS(disp->rect.p0.y, rect.p0.y); 255 PCUT_ASSERT_INT_EQUALS(disp->rect.p1.x, rect.p1.x); 256 PCUT_ASSERT_INT_EQUALS(disp->rect.p1.y, rect.p1.y); 257 258 ds_window_destroy(wnd); 259 ds_seat_destroy(seat); 260 ds_client_destroy(client); 261 ds_display_destroy(disp); 262 } 263 264 /** Test ds_window_minimize(). */ 265 PCUT_TEST(window_minimize) 266 { 267 ds_display_t *disp; 268 ds_client_t *client; 269 ds_seat_t *seat; 270 ds_window_t *wnd; 271 display_wnd_params_t params; 272 errno_t rc; 273 274 rc = ds_display_create(NULL, df_none, &disp); 275 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 276 277 rc = ds_client_create(disp, NULL, NULL, &client); 278 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 279 280 rc = ds_seat_create(disp, "Alice", &seat); 281 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 282 283 display_wnd_params_init(¶ms); 284 params.rect.p0.x = params.rect.p0.y = 0; 285 params.rect.p1.x = params.rect.p1.y = 10; 286 287 rc = ds_window_create(client, ¶ms, &wnd); 288 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 289 290 rc = ds_window_minimize(wnd); 291 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 292 293 PCUT_ASSERT_INT_EQUALS(wndf_minimized, wnd->flags & wndf_minimized); 294 295 ds_window_destroy(wnd); 296 ds_seat_destroy(seat); 297 ds_client_destroy(client); 298 ds_display_destroy(disp); 299 } 300 301 /** Test ds_window_unminimize(). */ 302 PCUT_TEST(window_unminimize) 303 { 304 ds_display_t *disp; 305 ds_client_t *client; 306 ds_seat_t *seat; 307 ds_window_t *wnd; 308 display_wnd_params_t params; 309 errno_t rc; 310 311 rc = ds_display_create(NULL, df_none, &disp); 312 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 313 314 rc = ds_client_create(disp, NULL, NULL, &client); 315 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 316 317 rc = ds_seat_create(disp, "Alice", &seat); 318 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 319 320 display_wnd_params_init(¶ms); 321 params.flags |= wndf_minimized; 322 params.rect.p0.x = params.rect.p0.y = 0; 323 params.rect.p1.x = params.rect.p1.y = 10; 324 325 rc = ds_window_create(client, ¶ms, &wnd); 326 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 327 328 rc = ds_window_unminimize(wnd); 329 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 330 331 PCUT_ASSERT_INT_EQUALS(0, wnd->flags & wndf_minimized); 332 333 ds_window_destroy(wnd); 334 ds_seat_destroy(seat); 335 ds_client_destroy(client); 336 ds_display_destroy(disp); 337 } 338 339 /** Test ds_window_maximize(). */ 340 PCUT_TEST(window_maximize) 341 { 342 ds_display_t *disp; 343 ds_client_t *client; 344 ds_seat_t *seat; 345 ds_window_t *wnd; 346 display_wnd_params_t params; 347 errno_t rc; 348 349 rc = ds_display_create(NULL, df_none, &disp); 350 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 351 352 rc = ds_client_create(disp, NULL, NULL, &client); 353 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 354 355 rc = ds_seat_create(disp, "Alice", &seat); 356 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 357 358 display_wnd_params_init(¶ms); 359 params.rect.p0.x = params.rect.p0.y = 0; 360 params.rect.p1.x = params.rect.p1.y = 10; 361 362 rc = ds_window_create(client, ¶ms, &wnd); 363 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 364 365 wnd->dpos.x = 100; 366 wnd->dpos.y = 100; 367 368 rc = ds_window_maximize(wnd); 369 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 370 371 PCUT_ASSERT_INT_EQUALS(wndf_maximized, wnd->flags & wndf_maximized); 372 373 ds_window_destroy(wnd); 374 ds_seat_destroy(seat); 375 ds_client_destroy(client); 376 ds_display_destroy(disp); 377 } 378 379 /** Test ds_window_unmaximize(). */ 380 PCUT_TEST(window_unmaximize) 381 { 382 ds_display_t *disp; 383 ds_client_t *client; 384 ds_seat_t *seat; 385 ds_window_t *wnd; 386 display_wnd_params_t params; 387 errno_t rc; 388 389 rc = ds_display_create(NULL, df_none, &disp); 390 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 391 392 rc = ds_client_create(disp, NULL, NULL, &client); 393 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 394 395 rc = ds_seat_create(disp, "Alice", &seat); 396 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 397 398 display_wnd_params_init(¶ms); 399 params.rect.p0.x = params.rect.p0.y = 0; 400 params.rect.p1.x = params.rect.p1.y = 10; 401 402 rc = ds_window_create(client, ¶ms, &wnd); 403 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 404 405 wnd->dpos.x = 100; 406 wnd->dpos.y = 100; 407 408 rc = ds_window_maximize(wnd); 409 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 410 411 rc = ds_window_unmaximize(wnd); 412 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 413 414 PCUT_ASSERT_INT_EQUALS(0, wnd->flags & wndf_maximized); 415 416 ds_window_destroy(wnd); 417 ds_seat_destroy(seat); 418 ds_client_destroy(client); 419 ds_display_destroy(disp); 420 } 421 101 422 /** Test ds_window_get_ctx(). */ 102 423 PCUT_TEST(window_get_ctx) … … 116 437 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 117 438 118 rc = ds_seat_create(disp, &seat);439 rc = ds_seat_create(disp, "Alice", &seat); 119 440 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 120 441 … … 135 456 } 136 457 458 /** Test ds_window_is_visible() */ 459 PCUT_TEST(is_visible) 460 { 461 ds_display_t *disp; 462 ds_client_t *client; 463 ds_seat_t *seat; 464 ds_window_t *wnd; 465 display_wnd_params_t params; 466 errno_t rc; 467 468 rc = ds_display_create(NULL, df_none, &disp); 469 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 470 471 rc = ds_client_create(disp, NULL, NULL, &client); 472 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 473 474 rc = ds_seat_create(disp, "Alice", &seat); 475 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 476 477 display_wnd_params_init(¶ms); 478 params.rect.p0.x = params.rect.p0.y = 0; 479 params.rect.p1.x = params.rect.p1.y = 10; 480 481 rc = ds_window_create(client, ¶ms, &wnd); 482 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 483 484 PCUT_ASSERT_TRUE(ds_window_is_visible(wnd)); 485 486 wnd->flags |= wndf_minimized; 487 488 PCUT_ASSERT_FALSE(ds_window_is_visible(wnd)); 489 490 ds_window_destroy(wnd); 491 ds_seat_destroy(seat); 492 ds_client_destroy(client); 493 ds_display_destroy(disp); 494 } 495 137 496 /** Test ds_window_post_kbd_event() with Alt-F4 sends close event */ 138 497 PCUT_TEST(window_post_kbd_event_alt_f4) … … 158 517 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 159 518 160 rc = ds_seat_create(disp, &seat);519 rc = ds_seat_create(disp, "Alice", &seat); 161 520 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 162 521 … … 213 572 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 214 573 215 rc = ds_seat_create(disp, &seat);574 rc = ds_seat_create(disp, "Alice", &seat); 216 575 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 217 576 … … 265 624 } 266 625 626 /** Test ds_window_post_focus_event() */ 627 PCUT_TEST(window_post_focus_event) 628 { 629 gfx_context_t *gc; 630 ds_display_t *disp; 631 ds_client_t *client; 632 ds_seat_t *seat; 633 ds_window_t *wnd; 634 display_wnd_params_t params; 635 errno_t rc; 636 637 rc = gfx_context_new(&dummy_ops, NULL, &gc); 638 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 639 640 rc = ds_display_create(gc, df_none, &disp); 641 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 642 643 rc = ds_client_create(disp, NULL, NULL, &client); 644 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 645 646 rc = ds_seat_create(disp, "Alice", &seat); 647 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 648 649 display_wnd_params_init(¶ms); 650 params.rect.p0.x = params.rect.p0.y = 0; 651 params.rect.p1.x = params.rect.p1.y = 1; 652 653 rc = ds_window_create(client, ¶ms, &wnd); 654 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 655 656 rc = ds_window_post_focus_event(wnd); 657 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 658 659 ds_window_destroy(wnd); 660 ds_seat_destroy(seat); 661 ds_client_destroy(client); 662 ds_display_destroy(disp); 663 } 664 665 /** Test ds_window_post_unfocus_event() */ 666 PCUT_TEST(window_post_unfocus_event) 667 { 668 gfx_context_t *gc; 669 ds_display_t *disp; 670 ds_client_t *client; 671 ds_seat_t *seat; 672 ds_window_t *wnd; 673 display_wnd_params_t params; 674 errno_t rc; 675 676 rc = gfx_context_new(&dummy_ops, NULL, &gc); 677 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 678 679 rc = ds_display_create(gc, df_none, &disp); 680 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 681 682 rc = ds_client_create(disp, NULL, NULL, &client); 683 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 684 685 rc = ds_seat_create(disp, "Alice", &seat); 686 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 687 688 display_wnd_params_init(¶ms); 689 params.rect.p0.x = params.rect.p0.y = 0; 690 params.rect.p1.x = params.rect.p1.y = 1; 691 692 rc = ds_window_create(client, ¶ms, &wnd); 693 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 694 695 rc = ds_window_post_focus_event(wnd); 696 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 697 698 ds_window_destroy(wnd); 699 ds_seat_destroy(seat); 700 ds_client_destroy(client); 701 ds_display_destroy(disp); 702 } 703 267 704 /** Test ds_window_move_req() */ 268 705 PCUT_TEST(window_move_req) … … 275 712 display_wnd_params_t params; 276 713 gfx_coord2_t pos; 714 sysarg_t pos_id; 277 715 errno_t rc; 278 716 … … 286 724 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 287 725 288 rc = ds_seat_create(disp, &seat);726 rc = ds_seat_create(disp, "Alice", &seat); 289 727 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 290 728 … … 300 738 pos.x = 42; 301 739 pos.y = 43; 302 ds_window_move_req(wnd, &pos); 740 pos_id = 44; 741 ds_window_move_req(wnd, &pos, pos_id); 303 742 304 743 PCUT_ASSERT_INT_EQUALS(dsw_moving, wnd->state); 305 744 PCUT_ASSERT_INT_EQUALS(pos.x, wnd->orig_pos.x); 306 745 PCUT_ASSERT_INT_EQUALS(pos.y, wnd->orig_pos.y); 746 PCUT_ASSERT_INT_EQUALS(pos_id, wnd->orig_pos_id); 307 747 308 748 ds_window_destroy(wnd); … … 322 762 display_wnd_params_t params; 323 763 gfx_coord2_t pos; 764 sysarg_t pos_id; 324 765 errno_t rc; 325 766 … … 333 774 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 334 775 335 rc = ds_seat_create(disp, &seat);776 rc = ds_seat_create(disp, "Alice", &seat); 336 777 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 337 778 … … 347 788 pos.x = 42; 348 789 pos.y = 43; 349 ds_window_resize_req(wnd, display_wr_top_right, &pos); 790 pos_id = 44; 791 ds_window_resize_req(wnd, display_wr_top_right, &pos, pos_id); 350 792 351 793 PCUT_ASSERT_INT_EQUALS(dsw_resizing, wnd->state); … … 353 795 PCUT_ASSERT_INT_EQUALS(pos.x, wnd->orig_pos.x); 354 796 PCUT_ASSERT_INT_EQUALS(pos.y, wnd->orig_pos.y); 797 PCUT_ASSERT_INT_EQUALS(pos_id, wnd->orig_pos_id); 355 798 356 799 ds_window_destroy(wnd); … … 380 823 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 381 824 382 rc = ds_seat_create(disp, &seat);825 rc = ds_seat_create(disp, "Alice", &seat); 383 826 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 384 827 … … 650 1093 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 651 1094 652 rc = ds_seat_create(disp, &seat);1095 rc = ds_seat_create(disp, "Alice", &seat); 653 1096 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 654 1097 … … 666 1109 PCUT_ASSERT_EQUALS(wnd->display->cursor[dcurs_arrow], wnd->cursor); 667 1110 1111 // Check that invalid cursors cannot be set: ignore enum conversions 1112 // as we are out-of-bounds 1113 #pragma GCC diagnostic push 1114 #if defined(__GNUC__) && (__GNUC__ >= 10) 1115 #pragma GCC diagnostic ignored "-Wenum-conversion" 1116 #endif 668 1117 rc = ds_window_set_cursor(wnd, dcurs_limit); 669 1118 PCUT_ASSERT_ERRNO_VAL(EINVAL, rc); … … 673 1122 PCUT_ASSERT_ERRNO_VAL(EINVAL, rc); 674 1123 PCUT_ASSERT_EQUALS(wnd->display->cursor[dcurs_arrow], wnd->cursor); 1124 #pragma GCC diagnostic pop 675 1125 676 1126 rc = ds_window_set_cursor(wnd, dcurs_size_lr); … … 684 1134 } 685 1135 1136 /** Test ds_window_set_caption() */ 1137 PCUT_TEST(window_set_caption) 1138 { 1139 gfx_context_t *gc; 1140 ds_display_t *disp; 1141 ds_client_t *client; 1142 ds_seat_t *seat; 1143 ds_window_t *wnd; 1144 display_wnd_params_t params; 1145 errno_t rc; 1146 1147 rc = gfx_context_new(&dummy_ops, NULL, &gc); 1148 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 1149 1150 rc = ds_display_create(gc, df_none, &disp); 1151 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 1152 1153 rc = ds_client_create(disp, NULL, NULL, &client); 1154 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 1155 1156 rc = ds_seat_create(disp, "Alice", &seat); 1157 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 1158 1159 display_wnd_params_init(¶ms); 1160 params.rect.p0.x = params.rect.p0.y = 0; 1161 params.rect.p1.x = params.rect.p1.y = 1; 1162 1163 rc = ds_window_create(client, ¶ms, &wnd); 1164 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 1165 1166 PCUT_ASSERT_EQUALS(wnd->display->cursor[dcurs_arrow], wnd->cursor); 1167 1168 rc = ds_window_set_caption(wnd, "Hello"); 1169 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 1170 PCUT_ASSERT_INT_EQUALS(0, str_cmp("Hello", wnd->caption)); 1171 1172 ds_window_destroy(wnd); 1173 ds_seat_destroy(seat); 1174 ds_client_destroy(client); 1175 ds_display_destroy(disp); 1176 } 1177 1178 /** ds_window_find_next() finds next window by flags */ 1179 PCUT_TEST(window_find_next) 1180 { 1181 gfx_context_t *gc; 1182 ds_display_t *disp; 1183 ds_client_t *client; 1184 ds_seat_t *seat; 1185 ds_window_t *w0; 1186 ds_window_t *w1; 1187 ds_window_t *w2; 1188 ds_window_t *wnd; 1189 display_wnd_params_t params; 1190 errno_t rc; 1191 1192 rc = gfx_context_new(&dummy_ops, NULL, &gc); 1193 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 1194 1195 rc = ds_display_create(gc, df_none, &disp); 1196 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 1197 1198 rc = ds_client_create(disp, NULL, NULL, &client); 1199 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 1200 1201 rc = ds_seat_create(disp, "Alice", &seat); 1202 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 1203 1204 display_wnd_params_init(¶ms); 1205 params.rect.p0.x = params.rect.p0.y = 0; 1206 params.rect.p1.x = params.rect.p1.y = 1; 1207 1208 rc = ds_window_create(client, ¶ms, &w0); 1209 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 1210 1211 rc = ds_window_create(client, ¶ms, &w1); 1212 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 1213 w1->flags |= wndf_minimized; 1214 1215 rc = ds_window_create(client, ¶ms, &w2); 1216 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 1217 w2->flags |= wndf_system; 1218 1219 wnd = ds_window_find_next(w0, wndf_minimized); 1220 PCUT_ASSERT_EQUALS(w1, wnd); 1221 1222 wnd = ds_window_find_next(w0, wndf_system); 1223 PCUT_ASSERT_EQUALS(w2, wnd); 1224 1225 wnd = ds_window_find_next(w0, wndf_maximized); 1226 PCUT_ASSERT_NULL(wnd); 1227 1228 ds_window_destroy(w0); 1229 ds_window_destroy(w1); 1230 ds_window_destroy(w2); 1231 ds_seat_destroy(seat); 1232 ds_client_destroy(client); 1233 ds_display_destroy(disp); 1234 } 1235 1236 /** ds_window_find_prev() finds previous window by flags */ 1237 PCUT_TEST(window_find_prev) 1238 { 1239 gfx_context_t *gc; 1240 ds_display_t *disp; 1241 ds_client_t *client; 1242 ds_seat_t *seat; 1243 ds_window_t *w0; 1244 ds_window_t *w1; 1245 ds_window_t *w2; 1246 ds_window_t *wnd; 1247 display_wnd_params_t params; 1248 errno_t rc; 1249 1250 rc = gfx_context_new(&dummy_ops, NULL, &gc); 1251 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 1252 1253 rc = ds_display_create(gc, df_none, &disp); 1254 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 1255 1256 rc = ds_client_create(disp, NULL, NULL, &client); 1257 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 1258 1259 rc = ds_seat_create(disp, "Alice", &seat); 1260 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 1261 1262 display_wnd_params_init(¶ms); 1263 params.rect.p0.x = params.rect.p0.y = 0; 1264 params.rect.p1.x = params.rect.p1.y = 1; 1265 1266 rc = ds_window_create(client, ¶ms, &w2); 1267 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 1268 w2->flags |= wndf_system; 1269 1270 rc = ds_window_create(client, ¶ms, &w1); 1271 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 1272 w1->flags |= wndf_minimized; 1273 1274 rc = ds_window_create(client, ¶ms, &w0); 1275 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 1276 1277 wnd = ds_window_find_prev(w0, wndf_minimized); 1278 PCUT_ASSERT_EQUALS(w1, wnd); 1279 1280 wnd = ds_window_find_prev(w0, wndf_system); 1281 PCUT_ASSERT_EQUALS(w2, wnd); 1282 1283 wnd = ds_window_find_prev(w0, wndf_maximized); 1284 PCUT_ASSERT_NULL(wnd); 1285 1286 ds_window_destroy(w0); 1287 ds_window_destroy(w1); 1288 ds_window_destroy(w2); 1289 ds_seat_destroy(seat); 1290 ds_client_destroy(client); 1291 ds_display_destroy(disp); 1292 } 1293 1294 /** ds_window_unfocus() switches to another window */ 1295 PCUT_TEST(window_unfocus) 1296 { 1297 gfx_context_t *gc; 1298 ds_display_t *disp; 1299 ds_client_t *client; 1300 ds_seat_t *seat; 1301 ds_window_t *w0; 1302 ds_window_t *w1; 1303 display_wnd_params_t params; 1304 errno_t rc; 1305 1306 rc = gfx_context_new(&dummy_ops, NULL, &gc); 1307 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 1308 1309 rc = ds_display_create(gc, df_none, &disp); 1310 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 1311 1312 rc = ds_client_create(disp, NULL, NULL, &client); 1313 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 1314 1315 rc = ds_seat_create(disp, "Alice", &seat); 1316 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 1317 1318 display_wnd_params_init(¶ms); 1319 params.rect.p0.x = params.rect.p0.y = 0; 1320 params.rect.p1.x = params.rect.p1.y = 1; 1321 1322 rc = ds_window_create(client, ¶ms, &w1); 1323 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 1324 1325 rc = ds_window_create(client, ¶ms, &w0); 1326 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 1327 1328 PCUT_ASSERT_EQUALS(w0, seat->focus); 1329 1330 ds_window_unfocus(w0); 1331 1332 PCUT_ASSERT_EQUALS(w1, seat->focus); 1333 1334 ds_window_destroy(w0); 1335 ds_window_destroy(w1); 1336 ds_seat_destroy(seat); 1337 ds_client_destroy(client); 1338 ds_display_destroy(disp); 1339 } 1340 1341 /** ds_window_orig_seat() correctly compares seats */ 1342 PCUT_TEST(window_orig_seat) 1343 { 1344 gfx_context_t *gc; 1345 ds_display_t *disp; 1346 ds_client_t *client; 1347 ds_seat_t *seat0; 1348 ds_seat_t *seat1; 1349 sysarg_t devid0; 1350 sysarg_t devid1; 1351 ds_idevcfg_t *cfg0; 1352 ds_idevcfg_t *cfg1; 1353 ds_window_t *wnd; 1354 display_wnd_params_t params; 1355 errno_t rc; 1356 1357 rc = gfx_context_new(&dummy_ops, NULL, &gc); 1358 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 1359 1360 rc = ds_display_create(gc, df_none, &disp); 1361 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 1362 1363 rc = ds_client_create(disp, NULL, NULL, &client); 1364 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 1365 1366 rc = ds_seat_create(disp, "Alice", &seat0); 1367 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 1368 1369 rc = ds_seat_create(disp, "Bob", &seat1); 1370 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 1371 1372 display_wnd_params_init(¶ms); 1373 params.rect.p0.x = params.rect.p0.y = 0; 1374 params.rect.p1.x = params.rect.p1.y = 1; 1375 1376 rc = ds_window_create(client, ¶ms, &wnd); 1377 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 1378 1379 devid0 = 42; 1380 devid1 = 43; 1381 1382 rc = ds_idevcfg_create(disp, devid0, seat0, &cfg0); 1383 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 1384 1385 rc = ds_idevcfg_create(disp, devid1, seat1, &cfg1); 1386 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 1387 1388 wnd->state = dsw_moving; 1389 wnd->orig_pos_id = devid0; 1390 1391 PCUT_ASSERT_TRUE(ds_window_orig_seat(wnd, devid0)); 1392 PCUT_ASSERT_FALSE(ds_window_orig_seat(wnd, devid1)); 1393 1394 ds_idevcfg_destroy(cfg0); 1395 ds_idevcfg_destroy(cfg1); 1396 ds_window_destroy(wnd); 1397 ds_seat_destroy(seat0); 1398 ds_seat_destroy(seat1); 1399 ds_client_destroy(client); 1400 ds_display_destroy(disp); 1401 } 1402 686 1403 static errno_t dummy_set_color(void *arg, gfx_color_t *color) 687 1404 {
Note:
See TracChangeset
for help on using the changeset viewer.