Changeset 7cc30e9 in mainline for uspace/lib/display/test/display.c


Ignore:
Timestamp:
2022-10-24T17:50:46Z (3 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
master, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
913add60
Parents:
7a05d924
Message:

Display server needs to store window caption

Even though it does not use it itself, it needs to provide it to
window managers (e.g. Task bar). We need to be able to set caption
for a new window and to change it for an existing window.

File:
1 edited

Legend:

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

    r7a05d924 r7cc30e9  
    3838#include <loc.h>
    3939#include <pcut/pcut.h>
     40#include <str.h>
    4041#include "../private/display.h"
    4142
     
    6869static errno_t test_window_unmaximize(void *, sysarg_t);
    6970static errno_t test_window_set_cursor(void *, sysarg_t, display_stock_cursor_t);
     71static errno_t test_window_set_caption(void *, sysarg_t, const char *);
    7072static errno_t test_get_event(void *, sysarg_t *, display_wnd_ev_t *);
    7173static errno_t test_get_info(void *, display_info_t *);
     
    8587        .window_unmaximize = test_window_unmaximize,
    8688        .window_set_cursor = test_window_set_cursor,
     89        .window_set_caption = test_window_set_caption,
    8790        .get_event = test_get_event,
    8891        .get_info = test_get_info
     
    148151        sysarg_t set_cursor_wnd_id;
    149152        display_stock_cursor_t set_cursor_cursor;
     153
     154        bool window_set_caption_called;
     155        sysarg_t set_caption_wnd_id;
     156        char *set_caption_caption;
    150157
    151158        bool get_event_called;
     
    12401247        PCUT_ASSERT_INT_EQUALS(dcurs_size_ud, resp.set_cursor_cursor);
    12411248
     1249        display_window_destroy(wnd);
     1250        display_close(disp);
     1251        rc = loc_service_unregister(sid);
     1252        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     1253}
     1254
     1255/** display_window_set_caption() with server returning error response works. */
     1256PCUT_TEST(window_set_caption_failure)
     1257{
     1258        errno_t rc;
     1259        service_id_t sid;
     1260        display_t *disp = NULL;
     1261        display_wnd_params_t params;
     1262        display_window_t *wnd;
     1263        const char *caption;
     1264        test_response_t resp;
     1265
     1266        async_set_fallback_port_handler(test_display_conn, &resp);
     1267
     1268        // FIXME This causes this test to be non-reentrant!
     1269        rc = loc_server_register(test_display_server);
     1270        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     1271
     1272        rc = loc_service_register(test_display_svc, &sid);
     1273        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     1274
     1275        rc = display_open(test_display_svc, &disp);
     1276        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     1277        PCUT_ASSERT_NOT_NULL(disp);
     1278
     1279        resp.rc = EOK;
     1280        display_wnd_params_init(&params);
     1281        params.rect.p0.x = 0;
     1282        params.rect.p0.y = 0;
     1283        params.rect.p0.x = 100;
     1284        params.rect.p0.y = 100;
     1285
     1286        rc = display_window_create(disp, &params, &test_display_wnd_cb,
     1287            (void *) &resp, &wnd);
     1288        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     1289        PCUT_ASSERT_NOT_NULL(wnd);
     1290
     1291        caption = "Hello";
     1292
     1293        resp.rc = EIO;
     1294        resp.window_set_caption_called = false;
     1295
     1296        rc = display_window_set_caption(wnd, caption);
     1297        PCUT_ASSERT_INT_EQUALS(wnd->id, resp.set_caption_wnd_id);
     1298        PCUT_ASSERT_TRUE(resp.window_set_caption_called);
     1299        PCUT_ASSERT_ERRNO_VAL(resp.rc, rc);
     1300        PCUT_ASSERT_INT_EQUALS(0, str_cmp(caption, resp.set_caption_caption));
     1301
     1302        //free(resp.set_caption_caption);
     1303        display_window_destroy(wnd);
     1304        display_close(disp);
     1305        rc = loc_service_unregister(sid);
     1306        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     1307}
     1308
     1309/** display_window_set_caption() with server returning success response works. */
     1310PCUT_TEST(window_set_caption_success)
     1311{
     1312        errno_t rc;
     1313        service_id_t sid;
     1314        display_t *disp = NULL;
     1315        display_wnd_params_t params;
     1316        display_window_t *wnd;
     1317        const char *caption;
     1318        test_response_t resp;
     1319
     1320        async_set_fallback_port_handler(test_display_conn, &resp);
     1321
     1322        // FIXME This causes this test to be non-reentrant!
     1323        rc = loc_server_register(test_display_server);
     1324        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     1325
     1326        rc = loc_service_register(test_display_svc, &sid);
     1327        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     1328
     1329        rc = display_open(test_display_svc, &disp);
     1330        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     1331        PCUT_ASSERT_NOT_NULL(disp);
     1332
     1333        resp.rc = EOK;
     1334        display_wnd_params_init(&params);
     1335        params.rect.p0.x = 0;
     1336        params.rect.p0.y = 0;
     1337        params.rect.p0.x = 100;
     1338        params.rect.p0.y = 100;
     1339
     1340        rc = display_window_create(disp, &params, &test_display_wnd_cb,
     1341            (void *) &resp, &wnd);
     1342        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     1343        PCUT_ASSERT_NOT_NULL(wnd);
     1344
     1345        caption = "Hello";
     1346
     1347        resp.rc = EOK;
     1348        resp.window_set_caption_called = false;
     1349
     1350        rc = display_window_set_caption(wnd, caption);
     1351        PCUT_ASSERT_INT_EQUALS(wnd->id, resp.set_caption_wnd_id);
     1352        PCUT_ASSERT_TRUE(resp.window_set_caption_called);
     1353        PCUT_ASSERT_ERRNO_VAL(resp.rc, rc);
     1354        PCUT_ASSERT_INT_EQUALS(0, str_cmp(caption, resp.set_caption_caption));
     1355
     1356        //free(resp.set_caption_caption);
    12421357        display_window_destroy(wnd);
    12431358        display_close(disp);
     
    20182133}
    20192134
     2135static errno_t test_window_set_caption(void *arg, sysarg_t wnd_id,
     2136    const char *caption)
     2137{
     2138        test_response_t *resp = (test_response_t *) arg;
     2139
     2140        resp->window_set_caption_called = true;
     2141        resp->set_caption_wnd_id = wnd_id;
     2142        resp->set_caption_caption = str_dup(caption);
     2143
     2144        return resp->rc;
     2145}
     2146
    20202147static errno_t test_get_event(void *arg, sysarg_t *wnd_id,
    20212148    display_wnd_ev_t *event)
Note: See TracChangeset for help on using the changeset viewer.