Changes in uspace/lib/ui/test/window.c [0576df9:cde067e] in mainline
- File:
-
- 1 edited
-
uspace/lib/ui/test/window.c (modified) (17 diffs)
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/ui/test/window.c
r0576df9 rcde067e 1 1 /* 2 * Copyright (c) 202 0Jiri Svoboda2 * Copyright (c) 2024 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 45 45 PCUT_TEST_SUITE(window); 46 46 47 static void test_window_sysmenu(ui_window_t *, void *, sysarg_t); 48 static void test_window_minimize(ui_window_t *, void *); 49 static void test_window_maximize(ui_window_t *, void *); 50 static void test_window_unmaximize(ui_window_t *, void *); 47 51 static void test_window_close(ui_window_t *, void *); 48 static void test_window_focus(ui_window_t *, void * );52 static void test_window_focus(ui_window_t *, void *, unsigned); 49 53 static void test_window_kbd(ui_window_t *, void *, kbd_event_t *); 50 54 static errno_t test_window_paint(ui_window_t *, void *); 51 55 static void test_window_pos(ui_window_t *, void *, pos_event_t *); 52 static void test_window_unfocus(ui_window_t *, void *); 56 static void test_window_unfocus(ui_window_t *, void *, unsigned); 57 static void test_window_resize(ui_window_t *, void *); 53 58 54 59 static ui_window_cb_t test_window_cb = { 60 .sysmenu = test_window_sysmenu, 61 .minimize = test_window_minimize, 62 .maximize = test_window_maximize, 63 .unmaximize = test_window_unmaximize, 55 64 .close = test_window_close, 56 65 .focus = test_window_focus, … … 58 67 .paint = test_window_paint, 59 68 .pos = test_window_pos, 60 .unfocus = test_window_unfocus 69 .unfocus = test_window_unfocus, 70 .resize = test_window_resize 61 71 }; 62 72 … … 66 76 static errno_t test_ctl_paint(void *); 67 77 static ui_evclaim_t test_ctl_pos_event(void *, pos_event_t *); 78 static void test_ctl_unfocus(void *, unsigned); 68 79 69 80 static ui_control_ops_t test_ctl_ops = { 70 81 .paint = test_ctl_paint, 71 .pos_event = test_ctl_pos_event 82 .pos_event = test_ctl_pos_event, 83 .unfocus = test_ctl_unfocus 72 84 }; 73 85 74 86 typedef struct { 75 87 errno_t rc; 88 bool sysmenu; 89 sysarg_t sysmenu_idev_id; 90 bool minimize; 91 bool maximize; 92 bool unmaximize; 76 93 bool close; 77 94 bool focus; 95 unsigned focus_nfocus; 78 96 bool kbd; 79 97 kbd_event_t kbd_event; … … 82 100 pos_event_t pos_event; 83 101 bool unfocus; 102 unsigned unfocus_nfocus; 103 bool resize; 84 104 } test_cb_resp_t; 85 105 … … 90 110 bool pos; 91 111 pos_event_t pos_event; 112 bool unfocus; 113 unsigned unfocus_nfocus; 92 114 } test_ctl_resp_t; 93 115 … … 175 197 } 176 198 199 /** ui_window_get_active */ 200 PCUT_TEST(get_active) 201 { 202 errno_t rc; 203 ui_t *ui = NULL; 204 ui_wnd_params_t params; 205 ui_window_t *window1 = NULL; 206 ui_window_t *window2 = NULL; 207 ui_window_t *awnd; 208 209 rc = ui_create_cons(NULL, &ui); 210 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 211 212 awnd = ui_window_get_active(ui); 213 PCUT_ASSERT_NULL(awnd); 214 215 ui_wnd_params_init(¶ms); 216 params.caption = "Hello"; 217 218 rc = ui_window_create(ui, ¶ms, &window1); 219 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 220 PCUT_ASSERT_NOT_NULL(window1); 221 222 awnd = ui_window_get_active(ui); 223 PCUT_ASSERT_EQUALS(window1, awnd); 224 225 rc = ui_window_create(ui, ¶ms, &window2); 226 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 227 PCUT_ASSERT_NOT_NULL(window2); 228 229 awnd = ui_window_get_active(ui); 230 PCUT_ASSERT_EQUALS(window2, awnd); 231 232 ui_window_destroy(window2); 233 234 awnd = ui_window_get_active(ui); 235 PCUT_ASSERT_EQUALS(window1, awnd); 236 237 ui_window_destroy(window1); 238 239 awnd = ui_window_get_active(ui); 240 PCUT_ASSERT_NULL(awnd); 241 242 ui_destroy(ui); 243 } 244 177 245 /** ui_window_resize */ 178 246 PCUT_TEST(resize) … … 209 277 } 210 278 279 /** ui_window_get_ui() returns containing UI */ 280 PCUT_TEST(get_ui) 281 { 282 errno_t rc; 283 ui_t *ui = NULL; 284 ui_t *rui; 285 ui_wnd_params_t params; 286 ui_window_t *window = NULL; 287 288 rc = ui_create_disp(NULL, &ui); 289 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 290 291 ui_wnd_params_init(¶ms); 292 params.caption = "Hello"; 293 294 rc = ui_window_create(ui, ¶ms, &window); 295 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 296 PCUT_ASSERT_NOT_NULL(window); 297 298 rui = ui_window_get_ui(window); 299 PCUT_ASSERT_EQUALS(ui, rui); 300 301 ui_window_destroy(window); 302 ui_destroy(ui); 303 } 304 211 305 /** ui_window_get_res/gc/rect() return valid objects */ 212 306 PCUT_TEST(get_res_gc_rect) … … 242 336 } 243 337 338 /** ui_window_set_ctl_cursor() */ 339 PCUT_TEST(set_ctl_cursor) 340 { 341 errno_t rc; 342 ui_t *ui = NULL; 343 ui_wnd_params_t params; 344 ui_window_t *window = NULL; 345 346 rc = ui_create_disp(NULL, &ui); 347 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 348 349 ui_wnd_params_init(¶ms); 350 params.caption = "Hello"; 351 352 rc = ui_window_create(ui, ¶ms, &window); 353 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 354 PCUT_ASSERT_NOT_NULL(window); 355 356 ui_window_set_ctl_cursor(window, ui_curs_ibeam); 357 358 ui_window_destroy(window); 359 ui_destroy(ui); 360 } 361 244 362 /** ui_window_get_app_gc() return valid GC */ 245 363 PCUT_TEST(get_app_gc) … … 258 376 params.rect.p0.x = 0; 259 377 params.rect.p0.y = 0; 260 params.rect.p0.x = 10 ;261 params.rect.p0.y = 10 ;378 params.rect.p0.x = 100; 379 params.rect.p0.y = 100; 262 380 263 381 rc = ui_window_create(ui, ¶ms, &window); … … 396 514 } 397 515 516 /** ui_window_def_unfocus() delivers unfocus event to control in window */ 517 PCUT_TEST(def_unfocus) 518 { 519 errno_t rc; 520 ui_t *ui = NULL; 521 ui_wnd_params_t params; 522 ui_window_t *window = NULL; 523 ui_control_t *control = NULL; 524 test_ctl_resp_t resp; 525 526 rc = ui_create_disp(NULL, &ui); 527 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 528 529 ui_wnd_params_init(¶ms); 530 params.caption = "Hello"; 531 532 rc = ui_window_create(ui, ¶ms, &window); 533 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 534 535 rc = ui_control_new(&test_ctl_ops, &resp, &control); 536 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 537 538 ui_window_add(window, control); 539 540 resp.unfocus = false; 541 542 ui_window_def_unfocus(window, 42); 543 PCUT_ASSERT_TRUE(resp.unfocus); 544 PCUT_ASSERT_INT_EQUALS(42, resp.unfocus_nfocus); 545 546 /* Need to remove first because we didn't implement the destructor */ 547 ui_window_remove(window, control); 548 549 ui_window_destroy(window); 550 ui_destroy(ui); 551 } 552 553 /** ui_window_send_sysmenu() calls sysmenu callback set via ui_window_set_cb() */ 554 PCUT_TEST(send_sysmenu) 555 { 556 errno_t rc; 557 ui_t *ui = NULL; 558 ui_wnd_params_t params; 559 ui_window_t *window = NULL; 560 test_cb_resp_t resp; 561 562 rc = ui_create_disp(NULL, &ui); 563 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 564 565 ui_wnd_params_init(¶ms); 566 params.caption = "Hello"; 567 568 rc = ui_window_create(ui, ¶ms, &window); 569 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 570 PCUT_ASSERT_NOT_NULL(window); 571 572 /* Sysmenu callback with no callbacks set */ 573 ui_window_send_sysmenu(window, 42); 574 575 /* Sysmenu callback with sysmenu callback not implemented */ 576 ui_window_set_cb(window, &dummy_window_cb, NULL); 577 ui_window_send_sysmenu(window, 42); 578 579 /* Sysmenu callback with real callback set */ 580 resp.sysmenu = false; 581 resp.sysmenu_idev_id = 0; 582 ui_window_set_cb(window, &test_window_cb, &resp); 583 ui_window_send_sysmenu(window, 42); 584 PCUT_ASSERT_TRUE(resp.sysmenu); 585 PCUT_ASSERT_INT_EQUALS(42, resp.sysmenu_idev_id); 586 587 ui_window_destroy(window); 588 ui_destroy(ui); 589 } 590 591 /** ui_window_send_minimize() calls minimize callback set via ui_window_set_cb() */ 592 PCUT_TEST(send_minimize) 593 { 594 errno_t rc; 595 ui_t *ui = NULL; 596 ui_wnd_params_t params; 597 ui_window_t *window = NULL; 598 test_cb_resp_t resp; 599 600 rc = ui_create_disp(NULL, &ui); 601 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 602 603 ui_wnd_params_init(¶ms); 604 params.caption = "Hello"; 605 606 rc = ui_window_create(ui, ¶ms, &window); 607 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 608 PCUT_ASSERT_NOT_NULL(window); 609 610 /* Minimize callback with no callbacks set */ 611 ui_window_send_minimize(window); 612 613 /* Minimize callback with minimize callback not implemented */ 614 ui_window_set_cb(window, &dummy_window_cb, NULL); 615 ui_window_send_minimize(window); 616 617 /* Minimize callback with real callback set */ 618 resp.minimize = false; 619 ui_window_set_cb(window, &test_window_cb, &resp); 620 ui_window_send_minimize(window); 621 PCUT_ASSERT_TRUE(resp.minimize); 622 623 ui_window_destroy(window); 624 ui_destroy(ui); 625 } 626 627 /** ui_window_send_maximize() calls maximize callback set via ui_window_set_cb() */ 628 PCUT_TEST(send_maximize) 629 { 630 errno_t rc; 631 ui_t *ui = NULL; 632 ui_wnd_params_t params; 633 ui_window_t *window = NULL; 634 test_cb_resp_t resp; 635 636 rc = ui_create_disp(NULL, &ui); 637 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 638 639 ui_wnd_params_init(¶ms); 640 params.caption = "Hello"; 641 642 rc = ui_window_create(ui, ¶ms, &window); 643 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 644 PCUT_ASSERT_NOT_NULL(window); 645 646 /* Maximize callback with no callbacks set */ 647 ui_window_send_maximize(window); 648 649 /* Maximize callback with maximize callback not implemented */ 650 ui_window_set_cb(window, &dummy_window_cb, NULL); 651 ui_window_send_maximize(window); 652 653 /* Maximize callback with real callback set */ 654 resp.maximize = false; 655 ui_window_set_cb(window, &test_window_cb, &resp); 656 ui_window_send_maximize(window); 657 PCUT_ASSERT_TRUE(resp.maximize); 658 659 ui_window_destroy(window); 660 ui_destroy(ui); 661 } 662 663 /** ui_window_send_unmaximize() calls unmaximize callback set via ui_window_set_cb() */ 664 PCUT_TEST(send_unmaximize) 665 { 666 errno_t rc; 667 ui_t *ui = NULL; 668 ui_wnd_params_t params; 669 ui_window_t *window = NULL; 670 test_cb_resp_t resp; 671 672 rc = ui_create_disp(NULL, &ui); 673 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 674 675 ui_wnd_params_init(¶ms); 676 params.caption = "Hello"; 677 678 rc = ui_window_create(ui, ¶ms, &window); 679 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 680 PCUT_ASSERT_NOT_NULL(window); 681 682 /* Unmaximize callback with no callbacks set */ 683 ui_window_send_unmaximize(window); 684 685 /* Unmaximize callback with unmaximize callback not implemented */ 686 ui_window_set_cb(window, &dummy_window_cb, NULL); 687 ui_window_send_unmaximize(window); 688 689 /* Unmaximize callback with real callback set */ 690 resp.unmaximize = false; 691 ui_window_set_cb(window, &test_window_cb, &resp); 692 ui_window_send_unmaximize(window); 693 PCUT_ASSERT_TRUE(resp.unmaximize); 694 695 ui_window_destroy(window); 696 ui_destroy(ui); 697 } 698 398 699 /** ui_window_send_close() calls close callback set via ui_window_set_cb() */ 399 700 PCUT_TEST(send_close) … … 452 753 453 754 /* Focus callback with no callbacks set */ 454 ui_window_send_focus(window );755 ui_window_send_focus(window, 42); 455 756 456 757 /* Focus callback with focus callback not implemented */ 457 758 ui_window_set_cb(window, &dummy_window_cb, NULL); 458 ui_window_send_focus(window );759 ui_window_send_focus(window, 42); 459 760 460 761 /* Focus callback with real callback set */ 461 762 resp.focus = false; 462 763 ui_window_set_cb(window, &test_window_cb, &resp); 463 ui_window_send_focus(window );764 ui_window_send_focus(window, 42); 464 765 PCUT_ASSERT_TRUE(resp.focus); 766 PCUT_ASSERT_INT_EQUALS(42, resp.focus_nfocus); 465 767 466 768 ui_window_destroy(window); … … 488 790 PCUT_ASSERT_NOT_NULL(window); 489 791 490 kbd_event.type = POS_PRESS;792 kbd_event.type = KEY_PRESS; 491 793 kbd_event.key = KC_X; 492 794 kbd_event.mods = 0; … … 620 922 621 923 /* Unfocus callback with no callbacks set */ 622 ui_window_send_unfocus(window );924 ui_window_send_unfocus(window, 42); 623 925 624 926 /* Unfocus callback with unfocus callback not implemented */ 625 927 ui_window_set_cb(window, &dummy_window_cb, NULL); 626 ui_window_send_unfocus(window );928 ui_window_send_unfocus(window, 42); 627 929 628 930 /* Unfocus callback with real callback set */ 629 931 resp.close = false; 630 932 ui_window_set_cb(window, &test_window_cb, &resp); 631 ui_window_send_unfocus(window );933 ui_window_send_unfocus(window, 42); 632 934 PCUT_ASSERT_TRUE(resp.unfocus); 633 634 ui_window_destroy(window); 635 ui_destroy(ui); 935 PCUT_ASSERT_INT_EQUALS(42, resp.unfocus_nfocus); 936 937 ui_window_destroy(window); 938 ui_destroy(ui); 939 } 940 941 /** ui_window_send_resize() calls resize callback set via ui_window_set_cb() */ 942 PCUT_TEST(send_resize) 943 { 944 errno_t rc; 945 ui_t *ui = NULL; 946 ui_wnd_params_t params; 947 ui_window_t *window = NULL; 948 test_cb_resp_t resp; 949 950 rc = ui_create_disp(NULL, &ui); 951 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 952 953 ui_wnd_params_init(¶ms); 954 params.caption = "Hello"; 955 956 rc = ui_window_create(ui, ¶ms, &window); 957 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 958 PCUT_ASSERT_NOT_NULL(window); 959 960 /* Resize callback with no callbacks set */ 961 ui_window_send_resize(window); 962 963 /* Resize callback with resize callback not implemented */ 964 ui_window_set_cb(window, &dummy_window_cb, NULL); 965 ui_window_send_resize(window); 966 967 /* Resize callback with real callback set */ 968 resp.close = false; 969 ui_window_set_cb(window, &test_window_cb, &resp); 970 ui_window_send_resize(window); 971 PCUT_ASSERT_TRUE(resp.resize); 972 973 ui_window_destroy(window); 974 ui_destroy(ui); 975 } 976 977 static void test_window_sysmenu(ui_window_t *window, void *arg, sysarg_t idev_id) 978 { 979 test_cb_resp_t *resp = (test_cb_resp_t *) arg; 980 981 resp->sysmenu = true; 982 resp->sysmenu_idev_id = idev_id; 983 } 984 985 static void test_window_minimize(ui_window_t *window, void *arg) 986 { 987 test_cb_resp_t *resp = (test_cb_resp_t *) arg; 988 989 resp->minimize = true; 990 } 991 992 static void test_window_maximize(ui_window_t *window, void *arg) 993 { 994 test_cb_resp_t *resp = (test_cb_resp_t *) arg; 995 996 resp->maximize = true; 997 } 998 999 static void test_window_unmaximize(ui_window_t *window, void *arg) 1000 { 1001 test_cb_resp_t *resp = (test_cb_resp_t *) arg; 1002 1003 resp->unmaximize = true; 636 1004 } 637 1005 … … 643 1011 } 644 1012 645 static void test_window_focus(ui_window_t *window, void *arg )1013 static void test_window_focus(ui_window_t *window, void *arg, unsigned nfocus) 646 1014 { 647 1015 test_cb_resp_t *resp = (test_cb_resp_t *) arg; 648 1016 649 1017 resp->focus = true; 1018 resp->focus_nfocus = nfocus; 650 1019 } 651 1020 … … 676 1045 } 677 1046 678 static void test_window_unfocus(ui_window_t *window, void *arg )1047 static void test_window_unfocus(ui_window_t *window, void *arg, unsigned nfocus) 679 1048 { 680 1049 test_cb_resp_t *resp = (test_cb_resp_t *) arg; 681 1050 682 1051 resp->unfocus = true; 1052 resp->unfocus_nfocus = nfocus; 1053 } 1054 1055 static void test_window_resize(ui_window_t *window, void *arg) 1056 { 1057 test_cb_resp_t *resp = (test_cb_resp_t *) arg; 1058 1059 resp->resize = true; 683 1060 } 684 1061 … … 701 1078 } 702 1079 1080 static void test_ctl_unfocus(void *arg, unsigned nfocus) 1081 { 1082 test_ctl_resp_t *resp = (test_ctl_resp_t *) arg; 1083 1084 resp->unfocus = true; 1085 resp->unfocus_nfocus = nfocus; 1086 } 1087 703 1088 PCUT_EXPORT(window);
Note:
See TracChangeset
for help on using the changeset viewer.
