Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/ui/test/window.c

    r3d10a2f r09b01ed0  
    11/*
    2  * Copyright (c) 2021 Jiri Svoboda
     2 * Copyright (c) 2023 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    4545PCUT_TEST_SUITE(window);
    4646
     47static void test_window_sysmenu(ui_window_t *, void *, sysarg_t);
     48static void test_window_minimize(ui_window_t *, void *);
     49static void test_window_maximize(ui_window_t *, void *);
     50static void test_window_unmaximize(ui_window_t *, void *);
    4751static void test_window_close(ui_window_t *, void *);
    48 static void test_window_focus(ui_window_t *, void *);
     52static void test_window_focus(ui_window_t *, void *, unsigned);
    4953static void test_window_kbd(ui_window_t *, void *, kbd_event_t *);
    5054static errno_t test_window_paint(ui_window_t *, void *);
    5155static void test_window_pos(ui_window_t *, void *, pos_event_t *);
    52 static void test_window_unfocus(ui_window_t *, void *);
     56static void test_window_unfocus(ui_window_t *, void *, unsigned);
    5357
    5458static ui_window_cb_t test_window_cb = {
     59        .sysmenu = test_window_sysmenu,
     60        .minimize = test_window_minimize,
     61        .maximize = test_window_maximize,
     62        .unmaximize = test_window_unmaximize,
    5563        .close = test_window_close,
    5664        .focus = test_window_focus,
     
    6674static errno_t test_ctl_paint(void *);
    6775static ui_evclaim_t test_ctl_pos_event(void *, pos_event_t *);
    68 static void test_ctl_unfocus(void *);
     76static void test_ctl_unfocus(void *, unsigned);
    6977
    7078static ui_control_ops_t test_ctl_ops = {
     
    7684typedef struct {
    7785        errno_t rc;
     86        bool sysmenu;
     87        sysarg_t sysmenu_idev_id;
     88        bool minimize;
     89        bool maximize;
     90        bool unmaximize;
    7891        bool close;
    7992        bool focus;
     93        unsigned focus_nfocus;
    8094        bool kbd;
    8195        kbd_event_t kbd_event;
     
    8498        pos_event_t pos_event;
    8599        bool unfocus;
     100        unsigned unfocus_nfocus;
    86101} test_cb_resp_t;
    87102
     
    93108        pos_event_t pos_event;
    94109        bool unfocus;
     110        unsigned unfocus_nfocus;
    95111} test_ctl_resp_t;
    96112
     
    521537        resp.unfocus = false;
    522538
    523         ui_window_def_unfocus(window);
     539        ui_window_def_unfocus(window, 42);
    524540        PCUT_ASSERT_TRUE(resp.unfocus);
     541        PCUT_ASSERT_INT_EQUALS(42, resp.unfocus_nfocus);
    525542
    526543        /* Need to remove first because we didn't implement the destructor */
    527544        ui_window_remove(window, control);
     545
     546        ui_window_destroy(window);
     547        ui_destroy(ui);
     548}
     549
     550/** ui_window_send_sysmenu() calls sysmenu callback set via ui_window_set_cb() */
     551PCUT_TEST(send_sysmenu)
     552{
     553        errno_t rc;
     554        ui_t *ui = NULL;
     555        ui_wnd_params_t params;
     556        ui_window_t *window = NULL;
     557        test_cb_resp_t resp;
     558
     559        rc = ui_create_disp(NULL, &ui);
     560        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     561
     562        ui_wnd_params_init(&params);
     563        params.caption = "Hello";
     564
     565        rc = ui_window_create(ui, &params, &window);
     566        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     567        PCUT_ASSERT_NOT_NULL(window);
     568
     569        /* Sysmenu callback with no callbacks set */
     570        ui_window_send_sysmenu(window, 42);
     571
     572        /* Sysmenu callback with sysmenu callback not implemented */
     573        ui_window_set_cb(window, &dummy_window_cb, NULL);
     574        ui_window_send_sysmenu(window, 42);
     575
     576        /* Sysmenu callback with real callback set */
     577        resp.sysmenu = false;
     578        resp.sysmenu_idev_id = 0;
     579        ui_window_set_cb(window, &test_window_cb, &resp);
     580        ui_window_send_sysmenu(window, 42);
     581        PCUT_ASSERT_TRUE(resp.sysmenu);
     582        PCUT_ASSERT_INT_EQUALS(42, resp.sysmenu_idev_id);
     583
     584        ui_window_destroy(window);
     585        ui_destroy(ui);
     586}
     587
     588/** ui_window_send_minimize() calls minimize callback set via ui_window_set_cb() */
     589PCUT_TEST(send_minimize)
     590{
     591        errno_t rc;
     592        ui_t *ui = NULL;
     593        ui_wnd_params_t params;
     594        ui_window_t *window = NULL;
     595        test_cb_resp_t resp;
     596
     597        rc = ui_create_disp(NULL, &ui);
     598        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     599
     600        ui_wnd_params_init(&params);
     601        params.caption = "Hello";
     602
     603        rc = ui_window_create(ui, &params, &window);
     604        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     605        PCUT_ASSERT_NOT_NULL(window);
     606
     607        /* Minimize callback with no callbacks set */
     608        ui_window_send_minimize(window);
     609
     610        /* Minimize callback with minimize callback not implemented */
     611        ui_window_set_cb(window, &dummy_window_cb, NULL);
     612        ui_window_send_minimize(window);
     613
     614        /* Minimize callback with real callback set */
     615        resp.minimize = false;
     616        ui_window_set_cb(window, &test_window_cb, &resp);
     617        ui_window_send_minimize(window);
     618        PCUT_ASSERT_TRUE(resp.minimize);
     619
     620        ui_window_destroy(window);
     621        ui_destroy(ui);
     622}
     623
     624/** ui_window_send_maximize() calls maximize callback set via ui_window_set_cb() */
     625PCUT_TEST(send_maximize)
     626{
     627        errno_t rc;
     628        ui_t *ui = NULL;
     629        ui_wnd_params_t params;
     630        ui_window_t *window = NULL;
     631        test_cb_resp_t resp;
     632
     633        rc = ui_create_disp(NULL, &ui);
     634        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     635
     636        ui_wnd_params_init(&params);
     637        params.caption = "Hello";
     638
     639        rc = ui_window_create(ui, &params, &window);
     640        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     641        PCUT_ASSERT_NOT_NULL(window);
     642
     643        /* Maximize callback with no callbacks set */
     644        ui_window_send_maximize(window);
     645
     646        /* Maximize callback with maximize callback not implemented */
     647        ui_window_set_cb(window, &dummy_window_cb, NULL);
     648        ui_window_send_maximize(window);
     649
     650        /* Maximize callback with real callback set */
     651        resp.maximize = false;
     652        ui_window_set_cb(window, &test_window_cb, &resp);
     653        ui_window_send_maximize(window);
     654        PCUT_ASSERT_TRUE(resp.maximize);
     655
     656        ui_window_destroy(window);
     657        ui_destroy(ui);
     658}
     659
     660/** ui_window_send_unmaximize() calls unmaximize callback set via ui_window_set_cb() */
     661PCUT_TEST(send_unmaximize)
     662{
     663        errno_t rc;
     664        ui_t *ui = NULL;
     665        ui_wnd_params_t params;
     666        ui_window_t *window = NULL;
     667        test_cb_resp_t resp;
     668
     669        rc = ui_create_disp(NULL, &ui);
     670        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     671
     672        ui_wnd_params_init(&params);
     673        params.caption = "Hello";
     674
     675        rc = ui_window_create(ui, &params, &window);
     676        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     677        PCUT_ASSERT_NOT_NULL(window);
     678
     679        /* Unmaximize callback with no callbacks set */
     680        ui_window_send_unmaximize(window);
     681
     682        /* Unmaximize callback with unmaximize callback not implemented */
     683        ui_window_set_cb(window, &dummy_window_cb, NULL);
     684        ui_window_send_unmaximize(window);
     685
     686        /* Unmaximize callback with real callback set */
     687        resp.unmaximize = false;
     688        ui_window_set_cb(window, &test_window_cb, &resp);
     689        ui_window_send_unmaximize(window);
     690        PCUT_ASSERT_TRUE(resp.unmaximize);
    528691
    529692        ui_window_destroy(window);
     
    587750
    588751        /* Focus callback with no callbacks set */
    589         ui_window_send_focus(window);
     752        ui_window_send_focus(window, 42);
    590753
    591754        /* Focus callback with focus callback not implemented */
    592755        ui_window_set_cb(window, &dummy_window_cb, NULL);
    593         ui_window_send_focus(window);
     756        ui_window_send_focus(window, 42);
    594757
    595758        /* Focus callback with real callback set */
    596759        resp.focus = false;
    597760        ui_window_set_cb(window, &test_window_cb, &resp);
    598         ui_window_send_focus(window);
     761        ui_window_send_focus(window, 42);
    599762        PCUT_ASSERT_TRUE(resp.focus);
     763        PCUT_ASSERT_INT_EQUALS(42, resp.focus_nfocus);
    600764
    601765        ui_window_destroy(window);
     
    623787        PCUT_ASSERT_NOT_NULL(window);
    624788
    625         kbd_event.type = POS_PRESS;
     789        kbd_event.type = KEY_PRESS;
    626790        kbd_event.key = KC_X;
    627791        kbd_event.mods = 0;
     
    755919
    756920        /* Unfocus callback with no callbacks set */
    757         ui_window_send_unfocus(window);
     921        ui_window_send_unfocus(window, 42);
    758922
    759923        /* Unfocus callback with unfocus callback not implemented */
    760924        ui_window_set_cb(window, &dummy_window_cb, NULL);
    761         ui_window_send_unfocus(window);
     925        ui_window_send_unfocus(window, 42);
    762926
    763927        /* Unfocus callback with real callback set */
    764928        resp.close = false;
    765929        ui_window_set_cb(window, &test_window_cb, &resp);
    766         ui_window_send_unfocus(window);
     930        ui_window_send_unfocus(window, 42);
    767931        PCUT_ASSERT_TRUE(resp.unfocus);
    768 
    769         ui_window_destroy(window);
    770         ui_destroy(ui);
     932        PCUT_ASSERT_INT_EQUALS(42, resp.unfocus_nfocus);
     933
     934        ui_window_destroy(window);
     935        ui_destroy(ui);
     936}
     937
     938static void test_window_sysmenu(ui_window_t *window, void *arg, sysarg_t idev_id)
     939{
     940        test_cb_resp_t *resp = (test_cb_resp_t *) arg;
     941
     942        resp->sysmenu = true;
     943        resp->sysmenu_idev_id = idev_id;
     944}
     945
     946static void test_window_minimize(ui_window_t *window, void *arg)
     947{
     948        test_cb_resp_t *resp = (test_cb_resp_t *) arg;
     949
     950        resp->minimize = true;
     951}
     952
     953static void test_window_maximize(ui_window_t *window, void *arg)
     954{
     955        test_cb_resp_t *resp = (test_cb_resp_t *) arg;
     956
     957        resp->maximize = true;
     958}
     959
     960static void test_window_unmaximize(ui_window_t *window, void *arg)
     961{
     962        test_cb_resp_t *resp = (test_cb_resp_t *) arg;
     963
     964        resp->unmaximize = true;
    771965}
    772966
     
    778972}
    779973
    780 static void test_window_focus(ui_window_t *window, void *arg)
     974static void test_window_focus(ui_window_t *window, void *arg, unsigned nfocus)
    781975{
    782976        test_cb_resp_t *resp = (test_cb_resp_t *) arg;
    783977
    784978        resp->focus = true;
     979        resp->focus_nfocus = nfocus;
    785980}
    786981
     
    8111006}
    8121007
    813 static void test_window_unfocus(ui_window_t *window, void *arg)
     1008static void test_window_unfocus(ui_window_t *window, void *arg, unsigned nfocus)
    8141009{
    8151010        test_cb_resp_t *resp = (test_cb_resp_t *) arg;
    8161011
    8171012        resp->unfocus = true;
     1013        resp->unfocus_nfocus = nfocus;
    8181014}
    8191015
     
    8361032}
    8371033
    838 static void test_ctl_unfocus(void *arg)
     1034static void test_ctl_unfocus(void *arg, unsigned nfocus)
    8391035{
    8401036        test_ctl_resp_t *resp = (test_ctl_resp_t *) arg;
    8411037
    8421038        resp->unfocus = true;
     1039        resp->unfocus_nfocus = nfocus;
    8431040}
    8441041
Note: See TracChangeset for help on using the changeset viewer.