Changes in uspace/lib/ui/test/menubar.c [c68c18b9:4034954c] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/ui/test/menubar.c
rc68c18b9 r4034954c 1 1 /* 2 * Copyright (c) 202 1Jiri Svoboda2 * Copyright (c) 2023 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>35 34 #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" 39 41 40 42 PCUT_INIT; … … 45 47 PCUT_TEST(create_destroy) 46 48 { 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); 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); 55 72 } 56 73 … … 64 81 PCUT_TEST(ctl) 65 82 { 83 ui_t *ui = NULL; 84 ui_window_t *window = NULL; 85 ui_wnd_params_t params; 66 86 ui_menu_bar_t *mbar = NULL; 67 87 ui_control_t *control; 68 88 errno_t rc; 69 89 70 rc = ui_menu_bar_create(NULL, NULL, &mbar); 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); 71 101 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 72 102 PCUT_ASSERT_NOT_NULL(mbar); … … 76 106 77 107 ui_control_destroy(control); 108 ui_window_destroy(window); 109 ui_destroy(ui); 78 110 } 79 111 … … 149 181 } 150 182 151 /** Press event on menu bar entry selects menu*/152 PCUT_TEST( pos_event_select)183 /** Deliver menu bar keyboard event */ 184 PCUT_TEST(kbd_event) 153 185 { 154 186 ui_t *ui = NULL; … … 158 190 ui_menu_t *menu = NULL; 159 191 ui_evclaim_t claimed; 160 pos_event_t event;192 kbd_event_t event; 161 193 gfx_rect_t rect; 162 194 errno_t rc; … … 182 214 ui_menu_bar_set_rect(mbar, &rect); 183 215 184 rc = ui_menu_create(mbar, "Test", &menu); 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); 185 315 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 186 316 PCUT_ASSERT_NOT_NULL(menu); … … 193 323 PCUT_ASSERT_EQUALS(ui_claimed, claimed); 194 324 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); 325 /* Clicking the menu bar entry should select menu drop-down */ 326 PCUT_ASSERT_EQUALS(mdd, mbar->selected); 242 327 243 328 ui_menu_bar_destroy(mbar); … … 253 338 ui_wnd_params_t params; 254 339 ui_menu_bar_t *mbar = NULL; 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); 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); 288 368 289 369 /* Selecting different menu should select it */ 290 ui_menu_bar_select(mbar, &rect, menu2); 291 PCUT_ASSERT_EQUALS(menu2, mbar->selected); 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); 292 496 293 497 ui_menu_bar_destroy(mbar);
Note:
See TracChangeset
for help on using the changeset viewer.