Changes in uspace/lib/ui/test/menubar.c [4034954c:c68c18b9] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/ui/test/menubar.c
r4034954c rc68c18b9 1 1 /* 2 * Copyright (c) 202 3Jiri Svoboda2 * Copyright (c) 2021 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 32 32 #include <stdbool.h> 33 33 #include <ui/control.h> 34 #include <ui/menu.h> 34 35 #include <ui/menubar.h> 35 #include <ui/menudd.h>36 36 #include <ui/ui.h> 37 37 #include <ui/window.h> 38 38 #include "../private/menubar.h" 39 #include "../private/wdecor.h"40 #include "../private/window.h"41 39 42 40 PCUT_INIT; … … 47 45 PCUT_TEST(create_destroy) 48 46 { 49 ui_t *ui = NULL; 50 ui_window_t *window = NULL; 51 ui_wnd_params_t params; 52 ui_menu_bar_t *mbar = NULL; 53 errno_t rc; 54 55 rc = ui_create_disp(NULL, &ui); 56 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 57 58 ui_wnd_params_init(¶ms); 59 params.caption = "Hello"; 60 61 rc = ui_window_create(ui, ¶ms, &window); 62 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 63 PCUT_ASSERT_NOT_NULL(window); 64 65 rc = ui_menu_bar_create(ui, window, &mbar); 66 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 67 PCUT_ASSERT_NOT_NULL(mbar); 68 69 ui_menu_bar_destroy(mbar); 70 ui_window_destroy(window); 71 ui_destroy(ui); 47 ui_menu_bar_t *mbar = NULL; 48 errno_t rc; 49 50 rc = ui_menu_bar_create(NULL, NULL, &mbar); 51 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 52 PCUT_ASSERT_NOT_NULL(mbar); 53 54 ui_menu_bar_destroy(mbar); 72 55 } 73 56 … … 81 64 PCUT_TEST(ctl) 82 65 { 83 ui_t *ui = NULL;84 ui_window_t *window = NULL;85 ui_wnd_params_t params;86 66 ui_menu_bar_t *mbar = NULL; 87 67 ui_control_t *control; 88 68 errno_t rc; 89 69 90 rc = ui_create_disp(NULL, &ui); 91 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 92 93 ui_wnd_params_init(¶ms); 94 params.caption = "Hello"; 95 96 rc = ui_window_create(ui, ¶ms, &window); 97 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 98 PCUT_ASSERT_NOT_NULL(window); 99 100 rc = ui_menu_bar_create(ui, window, &mbar); 70 rc = ui_menu_bar_create(NULL, NULL, &mbar); 101 71 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 102 72 PCUT_ASSERT_NOT_NULL(mbar); … … 106 76 107 77 ui_control_destroy(control); 108 ui_window_destroy(window);109 ui_destroy(ui);110 78 } 111 79 … … 181 149 } 182 150 183 /** Deliver menu bar keyboard event*/184 PCUT_TEST( kbd_event)151 /** Press event on menu bar entry selects menu */ 152 PCUT_TEST(pos_event_select) 185 153 { 186 154 ui_t *ui = NULL; … … 190 158 ui_menu_t *menu = NULL; 191 159 ui_evclaim_t claimed; 192 kbd_event_t event;160 pos_event_t event; 193 161 gfx_rect_t rect; 194 162 errno_t rc; … … 214 182 ui_menu_bar_set_rect(mbar, &rect); 215 183 216 rc = ui_menu_dd_create(mbar, "Test", NULL, &menu); 217 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 218 PCUT_ASSERT_NOT_NULL(menu); 219 220 event.type = KEY_PRESS; 221 event.key = KC_F10; 222 event.mods = 0; 223 claimed = ui_menu_bar_kbd_event(mbar, &event); 224 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 225 PCUT_ASSERT_EQUALS(ui_claimed, claimed); 226 227 ui_menu_bar_destroy(mbar); 228 ui_window_destroy(window); 229 ui_destroy(ui); 230 } 231 232 /** ui_menu_bar_press_accel() opens the corresponding menu */ 233 PCUT_TEST(press_accel) 234 { 235 ui_t *ui = NULL; 236 ui_window_t *window = NULL; 237 ui_wnd_params_t params; 238 ui_menu_bar_t *mbar = NULL; 239 ui_menu_t *menu = NULL; 240 ui_menu_dd_t *mdd = NULL; 241 gfx_rect_t rect; 242 errno_t rc; 243 244 rc = ui_create_disp(NULL, &ui); 245 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 246 247 ui_wnd_params_init(¶ms); 248 params.caption = "Hello"; 249 250 rc = ui_window_create(ui, ¶ms, &window); 251 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 252 PCUT_ASSERT_NOT_NULL(window); 253 254 rc = ui_menu_bar_create(ui, window, &mbar); 255 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 256 PCUT_ASSERT_NOT_NULL(mbar); 257 258 rect.p0.x = 0; 259 rect.p0.y = 0; 260 rect.p1.x = 50; 261 rect.p1.y = 25; 262 ui_menu_bar_set_rect(mbar, &rect); 263 264 rc = ui_menu_dd_create(mbar, "~T~est", &mdd, &menu); 265 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 266 PCUT_ASSERT_NOT_NULL(mdd); 267 PCUT_ASSERT_NOT_NULL(menu); 268 269 PCUT_ASSERT_FALSE(ui_menu_dd_is_open(mdd)); 270 271 ui_menu_bar_press_accel(mbar, 't', 0); 272 273 PCUT_ASSERT_TRUE(ui_menu_dd_is_open(mdd)); 274 275 ui_menu_bar_destroy(mbar); 276 ui_window_destroy(window); 277 ui_destroy(ui); 278 } 279 280 /** Press event on menu bar entry selects menu */ 281 PCUT_TEST(pos_event_select) 282 { 283 ui_t *ui = NULL; 284 ui_window_t *window = NULL; 285 ui_wnd_params_t params; 286 ui_menu_bar_t *mbar = NULL; 287 ui_menu_t *menu = NULL; 288 ui_menu_dd_t *mdd = NULL; 289 ui_evclaim_t claimed; 290 pos_event_t event; 291 gfx_rect_t rect; 292 errno_t rc; 293 294 rc = ui_create_disp(NULL, &ui); 295 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 296 297 ui_wnd_params_init(¶ms); 298 params.caption = "Hello"; 299 300 rc = ui_window_create(ui, ¶ms, &window); 301 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 302 PCUT_ASSERT_NOT_NULL(window); 303 304 rc = ui_menu_bar_create(ui, window, &mbar); 305 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 306 PCUT_ASSERT_NOT_NULL(mbar); 307 308 rect.p0.x = 0; 309 rect.p0.y = 0; 310 rect.p1.x = 50; 311 rect.p1.y = 25; 312 ui_menu_bar_set_rect(mbar, &rect); 313 314 rc = ui_menu_dd_create(mbar, "Test", &mdd, &menu); 184 rc = ui_menu_create(mbar, "Test", &menu); 315 185 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 316 186 PCUT_ASSERT_NOT_NULL(menu); … … 323 193 PCUT_ASSERT_EQUALS(ui_claimed, claimed); 324 194 325 /* Clicking the menu bar entry should select menu drop-down */ 326 PCUT_ASSERT_EQUALS(mdd, mbar->selected); 195 /* Clicking the menu bar entry should select menu */ 196 PCUT_ASSERT_EQUALS(menu, mbar->selected); 197 198 ui_menu_bar_destroy(mbar); 199 ui_window_destroy(window); 200 ui_destroy(ui); 201 } 202 203 /** Calling ui_menu_bar_select() with the same menu twice deselects it */ 204 PCUT_TEST(select_same) 205 { 206 ui_t *ui = NULL; 207 ui_window_t *window = NULL; 208 ui_wnd_params_t params; 209 ui_menu_bar_t *mbar = NULL; 210 ui_menu_t *menu = NULL; 211 gfx_rect_t rect; 212 errno_t rc; 213 214 rc = ui_create_disp(NULL, &ui); 215 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 216 217 ui_wnd_params_init(¶ms); 218 params.caption = "Hello"; 219 220 rc = ui_window_create(ui, ¶ms, &window); 221 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 222 PCUT_ASSERT_NOT_NULL(window); 223 224 rc = ui_menu_bar_create(ui, window, &mbar); 225 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 226 PCUT_ASSERT_NOT_NULL(mbar); 227 228 rc = ui_menu_create(mbar, "Test", &menu); 229 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 230 PCUT_ASSERT_NOT_NULL(menu); 231 232 rect.p0.x = 0; 233 rect.p0.y = 0; 234 rect.p1.x = 0; 235 rect.p1.y = 0; 236 ui_menu_bar_select(mbar, &rect, menu); 237 PCUT_ASSERT_EQUALS(menu, mbar->selected); 238 239 /* Selecting again should unselect the menu */ 240 ui_menu_bar_select(mbar, &rect, menu); 241 PCUT_ASSERT_NULL(mbar->selected); 327 242 328 243 ui_menu_bar_destroy(mbar); … … 338 253 ui_wnd_params_t params; 339 254 ui_menu_bar_t *mbar = NULL; 340 ui_menu_dd_t *mdd1 = NULL; 341 ui_menu_dd_t *mdd2 = NULL; 342 errno_t rc; 343 344 rc = ui_create_disp(NULL, &ui); 345 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 346 347 ui_wnd_params_init(¶ms); 348 params.caption = "Hello"; 349 350 rc = ui_window_create(ui, ¶ms, &window); 351 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 352 PCUT_ASSERT_NOT_NULL(window); 353 354 rc = ui_menu_bar_create(ui, window, &mbar); 355 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 356 PCUT_ASSERT_NOT_NULL(mbar); 357 358 rc = ui_menu_dd_create(mbar, "Test 1", &mdd1, NULL); 359 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 360 PCUT_ASSERT_NOT_NULL(mdd1); 361 362 rc = ui_menu_dd_create(mbar, "Test 2", &mdd2, NULL); 363 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 364 PCUT_ASSERT_NOT_NULL(mdd2); 365 366 ui_menu_bar_select(mbar, mdd1, true, 0); 367 PCUT_ASSERT_EQUALS(mdd1, mbar->selected); 255 ui_menu_t *menu1 = NULL; 256 ui_menu_t *menu2 = NULL; 257 gfx_rect_t rect; 258 errno_t rc; 259 260 rc = ui_create_disp(NULL, &ui); 261 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 262 263 ui_wnd_params_init(¶ms); 264 params.caption = "Hello"; 265 266 rc = ui_window_create(ui, ¶ms, &window); 267 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 268 PCUT_ASSERT_NOT_NULL(window); 269 270 rc = ui_menu_bar_create(ui, window, &mbar); 271 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 272 PCUT_ASSERT_NOT_NULL(mbar); 273 274 rc = ui_menu_create(mbar, "Test 1", &menu1); 275 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 276 PCUT_ASSERT_NOT_NULL(menu1); 277 278 rc = ui_menu_create(mbar, "Test 2", &menu2); 279 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 280 PCUT_ASSERT_NOT_NULL(menu2); 281 282 rect.p0.x = 0; 283 rect.p0.y = 0; 284 rect.p1.x = 0; 285 rect.p1.y = 0; 286 ui_menu_bar_select(mbar, &rect, menu1); 287 PCUT_ASSERT_EQUALS(menu1, mbar->selected); 368 288 369 289 /* Selecting different menu should select it */ 370 ui_menu_bar_select(mbar, mdd2, true, 0); 371 PCUT_ASSERT_EQUALS(mdd2, mbar->selected); 372 373 ui_menu_bar_destroy(mbar); 374 ui_window_destroy(window); 375 ui_destroy(ui); 376 } 377 378 /** ui_menu_bar_select_first/last() selects first/last drop-down */ 379 PCUT_TEST(select_first_last) 380 { 381 ui_t *ui = NULL; 382 ui_window_t *window = NULL; 383 ui_wnd_params_t params; 384 ui_menu_bar_t *mbar = NULL; 385 ui_menu_dd_t *mdd1 = NULL; 386 ui_menu_dd_t *mdd2 = NULL; 387 errno_t rc; 388 389 rc = ui_create_disp(NULL, &ui); 390 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 391 392 ui_wnd_params_init(¶ms); 393 params.caption = "Hello"; 394 395 rc = ui_window_create(ui, ¶ms, &window); 396 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 397 PCUT_ASSERT_NOT_NULL(window); 398 399 rc = ui_menu_bar_create(ui, window, &mbar); 400 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 401 PCUT_ASSERT_NOT_NULL(mbar); 402 403 rc = ui_menu_dd_create(mbar, "Test 1", &mdd1, NULL); 404 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 405 PCUT_ASSERT_NOT_NULL(mdd1); 406 407 rc = ui_menu_dd_create(mbar, "Test 2", &mdd2, NULL); 408 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 409 PCUT_ASSERT_NOT_NULL(mdd2); 410 411 ui_menu_bar_select_first(mbar, true, 0); 412 PCUT_ASSERT_EQUALS(mdd1, mbar->selected); 413 414 ui_menu_bar_select_last(mbar, true, 0); 415 PCUT_ASSERT_EQUALS(mdd2, mbar->selected); 416 417 ui_menu_bar_destroy(mbar); 418 ui_window_destroy(window); 419 ui_destroy(ui); 420 } 421 422 /** ui_menu_bar_select_sysmenu() activates system menu */ 423 PCUT_TEST(select_sysmenu) 424 { 425 ui_t *ui = NULL; 426 ui_window_t *window = NULL; 427 ui_wnd_params_t params; 428 ui_menu_bar_t *mbar = NULL; 429 ui_menu_dd_t *mdd1 = NULL; 430 ui_menu_dd_t *mdd2 = NULL; 431 errno_t rc; 432 433 rc = ui_create_disp(NULL, &ui); 434 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 435 436 ui_wnd_params_init(¶ms); 437 params.caption = "Hello"; 438 439 rc = ui_window_create(ui, ¶ms, &window); 440 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 441 PCUT_ASSERT_NOT_NULL(window); 442 443 rc = ui_menu_bar_create(ui, window, &mbar); 444 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 445 PCUT_ASSERT_NOT_NULL(mbar); 446 447 rc = ui_menu_dd_create(mbar, "Test 1", &mdd1, NULL); 448 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 449 PCUT_ASSERT_NOT_NULL(mdd1); 450 451 rc = ui_menu_dd_create(mbar, "Test 2", &mdd2, NULL); 452 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 453 PCUT_ASSERT_NOT_NULL(mdd2); 454 455 ui_menu_bar_select_sysmenu(mbar, false, 0); 456 PCUT_ASSERT_TRUE(window->wdecor->sysmenu_hdl_active); 457 458 ui_menu_bar_destroy(mbar); 459 ui_window_destroy(window); 460 ui_destroy(ui); 461 } 462 463 /** ui_menu_bar_activate() activates/deactivates menu bar */ 464 PCUT_TEST(activate_deactivate) 465 { 466 ui_t *ui = NULL; 467 ui_window_t *window = NULL; 468 ui_wnd_params_t params; 469 ui_menu_bar_t *mbar = NULL; 470 ui_menu_dd_t *mdd = NULL; 471 errno_t rc; 472 473 rc = ui_create_disp(NULL, &ui); 474 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 475 476 ui_wnd_params_init(¶ms); 477 params.caption = "Hello"; 478 479 rc = ui_window_create(ui, ¶ms, &window); 480 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 481 PCUT_ASSERT_NOT_NULL(window); 482 483 rc = ui_menu_bar_create(ui, window, &mbar); 484 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 485 PCUT_ASSERT_NOT_NULL(mbar); 486 487 rc = ui_menu_dd_create(mbar, "Test", &mdd, NULL); 488 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 489 PCUT_ASSERT_NOT_NULL(mdd); 490 491 ui_menu_bar_activate(mbar); 492 PCUT_ASSERT_EQUALS(mdd, mbar->selected); 493 494 ui_menu_bar_deactivate(mbar); 495 PCUT_ASSERT_NULL(mbar->selected); 290 ui_menu_bar_select(mbar, &rect, menu2); 291 PCUT_ASSERT_EQUALS(menu2, mbar->selected); 496 292 497 293 ui_menu_bar_destroy(mbar);
Note:
See TracChangeset
for help on using the changeset viewer.