Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/ui/test/slider.c

    r7470d97 r1fa6292  
    11/*
    2  * Copyright (c) 2021 Jiri Svoboda
     2 * Copyright (c) 2022 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    3636#include <ui/resource.h>
    3737#include "../private/slider.h"
     38#include "../private/testgc.h"
    3839
    3940PCUT_INIT;
    4041
    4142PCUT_TEST_SUITE(slider);
    42 
    43 static errno_t testgc_set_clip_rect(void *, gfx_rect_t *);
    44 static errno_t testgc_set_color(void *, gfx_color_t *);
    45 static errno_t testgc_fill_rect(void *, gfx_rect_t *);
    46 static errno_t testgc_update(void *);
    47 static errno_t testgc_bitmap_create(void *, gfx_bitmap_params_t *,
    48     gfx_bitmap_alloc_t *, void **);
    49 static errno_t testgc_bitmap_destroy(void *);
    50 static errno_t testgc_bitmap_render(void *, gfx_rect_t *, gfx_coord2_t *);
    51 static errno_t testgc_bitmap_get_alloc(void *, gfx_bitmap_alloc_t *);
    52 
    53 static gfx_context_ops_t ops = {
    54         .set_clip_rect = testgc_set_clip_rect,
    55         .set_color = testgc_set_color,
    56         .fill_rect = testgc_fill_rect,
    57         .update = testgc_update,
    58         .bitmap_create = testgc_bitmap_create,
    59         .bitmap_destroy = testgc_bitmap_destroy,
    60         .bitmap_render = testgc_bitmap_render,
    61         .bitmap_get_alloc = testgc_bitmap_get_alloc
    62 };
    6343
    6444static void test_slider_moved(ui_slider_t *, void *, gfx_coord_t);
     
    7050static ui_slider_cb_t dummy_slider_cb = {
    7151};
    72 
    73 typedef struct {
    74         bool bm_created;
    75         bool bm_destroyed;
    76         gfx_bitmap_params_t bm_params;
    77         void *bm_pixels;
    78         gfx_rect_t bm_srect;
    79         gfx_coord2_t bm_offs;
    80         bool bm_rendered;
    81         bool bm_got_alloc;
    82 } test_gc_t;
    83 
    84 typedef struct {
    85         test_gc_t *tgc;
    86         gfx_bitmap_alloc_t alloc;
    87         bool myalloc;
    88 } testgc_bitmap_t;
    8952
    9053typedef struct {
     
    9962        errno_t rc;
    10063
    101         rc = ui_slider_create(NULL, "Hello", &slider);
     64        rc = ui_slider_create(NULL, &slider);
    10265        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    10366        PCUT_ASSERT_NOT_NULL(slider);
     
    11982        errno_t rc;
    12083
    121         rc = ui_slider_create(NULL, "Hello", &slider);
     84        rc = ui_slider_create(NULL, &slider);
    12285        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    12386
     
    13598        errno_t rc;
    13699
    137         rc = ui_slider_create(NULL, "Hello", &slider);
     100        rc = ui_slider_create(NULL, &slider);
    138101        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    139102
     
    152115}
    153116
    154 /** Paint slider */
    155 PCUT_TEST(paint)
    156 {
    157         errno_t rc;
    158         gfx_context_t *gc = NULL;
    159         test_gc_t tgc;
    160         ui_resource_t *resource = NULL;
    161         ui_slider_t *slider;
    162 
    163         memset(&tgc, 0, sizeof(tgc));
    164         rc = gfx_context_new(&ops, &tgc, &gc);
    165         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    166 
    167         rc = ui_resource_create(gc, false, &resource);
    168         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    169         PCUT_ASSERT_NOT_NULL(resource);
    170 
    171         rc = ui_slider_create(resource, "Hello", &slider);
    172         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    173 
    174         rc = ui_slider_paint(slider);
     117/** Paint slider in graphics mode */
     118PCUT_TEST(paint_gfx)
     119{
     120        errno_t rc;
     121        gfx_context_t *gc = NULL;
     122        test_gc_t tgc;
     123        ui_resource_t *resource = NULL;
     124        ui_slider_t *slider;
     125
     126        memset(&tgc, 0, sizeof(tgc));
     127        rc = gfx_context_new(&ops, &tgc, &gc);
     128        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     129
     130        rc = ui_resource_create(gc, false, &resource);
     131        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     132        PCUT_ASSERT_NOT_NULL(resource);
     133
     134        rc = ui_slider_create(resource, &slider);
     135        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     136
     137        rc = ui_slider_paint_gfx(slider);
     138        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     139
     140        ui_slider_destroy(slider);
     141        ui_resource_destroy(resource);
     142
     143        rc = gfx_context_delete(gc);
     144        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     145}
     146
     147/** Paint slider in text mode */
     148PCUT_TEST(paint_text)
     149{
     150        errno_t rc;
     151        gfx_context_t *gc = NULL;
     152        test_gc_t tgc;
     153        ui_resource_t *resource = NULL;
     154        ui_slider_t *slider;
     155
     156        memset(&tgc, 0, sizeof(tgc));
     157        rc = gfx_context_new(&ops, &tgc, &gc);
     158        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     159
     160        rc = ui_resource_create(gc, false, &resource);
     161        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     162        PCUT_ASSERT_NOT_NULL(resource);
     163
     164        rc = ui_slider_create(resource, &slider);
     165        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     166
     167        rc = ui_slider_paint_text(slider);
    175168        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    176169
     
    189182        test_cb_resp_t resp;
    190183
    191         rc = ui_slider_create(NULL, "Hello", &slider);
     184        rc = ui_slider_create(NULL, &slider);
    192185        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    193186
     
    195188        ui_slider_moved(slider, 42);
    196189
    197         /* Moved with callback not implementing clicked */
     190        /* Moved with callback not implementing moved */
    198191        ui_slider_set_cb(slider, &dummy_slider_cb, NULL);
    199192        ui_slider_moved(slider, 42);
     
    230223        PCUT_ASSERT_NOT_NULL(resource);
    231224
    232         rc = ui_slider_create(resource, "Hello", &slider);
     225        rc = ui_slider_create(resource, &slider);
    233226        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    234227
     
    286279        PCUT_ASSERT_NOT_NULL(resource);
    287280
    288         rc = ui_slider_create(resource, "Hello", &slider);
     281        rc = ui_slider_create(resource, &slider);
    289282        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    290283
     
    350343        PCUT_ASSERT_NOT_NULL(resource);
    351344
    352         rc = ui_slider_create(resource, "Hello", &slider);
     345        rc = ui_slider_create(resource, &slider);
    353346        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    354347
     
    411404        PCUT_ASSERT_NOT_NULL(resource);
    412405
    413         rc = ui_slider_create(resource, "Hello", &slider);
     406        rc = ui_slider_create(resource, &slider);
    414407        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    415408
     
    432425}
    433426
    434 static errno_t testgc_set_clip_rect(void *arg, gfx_rect_t *rect)
    435 {
    436         (void) arg;
    437         (void) rect;
    438         return EOK;
    439 }
    440 
    441 static errno_t testgc_set_color(void *arg, gfx_color_t *color)
    442 {
    443         (void) arg;
    444         (void) color;
    445         return EOK;
    446 }
    447 
    448 static errno_t testgc_fill_rect(void *arg, gfx_rect_t *rect)
    449 {
    450         (void) arg;
    451         (void) rect;
    452         return EOK;
    453 }
    454 
    455 static errno_t testgc_update(void *arg)
    456 {
    457         (void) arg;
    458         return EOK;
    459 }
    460 
    461 static errno_t testgc_bitmap_create(void *arg, gfx_bitmap_params_t *params,
    462     gfx_bitmap_alloc_t *alloc, void **rbm)
    463 {
    464         test_gc_t *tgc = (test_gc_t *) arg;
    465         testgc_bitmap_t *tbm;
    466 
    467         tbm = calloc(1, sizeof(testgc_bitmap_t));
    468         if (tbm == NULL)
    469                 return ENOMEM;
    470 
    471         if (alloc == NULL) {
    472                 tbm->alloc.pitch = (params->rect.p1.x - params->rect.p0.x) *
    473                     sizeof(uint32_t);
    474                 tbm->alloc.off0 = 0;
    475                 tbm->alloc.pixels = calloc(sizeof(uint32_t),
    476                     (params->rect.p1.x - params->rect.p0.x) *
    477                     (params->rect.p1.y - params->rect.p0.y));
    478                 tbm->myalloc = true;
    479                 if (tbm->alloc.pixels == NULL) {
    480                         free(tbm);
    481                         return ENOMEM;
    482                 }
    483         } else {
    484                 tbm->alloc = *alloc;
    485         }
    486 
    487         tbm->tgc = tgc;
    488         tgc->bm_created = true;
    489         tgc->bm_params = *params;
    490         tgc->bm_pixels = tbm->alloc.pixels;
    491         *rbm = (void *)tbm;
    492         return EOK;
    493 }
    494 
    495 static errno_t testgc_bitmap_destroy(void *bm)
    496 {
    497         testgc_bitmap_t *tbm = (testgc_bitmap_t *)bm;
    498         if (tbm->myalloc)
    499                 free(tbm->alloc.pixels);
    500         tbm->tgc->bm_destroyed = true;
    501         free(tbm);
    502         return EOK;
    503 }
    504 
    505 static errno_t testgc_bitmap_render(void *bm, gfx_rect_t *srect,
    506     gfx_coord2_t *offs)
    507 {
    508         testgc_bitmap_t *tbm = (testgc_bitmap_t *)bm;
    509         tbm->tgc->bm_rendered = true;
    510         tbm->tgc->bm_srect = *srect;
    511         tbm->tgc->bm_offs = *offs;
    512         return EOK;
    513 }
    514 
    515 static errno_t testgc_bitmap_get_alloc(void *bm, gfx_bitmap_alloc_t *alloc)
    516 {
    517         testgc_bitmap_t *tbm = (testgc_bitmap_t *)bm;
    518         *alloc = tbm->alloc;
    519         tbm->tgc->bm_got_alloc = true;
    520         return EOK;
    521 }
    522 
    523427static void test_slider_moved(ui_slider_t *slider, void *arg, gfx_coord_t pos)
    524428{
Note: See TracChangeset for help on using the changeset viewer.