Changeset a2e104e in mainline for uspace/lib/display/test/display.c


Ignore:
Timestamp:
2020-03-05T11:23:41Z (5 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
1e4a937
Parents:
338d0935
git-author:
Jiri Svoboda <jiri@…> (2020-03-04 19:23:29)
git-committer:
Jiri Svoboda <jiri@…> (2020-03-05 11:23:41)
Message:

Move windows by dragging decoration

Or dragging anywhere with button 2. Need to add Ctrl/Alt/Shift state
to pos_event_t and change the latter to Alt-drag/Shift-drag.

File:
1 edited

Legend:

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

    r338d0935 ra2e104e  
    5656static errno_t test_window_create(void *, display_wnd_params_t *, sysarg_t *);
    5757static errno_t test_window_destroy(void *, sysarg_t);
     58static errno_t test_window_move_req(void *, sysarg_t, gfx_coord2_t *);
    5859static errno_t test_window_resize(void *, sysarg_t, gfx_coord2_t *,
    5960    gfx_rect_t *);
     
    6566        .window_create = test_window_create,
    6667        .window_destroy = test_window_destroy,
     68        .window_move_req = test_window_move_req,
    6769        .window_resize = test_window_resize,
    6870        .get_event = test_get_event
     
    9496        bool window_destroy_called;
    9597        sysarg_t destroy_wnd_id;
     98
     99        bool window_move_req_called;
     100        sysarg_t move_req_wnd_id;
     101        gfx_coord2_t move_req_pos;
    96102
    97103        bool window_resize_called;
     
    294300}
    295301
     302/** display_window_move_req() with server returning error response works. */
     303PCUT_TEST(window_move_req_failure)
     304{
     305        errno_t rc;
     306        service_id_t sid;
     307        display_t *disp = NULL;
     308        display_wnd_params_t params;
     309        display_window_t *wnd;
     310        test_response_t resp;
     311        gfx_coord2_t pos;
     312
     313        async_set_fallback_port_handler(test_display_conn, &resp);
     314
     315        // FIXME This causes this test to be non-reentrant!
     316        rc = loc_server_register(test_display_server);
     317        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     318
     319        rc = loc_service_register(test_display_svc, &sid);
     320        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     321
     322        rc = display_open(test_display_svc, &disp);
     323        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     324        PCUT_ASSERT_NOT_NULL(disp);
     325
     326        resp.rc = EOK;
     327        display_wnd_params_init(&params);
     328        params.rect.p0.x = 0;
     329        params.rect.p0.y = 0;
     330        params.rect.p0.x = 100;
     331        params.rect.p0.y = 100;
     332
     333        rc = display_window_create(disp, &params, &test_display_wnd_cb,
     334            (void *) &resp, &wnd);
     335        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     336        PCUT_ASSERT_NOT_NULL(wnd);
     337
     338        resp.rc = EIO;
     339        resp.window_move_req_called = false;
     340
     341        pos.x = 42;
     342        pos.y = 43;
     343
     344        rc = display_window_move_req(wnd, &pos);
     345        PCUT_ASSERT_TRUE(resp.window_move_req_called);
     346        PCUT_ASSERT_ERRNO_VAL(resp.rc, rc);
     347        PCUT_ASSERT_INT_EQUALS(wnd->id, resp.move_req_wnd_id);
     348        PCUT_ASSERT_INT_EQUALS(pos.x, resp.move_req_pos.x);
     349        PCUT_ASSERT_INT_EQUALS(pos.y, resp.move_req_pos.y);
     350
     351        display_window_destroy(wnd);
     352        display_close(disp);
     353        rc = loc_service_unregister(sid);
     354        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     355}
     356
     357/** display_window_move_req() with server returning success response works. */
     358PCUT_TEST(window_move_req_success)
     359{
     360        errno_t rc;
     361        service_id_t sid;
     362        display_t *disp = NULL;
     363        display_wnd_params_t params;
     364        display_window_t *wnd;
     365        test_response_t resp;
     366        gfx_coord2_t pos;
     367
     368        async_set_fallback_port_handler(test_display_conn, &resp);
     369
     370        // FIXME This causes this test to be non-reentrant!
     371        rc = loc_server_register(test_display_server);
     372        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     373
     374        rc = loc_service_register(test_display_svc, &sid);
     375        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     376
     377        rc = display_open(test_display_svc, &disp);
     378        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     379        PCUT_ASSERT_NOT_NULL(disp);
     380
     381        resp.rc = EOK;
     382        display_wnd_params_init(&params);
     383        params.rect.p0.x = 0;
     384        params.rect.p0.y = 0;
     385        params.rect.p0.x = 100;
     386        params.rect.p0.y = 100;
     387
     388        rc = display_window_create(disp, &params, &test_display_wnd_cb,
     389            (void *) &resp, &wnd);
     390        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     391        PCUT_ASSERT_NOT_NULL(wnd);
     392
     393        resp.rc = EOK;
     394        resp.window_move_req_called = false;
     395
     396        pos.x = 42;
     397        pos.y = 43;
     398
     399        rc = display_window_move_req(wnd, &pos);
     400        PCUT_ASSERT_TRUE(resp.window_move_req_called);
     401        PCUT_ASSERT_ERRNO_VAL(resp.rc, rc);
     402        PCUT_ASSERT_INT_EQUALS(wnd->id, resp.move_req_wnd_id);
     403        PCUT_ASSERT_INT_EQUALS(pos.x, resp.move_req_pos.x);
     404        PCUT_ASSERT_INT_EQUALS(pos.y, resp.move_req_pos.y);
     405
     406        display_window_destroy(wnd);
     407        display_close(disp);
     408        rc = loc_service_unregister(sid);
     409        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     410}
     411
    296412/** display_window_resize() with server returning error response works. */
    297413PCUT_TEST(window_resize_failure)
     
    10131129}
    10141130
     1131static errno_t test_window_move_req(void *arg, sysarg_t wnd_id,
     1132    gfx_coord2_t *pos)
     1133{
     1134        test_response_t *resp = (test_response_t *) arg;
     1135
     1136        resp->window_move_req_called = true;
     1137        resp->move_req_wnd_id = wnd_id;
     1138        resp->move_req_pos = *pos;
     1139        return resp->rc;
     1140}
     1141
    10151142static errno_t test_window_resize(void *arg, sysarg_t wnd_id,
    10161143    gfx_coord2_t *offs, gfx_rect_t *nrect)
Note: See TracChangeset for help on using the changeset viewer.