Changeset 7cf5ddb in mainline for uspace/lib/ui/test/filelist.c
- Timestamp:
- 2023-03-08T18:21:22Z (14 months ago)
- Branches:
- master, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 42c2e65, 72ac106
- Parents:
- bea6233
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/ui/test/filelist.c
rbea6233 r7cf5ddb 1 1 /* 2 * Copyright (c) 202 2Jiri Svoboda2 * Copyright (c) 2023 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 37 37 #include <vfs/vfs.h> 38 38 #include "../private/filelist.h" 39 #include "../private/list.h" 39 40 40 41 PCUT_INIT; … … 117 118 } 118 119 119 /** ui_file_list_entry_height() gives the correct height */120 PCUT_TEST(entry_height)121 {122 ui_t *ui;123 ui_window_t *window;124 ui_wnd_params_t params;125 ui_file_list_t *flist;126 errno_t rc;127 gfx_coord_t height;128 129 rc = ui_create_disp(NULL, &ui);130 PCUT_ASSERT_ERRNO_VAL(EOK, rc);131 132 ui_wnd_params_init(¶ms);133 params.caption = "Test";134 135 rc = ui_window_create(ui, ¶ms, &window);136 PCUT_ASSERT_ERRNO_VAL(EOK, rc);137 138 rc = ui_file_list_create(window, true, &flist);139 PCUT_ASSERT_ERRNO_VAL(EOK, rc);140 141 /* Font height is 13, padding: 2 (top) + 2 (bottom) */142 height = ui_file_list_entry_height(flist);143 PCUT_ASSERT_INT_EQUALS(17, height);144 145 ui_file_list_destroy(flist);146 ui_window_destroy(window);147 ui_destroy(ui);148 }149 150 /** Test ui_file_list_entry_paint() */151 PCUT_TEST(entry_paint)152 {153 ui_t *ui;154 ui_window_t *window;155 ui_wnd_params_t params;156 ui_file_list_t *flist;157 ui_file_list_entry_attr_t attr;158 errno_t rc;159 160 rc = ui_create_disp(NULL, &ui);161 PCUT_ASSERT_ERRNO_VAL(EOK, rc);162 163 ui_wnd_params_init(¶ms);164 params.caption = "Test";165 166 rc = ui_window_create(ui, ¶ms, &window);167 PCUT_ASSERT_ERRNO_VAL(EOK, rc);168 169 rc = ui_file_list_create(window, true, &flist);170 PCUT_ASSERT_ERRNO_VAL(EOK, rc);171 172 ui_file_list_entry_attr_init(&attr);173 attr.name = "a";174 attr.size = 1;175 176 rc = ui_file_list_entry_append(flist, &attr);177 PCUT_ASSERT_ERRNO_VAL(EOK, rc);178 179 rc = ui_file_list_entry_paint(ui_file_list_first(flist), 0);180 PCUT_ASSERT_ERRNO_VAL(EOK, rc);181 182 ui_file_list_destroy(flist);183 ui_window_destroy(window);184 ui_destroy(ui);185 }186 187 120 /** Test ui_file_list_paint() */ 188 121 PCUT_TEST(paint) … … 238 171 control = ui_file_list_ctl(flist); 239 172 PCUT_ASSERT_NOT_NULL(control); 240 241 ui_file_list_destroy(flist);242 ui_window_destroy(window);243 ui_destroy(ui);244 }245 246 /** Test ui_file_list_kbd_event() */247 PCUT_TEST(kbd_event)248 {249 ui_t *ui;250 ui_window_t *window;251 ui_wnd_params_t params;252 ui_file_list_t *flist;253 ui_evclaim_t claimed;254 kbd_event_t event;255 errno_t rc;256 257 /* Active file list should claim events */258 259 rc = ui_create_disp(NULL, &ui);260 PCUT_ASSERT_ERRNO_VAL(EOK, rc);261 262 ui_wnd_params_init(¶ms);263 params.caption = "Test";264 265 rc = ui_window_create(ui, ¶ms, &window);266 PCUT_ASSERT_ERRNO_VAL(EOK, rc);267 268 rc = ui_file_list_create(window, true, &flist);269 PCUT_ASSERT_ERRNO_VAL(EOK, rc);270 271 event.type = KEY_PRESS;272 event.key = KC_ESCAPE;273 event.mods = 0;274 event.c = '\0';275 276 claimed = ui_file_list_kbd_event(flist, &event);277 PCUT_ASSERT_EQUALS(ui_claimed, claimed);278 279 ui_file_list_destroy(flist);280 281 /* Inactive file list should not claim events */282 283 rc = ui_create_disp(NULL, &ui);284 PCUT_ASSERT_ERRNO_VAL(EOK, rc);285 286 ui_wnd_params_init(¶ms);287 params.caption = "Test";288 289 rc = ui_window_create(ui, ¶ms, &window);290 PCUT_ASSERT_ERRNO_VAL(EOK, rc);291 292 rc = ui_file_list_create(window, false, &flist);293 PCUT_ASSERT_ERRNO_VAL(EOK, rc);294 295 event.type = KEY_PRESS;296 event.key = KC_ESCAPE;297 event.mods = 0;298 event.c = '\0';299 300 claimed = ui_file_list_kbd_event(flist, &event);301 PCUT_ASSERT_EQUALS(ui_unclaimed, claimed);302 303 ui_file_list_destroy(flist);304 ui_window_destroy(window);305 ui_destroy(ui);306 }307 308 /** Test ui_file_list_pos_event() */309 PCUT_TEST(pos_event)310 {311 ui_t *ui;312 ui_window_t *window;313 ui_wnd_params_t params;314 ui_file_list_t *flist;315 ui_evclaim_t claimed;316 pos_event_t event;317 gfx_rect_t rect;318 ui_file_list_entry_attr_t attr;319 errno_t rc;320 321 rc = ui_create_disp(NULL, &ui);322 PCUT_ASSERT_ERRNO_VAL(EOK, rc);323 324 ui_wnd_params_init(¶ms);325 params.caption = "Test";326 327 rc = ui_window_create(ui, ¶ms, &window);328 PCUT_ASSERT_ERRNO_VAL(EOK, rc);329 330 rc = ui_file_list_create(window, true, &flist);331 PCUT_ASSERT_ERRNO_VAL(EOK, rc);332 333 rect.p0.x = 10;334 rect.p0.y = 20;335 rect.p1.x = 50;336 rect.p1.y = 220;337 338 ui_file_list_set_rect(flist, &rect);339 340 ui_file_list_entry_attr_init(&attr);341 attr.name = "a";342 attr.size = 1;343 rc = ui_file_list_entry_append(flist, &attr);344 PCUT_ASSERT_ERRNO_VAL(EOK, rc);345 346 attr.name = "b";347 attr.size = 2;348 rc = ui_file_list_entry_append(flist, &attr);349 PCUT_ASSERT_ERRNO_VAL(EOK, rc);350 351 attr.name = "c";352 attr.size = 3;353 rc = ui_file_list_entry_append(flist, &attr);354 PCUT_ASSERT_ERRNO_VAL(EOK, rc);355 356 flist->cursor = ui_file_list_first(flist);357 flist->cursor_idx = 0;358 flist->page = ui_file_list_first(flist);359 flist->page_idx = 0;360 361 event.pos_id = 0;362 event.type = POS_PRESS;363 event.btn_num = 1;364 365 /* Clicking on the middle entry should select it */366 event.hpos = 20;367 event.vpos = 40;368 369 claimed = ui_file_list_pos_event(flist, &event);370 PCUT_ASSERT_EQUALS(ui_claimed, claimed);371 372 PCUT_ASSERT_NOT_NULL(flist->cursor);373 PCUT_ASSERT_STR_EQUALS("b", flist->cursor->name);374 PCUT_ASSERT_INT_EQUALS(2, flist->cursor->size);375 376 /* Clicking on the top edge should do a page-up */377 event.hpos = 20;378 event.vpos = 20;379 claimed = ui_file_list_pos_event(flist, &event);380 PCUT_ASSERT_EQUALS(ui_claimed, claimed);381 382 PCUT_ASSERT_NOT_NULL(flist->cursor);383 PCUT_ASSERT_STR_EQUALS("a", flist->cursor->name);384 PCUT_ASSERT_INT_EQUALS(1, flist->cursor->size);385 173 386 174 ui_file_list_destroy(flist); … … 417 205 418 206 ui_file_list_set_rect(flist, &rect); 419 PCUT_ASSERT_INT_EQUALS(rect.p0.x, flist->rect.p0.x); 420 PCUT_ASSERT_INT_EQUALS(rect.p0.y, flist->rect.p0.y); 421 PCUT_ASSERT_INT_EQUALS(rect.p1.x, flist->rect.p1.x); 422 PCUT_ASSERT_INT_EQUALS(rect.p1.y, flist->rect.p1.y); 423 424 ui_file_list_destroy(flist); 425 ui_window_destroy(window); 426 ui_destroy(ui); 427 } 428 429 /** ui_file_list_page_size() returns correct size */ 430 PCUT_TEST(page_size) 431 { 432 ui_t *ui; 433 ui_window_t *window; 434 ui_wnd_params_t params; 435 ui_file_list_t *flist; 436 gfx_rect_t rect; 437 errno_t rc; 438 439 rc = ui_create_disp(NULL, &ui); 440 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 441 442 ui_wnd_params_init(¶ms); 443 params.caption = "Test"; 444 445 rc = ui_window_create(ui, ¶ms, &window); 446 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 447 448 rc = ui_file_list_create(window, true, &flist); 449 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 450 451 rect.p0.x = 10; 452 rect.p0.y = 20; 453 rect.p1.x = 50; 454 rect.p1.y = 220; 455 456 ui_file_list_set_rect(flist, &rect); 457 458 /* NOTE If page size changes, we have problems elsewhere in the tests */ 459 PCUT_ASSERT_INT_EQUALS(11, ui_file_list_page_size(flist)); 460 461 ui_file_list_destroy(flist); 462 ui_window_destroy(window); 463 ui_destroy(ui); 464 } 465 466 /** ui_file_list_inside_rect() gives correct interior rectangle */ 467 PCUT_TEST(inside_rect) 468 { 469 ui_t *ui; 470 ui_window_t *window; 471 ui_wnd_params_t params; 472 ui_file_list_t *flist; 473 gfx_rect_t rect; 474 gfx_rect_t irect; 475 errno_t rc; 476 477 rc = ui_create_disp(NULL, &ui); 478 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 479 480 ui_wnd_params_init(¶ms); 481 params.caption = "Test"; 482 483 rc = ui_window_create(ui, ¶ms, &window); 484 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 485 486 rc = ui_file_list_create(window, true, &flist); 487 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 488 489 rect.p0.x = 10; 490 rect.p0.y = 20; 491 rect.p1.x = 50; 492 rect.p1.y = 220; 493 494 ui_file_list_set_rect(flist, &rect); 495 496 ui_file_list_inside_rect(flist, &irect); 497 PCUT_ASSERT_INT_EQUALS(10 + 2, irect.p0.x); 498 PCUT_ASSERT_INT_EQUALS(20 + 2, irect.p0.y); 499 PCUT_ASSERT_INT_EQUALS(50 - 2 - 23, irect.p1.x); 500 PCUT_ASSERT_INT_EQUALS(220 - 2, irect.p1.y); 501 502 ui_file_list_destroy(flist); 503 ui_window_destroy(window); 504 ui_destroy(ui); 505 } 506 507 /** ui_file_list_scrollbar_rect() gives correct scrollbar rectangle */ 508 PCUT_TEST(scrollbar_rect) 509 { 510 ui_t *ui; 511 ui_window_t *window; 512 ui_wnd_params_t params; 513 ui_file_list_t *flist; 514 gfx_rect_t rect; 515 gfx_rect_t srect; 516 errno_t rc; 517 518 rc = ui_create_disp(NULL, &ui); 519 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 520 521 ui_wnd_params_init(¶ms); 522 params.caption = "Test"; 523 524 rc = ui_window_create(ui, ¶ms, &window); 525 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 526 527 rc = ui_file_list_create(window, true, &flist); 528 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 529 530 rect.p0.x = 10; 531 rect.p0.y = 20; 532 rect.p1.x = 50; 533 rect.p1.y = 220; 534 535 ui_file_list_set_rect(flist, &rect); 536 537 ui_file_list_scrollbar_rect(flist, &srect); 538 PCUT_ASSERT_INT_EQUALS(50 - 2 - 23, srect.p0.x); 539 PCUT_ASSERT_INT_EQUALS(20 + 2, srect.p0.y); 540 PCUT_ASSERT_INT_EQUALS(50 - 2, srect.p1.x); 541 PCUT_ASSERT_INT_EQUALS(220 - 2, srect.p1.y); 542 543 ui_file_list_destroy(flist); 544 ui_window_destroy(window); 545 ui_destroy(ui); 546 } 547 548 /** ui_file_list_scrollbar_update() updates scrollbar position */ 549 PCUT_TEST(scrollbar_update) 550 { 551 ui_t *ui; 552 ui_window_t *window; 553 ui_wnd_params_t params; 554 ui_file_list_t *flist; 555 gfx_rect_t rect; 207 PCUT_ASSERT_INT_EQUALS(rect.p0.x, flist->list->rect.p0.x); 208 PCUT_ASSERT_INT_EQUALS(rect.p0.y, flist->list->rect.p0.y); 209 PCUT_ASSERT_INT_EQUALS(rect.p1.x, flist->list->rect.p1.x); 210 PCUT_ASSERT_INT_EQUALS(rect.p1.y, flist->list->rect.p1.y); 211 212 ui_file_list_destroy(flist); 213 ui_window_destroy(window); 214 ui_destroy(ui); 215 } 216 217 /** ui_file_list_is_active() returns file list activity state */ 218 PCUT_TEST(is_active) 219 { 220 ui_t *ui; 221 ui_window_t *window; 222 ui_wnd_params_t params; 223 ui_file_list_t *flist; 224 errno_t rc; 225 226 rc = ui_create_disp(NULL, &ui); 227 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 228 229 ui_wnd_params_init(¶ms); 230 params.caption = "Test"; 231 232 rc = ui_window_create(ui, ¶ms, &window); 233 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 234 235 rc = ui_file_list_create(window, true, &flist); 236 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 237 PCUT_ASSERT_TRUE(ui_file_list_is_active(flist)); 238 ui_file_list_destroy(flist); 239 240 rc = ui_file_list_create(window, false, &flist); 241 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 242 PCUT_ASSERT_FALSE(ui_file_list_is_active(flist)); 243 ui_file_list_destroy(flist); 244 ui_window_destroy(window); 245 ui_destroy(ui); 246 } 247 248 /** ui_file_list_activate() activates file list */ 249 PCUT_TEST(activate) 250 { 251 ui_t *ui; 252 ui_window_t *window; 253 ui_wnd_params_t params; 254 ui_file_list_t *flist; 255 errno_t rc; 256 257 rc = ui_create_disp(NULL, &ui); 258 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 259 260 ui_wnd_params_init(¶ms); 261 params.caption = "Test"; 262 263 rc = ui_window_create(ui, ¶ms, &window); 264 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 265 266 rc = ui_file_list_create(window, false, &flist); 267 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 268 269 PCUT_ASSERT_FALSE(ui_file_list_is_active(flist)); 270 rc = ui_file_list_activate(flist); 271 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 272 PCUT_ASSERT_TRUE(ui_file_list_is_active(flist)); 273 274 ui_file_list_destroy(flist); 275 ui_window_destroy(window); 276 ui_destroy(ui); 277 } 278 279 /** ui_file_list_deactivate() deactivates file list */ 280 PCUT_TEST(deactivate) 281 { 282 ui_t *ui; 283 ui_window_t *window; 284 ui_wnd_params_t params; 285 ui_file_list_t *flist; 286 errno_t rc; 287 288 rc = ui_create_disp(NULL, &ui); 289 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 290 291 ui_wnd_params_init(¶ms); 292 params.caption = "Test"; 293 294 rc = ui_window_create(ui, ¶ms, &window); 295 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 296 297 rc = ui_file_list_create(window, true, &flist); 298 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 299 300 PCUT_ASSERT_TRUE(ui_file_list_is_active(flist)); 301 ui_file_list_deactivate(flist); 302 PCUT_ASSERT_FALSE(ui_file_list_is_active(flist)); 303 304 ui_file_list_destroy(flist); 305 ui_window_destroy(window); 306 ui_destroy(ui); 307 } 308 309 /** ui_file_list_entry_append() appends new entry */ 310 PCUT_TEST(entry_append) 311 { 312 ui_t *ui; 313 ui_window_t *window; 314 ui_wnd_params_t params; 315 ui_file_list_t *flist; 556 316 ui_file_list_entry_attr_t attr; 317 errno_t rc; 318 319 rc = ui_create_disp(NULL, &ui); 320 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 321 322 ui_wnd_params_init(¶ms); 323 params.caption = "Test"; 324 325 rc = ui_window_create(ui, ¶ms, &window); 326 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 327 328 rc = ui_file_list_create(window, true, &flist); 329 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 330 331 ui_file_list_entry_attr_init(&attr); 332 333 attr.name = "a"; 334 attr.size = 1; 335 rc = ui_file_list_entry_append(flist, &attr); 336 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 337 338 PCUT_ASSERT_INT_EQUALS(1, ui_list_entries_cnt(flist->list)); 339 340 attr.name = "b"; 341 attr.size = 2; 342 rc = ui_file_list_entry_append(flist, &attr); 343 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 344 345 PCUT_ASSERT_INT_EQUALS(2, ui_list_entries_cnt(flist->list)); 346 347 ui_file_list_destroy(flist); 348 ui_window_destroy(window); 349 ui_destroy(ui); 350 } 351 352 /** ui_file_list_entry_delete() deletes entry */ 353 PCUT_TEST(entry_delete) 354 { 355 ui_t *ui; 356 ui_window_t *window; 357 ui_wnd_params_t params; 358 ui_file_list_t *flist; 557 359 ui_file_list_entry_t *entry; 558 gfx_coord_t pos; 559 gfx_coord_t move_len; 560 errno_t rc; 561 562 rc = ui_create_disp(NULL, &ui); 563 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 564 565 ui_wnd_params_init(¶ms); 566 params.caption = "Test"; 567 568 rc = ui_window_create(ui, ¶ms, &window); 569 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 570 571 rc = ui_file_list_create(window, true, &flist); 572 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 573 574 rect.p0.x = 0; 575 rect.p0.y = 0; 576 rect.p1.x = 50; 577 rect.p1.y = 38; 578 579 ui_file_list_set_rect(flist, &rect); 360 ui_file_list_entry_attr_t attr; 361 errno_t rc; 362 363 rc = ui_create_disp(NULL, &ui); 364 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 365 366 ui_wnd_params_init(¶ms); 367 params.caption = "Test"; 368 369 rc = ui_window_create(ui, ¶ms, &window); 370 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 371 372 rc = ui_file_list_create(window, true, &flist); 373 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 374 375 attr.name = "a"; 376 attr.size = 1; 377 rc = ui_file_list_entry_append(flist, &attr); 378 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 379 380 attr.name = "b"; 381 attr.size = 2; 382 rc = ui_file_list_entry_append(flist, &attr); 383 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 384 385 PCUT_ASSERT_INT_EQUALS(2, ui_list_entries_cnt(flist->list)); 386 387 entry = ui_file_list_first(flist); 388 ui_file_list_entry_delete(entry); 389 390 PCUT_ASSERT_INT_EQUALS(1, ui_list_entries_cnt(flist->list)); 391 392 entry = ui_file_list_first(flist); 393 ui_file_list_entry_delete(entry); 394 395 PCUT_ASSERT_INT_EQUALS(0, ui_list_entries_cnt(flist->list)); 396 397 ui_file_list_destroy(flist); 398 ui_window_destroy(window); 399 ui_destroy(ui); 400 } 401 402 /** ui_file_list_clear_entries() removes all entries from file list */ 403 PCUT_TEST(clear_entries) 404 { 405 ui_t *ui; 406 ui_window_t *window; 407 ui_wnd_params_t params; 408 ui_file_list_t *flist; 409 ui_file_list_entry_attr_t attr; 410 errno_t rc; 411 412 rc = ui_create_disp(NULL, &ui); 413 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 414 415 ui_wnd_params_init(¶ms); 416 params.caption = "Test"; 417 418 rc = ui_window_create(ui, ¶ms, &window); 419 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 420 421 rc = ui_file_list_create(window, true, &flist); 422 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 580 423 581 424 ui_file_list_entry_attr_init(&attr); … … 585 428 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 586 429 587 attr.name = "b";588 attr.size = 2;589 rc = ui_file_list_entry_append(flist, &attr);590 PCUT_ASSERT_ERRNO_VAL(EOK, rc);591 592 attr.name = "c";593 attr.size = 3;594 rc = ui_file_list_entry_append(flist, &attr);595 PCUT_ASSERT_ERRNO_VAL(EOK, rc);596 597 entry = ui_file_list_next(ui_file_list_first(flist));598 599 flist->cursor = entry;600 flist->cursor_idx = 1;601 flist->page = entry;602 flist->page_idx = 1;603 604 ui_file_list_scrollbar_update(flist);605 606 /* Now scrollbar thumb should be all the way down */607 move_len = ui_scrollbar_move_length(flist->scrollbar);608 pos = ui_scrollbar_get_pos(flist->scrollbar);609 PCUT_ASSERT_INT_EQUALS(move_len, pos);610 611 ui_file_list_destroy(flist);612 ui_window_destroy(window);613 ui_destroy(ui);614 }615 616 /** ui_file_list_is_active() returns file list activity state */617 PCUT_TEST(is_active)618 {619 ui_t *ui;620 ui_window_t *window;621 ui_wnd_params_t params;622 ui_file_list_t *flist;623 errno_t rc;624 625 rc = ui_create_disp(NULL, &ui);626 PCUT_ASSERT_ERRNO_VAL(EOK, rc);627 628 ui_wnd_params_init(¶ms);629 params.caption = "Test";630 631 rc = ui_window_create(ui, ¶ms, &window);632 PCUT_ASSERT_ERRNO_VAL(EOK, rc);633 634 rc = ui_file_list_create(window, true, &flist);635 PCUT_ASSERT_ERRNO_VAL(EOK, rc);636 PCUT_ASSERT_TRUE(ui_file_list_is_active(flist));637 ui_file_list_destroy(flist);638 639 rc = ui_file_list_create(window, false, &flist);640 PCUT_ASSERT_ERRNO_VAL(EOK, rc);641 PCUT_ASSERT_FALSE(ui_file_list_is_active(flist));642 ui_file_list_destroy(flist);643 ui_window_destroy(window);644 ui_destroy(ui);645 }646 647 /** ui_file_list_activate() activates file list */648 PCUT_TEST(activate)649 {650 ui_t *ui;651 ui_window_t *window;652 ui_wnd_params_t params;653 ui_file_list_t *flist;654 errno_t rc;655 656 rc = ui_create_disp(NULL, &ui);657 PCUT_ASSERT_ERRNO_VAL(EOK, rc);658 659 ui_wnd_params_init(¶ms);660 params.caption = "Test";661 662 rc = ui_window_create(ui, ¶ms, &window);663 PCUT_ASSERT_ERRNO_VAL(EOK, rc);664 665 rc = ui_file_list_create(window, false, &flist);666 PCUT_ASSERT_ERRNO_VAL(EOK, rc);667 668 PCUT_ASSERT_FALSE(ui_file_list_is_active(flist));669 rc = ui_file_list_activate(flist);670 PCUT_ASSERT_ERRNO_VAL(EOK, rc);671 PCUT_ASSERT_TRUE(ui_file_list_is_active(flist));672 673 ui_file_list_destroy(flist);674 ui_window_destroy(window);675 ui_destroy(ui);676 }677 678 /** ui_file_list_deactivate() deactivates file list */679 PCUT_TEST(deactivate)680 {681 ui_t *ui;682 ui_window_t *window;683 ui_wnd_params_t params;684 ui_file_list_t *flist;685 errno_t rc;686 687 rc = ui_create_disp(NULL, &ui);688 PCUT_ASSERT_ERRNO_VAL(EOK, rc);689 690 ui_wnd_params_init(¶ms);691 params.caption = "Test";692 693 rc = ui_window_create(ui, ¶ms, &window);694 PCUT_ASSERT_ERRNO_VAL(EOK, rc);695 696 rc = ui_file_list_create(window, true, &flist);697 PCUT_ASSERT_ERRNO_VAL(EOK, rc);698 699 PCUT_ASSERT_TRUE(ui_file_list_is_active(flist));700 ui_file_list_deactivate(flist);701 PCUT_ASSERT_FALSE(ui_file_list_is_active(flist));702 703 ui_file_list_destroy(flist);704 ui_window_destroy(window);705 ui_destroy(ui);706 }707 708 /** ui_file_list_entry_append() appends new entry */709 PCUT_TEST(entry_append)710 {711 ui_t *ui;712 ui_window_t *window;713 ui_wnd_params_t params;714 ui_file_list_t *flist;715 ui_file_list_entry_attr_t attr;716 errno_t rc;717 718 rc = ui_create_disp(NULL, &ui);719 PCUT_ASSERT_ERRNO_VAL(EOK, rc);720 721 ui_wnd_params_init(¶ms);722 params.caption = "Test";723 724 rc = ui_window_create(ui, ¶ms, &window);725 PCUT_ASSERT_ERRNO_VAL(EOK, rc);726 727 rc = ui_file_list_create(window, true, &flist);728 PCUT_ASSERT_ERRNO_VAL(EOK, rc);729 730 ui_file_list_entry_attr_init(&attr);731 732 attr.name = "a";733 attr.size = 1;734 rc = ui_file_list_entry_append(flist, &attr);735 PCUT_ASSERT_ERRNO_VAL(EOK, rc);736 737 PCUT_ASSERT_INT_EQUALS(1, list_count(&flist->entries));738 739 attr.name = "b";740 attr.size = 2;741 rc = ui_file_list_entry_append(flist, &attr);742 PCUT_ASSERT_ERRNO_VAL(EOK, rc);743 744 PCUT_ASSERT_INT_EQUALS(2, list_count(&flist->entries));745 746 ui_file_list_destroy(flist);747 ui_window_destroy(window);748 ui_destroy(ui);749 }750 751 /** ui_file_list_entry_delete() deletes entry */752 PCUT_TEST(entry_delete)753 {754 ui_t *ui;755 ui_window_t *window;756 ui_wnd_params_t params;757 ui_file_list_t *flist;758 ui_file_list_entry_t *entry;759 ui_file_list_entry_attr_t attr;760 errno_t rc;761 762 rc = ui_create_disp(NULL, &ui);763 PCUT_ASSERT_ERRNO_VAL(EOK, rc);764 765 ui_wnd_params_init(¶ms);766 params.caption = "Test";767 768 rc = ui_window_create(ui, ¶ms, &window);769 PCUT_ASSERT_ERRNO_VAL(EOK, rc);770 771 rc = ui_file_list_create(window, true, &flist);772 PCUT_ASSERT_ERRNO_VAL(EOK, rc);773 774 attr.name = "a";775 attr.size = 1;776 rc = ui_file_list_entry_append(flist, &attr);777 PCUT_ASSERT_ERRNO_VAL(EOK, rc);778 779 attr.name = "b";780 attr.size = 2;781 rc = ui_file_list_entry_append(flist, &attr);782 PCUT_ASSERT_ERRNO_VAL(EOK, rc);783 784 PCUT_ASSERT_INT_EQUALS(2, list_count(&flist->entries));785 786 entry = ui_file_list_first(flist);787 ui_file_list_entry_delete(entry);788 789 PCUT_ASSERT_INT_EQUALS(1, list_count(&flist->entries));790 791 entry = ui_file_list_first(flist);792 ui_file_list_entry_delete(entry);793 794 PCUT_ASSERT_INT_EQUALS(0, list_count(&flist->entries));795 796 ui_file_list_destroy(flist);797 ui_window_destroy(window);798 ui_destroy(ui);799 }800 801 /** ui_file_list_clear_entries() removes all entries from file list */802 PCUT_TEST(clear_entries)803 {804 ui_t *ui;805 ui_window_t *window;806 ui_wnd_params_t params;807 ui_file_list_t *flist;808 ui_file_list_entry_attr_t attr;809 errno_t rc;810 811 rc = ui_create_disp(NULL, &ui);812 PCUT_ASSERT_ERRNO_VAL(EOK, rc);813 814 ui_wnd_params_init(¶ms);815 params.caption = "Test";816 817 rc = ui_window_create(ui, ¶ms, &window);818 PCUT_ASSERT_ERRNO_VAL(EOK, rc);819 820 rc = ui_file_list_create(window, true, &flist);821 PCUT_ASSERT_ERRNO_VAL(EOK, rc);822 823 ui_file_list_entry_attr_init(&attr);824 attr.name = "a";825 attr.size = 1;826 rc = ui_file_list_entry_append(flist, &attr);827 PCUT_ASSERT_ERRNO_VAL(EOK, rc);828 829 430 attr.name = "a"; 830 431 attr.size = 2; … … 832 433 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 833 434 834 PCUT_ASSERT_INT_EQUALS(2, list_count(&flist->entries));435 PCUT_ASSERT_INT_EQUALS(2, ui_list_entries_cnt(flist->list)); 835 436 836 437 ui_file_list_clear_entries(flist); 837 PCUT_ASSERT_INT_EQUALS(0, list_count(&flist->entries));438 PCUT_ASSERT_INT_EQUALS(0, ui_list_entries_cnt(flist->list)); 838 439 839 440 ui_file_list_destroy(flist); … … 892 493 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 893 494 894 PCUT_ASSERT_INT_EQUALS(2, list_count(&flist->entries));495 PCUT_ASSERT_INT_EQUALS(2, ui_list_entries_cnt(flist->list)); 895 496 896 497 entry = ui_file_list_first(flist); … … 979 580 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 980 581 981 PCUT_ASSERT_NOT_NULL( flist->cursor);982 PCUT_ASSERT_STR_EQUALS("b", flist->cursor->name);582 PCUT_ASSERT_NOT_NULL(ui_file_list_get_cursor(flist)); 583 PCUT_ASSERT_STR_EQUALS("b", ui_file_list_get_cursor(flist)->name); 983 584 984 585 ui_file_list_destroy(flist); … … 1064 665 } 1065 666 1066 /** ui_file_list_ entry_ptr_cmp compares two indirectly referencedentries */1067 PCUT_TEST( entry_ptr_cmp)667 /** ui_file_list_list_compare compares two file list entries */ 668 PCUT_TEST(list_compare) 1068 669 { 1069 670 ui_t *ui; … … 1106 707 1107 708 /* a < b */ 1108 rel = ui_file_list_ entry_ptr_cmp(&a, &b);709 rel = ui_file_list_list_compare(a->entry, b->entry); 1109 710 PCUT_ASSERT_TRUE(rel < 0); 1110 711 1111 712 /* b > a */ 1112 rel = ui_file_list_ entry_ptr_cmp(&b, &a);713 rel = ui_file_list_list_compare(b->entry, a->entry); 1113 714 PCUT_ASSERT_TRUE(rel > 0); 1114 715 1115 716 /* a == a */ 1116 rel = ui_file_list_ entry_ptr_cmp(&a, &a);717 rel = ui_file_list_list_compare(a->entry, a->entry); 1117 718 PCUT_ASSERT_INT_EQUALS(0, rel); 1118 719 … … 1120 721 ui_window_destroy(window); 1121 722 ui_destroy(ui); 723 } 724 725 /** ui_file_list_entry_attr_init() initializes file list attribute structure */ 726 PCUT_TEST(entry_attr_init) 727 { 728 ui_file_list_entry_attr_t attr; 729 730 ui_file_list_entry_attr_init(&attr); 731 PCUT_ASSERT_NULL(attr.name); 732 PCUT_ASSERT_INT_EQUALS(0, attr.size); 733 PCUT_ASSERT_EQUALS(false, attr.isdir); 734 PCUT_ASSERT_INT_EQUALS(0, attr.svc); 1122 735 } 1123 736 … … 1354 967 } 1355 968 1356 /** ui_file_list_page_nth_entry() .. */1357 PCUT_TEST(page_nth_entry)1358 {1359 ui_t *ui;1360 ui_window_t *window;1361 ui_wnd_params_t params;1362 ui_file_list_t *flist;1363 ui_file_list_entry_t *entry;1364 ui_file_list_entry_attr_t attr;1365 gfx_rect_t rect;1366 size_t idx;1367 errno_t rc;1368 1369 rc = ui_create_disp(NULL, &ui);1370 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1371 1372 ui_wnd_params_init(¶ms);1373 params.caption = "Test";1374 1375 rc = ui_window_create(ui, ¶ms, &window);1376 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1377 1378 rc = ui_file_list_create(window, true, &flist);1379 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1380 1381 ui_file_list_entry_attr_init(&attr);1382 1383 /* Add some entries */1384 attr.name = "a";1385 attr.size = 1;1386 rc = ui_file_list_entry_append(flist, &attr);1387 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1388 1389 attr.name = "b";1390 attr.size = 2;1391 rc = ui_file_list_entry_append(flist, &attr);1392 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1393 1394 attr.name = "c";1395 attr.size = 3;1396 rc = ui_file_list_entry_append(flist, &attr);1397 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1398 1399 flist->page = ui_file_list_next(ui_file_list_first(flist));1400 flist->page_idx = 1;1401 1402 rect.p0.x = 0;1403 rect.p0.y = 0;1404 rect.p1.x = 100;1405 rect.p1.y = 100;1406 ui_file_list_set_rect(flist, &rect);1407 1408 entry = ui_file_list_page_nth_entry(flist, 0, &idx);1409 PCUT_ASSERT_NOT_NULL(entry);1410 PCUT_ASSERT_STR_EQUALS("b", entry->name);1411 PCUT_ASSERT_INT_EQUALS(1, idx);1412 1413 entry = ui_file_list_page_nth_entry(flist, 1, &idx);1414 PCUT_ASSERT_NOT_NULL(entry);1415 PCUT_ASSERT_STR_EQUALS("c", entry->name);1416 PCUT_ASSERT_INT_EQUALS(2, idx);1417 1418 entry = ui_file_list_page_nth_entry(flist, 2, &idx);1419 PCUT_ASSERT_NULL(entry);1420 1421 ui_file_list_destroy(flist);1422 ui_window_destroy(window);1423 ui_destroy(ui);1424 }1425 1426 /** ui_file_list_cursor_move() moves cursor and scrolls */1427 PCUT_TEST(cursor_move)1428 {1429 ui_t *ui;1430 ui_window_t *window;1431 ui_wnd_params_t params;1432 ui_file_list_t *flist;1433 ui_file_list_entry_attr_t attr;1434 gfx_rect_t rect;1435 errno_t rc;1436 rc = ui_create_disp(NULL, &ui);1437 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1438 1439 ui_wnd_params_init(¶ms);1440 params.caption = "Test";1441 1442 rc = ui_window_create(ui, ¶ms, &window);1443 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1444 1445 rc = ui_file_list_create(window, true, &flist);1446 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1447 1448 rect.p0.x = 0;1449 rect.p0.y = 0;1450 rect.p1.x = 10;1451 rect.p1.y = 38; /* Assuming this makes page size 2 */1452 ui_file_list_set_rect(flist, &rect);1453 1454 PCUT_ASSERT_INT_EQUALS(2, ui_file_list_page_size(flist));1455 1456 /* Add tree entries (more than page size, which is 2) */1457 1458 ui_file_list_entry_attr_init(&attr);1459 1460 attr.name = "a";1461 attr.size = 1;1462 rc = ui_file_list_entry_append(flist, &attr);1463 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1464 1465 attr.name = "b";1466 attr.size = 2;1467 rc = ui_file_list_entry_append(flist, &attr);1468 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1469 1470 attr.name = "c";1471 attr.size = 3;1472 rc = ui_file_list_entry_append(flist, &attr);1473 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1474 1475 /* Cursor to the last entry and page start to the next-to-last entry */1476 flist->cursor = ui_file_list_last(flist);1477 flist->cursor_idx = 2;1478 flist->page = ui_file_list_prev(flist->cursor);1479 flist->page_idx = 1;1480 1481 /* Move cursor one entry up */1482 ui_file_list_cursor_move(flist, ui_file_list_prev(flist->cursor),1483 flist->cursor_idx - 1);1484 1485 /* Cursor and page start should now both be at the second entry */1486 PCUT_ASSERT_STR_EQUALS("b", flist->cursor->name);1487 PCUT_ASSERT_INT_EQUALS(2, flist->cursor->size);1488 PCUT_ASSERT_INT_EQUALS(1, flist->cursor_idx);1489 PCUT_ASSERT_EQUALS(flist->cursor, flist->page);1490 PCUT_ASSERT_INT_EQUALS(1, flist->page_idx);1491 1492 /* Move cursor to the first entry. This should scroll up. */1493 ui_file_list_cursor_move(flist, ui_file_list_first(flist), 0);1494 1495 /* Cursor and page start should now both be at the first entry */1496 PCUT_ASSERT_STR_EQUALS("a", flist->cursor->name);1497 PCUT_ASSERT_INT_EQUALS(1, flist->cursor->size);1498 PCUT_ASSERT_INT_EQUALS(0, flist->cursor_idx);1499 PCUT_ASSERT_EQUALS(flist->cursor, flist->page);1500 PCUT_ASSERT_INT_EQUALS(0, flist->page_idx);1501 1502 /* Move cursor to the last entry. */1503 ui_file_list_cursor_move(flist, ui_file_list_last(flist), 2);1504 1505 /* Cursor should be on the last entry and page on the next to last */1506 PCUT_ASSERT_STR_EQUALS("c", flist->cursor->name);1507 PCUT_ASSERT_INT_EQUALS(3, flist->cursor->size);1508 PCUT_ASSERT_INT_EQUALS(2, flist->cursor_idx);1509 PCUT_ASSERT_STR_EQUALS("b", flist->page->name);1510 PCUT_ASSERT_INT_EQUALS(2, flist->page->size);1511 PCUT_ASSERT_INT_EQUALS(1, flist->page_idx);1512 1513 ui_file_list_destroy(flist);1514 ui_window_destroy(window);1515 ui_destroy(ui);1516 }1517 1518 /** ui_file_list_cursor_up() moves cursor one entry up */1519 PCUT_TEST(cursor_up)1520 {1521 ui_t *ui;1522 ui_window_t *window;1523 ui_wnd_params_t params;1524 ui_file_list_t *flist;1525 ui_file_list_entry_attr_t attr;1526 gfx_rect_t rect;1527 errno_t rc;1528 rc = ui_create_disp(NULL, &ui);1529 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1530 1531 ui_wnd_params_init(¶ms);1532 params.caption = "Test";1533 1534 rc = ui_window_create(ui, ¶ms, &window);1535 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1536 1537 rc = ui_file_list_create(window, true, &flist);1538 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1539 1540 rect.p0.x = 0;1541 rect.p0.y = 0;1542 rect.p1.x = 10;1543 rect.p1.y = 38; /* Assuming this makes page size 2 */1544 ui_file_list_set_rect(flist, &rect);1545 1546 PCUT_ASSERT_INT_EQUALS(2, ui_file_list_page_size(flist));1547 1548 /* Add tree entries (more than page size, which is 2) */1549 1550 ui_file_list_entry_attr_init(&attr);1551 1552 attr.name = "a";1553 attr.size = 1;1554 rc = ui_file_list_entry_append(flist, &attr);1555 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1556 1557 attr.name = "b";1558 attr.size = 2;1559 rc = ui_file_list_entry_append(flist, &attr);1560 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1561 1562 attr.name = "c";1563 attr.size = 3;1564 rc = ui_file_list_entry_append(flist, &attr);1565 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1566 1567 /* Cursor to the last entry and page start to the next-to-last entry */1568 flist->cursor = ui_file_list_last(flist);1569 flist->cursor_idx = 2;1570 flist->page = ui_file_list_prev(flist->cursor);1571 flist->page_idx = 1;1572 1573 /* Move cursor one entry up */1574 ui_file_list_cursor_up(flist);1575 1576 /* Cursor and page start should now both be at the second entry */1577 PCUT_ASSERT_STR_EQUALS("b", flist->cursor->name);1578 PCUT_ASSERT_INT_EQUALS(2, flist->cursor->size);1579 PCUT_ASSERT_INT_EQUALS(1, flist->cursor_idx);1580 PCUT_ASSERT_EQUALS(flist->cursor, flist->page);1581 PCUT_ASSERT_INT_EQUALS(1, flist->page_idx);1582 1583 /* Move cursor one entry up. This should scroll up. */1584 ui_file_list_cursor_up(flist);1585 1586 /* Cursor and page start should now both be at the first entry */1587 PCUT_ASSERT_STR_EQUALS("a", flist->cursor->name);1588 PCUT_ASSERT_INT_EQUALS(1, flist->cursor->size);1589 PCUT_ASSERT_INT_EQUALS(0, flist->cursor_idx);1590 PCUT_ASSERT_EQUALS(flist->cursor, flist->page);1591 PCUT_ASSERT_INT_EQUALS(0, flist->page_idx);1592 1593 /* Moving further up should do nothing (we are at the top). */1594 ui_file_list_cursor_up(flist);1595 1596 /* Cursor and page start should still be at the first entry */1597 PCUT_ASSERT_STR_EQUALS("a", flist->cursor->name);1598 PCUT_ASSERT_INT_EQUALS(1, flist->cursor->size);1599 PCUT_ASSERT_INT_EQUALS(0, flist->cursor_idx);1600 PCUT_ASSERT_EQUALS(flist->cursor, flist->page);1601 PCUT_ASSERT_INT_EQUALS(0, flist->page_idx);1602 1603 ui_file_list_destroy(flist);1604 ui_window_destroy(window);1605 ui_destroy(ui);1606 }1607 1608 /** ui_file_list_cursor_down() moves cursor one entry down */1609 PCUT_TEST(cursor_down)1610 {1611 ui_t *ui;1612 ui_window_t *window;1613 ui_wnd_params_t params;1614 ui_file_list_t *flist;1615 ui_file_list_entry_attr_t attr;1616 gfx_rect_t rect;1617 errno_t rc;1618 1619 rc = ui_create_disp(NULL, &ui);1620 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1621 1622 ui_wnd_params_init(¶ms);1623 params.caption = "Test";1624 1625 rc = ui_window_create(ui, ¶ms, &window);1626 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1627 1628 rc = ui_file_list_create(window, true, &flist);1629 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1630 1631 rect.p0.x = 0;1632 rect.p0.y = 0;1633 rect.p1.x = 10;1634 rect.p1.y = 38; /* Assuming this makes page size 2 */1635 ui_file_list_set_rect(flist, &rect);1636 1637 PCUT_ASSERT_INT_EQUALS(2, ui_file_list_page_size(flist));1638 1639 /* Add tree entries (more than page size, which is 2) */1640 1641 ui_file_list_entry_attr_init(&attr);1642 1643 attr.name = "a";1644 attr.size = 1;1645 rc = ui_file_list_entry_append(flist, &attr);1646 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1647 1648 attr.name = "b";1649 attr.size = 2;1650 rc = ui_file_list_entry_append(flist, &attr);1651 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1652 1653 attr.name = "c";1654 attr.size = 3;1655 rc = ui_file_list_entry_append(flist, &attr);1656 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1657 1658 /* Cursor and page start to the first entry */1659 flist->cursor = ui_file_list_first(flist);1660 flist->cursor_idx = 0;1661 flist->page = flist->cursor;1662 flist->page_idx = 0;1663 1664 /* Move cursor one entry down */1665 ui_file_list_cursor_down(flist);1666 1667 /* Cursor should now be at the second entry, page stays the same */1668 PCUT_ASSERT_STR_EQUALS("b", flist->cursor->name);1669 PCUT_ASSERT_INT_EQUALS(2, flist->cursor->size);1670 PCUT_ASSERT_INT_EQUALS(1, flist->cursor_idx);1671 PCUT_ASSERT_EQUALS(ui_file_list_first(flist), flist->page);1672 PCUT_ASSERT_INT_EQUALS(0, flist->page_idx);1673 1674 /* Move cursor one entry down. This should scroll down. */1675 ui_file_list_cursor_down(flist);1676 1677 /* Cursor should now be at the third and page at the second entry. */1678 PCUT_ASSERT_STR_EQUALS("c", flist->cursor->name);1679 PCUT_ASSERT_INT_EQUALS(3, flist->cursor->size);1680 PCUT_ASSERT_INT_EQUALS(2, flist->cursor_idx);1681 PCUT_ASSERT_STR_EQUALS("b", flist->page->name);1682 PCUT_ASSERT_INT_EQUALS(2, flist->page->size);1683 PCUT_ASSERT_INT_EQUALS(1, flist->page_idx);1684 1685 /* Moving further down should do nothing (we are at the bottom). */1686 ui_file_list_cursor_down(flist);1687 1688 /* Cursor should still be at the third and page at the second entry. */1689 PCUT_ASSERT_STR_EQUALS("c", flist->cursor->name);1690 PCUT_ASSERT_INT_EQUALS(3, flist->cursor->size);1691 PCUT_ASSERT_INT_EQUALS(2, flist->cursor_idx);1692 PCUT_ASSERT_STR_EQUALS("b", flist->page->name);1693 PCUT_ASSERT_INT_EQUALS(2, flist->page->size);1694 PCUT_ASSERT_INT_EQUALS(1, flist->page_idx);1695 1696 ui_file_list_destroy(flist);1697 ui_window_destroy(window);1698 ui_destroy(ui);1699 }1700 1701 /** ui_file_list_cursor_top() moves cursor to the first entry */1702 PCUT_TEST(cursor_top)1703 {1704 ui_t *ui;1705 ui_window_t *window;1706 ui_wnd_params_t params;1707 ui_file_list_t *flist;1708 ui_file_list_entry_attr_t attr;1709 gfx_rect_t rect;1710 errno_t rc;1711 1712 rc = ui_create_disp(NULL, &ui);1713 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1714 1715 ui_wnd_params_init(¶ms);1716 params.caption = "Test";1717 1718 rc = ui_window_create(ui, ¶ms, &window);1719 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1720 1721 rc = ui_file_list_create(window, true, &flist);1722 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1723 1724 rect.p0.x = 0;1725 rect.p0.y = 0;1726 rect.p1.x = 10;1727 rect.p1.y = 38; /* Assuming this makes page size 2 */1728 ui_file_list_set_rect(flist, &rect);1729 1730 PCUT_ASSERT_INT_EQUALS(2, ui_file_list_page_size(flist));1731 1732 /* Add tree entries (more than page size, which is 2) */1733 1734 ui_file_list_entry_attr_init(&attr);1735 1736 attr.name = "a";1737 attr.size = 1;1738 rc = ui_file_list_entry_append(flist, &attr);1739 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1740 1741 attr.name = "b";1742 attr.size = 2;1743 rc = ui_file_list_entry_append(flist, &attr);1744 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1745 1746 attr.name = "c";1747 attr.size = 3;1748 rc = ui_file_list_entry_append(flist, &attr);1749 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1750 1751 /* Cursor to the last entry and page start to the next-to-last entry */1752 flist->cursor = ui_file_list_last(flist);1753 flist->cursor_idx = 2;1754 flist->page = ui_file_list_prev(flist->cursor);1755 flist->page_idx = 1;1756 1757 /* Move cursor to the top. This should scroll up. */1758 ui_file_list_cursor_top(flist);1759 1760 /* Cursor and page start should now both be at the first entry */1761 PCUT_ASSERT_STR_EQUALS("a", flist->cursor->name);1762 PCUT_ASSERT_INT_EQUALS(1, flist->cursor->size);1763 PCUT_ASSERT_INT_EQUALS(0, flist->cursor_idx);1764 PCUT_ASSERT_EQUALS(flist->cursor, flist->page);1765 PCUT_ASSERT_INT_EQUALS(0, flist->page_idx);1766 1767 ui_file_list_destroy(flist);1768 ui_window_destroy(window);1769 ui_destroy(ui);1770 }1771 1772 /** ui_file_list_cursor_bottom() moves cursor to the last entry */1773 PCUT_TEST(cursor_bottom)1774 {1775 ui_t *ui;1776 ui_window_t *window;1777 ui_wnd_params_t params;1778 ui_file_list_t *flist;1779 ui_file_list_entry_attr_t attr;1780 gfx_rect_t rect;1781 errno_t rc;1782 1783 rc = ui_create_disp(NULL, &ui);1784 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1785 1786 ui_wnd_params_init(¶ms);1787 params.caption = "Test";1788 1789 rc = ui_window_create(ui, ¶ms, &window);1790 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1791 1792 rc = ui_file_list_create(window, true, &flist);1793 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1794 1795 rect.p0.x = 0;1796 rect.p0.y = 0;1797 rect.p1.x = 10;1798 rect.p1.y = 38; /* Assuming this makes page size 2 */1799 ui_file_list_set_rect(flist, &rect);1800 1801 PCUT_ASSERT_INT_EQUALS(2, ui_file_list_page_size(flist));1802 1803 /* Add tree entries (more than page size, which is 2) */1804 1805 ui_file_list_entry_attr_init(&attr);1806 1807 attr.name = "a";1808 attr.size = 1;1809 rc = ui_file_list_entry_append(flist, &attr);1810 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1811 1812 attr.name = "b";1813 attr.size = 2;1814 rc = ui_file_list_entry_append(flist, &attr);1815 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1816 1817 attr.name = "c";1818 attr.size = 3;1819 rc = ui_file_list_entry_append(flist, &attr);1820 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1821 1822 /* Cursor and page start to the first entry */1823 flist->cursor = ui_file_list_first(flist);1824 flist->cursor_idx = 0;1825 flist->page = flist->cursor;1826 flist->page_idx = 0;1827 1828 /* Move cursor to the bottom. This should scroll down. */1829 ui_file_list_cursor_bottom(flist);1830 1831 /* Cursor should now be at the third and page at the second entry. */1832 PCUT_ASSERT_STR_EQUALS("c", flist->cursor->name);1833 PCUT_ASSERT_INT_EQUALS(3, flist->cursor->size);1834 PCUT_ASSERT_INT_EQUALS(2, flist->cursor_idx);1835 PCUT_ASSERT_STR_EQUALS("b", flist->page->name);1836 PCUT_ASSERT_INT_EQUALS(2, flist->page->size);1837 PCUT_ASSERT_INT_EQUALS(1, flist->page_idx);1838 1839 ui_file_list_destroy(flist);1840 ui_window_destroy(window);1841 ui_destroy(ui);1842 }1843 1844 /** ui_file_list_page_up() moves one page up */1845 PCUT_TEST(page_up)1846 {1847 ui_t *ui;1848 ui_window_t *window;1849 ui_wnd_params_t params;1850 ui_file_list_t *flist;1851 ui_file_list_entry_attr_t attr;1852 gfx_rect_t rect;1853 errno_t rc;1854 1855 rc = ui_create_disp(NULL, &ui);1856 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1857 1858 ui_wnd_params_init(¶ms);1859 params.caption = "Test";1860 1861 rc = ui_window_create(ui, ¶ms, &window);1862 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1863 1864 rc = ui_file_list_create(window, true, &flist);1865 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1866 1867 rect.p0.x = 0;1868 rect.p0.y = 0;1869 rect.p1.x = 10;1870 rect.p1.y = 38; /* Assuming this makes page size 2 */1871 ui_file_list_set_rect(flist, &rect);1872 1873 PCUT_ASSERT_INT_EQUALS(2, ui_file_list_page_size(flist));1874 1875 /* Add five entries (2 full pages, one partial) */1876 1877 ui_file_list_entry_attr_init(&attr);1878 1879 attr.name = "a";1880 attr.size = 1;1881 rc = ui_file_list_entry_append(flist, &attr);1882 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1883 1884 attr.name = "b";1885 attr.size = 2;1886 rc = ui_file_list_entry_append(flist, &attr);1887 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1888 1889 attr.name = "c";1890 attr.size = 3;1891 rc = ui_file_list_entry_append(flist, &attr);1892 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1893 1894 attr.name = "d";1895 attr.size = 4;1896 rc = ui_file_list_entry_append(flist, &attr);1897 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1898 1899 attr.name = "e";1900 attr.size = 5;1901 rc = ui_file_list_entry_append(flist, &attr);1902 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1903 1904 /* Cursor to the last entry and page start to the next-to-last entry */1905 flist->cursor = ui_file_list_last(flist);1906 flist->cursor_idx = 4;1907 flist->page = ui_file_list_prev(flist->cursor);1908 flist->page_idx = 3;1909 1910 /* Move one page up */1911 ui_file_list_page_up(flist);1912 1913 /* Page should now start at second entry and cursor at third */1914 PCUT_ASSERT_STR_EQUALS("c", flist->cursor->name);1915 PCUT_ASSERT_INT_EQUALS(3, flist->cursor->size);1916 PCUT_ASSERT_INT_EQUALS(2, flist->cursor_idx);1917 PCUT_ASSERT_STR_EQUALS("b", flist->page->name);1918 PCUT_ASSERT_INT_EQUALS(2, flist->page->size);1919 PCUT_ASSERT_INT_EQUALS(1, flist->page_idx);1920 1921 /* Move one page up again. */1922 ui_file_list_page_up(flist);1923 1924 /* Cursor and page start should now both be at the first entry */1925 PCUT_ASSERT_STR_EQUALS("a", flist->cursor->name);1926 PCUT_ASSERT_INT_EQUALS(1, flist->cursor->size);1927 PCUT_ASSERT_INT_EQUALS(0, flist->cursor_idx);1928 PCUT_ASSERT_EQUALS(flist->cursor, flist->page);1929 PCUT_ASSERT_INT_EQUALS(0, flist->page_idx);1930 1931 /* Moving further up should do nothing (we are at the top). */1932 ui_file_list_page_up(flist);1933 1934 /* Cursor and page start should still be at the first entry */1935 PCUT_ASSERT_STR_EQUALS("a", flist->cursor->name);1936 PCUT_ASSERT_INT_EQUALS(1, flist->cursor->size);1937 PCUT_ASSERT_INT_EQUALS(0, flist->cursor_idx);1938 PCUT_ASSERT_EQUALS(flist->cursor, flist->page);1939 PCUT_ASSERT_INT_EQUALS(0, flist->page_idx);1940 1941 ui_file_list_destroy(flist);1942 ui_window_destroy(window);1943 ui_destroy(ui);1944 }1945 1946 /** ui_file_list_page_up() moves one page down */1947 PCUT_TEST(page_down)1948 {1949 ui_t *ui;1950 ui_window_t *window;1951 ui_wnd_params_t params;1952 ui_file_list_t *flist;1953 ui_file_list_entry_attr_t attr;1954 gfx_rect_t rect;1955 errno_t rc;1956 1957 rc = ui_create_disp(NULL, &ui);1958 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1959 1960 ui_wnd_params_init(¶ms);1961 params.caption = "Test";1962 1963 rc = ui_window_create(ui, ¶ms, &window);1964 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1965 1966 rc = ui_file_list_create(window, true, &flist);1967 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1968 1969 rect.p0.x = 0;1970 rect.p0.y = 0;1971 rect.p1.x = 10;1972 rect.p1.y = 38; /* Assuming this makes page size 2 */1973 ui_file_list_set_rect(flist, &rect);1974 1975 PCUT_ASSERT_INT_EQUALS(2, ui_file_list_page_size(flist));1976 1977 /* Add five entries (2 full pages, one partial) */1978 1979 ui_file_list_entry_attr_init(&attr);1980 1981 attr.name = "a";1982 attr.size = 1;1983 rc = ui_file_list_entry_append(flist, &attr);1984 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1985 1986 attr.name = "b";1987 attr.size = 2;1988 rc = ui_file_list_entry_append(flist, &attr);1989 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1990 1991 attr.name = "c";1992 attr.size = 3;1993 rc = ui_file_list_entry_append(flist, &attr);1994 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1995 1996 attr.name = "d";1997 attr.size = 4;1998 rc = ui_file_list_entry_append(flist, &attr);1999 PCUT_ASSERT_ERRNO_VAL(EOK, rc);2000 2001 attr.name = "e";2002 attr.size = 5;2003 rc = ui_file_list_entry_append(flist, &attr);2004 PCUT_ASSERT_ERRNO_VAL(EOK, rc);2005 2006 /* Cursor and page to the first entry */2007 flist->cursor = ui_file_list_first(flist);2008 flist->cursor_idx = 0;2009 flist->page = flist->cursor;2010 flist->page_idx = 0;2011 2012 /* Move one page down */2013 ui_file_list_page_down(flist);2014 2015 /* Page and cursor should point to the third entry */2016 PCUT_ASSERT_STR_EQUALS("c", flist->cursor->name);2017 PCUT_ASSERT_INT_EQUALS(3, flist->cursor->size);2018 PCUT_ASSERT_INT_EQUALS(2, flist->cursor_idx);2019 PCUT_ASSERT_STR_EQUALS("c", flist->page->name);2020 PCUT_ASSERT_INT_EQUALS(3, flist->page->size);2021 PCUT_ASSERT_INT_EQUALS(2, flist->page_idx);2022 2023 /* Move one page down again. */2024 ui_file_list_page_down(flist);2025 2026 /* Cursor should point to last and page to next-to-last entry */2027 PCUT_ASSERT_STR_EQUALS("e", flist->cursor->name);2028 PCUT_ASSERT_INT_EQUALS(5, flist->cursor->size);2029 PCUT_ASSERT_INT_EQUALS(4, flist->cursor_idx);2030 PCUT_ASSERT_STR_EQUALS("d", flist->page->name);2031 PCUT_ASSERT_INT_EQUALS(4, flist->page->size);2032 PCUT_ASSERT_INT_EQUALS(3, flist->page_idx);2033 2034 /* Moving further down should do nothing (we are at the bottom). */2035 ui_file_list_page_down(flist);2036 2037 /* Cursor should still point to last and page to next-to-last entry */2038 PCUT_ASSERT_STR_EQUALS("e", flist->cursor->name);2039 PCUT_ASSERT_INT_EQUALS(5, flist->cursor->size);2040 PCUT_ASSERT_INT_EQUALS(4, flist->cursor_idx);2041 PCUT_ASSERT_STR_EQUALS("d", flist->page->name);2042 PCUT_ASSERT_INT_EQUALS(4, flist->page->size);2043 PCUT_ASSERT_INT_EQUALS(3, flist->page_idx);2044 2045 ui_file_list_destroy(flist);2046 ui_window_destroy(window);2047 ui_destroy(ui);2048 }2049 2050 /** ui_file_list_scroll_up() scrolls up by one row */2051 PCUT_TEST(scroll_up)2052 {2053 ui_t *ui;2054 ui_window_t *window;2055 ui_wnd_params_t params;2056 ui_file_list_t *flist;2057 ui_file_list_entry_attr_t attr;2058 gfx_rect_t rect;2059 errno_t rc;2060 2061 rc = ui_create_disp(NULL, &ui);2062 PCUT_ASSERT_ERRNO_VAL(EOK, rc);2063 2064 ui_wnd_params_init(¶ms);2065 params.caption = "Test";2066 2067 rc = ui_window_create(ui, ¶ms, &window);2068 PCUT_ASSERT_ERRNO_VAL(EOK, rc);2069 2070 rc = ui_file_list_create(window, true, &flist);2071 PCUT_ASSERT_ERRNO_VAL(EOK, rc);2072 2073 rect.p0.x = 0;2074 rect.p0.y = 0;2075 rect.p1.x = 10;2076 rect.p1.y = 38; /* Assuming this makes page size 2 */2077 ui_file_list_set_rect(flist, &rect);2078 2079 PCUT_ASSERT_INT_EQUALS(2, ui_file_list_page_size(flist));2080 2081 /* Add tree entries (more than page size, which is 2) */2082 2083 ui_file_list_entry_attr_init(&attr);2084 2085 attr.name = "a";2086 attr.size = 1;2087 rc = ui_file_list_entry_append(flist, &attr);2088 PCUT_ASSERT_ERRNO_VAL(EOK, rc);2089 2090 attr.name = "b";2091 attr.size = 2;2092 rc = ui_file_list_entry_append(flist, &attr);2093 PCUT_ASSERT_ERRNO_VAL(EOK, rc);2094 2095 attr.name = "c";2096 attr.size = 3;2097 rc = ui_file_list_entry_append(flist, &attr);2098 PCUT_ASSERT_ERRNO_VAL(EOK, rc);2099 2100 /* Cursor to the last entry, page to the second */2101 flist->cursor = ui_file_list_last(flist);2102 flist->cursor_idx = 2;2103 flist->page = ui_file_list_prev(flist->cursor);2104 flist->page_idx = 1;2105 2106 /* Scroll one entry up */2107 ui_file_list_scroll_up(flist);2108 2109 /* Page should start on the first entry, cursor unchanged */2110 PCUT_ASSERT_STR_EQUALS("c", flist->cursor->name);2111 PCUT_ASSERT_INT_EQUALS(3, flist->cursor->size);2112 PCUT_ASSERT_INT_EQUALS(2, flist->cursor_idx);2113 PCUT_ASSERT_STR_EQUALS("a", flist->page->name);2114 PCUT_ASSERT_INT_EQUALS(1, flist->page->size);2115 PCUT_ASSERT_INT_EQUALS(0, flist->page_idx);2116 2117 /* Try scrolling one more entry up */2118 ui_file_list_scroll_up(flist);2119 2120 /* We were at the beginning, so nothing should have changed */2121 PCUT_ASSERT_STR_EQUALS("c", flist->cursor->name);2122 PCUT_ASSERT_INT_EQUALS(3, flist->cursor->size);2123 PCUT_ASSERT_INT_EQUALS(2, flist->cursor_idx);2124 PCUT_ASSERT_STR_EQUALS("a", flist->page->name);2125 PCUT_ASSERT_INT_EQUALS(1, flist->page->size);2126 PCUT_ASSERT_INT_EQUALS(0, flist->page_idx);2127 2128 ui_file_list_destroy(flist);2129 ui_window_destroy(window);2130 ui_destroy(ui);2131 }2132 2133 /** ui_file_list_scroll_down() scrolls down by one row */2134 PCUT_TEST(scroll_down)2135 {2136 ui_t *ui;2137 ui_window_t *window;2138 ui_wnd_params_t params;2139 ui_file_list_t *flist;2140 ui_file_list_entry_attr_t attr;2141 gfx_rect_t rect;2142 errno_t rc;2143 2144 rc = ui_create_disp(NULL, &ui);2145 PCUT_ASSERT_ERRNO_VAL(EOK, rc);2146 2147 ui_wnd_params_init(¶ms);2148 params.caption = "Test";2149 2150 rc = ui_window_create(ui, ¶ms, &window);2151 PCUT_ASSERT_ERRNO_VAL(EOK, rc);2152 2153 rc = ui_file_list_create(window, true, &flist);2154 PCUT_ASSERT_ERRNO_VAL(EOK, rc);2155 2156 rect.p0.x = 0;2157 rect.p0.y = 0;2158 rect.p1.x = 10;2159 rect.p1.y = 38; /* Assuming this makes page size 2 */2160 ui_file_list_set_rect(flist, &rect);2161 2162 PCUT_ASSERT_INT_EQUALS(2, ui_file_list_page_size(flist));2163 2164 /* Add tree entries (more than page size, which is 2) */2165 2166 ui_file_list_entry_attr_init(&attr);2167 2168 attr.name = "a";2169 attr.size = 1;2170 rc = ui_file_list_entry_append(flist, &attr);2171 PCUT_ASSERT_ERRNO_VAL(EOK, rc);2172 2173 attr.name = "b";2174 attr.size = 2;2175 rc = ui_file_list_entry_append(flist, &attr);2176 PCUT_ASSERT_ERRNO_VAL(EOK, rc);2177 2178 attr.name = "c";2179 attr.size = 3;2180 rc = ui_file_list_entry_append(flist, &attr);2181 PCUT_ASSERT_ERRNO_VAL(EOK, rc);2182 2183 /* Cursor and page start to the first entry */2184 flist->cursor = ui_file_list_first(flist);2185 flist->cursor_idx = 0;2186 flist->page = flist->cursor;2187 flist->page_idx = 0;2188 2189 /* Scroll one entry down */2190 ui_file_list_scroll_down(flist);2191 2192 /* Page should start on the second entry, cursor unchanged */2193 PCUT_ASSERT_STR_EQUALS("a", flist->cursor->name);2194 PCUT_ASSERT_INT_EQUALS(1, flist->cursor->size);2195 PCUT_ASSERT_INT_EQUALS(0, flist->cursor_idx);2196 PCUT_ASSERT_STR_EQUALS("b", flist->page->name);2197 PCUT_ASSERT_INT_EQUALS(2, flist->page->size);2198 PCUT_ASSERT_INT_EQUALS(1, flist->page_idx);2199 2200 /* Try scrolling one more entry down */2201 ui_file_list_scroll_down(flist);2202 2203 /* We were at the end, so nothing should have changed */2204 PCUT_ASSERT_STR_EQUALS("a", flist->cursor->name);2205 PCUT_ASSERT_INT_EQUALS(1, flist->cursor->size);2206 PCUT_ASSERT_INT_EQUALS(0, flist->cursor_idx);2207 PCUT_ASSERT_STR_EQUALS("b", flist->page->name);2208 PCUT_ASSERT_INT_EQUALS(2, flist->page->size);2209 PCUT_ASSERT_INT_EQUALS(1, flist->page_idx);2210 2211 ui_file_list_destroy(flist);2212 ui_window_destroy(window);2213 ui_destroy(ui);2214 }2215 2216 /** ui_file_list_scroll_page_up() scrolls up by one page */2217 PCUT_TEST(scroll_page_up)2218 {2219 ui_t *ui;2220 ui_window_t *window;2221 ui_wnd_params_t params;2222 ui_file_list_t *flist;2223 ui_file_list_entry_attr_t attr;2224 gfx_rect_t rect;2225 errno_t rc;2226 2227 rc = ui_create_disp(NULL, &ui);2228 PCUT_ASSERT_ERRNO_VAL(EOK, rc);2229 2230 ui_wnd_params_init(¶ms);2231 params.caption = "Test";2232 2233 rc = ui_window_create(ui, ¶ms, &window);2234 PCUT_ASSERT_ERRNO_VAL(EOK, rc);2235 2236 rc = ui_file_list_create(window, true, &flist);2237 PCUT_ASSERT_ERRNO_VAL(EOK, rc);2238 2239 rect.p0.x = 0;2240 rect.p0.y = 0;2241 rect.p1.x = 10;2242 rect.p1.y = 38; /* Assuming this makes page size 2 */2243 ui_file_list_set_rect(flist, &rect);2244 2245 PCUT_ASSERT_INT_EQUALS(2, ui_file_list_page_size(flist));2246 2247 /* Add five entries (more than twice the page size, which is 2) */2248 2249 ui_file_list_entry_attr_init(&attr);2250 2251 attr.name = "a";2252 attr.size = 1;2253 rc = ui_file_list_entry_append(flist, &attr);2254 PCUT_ASSERT_ERRNO_VAL(EOK, rc);2255 2256 attr.name = "b";2257 attr.size = 2;2258 rc = ui_file_list_entry_append(flist, &attr);2259 PCUT_ASSERT_ERRNO_VAL(EOK, rc);2260 2261 attr.name = "c";2262 attr.size = 3;2263 rc = ui_file_list_entry_append(flist, &attr);2264 PCUT_ASSERT_ERRNO_VAL(EOK, rc);2265 2266 attr.name = "d";2267 attr.size = 4;2268 rc = ui_file_list_entry_append(flist, &attr);2269 PCUT_ASSERT_ERRNO_VAL(EOK, rc);2270 2271 attr.name = "e";2272 attr.size = 5;2273 rc = ui_file_list_entry_append(flist, &attr);2274 PCUT_ASSERT_ERRNO_VAL(EOK, rc);2275 2276 /* Cursor to the last entry, page to the second last */2277 flist->cursor = ui_file_list_last(flist);2278 flist->cursor_idx = 4;2279 flist->page = ui_file_list_prev(flist->cursor);2280 flist->page_idx = 3;2281 2282 /* Scroll one page up */2283 ui_file_list_scroll_page_up(flist);2284 2285 /* Page should start on 'b', cursor unchanged */2286 PCUT_ASSERT_STR_EQUALS("e", flist->cursor->name);2287 PCUT_ASSERT_INT_EQUALS(5, flist->cursor->size);2288 PCUT_ASSERT_INT_EQUALS(4, flist->cursor_idx);2289 PCUT_ASSERT_STR_EQUALS("b", flist->page->name);2290 PCUT_ASSERT_INT_EQUALS(2, flist->page->size);2291 PCUT_ASSERT_INT_EQUALS(1, flist->page_idx);2292 2293 /* Page up again */2294 ui_file_list_scroll_page_up(flist);2295 2296 /* Page should now be at the beginning, cursor unchanged */2297 PCUT_ASSERT_STR_EQUALS("e", flist->cursor->name);2298 PCUT_ASSERT_INT_EQUALS(5, flist->cursor->size);2299 PCUT_ASSERT_INT_EQUALS(4, flist->cursor_idx);2300 PCUT_ASSERT_STR_EQUALS("a", flist->page->name);2301 PCUT_ASSERT_INT_EQUALS(1, flist->page->size);2302 PCUT_ASSERT_INT_EQUALS(0, flist->page_idx);2303 2304 /* Page up again */2305 ui_file_list_scroll_page_up(flist);2306 2307 /* We were at the beginning, nothing should have changed */2308 PCUT_ASSERT_STR_EQUALS("e", flist->cursor->name);2309 PCUT_ASSERT_INT_EQUALS(5, flist->cursor->size);2310 PCUT_ASSERT_INT_EQUALS(4, flist->cursor_idx);2311 PCUT_ASSERT_STR_EQUALS("a", flist->page->name);2312 PCUT_ASSERT_INT_EQUALS(1, flist->page->size);2313 PCUT_ASSERT_INT_EQUALS(0, flist->page_idx);2314 2315 ui_file_list_destroy(flist);2316 ui_window_destroy(window);2317 ui_destroy(ui);2318 }2319 2320 /** ui_file_list_scroll_page_up() scrolls down by one page */2321 PCUT_TEST(scroll_page_down)2322 {2323 ui_t *ui;2324 ui_window_t *window;2325 ui_wnd_params_t params;2326 ui_file_list_t *flist;2327 ui_file_list_entry_attr_t attr;2328 gfx_rect_t rect;2329 errno_t rc;2330 2331 rc = ui_create_disp(NULL, &ui);2332 PCUT_ASSERT_ERRNO_VAL(EOK, rc);2333 2334 ui_wnd_params_init(¶ms);2335 params.caption = "Test";2336 2337 rc = ui_window_create(ui, ¶ms, &window);2338 PCUT_ASSERT_ERRNO_VAL(EOK, rc);2339 2340 rc = ui_file_list_create(window, true, &flist);2341 PCUT_ASSERT_ERRNO_VAL(EOK, rc);2342 2343 rect.p0.x = 0;2344 rect.p0.y = 0;2345 rect.p1.x = 10;2346 rect.p1.y = 38; /* Assuming this makes page size 2 */2347 ui_file_list_set_rect(flist, &rect);2348 2349 PCUT_ASSERT_INT_EQUALS(2, ui_file_list_page_size(flist));2350 2351 /* Add five entries (more than twice the page size, which is 2) */2352 2353 ui_file_list_entry_attr_init(&attr);2354 2355 attr.name = "a";2356 attr.size = 1;2357 rc = ui_file_list_entry_append(flist, &attr);2358 PCUT_ASSERT_ERRNO_VAL(EOK, rc);2359 2360 attr.name = "b";2361 attr.size = 2;2362 rc = ui_file_list_entry_append(flist, &attr);2363 PCUT_ASSERT_ERRNO_VAL(EOK, rc);2364 2365 attr.name = "c";2366 attr.size = 3;2367 rc = ui_file_list_entry_append(flist, &attr);2368 PCUT_ASSERT_ERRNO_VAL(EOK, rc);2369 2370 attr.name = "d";2371 attr.size = 4;2372 rc = ui_file_list_entry_append(flist, &attr);2373 PCUT_ASSERT_ERRNO_VAL(EOK, rc);2374 2375 attr.name = "e";2376 attr.size = 5;2377 rc = ui_file_list_entry_append(flist, &attr);2378 PCUT_ASSERT_ERRNO_VAL(EOK, rc);2379 2380 /* Cursor and page to the first entry */2381 flist->cursor = ui_file_list_first(flist);2382 flist->cursor_idx = 0;2383 flist->page = ui_file_list_first(flist);2384 flist->page_idx = 0;2385 2386 /* Scroll one page down */2387 ui_file_list_scroll_page_down(flist);2388 2389 /* Page should start on 'c', cursor unchanged */2390 PCUT_ASSERT_STR_EQUALS("a", flist->cursor->name);2391 PCUT_ASSERT_INT_EQUALS(1, flist->cursor->size);2392 PCUT_ASSERT_INT_EQUALS(0, flist->cursor_idx);2393 PCUT_ASSERT_STR_EQUALS("c", flist->page->name);2394 PCUT_ASSERT_INT_EQUALS(3, flist->page->size);2395 PCUT_ASSERT_INT_EQUALS(2, flist->page_idx);2396 2397 /* Page down again */2398 ui_file_list_scroll_page_down(flist);2399 2400 /* Page should now start at 'd', cursor unchanged */2401 PCUT_ASSERT_STR_EQUALS("a", flist->cursor->name);2402 PCUT_ASSERT_INT_EQUALS(1, flist->cursor->size);2403 PCUT_ASSERT_INT_EQUALS(0, flist->cursor_idx);2404 PCUT_ASSERT_STR_EQUALS("d", flist->page->name);2405 PCUT_ASSERT_INT_EQUALS(4, flist->page->size);2406 PCUT_ASSERT_INT_EQUALS(3, flist->page_idx);2407 2408 /* Page down again */2409 ui_file_list_scroll_page_down(flist);2410 2411 /* We were at the end, nothing should have changed */2412 PCUT_ASSERT_STR_EQUALS("a", flist->cursor->name);2413 PCUT_ASSERT_INT_EQUALS(1, flist->cursor->size);2414 PCUT_ASSERT_INT_EQUALS(0, flist->cursor_idx);2415 PCUT_ASSERT_STR_EQUALS("d", flist->page->name);2416 PCUT_ASSERT_INT_EQUALS(4, flist->page->size);2417 PCUT_ASSERT_INT_EQUALS(3, flist->page_idx);2418 2419 ui_file_list_destroy(flist);2420 ui_window_destroy(window);2421 ui_destroy(ui);2422 }2423 2424 PCUT_TEST(scroll_pos)2425 {2426 ui_t *ui;2427 ui_window_t *window;2428 ui_wnd_params_t params;2429 ui_file_list_t *flist;2430 ui_file_list_entry_attr_t attr;2431 gfx_rect_t rect;2432 errno_t rc;2433 2434 rc = ui_create_disp(NULL, &ui);2435 PCUT_ASSERT_ERRNO_VAL(EOK, rc);2436 2437 ui_wnd_params_init(¶ms);2438 params.caption = "Test";2439 2440 rc = ui_window_create(ui, ¶ms, &window);2441 PCUT_ASSERT_ERRNO_VAL(EOK, rc);2442 2443 rc = ui_file_list_create(window, true, &flist);2444 PCUT_ASSERT_ERRNO_VAL(EOK, rc);2445 2446 rect.p0.x = 0;2447 rect.p0.y = 0;2448 rect.p1.x = 10;2449 rect.p1.y = 38; /* Assuming this makes page size 2 */2450 ui_file_list_set_rect(flist, &rect);2451 2452 PCUT_ASSERT_INT_EQUALS(2, ui_file_list_page_size(flist));2453 2454 /* Add five entries (more than twice the page size, which is 2) */2455 2456 ui_file_list_entry_attr_init(&attr);2457 2458 attr.name = "a";2459 attr.size = 1;2460 rc = ui_file_list_entry_append(flist, &attr);2461 PCUT_ASSERT_ERRNO_VAL(EOK, rc);2462 2463 attr.name = "b";2464 attr.size = 2;2465 rc = ui_file_list_entry_append(flist, &attr);2466 PCUT_ASSERT_ERRNO_VAL(EOK, rc);2467 2468 attr.name = "c";2469 attr.size = 3;2470 rc = ui_file_list_entry_append(flist, &attr);2471 PCUT_ASSERT_ERRNO_VAL(EOK, rc);2472 2473 attr.name = "d";2474 attr.size = 4;2475 rc = ui_file_list_entry_append(flist, &attr);2476 PCUT_ASSERT_ERRNO_VAL(EOK, rc);2477 2478 attr.name = "e";2479 attr.size = 5;2480 rc = ui_file_list_entry_append(flist, &attr);2481 PCUT_ASSERT_ERRNO_VAL(EOK, rc);2482 2483 /* Cursor and page to the first entry */2484 flist->cursor = ui_file_list_first(flist);2485 flist->cursor_idx = 0;2486 flist->page = ui_file_list_first(flist);2487 flist->page_idx = 0;2488 2489 /* Scroll to entry 1 (one down) */2490 ui_file_list_scroll_pos(flist, 1);2491 2492 /* Page should start on 'b', cursor unchanged */2493 PCUT_ASSERT_STR_EQUALS("a", flist->cursor->name);2494 PCUT_ASSERT_INT_EQUALS(1, flist->cursor->size);2495 PCUT_ASSERT_INT_EQUALS(0, flist->cursor_idx);2496 PCUT_ASSERT_STR_EQUALS("b", flist->page->name);2497 PCUT_ASSERT_INT_EQUALS(2, flist->page->size);2498 PCUT_ASSERT_INT_EQUALS(1, flist->page_idx);2499 2500 /* Scroll to entry 3 (i.e. the end) */2501 ui_file_list_scroll_pos(flist, 3);2502 2503 /* Page should now start at 'd', cursor unchanged */2504 PCUT_ASSERT_STR_EQUALS("a", flist->cursor->name);2505 PCUT_ASSERT_INT_EQUALS(1, flist->cursor->size);2506 PCUT_ASSERT_INT_EQUALS(0, flist->cursor_idx);2507 PCUT_ASSERT_STR_EQUALS("d", flist->page->name);2508 PCUT_ASSERT_INT_EQUALS(4, flist->page->size);2509 PCUT_ASSERT_INT_EQUALS(3, flist->page_idx);2510 2511 ui_file_list_destroy(flist);2512 ui_window_destroy(window);2513 ui_destroy(ui);2514 }2515 2516 969 /** ui_file_list_open_dir() opens a directory entry */ 2517 970 PCUT_TEST(open_dir) … … 2559 1012 PCUT_ASSERT_STR_EQUALS(p, flist->dir); 2560 1013 2561 PCUT_ASSERT_INT_EQUALS(2, list_count(&flist->entries));1014 PCUT_ASSERT_INT_EQUALS(2, ui_list_entries_cnt(flist->list)); 2562 1015 2563 1016 entry = ui_file_list_first(flist); … … 2706 1159 } 2707 1160 1161 /** ui_file_list_get_cursor() returns the current cursor position */ 1162 PCUT_TEST(get_cursor) 1163 { 1164 ui_t *ui; 1165 ui_window_t *window; 1166 ui_wnd_params_t params; 1167 ui_file_list_t *flist; 1168 ui_file_list_entry_attr_t attr; 1169 ui_file_list_entry_t *entry; 1170 ui_file_list_entry_t *cursor; 1171 errno_t rc; 1172 1173 rc = ui_create_disp(NULL, &ui); 1174 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 1175 1176 ui_wnd_params_init(¶ms); 1177 params.caption = "Test"; 1178 1179 rc = ui_window_create(ui, ¶ms, &window); 1180 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 1181 1182 rc = ui_file_list_create(window, true, &flist); 1183 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 1184 1185 ui_file_list_entry_attr_init(&attr); 1186 1187 /* Append entry */ 1188 attr.name = "a"; 1189 attr.size = 1; 1190 rc = ui_file_list_entry_append(flist, &attr); 1191 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 1192 1193 entry = ui_file_list_first(flist); 1194 PCUT_ASSERT_NOT_NULL(entry); 1195 1196 /* Cursor should be at the only entry */ 1197 cursor = ui_file_list_get_cursor(flist); 1198 PCUT_ASSERT_EQUALS(entry, cursor); 1199 1200 ui_file_list_destroy(flist); 1201 ui_window_destroy(window); 1202 ui_destroy(ui); 1203 } 1204 2708 1205 static void test_file_list_activate_req(ui_file_list_t *flist, void *arg) 2709 1206 {
Note:
See TracChangeset
for help on using the changeset viewer.