Changeset 59768c7 in mainline for uspace/lib/ui/test/menu.c
- Timestamp:
- 2022-01-10T19:29:00Z (3 years ago)
- 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)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/ui/test/menu.c
r9754ed2 r59768c7 36 36 #include <ui/menu.h> 37 37 #include <ui/menubar.h> 38 #include <ui/menuentry.h> 38 39 #include <ui/ui.h> 39 40 #include <ui/window.h> … … 122 123 } 123 124 125 /** ui_menu_last() / ui_menu_prev() iterate over menus in reverse */ 126 PCUT_TEST(last_prev) 127 { 128 ui_t *ui = NULL; 129 ui_window_t *window = NULL; 130 ui_wnd_params_t params; 131 ui_menu_bar_t *mbar = NULL; 132 ui_menu_t *menu1 = NULL; 133 ui_menu_t *menu2 = NULL; 134 ui_menu_t *m; 135 errno_t rc; 136 137 rc = ui_create_disp(NULL, &ui); 138 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 139 140 ui_wnd_params_init(¶ms); 141 params.caption = "Hello"; 142 143 rc = ui_window_create(ui, ¶ms, &window); 144 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 145 PCUT_ASSERT_NOT_NULL(window); 146 147 rc = ui_menu_bar_create(ui, window, &mbar); 148 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 149 PCUT_ASSERT_NOT_NULL(mbar); 150 151 rc = ui_menu_create(mbar, "Test 1", &menu1); 152 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 153 PCUT_ASSERT_NOT_NULL(menu1); 154 155 rc = ui_menu_create(mbar, "Test 1", &menu2); 156 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 157 PCUT_ASSERT_NOT_NULL(menu2); 158 159 m = ui_menu_last(mbar); 160 PCUT_ASSERT_EQUALS(menu2, m); 161 162 m = ui_menu_prev(m); 163 PCUT_ASSERT_EQUALS(menu1, m); 164 165 m = ui_menu_prev(m); 166 PCUT_ASSERT_NULL(m); 167 168 ui_menu_bar_destroy(mbar); 169 ui_window_destroy(window); 170 ui_destroy(ui); 171 } 172 124 173 /** ui_menu_caption() returns the menu's caption */ 125 174 PCUT_TEST(caption) … … 209 258 } 210 259 211 /** Paint background in graphics mode*/212 PCUT_TEST( paint_bg_gfx)260 /** Open and close menu with ui_menu_open() / ui_menu_close() */ 261 PCUT_TEST(open_close) 213 262 { 214 263 ui_t *ui = NULL; … … 218 267 ui_menu_t *menu = NULL; 219 268 gfx_rect_t prect; 220 gfx_coord2_t pos;221 269 errno_t rc; 222 270 … … 244 292 prect.p1.y = 0; 245 293 246 /* Menu needs to be open to be able to paint it*/294 /* Open and close */ 247 295 rc = ui_menu_open(menu, &prect); 248 296 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 249 297 250 pos.x = 0; 251 pos.y = 0; 252 rc = ui_menu_paint_bg_gfx(menu, &pos); 253 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 254 255 ui_menu_bar_destroy(mbar); 256 ui_window_destroy(window); 257 ui_destroy(ui); 258 } 259 260 /** Paint background in text mode */ 261 PCUT_TEST(paint_bg_text) 298 ui_menu_close(menu); 299 300 ui_menu_bar_destroy(mbar); 301 ui_window_destroy(window); 302 ui_destroy(ui); 303 } 304 305 /** ui_menu_is_open() correctly returns menu state */ 306 PCUT_TEST(is_open) 262 307 { 263 308 ui_t *ui = NULL; … … 267 312 ui_menu_t *menu = NULL; 268 313 gfx_rect_t prect; 269 gfx_coord2_t pos;314 bool open; 270 315 errno_t rc; 271 316 … … 293 338 prect.p1.y = 0; 294 339 295 /* Menu needs to be open to be able to paint it */ 340 open = ui_menu_is_open(menu); 341 PCUT_ASSERT_FALSE(open); 342 296 343 rc = ui_menu_open(menu, &prect); 297 344 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 298 345 299 pos.x = 0; 300 pos.y = 0; 301 rc = ui_menu_paint_bg_text(menu, &pos); 302 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 303 304 ui_menu_bar_destroy(mbar); 305 ui_window_destroy(window); 306 ui_destroy(ui); 307 } 308 309 /** Paint menu */ 310 PCUT_TEST(paint) 346 open = ui_menu_is_open(menu); 347 PCUT_ASSERT_TRUE(open); 348 349 ui_menu_close(menu); 350 351 open = ui_menu_is_open(menu); 352 PCUT_ASSERT_FALSE(open); 353 354 ui_menu_bar_destroy(mbar); 355 ui_window_destroy(window); 356 ui_destroy(ui); 357 } 358 359 /** Paint background in graphics mode */ 360 PCUT_TEST(paint_bg_gfx) 311 361 { 312 362 ui_t *ui = NULL; … … 348 398 pos.x = 0; 349 399 pos.y = 0; 400 rc = ui_menu_paint_bg_gfx(menu, &pos); 401 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 402 403 ui_menu_bar_destroy(mbar); 404 ui_window_destroy(window); 405 ui_destroy(ui); 406 } 407 408 /** Paint background in text mode */ 409 PCUT_TEST(paint_bg_text) 410 { 411 ui_t *ui = NULL; 412 ui_window_t *window = NULL; 413 ui_wnd_params_t params; 414 ui_menu_bar_t *mbar = NULL; 415 ui_menu_t *menu = NULL; 416 gfx_rect_t prect; 417 gfx_coord2_t pos; 418 errno_t rc; 419 420 rc = ui_create_disp(NULL, &ui); 421 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 422 423 ui_wnd_params_init(¶ms); 424 params.caption = "Hello"; 425 426 rc = ui_window_create(ui, ¶ms, &window); 427 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 428 PCUT_ASSERT_NOT_NULL(window); 429 430 rc = ui_menu_bar_create(ui, window, &mbar); 431 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 432 PCUT_ASSERT_NOT_NULL(mbar); 433 434 rc = ui_menu_create(mbar, "Test", &menu); 435 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 436 PCUT_ASSERT_NOT_NULL(menu); 437 438 prect.p0.x = 0; 439 prect.p0.y = 0; 440 prect.p1.x = 0; 441 prect.p1.y = 0; 442 443 /* Menu needs to be open to be able to paint it */ 444 rc = ui_menu_open(menu, &prect); 445 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 446 447 pos.x = 0; 448 pos.y = 0; 449 rc = ui_menu_paint_bg_text(menu, &pos); 450 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 451 452 ui_menu_bar_destroy(mbar); 453 ui_window_destroy(window); 454 ui_destroy(ui); 455 } 456 457 /** Paint menu */ 458 PCUT_TEST(paint) 459 { 460 ui_t *ui = NULL; 461 ui_window_t *window = NULL; 462 ui_wnd_params_t params; 463 ui_menu_bar_t *mbar = NULL; 464 ui_menu_t *menu = NULL; 465 gfx_rect_t prect; 466 gfx_coord2_t pos; 467 errno_t rc; 468 469 rc = ui_create_disp(NULL, &ui); 470 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 471 472 ui_wnd_params_init(¶ms); 473 params.caption = "Hello"; 474 475 rc = ui_window_create(ui, ¶ms, &window); 476 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 477 PCUT_ASSERT_NOT_NULL(window); 478 479 rc = ui_menu_bar_create(ui, window, &mbar); 480 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 481 PCUT_ASSERT_NOT_NULL(mbar); 482 483 rc = ui_menu_create(mbar, "Test", &menu); 484 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 485 PCUT_ASSERT_NOT_NULL(menu); 486 487 prect.p0.x = 0; 488 prect.p0.y = 0; 489 prect.p1.x = 0; 490 prect.p1.y = 0; 491 492 /* Menu needs to be open to be able to paint it */ 493 rc = ui_menu_open(menu, &prect); 494 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 495 496 pos.x = 0; 497 pos.y = 0; 350 498 rc = ui_menu_paint(menu, &pos); 351 499 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 500 501 ui_menu_bar_destroy(mbar); 502 ui_window_destroy(window); 503 ui_destroy(ui); 504 } 505 506 /** ui_menu_up() with empty menu does nothing */ 507 PCUT_TEST(up_empty) 508 { 509 ui_t *ui = NULL; 510 ui_window_t *window = NULL; 511 ui_wnd_params_t params; 512 ui_menu_bar_t *mbar = NULL; 513 ui_menu_t *menu = NULL; 514 gfx_rect_t prect; 515 errno_t rc; 516 517 rc = ui_create_disp(NULL, &ui); 518 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 519 520 ui_wnd_params_init(¶ms); 521 params.caption = "Hello"; 522 523 rc = ui_window_create(ui, ¶ms, &window); 524 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 525 PCUT_ASSERT_NOT_NULL(window); 526 527 rc = ui_menu_bar_create(ui, window, &mbar); 528 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 529 PCUT_ASSERT_NOT_NULL(mbar); 530 531 rc = ui_menu_create(mbar, "Test", &menu); 532 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 533 PCUT_ASSERT_NOT_NULL(menu); 534 535 prect.p0.x = 0; 536 prect.p0.y = 0; 537 prect.p1.x = 0; 538 prect.p1.y = 0; 539 540 /* Menu needs to be open to be able to move around it */ 541 rc = ui_menu_open(menu, &prect); 542 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 543 544 ui_menu_up(menu); 545 546 ui_menu_bar_destroy(mbar); 547 ui_window_destroy(window); 548 ui_destroy(ui); 549 } 550 551 /** ui_menu_up() moves one entry up, skips separators, wraps around */ 552 PCUT_TEST(up) 553 { 554 ui_t *ui = NULL; 555 ui_window_t *window = NULL; 556 ui_wnd_params_t params; 557 ui_menu_bar_t *mbar = NULL; 558 ui_menu_t *menu = NULL; 559 ui_menu_entry_t *mentry1 = NULL; 560 ui_menu_entry_t *mentry2 = NULL; 561 ui_menu_entry_t *mentry3 = NULL; 562 gfx_rect_t prect; 563 errno_t rc; 564 565 rc = ui_create_disp(NULL, &ui); 566 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 567 568 ui_wnd_params_init(¶ms); 569 params.caption = "Hello"; 570 571 rc = ui_window_create(ui, ¶ms, &window); 572 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 573 PCUT_ASSERT_NOT_NULL(window); 574 575 rc = ui_menu_bar_create(ui, window, &mbar); 576 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 577 PCUT_ASSERT_NOT_NULL(mbar); 578 579 rc = ui_menu_create(mbar, "Test", &menu); 580 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 581 PCUT_ASSERT_NOT_NULL(menu); 582 583 rc = ui_menu_entry_create(menu, "Foo", "F1", &mentry1); 584 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 585 PCUT_ASSERT_NOT_NULL(mentry1); 586 587 rc = ui_menu_entry_sep_create(menu, &mentry2); 588 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 589 PCUT_ASSERT_NOT_NULL(mentry2); 590 591 rc = ui_menu_entry_create(menu, "Bar", "F2", &mentry3); 592 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 593 PCUT_ASSERT_NOT_NULL(mentry3); 594 595 prect.p0.x = 0; 596 prect.p0.y = 0; 597 prect.p1.x = 0; 598 prect.p1.y = 0; 599 600 /* Menu needs to be open to be able to move around it */ 601 rc = ui_menu_open(menu, &prect); 602 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 603 604 /* When menu is open, the first entry is selected */ 605 PCUT_ASSERT_EQUALS(mentry1, menu->selected); 606 607 ui_menu_up(menu); 608 609 /* Now we've wrapped around to the last entry */ 610 PCUT_ASSERT_EQUALS(mentry3, menu->selected); 611 612 ui_menu_up(menu); 613 614 /* mentry2 is a separator and was skipped */ 615 PCUT_ASSERT_EQUALS(mentry1, menu->selected); 616 617 ui_menu_bar_destroy(mbar); 618 ui_window_destroy(window); 619 ui_destroy(ui); 620 } 621 622 /** ui_menu_down() with empty menu does nothing */ 623 PCUT_TEST(down_empty) 624 { 625 ui_t *ui = NULL; 626 ui_window_t *window = NULL; 627 ui_wnd_params_t params; 628 ui_menu_bar_t *mbar = NULL; 629 ui_menu_t *menu = NULL; 630 gfx_rect_t prect; 631 errno_t rc; 632 633 rc = ui_create_disp(NULL, &ui); 634 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 635 636 ui_wnd_params_init(¶ms); 637 params.caption = "Hello"; 638 639 rc = ui_window_create(ui, ¶ms, &window); 640 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 641 PCUT_ASSERT_NOT_NULL(window); 642 643 rc = ui_menu_bar_create(ui, window, &mbar); 644 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 645 PCUT_ASSERT_NOT_NULL(mbar); 646 647 rc = ui_menu_create(mbar, "Test", &menu); 648 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 649 PCUT_ASSERT_NOT_NULL(menu); 650 651 prect.p0.x = 0; 652 prect.p0.y = 0; 653 prect.p1.x = 0; 654 prect.p1.y = 0; 655 656 /* Menu needs to be open to be able to move around it */ 657 rc = ui_menu_open(menu, &prect); 658 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 659 660 ui_menu_down(menu); 661 662 ui_menu_bar_destroy(mbar); 663 ui_window_destroy(window); 664 ui_destroy(ui); 665 } 666 667 /** ui_menu_down() moves one entry down, skips separators, wraps around */ 668 PCUT_TEST(down) 669 { 670 ui_t *ui = NULL; 671 ui_window_t *window = NULL; 672 ui_wnd_params_t params; 673 ui_menu_bar_t *mbar = NULL; 674 ui_menu_t *menu = NULL; 675 ui_menu_entry_t *mentry1 = NULL; 676 ui_menu_entry_t *mentry2 = NULL; 677 ui_menu_entry_t *mentry3 = NULL; 678 gfx_rect_t prect; 679 errno_t rc; 680 681 rc = ui_create_disp(NULL, &ui); 682 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 683 684 ui_wnd_params_init(¶ms); 685 params.caption = "Hello"; 686 687 rc = ui_window_create(ui, ¶ms, &window); 688 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 689 PCUT_ASSERT_NOT_NULL(window); 690 691 rc = ui_menu_bar_create(ui, window, &mbar); 692 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 693 PCUT_ASSERT_NOT_NULL(mbar); 694 695 rc = ui_menu_create(mbar, "Test", &menu); 696 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 697 PCUT_ASSERT_NOT_NULL(menu); 698 699 rc = ui_menu_entry_create(menu, "Foo", "F1", &mentry1); 700 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 701 PCUT_ASSERT_NOT_NULL(mentry1); 702 703 rc = ui_menu_entry_sep_create(menu, &mentry2); 704 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 705 PCUT_ASSERT_NOT_NULL(mentry2); 706 707 rc = ui_menu_entry_create(menu, "Bar", "F2", &mentry3); 708 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 709 PCUT_ASSERT_NOT_NULL(mentry3); 710 711 prect.p0.x = 0; 712 prect.p0.y = 0; 713 prect.p1.x = 0; 714 prect.p1.y = 0; 715 716 /* Menu needs to be open to be able to move around it */ 717 rc = ui_menu_open(menu, &prect); 718 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 719 720 /* When menu is open, the first entry is selected */ 721 PCUT_ASSERT_EQUALS(mentry1, menu->selected); 722 723 ui_menu_down(menu); 724 725 /* mentry2 is a separator and was skipped */ 726 PCUT_ASSERT_EQUALS(mentry3, menu->selected); 727 728 ui_menu_up(menu); 729 730 /* Now we've wrapped around to the first entry */ 731 PCUT_ASSERT_EQUALS(mentry1, menu->selected); 352 732 353 733 ui_menu_bar_destroy(mbar);
Note:
See TracChangeset
for help on using the changeset viewer.