Changeset 5480d5e in mainline for uspace/lib/display/test/display.c


Ignore:
Timestamp:
2020-05-19T21:51:11Z (4 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
9242ad9
Parents:
4c4d6142
Message:

Add libdisplay method for setting window cursor

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/display/test/display.c

    r4c4d6142 r5480d5e  
    6262static errno_t test_window_resize(void *, sysarg_t, gfx_coord2_t *,
    6363    gfx_rect_t *);
     64static errno_t test_window_set_cursor(void *, sysarg_t, display_stock_cursor_t);
    6465static errno_t test_get_event(void *, sysarg_t *, display_wnd_ev_t *);
    6566static errno_t test_get_info(void *, display_info_t *);
     
    7475        .window_resize_req = test_window_resize_req,
    7576        .window_resize = test_window_resize,
     77        .window_set_cursor = test_window_set_cursor,
    7678        .get_event = test_get_event,
    7779        .get_info = test_get_info
     
    122124        gfx_rect_t resize_nbound;
    123125        sysarg_t resize_wnd_id;
     126
     127        bool window_set_cursor_called;
     128        sysarg_t set_cursor_wnd_id;
     129        display_stock_cursor_t set_cursor_cursor;
    124130
    125131        bool get_event_called;
     
    777783        PCUT_ASSERT_INT_EQUALS(nrect.p1.x, resp.resize_nbound.p1.x);
    778784        PCUT_ASSERT_INT_EQUALS(nrect.p1.y, resp.resize_nbound.p1.y);
     785
     786        display_window_destroy(wnd);
     787        display_close(disp);
     788        rc = loc_service_unregister(sid);
     789        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     790}
     791
     792/** display_window_set_cursor() with server returning error response works. */
     793PCUT_TEST(window_set_cursor_failure)
     794{
     795        errno_t rc;
     796        service_id_t sid;
     797        display_t *disp = NULL;
     798        display_wnd_params_t params;
     799        display_window_t *wnd;
     800        test_response_t resp;
     801
     802        async_set_fallback_port_handler(test_display_conn, &resp);
     803
     804        // FIXME This causes this test to be non-reentrant!
     805        rc = loc_server_register(test_display_server);
     806        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     807
     808        rc = loc_service_register(test_display_svc, &sid);
     809        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     810
     811        rc = display_open(test_display_svc, &disp);
     812        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     813        PCUT_ASSERT_NOT_NULL(disp);
     814
     815        resp.rc = EOK;
     816        display_wnd_params_init(&params);
     817        params.rect.p0.x = 0;
     818        params.rect.p0.y = 0;
     819        params.rect.p0.x = 100;
     820        params.rect.p0.y = 100;
     821
     822        rc = display_window_create(disp, &params, &test_display_wnd_cb,
     823            (void *) &resp, &wnd);
     824        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     825        PCUT_ASSERT_NOT_NULL(wnd);
     826
     827        resp.rc = EIO;
     828        resp.window_set_cursor_called = false;
     829
     830        rc = display_window_set_cursor(wnd, dcurs_size_ud);
     831        PCUT_ASSERT_INT_EQUALS(wnd->id, resp.set_cursor_wnd_id);
     832        PCUT_ASSERT_TRUE(resp.window_set_cursor_called);
     833        PCUT_ASSERT_ERRNO_VAL(resp.rc, rc);
     834        PCUT_ASSERT_INT_EQUALS(dcurs_size_ud, resp.set_cursor_cursor);
     835
     836        display_window_destroy(wnd);
     837        display_close(disp);
     838        rc = loc_service_unregister(sid);
     839        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     840}
     841
     842/** display_window_set_cursor() with server returning success response works. */
     843PCUT_TEST(window_set_cursor_success)
     844{
     845        errno_t rc;
     846        service_id_t sid;
     847        display_t *disp = NULL;
     848        display_wnd_params_t params;
     849        display_window_t *wnd;
     850        test_response_t resp;
     851
     852        async_set_fallback_port_handler(test_display_conn, &resp);
     853
     854        // FIXME This causes this test to be non-reentrant!
     855        rc = loc_server_register(test_display_server);
     856        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     857
     858        rc = loc_service_register(test_display_svc, &sid);
     859        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     860
     861        rc = display_open(test_display_svc, &disp);
     862        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     863        PCUT_ASSERT_NOT_NULL(disp);
     864
     865        resp.rc = EOK;
     866        display_wnd_params_init(&params);
     867        params.rect.p0.x = 0;
     868        params.rect.p0.y = 0;
     869        params.rect.p0.x = 100;
     870        params.rect.p0.y = 100;
     871
     872        rc = display_window_create(disp, &params, &test_display_wnd_cb,
     873            (void *) &resp, &wnd);
     874        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     875        PCUT_ASSERT_NOT_NULL(wnd);
     876
     877        resp.rc = EOK;
     878        resp.window_set_cursor_called = false;
     879
     880        rc = display_window_set_cursor(wnd, dcurs_size_ud);
     881        PCUT_ASSERT_INT_EQUALS(wnd->id, resp.set_cursor_wnd_id);
     882        PCUT_ASSERT_TRUE(resp.window_set_cursor_called);
     883        PCUT_ASSERT_ERRNO_VAL(resp.rc, EOK);
     884        PCUT_ASSERT_INT_EQUALS(dcurs_size_ud, resp.set_cursor_cursor);
    779885
    780886        display_window_destroy(wnd);
     
    15001606}
    15011607
     1608static errno_t test_window_set_cursor(void *arg, sysarg_t wnd_id,
     1609    display_stock_cursor_t cursor)
     1610{
     1611        test_response_t *resp = (test_response_t *) arg;
     1612
     1613        resp->window_set_cursor_called = true;
     1614        resp->set_cursor_wnd_id = wnd_id;
     1615        resp->set_cursor_cursor = cursor;
     1616
     1617        return resp->rc;
     1618}
     1619
    15021620static errno_t test_get_event(void *arg, sysarg_t *wnd_id,
    15031621    display_wnd_ev_t *event)
Note: See TracChangeset for help on using the changeset viewer.