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


Ignore:
Timestamp:
2020-03-20T15:42:27Z (4 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
0b7e394
Parents:
aeb3037
git-author:
Jiri Svoboda <jiri@…> (2020-03-19 19:42:21)
git-committer:
Jiri Svoboda <jiri@…> (2020-03-20 15:42:27)
Message:

Moving window by client request, emulate window placement flags

File:
1 edited

Legend:

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

    raeb3037 r0680854  
    5757static errno_t test_window_destroy(void *, sysarg_t);
    5858static errno_t test_window_move_req(void *, sysarg_t, gfx_coord2_t *);
     59static errno_t test_window_move(void *, sysarg_t, gfx_coord2_t *);
    5960static errno_t test_window_resize_req(void *, sysarg_t, display_wnd_rsztype_t,
    6061    gfx_coord2_t *);
     
    7071        .window_destroy = test_window_destroy,
    7172        .window_move_req = test_window_move_req,
     73        .window_move = test_window_move,
    7274        .window_resize_req = test_window_resize_req,
    7375        .window_resize = test_window_resize,
     
    106108        sysarg_t move_req_wnd_id;
    107109        gfx_coord2_t move_req_pos;
     110
     111        bool window_move_called;
     112        sysarg_t move_wnd_id;
     113        gfx_coord2_t move_dpos;
    108114
    109115        bool window_resize_req_called;
     
    422428        PCUT_ASSERT_INT_EQUALS(pos.x, resp.move_req_pos.x);
    423429        PCUT_ASSERT_INT_EQUALS(pos.y, resp.move_req_pos.y);
     430
     431        display_window_destroy(wnd);
     432        display_close(disp);
     433        rc = loc_service_unregister(sid);
     434        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     435}
     436
     437/** display_window_move() with server returning error response works. */
     438PCUT_TEST(window_move_failure)
     439{
     440        errno_t rc;
     441        service_id_t sid;
     442        display_t *disp = NULL;
     443        display_wnd_params_t params;
     444        display_window_t *wnd;
     445        gfx_coord2_t dpos;
     446        test_response_t resp;
     447
     448        async_set_fallback_port_handler(test_display_conn, &resp);
     449
     450        // FIXME This causes this test to be non-reentrant!
     451        rc = loc_server_register(test_display_server);
     452        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     453
     454        rc = loc_service_register(test_display_svc, &sid);
     455        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     456
     457        rc = display_open(test_display_svc, &disp);
     458        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     459        PCUT_ASSERT_NOT_NULL(disp);
     460
     461        resp.rc = EOK;
     462        display_wnd_params_init(&params);
     463        params.rect.p0.x = 0;
     464        params.rect.p0.y = 0;
     465        params.rect.p0.x = 100;
     466        params.rect.p0.y = 100;
     467
     468        rc = display_window_create(disp, &params, &test_display_wnd_cb,
     469            (void *) &resp, &wnd);
     470        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     471        PCUT_ASSERT_NOT_NULL(wnd);
     472
     473        resp.rc = EIO;
     474        resp.window_move_called = false;
     475        dpos.x = 11;
     476        dpos.y = 12;
     477
     478        rc = display_window_move(wnd, &dpos);
     479        PCUT_ASSERT_TRUE(resp.window_move_called);
     480        PCUT_ASSERT_ERRNO_VAL(resp.rc, rc);
     481        PCUT_ASSERT_INT_EQUALS(wnd->id, resp.move_wnd_id);
     482        PCUT_ASSERT_INT_EQUALS(dpos.x, resp.move_dpos.x);
     483        PCUT_ASSERT_INT_EQUALS(dpos.y, resp.move_dpos.y);
     484
     485        display_window_destroy(wnd);
     486        display_close(disp);
     487        rc = loc_service_unregister(sid);
     488        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     489}
     490
     491/** display_window_move() with server returning success response works. */
     492PCUT_TEST(window_move_success)
     493{
     494        errno_t rc;
     495        service_id_t sid;
     496        display_t *disp = NULL;
     497        display_wnd_params_t params;
     498        display_window_t *wnd;
     499        gfx_coord2_t dpos;
     500        test_response_t resp;
     501
     502        async_set_fallback_port_handler(test_display_conn, &resp);
     503
     504        // FIXME This causes this test to be non-reentrant!
     505        rc = loc_server_register(test_display_server);
     506        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     507
     508        rc = loc_service_register(test_display_svc, &sid);
     509        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     510
     511        rc = display_open(test_display_svc, &disp);
     512        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     513        PCUT_ASSERT_NOT_NULL(disp);
     514
     515        resp.rc = EOK;
     516        display_wnd_params_init(&params);
     517        params.rect.p0.x = 0;
     518        params.rect.p0.y = 0;
     519        params.rect.p0.x = 100;
     520        params.rect.p0.y = 100;
     521
     522        rc = display_window_create(disp, &params, &test_display_wnd_cb,
     523            (void *) &resp, &wnd);
     524        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     525        PCUT_ASSERT_NOT_NULL(wnd);
     526
     527        resp.rc = EOK;
     528        resp.window_move_called = false;
     529        dpos.x = 11;
     530        dpos.y = 12;
     531
     532        rc = display_window_move(wnd, &dpos);
     533        PCUT_ASSERT_TRUE(resp.window_move_called);
     534        PCUT_ASSERT_ERRNO_VAL(resp.rc, rc);
     535        PCUT_ASSERT_INT_EQUALS(wnd->id, resp.move_wnd_id);
     536        PCUT_ASSERT_INT_EQUALS(dpos.x, resp.move_dpos.x);
     537        PCUT_ASSERT_INT_EQUALS(dpos.y, resp.move_dpos.y);
    424538
    425539        display_window_destroy(wnd);
     
    13521466}
    13531467
     1468static errno_t test_window_move(void *arg, sysarg_t wnd_id, gfx_coord2_t *dpos)
     1469{
     1470        test_response_t *resp = (test_response_t *) arg;
     1471
     1472        resp->window_move_called = true;
     1473        resp->move_wnd_id = wnd_id;
     1474        resp->move_dpos = *dpos;
     1475        return resp->rc;
     1476}
     1477
    13541478static errno_t test_window_resize_req(void *arg, sysarg_t wnd_id,
    13551479    display_wnd_rsztype_t rsztype, gfx_coord2_t *pos)
Note: See TracChangeset for help on using the changeset viewer.