Changeset 2ab8ab3 in mainline for uspace/lib/ipcgfx/test


Ignore:
Timestamp:
2021-02-16T18:12:05Z (4 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
68a552f
Parents:
ef734b7
Message:

Client-side UI rendering

It is possible to turn on and off and if turned on, one can also
enable or disable window double buffering (currently both options
are build-time).

File:
1 edited

Legend:

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

    ref734b7 r2ab8ab3  
    11/*
    2  * Copyright (c) 2019 Jiri Svoboda
     2 * Copyright (c) 2021 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    5252static errno_t test_gc_set_color(void *, gfx_color_t *);
    5353static errno_t test_gc_fill_rect(void *, gfx_rect_t *);
     54static errno_t test_gc_update(void *);
    5455static errno_t test_gc_bitmap_create(void *, gfx_bitmap_params_t *,
    5556    gfx_bitmap_alloc_t *, void **);
     
    6162        .set_color = test_gc_set_color,
    6263        .fill_rect = test_gc_fill_rect,
     64        .update = test_gc_update,
    6365        .bitmap_create = test_gc_bitmap_create,
    6466        .bitmap_destroy = test_gc_bitmap_destroy,
     
    8082        bool fill_rect_called;
    8183        gfx_rect_t fill_rect_rect;
     84
     85        bool update_called;
    8286
    8387        bool bitmap_create_called;
     
    292296        PCUT_ASSERT_EQUALS(rect.p1.x, resp.fill_rect_rect.p1.x);
    293297        PCUT_ASSERT_EQUALS(rect.p1.y, resp.fill_rect_rect.p1.y);
     298
     299        ipc_gc_delete(ipcgc);
     300        async_hangup(sess);
     301
     302        rc = loc_service_unregister(sid);
     303        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     304}
     305
     306/** gfx_update with server returning failure */
     307PCUT_TEST(update_failure)
     308{
     309        errno_t rc;
     310        service_id_t sid;
     311        test_response_t resp;
     312        gfx_context_t *gc;
     313        async_sess_t *sess;
     314        ipc_gc_t *ipcgc;
     315
     316        async_set_fallback_port_handler(test_ipcgc_conn, &resp);
     317
     318        // FIXME This causes this test to be non-reentrant!
     319        rc = loc_server_register(test_ipcgfx_server);
     320        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     321
     322        rc = loc_service_register(test_ipcgfx_svc, &sid);
     323        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     324
     325        sess = loc_service_connect(sid, INTERFACE_GC, 0);
     326        PCUT_ASSERT_NOT_NULL(sess);
     327
     328        rc = ipc_gc_create(sess, &ipcgc);
     329        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     330
     331        gc = ipc_gc_get_ctx(ipcgc);
     332        PCUT_ASSERT_NOT_NULL(gc);
     333
     334        resp.rc = ENOMEM;
     335        resp.update_called = false;
     336        rc = gfx_update(gc);
     337        PCUT_ASSERT_ERRNO_VAL(resp.rc, rc);
     338        PCUT_ASSERT_TRUE(resp.update_called);
     339
     340        ipc_gc_delete(ipcgc);
     341        async_hangup(sess);
     342
     343        rc = loc_service_unregister(sid);
     344        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     345}
     346
     347/** gfx_update with server returning success */
     348PCUT_TEST(update_success)
     349{
     350        errno_t rc;
     351        service_id_t sid;
     352        test_response_t resp;
     353        gfx_context_t *gc;
     354        async_sess_t *sess;
     355        ipc_gc_t *ipcgc;
     356
     357        async_set_fallback_port_handler(test_ipcgc_conn, &resp);
     358
     359        // FIXME This causes this test to be non-reentrant!
     360        rc = loc_server_register(test_ipcgfx_server);
     361        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     362
     363        rc = loc_service_register(test_ipcgfx_svc, &sid);
     364        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     365
     366        sess = loc_service_connect(sid, INTERFACE_GC, 0);
     367        PCUT_ASSERT_NOT_NULL(sess);
     368
     369        rc = ipc_gc_create(sess, &ipcgc);
     370        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     371
     372        gc = ipc_gc_get_ctx(ipcgc);
     373        PCUT_ASSERT_NOT_NULL(gc);
     374
     375        resp.rc = EOK;
     376        resp.update_called = false;
     377        rc = gfx_update(gc);
     378        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     379        PCUT_ASSERT_TRUE(resp.update_called);
    294380
    295381        ipc_gc_delete(ipcgc);
     
    847933}
    848934
     935/** Update test GC.
     936 *
     937 * @param arg Test GC
     938 *
     939 * @return EOK on success or an error code
     940 */
     941static errno_t test_gc_update(void *arg)
     942{
     943        test_response_t *resp = (test_response_t *) arg;
     944
     945        resp->update_called = true;
     946        return resp->rc;
     947}
     948
    849949/** Create bitmap in test GC.
    850950 *
Note: See TracChangeset for help on using the changeset viewer.