Changeset 59768c7 in mainline for uspace/lib/ui/test/menuentry.c


Ignore:
Timestamp:
2022-01-10T19:29:00Z (2 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
5de852c
Parents:
9754ed2
git-author:
Jiri Svoboda <jiri@…> (2022-01-10 19:27:55)
git-committer:
Jiri Svoboda <jiri@…> (2022-01-10 19:29:00)
Message:

Menu control using F10, cursor keys, Enter, Escape

File:
1 edited

Legend:

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

    r9754ed2 r59768c7  
    236236}
    237237
     238/** ui_menu_entry_last() / ui_menu_entry_prev() iterate over entries in reverse */
     239PCUT_TEST(last_prev)
     240{
     241        ui_t *ui = NULL;
     242        ui_window_t *window = NULL;
     243        ui_wnd_params_t params;
     244        ui_menu_bar_t *mbar = NULL;
     245        ui_menu_t *menu = NULL;
     246        ui_menu_entry_t *entry1 = NULL;
     247        ui_menu_entry_t *entry2 = NULL;
     248        ui_menu_entry_t *e;
     249        errno_t rc;
     250
     251        rc = ui_create_disp(NULL, &ui);
     252        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     253
     254        ui_wnd_params_init(&params);
     255        params.caption = "Hello";
     256
     257        rc = ui_window_create(ui, &params, &window);
     258        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     259        PCUT_ASSERT_NOT_NULL(window);
     260
     261        rc = ui_menu_bar_create(ui, window, &mbar);
     262        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     263        PCUT_ASSERT_NOT_NULL(mbar);
     264
     265        rc = ui_menu_create(mbar, "Test", &menu);
     266        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     267        PCUT_ASSERT_NOT_NULL(menu);
     268
     269        rc = ui_menu_entry_create(menu, "Foo", "F1", &entry1);
     270        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     271        PCUT_ASSERT_NOT_NULL(entry1);
     272
     273        rc = ui_menu_entry_create(menu, "Bar", "F2", &entry2);
     274        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     275        PCUT_ASSERT_NOT_NULL(entry2);
     276
     277        e = ui_menu_entry_last(menu);
     278        PCUT_ASSERT_EQUALS(entry2, e);
     279
     280        e = ui_menu_entry_prev(e);
     281        PCUT_ASSERT_EQUALS(entry1, e);
     282
     283        e = ui_menu_entry_prev(e);
     284        PCUT_ASSERT_NULL(e);
     285
     286        ui_menu_bar_destroy(mbar);
     287        ui_window_destroy(window);
     288        ui_destroy(ui);
     289}
     290
    238291/** ui_menu_entry_column_widths() / ui_menu_entry_height() */
    239292PCUT_TEST(widths_height)
     
    335388        rc = ui_menu_entry_paint(mentry, &pos);
    336389        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     390
     391        ui_menu_bar_destroy(mbar);
     392        ui_window_destroy(window);
     393        ui_destroy(ui);
     394}
     395
     396/** ui_menu_entry_selectable() returns correct value based on entry type */
     397PCUT_TEST(selectable)
     398{
     399        ui_t *ui = NULL;
     400        ui_window_t *window = NULL;
     401        ui_wnd_params_t params;
     402        ui_menu_bar_t *mbar = NULL;
     403        ui_menu_t *menu = NULL;
     404        ui_menu_entry_t *mentry = NULL;
     405        errno_t rc;
     406
     407        rc = ui_create_disp(NULL, &ui);
     408        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     409
     410        ui_wnd_params_init(&params);
     411        params.caption = "Hello";
     412
     413        rc = ui_window_create(ui, &params, &window);
     414        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     415        PCUT_ASSERT_NOT_NULL(window);
     416
     417        rc = ui_menu_bar_create(ui, window, &mbar);
     418        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     419        PCUT_ASSERT_NOT_NULL(mbar);
     420
     421        rc = ui_menu_create(mbar, "Test", &menu);
     422        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     423        PCUT_ASSERT_NOT_NULL(menu);
     424
     425        /* Selectable entry */
     426
     427        rc = ui_menu_entry_create(menu, "Foo", "F1", &mentry);
     428        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     429        PCUT_ASSERT_NOT_NULL(mentry);
     430
     431        PCUT_ASSERT_TRUE(ui_menu_entry_selectable(mentry));
     432
     433        ui_menu_entry_destroy(mentry);
     434
     435        /* Non-selectable separator entry */
     436
     437        rc = ui_menu_entry_sep_create(menu, &mentry);
     438        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     439        PCUT_ASSERT_NOT_NULL(mentry);
     440
     441        PCUT_ASSERT_FALSE(ui_menu_entry_selectable(mentry));
     442
     443        ui_menu_entry_destroy(mentry);
    337444
    338445        ui_menu_bar_destroy(mbar);
     
    545652}
    546653
     654/** ui_menu_entry_activate() activates menu entry */
     655PCUT_TEST(activate)
     656{
     657        ui_t *ui = NULL;
     658        ui_window_t *window = NULL;
     659        ui_wnd_params_t params;
     660        ui_menu_bar_t *mbar = NULL;
     661        ui_menu_t *menu = NULL;
     662        ui_menu_entry_t *mentry = NULL;
     663        gfx_rect_t prect;
     664        test_resp_t resp;
     665        errno_t rc;
     666
     667        rc = ui_create_disp(NULL, &ui);
     668        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     669
     670        ui_wnd_params_init(&params);
     671        params.caption = "Hello";
     672
     673        rc = ui_window_create(ui, &params, &window);
     674        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     675        PCUT_ASSERT_NOT_NULL(window);
     676
     677        rc = ui_menu_bar_create(ui, window, &mbar);
     678        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     679        PCUT_ASSERT_NOT_NULL(mbar);
     680
     681        rc = ui_menu_create(mbar, "Test", &menu);
     682        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     683        PCUT_ASSERT_NOT_NULL(menu);
     684
     685        rc = ui_menu_entry_create(menu, "X", "Y", &mentry);
     686        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     687        PCUT_ASSERT_NOT_NULL(mentry);
     688
     689        ui_menu_entry_set_cb(mentry, test_entry_cb, &resp);
     690        resp.activated = false;
     691
     692        prect.p0.x = 0;
     693        prect.p0.y = 0;
     694        prect.p1.x = 0;
     695        prect.p1.y = 0;
     696
     697        rc = ui_menu_open(menu, &prect);
     698        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     699
     700        PCUT_ASSERT_FALSE(resp.activated);
     701        ui_menu_entry_activate(mentry);
     702
     703        ui_menu_entry_release(mentry);
     704        PCUT_ASSERT_TRUE(resp.activated);
     705
     706        ui_menu_bar_destroy(mbar);
     707        ui_window_destroy(window);
     708        ui_destroy(ui);
     709}
     710
    547711/** Press event inside menu entry */
    548712PCUT_TEST(pos_press_inside)
Note: See TracChangeset for help on using the changeset viewer.