Changeset 8d1bcd7 in mainline for uspace/lib/ui/test/wdecor.c
- Timestamp:
- 2023-09-26T20:26:55Z (20 months ago)
- Branches:
- master, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 5afc1aa
- Parents:
- ed1a948
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/ui/test/wdecor.c
red1a948 r8d1bcd7 62 62 }; 63 63 64 static void test_wdecor_sysmenu(ui_wdecor_t *, void *, sysarg_t); 64 static void test_wdecor_sysmenu_open(ui_wdecor_t *, void *, sysarg_t); 65 static void test_wdecor_sysmenu_left(ui_wdecor_t *, void *, sysarg_t); 66 static void test_wdecor_sysmenu_right(ui_wdecor_t *, void *, sysarg_t); 67 static void test_wdecor_sysmenu_accel(ui_wdecor_t *, void *, char32_t, 68 sysarg_t); 65 69 static void test_wdecor_minimize(ui_wdecor_t *, void *); 66 70 static void test_wdecor_maximize(ui_wdecor_t *, void *); … … 73 77 74 78 static ui_wdecor_cb_t test_wdecor_cb = { 75 .sysmenu = test_wdecor_sysmenu, 79 .sysmenu_open = test_wdecor_sysmenu_open, 80 .sysmenu_left = test_wdecor_sysmenu_left, 81 .sysmenu_right = test_wdecor_sysmenu_right, 82 .sysmenu_accel = test_wdecor_sysmenu_accel, 76 83 .minimize = test_wdecor_minimize, 77 84 .maximize = test_wdecor_maximize, … … 104 111 105 112 typedef struct { 106 bool sysmenu; 113 bool sysmenu_open; 114 bool sysmenu_left; 115 bool sysmenu_right; 116 bool sysmenu_accel; 107 117 bool minimize; 108 118 bool maximize; … … 113 123 sysarg_t pos_id; 114 124 sysarg_t idev_id; 125 char32_t accel; 115 126 bool resize; 116 127 ui_wdecor_rsztype_t rsztype; … … 312 323 } 313 324 314 /** Test ui_wdecor_sysmenu () */315 PCUT_TEST(sysmenu )325 /** Test ui_wdecor_sysmenu_open() */ 326 PCUT_TEST(sysmenu_open) 316 327 { 317 328 errno_t rc; … … 322 333 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 323 334 324 /* Sysmenu callback with no callbacks set */325 ui_wdecor_sysmenu (wdecor, 42);326 327 /* Sysmenu callback with sysmenu callback not implemented */335 /* Sysmenu open callback with no callbacks set */ 336 ui_wdecor_sysmenu_open(wdecor, 42); 337 338 /* Sysmenu open callback with sysmenu callback not implemented */ 328 339 ui_wdecor_set_cb(wdecor, &dummy_wdecor_cb, NULL); 329 ui_wdecor_sysmenu (wdecor, 42);330 331 /* Sysmenu callback with real callback set */332 resp.sysmenu = false;340 ui_wdecor_sysmenu_open(wdecor, 42); 341 342 /* Sysmenu open callback with real callback set */ 343 resp.sysmenu_open = false; 333 344 resp.idev_id = 0; 334 345 ui_wdecor_set_cb(wdecor, &test_wdecor_cb, &resp); 335 ui_wdecor_sysmenu(wdecor, 42); 336 PCUT_ASSERT_TRUE(resp.sysmenu); 346 ui_wdecor_sysmenu_open(wdecor, 42); 347 PCUT_ASSERT_TRUE(resp.sysmenu_open); 348 PCUT_ASSERT_INT_EQUALS(42, resp.idev_id); 349 350 ui_wdecor_destroy(wdecor); 351 } 352 353 /** Test ui_wdecor_sysmenu_left() */ 354 PCUT_TEST(sysmenu_left) 355 { 356 errno_t rc; 357 ui_wdecor_t *wdecor; 358 test_cb_resp_t resp; 359 360 rc = ui_wdecor_create(NULL, "Hello", ui_wds_none, &wdecor); 361 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 362 363 /* Sysmenu left callback with no callbacks set */ 364 ui_wdecor_sysmenu_left(wdecor, 42); 365 366 /* Sysmenu left callback with sysmenu callback not implemented */ 367 ui_wdecor_set_cb(wdecor, &dummy_wdecor_cb, NULL); 368 ui_wdecor_sysmenu_left(wdecor, 42); 369 370 /* Sysmenu left callback with real callback set */ 371 resp.sysmenu_left = false; 372 resp.idev_id = 0; 373 ui_wdecor_set_cb(wdecor, &test_wdecor_cb, &resp); 374 ui_wdecor_sysmenu_left(wdecor, 42); 375 PCUT_ASSERT_TRUE(resp.sysmenu_left); 376 PCUT_ASSERT_INT_EQUALS(42, resp.idev_id); 377 378 ui_wdecor_destroy(wdecor); 379 } 380 381 /** Test ui_wdecor_sysmenu_right() */ 382 PCUT_TEST(sysmenu_right) 383 { 384 errno_t rc; 385 ui_wdecor_t *wdecor; 386 test_cb_resp_t resp; 387 388 rc = ui_wdecor_create(NULL, "Hello", ui_wds_none, &wdecor); 389 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 390 391 /* Sysmenu right callback with no callbacks set */ 392 ui_wdecor_sysmenu_right(wdecor, 42); 393 394 /* Sysmenu right callback with sysmenu callback not implemented */ 395 ui_wdecor_set_cb(wdecor, &dummy_wdecor_cb, NULL); 396 ui_wdecor_sysmenu_right(wdecor, 42); 397 398 /* Sysmenu right callback with real callback set */ 399 resp.sysmenu_right = false; 400 resp.idev_id = 0; 401 ui_wdecor_set_cb(wdecor, &test_wdecor_cb, &resp); 402 ui_wdecor_sysmenu_right(wdecor, 42); 403 PCUT_ASSERT_TRUE(resp.sysmenu_right); 404 PCUT_ASSERT_INT_EQUALS(42, resp.idev_id); 405 406 ui_wdecor_destroy(wdecor); 407 } 408 409 /** Test ui_wdecor_sysmenu_accel() */ 410 PCUT_TEST(sysmenu_accel) 411 { 412 errno_t rc; 413 ui_wdecor_t *wdecor; 414 test_cb_resp_t resp; 415 416 rc = ui_wdecor_create(NULL, "Hello", ui_wds_none, &wdecor); 417 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 418 419 /* Sysmenu accelerator callback with no callbacks set */ 420 ui_wdecor_sysmenu_accel(wdecor, 'a', 42); 421 422 /* Sysmenu accelerator callback with sysmenu callback not implemented */ 423 ui_wdecor_set_cb(wdecor, &dummy_wdecor_cb, NULL); 424 ui_wdecor_sysmenu_accel(wdecor, 'a', 42); 425 426 /* Sysmenu accelerator callback with real callback set */ 427 resp.sysmenu_accel = false; 428 resp.idev_id = 0; 429 ui_wdecor_set_cb(wdecor, &test_wdecor_cb, &resp); 430 ui_wdecor_sysmenu_accel(wdecor, 'a', 42); 431 PCUT_ASSERT_TRUE(resp.sysmenu_accel); 432 PCUT_ASSERT_INT_EQUALS('a', resp.accel); 337 433 PCUT_ASSERT_INT_EQUALS(42, resp.idev_id); 338 434 … … 649 745 } 650 746 651 /** Pressing F9 generates sysmenu event */ 652 PCUT_TEST(kbd_f9_sysmenu) 747 /** Pressing F10 generates sysmenu event. 748 * 749 * Note that in a window with menu bar the menu bar would claim F10 750 * so it would never be delivered to window decoration. 751 */ 752 PCUT_TEST(kbd_f10_sysmenu) 653 753 { 654 754 errno_t rc; … … 681 781 ui_wdecor_set_cb(wdecor, &test_wdecor_cb, (void *) &resp); 682 782 683 resp.move = false; 684 resp.pos.x = 0; 685 resp.pos.y = 0; 783 resp.sysmenu_open = false; 686 784 687 785 event.type = KEY_PRESS; 688 786 event.mods = 0; 689 event.key = KC_F 9;787 event.key = KC_F10; 690 788 event.kbd_id = 42; 691 789 ui_wdecor_kbd_event(wdecor, &event); 692 790 693 PCUT_ASSERT_TRUE(resp.sysmenu); 791 PCUT_ASSERT_TRUE(resp.sysmenu_open); 792 PCUT_ASSERT_INT_EQUALS(event.kbd_id, resp.idev_id); 793 794 ui_wdecor_destroy(wdecor); 795 ui_resource_destroy(resource); 796 797 rc = gfx_context_delete(gc); 798 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 799 } 800 801 /** Down key with active sysmenu handle generates sysmenu open event */ 802 PCUT_TEST(kbd_down_sysmenu) 803 { 804 errno_t rc; 805 gfx_rect_t rect; 806 kbd_event_t event; 807 gfx_context_t *gc = NULL; 808 test_gc_t tgc; 809 test_cb_resp_t resp; 810 ui_resource_t *resource = NULL; 811 ui_wdecor_t *wdecor; 812 813 memset(&tgc, 0, sizeof(tgc)); 814 rc = gfx_context_new(&ops, &tgc, &gc); 815 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 816 817 rc = ui_resource_create(gc, false, &resource); 818 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 819 PCUT_ASSERT_NOT_NULL(resource); 820 821 rc = ui_wdecor_create(resource, "Hello", ui_wds_decorated, &wdecor); 822 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 823 824 rect.p0.x = 10; 825 rect.p0.y = 20; 826 rect.p1.x = 100; 827 rect.p1.y = 200; 828 829 ui_wdecor_set_rect(wdecor, &rect); 830 831 ui_wdecor_set_cb(wdecor, &test_wdecor_cb, (void *) &resp); 832 833 ui_wdecor_sysmenu_hdl_set_active(wdecor, true); 834 835 resp.sysmenu_open = false; 836 837 event.type = KEY_PRESS; 838 event.mods = 0; 839 event.key = KC_DOWN; 840 event.kbd_id = 42; 841 ui_wdecor_kbd_event(wdecor, &event); 842 843 PCUT_ASSERT_TRUE(resp.sysmenu_open); 844 PCUT_ASSERT_INT_EQUALS(event.kbd_id, resp.idev_id); 845 846 ui_wdecor_destroy(wdecor); 847 ui_resource_destroy(resource); 848 849 rc = gfx_context_delete(gc); 850 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 851 } 852 853 /** Left key with active sysmenu handle generates sysmenu left event */ 854 PCUT_TEST(kbd_left_sysmenu) 855 { 856 errno_t rc; 857 gfx_rect_t rect; 858 kbd_event_t event; 859 gfx_context_t *gc = NULL; 860 test_gc_t tgc; 861 test_cb_resp_t resp; 862 ui_resource_t *resource = NULL; 863 ui_wdecor_t *wdecor; 864 865 memset(&tgc, 0, sizeof(tgc)); 866 rc = gfx_context_new(&ops, &tgc, &gc); 867 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 868 869 rc = ui_resource_create(gc, false, &resource); 870 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 871 PCUT_ASSERT_NOT_NULL(resource); 872 873 rc = ui_wdecor_create(resource, "Hello", ui_wds_decorated, &wdecor); 874 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 875 876 rect.p0.x = 10; 877 rect.p0.y = 20; 878 rect.p1.x = 100; 879 rect.p1.y = 200; 880 881 ui_wdecor_set_rect(wdecor, &rect); 882 883 ui_wdecor_set_cb(wdecor, &test_wdecor_cb, (void *) &resp); 884 885 ui_wdecor_sysmenu_hdl_set_active(wdecor, true); 886 887 resp.sysmenu_left = false; 888 889 event.type = KEY_PRESS; 890 event.mods = 0; 891 event.key = KC_LEFT; 892 event.kbd_id = 42; 893 ui_wdecor_kbd_event(wdecor, &event); 894 895 PCUT_ASSERT_TRUE(resp.sysmenu_left); 896 PCUT_ASSERT_INT_EQUALS(event.kbd_id, resp.idev_id); 897 898 ui_wdecor_destroy(wdecor); 899 ui_resource_destroy(resource); 900 901 rc = gfx_context_delete(gc); 902 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 903 } 904 905 /** Right key with active sysmenu handle generates sysmenu right event */ 906 PCUT_TEST(kbd_right_sysmenu) 907 { 908 errno_t rc; 909 gfx_rect_t rect; 910 kbd_event_t event; 911 gfx_context_t *gc = NULL; 912 test_gc_t tgc; 913 test_cb_resp_t resp; 914 ui_resource_t *resource = NULL; 915 ui_wdecor_t *wdecor; 916 917 memset(&tgc, 0, sizeof(tgc)); 918 rc = gfx_context_new(&ops, &tgc, &gc); 919 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 920 921 rc = ui_resource_create(gc, false, &resource); 922 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 923 PCUT_ASSERT_NOT_NULL(resource); 924 925 rc = ui_wdecor_create(resource, "Hello", ui_wds_decorated, &wdecor); 926 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 927 928 rect.p0.x = 10; 929 rect.p0.y = 20; 930 rect.p1.x = 100; 931 rect.p1.y = 200; 932 933 ui_wdecor_set_rect(wdecor, &rect); 934 935 ui_wdecor_set_cb(wdecor, &test_wdecor_cb, (void *) &resp); 936 937 ui_wdecor_sysmenu_hdl_set_active(wdecor, true); 938 939 resp.sysmenu_right = false; 940 941 event.type = KEY_PRESS; 942 event.mods = 0; 943 event.key = KC_RIGHT; 944 event.kbd_id = 42; 945 ui_wdecor_kbd_event(wdecor, &event); 946 947 PCUT_ASSERT_TRUE(resp.sysmenu_right); 948 PCUT_ASSERT_INT_EQUALS(event.kbd_id, resp.idev_id); 949 950 ui_wdecor_destroy(wdecor); 951 ui_resource_destroy(resource); 952 953 rc = gfx_context_delete(gc); 954 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 955 } 956 957 /** Character key with active sysmenu handle generates sysmenu accel event */ 958 PCUT_TEST(kbd_accel_sysmenu) 959 { 960 errno_t rc; 961 gfx_rect_t rect; 962 kbd_event_t event; 963 gfx_context_t *gc = NULL; 964 test_gc_t tgc; 965 test_cb_resp_t resp; 966 ui_resource_t *resource = NULL; 967 ui_wdecor_t *wdecor; 968 969 memset(&tgc, 0, sizeof(tgc)); 970 rc = gfx_context_new(&ops, &tgc, &gc); 971 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 972 973 rc = ui_resource_create(gc, false, &resource); 974 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 975 PCUT_ASSERT_NOT_NULL(resource); 976 977 rc = ui_wdecor_create(resource, "Hello", ui_wds_decorated, &wdecor); 978 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 979 980 rect.p0.x = 10; 981 rect.p0.y = 20; 982 rect.p1.x = 100; 983 rect.p1.y = 200; 984 985 ui_wdecor_set_rect(wdecor, &rect); 986 987 ui_wdecor_set_cb(wdecor, &test_wdecor_cb, (void *) &resp); 988 989 ui_wdecor_sysmenu_hdl_set_active(wdecor, true); 990 991 resp.sysmenu_accel = false; 992 993 event.type = KEY_PRESS; 994 event.mods = 0; 995 event.key = KC_A; 996 event.c = 'a'; 997 event.kbd_id = 42; 998 ui_wdecor_kbd_event(wdecor, &event); 999 1000 PCUT_ASSERT_TRUE(resp.sysmenu_accel); 1001 PCUT_ASSERT_INT_EQUALS(event.c, resp.accel); 694 1002 PCUT_ASSERT_INT_EQUALS(event.kbd_id, resp.idev_id); 695 1003 … … 1341 1649 } 1342 1650 1343 static void test_wdecor_sysmenu (ui_wdecor_t *wdecor, void *arg,1651 static void test_wdecor_sysmenu_open(ui_wdecor_t *wdecor, void *arg, 1344 1652 sysarg_t idev_id) 1345 1653 { 1346 1654 test_cb_resp_t *resp = (test_cb_resp_t *) arg; 1347 1655 1348 resp->sysmenu = true; 1656 resp->sysmenu_open = true; 1657 resp->idev_id = idev_id; 1658 } 1659 1660 static void test_wdecor_sysmenu_left(ui_wdecor_t *wdecor, void *arg, 1661 sysarg_t idev_id) 1662 { 1663 test_cb_resp_t *resp = (test_cb_resp_t *) arg; 1664 1665 resp->sysmenu_left = true; 1666 resp->idev_id = idev_id; 1667 } 1668 1669 static void test_wdecor_sysmenu_right(ui_wdecor_t *wdecor, void *arg, 1670 sysarg_t idev_id) 1671 { 1672 test_cb_resp_t *resp = (test_cb_resp_t *) arg; 1673 1674 resp->sysmenu_right = true; 1675 resp->idev_id = idev_id; 1676 } 1677 1678 static void test_wdecor_sysmenu_accel(ui_wdecor_t *wdecor, void *arg, 1679 char32_t accel, sysarg_t idev_id) 1680 { 1681 test_cb_resp_t *resp = (test_cb_resp_t *) arg; 1682 1683 resp->sysmenu_accel = true; 1684 resp->accel = accel; 1349 1685 resp->idev_id = idev_id; 1350 1686 }
Note:
See TracChangeset
for help on using the changeset viewer.