Changes in uspace/lib/ui/test/wdecor.c [211fd68:7470d97] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/ui/test/wdecor.c
r211fd68 r7470d97 1 1 /* 2 * Copyright (c) 202 4Jiri Svoboda2 * Copyright (c) 2021 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 34 34 #include <ui/pbutton.h> 35 35 #include <ui/resource.h> 36 #include <ui/ui.h>37 36 #include <ui/wdecor.h> 38 37 #include "../private/wdecor.h" … … 63 62 }; 64 63 65 static void test_wdecor_sysmenu_open(ui_wdecor_t *, void *, sysarg_t);66 static void test_wdecor_sysmenu_left(ui_wdecor_t *, void *, sysarg_t);67 static void test_wdecor_sysmenu_right(ui_wdecor_t *, void *, sysarg_t);68 static void test_wdecor_sysmenu_accel(ui_wdecor_t *, void *, char32_t,69 sysarg_t);70 static void test_wdecor_minimize(ui_wdecor_t *, void *);71 static void test_wdecor_maximize(ui_wdecor_t *, void *);72 static void test_wdecor_unmaximize(ui_wdecor_t *, void *);73 64 static void test_wdecor_close(ui_wdecor_t *, void *); 74 static void test_wdecor_move(ui_wdecor_t *, void *, gfx_coord2_t * , sysarg_t);65 static void test_wdecor_move(ui_wdecor_t *, void *, gfx_coord2_t *); 75 66 static void test_wdecor_resize(ui_wdecor_t *, void *, ui_wdecor_rsztype_t, 76 gfx_coord2_t * , sysarg_t);67 gfx_coord2_t *); 77 68 static void test_wdecor_set_cursor(ui_wdecor_t *, void *, ui_stock_cursor_t); 78 69 79 70 static ui_wdecor_cb_t test_wdecor_cb = { 80 .sysmenu_open = test_wdecor_sysmenu_open,81 .sysmenu_left = test_wdecor_sysmenu_left,82 .sysmenu_right = test_wdecor_sysmenu_right,83 .sysmenu_accel = test_wdecor_sysmenu_accel,84 .minimize = test_wdecor_minimize,85 .maximize = test_wdecor_maximize,86 .unmaximize = test_wdecor_unmaximize,87 71 .close = test_wdecor_close, 88 72 .move = test_wdecor_move, … … 112 96 113 97 typedef struct { 114 bool sysmenu_open;115 bool sysmenu_left;116 bool sysmenu_right;117 bool sysmenu_accel;118 bool minimize;119 bool maximize;120 bool unmaximize;121 98 bool close; 122 99 bool move; 123 100 gfx_coord2_t pos; 124 sysarg_t pos_id;125 sysarg_t idev_id;126 char32_t accel;127 101 bool resize; 128 102 ui_wdecor_rsztype_t rsztype; … … 131 105 } test_cb_resp_t; 132 106 133 /** Create and destroy window decoration */107 /** Create and destroy button */ 134 108 PCUT_TEST(create_destroy) 135 109 { … … 153 127 PCUT_TEST(set_rect) 154 128 { 155 gfx_context_t *gc = NULL;156 test_gc_t tgc;157 ui_resource_t *resource = NULL;158 129 ui_wdecor_t *wdecor; 159 130 gfx_rect_t rect; 160 131 errno_t rc; 161 132 162 memset(&tgc, 0, sizeof(tgc)); 163 rc = gfx_context_new(&ops, &tgc, &gc); 164 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 165 166 rc = ui_resource_create(gc, false, &resource); 167 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 168 PCUT_ASSERT_NOT_NULL(resource); 169 170 rc = ui_wdecor_create(resource, "Hello", ui_wds_none, &wdecor); 133 rc = ui_wdecor_create(NULL, "Hello", ui_wds_none, &wdecor); 171 134 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 172 135 … … 183 146 184 147 ui_wdecor_destroy(wdecor); 185 ui_resource_destroy(resource);186 187 rc = gfx_context_delete(gc);188 PCUT_ASSERT_ERRNO_VAL(EOK, rc);189 148 } 190 149 … … 209 168 } 210 169 211 /** Set window decoration maximized sets internal field */ 212 PCUT_TEST(set_maximized) 213 { 214 ui_wdecor_t *wdecor; 215 errno_t rc; 216 217 rc = ui_wdecor_create(NULL, "Hello", ui_wds_none, &wdecor); 218 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 219 220 PCUT_ASSERT_TRUE(wdecor->active); 221 222 ui_wdecor_set_maximized(wdecor, false); 223 PCUT_ASSERT_FALSE(wdecor->maximized); 224 225 ui_wdecor_set_maximized(wdecor, true); 226 PCUT_ASSERT_TRUE(wdecor->maximized); 227 228 ui_wdecor_destroy(wdecor); 229 } 230 231 /** Setting system menu handle as active/inactive */ 232 PCUT_TEST(sysmenu_hdl_set_active) 170 /** Paint button */ 171 PCUT_TEST(paint) 233 172 { 234 173 errno_t rc; … … 246 185 PCUT_ASSERT_NOT_NULL(resource); 247 186 248 rc = ui_wdecor_create(resource, "Hello", ui_wds_decorated, &wdecor); 249 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 250 251 PCUT_ASSERT_FALSE(wdecor->sysmenu_hdl_active); 252 ui_wdecor_sysmenu_hdl_set_active(wdecor, true); 253 PCUT_ASSERT_TRUE(wdecor->sysmenu_hdl_active); 254 ui_wdecor_sysmenu_hdl_set_active(wdecor, false); 255 PCUT_ASSERT_FALSE(wdecor->sysmenu_hdl_active); 187 rc = ui_wdecor_create(resource, "Hello", ui_wds_none, &wdecor); 188 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 189 190 rc = ui_wdecor_paint(wdecor); 191 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 256 192 257 193 ui_wdecor_destroy(wdecor); … … 260 196 rc = gfx_context_delete(gc); 261 197 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 262 }263 264 /** Paint system menu handle */265 PCUT_TEST(sysmenu_hdl_paint)266 {267 errno_t rc;268 gfx_context_t *gc = NULL;269 test_gc_t tgc;270 ui_resource_t *resource = NULL;271 ui_wdecor_t *wdecor;272 ui_wdecor_geom_t geom;273 274 memset(&tgc, 0, sizeof(tgc));275 rc = gfx_context_new(&ops, &tgc, &gc);276 PCUT_ASSERT_ERRNO_VAL(EOK, rc);277 278 rc = ui_resource_create(gc, false, &resource);279 PCUT_ASSERT_ERRNO_VAL(EOK, rc);280 PCUT_ASSERT_NOT_NULL(resource);281 282 rc = ui_wdecor_create(resource, "Hello", ui_wds_decorated, &wdecor);283 PCUT_ASSERT_ERRNO_VAL(EOK, rc);284 285 ui_wdecor_get_geom(wdecor, &geom);286 rc = ui_wdecor_sysmenu_hdl_paint(wdecor, &geom.sysmenu_hdl_rect);287 PCUT_ASSERT_ERRNO_VAL(EOK, rc);288 289 ui_wdecor_destroy(wdecor);290 ui_resource_destroy(resource);291 292 rc = gfx_context_delete(gc);293 PCUT_ASSERT_ERRNO_VAL(EOK, rc);294 }295 296 /** Paint window decoration */297 PCUT_TEST(paint)298 {299 errno_t rc;300 gfx_context_t *gc = NULL;301 test_gc_t tgc;302 ui_resource_t *resource = NULL;303 ui_wdecor_t *wdecor;304 305 memset(&tgc, 0, sizeof(tgc));306 rc = gfx_context_new(&ops, &tgc, &gc);307 PCUT_ASSERT_ERRNO_VAL(EOK, rc);308 309 rc = ui_resource_create(gc, false, &resource);310 PCUT_ASSERT_ERRNO_VAL(EOK, rc);311 PCUT_ASSERT_NOT_NULL(resource);312 313 rc = ui_wdecor_create(resource, "Hello", ui_wds_decorated, &wdecor);314 PCUT_ASSERT_ERRNO_VAL(EOK, rc);315 316 rc = ui_wdecor_paint(wdecor);317 PCUT_ASSERT_ERRNO_VAL(EOK, rc);318 319 ui_wdecor_destroy(wdecor);320 ui_resource_destroy(resource);321 322 rc = gfx_context_delete(gc);323 PCUT_ASSERT_ERRNO_VAL(EOK, rc);324 }325 326 /** Test ui_wdecor_sysmenu_open() */327 PCUT_TEST(sysmenu_open)328 {329 errno_t rc;330 ui_wdecor_t *wdecor;331 test_cb_resp_t resp;332 333 rc = ui_wdecor_create(NULL, "Hello", ui_wds_none, &wdecor);334 PCUT_ASSERT_ERRNO_VAL(EOK, rc);335 336 /* Sysmenu open callback with no callbacks set */337 ui_wdecor_sysmenu_open(wdecor, 42);338 339 /* Sysmenu open callback with sysmenu callback not implemented */340 ui_wdecor_set_cb(wdecor, &dummy_wdecor_cb, NULL);341 ui_wdecor_sysmenu_open(wdecor, 42);342 343 /* Sysmenu open callback with real callback set */344 resp.sysmenu_open = false;345 resp.idev_id = 0;346 ui_wdecor_set_cb(wdecor, &test_wdecor_cb, &resp);347 ui_wdecor_sysmenu_open(wdecor, 42);348 PCUT_ASSERT_TRUE(resp.sysmenu_open);349 PCUT_ASSERT_INT_EQUALS(42, resp.idev_id);350 351 ui_wdecor_destroy(wdecor);352 }353 354 /** Test ui_wdecor_sysmenu_left() */355 PCUT_TEST(sysmenu_left)356 {357 errno_t rc;358 ui_wdecor_t *wdecor;359 test_cb_resp_t resp;360 361 rc = ui_wdecor_create(NULL, "Hello", ui_wds_none, &wdecor);362 PCUT_ASSERT_ERRNO_VAL(EOK, rc);363 364 /* Sysmenu left callback with no callbacks set */365 ui_wdecor_sysmenu_left(wdecor, 42);366 367 /* Sysmenu left callback with sysmenu callback not implemented */368 ui_wdecor_set_cb(wdecor, &dummy_wdecor_cb, NULL);369 ui_wdecor_sysmenu_left(wdecor, 42);370 371 /* Sysmenu left callback with real callback set */372 resp.sysmenu_left = false;373 resp.idev_id = 0;374 ui_wdecor_set_cb(wdecor, &test_wdecor_cb, &resp);375 ui_wdecor_sysmenu_left(wdecor, 42);376 PCUT_ASSERT_TRUE(resp.sysmenu_left);377 PCUT_ASSERT_INT_EQUALS(42, resp.idev_id);378 379 ui_wdecor_destroy(wdecor);380 }381 382 /** Test ui_wdecor_sysmenu_right() */383 PCUT_TEST(sysmenu_right)384 {385 errno_t rc;386 ui_wdecor_t *wdecor;387 test_cb_resp_t resp;388 389 rc = ui_wdecor_create(NULL, "Hello", ui_wds_none, &wdecor);390 PCUT_ASSERT_ERRNO_VAL(EOK, rc);391 392 /* Sysmenu right callback with no callbacks set */393 ui_wdecor_sysmenu_right(wdecor, 42);394 395 /* Sysmenu right callback with sysmenu callback not implemented */396 ui_wdecor_set_cb(wdecor, &dummy_wdecor_cb, NULL);397 ui_wdecor_sysmenu_right(wdecor, 42);398 399 /* Sysmenu right callback with real callback set */400 resp.sysmenu_right = false;401 resp.idev_id = 0;402 ui_wdecor_set_cb(wdecor, &test_wdecor_cb, &resp);403 ui_wdecor_sysmenu_right(wdecor, 42);404 PCUT_ASSERT_TRUE(resp.sysmenu_right);405 PCUT_ASSERT_INT_EQUALS(42, resp.idev_id);406 407 ui_wdecor_destroy(wdecor);408 }409 410 /** Test ui_wdecor_sysmenu_accel() */411 PCUT_TEST(sysmenu_accel)412 {413 errno_t rc;414 ui_wdecor_t *wdecor;415 test_cb_resp_t resp;416 417 rc = ui_wdecor_create(NULL, "Hello", ui_wds_none, &wdecor);418 PCUT_ASSERT_ERRNO_VAL(EOK, rc);419 420 /* Sysmenu accelerator callback with no callbacks set */421 ui_wdecor_sysmenu_accel(wdecor, 'a', 42);422 423 /* Sysmenu accelerator callback with sysmenu callback not implemented */424 ui_wdecor_set_cb(wdecor, &dummy_wdecor_cb, NULL);425 ui_wdecor_sysmenu_accel(wdecor, 'a', 42);426 427 /* Sysmenu accelerator callback with real callback set */428 resp.sysmenu_accel = false;429 resp.idev_id = 0;430 ui_wdecor_set_cb(wdecor, &test_wdecor_cb, &resp);431 ui_wdecor_sysmenu_accel(wdecor, 'a', 42);432 PCUT_ASSERT_TRUE(resp.sysmenu_accel);433 PCUT_ASSERT_INT_EQUALS('a', resp.accel);434 PCUT_ASSERT_INT_EQUALS(42, resp.idev_id);435 436 ui_wdecor_destroy(wdecor);437 }438 439 /** Test ui_wdecor_minimize() */440 PCUT_TEST(minimize)441 {442 errno_t rc;443 ui_wdecor_t *wdecor;444 test_cb_resp_t resp;445 446 rc = ui_wdecor_create(NULL, "Hello", ui_wds_none, &wdecor);447 PCUT_ASSERT_ERRNO_VAL(EOK, rc);448 449 /* Minimize callback with no callbacks set */450 ui_wdecor_minimize(wdecor);451 452 /* Minimize callback with minimize callback not implemented */453 ui_wdecor_set_cb(wdecor, &dummy_wdecor_cb, NULL);454 ui_wdecor_minimize(wdecor);455 456 /* Minimize callback with real callback set */457 resp.minimize = false;458 ui_wdecor_set_cb(wdecor, &test_wdecor_cb, &resp);459 ui_wdecor_minimize(wdecor);460 PCUT_ASSERT_TRUE(resp.minimize);461 462 ui_wdecor_destroy(wdecor);463 }464 465 /** Test ui_wdecor_maximize() */466 PCUT_TEST(maximize)467 {468 errno_t rc;469 ui_wdecor_t *wdecor;470 test_cb_resp_t resp;471 472 rc = ui_wdecor_create(NULL, "Hello", ui_wds_none, &wdecor);473 PCUT_ASSERT_ERRNO_VAL(EOK, rc);474 475 /* Maximize callback with no callbacks set */476 ui_wdecor_maximize(wdecor);477 478 /* Maxmimize callback with maximize callback not implemented */479 ui_wdecor_set_cb(wdecor, &dummy_wdecor_cb, NULL);480 ui_wdecor_maximize(wdecor);481 482 /* Maximize callback with real callback set */483 resp.maximize = false;484 ui_wdecor_set_cb(wdecor, &test_wdecor_cb, &resp);485 ui_wdecor_maximize(wdecor);486 PCUT_ASSERT_TRUE(resp.maximize);487 488 ui_wdecor_destroy(wdecor);489 }490 491 /** Test ui_wdecor_unmaximize() */492 PCUT_TEST(unmaximize)493 {494 errno_t rc;495 ui_wdecor_t *wdecor;496 test_cb_resp_t resp;497 498 rc = ui_wdecor_create(NULL, "Hello", ui_wds_none, &wdecor);499 PCUT_ASSERT_ERRNO_VAL(EOK, rc);500 501 /* Unmaximize callback with no callbacks set */502 ui_wdecor_unmaximize(wdecor);503 504 /* Unmaximize callback with unmaximize callback not implemented */505 ui_wdecor_set_cb(wdecor, &dummy_wdecor_cb, NULL);506 ui_wdecor_unmaximize(wdecor);507 508 /* Unmaximize callback with real callback set */509 resp.unmaximize = false;510 ui_wdecor_set_cb(wdecor, &test_wdecor_cb, &resp);511 ui_wdecor_unmaximize(wdecor);512 PCUT_ASSERT_TRUE(resp.unmaximize);513 514 ui_wdecor_destroy(wdecor);515 198 } 516 199 … … 548 231 test_cb_resp_t resp; 549 232 gfx_coord2_t pos; 550 sysarg_t pos_id;551 233 552 234 rc = ui_wdecor_create(NULL, "Hello", ui_wds_none, &wdecor); … … 555 237 pos.x = 3; 556 238 pos.y = 4; 557 pos_id = 5;558 239 559 240 /* Move callback with no callbacks set */ 560 ui_wdecor_move(wdecor, &pos , pos_id);241 ui_wdecor_move(wdecor, &pos); 561 242 562 243 /* Move callback with move callback not implemented */ 563 244 ui_wdecor_set_cb(wdecor, &dummy_wdecor_cb, NULL); 564 ui_wdecor_move(wdecor, &pos , pos_id);245 ui_wdecor_move(wdecor, &pos); 565 246 566 247 /* Move callback with real callback set */ … … 568 249 resp.pos.x = 0; 569 250 resp.pos.y = 0; 570 resp.pos_id = 0;571 251 ui_wdecor_set_cb(wdecor, &test_wdecor_cb, &resp); 572 ui_wdecor_move(wdecor, &pos , pos_id);252 ui_wdecor_move(wdecor, &pos); 573 253 PCUT_ASSERT_TRUE(resp.move); 574 254 PCUT_ASSERT_INT_EQUALS(pos.x, resp.pos.x); 575 255 PCUT_ASSERT_INT_EQUALS(pos.y, resp.pos.y); 576 PCUT_ASSERT_INT_EQUALS(pos_id, resp.pos_id);577 256 578 257 ui_wdecor_destroy(wdecor); … … 587 266 ui_wdecor_rsztype_t rsztype; 588 267 gfx_coord2_t pos; 589 sysarg_t pos_id;590 268 591 269 rc = ui_wdecor_create(NULL, "Hello", ui_wds_none, &wdecor); … … 595 273 pos.x = 3; 596 274 pos.y = 4; 597 pos_id = 5;598 275 599 276 /* Resize callback with no callbacks set */ 600 ui_wdecor_resize(wdecor, rsztype, &pos , pos_id);277 ui_wdecor_resize(wdecor, rsztype, &pos); 601 278 602 279 /* Resize callback with move callback not implemented */ 603 280 ui_wdecor_set_cb(wdecor, &dummy_wdecor_cb, NULL); 604 ui_wdecor_resize(wdecor, rsztype, &pos , pos_id);281 ui_wdecor_resize(wdecor, rsztype, &pos); 605 282 606 283 /* Resize callback with real callback set */ … … 610 287 resp.pos.y = 0; 611 288 ui_wdecor_set_cb(wdecor, &test_wdecor_cb, &resp); 612 ui_wdecor_resize(wdecor, rsztype, &pos , pos_id);289 ui_wdecor_resize(wdecor, rsztype, &pos); 613 290 PCUT_ASSERT_TRUE(resp.resize); 614 291 PCUT_ASSERT_INT_EQUALS(rsztype, resp.rsztype); 615 292 PCUT_ASSERT_INT_EQUALS(pos.x, resp.pos.x); 616 293 PCUT_ASSERT_INT_EQUALS(pos.y, resp.pos.y); 617 PCUT_ASSERT_INT_EQUALS(pos_id, resp.pos_id);618 294 619 295 ui_wdecor_destroy(wdecor); … … 654 330 PCUT_TEST(close_btn_clicked) 655 331 { 656 gfx_context_t *gc = NULL;657 test_gc_t tgc;658 ui_resource_t *resource = NULL;659 332 ui_wdecor_t *wdecor; 660 333 gfx_rect_t rect; … … 662 335 errno_t rc; 663 336 664 memset(&tgc, 0, sizeof(tgc)); 665 rc = gfx_context_new(&ops, &tgc, &gc); 666 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 667 668 rc = ui_resource_create(gc, false, &resource); 669 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 670 PCUT_ASSERT_NOT_NULL(resource); 671 672 rc = ui_wdecor_create(resource, "Hello", ui_wds_decorated, &wdecor); 337 rc = ui_wdecor_create(NULL, "Hello", ui_wds_none, &wdecor); 673 338 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 674 339 … … 688 353 689 354 ui_wdecor_destroy(wdecor); 690 ui_resource_destroy(resource);691 692 rc = gfx_context_delete(gc);693 PCUT_ASSERT_ERRNO_VAL(EOK, rc);694 355 } 695 356 … … 746 407 } 747 408 748 /** Pressing F10 generates sysmenu event. 749 * 750 * Note that in a window with menu bar the menu bar would claim F10 751 * so it would never be delivered to window decoration. 752 */ 753 PCUT_TEST(kbd_f10_sysmenu) 754 { 755 errno_t rc; 756 gfx_rect_t rect; 757 kbd_event_t event; 409 /** ui_wdecor_get_geom() with ui_wds_none produces the correct geometry */ 410 PCUT_TEST(get_geom_none) 411 { 758 412 gfx_context_t *gc = NULL; 759 413 test_gc_t tgc; 760 test_cb_resp_t resp;761 414 ui_resource_t *resource = NULL; 762 415 ui_wdecor_t *wdecor; 416 gfx_rect_t rect; 417 ui_wdecor_geom_t geom; 418 errno_t rc; 763 419 764 420 memset(&tgc, 0, sizeof(tgc)); … … 770 426 PCUT_ASSERT_NOT_NULL(resource); 771 427 772 rc = ui_wdecor_create(resource, "Hello", ui_wds_ decorated, &wdecor);428 rc = ui_wdecor_create(resource, "Hello", ui_wds_none, &wdecor); 773 429 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 774 430 … … 779 435 780 436 ui_wdecor_set_rect(wdecor, &rect); 781 782 ui_wdecor_set_cb(wdecor, &test_wdecor_cb, (void *) &resp); 783 784 resp.sysmenu_open = false; 785 786 event.type = KEY_PRESS; 787 event.mods = 0; 788 event.key = KC_F10; 789 event.kbd_id = 42; 790 ui_wdecor_kbd_event(wdecor, &event); 791 792 PCUT_ASSERT_TRUE(resp.sysmenu_open); 793 PCUT_ASSERT_INT_EQUALS(event.kbd_id, resp.idev_id); 437 ui_wdecor_get_geom(wdecor, &geom); 438 439 PCUT_ASSERT_INT_EQUALS(10, geom.interior_rect.p0.x); 440 PCUT_ASSERT_INT_EQUALS(20, geom.interior_rect.p0.y); 441 PCUT_ASSERT_INT_EQUALS(100, geom.interior_rect.p1.x); 442 PCUT_ASSERT_INT_EQUALS(200, geom.interior_rect.p1.y); 443 444 PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p0.x); 445 PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p0.y); 446 PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p1.x); 447 PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p1.y); 448 449 PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p0.x); 450 PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p0.y); 451 PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p1.x); 452 PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p1.y); 453 454 PCUT_ASSERT_INT_EQUALS(10, geom.app_area_rect.p0.x); 455 PCUT_ASSERT_INT_EQUALS(20, geom.app_area_rect.p0.y); 456 PCUT_ASSERT_INT_EQUALS(100, geom.app_area_rect.p1.x); 457 PCUT_ASSERT_INT_EQUALS(200, geom.app_area_rect.p1.y); 794 458 795 459 ui_wdecor_destroy(wdecor); … … 800 464 } 801 465 802 /** Down key with active sysmenu handle generates sysmenu open event */ 803 PCUT_TEST(kbd_down_sysmenu) 804 { 805 errno_t rc; 806 gfx_rect_t rect; 807 kbd_event_t event; 466 /** ui_wdecor_get_geom() with ui_wds_frame produces the correct geometry */ 467 PCUT_TEST(get_geom_frame) 468 { 808 469 gfx_context_t *gc = NULL; 809 470 test_gc_t tgc; 810 test_cb_resp_t resp;811 471 ui_resource_t *resource = NULL; 812 472 ui_wdecor_t *wdecor; 473 gfx_rect_t rect; 474 ui_wdecor_geom_t geom; 475 errno_t rc; 813 476 814 477 memset(&tgc, 0, sizeof(tgc)); … … 820 483 PCUT_ASSERT_NOT_NULL(resource); 821 484 822 rc = ui_wdecor_create(resource, "Hello", ui_wds_ decorated, &wdecor);485 rc = ui_wdecor_create(resource, "Hello", ui_wds_frame, &wdecor); 823 486 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 824 487 … … 829 492 830 493 ui_wdecor_set_rect(wdecor, &rect); 831 832 ui_wdecor_set_cb(wdecor, &test_wdecor_cb, (void *) &resp); 833 834 ui_wdecor_sysmenu_hdl_set_active(wdecor, true); 835 836 resp.sysmenu_open = false; 837 838 event.type = KEY_PRESS; 839 event.mods = 0; 840 event.key = KC_DOWN; 841 event.kbd_id = 42; 842 ui_wdecor_kbd_event(wdecor, &event); 843 844 PCUT_ASSERT_TRUE(resp.sysmenu_open); 845 PCUT_ASSERT_INT_EQUALS(event.kbd_id, resp.idev_id); 494 ui_wdecor_get_geom(wdecor, &geom); 495 496 PCUT_ASSERT_INT_EQUALS(14, geom.interior_rect.p0.x); 497 PCUT_ASSERT_INT_EQUALS(24, geom.interior_rect.p0.y); 498 PCUT_ASSERT_INT_EQUALS(96, geom.interior_rect.p1.x); 499 PCUT_ASSERT_INT_EQUALS(196, geom.interior_rect.p1.y); 500 501 PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p0.x); 502 PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p0.y); 503 PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p1.x); 504 PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p1.y); 505 506 PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p0.x); 507 PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p0.y); 508 PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p1.x); 509 PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p1.y); 510 511 PCUT_ASSERT_INT_EQUALS(14, geom.app_area_rect.p0.x); 512 PCUT_ASSERT_INT_EQUALS(24, geom.app_area_rect.p0.y); 513 PCUT_ASSERT_INT_EQUALS(96, geom.app_area_rect.p1.x); 514 PCUT_ASSERT_INT_EQUALS(196, geom.app_area_rect.p1.y); 846 515 847 516 ui_wdecor_destroy(wdecor); … … 852 521 } 853 522 854 /** Left key with active sysmenu handle generates sysmenu left event */ 855 PCUT_TEST(kbd_left_sysmenu) 856 { 857 errno_t rc; 858 gfx_rect_t rect; 859 kbd_event_t event; 523 /** ui_wdecor_get_geom() with ui_wds_frame | ui_wds_titlebar */ 524 PCUT_TEST(get_geom_frame_titlebar) 525 { 860 526 gfx_context_t *gc = NULL; 861 527 test_gc_t tgc; 862 test_cb_resp_t resp;863 528 ui_resource_t *resource = NULL; 864 529 ui_wdecor_t *wdecor; 530 gfx_rect_t rect; 531 ui_wdecor_geom_t geom; 532 errno_t rc; 865 533 866 534 memset(&tgc, 0, sizeof(tgc)); … … 872 540 PCUT_ASSERT_NOT_NULL(resource); 873 541 874 rc = ui_wdecor_create(resource, "Hello", ui_wds_decorated, &wdecor); 542 rc = ui_wdecor_create(resource, "Hello", ui_wds_frame | ui_wds_titlebar, 543 &wdecor); 875 544 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 876 545 … … 881 550 882 551 ui_wdecor_set_rect(wdecor, &rect); 883 884 ui_wdecor_set_cb(wdecor, &test_wdecor_cb, (void *) &resp); 885 886 ui_wdecor_sysmenu_hdl_set_active(wdecor, true); 887 888 resp.sysmenu_left = false; 889 890 event.type = KEY_PRESS; 891 event.mods = 0; 892 event.key = KC_LEFT; 893 event.kbd_id = 42; 894 ui_wdecor_kbd_event(wdecor, &event); 895 896 PCUT_ASSERT_TRUE(resp.sysmenu_left); 897 PCUT_ASSERT_INT_EQUALS(event.kbd_id, resp.idev_id); 552 ui_wdecor_get_geom(wdecor, &geom); 553 554 PCUT_ASSERT_INT_EQUALS(14, geom.interior_rect.p0.x); 555 PCUT_ASSERT_INT_EQUALS(24, geom.interior_rect.p0.y); 556 PCUT_ASSERT_INT_EQUALS(96, geom.interior_rect.p1.x); 557 PCUT_ASSERT_INT_EQUALS(196, geom.interior_rect.p1.y); 558 559 PCUT_ASSERT_INT_EQUALS(14, geom.title_bar_rect.p0.x); 560 PCUT_ASSERT_INT_EQUALS(24, geom.title_bar_rect.p0.y); 561 PCUT_ASSERT_INT_EQUALS(96, geom.title_bar_rect.p1.x); 562 PCUT_ASSERT_INT_EQUALS(46, geom.title_bar_rect.p1.y); 563 564 PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p0.x); 565 PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p0.y); 566 PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p1.x); 567 PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p1.y); 568 569 PCUT_ASSERT_INT_EQUALS(14, geom.app_area_rect.p0.x); 570 PCUT_ASSERT_INT_EQUALS(46, geom.app_area_rect.p0.y); 571 PCUT_ASSERT_INT_EQUALS(96, geom.app_area_rect.p1.x); 572 PCUT_ASSERT_INT_EQUALS(196, geom.app_area_rect.p1.y); 898 573 899 574 ui_wdecor_destroy(wdecor); … … 904 579 } 905 580 906 /** Right key with active sysmenu handle generates sysmenu right event */ 907 PCUT_TEST(kbd_right_sysmenu) 908 { 909 errno_t rc; 910 gfx_rect_t rect; 911 kbd_event_t event; 581 /** ui_wdecor_get_geom() with ui_wds_decorated produces the correct geometry */ 582 PCUT_TEST(get_geom_decorated) 583 { 912 584 gfx_context_t *gc = NULL; 913 585 test_gc_t tgc; 914 test_cb_resp_t resp;915 586 ui_resource_t *resource = NULL; 916 587 ui_wdecor_t *wdecor; 588 gfx_rect_t rect; 589 ui_wdecor_geom_t geom; 590 errno_t rc; 917 591 918 592 memset(&tgc, 0, sizeof(tgc)); … … 933 607 934 608 ui_wdecor_set_rect(wdecor, &rect); 935 936 ui_wdecor_set_cb(wdecor, &test_wdecor_cb, (void *) &resp); 937 938 ui_wdecor_sysmenu_hdl_set_active(wdecor, true); 939 940 resp.sysmenu_right = false; 941 942 event.type = KEY_PRESS; 943 event.mods = 0; 944 event.key = KC_RIGHT; 945 event.kbd_id = 42; 946 ui_wdecor_kbd_event(wdecor, &event); 947 948 PCUT_ASSERT_TRUE(resp.sysmenu_right); 949 PCUT_ASSERT_INT_EQUALS(event.kbd_id, resp.idev_id); 609 ui_wdecor_get_geom(wdecor, &geom); 610 611 PCUT_ASSERT_INT_EQUALS(14, geom.interior_rect.p0.x); 612 PCUT_ASSERT_INT_EQUALS(24, geom.interior_rect.p0.y); 613 PCUT_ASSERT_INT_EQUALS(96, geom.interior_rect.p1.x); 614 PCUT_ASSERT_INT_EQUALS(196, geom.interior_rect.p1.y); 615 616 PCUT_ASSERT_INT_EQUALS(14, geom.title_bar_rect.p0.x); 617 PCUT_ASSERT_INT_EQUALS(24, geom.title_bar_rect.p0.y); 618 PCUT_ASSERT_INT_EQUALS(96, geom.title_bar_rect.p1.x); 619 PCUT_ASSERT_INT_EQUALS(46, geom.title_bar_rect.p1.y); 620 621 PCUT_ASSERT_INT_EQUALS(75, geom.btn_close_rect.p0.x); 622 PCUT_ASSERT_INT_EQUALS(25, geom.btn_close_rect.p0.y); 623 PCUT_ASSERT_INT_EQUALS(95, geom.btn_close_rect.p1.x); 624 PCUT_ASSERT_INT_EQUALS(45, geom.btn_close_rect.p1.y); 625 626 PCUT_ASSERT_INT_EQUALS(14, geom.app_area_rect.p0.x); 627 PCUT_ASSERT_INT_EQUALS(46, geom.app_area_rect.p0.y); 628 PCUT_ASSERT_INT_EQUALS(96, geom.app_area_rect.p1.x); 629 PCUT_ASSERT_INT_EQUALS(196, geom.app_area_rect.p1.y); 950 630 951 631 ui_wdecor_destroy(wdecor); … … 956 636 } 957 637 958 /** Character key with active sysmenu handle generates sysmenu accel event */959 PCUT_TEST( kbd_accel_sysmenu)960 { 961 errno_t rc;638 /** ui_wdecor_rect_from_app() correctly converts application to window rect */ 639 PCUT_TEST(rect_from_app) 640 { 641 gfx_rect_t arect; 962 642 gfx_rect_t rect; 963 kbd_event_t event; 964 gfx_context_t *gc = NULL; 965 test_gc_t tgc; 966 test_cb_resp_t resp; 967 ui_resource_t *resource = NULL; 968 ui_wdecor_t *wdecor; 969 970 memset(&tgc, 0, sizeof(tgc)); 971 rc = gfx_context_new(&ops, &tgc, &gc); 972 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 973 974 rc = ui_resource_create(gc, false, &resource); 975 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 976 PCUT_ASSERT_NOT_NULL(resource); 977 978 rc = ui_wdecor_create(resource, "Hello", ui_wds_decorated, &wdecor); 643 644 arect.p0.x = 14; 645 arect.p0.y = 46; 646 arect.p1.x = 96; 647 arect.p1.y = 196; 648 649 ui_wdecor_rect_from_app(ui_wds_none, &arect, &rect); 650 651 PCUT_ASSERT_INT_EQUALS(14, rect.p0.x); 652 PCUT_ASSERT_INT_EQUALS(46, rect.p0.y); 653 PCUT_ASSERT_INT_EQUALS(96, rect.p1.x); 654 PCUT_ASSERT_INT_EQUALS(196, rect.p1.y); 655 656 ui_wdecor_rect_from_app(ui_wds_frame, &arect, &rect); 657 658 PCUT_ASSERT_INT_EQUALS(10, rect.p0.x); 659 PCUT_ASSERT_INT_EQUALS(42, rect.p0.y); 660 PCUT_ASSERT_INT_EQUALS(100, rect.p1.x); 661 PCUT_ASSERT_INT_EQUALS(200, rect.p1.y); 662 663 ui_wdecor_rect_from_app(ui_wds_decorated, &arect, &rect); 664 665 PCUT_ASSERT_INT_EQUALS(10, rect.p0.x); 666 PCUT_ASSERT_INT_EQUALS(20, rect.p0.y); 667 PCUT_ASSERT_INT_EQUALS(100, rect.p1.x); 668 PCUT_ASSERT_INT_EQUALS(200, rect.p1.y); 669 670 } 671 672 /** Test ui_wdecor_get_rsztype() */ 673 PCUT_TEST(get_rsztype) 674 { 675 ui_wdecor_t *wdecor; 676 gfx_rect_t rect; 677 ui_wdecor_rsztype_t rsztype; 678 gfx_coord2_t pos; 679 errno_t rc; 680 681 rc = ui_wdecor_create(NULL, "Hello", ui_wds_resizable, &wdecor); 979 682 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 980 683 … … 986 689 ui_wdecor_set_rect(wdecor, &rect); 987 690 988 ui_wdecor_set_cb(wdecor, &test_wdecor_cb, (void *) &resp); 989 990 ui_wdecor_sysmenu_hdl_set_active(wdecor, true); 991 992 resp.sysmenu_accel = false; 993 994 event.type = KEY_PRESS; 995 event.mods = 0; 996 event.key = KC_A; 997 event.c = 'a'; 998 event.kbd_id = 42; 999 ui_wdecor_kbd_event(wdecor, &event); 1000 1001 PCUT_ASSERT_TRUE(resp.sysmenu_accel); 1002 PCUT_ASSERT_INT_EQUALS(event.c, resp.accel); 1003 PCUT_ASSERT_INT_EQUALS(event.kbd_id, resp.idev_id); 1004 1005 ui_wdecor_destroy(wdecor); 1006 ui_resource_destroy(resource); 1007 1008 rc = gfx_context_delete(gc); 1009 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 1010 } 1011 1012 /** ui_wdecor_get_geom() with ui_wds_none produces the correct geometry */ 1013 PCUT_TEST(get_geom_none) 1014 { 1015 gfx_context_t *gc = NULL; 1016 test_gc_t tgc; 1017 ui_resource_t *resource = NULL; 1018 ui_wdecor_t *wdecor; 1019 gfx_rect_t rect; 1020 ui_wdecor_geom_t geom; 1021 errno_t rc; 1022 1023 memset(&tgc, 0, sizeof(tgc)); 1024 rc = gfx_context_new(&ops, &tgc, &gc); 1025 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 1026 1027 rc = ui_resource_create(gc, false, &resource); 1028 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 1029 PCUT_ASSERT_NOT_NULL(resource); 1030 1031 rc = ui_wdecor_create(resource, "Hello", ui_wds_none, &wdecor); 691 /* Outside of the window */ 692 pos.x = 0; 693 pos.y = -1; 694 rsztype = ui_wdecor_get_rsztype(wdecor, &pos); 695 PCUT_ASSERT_EQUALS(ui_wr_none, rsztype); 696 697 /* Middle of the window */ 698 pos.x = 50; 699 pos.y = 100; 700 rsztype = ui_wdecor_get_rsztype(wdecor, &pos); 701 PCUT_ASSERT_EQUALS(ui_wr_none, rsztype); 702 703 /* Top-left corner, but not on edge */ 704 pos.x = 20; 705 pos.y = 30; 706 rsztype = ui_wdecor_get_rsztype(wdecor, &pos); 707 PCUT_ASSERT_EQUALS(ui_wr_none, rsztype); 708 709 /* Top-left corner on top edge */ 710 pos.x = 20; 711 pos.y = 20; 712 rsztype = ui_wdecor_get_rsztype(wdecor, &pos); 713 PCUT_ASSERT_EQUALS(ui_wr_top_left, rsztype); 714 715 /* Top-left corner on left edge */ 716 pos.x = 10; 717 pos.y = 30; 718 rsztype = ui_wdecor_get_rsztype(wdecor, &pos); 719 PCUT_ASSERT_EQUALS(ui_wr_top_left, rsztype); 720 721 /* Top-right corner on top edge */ 722 pos.x = 90; 723 pos.y = 20; 724 rsztype = ui_wdecor_get_rsztype(wdecor, &pos); 725 PCUT_ASSERT_EQUALS(ui_wr_top_right, rsztype); 726 727 /* Top-right corner on right edge */ 728 pos.x = 99; 729 pos.y = 30; 730 rsztype = ui_wdecor_get_rsztype(wdecor, &pos); 731 PCUT_ASSERT_EQUALS(ui_wr_top_right, rsztype); 732 733 /* Top edge */ 734 pos.x = 50; 735 pos.y = 20; 736 rsztype = ui_wdecor_get_rsztype(wdecor, &pos); 737 PCUT_ASSERT_EQUALS(ui_wr_top, rsztype); 738 739 /* Bottom edge */ 740 pos.x = 50; 741 pos.y = 199; 742 rsztype = ui_wdecor_get_rsztype(wdecor, &pos); 743 PCUT_ASSERT_EQUALS(ui_wr_bottom, rsztype); 744 745 /* Left edge */ 746 pos.x = 10; 747 pos.y = 100; 748 rsztype = ui_wdecor_get_rsztype(wdecor, &pos); 749 PCUT_ASSERT_EQUALS(ui_wr_left, rsztype); 750 751 /* Right edge */ 752 pos.x = 99; 753 pos.y = 100; 754 rsztype = ui_wdecor_get_rsztype(wdecor, &pos); 755 PCUT_ASSERT_EQUALS(ui_wr_right, rsztype); 756 757 ui_wdecor_destroy(wdecor); 758 759 /* Non-resizable window */ 760 761 rc = ui_wdecor_create(NULL, "Hello", ui_wds_none, &wdecor); 1032 762 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 1033 763 … … 1038 768 1039 769 ui_wdecor_set_rect(wdecor, &rect); 1040 ui_wdecor_get_geom(wdecor, &geom);1041 1042 PCUT_ASSERT_INT_EQUALS(10, geom.interior_rect.p0.x);1043 PCUT_ASSERT_INT_EQUALS(20, geom.interior_rect.p0.y);1044 PCUT_ASSERT_INT_EQUALS(100, geom.interior_rect.p1.x);1045 PCUT_ASSERT_INT_EQUALS(200, geom.interior_rect.p1.y);1046 1047 PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p0.x);1048 PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p0.y);1049 PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p1.x);1050 PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p1.y);1051 1052 PCUT_ASSERT_INT_EQUALS(0, geom.sysmenu_hdl_rect.p0.x);1053 PCUT_ASSERT_INT_EQUALS(0, geom.sysmenu_hdl_rect.p0.y);1054 PCUT_ASSERT_INT_EQUALS(0, geom.sysmenu_hdl_rect.p1.x);1055 PCUT_ASSERT_INT_EQUALS(0, geom.sysmenu_hdl_rect.p1.y);1056 1057 PCUT_ASSERT_INT_EQUALS(0, geom.caption_rect.p0.x);1058 PCUT_ASSERT_INT_EQUALS(0, geom.caption_rect.p0.y);1059 PCUT_ASSERT_INT_EQUALS(0, geom.caption_rect.p1.x);1060 PCUT_ASSERT_INT_EQUALS(0, geom.caption_rect.p1.y);1061 1062 PCUT_ASSERT_INT_EQUALS(0, geom.btn_min_rect.p0.x);1063 PCUT_ASSERT_INT_EQUALS(0, geom.btn_min_rect.p0.y);1064 PCUT_ASSERT_INT_EQUALS(0, geom.btn_min_rect.p1.x);1065 PCUT_ASSERT_INT_EQUALS(0, geom.btn_min_rect.p1.y);1066 1067 PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p0.x);1068 PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p0.y);1069 PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p1.x);1070 PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p1.y);1071 1072 PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p0.x);1073 PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p0.y);1074 PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p1.x);1075 PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p1.y);1076 1077 PCUT_ASSERT_INT_EQUALS(10, geom.app_area_rect.p0.x);1078 PCUT_ASSERT_INT_EQUALS(20, geom.app_area_rect.p0.y);1079 PCUT_ASSERT_INT_EQUALS(100, geom.app_area_rect.p1.x);1080 PCUT_ASSERT_INT_EQUALS(200, geom.app_area_rect.p1.y);1081 1082 ui_wdecor_destroy(wdecor);1083 ui_resource_destroy(resource);1084 1085 rc = gfx_context_delete(gc);1086 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1087 }1088 1089 /** ui_wdecor_get_geom() with ui_wds_frame produces the correct geometry */1090 PCUT_TEST(get_geom_frame)1091 {1092 gfx_context_t *gc = NULL;1093 test_gc_t tgc;1094 ui_resource_t *resource = NULL;1095 ui_wdecor_t *wdecor;1096 gfx_rect_t rect;1097 ui_wdecor_geom_t geom;1098 errno_t rc;1099 1100 memset(&tgc, 0, sizeof(tgc));1101 rc = gfx_context_new(&ops, &tgc, &gc);1102 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1103 1104 rc = ui_resource_create(gc, false, &resource);1105 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1106 PCUT_ASSERT_NOT_NULL(resource);1107 1108 rc = ui_wdecor_create(resource, "Hello", ui_wds_frame, &wdecor);1109 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1110 1111 rect.p0.x = 10;1112 rect.p0.y = 20;1113 rect.p1.x = 100;1114 rect.p1.y = 200;1115 1116 ui_wdecor_set_rect(wdecor, &rect);1117 ui_wdecor_get_geom(wdecor, &geom);1118 1119 PCUT_ASSERT_INT_EQUALS(14, geom.interior_rect.p0.x);1120 PCUT_ASSERT_INT_EQUALS(24, geom.interior_rect.p0.y);1121 PCUT_ASSERT_INT_EQUALS(96, geom.interior_rect.p1.x);1122 PCUT_ASSERT_INT_EQUALS(196, geom.interior_rect.p1.y);1123 1124 PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p0.x);1125 PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p0.y);1126 PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p1.x);1127 PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p1.y);1128 1129 PCUT_ASSERT_INT_EQUALS(0, geom.sysmenu_hdl_rect.p0.x);1130 PCUT_ASSERT_INT_EQUALS(0, geom.sysmenu_hdl_rect.p0.y);1131 PCUT_ASSERT_INT_EQUALS(0, geom.sysmenu_hdl_rect.p1.x);1132 PCUT_ASSERT_INT_EQUALS(0, geom.sysmenu_hdl_rect.p1.y);1133 1134 PCUT_ASSERT_INT_EQUALS(0, geom.caption_rect.p0.x);1135 PCUT_ASSERT_INT_EQUALS(0, geom.caption_rect.p0.y);1136 PCUT_ASSERT_INT_EQUALS(0, geom.caption_rect.p1.x);1137 PCUT_ASSERT_INT_EQUALS(0, geom.caption_rect.p1.y);1138 1139 PCUT_ASSERT_INT_EQUALS(0, geom.btn_min_rect.p0.x);1140 PCUT_ASSERT_INT_EQUALS(0, geom.btn_min_rect.p0.y);1141 PCUT_ASSERT_INT_EQUALS(0, geom.btn_min_rect.p1.x);1142 PCUT_ASSERT_INT_EQUALS(0, geom.btn_min_rect.p1.y);1143 1144 PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p0.x);1145 PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p0.y);1146 PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p1.x);1147 PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p1.y);1148 1149 PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p0.x);1150 PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p0.y);1151 PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p1.x);1152 PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p1.y);1153 1154 PCUT_ASSERT_INT_EQUALS(14, geom.app_area_rect.p0.x);1155 PCUT_ASSERT_INT_EQUALS(24, geom.app_area_rect.p0.y);1156 PCUT_ASSERT_INT_EQUALS(96, geom.app_area_rect.p1.x);1157 PCUT_ASSERT_INT_EQUALS(196, geom.app_area_rect.p1.y);1158 1159 ui_wdecor_destroy(wdecor);1160 ui_resource_destroy(resource);1161 1162 rc = gfx_context_delete(gc);1163 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1164 }1165 1166 /** ui_wdecor_get_geom() with ui_wds_frame | ui_wds_titlebar */1167 PCUT_TEST(get_geom_frame_titlebar)1168 {1169 gfx_context_t *gc = NULL;1170 test_gc_t tgc;1171 ui_resource_t *resource = NULL;1172 ui_wdecor_t *wdecor;1173 gfx_rect_t rect;1174 ui_wdecor_geom_t geom;1175 errno_t rc;1176 1177 memset(&tgc, 0, sizeof(tgc));1178 rc = gfx_context_new(&ops, &tgc, &gc);1179 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1180 1181 rc = ui_resource_create(gc, false, &resource);1182 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1183 PCUT_ASSERT_NOT_NULL(resource);1184 1185 rc = ui_wdecor_create(resource, "Hello", ui_wds_frame | ui_wds_titlebar,1186 &wdecor);1187 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1188 1189 rect.p0.x = 10;1190 rect.p0.y = 20;1191 rect.p1.x = 100;1192 rect.p1.y = 200;1193 1194 ui_wdecor_set_rect(wdecor, &rect);1195 ui_wdecor_get_geom(wdecor, &geom);1196 1197 PCUT_ASSERT_INT_EQUALS(14, geom.interior_rect.p0.x);1198 PCUT_ASSERT_INT_EQUALS(24, geom.interior_rect.p0.y);1199 PCUT_ASSERT_INT_EQUALS(96, geom.interior_rect.p1.x);1200 PCUT_ASSERT_INT_EQUALS(196, geom.interior_rect.p1.y);1201 1202 PCUT_ASSERT_INT_EQUALS(14, geom.title_bar_rect.p0.x);1203 PCUT_ASSERT_INT_EQUALS(24, geom.title_bar_rect.p0.y);1204 PCUT_ASSERT_INT_EQUALS(96, geom.title_bar_rect.p1.x);1205 PCUT_ASSERT_INT_EQUALS(46, geom.title_bar_rect.p1.y);1206 1207 PCUT_ASSERT_INT_EQUALS(0, geom.sysmenu_hdl_rect.p0.x);1208 PCUT_ASSERT_INT_EQUALS(0, geom.sysmenu_hdl_rect.p0.y);1209 PCUT_ASSERT_INT_EQUALS(0, geom.sysmenu_hdl_rect.p1.x);1210 PCUT_ASSERT_INT_EQUALS(0, geom.sysmenu_hdl_rect.p1.y);1211 1212 PCUT_ASSERT_INT_EQUALS(18, geom.caption_rect.p0.x);1213 PCUT_ASSERT_INT_EQUALS(24, geom.caption_rect.p0.y);1214 PCUT_ASSERT_INT_EQUALS(91, geom.caption_rect.p1.x);1215 PCUT_ASSERT_INT_EQUALS(46, geom.caption_rect.p1.y);1216 1217 PCUT_ASSERT_INT_EQUALS(0, geom.btn_min_rect.p0.x);1218 PCUT_ASSERT_INT_EQUALS(0, geom.btn_min_rect.p0.y);1219 PCUT_ASSERT_INT_EQUALS(0, geom.btn_min_rect.p1.x);1220 PCUT_ASSERT_INT_EQUALS(0, geom.btn_min_rect.p1.y);1221 1222 PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p0.x);1223 PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p0.y);1224 PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p1.x);1225 PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p1.y);1226 1227 PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p0.x);1228 PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p0.y);1229 PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p1.x);1230 PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p1.y);1231 1232 PCUT_ASSERT_INT_EQUALS(14, geom.app_area_rect.p0.x);1233 PCUT_ASSERT_INT_EQUALS(46, geom.app_area_rect.p0.y);1234 PCUT_ASSERT_INT_EQUALS(96, geom.app_area_rect.p1.x);1235 PCUT_ASSERT_INT_EQUALS(196, geom.app_area_rect.p1.y);1236 1237 ui_wdecor_destroy(wdecor);1238 ui_resource_destroy(resource);1239 1240 rc = gfx_context_delete(gc);1241 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1242 }1243 1244 /** ui_wdecor_get_geom() with ui_wds_decorated produces the correct geometry */1245 PCUT_TEST(get_geom_decorated)1246 {1247 gfx_context_t *gc = NULL;1248 test_gc_t tgc;1249 ui_resource_t *resource = NULL;1250 ui_wdecor_t *wdecor;1251 gfx_rect_t rect;1252 ui_wdecor_geom_t geom;1253 errno_t rc;1254 1255 memset(&tgc, 0, sizeof(tgc));1256 rc = gfx_context_new(&ops, &tgc, &gc);1257 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1258 1259 rc = ui_resource_create(gc, false, &resource);1260 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1261 PCUT_ASSERT_NOT_NULL(resource);1262 1263 rc = ui_wdecor_create(resource, "Hello", ui_wds_decorated, &wdecor);1264 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1265 1266 rect.p0.x = 10;1267 rect.p0.y = 20;1268 rect.p1.x = 100;1269 rect.p1.y = 200;1270 1271 ui_wdecor_set_rect(wdecor, &rect);1272 ui_wdecor_get_geom(wdecor, &geom);1273 1274 PCUT_ASSERT_INT_EQUALS(14, geom.interior_rect.p0.x);1275 PCUT_ASSERT_INT_EQUALS(24, geom.interior_rect.p0.y);1276 PCUT_ASSERT_INT_EQUALS(96, geom.interior_rect.p1.x);1277 PCUT_ASSERT_INT_EQUALS(196, geom.interior_rect.p1.y);1278 1279 PCUT_ASSERT_INT_EQUALS(14, geom.title_bar_rect.p0.x);1280 PCUT_ASSERT_INT_EQUALS(24, geom.title_bar_rect.p0.y);1281 PCUT_ASSERT_INT_EQUALS(96, geom.title_bar_rect.p1.x);1282 PCUT_ASSERT_INT_EQUALS(46, geom.title_bar_rect.p1.y);1283 1284 PCUT_ASSERT_INT_EQUALS(15, geom.sysmenu_hdl_rect.p0.x);1285 PCUT_ASSERT_INT_EQUALS(25, geom.sysmenu_hdl_rect.p0.y);1286 PCUT_ASSERT_INT_EQUALS(35, geom.sysmenu_hdl_rect.p1.x);1287 PCUT_ASSERT_INT_EQUALS(45, geom.sysmenu_hdl_rect.p1.y);1288 1289 PCUT_ASSERT_INT_EQUALS(38, geom.caption_rect.p0.x);1290 PCUT_ASSERT_INT_EQUALS(24, geom.caption_rect.p0.y);1291 PCUT_ASSERT_INT_EQUALS(51, geom.caption_rect.p1.x);1292 PCUT_ASSERT_INT_EQUALS(46, geom.caption_rect.p1.y);1293 1294 PCUT_ASSERT_INT_EQUALS(55, geom.btn_min_rect.p0.x);1295 PCUT_ASSERT_INT_EQUALS(25, geom.btn_min_rect.p0.y);1296 PCUT_ASSERT_INT_EQUALS(75, geom.btn_min_rect.p1.x);1297 PCUT_ASSERT_INT_EQUALS(45, geom.btn_min_rect.p1.y);1298 1299 /* Maximize button is not in ui_wds_decorated */1300 PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p0.x);1301 PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p0.y);1302 PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p1.x);1303 PCUT_ASSERT_INT_EQUALS(0, geom.btn_max_rect.p1.y);1304 1305 PCUT_ASSERT_INT_EQUALS(75, geom.btn_close_rect.p0.x);1306 PCUT_ASSERT_INT_EQUALS(25, geom.btn_close_rect.p0.y);1307 PCUT_ASSERT_INT_EQUALS(95, geom.btn_close_rect.p1.x);1308 PCUT_ASSERT_INT_EQUALS(45, geom.btn_close_rect.p1.y);1309 1310 PCUT_ASSERT_INT_EQUALS(14, geom.app_area_rect.p0.x);1311 PCUT_ASSERT_INT_EQUALS(46, geom.app_area_rect.p0.y);1312 PCUT_ASSERT_INT_EQUALS(96, geom.app_area_rect.p1.x);1313 PCUT_ASSERT_INT_EQUALS(196, geom.app_area_rect.p1.y);1314 1315 ui_wdecor_destroy(wdecor);1316 ui_resource_destroy(resource);1317 1318 rc = gfx_context_delete(gc);1319 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1320 }1321 1322 /** ui_wdecor_rect_from_app() correctly converts application to window rect */1323 PCUT_TEST(rect_from_app)1324 {1325 errno_t rc;1326 ui_t *ui = NULL;1327 gfx_rect_t arect;1328 gfx_rect_t rect;1329 1330 rc = ui_create_disp(NULL, &ui);1331 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1332 1333 arect.p0.x = 14;1334 arect.p0.y = 46;1335 arect.p1.x = 96;1336 arect.p1.y = 196;1337 1338 ui_wdecor_rect_from_app(ui, ui_wds_none, &arect, &rect);1339 1340 PCUT_ASSERT_INT_EQUALS(14, rect.p0.x);1341 PCUT_ASSERT_INT_EQUALS(46, rect.p0.y);1342 PCUT_ASSERT_INT_EQUALS(96, rect.p1.x);1343 PCUT_ASSERT_INT_EQUALS(196, rect.p1.y);1344 1345 ui_wdecor_rect_from_app(ui, ui_wds_frame, &arect, &rect);1346 1347 PCUT_ASSERT_INT_EQUALS(10, rect.p0.x);1348 PCUT_ASSERT_INT_EQUALS(42, rect.p0.y);1349 PCUT_ASSERT_INT_EQUALS(100, rect.p1.x);1350 PCUT_ASSERT_INT_EQUALS(200, rect.p1.y);1351 1352 ui_wdecor_rect_from_app(ui, ui_wds_decorated, &arect, &rect);1353 1354 PCUT_ASSERT_INT_EQUALS(10, rect.p0.x);1355 PCUT_ASSERT_INT_EQUALS(20, rect.p0.y);1356 PCUT_ASSERT_INT_EQUALS(100, rect.p1.x);1357 PCUT_ASSERT_INT_EQUALS(200, rect.p1.y);1358 1359 ui_destroy(ui);1360 }1361 1362 /** Test ui_wdecor_get_rsztype() */1363 PCUT_TEST(get_rsztype)1364 {1365 gfx_context_t *gc = NULL;1366 test_gc_t tgc;1367 ui_resource_t *resource = NULL;1368 ui_wdecor_t *wdecor;1369 gfx_rect_t rect;1370 ui_wdecor_rsztype_t rsztype;1371 gfx_coord2_t pos;1372 errno_t rc;1373 1374 memset(&tgc, 0, sizeof(tgc));1375 rc = gfx_context_new(&ops, &tgc, &gc);1376 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1377 1378 rc = ui_resource_create(gc, false, &resource);1379 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1380 PCUT_ASSERT_NOT_NULL(resource);1381 1382 rc = ui_wdecor_create(resource, "Hello", ui_wds_resizable, &wdecor);1383 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1384 1385 rect.p0.x = 10;1386 rect.p0.y = 20;1387 rect.p1.x = 100;1388 rect.p1.y = 200;1389 1390 ui_wdecor_set_rect(wdecor, &rect);1391 1392 /* Outside of the window */1393 pos.x = 0;1394 pos.y = -1;1395 rsztype = ui_wdecor_get_rsztype(wdecor, &pos);1396 PCUT_ASSERT_EQUALS(ui_wr_none, rsztype);1397 1398 /* Middle of the window */1399 pos.x = 50;1400 pos.y = 100;1401 rsztype = ui_wdecor_get_rsztype(wdecor, &pos);1402 PCUT_ASSERT_EQUALS(ui_wr_none, rsztype);1403 1404 /* Top-left corner, but not on edge */1405 pos.x = 20;1406 pos.y = 30;1407 rsztype = ui_wdecor_get_rsztype(wdecor, &pos);1408 PCUT_ASSERT_EQUALS(ui_wr_none, rsztype);1409 1410 /* Top-left corner on top edge */1411 pos.x = 20;1412 pos.y = 20;1413 rsztype = ui_wdecor_get_rsztype(wdecor, &pos);1414 PCUT_ASSERT_EQUALS(ui_wr_top_left, rsztype);1415 1416 /* Top-left corner on left edge */1417 pos.x = 10;1418 pos.y = 30;1419 rsztype = ui_wdecor_get_rsztype(wdecor, &pos);1420 PCUT_ASSERT_EQUALS(ui_wr_top_left, rsztype);1421 1422 /* Top-right corner on top edge */1423 pos.x = 90;1424 pos.y = 20;1425 rsztype = ui_wdecor_get_rsztype(wdecor, &pos);1426 PCUT_ASSERT_EQUALS(ui_wr_top_right, rsztype);1427 1428 /* Top-right corner on right edge */1429 pos.x = 99;1430 pos.y = 30;1431 rsztype = ui_wdecor_get_rsztype(wdecor, &pos);1432 PCUT_ASSERT_EQUALS(ui_wr_top_right, rsztype);1433 1434 /* Top edge */1435 pos.x = 50;1436 pos.y = 20;1437 rsztype = ui_wdecor_get_rsztype(wdecor, &pos);1438 PCUT_ASSERT_EQUALS(ui_wr_top, rsztype);1439 1440 /* Bottom edge */1441 pos.x = 50;1442 pos.y = 199;1443 rsztype = ui_wdecor_get_rsztype(wdecor, &pos);1444 PCUT_ASSERT_EQUALS(ui_wr_bottom, rsztype);1445 1446 /* Left edge */1447 pos.x = 10;1448 pos.y = 100;1449 rsztype = ui_wdecor_get_rsztype(wdecor, &pos);1450 PCUT_ASSERT_EQUALS(ui_wr_left, rsztype);1451 1452 /* Right edge */1453 pos.x = 99;1454 pos.y = 100;1455 rsztype = ui_wdecor_get_rsztype(wdecor, &pos);1456 PCUT_ASSERT_EQUALS(ui_wr_right, rsztype);1457 1458 ui_wdecor_destroy(wdecor);1459 1460 /* Non-resizable window */1461 1462 rc = ui_wdecor_create(resource, "Hello", ui_wds_none, &wdecor);1463 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1464 1465 rect.p0.x = 10;1466 rect.p0.y = 20;1467 rect.p1.x = 100;1468 rect.p1.y = 200;1469 1470 ui_wdecor_set_rect(wdecor, &rect);1471 770 1472 771 pos.x = 10; … … 1476 775 1477 776 ui_wdecor_destroy(wdecor); 1478 ui_resource_destroy(resource);1479 1480 rc = gfx_context_delete(gc);1481 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1482 777 } 1483 778 … … 1508 803 PCUT_TEST(frame_pos_event) 1509 804 { 1510 gfx_context_t *gc = NULL;1511 test_gc_t tgc;1512 ui_resource_t *resource = NULL;1513 805 ui_wdecor_t *wdecor; 1514 806 gfx_rect_t rect; … … 1517 809 errno_t rc; 1518 810 1519 memset(&tgc, 0, sizeof(tgc)); 1520 rc = gfx_context_new(&ops, &tgc, &gc); 1521 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 1522 1523 rc = ui_resource_create(gc, false, &resource); 1524 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 1525 PCUT_ASSERT_NOT_NULL(resource); 1526 1527 rc = ui_wdecor_create(resource, "Hello", ui_wds_resizable, &wdecor); 811 rc = ui_wdecor_create(NULL, "Hello", ui_wds_resizable, &wdecor); 1528 812 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 1529 813 … … 1561 845 1562 846 ui_wdecor_destroy(wdecor); 1563 ui_resource_destroy(resource);1564 1565 rc = gfx_context_delete(gc);1566 PCUT_ASSERT_ERRNO_VAL(EOK, rc);1567 847 } 1568 848 … … 1656 936 } 1657 937 1658 static void test_wdecor_sysmenu_open(ui_wdecor_t *wdecor, void *arg, 1659 sysarg_t idev_id) 938 static void test_wdecor_close(ui_wdecor_t *wdecor, void *arg) 1660 939 { 1661 940 test_cb_resp_t *resp = (test_cb_resp_t *) arg; 1662 941 1663 resp->sysmenu_open = true;1664 resp->idev_id = idev_id;1665 }1666 1667 static void test_wdecor_sysmenu_left(ui_wdecor_t *wdecor, void *arg,1668 sysarg_t idev_id)1669 {1670 test_cb_resp_t *resp = (test_cb_resp_t *) arg;1671 1672 resp->sysmenu_left = true;1673 resp->idev_id = idev_id;1674 }1675 1676 static void test_wdecor_sysmenu_right(ui_wdecor_t *wdecor, void *arg,1677 sysarg_t idev_id)1678 {1679 test_cb_resp_t *resp = (test_cb_resp_t *) arg;1680 1681 resp->sysmenu_right = true;1682 resp->idev_id = idev_id;1683 }1684 1685 static void test_wdecor_sysmenu_accel(ui_wdecor_t *wdecor, void *arg,1686 char32_t accel, sysarg_t idev_id)1687 {1688 test_cb_resp_t *resp = (test_cb_resp_t *) arg;1689 1690 resp->sysmenu_accel = true;1691 resp->accel = accel;1692 resp->idev_id = idev_id;1693 }1694 1695 static void test_wdecor_minimize(ui_wdecor_t *wdecor, void *arg)1696 {1697 test_cb_resp_t *resp = (test_cb_resp_t *) arg;1698 1699 resp->minimize = true;1700 }1701 1702 static void test_wdecor_maximize(ui_wdecor_t *wdecor, void *arg)1703 {1704 test_cb_resp_t *resp = (test_cb_resp_t *) arg;1705 1706 resp->maximize = true;1707 }1708 1709 static void test_wdecor_unmaximize(ui_wdecor_t *wdecor, void *arg)1710 {1711 test_cb_resp_t *resp = (test_cb_resp_t *) arg;1712 1713 resp->unmaximize = true;1714 }1715 1716 static void test_wdecor_close(ui_wdecor_t *wdecor, void *arg)1717 {1718 test_cb_resp_t *resp = (test_cb_resp_t *) arg;1719 1720 942 resp->close = true; 1721 943 } 1722 944 1723 static void test_wdecor_move(ui_wdecor_t *wdecor, void *arg, gfx_coord2_t *pos, 1724 sysarg_t pos_id) 945 static void test_wdecor_move(ui_wdecor_t *wdecor, void *arg, gfx_coord2_t *pos) 1725 946 { 1726 947 test_cb_resp_t *resp = (test_cb_resp_t *) arg; … … 1728 949 resp->move = true; 1729 950 resp->pos = *pos; 1730 resp->pos_id = pos_id;1731 951 } 1732 952 1733 953 static void test_wdecor_resize(ui_wdecor_t *wdecor, void *arg, 1734 ui_wdecor_rsztype_t rsztype, gfx_coord2_t *pos , sysarg_t pos_id)954 ui_wdecor_rsztype_t rsztype, gfx_coord2_t *pos) 1735 955 { 1736 956 test_cb_resp_t *resp = (test_cb_resp_t *) arg; … … 1739 959 resp->rsztype = rsztype; 1740 960 resp->pos = *pos; 1741 resp->pos_id = pos_id;1742 961 } 1743 962
Note:
See TracChangeset
for help on using the changeset viewer.