Changeset b3eeae5 in mainline for uspace/lib/dispcfg/test/dispcfg.c


Ignore:
Timestamp:
2023-01-15T09:24:50Z (16 months ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
master, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
46a47c0
Parents:
46b02cb
Message:

Assigning devices to seats

File:
1 edited

Legend:

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

    r46b02cb rb3eeae5  
    5050static errno_t test_seat_create(void *, const char *, sysarg_t *);
    5151static errno_t test_seat_delete(void *, sysarg_t);
     52static errno_t test_dev_assign(void *, sysarg_t, sysarg_t);
     53static errno_t test_dev_unassign(void *, sysarg_t);
    5254static errno_t test_get_event(void *, dispcfg_ev_t *);
    5355
     
    6062        .seat_create = test_seat_create,
    6163        .seat_delete = test_seat_delete,
     64        .dev_assign = test_dev_assign,
     65        .dev_unassign = test_dev_unassign,
    6266        .get_event = test_get_event
    6367};
     
    9195        bool seat_delete_called;
    9296        sysarg_t seat_delete_seat_id;
     97
     98        bool dev_assign_called;
     99        sysarg_t dev_assign_svc_id;
     100        sysarg_t dev_assign_seat_id;
     101
     102        bool dev_unassign_called;
     103        sysarg_t dev_unassign_svc_id;
    93104
    94105        bool get_event_called;
     
    443454}
    444455
     456/** dispcfg_dev_assign() with server returning error response works */
     457PCUT_TEST(dev_assign_failure)
     458{
     459        errno_t rc;
     460        service_id_t sid;
     461        dispcfg_t *dispcfg = NULL;
     462        sysarg_t svc_id;
     463        sysarg_t seat_id;
     464        test_response_t resp;
     465
     466        async_set_fallback_port_handler(test_dispcfg_conn, &resp);
     467
     468        // FIXME This causes this test to be non-reentrant!
     469        rc = loc_server_register(test_dispcfg_server);
     470        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     471
     472        rc = loc_service_register(test_dispcfg_svc, &sid);
     473        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     474
     475        rc = dispcfg_open(test_dispcfg_svc, NULL, NULL, &dispcfg);
     476        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     477        PCUT_ASSERT_NOT_NULL(dispcfg);
     478
     479        svc_id = 12;
     480        seat_id = 13;
     481        resp.rc = ENOMEM;
     482        resp.dev_assign_called = false;
     483
     484        rc = dispcfg_dev_assign(dispcfg, svc_id, seat_id);
     485        PCUT_ASSERT_TRUE(resp.dev_assign_called);
     486        PCUT_ASSERT_INT_EQUALS(svc_id, resp.dev_assign_svc_id);
     487        PCUT_ASSERT_INT_EQUALS(seat_id, resp.dev_assign_seat_id);
     488        PCUT_ASSERT_ERRNO_VAL(resp.rc, rc);
     489
     490        dispcfg_close(dispcfg);
     491        rc = loc_service_unregister(sid);
     492        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     493}
     494
     495/** dispcfg_dev_assign() with server returning success response works */
     496PCUT_TEST(dev_assign_success)
     497{
     498        errno_t rc;
     499        service_id_t sid;
     500        dispcfg_t *dispcfg = NULL;
     501        sysarg_t svc_id;
     502        sysarg_t seat_id;
     503        test_response_t resp;
     504
     505        async_set_fallback_port_handler(test_dispcfg_conn, &resp);
     506
     507        // FIXME This causes this test to be non-reentrant!
     508        rc = loc_server_register(test_dispcfg_server);
     509        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     510
     511        rc = loc_service_register(test_dispcfg_svc, &sid);
     512        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     513
     514        rc = dispcfg_open(test_dispcfg_svc, NULL, NULL, &dispcfg);
     515        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     516        PCUT_ASSERT_NOT_NULL(dispcfg);
     517
     518        svc_id = 12;
     519        seat_id = 13;
     520        resp.rc = EOK;
     521        resp.dev_assign_called = false;
     522
     523        rc = dispcfg_dev_assign(dispcfg, svc_id, seat_id);
     524        PCUT_ASSERT_TRUE(resp.dev_assign_called);
     525        PCUT_ASSERT_INT_EQUALS(svc_id, resp.dev_assign_svc_id);
     526        PCUT_ASSERT_INT_EQUALS(seat_id, resp.dev_assign_seat_id);
     527        PCUT_ASSERT_ERRNO_VAL(resp.rc, rc);
     528
     529        dispcfg_close(dispcfg);
     530        rc = loc_service_unregister(sid);
     531        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     532}
     533
     534/** dispcfg_dev_unassign() with server returning error response works */
     535PCUT_TEST(dev_unassign_failure)
     536{
     537        errno_t rc;
     538        service_id_t sid;
     539        dispcfg_t *dispcfg = NULL;
     540        sysarg_t svc_id;
     541        test_response_t resp;
     542
     543        async_set_fallback_port_handler(test_dispcfg_conn, &resp);
     544
     545        // FIXME This causes this test to be non-reentrant!
     546        rc = loc_server_register(test_dispcfg_server);
     547        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     548
     549        rc = loc_service_register(test_dispcfg_svc, &sid);
     550        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     551
     552        rc = dispcfg_open(test_dispcfg_svc, NULL, NULL, &dispcfg);
     553        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     554        PCUT_ASSERT_NOT_NULL(dispcfg);
     555
     556        svc_id = 12;
     557        resp.rc = ENOMEM;
     558        resp.dev_unassign_called = false;
     559
     560        rc = dispcfg_dev_unassign(dispcfg, svc_id);
     561        PCUT_ASSERT_TRUE(resp.dev_unassign_called);
     562        PCUT_ASSERT_INT_EQUALS(svc_id, resp.dev_unassign_svc_id);
     563        PCUT_ASSERT_ERRNO_VAL(resp.rc, rc);
     564
     565        dispcfg_close(dispcfg);
     566        rc = loc_service_unregister(sid);
     567        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     568}
     569
     570/** dispcfg_dev_unassign() with server returning success response works */
     571PCUT_TEST(dev_unassign_success)
     572{
     573        errno_t rc;
     574        service_id_t sid;
     575        dispcfg_t *dispcfg = NULL;
     576        sysarg_t svc_id;
     577        test_response_t resp;
     578
     579        async_set_fallback_port_handler(test_dispcfg_conn, &resp);
     580
     581        // FIXME This causes this test to be non-reentrant!
     582        rc = loc_server_register(test_dispcfg_server);
     583        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     584
     585        rc = loc_service_register(test_dispcfg_svc, &sid);
     586        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     587
     588        rc = dispcfg_open(test_dispcfg_svc, NULL, NULL, &dispcfg);
     589        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     590        PCUT_ASSERT_NOT_NULL(dispcfg);
     591
     592        svc_id = 12;
     593        resp.rc = EOK;
     594        resp.dev_unassign_called = false;
     595
     596        rc = dispcfg_dev_unassign(dispcfg, svc_id);
     597        PCUT_ASSERT_TRUE(resp.dev_unassign_called);
     598        PCUT_ASSERT_INT_EQUALS(svc_id, resp.dev_unassign_svc_id);
     599        PCUT_ASSERT_ERRNO_VAL(resp.rc, rc);
     600
     601        dispcfg_close(dispcfg);
     602        rc = loc_service_unregister(sid);
     603        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     604}
     605
    445606/** Window added event can be delivered from server to client callback function */
    446607PCUT_TEST(seat_added_deliver)
     
    628789}
    629790
     791static errno_t test_dev_assign(void *arg, sysarg_t svc_id, sysarg_t seat_id)
     792{
     793        test_response_t *resp = (test_response_t *) arg;
     794
     795        resp->dev_assign_called = true;
     796        resp->dev_assign_svc_id = svc_id;
     797        resp->dev_assign_seat_id = seat_id;
     798        return resp->rc;
     799}
     800
     801static errno_t test_dev_unassign(void *arg, sysarg_t svc_id)
     802{
     803        test_response_t *resp = (test_response_t *) arg;
     804
     805        resp->dev_unassign_called = true;
     806        resp->dev_unassign_svc_id = svc_id;
     807        return resp->rc;
     808}
     809
    630810static errno_t test_get_event(void *arg, dispcfg_ev_t *event)
    631811{
Note: See TracChangeset for help on using the changeset viewer.