Changes in uspace/lib/ui/test/pbutton.c [3583ffb:1fa6292] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/ui/test/pbutton.c
r3583ffb r1fa6292 1 1 /* 2 * Copyright (c) 202 0Jiri Svoboda2 * Copyright (c) 2023 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 36 36 #include <ui/resource.h> 37 37 #include "../private/pbutton.h" 38 #include "../private/testgc.h" 38 39 39 40 PCUT_INIT; … … 41 42 PCUT_TEST_SUITE(pbutton); 42 43 43 static errno_t testgc_set_color(void *, gfx_color_t *);44 static errno_t testgc_fill_rect(void *, gfx_rect_t *);45 static errno_t testgc_bitmap_create(void *, gfx_bitmap_params_t *,46 gfx_bitmap_alloc_t *, void **);47 static errno_t testgc_bitmap_destroy(void *);48 static errno_t testgc_bitmap_render(void *, gfx_rect_t *, gfx_coord2_t *);49 static errno_t testgc_bitmap_get_alloc(void *, gfx_bitmap_alloc_t *);50 51 static gfx_context_ops_t ops = {52 .set_color = testgc_set_color,53 .fill_rect = testgc_fill_rect,54 .bitmap_create = testgc_bitmap_create,55 .bitmap_destroy = testgc_bitmap_destroy,56 .bitmap_render = testgc_bitmap_render,57 .bitmap_get_alloc = testgc_bitmap_get_alloc58 };59 60 44 static void test_pbutton_clicked(ui_pbutton_t *, void *); 45 static void test_pbutton_down(ui_pbutton_t *, void *); 46 static void test_pbutton_up(ui_pbutton_t *, void *); 61 47 62 48 static ui_pbutton_cb_t test_pbutton_cb = { 63 .clicked = test_pbutton_clicked 49 .clicked = test_pbutton_clicked, 50 .down = test_pbutton_down, 51 .up = test_pbutton_up 64 52 }; 65 53 … … 68 56 69 57 typedef struct { 70 bool bm_created;71 bool bm_destroyed;72 gfx_bitmap_params_t bm_params;73 void *bm_pixels;74 gfx_rect_t bm_srect;75 gfx_coord2_t bm_offs;76 bool bm_rendered;77 bool bm_got_alloc;78 } test_gc_t;79 80 typedef struct {81 test_gc_t *tgc;82 gfx_bitmap_alloc_t alloc;83 bool myalloc;84 } testgc_bitmap_t;85 86 typedef struct {87 58 bool clicked; 59 bool down; 60 bool up; 88 61 } test_cb_resp_t; 89 62 … … 121 94 122 95 ui_control_destroy(control); 96 } 97 98 /** Set flags sets internal field */ 99 PCUT_TEST(set_flags) 100 { 101 ui_pbutton_t *pbutton; 102 errno_t rc; 103 104 rc = ui_pbutton_create(NULL, "Hello", &pbutton); 105 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 106 107 ui_pbutton_set_flags(pbutton, ui_pbf_no_text_depress); 108 PCUT_ASSERT_INT_EQUALS(ui_pbf_no_text_depress, pbutton->flags); 109 110 ui_pbutton_destroy(pbutton); 123 111 } 124 112 … … 165 153 } 166 154 155 /** Get light gets internal field */ 156 PCUT_TEST(get_light) 157 { 158 ui_pbutton_t *pbutton; 159 errno_t rc; 160 161 rc = ui_pbutton_create(NULL, "Hello", &pbutton); 162 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 163 164 pbutton->light = true; 165 PCUT_ASSERT_TRUE(ui_pbutton_get_light(pbutton)); 166 167 pbutton->light = false; 168 PCUT_ASSERT_FALSE(ui_pbutton_get_light(pbutton)); 169 170 ui_pbutton_destroy(pbutton); 171 } 172 173 /** Set light sets internal field */ 174 PCUT_TEST(set_light) 175 { 176 ui_pbutton_t *pbutton; 177 errno_t rc; 178 179 rc = ui_pbutton_create(NULL, "Hello", &pbutton); 180 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 181 182 ui_pbutton_set_light(pbutton, true); 183 PCUT_ASSERT_TRUE(pbutton->light); 184 185 ui_pbutton_set_light(pbutton, false); 186 PCUT_ASSERT_FALSE(pbutton->light); 187 188 ui_pbutton_destroy(pbutton); 189 } 190 191 /** Set caption sets internal field */ 192 PCUT_TEST(set_caption) 193 { 194 ui_pbutton_t *pbutton; 195 errno_t rc; 196 197 rc = ui_pbutton_create(NULL, "Hello", &pbutton); 198 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 199 200 PCUT_ASSERT_STR_EQUALS("Hello", pbutton->caption); 201 202 rc = ui_pbutton_set_caption(pbutton, "World"); 203 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 204 205 PCUT_ASSERT_STR_EQUALS("World", pbutton->caption); 206 207 ui_pbutton_destroy(pbutton); 208 } 209 167 210 /** Paint button */ 168 211 PCUT_TEST(paint) … … 178 221 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 179 222 180 rc = ui_resource_create(gc, &resource);223 rc = ui_resource_create(gc, false, &resource); 181 224 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 182 225 PCUT_ASSERT_NOT_NULL(resource); … … 221 264 } 222 265 266 /** Test ui_pbutton_down() */ 267 PCUT_TEST(down) 268 { 269 errno_t rc; 270 ui_pbutton_t *pbutton; 271 test_cb_resp_t resp; 272 273 rc = ui_pbutton_create(NULL, "Hello", &pbutton); 274 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 275 276 /* Down with no callbacks set */ 277 ui_pbutton_clicked(pbutton); 278 279 /* Down with callback not implementing down */ 280 ui_pbutton_set_cb(pbutton, &dummy_pbutton_cb, NULL); 281 ui_pbutton_down(pbutton); 282 283 /* Down with real callback set */ 284 resp.down = false; 285 ui_pbutton_set_cb(pbutton, &test_pbutton_cb, &resp); 286 ui_pbutton_down(pbutton); 287 PCUT_ASSERT_TRUE(resp.down); 288 289 ui_pbutton_destroy(pbutton); 290 } 291 292 /** Test ui_pbutton_up() */ 293 PCUT_TEST(up) 294 { 295 errno_t rc; 296 ui_pbutton_t *pbutton; 297 test_cb_resp_t resp; 298 299 rc = ui_pbutton_create(NULL, "Hello", &pbutton); 300 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 301 302 /* Up with no callbacks set */ 303 ui_pbutton_clicked(pbutton); 304 305 /* Up with callback not implementing up */ 306 ui_pbutton_set_cb(pbutton, &dummy_pbutton_cb, NULL); 307 ui_pbutton_up(pbutton); 308 309 /* Up with real callback set */ 310 resp.up = false; 311 ui_pbutton_set_cb(pbutton, &test_pbutton_cb, &resp); 312 ui_pbutton_up(pbutton); 313 PCUT_ASSERT_TRUE(resp.up); 314 315 ui_pbutton_destroy(pbutton); 316 } 317 223 318 /** Press and release button */ 224 319 PCUT_TEST(press_release) … … 235 330 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 236 331 237 rc = ui_resource_create(gc, &resource); 332 rc = ui_resource_create(gc, false, &resource); 333 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 334 PCUT_ASSERT_NOT_NULL(resource); 335 336 rc = ui_pbutton_create(resource, "Hello", &pbutton); 337 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 338 339 resp.clicked = false; 340 resp.down = false; 341 resp.up = false; 342 ui_pbutton_set_cb(pbutton, &test_pbutton_cb, &resp); 343 344 PCUT_ASSERT_FALSE(pbutton->held); 345 PCUT_ASSERT_FALSE(pbutton->inside); 346 347 ui_pbutton_press(pbutton); 348 PCUT_ASSERT_TRUE(pbutton->held); 349 PCUT_ASSERT_TRUE(pbutton->inside); 350 PCUT_ASSERT_TRUE(resp.down); 351 PCUT_ASSERT_FALSE(resp.up); 352 PCUT_ASSERT_FALSE(resp.clicked); 353 354 ui_pbutton_release(pbutton); 355 PCUT_ASSERT_FALSE(pbutton->held); 356 PCUT_ASSERT_TRUE(pbutton->inside); 357 PCUT_ASSERT_TRUE(resp.up); 358 PCUT_ASSERT_TRUE(resp.clicked); 359 360 ui_pbutton_destroy(pbutton); 361 ui_resource_destroy(resource); 362 363 rc = gfx_context_delete(gc); 364 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 365 } 366 367 /** Press, leave and release button */ 368 PCUT_TEST(press_leave_release) 369 { 370 errno_t rc; 371 gfx_context_t *gc = NULL; 372 test_gc_t tgc; 373 ui_resource_t *resource = NULL; 374 ui_pbutton_t *pbutton; 375 test_cb_resp_t resp; 376 377 memset(&tgc, 0, sizeof(tgc)); 378 rc = gfx_context_new(&ops, &tgc, &gc); 379 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 380 381 rc = ui_resource_create(gc, false, &resource); 238 382 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 239 383 PCUT_ASSERT_NOT_NULL(resource); … … 253 397 PCUT_ASSERT_FALSE(resp.clicked); 254 398 399 ui_pbutton_leave(pbutton); 400 PCUT_ASSERT_TRUE(pbutton->held); 401 PCUT_ASSERT_FALSE(pbutton->inside); 402 PCUT_ASSERT_FALSE(resp.clicked); 403 255 404 ui_pbutton_release(pbutton); 256 405 PCUT_ASSERT_FALSE(pbutton->held); 257 PCUT_ASSERT_ TRUE(pbutton->inside);258 PCUT_ASSERT_ TRUE(resp.clicked);406 PCUT_ASSERT_FALSE(pbutton->inside); 407 PCUT_ASSERT_FALSE(resp.clicked); 259 408 260 409 ui_pbutton_destroy(pbutton); … … 265 414 } 266 415 267 /** Press, leave and release button */268 PCUT_TEST(press_leave_ release)416 /** Press, leave, enter and release button */ 417 PCUT_TEST(press_leave_enter_release) 269 418 { 270 419 errno_t rc; … … 279 428 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 280 429 281 rc = ui_resource_create(gc, &resource);430 rc = ui_resource_create(gc, false, &resource); 282 431 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 283 432 PCUT_ASSERT_NOT_NULL(resource); … … 302 451 PCUT_ASSERT_FALSE(resp.clicked); 303 452 304 ui_pbutton_release(pbutton);305 PCUT_ASSERT_FALSE(pbutton->held);306 PCUT_ASSERT_FALSE(pbutton->inside);307 PCUT_ASSERT_FALSE(resp.clicked);308 309 ui_pbutton_destroy(pbutton);310 ui_resource_destroy(resource);311 312 rc = gfx_context_delete(gc);313 PCUT_ASSERT_ERRNO_VAL(EOK, rc);314 }315 316 /** Press, leave, enter and release button */317 PCUT_TEST(press_leave_enter_release)318 {319 errno_t rc;320 gfx_context_t *gc = NULL;321 test_gc_t tgc;322 ui_resource_t *resource = NULL;323 ui_pbutton_t *pbutton;324 test_cb_resp_t resp;325 326 memset(&tgc, 0, sizeof(tgc));327 rc = gfx_context_new(&ops, &tgc, &gc);328 PCUT_ASSERT_ERRNO_VAL(EOK, rc);329 330 rc = ui_resource_create(gc, &resource);331 PCUT_ASSERT_ERRNO_VAL(EOK, rc);332 PCUT_ASSERT_NOT_NULL(resource);333 334 rc = ui_pbutton_create(resource, "Hello", &pbutton);335 PCUT_ASSERT_ERRNO_VAL(EOK, rc);336 337 resp.clicked = false;338 ui_pbutton_set_cb(pbutton, &test_pbutton_cb, &resp);339 340 PCUT_ASSERT_FALSE(pbutton->held);341 PCUT_ASSERT_FALSE(pbutton->inside);342 343 ui_pbutton_press(pbutton);344 PCUT_ASSERT_TRUE(pbutton->held);345 PCUT_ASSERT_TRUE(pbutton->inside);346 PCUT_ASSERT_FALSE(resp.clicked);347 348 ui_pbutton_leave(pbutton);349 PCUT_ASSERT_TRUE(pbutton->held);350 PCUT_ASSERT_FALSE(pbutton->inside);351 PCUT_ASSERT_FALSE(resp.clicked);352 353 453 ui_pbutton_enter(pbutton); 354 454 PCUT_ASSERT_TRUE(pbutton->held); … … 384 484 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 385 485 386 rc = ui_resource_create(gc, &resource);486 rc = ui_resource_create(gc, false, &resource); 387 487 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 388 488 PCUT_ASSERT_NOT_NULL(resource); … … 445 545 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 446 546 447 rc = ui_resource_create(gc, &resource);547 rc = ui_resource_create(gc, false, &resource); 448 548 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 449 549 PCUT_ASSERT_NOT_NULL(resource); … … 488 588 } 489 589 490 static errno_t testgc_set_color(void *arg, gfx_color_t *color)491 {492 (void) arg;493 (void) color;494 return EOK;495 }496 497 static errno_t testgc_fill_rect(void *arg, gfx_rect_t *rect)498 {499 (void) arg;500 (void) rect;501 return EOK;502 }503 504 static errno_t testgc_bitmap_create(void *arg, gfx_bitmap_params_t *params,505 gfx_bitmap_alloc_t *alloc, void **rbm)506 {507 test_gc_t *tgc = (test_gc_t *) arg;508 testgc_bitmap_t *tbm;509 510 tbm = calloc(1, sizeof(testgc_bitmap_t));511 if (tbm == NULL)512 return ENOMEM;513 514 if (alloc == NULL) {515 tbm->alloc.pitch = (params->rect.p1.x - params->rect.p0.x) *516 sizeof(uint32_t);517 tbm->alloc.off0 = 0;518 tbm->alloc.pixels = calloc(sizeof(uint32_t),519 (params->rect.p1.x - params->rect.p0.x) *520 (params->rect.p1.y - params->rect.p0.y));521 tbm->myalloc = true;522 if (tbm->alloc.pixels == NULL) {523 free(tbm);524 return ENOMEM;525 }526 } else {527 tbm->alloc = *alloc;528 }529 530 tbm->tgc = tgc;531 tgc->bm_created = true;532 tgc->bm_params = *params;533 tgc->bm_pixels = tbm->alloc.pixels;534 *rbm = (void *)tbm;535 return EOK;536 }537 538 static errno_t testgc_bitmap_destroy(void *bm)539 {540 testgc_bitmap_t *tbm = (testgc_bitmap_t *)bm;541 if (tbm->myalloc)542 free(tbm->alloc.pixels);543 tbm->tgc->bm_destroyed = true;544 free(tbm);545 return EOK;546 }547 548 static errno_t testgc_bitmap_render(void *bm, gfx_rect_t *srect,549 gfx_coord2_t *offs)550 {551 testgc_bitmap_t *tbm = (testgc_bitmap_t *)bm;552 tbm->tgc->bm_rendered = true;553 tbm->tgc->bm_srect = *srect;554 tbm->tgc->bm_offs = *offs;555 return EOK;556 }557 558 static errno_t testgc_bitmap_get_alloc(void *bm, gfx_bitmap_alloc_t *alloc)559 {560 testgc_bitmap_t *tbm = (testgc_bitmap_t *)bm;561 *alloc = tbm->alloc;562 tbm->tgc->bm_got_alloc = true;563 return EOK;564 }565 566 590 static void test_pbutton_clicked(ui_pbutton_t *pbutton, void *arg) 567 591 { … … 571 595 } 572 596 597 static void test_pbutton_down(ui_pbutton_t *pbutton, void *arg) 598 { 599 test_cb_resp_t *resp = (test_cb_resp_t *) arg; 600 601 resp->down = true; 602 } 603 604 static void test_pbutton_up(ui_pbutton_t *pbutton, void *arg) 605 { 606 test_cb_resp_t *resp = (test_cb_resp_t *) arg; 607 608 resp->up = true; 609 } 610 573 611 PCUT_EXPORT(pbutton);
Note:
See TracChangeset
for help on using the changeset viewer.