Changeset 3c8c580 in mainline for uspace/lib/ui/test/menu.c


Ignore:
Timestamp:
2021-06-10T13:22:33Z (3 years ago)
Author:
jxsvoboda <5887334+jxsvoboda@…>
Branches:
master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
c68c18b9
Parents:
d091007
git-author:
Jiri Svoboda <jiri@…> (2021-05-20 15:34:03)
git-committer:
jxsvoboda <5887334+jxsvoboda@…> (2021-06-10 13:22:33)
Message:

Open menu in separate popup window (WIP)

File:
1 edited

Legend:

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

    rd091007 r3c8c580  
    4646PCUT_TEST_SUITE(menu);
    4747
    48 typedef struct {
    49         bool expose;
    50 } test_resp_t;
    51 
    52 static void test_expose(void *);
    53 
    5448/** Create and destroy menu */
    5549PCUT_TEST(create_destroy)
     
    5953        errno_t rc;
    6054
    61         rc = ui_menu_bar_create(NULL, &mbar);
     55        rc = ui_menu_bar_create(NULL, NULL, &mbar);
    6256        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    6357
     
    10296        PCUT_ASSERT_NOT_NULL(resource);
    10397
    104         rc = ui_menu_bar_create(resource, &mbar);
     98        rc = ui_menu_bar_create(NULL, resource, &mbar);
    10599        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    106100        PCUT_ASSERT_NOT_NULL(mbar);
     
    148142        PCUT_ASSERT_NOT_NULL(resource);
    149143
    150         rc = ui_menu_bar_create(resource, &mbar);
     144        rc = ui_menu_bar_create(NULL, resource, &mbar);
    151145        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    152146        PCUT_ASSERT_NOT_NULL(mbar);
     
    188182        PCUT_ASSERT_NOT_NULL(resource);
    189183
    190         rc = ui_menu_bar_create(resource, &mbar);
     184        rc = ui_menu_bar_create(NULL, resource, &mbar);
    191185        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    192186        PCUT_ASSERT_NOT_NULL(mbar);
     
    218212        dummy_gc_t *dgc;
    219213        gfx_context_t *gc;
    220         ui_resource_t *resource = NULL;
    221         ui_menu_bar_t *mbar = NULL;
    222         ui_menu_t *menu = NULL;
     214        ui_t *ui = NULL;
     215        ui_resource_t *resource = NULL;
     216        ui_menu_bar_t *mbar = NULL;
     217        ui_menu_t *menu = NULL;
     218        gfx_rect_t prect;
    223219        gfx_coord2_t pos;
    224220        errno_t rc;
     
    229225        gc = dummygc_get_ctx(dgc);
    230226
    231         rc = ui_resource_create(gc, false, &resource);
    232         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    233         PCUT_ASSERT_NOT_NULL(resource);
    234 
    235         rc = ui_menu_bar_create(resource, &mbar);
    236         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    237         PCUT_ASSERT_NOT_NULL(mbar);
    238 
    239         rc = ui_menu_create(mbar, "Test", &menu);
    240         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    241         PCUT_ASSERT_NOT_NULL(menu);
     227        rc = ui_create_disp(NULL, &ui);
     228        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     229
     230        rc = ui_resource_create(gc, false, &resource);
     231        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     232        PCUT_ASSERT_NOT_NULL(resource);
     233
     234        rc = ui_menu_bar_create(ui, resource, &mbar);
     235        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     236        PCUT_ASSERT_NOT_NULL(mbar);
     237
     238        rc = ui_menu_create(mbar, "Test", &menu);
     239        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     240        PCUT_ASSERT_NOT_NULL(menu);
     241
     242        prect.p0.x = 0;
     243        prect.p0.y = 0;
     244        prect.p1.x = 0;
     245        prect.p1.y = 0;
     246
     247        /* Menu needs to be open to be able to paint it */
     248        rc = ui_menu_open(menu, &prect);
     249        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    242250
    243251        pos.x = 0;
     
    248256        ui_menu_bar_destroy(mbar);
    249257        ui_resource_destroy(resource);
    250         dummygc_destroy(dgc);
    251 }
    252 
    253 /** ui_menu_unpaint() calls expose callback */
    254 PCUT_TEST(unpaint)
    255 {
    256         dummy_gc_t *dgc;
    257         gfx_context_t *gc;
    258         ui_resource_t *resource = NULL;
    259         ui_menu_bar_t *mbar = NULL;
    260         ui_menu_t *menu = NULL;
    261         test_resp_t resp;
    262         errno_t rc;
    263 
    264         rc = dummygc_create(&dgc);
    265         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    266 
    267         gc = dummygc_get_ctx(dgc);
    268 
    269         rc = ui_resource_create(gc, false, &resource);
    270         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    271         PCUT_ASSERT_NOT_NULL(resource);
    272 
    273         rc = ui_menu_bar_create(resource, &mbar);
    274         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    275         PCUT_ASSERT_NOT_NULL(mbar);
    276 
    277         rc = ui_menu_create(mbar, "Test", &menu);
    278         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    279         PCUT_ASSERT_NOT_NULL(menu);
    280 
    281         ui_resource_set_expose_cb(resource, test_expose, &resp);
    282 
    283         resp.expose = false;
    284         rc = ui_menu_unpaint(menu);
    285         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    286         PCUT_ASSERT_TRUE(resp.expose);
    287 
    288         ui_menu_bar_destroy(mbar);
    289         ui_resource_destroy(resource);
     258        ui_destroy(ui);
    290259        dummygc_destroy(dgc);
    291260}
     
    313282        PCUT_ASSERT_NOT_NULL(resource);
    314283
    315         rc = ui_menu_bar_create(resource, &mbar);
     284        rc = ui_menu_bar_create(NULL, resource, &mbar);
    316285        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    317286        PCUT_ASSERT_NOT_NULL(mbar);
     
    334303}
    335304
    336 /** ui_menu_pos_event() outside menu closes it */
    337 PCUT_TEST(pos_event_outside)
    338 {
    339         dummy_gc_t *dgc;
    340         gfx_context_t *gc;
    341         ui_resource_t *resource = NULL;
    342         ui_menu_bar_t *mbar = NULL;
    343         ui_menu_t *menu = NULL;
    344         ui_evclaim_t claimed;
    345         gfx_coord2_t pos;
    346         pos_event_t event;
    347         errno_t rc;
    348 
    349         rc = dummygc_create(&dgc);
    350         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    351 
    352         gc = dummygc_get_ctx(dgc);
    353 
    354         rc = ui_resource_create(gc, false, &resource);
    355         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    356         PCUT_ASSERT_NOT_NULL(resource);
    357 
    358         rc = ui_menu_bar_create(resource, &mbar);
    359         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    360         PCUT_ASSERT_NOT_NULL(mbar);
    361 
    362         rc = ui_menu_create(mbar, "Test", &menu);
    363         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    364         PCUT_ASSERT_NOT_NULL(menu);
    365 
    366         pos.x = 0;
    367         pos.y = 0;
    368         ui_menu_bar_select(mbar, &pos, menu);
    369         PCUT_ASSERT_EQUALS(menu, mbar->selected);
    370 
    371         pos.x = 10;
    372         pos.y = 0;
    373         event.type = POS_PRESS;
    374         event.hpos = 0;
    375         event.vpos = 0;
    376         claimed = ui_menu_pos_event(menu, &pos, &event);
    377         PCUT_ASSERT_EQUALS(ui_unclaimed, claimed);
    378 
    379         /* Press event outside menu should close it */
    380         PCUT_ASSERT_NULL(mbar->selected);
    381 
    382         ui_menu_bar_destroy(mbar);
    383         ui_resource_destroy(resource);
    384         dummygc_destroy(dgc);
    385 }
    386 
    387305/** Computing menu geometry */
    388306PCUT_TEST(get_geom)
     
    406324        PCUT_ASSERT_NOT_NULL(resource);
    407325
    408         rc = ui_menu_bar_create(resource, &mbar);
     326        rc = ui_menu_bar_create(NULL, resource, &mbar);
    409327        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    410328        PCUT_ASSERT_NOT_NULL(mbar);
     
    432350}
    433351
    434 static void test_expose(void *arg)
    435 {
    436         test_resp_t *resp = (test_resp_t *) arg;
    437 
    438         resp->expose = true;
    439 }
    440 
    441352PCUT_EXPORT(menu);
Note: See TracChangeset for help on using the changeset viewer.