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


Ignore:
Timestamp:
2020-03-18T17:27:18Z (5 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
0680854
Parents:
1a1271d
git-author:
Jiri Svoboda <jiri@…> (2020-03-18 16:57:15)
git-committer:
Jiri Svoboda <jiri@…> (2020-03-18 17:27:18)
Message:

Allow getting display dimensions

Can be used to position special windows such as panels, or to help
emulate libgui's window placement policy. To support multi-monitor
setups we would rather need to be able to query individual monitors.
But let's keep things simple for now.

File:
1 edited

Legend:

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

    r1a1271d raeb3037  
    6262    gfx_rect_t *);
    6363static errno_t test_get_event(void *, sysarg_t *, display_wnd_ev_t *);
     64static errno_t test_get_info(void *, display_info_t *);
    6465
    6566static errno_t test_gc_set_color(void *, gfx_color_t *);
     
    7172        .window_resize_req = test_window_resize_req,
    7273        .window_resize = test_window_resize,
    73         .get_event = test_get_event
     74        .get_event = test_get_event,
     75        .get_info = test_get_info
    7476};
    7577
     
    116118
    117119        bool get_event_called;
     120
     121        bool get_info_called;
     122        gfx_rect_t get_info_rect;
     123
    118124        bool set_color_called;
    119125        bool close_event_called;
     
    831837
    832838        /* Verify that the event was delivered correctly */
    833         PCUT_ASSERT_EQUALS(resp.event.etype,
     839        PCUT_ASSERT_INT_EQUALS(resp.event.etype,
    834840            resp.revent.etype);
    835841
     
    896902
    897903        /* Verify that the event was delivered correctly */
    898         PCUT_ASSERT_EQUALS(resp.event.etype,
     904        PCUT_ASSERT_INT_EQUALS(resp.event.etype,
    899905            resp.revent.etype);
    900906
     
    965971
    966972        /* Verify that the event was delivered correctly */
    967         PCUT_ASSERT_EQUALS(resp.event.etype,
     973        PCUT_ASSERT_INT_EQUALS(resp.event.etype,
    968974            resp.revent.etype);
    969         PCUT_ASSERT_EQUALS(resp.event.ev.kbd.type,
     975        PCUT_ASSERT_INT_EQUALS(resp.event.ev.kbd.type,
    970976            resp.revent.ev.kbd.type);
    971         PCUT_ASSERT_EQUALS(resp.event.ev.kbd.key,
     977        PCUT_ASSERT_INT_EQUALS(resp.event.ev.kbd.key,
    972978            resp.revent.ev.kbd.key);
    973         PCUT_ASSERT_EQUALS(resp.event.ev.kbd.mods,
     979        PCUT_ASSERT_INT_EQUALS(resp.event.ev.kbd.mods,
    974980            resp.revent.ev.kbd.mods);
    975         PCUT_ASSERT_EQUALS(resp.event.ev.kbd.c,
     981        PCUT_ASSERT_INT_EQUALS(resp.event.ev.kbd.c,
    976982            resp.revent.ev.kbd.c);
    977983
     
    10421048
    10431049        /* Verify that the event was delivered correctly */
    1044         PCUT_ASSERT_EQUALS(resp.event.etype,
     1050        PCUT_ASSERT_INT_EQUALS(resp.event.etype,
    10451051            resp.revent.etype);
    1046         PCUT_ASSERT_EQUALS(resp.event.ev.pos.type,
     1052        PCUT_ASSERT_INT_EQUALS(resp.event.ev.pos.type,
    10471053            resp.revent.ev.pos.type);
    1048         PCUT_ASSERT_EQUALS(resp.event.ev.pos.btn_num,
     1054        PCUT_ASSERT_INT_EQUALS(resp.event.ev.pos.btn_num,
    10491055            resp.revent.ev.pos.btn_num);
    1050         PCUT_ASSERT_EQUALS(resp.event.ev.pos.hpos,
     1056        PCUT_ASSERT_INT_EQUALS(resp.event.ev.pos.hpos,
    10511057            resp.revent.ev.pos.hpos);
    1052         PCUT_ASSERT_EQUALS(resp.event.ev.pos.vpos,
     1058        PCUT_ASSERT_INT_EQUALS(resp.event.ev.pos.vpos,
    10531059            resp.revent.ev.pos.vpos);
    10541060
     
    11021108        resp.event.etype = wev_unfocus;
    11031109        resp.wnd_id = wnd->id;
    1104         resp.focus_event_called = false;
     1110        resp.unfocus_event_called = false;
    11051111        fibril_mutex_initialize(&resp.event_lock);
    11061112        fibril_condvar_initialize(&resp.event_cv);
     
    11151121
    11161122        /* Verify that the event was delivered correctly */
    1117         PCUT_ASSERT_EQUALS(resp.event.etype,
     1123        PCUT_ASSERT_INT_EQUALS(resp.event.etype,
    11181124            resp.revent.etype);
    11191125
     
    11231129        display_close(disp);
    11241130
     1131        rc = loc_service_unregister(sid);
     1132        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     1133}
     1134
     1135/** display_get_info() with server returning failure response works. */
     1136PCUT_TEST(get_info_failure)
     1137{
     1138        errno_t rc;
     1139        service_id_t sid;
     1140        display_t *disp = NULL;
     1141        display_info_t info;
     1142        test_response_t resp;
     1143
     1144        async_set_fallback_port_handler(test_display_conn, &resp);
     1145
     1146        // FIXME This causes this test to be non-reentrant!
     1147        rc = loc_server_register(test_display_server);
     1148        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     1149
     1150        rc = loc_service_register(test_display_svc, &sid);
     1151        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     1152
     1153        rc = display_open(test_display_svc, &disp);
     1154        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     1155        PCUT_ASSERT_NOT_NULL(disp);
     1156
     1157        resp.rc = ENOMEM;
     1158        resp.get_info_called = false;
     1159
     1160        rc = display_get_info(disp, &info);
     1161        PCUT_ASSERT_TRUE(resp.get_info_called);
     1162        PCUT_ASSERT_ERRNO_VAL(resp.rc, rc);
     1163
     1164        display_close(disp);
     1165        rc = loc_service_unregister(sid);
     1166        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     1167}
     1168
     1169/** display_get_info() with server returning success response works. */
     1170PCUT_TEST(get_info_success)
     1171{
     1172        errno_t rc;
     1173        service_id_t sid;
     1174        display_t *disp = NULL;
     1175        display_info_t info;
     1176        test_response_t resp;
     1177
     1178        async_set_fallback_port_handler(test_display_conn, &resp);
     1179
     1180        // FIXME This causes this test to be non-reentrant!
     1181        rc = loc_server_register(test_display_server);
     1182        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     1183
     1184        rc = loc_service_register(test_display_svc, &sid);
     1185        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     1186
     1187        rc = display_open(test_display_svc, &disp);
     1188        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     1189        PCUT_ASSERT_NOT_NULL(disp);
     1190
     1191        resp.rc = EOK;
     1192        resp.get_info_called = false;
     1193        resp.get_info_rect.p0.x = 10;
     1194        resp.get_info_rect.p0.y = 11;
     1195        resp.get_info_rect.p1.x = 20;
     1196        resp.get_info_rect.p1.y = 21;
     1197
     1198        rc = display_get_info(disp, &info);
     1199        PCUT_ASSERT_TRUE(resp.get_info_called);
     1200        PCUT_ASSERT_ERRNO_VAL(resp.rc, rc);
     1201        PCUT_ASSERT_INT_EQUALS(resp.get_info_rect.p0.x, info.rect.p0.x);
     1202        PCUT_ASSERT_INT_EQUALS(resp.get_info_rect.p0.y, info.rect.p0.y);
     1203        PCUT_ASSERT_INT_EQUALS(resp.get_info_rect.p1.x, info.rect.p1.x);
     1204        PCUT_ASSERT_INT_EQUALS(resp.get_info_rect.p1.y, info.rect.p1.y);
     1205
     1206        display_close(disp);
    11251207        rc = loc_service_unregister(sid);
    11261208        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     
    12941376}
    12951377
    1296 static errno_t test_get_event(void *arg, sysarg_t *wnd_id, display_wnd_ev_t *event)
     1378static errno_t test_get_event(void *arg, sysarg_t *wnd_id,
     1379    display_wnd_ev_t *event)
    12971380{
    12981381        test_response_t *resp = (test_response_t *) arg;
     
    13091392}
    13101393
     1394static errno_t test_get_info(void *arg, display_info_t *info)
     1395{
     1396        test_response_t *resp = (test_response_t *) arg;
     1397
     1398        resp->get_info_called = true;
     1399        info->rect = resp->get_info_rect;
     1400
     1401        return resp->rc;
     1402}
     1403
    13111404static errno_t test_gc_set_color(void *arg, gfx_color_t *color)
    13121405{
Note: See TracChangeset for help on using the changeset viewer.