Changes in uspace/lib/ui/test/wdecor.c [7470d97:211fd68] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/ui/test/wdecor.c
r7470d97 r211fd68 1 1 /* 2 * Copyright (c) 202 1Jiri Svoboda2 * Copyright (c) 2024 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 34 34 #include <ui/pbutton.h> 35 35 #include <ui/resource.h> 36 #include <ui/ui.h> 36 37 #include <ui/wdecor.h> 37 38 #include "../private/wdecor.h" … … 62 63 }; 63 64 65 static void test_wdecor_sysmenu_open(ui_wdecor_t *, void *, sysarg_t); 66 static void test_wdecor_sysmenu_left(ui_wdecor_t *, void *, sysarg_t); 67 static void test_wdecor_sysmenu_right(ui_wdecor_t *, void *, sysarg_t); 68 static void test_wdecor_sysmenu_accel(ui_wdecor_t *, void *, char32_t, 69 sysarg_t); 70 static void test_wdecor_minimize(ui_wdecor_t *, void *); 71 static void test_wdecor_maximize(ui_wdecor_t *, void *); 72 static void test_wdecor_unmaximize(ui_wdecor_t *, void *); 64 73 static void test_wdecor_close(ui_wdecor_t *, void *); 65 static void test_wdecor_move(ui_wdecor_t *, void *, gfx_coord2_t * );74 static void test_wdecor_move(ui_wdecor_t *, void *, gfx_coord2_t *, sysarg_t); 66 75 static void test_wdecor_resize(ui_wdecor_t *, void *, ui_wdecor_rsztype_t, 67 gfx_coord2_t * );76 gfx_coord2_t *, sysarg_t); 68 77 static void test_wdecor_set_cursor(ui_wdecor_t *, void *, ui_stock_cursor_t); 69 78 70 79 static ui_wdecor_cb_t test_wdecor_cb = { 80 .sysmenu_open = test_wdecor_sysmenu_open, 81 .sysmenu_left = test_wdecor_sysmenu_left, 82 .sysmenu_right = test_wdecor_sysmenu_right, 83 .sysmenu_accel = test_wdecor_sysmenu_accel, 84 .minimize = test_wdecor_minimize, 85 .maximize = test_wdecor_maximize, 86 .unmaximize = test_wdecor_unmaximize, 71 87 .close = test_wdecor_close, 72 88 .move = test_wdecor_move, … … 96 112 97 113 typedef struct { 114 bool sysmenu_open; 115 bool sysmenu_left; 116 bool sysmenu_right; 117 bool sysmenu_accel; 118 bool minimize; 119 bool maximize; 120 bool unmaximize; 98 121 bool close; 99 122 bool move; 100 123 gfx_coord2_t pos; 124 sysarg_t pos_id; 125 sysarg_t idev_id; 126 char32_t accel; 101 127 bool resize; 102 128 ui_wdecor_rsztype_t rsztype; … … 105 131 } test_cb_resp_t; 106 132 107 /** Create and destroy button */133 /** Create and destroy window decoration */ 108 134 PCUT_TEST(create_destroy) 109 135 { … … 127 153 PCUT_TEST(set_rect) 128 154 { 155 gfx_context_t *gc = NULL; 156 test_gc_t tgc; 157 ui_resource_t *resource = NULL; 129 158 ui_wdecor_t *wdecor; 130 159 gfx_rect_t rect; 131 160 errno_t rc; 132 161 133 rc = ui_wdecor_create(NULL, "Hello", ui_wds_none, &wdecor); 162 memset(&tgc, 0, sizeof(tgc)); 163 rc = gfx_context_new(&ops, &tgc, &gc); 164 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 165 166 rc = ui_resource_create(gc, false, &resource); 167 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 168 PCUT_ASSERT_NOT_NULL(resource); 169 170 rc = ui_wdecor_create(resource, "Hello", ui_wds_none, &wdecor); 134 171 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 135 172 … … 146 183 147 184 ui_wdecor_destroy(wdecor); 185 ui_resource_destroy(resource); 186 187 rc = gfx_context_delete(gc); 188 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 148 189 } 149 190 … … 168 209 } 169 210 170 /** Paint button */ 171 PCUT_TEST(paint) 211 /** Set window decoration maximized sets internal field */ 212 PCUT_TEST(set_maximized) 213 { 214 ui_wdecor_t *wdecor; 215 errno_t rc; 216 217 rc = ui_wdecor_create(NULL, "Hello", ui_wds_none, &wdecor); 218 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 219 220 PCUT_ASSERT_TRUE(wdecor->active); 221 222 ui_wdecor_set_maximized(wdecor, false); 223 PCUT_ASSERT_FALSE(wdecor->maximized); 224 225 ui_wdecor_set_maximized(wdecor, true); 226 PCUT_ASSERT_TRUE(wdecor->maximized); 227 228 ui_wdecor_destroy(wdecor); 229 } 230 231 /** Setting system menu handle as active/inactive */ 232 PCUT_TEST(sysmenu_hdl_set_active) 172 233 { 173 234 errno_t rc; … … 185 246 PCUT_ASSERT_NOT_NULL(resource); 186 247 187 rc = ui_wdecor_create(resource, "Hello", ui_wds_none, &wdecor); 248 rc = ui_wdecor_create(resource, "Hello", ui_wds_decorated, &wdecor); 249 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 250 251 PCUT_ASSERT_FALSE(wdecor->sysmenu_hdl_active); 252 ui_wdecor_sysmenu_hdl_set_active(wdecor, true); 253 PCUT_ASSERT_TRUE(wdecor->sysmenu_hdl_active); 254 ui_wdecor_sysmenu_hdl_set_active(wdecor, false); 255 PCUT_ASSERT_FALSE(wdecor->sysmenu_hdl_active); 256 257 ui_wdecor_destroy(wdecor); 258 ui_resource_destroy(resource); 259 260 rc = gfx_context_delete(gc); 261 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 262 } 263 264 /** Paint system menu handle */ 265 PCUT_TEST(sysmenu_hdl_paint) 266 { 267 errno_t rc; 268 gfx_context_t *gc = NULL; 269 test_gc_t tgc; 270 ui_resource_t *resource = NULL; 271 ui_wdecor_t *wdecor; 272 ui_wdecor_geom_t geom; 273 274 memset(&tgc, 0, sizeof(tgc)); 275 rc = gfx_context_new(&ops, &tgc, &gc); 276 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 277 278 rc = ui_resource_create(gc, false, &resource); 279 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 280 PCUT_ASSERT_NOT_NULL(resource); 281 282 rc = ui_wdecor_create(resource, "Hello", ui_wds_decorated, &wdecor); 283 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 284 285 ui_wdecor_get_geom(wdecor, &geom); 286 rc = ui_wdecor_sysmenu_hdl_paint(wdecor, &geom.sysmenu_hdl_rect); 287 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 288 289 ui_wdecor_destroy(wdecor); 290 ui_resource_destroy(resource); 291 292 rc = gfx_context_delete(gc); 293 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 294 } 295 296 /** Paint window decoration */ 297 PCUT_TEST(paint) 298 { 299 errno_t rc; 300 gfx_context_t *gc = NULL; 301 test_gc_t tgc; 302 ui_resource_t *resource = NULL; 303 ui_wdecor_t *wdecor; 304 305 memset(&tgc, 0, sizeof(tgc)); 306 rc = gfx_context_new(&ops, &tgc, &gc); 307 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 308 309 rc = ui_resource_create(gc, false, &resource); 310 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 311 PCUT_ASSERT_NOT_NULL(resource); 312 313 rc = ui_wdecor_create(resource, "Hello", ui_wds_decorated, &wdecor); 188 314 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 189 315 … … 196 322 rc = gfx_context_delete(gc); 197 323 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 324 } 325 326 /** Test ui_wdecor_sysmenu_open() */ 327 PCUT_TEST(sysmenu_open) 328 { 329 errno_t rc; 330 ui_wdecor_t *wdecor; 331 test_cb_resp_t resp; 332 333 rc = ui_wdecor_create(NULL, "Hello", ui_wds_none, &wdecor); 334 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 335 336 /* Sysmenu open callback with no callbacks set */ 337 ui_wdecor_sysmenu_open(wdecor, 42); 338 339 /* Sysmenu open callback with sysmenu callback not implemented */ 340 ui_wdecor_set_cb(wdecor, &dummy_wdecor_cb, NULL); 341 ui_wdecor_sysmenu_open(wdecor, 42); 342 343 /* Sysmenu open callback with real callback set */ 344 resp.sysmenu_open = false; 345 resp.idev_id = 0; 346 ui_wdecor_set_cb(wdecor, &test_wdecor_cb, &resp); 347 ui_wdecor_sysmenu_open(wdecor, 42); 348 PCUT_ASSERT_TRUE(resp.sysmenu_open); 349 PCUT_ASSERT_INT_EQUALS(42, resp.idev_id); 350 351 ui_wdecor_destroy(wdecor); 352 } 353 354 /** Test ui_wdecor_sysmenu_left() */ 355 PCUT_TEST(sysmenu_left) 356 { 357 errno_t rc; 358 ui_wdecor_t *wdecor; 359 test_cb_resp_t resp; 360 361 rc = ui_wdecor_create(NULL, "Hello", ui_wds_none, &wdecor); 362 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 363 364 /* Sysmenu left callback with no callbacks set */ 365 ui_wdecor_sysmenu_left(wdecor, 42); 366 367 /* Sysmenu left callback with sysmenu callback not implemented */ 368 ui_wdecor_set_cb(wdecor, &dummy_wdecor_cb, NULL); 369 ui_wdecor_sysmenu_left(wdecor, 42); 370 371 /* Sysmenu left callback with real callback set */ 372 resp.sysmenu_left = false; 373 resp.idev_id = 0; 374 ui_wdecor_set_cb(wdecor, &test_wdecor_cb, &resp); 375 ui_wdecor_sysmenu_left(wdecor, 42); 376 PCUT_ASSERT_TRUE(resp.sysmenu_left); 377 PCUT_ASSERT_INT_EQUALS(42, resp.idev_id); 378 379 ui_wdecor_destroy(wdecor); 380 } 381 382 /** Test ui_wdecor_sysmenu_right() */ 383 PCUT_TEST(sysmenu_right) 384 { 385 errno_t rc; 386 ui_wdecor_t *wdecor; 387 test_cb_resp_t resp; 388 389 rc = ui_wdecor_create(NULL, "Hello", ui_wds_none, &wdecor); 390 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 391 392 /* Sysmenu right callback with no callbacks set */ 393 ui_wdecor_sysmenu_right(wdecor, 42); 394 395 /* Sysmenu right callback with sysmenu callback not implemented */ 396 ui_wdecor_set_cb(wdecor, &dummy_wdecor_cb, NULL); 397 ui_wdecor_sysmenu_right(wdecor, 42); 398 399 /* Sysmenu right callback with real callback set */ 400 resp.sysmenu_right = false; 401 resp.idev_id = 0; 402 ui_wdecor_set_cb(wdecor, &test_wdecor_cb, &resp); 403 ui_wdecor_sysmenu_right(wdecor, 42); 404 PCUT_ASSERT_TRUE(resp.sysmenu_right); 405 PCUT_ASSERT_INT_EQUALS(42, resp.idev_id); 406 407 ui_wdecor_destroy(wdecor); 408 } 409 410 /** Test ui_wdecor_sysmenu_accel() */ 411 PCUT_TEST(sysmenu_accel) 412 { 413 errno_t rc; 414 ui_wdecor_t *wdecor; 415 test_cb_resp_t resp; 416 417 rc = ui_wdecor_create(NULL, "Hello", ui_wds_none, &wdecor); 418 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 419 420 /* Sysmenu accelerator callback with no callbacks set */ 421 ui_wdecor_sysmenu_accel(wdecor, 'a', 42); 422 423 /* Sysmenu accelerator callback with sysmenu callback not implemented */ 424 ui_wdecor_set_cb(wdecor, &dummy_wdecor_cb, NULL); 425 ui_wdecor_sysmenu_accel(wdecor, 'a', 42); 426 427 /* Sysmenu accelerator callback with real callback set */ 428 resp.sysmenu_accel = false; 429 resp.idev_id = 0; 430 ui_wdecor_set_cb(wdecor, &test_wdecor_cb, &resp); 431 ui_wdecor_sysmenu_accel(wdecor, 'a', 42); 432 PCUT_ASSERT_TRUE(resp.sysmenu_accel); 433 PCUT_ASSERT_INT_EQUALS('a', resp.accel); 434 PCUT_ASSERT_INT_EQUALS(42, resp.idev_id); 435 436 ui_wdecor_destroy(wdecor); 437 } 438 439 /** Test ui_wdecor_minimize() */ 440 PCUT_TEST(minimize) 441 { 442 errno_t rc; 443 ui_wdecor_t *wdecor; 444 test_cb_resp_t resp; 445 446 rc = ui_wdecor_create(NULL, "Hello", ui_wds_none, &wdecor); 447 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 448 449 /* Minimize callback with no callbacks set */ 450 ui_wdecor_minimize(wdecor); 451 452 /* Minimize callback with minimize callback not implemented */ 453 ui_wdecor_set_cb(wdecor, &dummy_wdecor_cb, NULL); 454 ui_wdecor_minimize(wdecor); 455 456 /* Minimize callback with real callback set */ 457 resp.minimize = false; 458 ui_wdecor_set_cb(wdecor, &test_wdecor_cb, &resp); 459 ui_wdecor_minimize(wdecor); 460 PCUT_ASSERT_TRUE(resp.minimize); 461 462 ui_wdecor_destroy(wdecor); 463 } 464 465 /** Test ui_wdecor_maximize() */ 466 PCUT_TEST(maximize) 467 { 468 errno_t rc; 469 ui_wdecor_t *wdecor; 470 test_cb_resp_t resp; 471 472 rc = ui_wdecor_create(NULL, "Hello", ui_wds_none, &wdecor); 473 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 474 475 /* Maximize callback with no callbacks set */ 476 ui_wdecor_maximize(wdecor); 477 478 /* Maxmimize callback with maximize callback not implemented */ 479 ui_wdecor_set_cb(wdecor, &dummy_wdecor_cb, NULL); 480 ui_wdecor_maximize(wdecor); 481 482 /* Maximize callback with real callback set */ 483 resp.maximize = false; 484 ui_wdecor_set_cb(wdecor, &test_wdecor_cb, &resp); 485 ui_wdecor_maximize(wdecor); 486 PCUT_ASSERT_TRUE(resp.maximize); 487 488 ui_wdecor_destroy(wdecor); 489 } 490 491 /** Test ui_wdecor_unmaximize() */ 492 PCUT_TEST(unmaximize) 493 { 494 errno_t rc; 495 ui_wdecor_t *wdecor; 496 test_cb_resp_t resp; 497 498 rc = ui_wdecor_create(NULL, "Hello", ui_wds_none, &wdecor); 499 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 500 501 /* Unmaximize callback with no callbacks set */ 502 ui_wdecor_unmaximize(wdecor); 503 504 /* Unmaximize callback with unmaximize callback not implemented */ 505 ui_wdecor_set_cb(wdecor, &dummy_wdecor_cb, NULL); 506 ui_wdecor_unmaximize(wdecor); 507 508 /* Unmaximize callback with real callback set */ 509 resp.unmaximize = false; 510 ui_wdecor_set_cb(wdecor, &test_wdecor_cb, &resp); 511 ui_wdecor_unmaximize(wdecor); 512 PCUT_ASSERT_TRUE(resp.unmaximize); 513 514 ui_wdecor_destroy(wdecor); 198 515 } 199 516 … … 231 548 test_cb_resp_t resp; 232 549 gfx_coord2_t pos; 550 sysarg_t pos_id; 233 551 234 552 rc = ui_wdecor_create(NULL, "Hello", ui_wds_none, &wdecor); … … 237 555 pos.x = 3; 238 556 pos.y = 4; 557 pos_id = 5; 239 558 240 559 /* Move callback with no callbacks set */ 241 ui_wdecor_move(wdecor, &pos );560 ui_wdecor_move(wdecor, &pos, pos_id); 242 561 243 562 /* Move callback with move callback not implemented */ 244 563 ui_wdecor_set_cb(wdecor, &dummy_wdecor_cb, NULL); 245 ui_wdecor_move(wdecor, &pos );564 ui_wdecor_move(wdecor, &pos, pos_id); 246 565 247 566 /* Move callback with real callback set */ … … 249 568 resp.pos.x = 0; 250 569 resp.pos.y = 0; 570 resp.pos_id = 0; 251 571 ui_wdecor_set_cb(wdecor, &test_wdecor_cb, &resp); 252 ui_wdecor_move(wdecor, &pos );572 ui_wdecor_move(wdecor, &pos, pos_id); 253 573 PCUT_ASSERT_TRUE(resp.move); 254 574 PCUT_ASSERT_INT_EQUALS(pos.x, resp.pos.x); 255 575 PCUT_ASSERT_INT_EQUALS(pos.y, resp.pos.y); 576 PCUT_ASSERT_INT_EQUALS(pos_id, resp.pos_id); 256 577 257 578 ui_wdecor_destroy(wdecor); … … 266 587 ui_wdecor_rsztype_t rsztype; 267 588 gfx_coord2_t pos; 589 sysarg_t pos_id; 268 590 269 591 rc = ui_wdecor_create(NULL, "Hello", ui_wds_none, &wdecor); … … 273 595 pos.x = 3; 274 596 pos.y = 4; 597 pos_id = 5; 275 598 276 599 /* Resize callback with no callbacks set */ 277 ui_wdecor_resize(wdecor, rsztype, &pos );600 ui_wdecor_resize(wdecor, rsztype, &pos, pos_id); 278 601 279 602 /* Resize callback with move callback not implemented */ 280 603 ui_wdecor_set_cb(wdecor, &dummy_wdecor_cb, NULL); 281 ui_wdecor_resize(wdecor, rsztype, &pos );604 ui_wdecor_resize(wdecor, rsztype, &pos, pos_id); 282 605 283 606 /* Resize callback with real callback set */ … … 287 610 resp.pos.y = 0; 288 611 ui_wdecor_set_cb(wdecor, &test_wdecor_cb, &resp); 289 ui_wdecor_resize(wdecor, rsztype, &pos );612 ui_wdecor_resize(wdecor, rsztype, &pos, pos_id); 290 613 PCUT_ASSERT_TRUE(resp.resize); 291 614 PCUT_ASSERT_INT_EQUALS(rsztype, resp.rsztype); 292 615 PCUT_ASSERT_INT_EQUALS(pos.x, resp.pos.x); 293 616 PCUT_ASSERT_INT_EQUALS(pos.y, resp.pos.y); 617 PCUT_ASSERT_INT_EQUALS(pos_id, resp.pos_id); 294 618 295 619 ui_wdecor_destroy(wdecor); … … 330 654 PCUT_TEST(close_btn_clicked) 331 655 { 656 gfx_context_t *gc = NULL; 657 test_gc_t tgc; 658 ui_resource_t *resource = NULL; 332 659 ui_wdecor_t *wdecor; 333 660 gfx_rect_t rect; … … 335 662 errno_t rc; 336 663 337 rc = ui_wdecor_create(NULL, "Hello", ui_wds_none, &wdecor); 664 memset(&tgc, 0, sizeof(tgc)); 665 rc = gfx_context_new(&ops, &tgc, &gc); 666 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 667 668 rc = ui_resource_create(gc, false, &resource); 669 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 670 PCUT_ASSERT_NOT_NULL(resource); 671 672 rc = ui_wdecor_create(resource, "Hello", ui_wds_decorated, &wdecor); 338 673 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 339 674 … … 353 688 354 689 ui_wdecor_destroy(wdecor); 690 ui_resource_destroy(resource); 691 692 rc = gfx_context_delete(gc); 693 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 355 694 } 356 695 … … 407 746 } 408 747 409 /** ui_wdecor_get_geom() with ui_wds_none produces the correct geometry */ 410 PCUT_TEST(get_geom_none) 411 { 748 /** Pressing F10 generates sysmenu event. 749 * 750 * Note that in a window with menu bar the menu bar would claim F10 751 * so it would never be delivered to window decoration. 752 */ 753 PCUT_TEST(kbd_f10_sysmenu) 754 { 755 errno_t rc; 756 gfx_rect_t rect; 757 kbd_event_t event; 412 758 gfx_context_t *gc = NULL; 413 759 test_gc_t tgc; 760 test_cb_resp_t resp; 414 761 ui_resource_t *resource = NULL; 415 762 ui_wdecor_t *wdecor; 416 gfx_rect_t rect;417 ui_wdecor_geom_t geom;418 errno_t rc;419 763 420 764 memset(&tgc, 0, sizeof(tgc)); … … 426 770 PCUT_ASSERT_NOT_NULL(resource); 427 771 428 rc = ui_wdecor_create(resource, "Hello", ui_wds_ none, &wdecor);772 rc = ui_wdecor_create(resource, "Hello", ui_wds_decorated, &wdecor); 429 773 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 430 774 … … 435 779 436 780 ui_wdecor_set_rect(wdecor, &rect); 781 782 ui_wdecor_set_cb(wdecor, &test_wdecor_cb, (void *) &resp); 783 784 resp.sysmenu_open = false; 785 786 event.type = KEY_PRESS; 787 event.mods = 0; 788 event.key = KC_F10; 789 event.kbd_id = 42; 790 ui_wdecor_kbd_event(wdecor, &event); 791 792 PCUT_ASSERT_TRUE(resp.sysmenu_open); 793 PCUT_ASSERT_INT_EQUALS(event.kbd_id, resp.idev_id); 794 795 ui_wdecor_destroy(wdecor); 796 ui_resource_destroy(resource); 797 798 rc = gfx_context_delete(gc); 799 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 800 } 801 802 /** Down key with active sysmenu handle generates sysmenu open event */ 803 PCUT_TEST(kbd_down_sysmenu) 804 { 805 errno_t rc; 806 gfx_rect_t rect; 807 kbd_event_t event; 808 gfx_context_t *gc = NULL; 809 test_gc_t tgc; 810 test_cb_resp_t resp; 811 ui_resource_t *resource = NULL; 812 ui_wdecor_t *wdecor; 813 814 memset(&tgc, 0, sizeof(tgc)); 815 rc = gfx_context_new(&ops, &tgc, &gc); 816 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 817 818 rc = ui_resource_create(gc, false, &resource); 819 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 820 PCUT_ASSERT_NOT_NULL(resource); 821 822 rc = ui_wdecor_create(resource, "Hello", ui_wds_decorated, &wdecor); 823 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 824 825 rect.p0.x = 10; 826 rect.p0.y = 20; 827 rect.p1.x = 100; 828 rect.p1.y = 200; 829 830 ui_wdecor_set_rect(wdecor, &rect); 831 832 ui_wdecor_set_cb(wdecor, &test_wdecor_cb, (void *) &resp); 833 834 ui_wdecor_sysmenu_hdl_set_active(wdecor, true); 835 836 resp.sysmenu_open = false; 837 838 event.type = KEY_PRESS; 839 event.mods = 0; 840 event.key = KC_DOWN; 841 event.kbd_id = 42; 842 ui_wdecor_kbd_event(wdecor, &event); 843 844 PCUT_ASSERT_TRUE(resp.sysmenu_open); 845 PCUT_ASSERT_INT_EQUALS(event.kbd_id, resp.idev_id); 846 847 ui_wdecor_destroy(wdecor); 848 ui_resource_destroy(resource); 849 850 rc = gfx_context_delete(gc); 851 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 852 } 853 854 /** Left key with active sysmenu handle generates sysmenu left event */ 855 PCUT_TEST(kbd_left_sysmenu) 856 { 857 errno_t rc; 858 gfx_rect_t rect; 859 kbd_event_t event; 860 gfx_context_t *gc = NULL; 861 test_gc_t tgc; 862 test_cb_resp_t resp; 863 ui_resource_t *resource = NULL; 864 ui_wdecor_t *wdecor; 865 866 memset(&tgc, 0, sizeof(tgc)); 867 rc = gfx_context_new(&ops, &tgc, &gc); 868 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 869 870 rc = ui_resource_create(gc, false, &resource); 871 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 872 PCUT_ASSERT_NOT_NULL(resource); 873 874 rc = ui_wdecor_create(resource, "Hello", ui_wds_decorated, &wdecor); 875 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 876 877 rect.p0.x = 10; 878 rect.p0.y = 20; 879 rect.p1.x = 100; 880 rect.p1.y = 200; 881 882 ui_wdecor_set_rect(wdecor, &rect); 883 884 ui_wdecor_set_cb(wdecor, &test_wdecor_cb, (void *) &resp); 885 886 ui_wdecor_sysmenu_hdl_set_active(wdecor, true); 887 888 resp.sysmenu_left = false; 889 890 event.type = KEY_PRESS; 891 event.mods = 0; 892 event.key = KC_LEFT; 893 event.kbd_id = 42; 894 ui_wdecor_kbd_event(wdecor, &event); 895 896 PCUT_ASSERT_TRUE(resp.sysmenu_left); 897 PCUT_ASSERT_INT_EQUALS(event.kbd_id, resp.idev_id); 898 899 ui_wdecor_destroy(wdecor); 900 ui_resource_destroy(resource); 901 902 rc = gfx_context_delete(gc); 903 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 904 } 905 906 /** Right key with active sysmenu handle generates sysmenu right event */ 907 PCUT_TEST(kbd_right_sysmenu) 908 { 909 errno_t rc; 910 gfx_rect_t rect; 911 kbd_event_t event; 912 gfx_context_t *gc = NULL; 913 test_gc_t tgc; 914 test_cb_resp_t resp; 915 ui_resource_t *resource = NULL; 916 ui_wdecor_t *wdecor; 917 918 memset(&tgc, 0, sizeof(tgc)); 919 rc = gfx_context_new(&ops, &tgc, &gc); 920 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 921 922 rc = ui_resource_create(gc, false, &resource); 923 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 924 PCUT_ASSERT_NOT_NULL(resource); 925 926 rc = ui_wdecor_create(resource, "Hello", ui_wds_decorated, &wdecor); 927 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 928 929 rect.p0.x = 10; 930 rect.p0.y = 20; 931 rect.p1.x = 100; 932 rect.p1.y = 200; 933 934 ui_wdecor_set_rect(wdecor, &rect); 935 936 ui_wdecor_set_cb(wdecor, &test_wdecor_cb, (void *) &resp); 937 938 ui_wdecor_sysmenu_hdl_set_active(wdecor, true); 939 940 resp.sysmenu_right = false; 941 942 event.type = KEY_PRESS; 943 event.mods = 0; 944 event.key = KC_RIGHT; 945 event.kbd_id = 42; 946 ui_wdecor_kbd_event(wdecor, &event); 947 948 PCUT_ASSERT_TRUE(resp.sysmenu_right); 949 PCUT_ASSERT_INT_EQUALS(event.kbd_id, resp.idev_id); 950 951 ui_wdecor_destroy(wdecor); 952 ui_resource_destroy(resource); 953 954 rc = gfx_context_delete(gc); 955 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 956 } 957 958 /** Character key with active sysmenu handle generates sysmenu accel event */ 959 PCUT_TEST(kbd_accel_sysmenu) 960 { 961 errno_t rc; 962 gfx_rect_t rect; 963 kbd_event_t event; 964 gfx_context_t *gc = NULL; 965 test_gc_t tgc; 966 test_cb_resp_t resp; 967 ui_resource_t *resource = NULL; 968 ui_wdecor_t *wdecor; 969 970 memset(&tgc, 0, sizeof(tgc)); 971 rc = gfx_context_new(&ops, &tgc, &gc); 972 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 973 974 rc = ui_resource_create(gc, false, &resource); 975 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 976 PCUT_ASSERT_NOT_NULL(resource); 977 978 rc = ui_wdecor_create(resource, "Hello", ui_wds_decorated, &wdecor); 979 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 980 981 rect.p0.x = 10; 982 rect.p0.y = 20; 983 rect.p1.x = 100; 984 rect.p1.y = 200; 985 986 ui_wdecor_set_rect(wdecor, &rect); 987 988 ui_wdecor_set_cb(wdecor, &test_wdecor_cb, (void *) &resp); 989 990 ui_wdecor_sysmenu_hdl_set_active(wdecor, true); 991 992 resp.sysmenu_accel = false; 993 994 event.type = KEY_PRESS; 995 event.mods = 0; 996 event.key = KC_A; 997 event.c = 'a'; 998 event.kbd_id = 42; 999 ui_wdecor_kbd_event(wdecor, &event); 1000 1001 PCUT_ASSERT_TRUE(resp.sysmenu_accel); 1002 PCUT_ASSERT_INT_EQUALS(event.c, resp.accel); 1003 PCUT_ASSERT_INT_EQUALS(event.kbd_id, resp.idev_id); 1004 1005 ui_wdecor_destroy(wdecor); 1006 ui_resource_destroy(resource); 1007 1008 rc = gfx_context_delete(gc); 1009 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 1010 } 1011 1012 /** ui_wdecor_get_geom() with ui_wds_none produces the correct geometry */ 1013 PCUT_TEST(get_geom_none) 1014 { 1015 gfx_context_t *gc = NULL; 1016 test_gc_t tgc; 1017 ui_resource_t *resource = NULL; 1018 ui_wdecor_t *wdecor; 1019 gfx_rect_t rect; 1020 ui_wdecor_geom_t geom; 1021 errno_t rc; 1022 1023 memset(&tgc, 0, sizeof(tgc)); 1024 rc = gfx_context_new(&ops, &tgc, &gc); 1025 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 1026 1027 rc = ui_resource_create(gc, false, &resource); 1028 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 1029 PCUT_ASSERT_NOT_NULL(resource); 1030 1031 rc = ui_wdecor_create(resource, "Hello", ui_wds_none, &wdecor); 1032 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 1033 1034 rect.p0.x = 10; 1035 rect.p0.y = 20; 1036 rect.p1.x = 100; 1037 rect.p1.y = 200; 1038 1039 ui_wdecor_set_rect(wdecor, &rect); 437 1040 ui_wdecor_get_geom(wdecor, &geom); 438 1041 … … 447 1050 PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p1.y); 448 1051 1052 PCUT_ASSERT_INT_EQUALS(0, geom.sysmenu_hdl_rect.p0.x); 1053 PCUT_ASSERT_INT_EQUALS(0, geom.sysmenu_hdl_rect.p0.y); 1054 PCUT_ASSERT_INT_EQUALS(0, geom.sysmenu_hdl_rect.p1.x); 1055 PCUT_ASSERT_INT_EQUALS(0, geom.sysmenu_hdl_rect.p1.y); 1056 1057 PCUT_ASSERT_INT_EQUALS(0, geom.caption_rect.p0.x); 1058 PCUT_ASSERT_INT_EQUALS(0, geom.caption_rect.p0.y); 1059 PCUT_ASSERT_INT_EQUALS(0, geom.caption_rect.p1.x); 1060 PCUT_ASSERT_INT_EQUALS(0, geom.caption_rect.p1.y); 1061 1062 PCUT_ASSERT_INT_EQUALS(0, geom.btn_min_rect.p0.x); 1063 PCUT_ASSERT_INT_EQUALS(0, geom.btn_min_rect.p0.y); 1064 PCUT_ASSERT_INT_EQUALS(0, geom.btn_min_rect.p1.x); 1065 PCUT_ASSERT_INT_EQUALS(0, geom.btn_min_rect.p1.y); 1066 1067 PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p0.x); 1068 PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p0.y); 1069 PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p1.x); 1070 PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p1.y); 1071 449 1072 PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p0.x); 450 1073 PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p0.y); … … 504 1127 PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p1.y); 505 1128 1129 PCUT_ASSERT_INT_EQUALS(0, geom.sysmenu_hdl_rect.p0.x); 1130 PCUT_ASSERT_INT_EQUALS(0, geom.sysmenu_hdl_rect.p0.y); 1131 PCUT_ASSERT_INT_EQUALS(0, geom.sysmenu_hdl_rect.p1.x); 1132 PCUT_ASSERT_INT_EQUALS(0, geom.sysmenu_hdl_rect.p1.y); 1133 1134 PCUT_ASSERT_INT_EQUALS(0, geom.caption_rect.p0.x); 1135 PCUT_ASSERT_INT_EQUALS(0, geom.caption_rect.p0.y); 1136 PCUT_ASSERT_INT_EQUALS(0, geom.caption_rect.p1.x); 1137 PCUT_ASSERT_INT_EQUALS(0, geom.caption_rect.p1.y); 1138 1139 PCUT_ASSERT_INT_EQUALS(0, geom.btn_min_rect.p0.x); 1140 PCUT_ASSERT_INT_EQUALS(0, geom.btn_min_rect.p0.y); 1141 PCUT_ASSERT_INT_EQUALS(0, geom.btn_min_rect.p1.x); 1142 PCUT_ASSERT_INT_EQUALS(0, geom.btn_min_rect.p1.y); 1143 1144 PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p0.x); 1145 PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p0.y); 1146 PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p1.x); 1147 PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p1.y); 1148 506 1149 PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p0.x); 507 1150 PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p0.y); … … 562 1205 PCUT_ASSERT_INT_EQUALS(46, geom.title_bar_rect.p1.y); 563 1206 1207 PCUT_ASSERT_INT_EQUALS(0, geom.sysmenu_hdl_rect.p0.x); 1208 PCUT_ASSERT_INT_EQUALS(0, geom.sysmenu_hdl_rect.p0.y); 1209 PCUT_ASSERT_INT_EQUALS(0, geom.sysmenu_hdl_rect.p1.x); 1210 PCUT_ASSERT_INT_EQUALS(0, geom.sysmenu_hdl_rect.p1.y); 1211 1212 PCUT_ASSERT_INT_EQUALS(18, geom.caption_rect.p0.x); 1213 PCUT_ASSERT_INT_EQUALS(24, geom.caption_rect.p0.y); 1214 PCUT_ASSERT_INT_EQUALS(91, geom.caption_rect.p1.x); 1215 PCUT_ASSERT_INT_EQUALS(46, geom.caption_rect.p1.y); 1216 1217 PCUT_ASSERT_INT_EQUALS(0, geom.btn_min_rect.p0.x); 1218 PCUT_ASSERT_INT_EQUALS(0, geom.btn_min_rect.p0.y); 1219 PCUT_ASSERT_INT_EQUALS(0, geom.btn_min_rect.p1.x); 1220 PCUT_ASSERT_INT_EQUALS(0, geom.btn_min_rect.p1.y); 1221 1222 PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p0.x); 1223 PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p0.y); 1224 PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p1.x); 1225 PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p1.y); 1226 564 1227 PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p0.x); 565 1228 PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p0.y); … … 619 1282 PCUT_ASSERT_INT_EQUALS(46, geom.title_bar_rect.p1.y); 620 1283 1284 PCUT_ASSERT_INT_EQUALS(15, geom.sysmenu_hdl_rect.p0.x); 1285 PCUT_ASSERT_INT_EQUALS(25, geom.sysmenu_hdl_rect.p0.y); 1286 PCUT_ASSERT_INT_EQUALS(35, geom.sysmenu_hdl_rect.p1.x); 1287 PCUT_ASSERT_INT_EQUALS(45, geom.sysmenu_hdl_rect.p1.y); 1288 1289 PCUT_ASSERT_INT_EQUALS(38, geom.caption_rect.p0.x); 1290 PCUT_ASSERT_INT_EQUALS(24, geom.caption_rect.p0.y); 1291 PCUT_ASSERT_INT_EQUALS(51, geom.caption_rect.p1.x); 1292 PCUT_ASSERT_INT_EQUALS(46, geom.caption_rect.p1.y); 1293 1294 PCUT_ASSERT_INT_EQUALS(55, geom.btn_min_rect.p0.x); 1295 PCUT_ASSERT_INT_EQUALS(25, geom.btn_min_rect.p0.y); 1296 PCUT_ASSERT_INT_EQUALS(75, geom.btn_min_rect.p1.x); 1297 PCUT_ASSERT_INT_EQUALS(45, geom.btn_min_rect.p1.y); 1298 1299 /* Maximize button is not in ui_wds_decorated */ 1300 PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p0.x); 1301 PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p0.y); 1302 PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p1.x); 1303 PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p1.y); 1304 621 1305 PCUT_ASSERT_INT_EQUALS(75, geom.btn_close_rect.p0.x); 622 1306 PCUT_ASSERT_INT_EQUALS(25, geom.btn_close_rect.p0.y); … … 639 1323 PCUT_TEST(rect_from_app) 640 1324 { 1325 errno_t rc; 1326 ui_t *ui = NULL; 641 1327 gfx_rect_t arect; 642 1328 gfx_rect_t rect; 1329 1330 rc = ui_create_disp(NULL, &ui); 1331 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 643 1332 644 1333 arect.p0.x = 14; … … 647 1336 arect.p1.y = 196; 648 1337 649 ui_wdecor_rect_from_app(ui _wds_none, &arect, &rect);1338 ui_wdecor_rect_from_app(ui, ui_wds_none, &arect, &rect); 650 1339 651 1340 PCUT_ASSERT_INT_EQUALS(14, rect.p0.x); … … 654 1343 PCUT_ASSERT_INT_EQUALS(196, rect.p1.y); 655 1344 656 ui_wdecor_rect_from_app(ui _wds_frame, &arect, &rect);1345 ui_wdecor_rect_from_app(ui, ui_wds_frame, &arect, &rect); 657 1346 658 1347 PCUT_ASSERT_INT_EQUALS(10, rect.p0.x); … … 661 1350 PCUT_ASSERT_INT_EQUALS(200, rect.p1.y); 662 1351 663 ui_wdecor_rect_from_app(ui _wds_decorated, &arect, &rect);1352 ui_wdecor_rect_from_app(ui, ui_wds_decorated, &arect, &rect); 664 1353 665 1354 PCUT_ASSERT_INT_EQUALS(10, rect.p0.x); … … 668 1357 PCUT_ASSERT_INT_EQUALS(200, rect.p1.y); 669 1358 1359 ui_destroy(ui); 670 1360 } 671 1361 … … 673 1363 PCUT_TEST(get_rsztype) 674 1364 { 1365 gfx_context_t *gc = NULL; 1366 test_gc_t tgc; 1367 ui_resource_t *resource = NULL; 675 1368 ui_wdecor_t *wdecor; 676 1369 gfx_rect_t rect; … … 679 1372 errno_t rc; 680 1373 681 rc = ui_wdecor_create(NULL, "Hello", ui_wds_resizable, &wdecor); 1374 memset(&tgc, 0, sizeof(tgc)); 1375 rc = gfx_context_new(&ops, &tgc, &gc); 1376 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 1377 1378 rc = ui_resource_create(gc, false, &resource); 1379 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 1380 PCUT_ASSERT_NOT_NULL(resource); 1381 1382 rc = ui_wdecor_create(resource, "Hello", ui_wds_resizable, &wdecor); 682 1383 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 683 1384 … … 759 1460 /* Non-resizable window */ 760 1461 761 rc = ui_wdecor_create( NULL, "Hello", ui_wds_none, &wdecor);1462 rc = ui_wdecor_create(resource, "Hello", ui_wds_none, &wdecor); 762 1463 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 763 1464 … … 775 1476 776 1477 ui_wdecor_destroy(wdecor); 1478 ui_resource_destroy(resource); 1479 1480 rc = gfx_context_delete(gc); 1481 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 777 1482 } 778 1483 … … 803 1508 PCUT_TEST(frame_pos_event) 804 1509 { 1510 gfx_context_t *gc = NULL; 1511 test_gc_t tgc; 1512 ui_resource_t *resource = NULL; 805 1513 ui_wdecor_t *wdecor; 806 1514 gfx_rect_t rect; … … 809 1517 errno_t rc; 810 1518 811 rc = ui_wdecor_create(NULL, "Hello", ui_wds_resizable, &wdecor); 1519 memset(&tgc, 0, sizeof(tgc)); 1520 rc = gfx_context_new(&ops, &tgc, &gc); 1521 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 1522 1523 rc = ui_resource_create(gc, false, &resource); 1524 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 1525 PCUT_ASSERT_NOT_NULL(resource); 1526 1527 rc = ui_wdecor_create(resource, "Hello", ui_wds_resizable, &wdecor); 812 1528 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 813 1529 … … 845 1561 846 1562 ui_wdecor_destroy(wdecor); 1563 ui_resource_destroy(resource); 1564 1565 rc = gfx_context_delete(gc); 1566 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 847 1567 } 848 1568 … … 936 1656 } 937 1657 1658 static void test_wdecor_sysmenu_open(ui_wdecor_t *wdecor, void *arg, 1659 sysarg_t idev_id) 1660 { 1661 test_cb_resp_t *resp = (test_cb_resp_t *) arg; 1662 1663 resp->sysmenu_open = true; 1664 resp->idev_id = idev_id; 1665 } 1666 1667 static void test_wdecor_sysmenu_left(ui_wdecor_t *wdecor, void *arg, 1668 sysarg_t idev_id) 1669 { 1670 test_cb_resp_t *resp = (test_cb_resp_t *) arg; 1671 1672 resp->sysmenu_left = true; 1673 resp->idev_id = idev_id; 1674 } 1675 1676 static void test_wdecor_sysmenu_right(ui_wdecor_t *wdecor, void *arg, 1677 sysarg_t idev_id) 1678 { 1679 test_cb_resp_t *resp = (test_cb_resp_t *) arg; 1680 1681 resp->sysmenu_right = true; 1682 resp->idev_id = idev_id; 1683 } 1684 1685 static void test_wdecor_sysmenu_accel(ui_wdecor_t *wdecor, void *arg, 1686 char32_t accel, sysarg_t idev_id) 1687 { 1688 test_cb_resp_t *resp = (test_cb_resp_t *) arg; 1689 1690 resp->sysmenu_accel = true; 1691 resp->accel = accel; 1692 resp->idev_id = idev_id; 1693 } 1694 1695 static void test_wdecor_minimize(ui_wdecor_t *wdecor, void *arg) 1696 { 1697 test_cb_resp_t *resp = (test_cb_resp_t *) arg; 1698 1699 resp->minimize = true; 1700 } 1701 1702 static void test_wdecor_maximize(ui_wdecor_t *wdecor, void *arg) 1703 { 1704 test_cb_resp_t *resp = (test_cb_resp_t *) arg; 1705 1706 resp->maximize = true; 1707 } 1708 1709 static void test_wdecor_unmaximize(ui_wdecor_t *wdecor, void *arg) 1710 { 1711 test_cb_resp_t *resp = (test_cb_resp_t *) arg; 1712 1713 resp->unmaximize = true; 1714 } 1715 938 1716 static void test_wdecor_close(ui_wdecor_t *wdecor, void *arg) 939 1717 { … … 943 1721 } 944 1722 945 static void test_wdecor_move(ui_wdecor_t *wdecor, void *arg, gfx_coord2_t *pos) 1723 static void test_wdecor_move(ui_wdecor_t *wdecor, void *arg, gfx_coord2_t *pos, 1724 sysarg_t pos_id) 946 1725 { 947 1726 test_cb_resp_t *resp = (test_cb_resp_t *) arg; … … 949 1728 resp->move = true; 950 1729 resp->pos = *pos; 1730 resp->pos_id = pos_id; 951 1731 } 952 1732 953 1733 static void test_wdecor_resize(ui_wdecor_t *wdecor, void *arg, 954 ui_wdecor_rsztype_t rsztype, gfx_coord2_t *pos )1734 ui_wdecor_rsztype_t rsztype, gfx_coord2_t *pos, sysarg_t pos_id) 955 1735 { 956 1736 test_cb_resp_t *resp = (test_cb_resp_t *) arg; … … 959 1739 resp->rsztype = rsztype; 960 1740 resp->pos = *pos; 1741 resp->pos_id = pos_id; 961 1742 } 962 1743
Note:
See TracChangeset
for help on using the changeset viewer.