Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/hid/display/test/window.c

    rdd7df1c r9e84d2c  
    11/*
    2  * Copyright (c) 2023 Jiri Svoboda
     2 * Copyright (c) 2019 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    3636#include "../client.h"
    3737#include "../display.h"
    38 #include "../idevcfg.h"
    3938#include "../seat.h"
    4039#include "../window.h"
     
    5251};
    5352
    54 /** Test creating and destroying window */
    55 PCUT_TEST(create_destroy)
    56 {
    57         ds_display_t *disp;
    58         ds_client_t *client;
    59         ds_seat_t *seat;
    60         ds_window_t *wnd;
    61         display_wnd_params_t params;
    62         errno_t rc;
    63 
    64         rc = ds_display_create(NULL, df_none, &disp);
    65         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    66 
    67         rc = ds_client_create(disp, NULL, NULL, &client);
    68         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    69 
    70         rc = ds_seat_create(disp, "Alice", &seat);
    71         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    72 
    73         display_wnd_params_init(&params);
    74         params.rect.p0.x = params.rect.p0.y = 0;
    75         params.rect.p1.x = params.rect.p1.y = 10;
    76 
    77         rc = ds_window_create(client, &params, &wnd);
    78         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    79 
    80         ds_window_destroy(wnd);
    81         ds_seat_destroy(seat);
    82         ds_client_destroy(client);
    83         ds_display_destroy(disp);
    84 }
    85 
    86 /** Test ds_window_bring_to_top() brings window to top */
    87 PCUT_TEST(bring_to_top)
    88 {
    89         ds_display_t *disp;
    90         ds_client_t *client;
    91         ds_seat_t *seat;
    92         ds_window_t *w1;
    93         ds_window_t *w2;
    94         display_wnd_params_t params;
    95         errno_t rc;
    96 
    97         rc = ds_display_create(NULL, df_none, &disp);
    98         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    99 
    100         rc = ds_client_create(disp, NULL, NULL, &client);
    101         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    102 
    103         rc = ds_seat_create(disp, "Alice", &seat);
    104         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    105 
    106         display_wnd_params_init(&params);
    107         params.rect.p0.x = params.rect.p0.y = 0;
    108         params.rect.p1.x = params.rect.p1.y = 10;
    109 
    110         rc = ds_window_create(client, &params, &w1);
    111         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    112 
    113         rc = ds_window_create(client, &params, &w2);
    114         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    115 
    116         /* w2 should be on the top */
    117         PCUT_ASSERT_EQUALS(w2, ds_display_first_window(disp));
    118 
    119         /* Bring w1 to top */
    120         ds_window_bring_to_top(w1);
    121 
    122         /* Now w1 should be on the top */
    123         PCUT_ASSERT_EQUALS(w1, ds_display_first_window(disp));
    124 
    125         ds_window_destroy(w1);
    126         ds_window_destroy(w2);
    127         ds_seat_destroy(seat);
    128         ds_client_destroy(client);
    129         ds_display_destroy(disp);
    130 }
    131 
    13253/** Test ds_window_resize(). */
    13354PCUT_TEST(window_resize)
     
    14869        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    14970
    150         rc = ds_seat_create(disp, "Alice", &seat);
     71        rc = ds_seat_create(disp, &seat);
    15172        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    15273
     
    17899}
    179100
    180 /** Test ds_window_get_pos(). */
    181 PCUT_TEST(get_pos)
    182 {
    183         ds_display_t *disp;
    184         ds_client_t *client;
    185         ds_seat_t *seat;
    186         ds_window_t *wnd;
    187         display_wnd_params_t params;
    188         gfx_coord2_t pos;
    189         errno_t rc;
    190 
    191         rc = ds_display_create(NULL, df_none, &disp);
    192         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    193 
    194         rc = ds_client_create(disp, NULL, NULL, &client);
    195         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    196 
    197         rc = ds_seat_create(disp, "Alice", &seat);
    198         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    199 
    200         display_wnd_params_init(&params);
    201         params.rect.p0.x = params.rect.p0.y = 0;
    202         params.rect.p1.x = params.rect.p1.y = 10;
    203 
    204         rc = ds_window_create(client, &params, &wnd);
    205         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    206 
    207         wnd->dpos.x = 100;
    208         wnd->dpos.y = 100;
    209 
    210         ds_window_get_pos(wnd, &pos);
    211 
    212         PCUT_ASSERT_INT_EQUALS(100, pos.x);
    213         PCUT_ASSERT_INT_EQUALS(100, pos.y);
    214 
    215         ds_window_destroy(wnd);
    216         ds_seat_destroy(seat);
    217         ds_client_destroy(client);
    218         ds_display_destroy(disp);
    219 }
    220 
    221 /** Test ds_window_get_max_rect(). */
    222 PCUT_TEST(get_max_rect)
    223 {
    224         ds_display_t *disp;
    225         ds_client_t *client;
    226         ds_seat_t *seat;
    227         ds_window_t *wnd;
    228         display_wnd_params_t params;
    229         gfx_rect_t rect;
    230         errno_t rc;
    231 
    232         rc = ds_display_create(NULL, df_none, &disp);
    233         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    234 
    235         rc = ds_client_create(disp, NULL, NULL, &client);
    236         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    237 
    238         rc = ds_seat_create(disp, "Alice", &seat);
    239         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    240 
    241         display_wnd_params_init(&params);
    242         params.rect.p0.x = params.rect.p0.y = 0;
    243         params.rect.p1.x = params.rect.p1.y = 10;
    244 
    245         rc = ds_window_create(client, &params, &wnd);
    246         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    247 
    248         wnd->dpos.x = 100;
    249         wnd->dpos.y = 100;
    250 
    251         ds_window_get_max_rect(wnd, &rect);
    252 
    253         PCUT_ASSERT_INT_EQUALS(disp->rect.p0.x, rect.p0.x);
    254         PCUT_ASSERT_INT_EQUALS(disp->rect.p0.y, rect.p0.y);
    255         PCUT_ASSERT_INT_EQUALS(disp->rect.p1.x, rect.p1.x);
    256         PCUT_ASSERT_INT_EQUALS(disp->rect.p1.y, rect.p1.y);
    257 
    258         ds_window_destroy(wnd);
    259         ds_seat_destroy(seat);
    260         ds_client_destroy(client);
    261         ds_display_destroy(disp);
    262 }
    263 
    264 /** Test ds_window_minimize(). */
    265 PCUT_TEST(window_minimize)
    266 {
    267         ds_display_t *disp;
    268         ds_client_t *client;
    269         ds_seat_t *seat;
    270         ds_window_t *wnd;
    271         display_wnd_params_t params;
    272         errno_t rc;
    273 
    274         rc = ds_display_create(NULL, df_none, &disp);
    275         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    276 
    277         rc = ds_client_create(disp, NULL, NULL, &client);
    278         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    279 
    280         rc = ds_seat_create(disp, "Alice", &seat);
    281         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    282 
    283         display_wnd_params_init(&params);
    284         params.rect.p0.x = params.rect.p0.y = 0;
    285         params.rect.p1.x = params.rect.p1.y = 10;
    286 
    287         rc = ds_window_create(client, &params, &wnd);
    288         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    289 
    290         rc = ds_window_minimize(wnd);
    291         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    292 
    293         PCUT_ASSERT_INT_EQUALS(wndf_minimized, wnd->flags & wndf_minimized);
    294 
    295         ds_window_destroy(wnd);
    296         ds_seat_destroy(seat);
    297         ds_client_destroy(client);
    298         ds_display_destroy(disp);
    299 }
    300 
    301 /** Test ds_window_unminimize(). */
    302 PCUT_TEST(window_unminimize)
    303 {
    304         ds_display_t *disp;
    305         ds_client_t *client;
    306         ds_seat_t *seat;
    307         ds_window_t *wnd;
    308         display_wnd_params_t params;
    309         errno_t rc;
    310 
    311         rc = ds_display_create(NULL, df_none, &disp);
    312         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    313 
    314         rc = ds_client_create(disp, NULL, NULL, &client);
    315         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    316 
    317         rc = ds_seat_create(disp, "Alice", &seat);
    318         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    319 
    320         display_wnd_params_init(&params);
    321         params.flags |= wndf_minimized;
    322         params.rect.p0.x = params.rect.p0.y = 0;
    323         params.rect.p1.x = params.rect.p1.y = 10;
    324 
    325         rc = ds_window_create(client, &params, &wnd);
    326         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    327 
    328         rc = ds_window_unminimize(wnd);
    329         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    330 
    331         PCUT_ASSERT_INT_EQUALS(0, wnd->flags & wndf_minimized);
    332 
    333         ds_window_destroy(wnd);
    334         ds_seat_destroy(seat);
    335         ds_client_destroy(client);
    336         ds_display_destroy(disp);
    337 }
    338 
    339 /** Test ds_window_maximize(). */
    340 PCUT_TEST(window_maximize)
    341 {
    342         ds_display_t *disp;
    343         ds_client_t *client;
    344         ds_seat_t *seat;
    345         ds_window_t *wnd;
    346         display_wnd_params_t params;
    347         errno_t rc;
    348 
    349         rc = ds_display_create(NULL, df_none, &disp);
    350         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    351 
    352         rc = ds_client_create(disp, NULL, NULL, &client);
    353         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    354 
    355         rc = ds_seat_create(disp, "Alice", &seat);
    356         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    357 
    358         display_wnd_params_init(&params);
    359         params.rect.p0.x = params.rect.p0.y = 0;
    360         params.rect.p1.x = params.rect.p1.y = 10;
    361 
    362         rc = ds_window_create(client, &params, &wnd);
    363         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    364 
    365         wnd->dpos.x = 100;
    366         wnd->dpos.y = 100;
    367 
    368         rc = ds_window_maximize(wnd);
    369         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    370 
    371         PCUT_ASSERT_INT_EQUALS(wndf_maximized, wnd->flags & wndf_maximized);
    372 
    373         ds_window_destroy(wnd);
    374         ds_seat_destroy(seat);
    375         ds_client_destroy(client);
    376         ds_display_destroy(disp);
    377 }
    378 
    379 /** Test ds_window_unmaximize(). */
    380 PCUT_TEST(window_unmaximize)
    381 {
    382         ds_display_t *disp;
    383         ds_client_t *client;
    384         ds_seat_t *seat;
    385         ds_window_t *wnd;
    386         display_wnd_params_t params;
    387         errno_t rc;
    388 
    389         rc = ds_display_create(NULL, df_none, &disp);
    390         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    391 
    392         rc = ds_client_create(disp, NULL, NULL, &client);
    393         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    394 
    395         rc = ds_seat_create(disp, "Alice", &seat);
    396         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    397 
    398         display_wnd_params_init(&params);
    399         params.rect.p0.x = params.rect.p0.y = 0;
    400         params.rect.p1.x = params.rect.p1.y = 10;
    401 
    402         rc = ds_window_create(client, &params, &wnd);
    403         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    404 
    405         wnd->dpos.x = 100;
    406         wnd->dpos.y = 100;
    407 
    408         rc = ds_window_maximize(wnd);
    409         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    410 
    411         rc = ds_window_unmaximize(wnd);
    412         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    413 
    414         PCUT_ASSERT_INT_EQUALS(0, wnd->flags & wndf_maximized);
    415 
    416         ds_window_destroy(wnd);
    417         ds_seat_destroy(seat);
    418         ds_client_destroy(client);
    419         ds_display_destroy(disp);
    420 }
    421 
    422101/** Test ds_window_get_ctx(). */
    423102PCUT_TEST(window_get_ctx)
     
    437116        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    438117
    439         rc = ds_seat_create(disp, "Alice", &seat);
     118        rc = ds_seat_create(disp, &seat);
    440119        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    441120
     
    456135}
    457136
    458 /** Test ds_window_is_visible() */
    459 PCUT_TEST(is_visible)
    460 {
    461         ds_display_t *disp;
    462         ds_client_t *client;
    463         ds_seat_t *seat;
    464         ds_window_t *wnd;
    465         display_wnd_params_t params;
    466         errno_t rc;
    467 
    468         rc = ds_display_create(NULL, df_none, &disp);
    469         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    470 
    471         rc = ds_client_create(disp, NULL, NULL, &client);
    472         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    473 
    474         rc = ds_seat_create(disp, "Alice", &seat);
    475         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    476 
    477         display_wnd_params_init(&params);
    478         params.rect.p0.x = params.rect.p0.y = 0;
    479         params.rect.p1.x = params.rect.p1.y = 10;
    480 
    481         rc = ds_window_create(client, &params, &wnd);
    482         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    483 
    484         PCUT_ASSERT_TRUE(ds_window_is_visible(wnd));
    485 
    486         wnd->flags |= wndf_minimized;
    487 
    488         PCUT_ASSERT_FALSE(ds_window_is_visible(wnd));
    489 
    490         ds_window_destroy(wnd);
    491         ds_seat_destroy(seat);
    492         ds_client_destroy(client);
    493         ds_display_destroy(disp);
    494 }
    495 
    496137/** Test ds_window_post_kbd_event() with Alt-F4 sends close event */
    497138PCUT_TEST(window_post_kbd_event_alt_f4)
     
    517158        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    518159
    519         rc = ds_seat_create(disp, "Alice", &seat);
     160        rc = ds_seat_create(disp, &seat);
    520161        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    521162
     
    572213        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    573214
    574         rc = ds_seat_create(disp, "Alice", &seat);
     215        rc = ds_seat_create(disp, &seat);
    575216        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    576217
     
    624265}
    625266
    626 /** Test ds_window_post_focus_event() */
    627 PCUT_TEST(window_post_focus_event)
    628 {
    629         gfx_context_t *gc;
    630         ds_display_t *disp;
    631         ds_client_t *client;
    632         ds_seat_t *seat;
    633         ds_window_t *wnd;
    634         display_wnd_params_t params;
    635         errno_t rc;
    636 
    637         rc = gfx_context_new(&dummy_ops, NULL, &gc);
    638         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    639 
    640         rc = ds_display_create(gc, df_none, &disp);
    641         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    642 
    643         rc = ds_client_create(disp, NULL, NULL, &client);
    644         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    645 
    646         rc = ds_seat_create(disp, "Alice", &seat);
    647         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    648 
    649         display_wnd_params_init(&params);
    650         params.rect.p0.x = params.rect.p0.y = 0;
    651         params.rect.p1.x = params.rect.p1.y = 1;
    652 
    653         rc = ds_window_create(client, &params, &wnd);
    654         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    655 
    656         rc = ds_window_post_focus_event(wnd);
    657         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    658 
    659         ds_window_destroy(wnd);
    660         ds_seat_destroy(seat);
    661         ds_client_destroy(client);
    662         ds_display_destroy(disp);
    663 }
    664 
    665 /** Test ds_window_post_unfocus_event() */
    666 PCUT_TEST(window_post_unfocus_event)
    667 {
    668         gfx_context_t *gc;
    669         ds_display_t *disp;
    670         ds_client_t *client;
    671         ds_seat_t *seat;
    672         ds_window_t *wnd;
    673         display_wnd_params_t params;
    674         errno_t rc;
    675 
    676         rc = gfx_context_new(&dummy_ops, NULL, &gc);
    677         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    678 
    679         rc = ds_display_create(gc, df_none, &disp);
    680         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    681 
    682         rc = ds_client_create(disp, NULL, NULL, &client);
    683         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    684 
    685         rc = ds_seat_create(disp, "Alice", &seat);
    686         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    687 
    688         display_wnd_params_init(&params);
    689         params.rect.p0.x = params.rect.p0.y = 0;
    690         params.rect.p1.x = params.rect.p1.y = 1;
    691 
    692         rc = ds_window_create(client, &params, &wnd);
    693         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    694 
    695         rc = ds_window_post_focus_event(wnd);
    696         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    697 
    698         ds_window_destroy(wnd);
    699         ds_seat_destroy(seat);
    700         ds_client_destroy(client);
    701         ds_display_destroy(disp);
    702 }
    703 
    704267/** Test ds_window_move_req() */
    705268PCUT_TEST(window_move_req)
     
    712275        display_wnd_params_t params;
    713276        gfx_coord2_t pos;
    714         sysarg_t pos_id;
    715277        errno_t rc;
    716278
     
    724286        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    725287
    726         rc = ds_seat_create(disp, "Alice", &seat);
     288        rc = ds_seat_create(disp, &seat);
    727289        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    728290
     
    738300        pos.x = 42;
    739301        pos.y = 43;
    740         pos_id = 44;
    741         ds_window_move_req(wnd, &pos, pos_id);
     302        ds_window_move_req(wnd, &pos);
    742303
    743304        PCUT_ASSERT_INT_EQUALS(dsw_moving, wnd->state);
    744305        PCUT_ASSERT_INT_EQUALS(pos.x, wnd->orig_pos.x);
    745306        PCUT_ASSERT_INT_EQUALS(pos.y, wnd->orig_pos.y);
    746         PCUT_ASSERT_INT_EQUALS(pos_id, wnd->orig_pos_id);
    747307
    748308        ds_window_destroy(wnd);
     
    762322        display_wnd_params_t params;
    763323        gfx_coord2_t pos;
    764         sysarg_t pos_id;
    765324        errno_t rc;
    766325
     
    774333        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    775334
    776         rc = ds_seat_create(disp, "Alice", &seat);
     335        rc = ds_seat_create(disp, &seat);
    777336        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    778337
     
    788347        pos.x = 42;
    789348        pos.y = 43;
    790         pos_id = 44;
    791         ds_window_resize_req(wnd, display_wr_top_right, &pos, pos_id);
     349        ds_window_resize_req(wnd, display_wr_top_right, &pos);
    792350
    793351        PCUT_ASSERT_INT_EQUALS(dsw_resizing, wnd->state);
     
    795353        PCUT_ASSERT_INT_EQUALS(pos.x, wnd->orig_pos.x);
    796354        PCUT_ASSERT_INT_EQUALS(pos.y, wnd->orig_pos.y);
    797         PCUT_ASSERT_INT_EQUALS(pos_id, wnd->orig_pos_id);
    798355
    799356        ds_window_destroy(wnd);
     
    823380        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    824381
    825         rc = ds_seat_create(disp, "Alice", &seat);
     382        rc = ds_seat_create(disp, &seat);
    826383        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    827384
     
    1093650        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1094651
    1095         rc = ds_seat_create(disp, "Alice", &seat);
     652        rc = ds_seat_create(disp, &seat);
    1096653        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1097654
     
    1109666        PCUT_ASSERT_EQUALS(wnd->display->cursor[dcurs_arrow], wnd->cursor);
    1110667
    1111         // Check that invalid cursors cannot be set: ignore enum conversions
    1112         // as we are out-of-bounds
    1113 #pragma GCC diagnostic push
    1114 #if defined(__GNUC__) && (__GNUC__ >= 10)
    1115 #pragma GCC diagnostic ignored "-Wenum-conversion"
    1116 #endif
    1117668        rc = ds_window_set_cursor(wnd, dcurs_limit);
    1118669        PCUT_ASSERT_ERRNO_VAL(EINVAL, rc);
     
    1122673        PCUT_ASSERT_ERRNO_VAL(EINVAL, rc);
    1123674        PCUT_ASSERT_EQUALS(wnd->display->cursor[dcurs_arrow], wnd->cursor);
    1124 #pragma GCC diagnostic pop
    1125675
    1126676        rc = ds_window_set_cursor(wnd, dcurs_size_lr);
     
    1134684}
    1135685
    1136 /** Test ds_window_set_caption() */
    1137 PCUT_TEST(window_set_caption)
    1138 {
    1139         gfx_context_t *gc;
    1140         ds_display_t *disp;
    1141         ds_client_t *client;
    1142         ds_seat_t *seat;
    1143         ds_window_t *wnd;
    1144         display_wnd_params_t params;
    1145         errno_t rc;
    1146 
    1147         rc = gfx_context_new(&dummy_ops, NULL, &gc);
    1148         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1149 
    1150         rc = ds_display_create(gc, df_none, &disp);
    1151         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1152 
    1153         rc = ds_client_create(disp, NULL, NULL, &client);
    1154         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1155 
    1156         rc = ds_seat_create(disp, "Alice", &seat);
    1157         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1158 
    1159         display_wnd_params_init(&params);
    1160         params.rect.p0.x = params.rect.p0.y = 0;
    1161         params.rect.p1.x = params.rect.p1.y = 1;
    1162 
    1163         rc = ds_window_create(client, &params, &wnd);
    1164         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1165 
    1166         PCUT_ASSERT_EQUALS(wnd->display->cursor[dcurs_arrow], wnd->cursor);
    1167 
    1168         rc = ds_window_set_caption(wnd, "Hello");
    1169         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1170         PCUT_ASSERT_INT_EQUALS(0, str_cmp("Hello", wnd->caption));
    1171 
    1172         ds_window_destroy(wnd);
    1173         ds_seat_destroy(seat);
    1174         ds_client_destroy(client);
    1175         ds_display_destroy(disp);
    1176 }
    1177 
    1178 /** ds_window_find_next() finds next window by flags */
    1179 PCUT_TEST(window_find_next)
    1180 {
    1181         gfx_context_t *gc;
    1182         ds_display_t *disp;
    1183         ds_client_t *client;
    1184         ds_seat_t *seat;
    1185         ds_window_t *w0;
    1186         ds_window_t *w1;
    1187         ds_window_t *w2;
    1188         ds_window_t *wnd;
    1189         display_wnd_params_t params;
    1190         errno_t rc;
    1191 
    1192         rc = gfx_context_new(&dummy_ops, NULL, &gc);
    1193         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1194 
    1195         rc = ds_display_create(gc, df_none, &disp);
    1196         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1197 
    1198         rc = ds_client_create(disp, NULL, NULL, &client);
    1199         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1200 
    1201         rc = ds_seat_create(disp, "Alice", &seat);
    1202         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1203 
    1204         display_wnd_params_init(&params);
    1205         params.rect.p0.x = params.rect.p0.y = 0;
    1206         params.rect.p1.x = params.rect.p1.y = 1;
    1207 
    1208         rc = ds_window_create(client, &params, &w0);
    1209         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1210 
    1211         rc = ds_window_create(client, &params, &w1);
    1212         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1213         w1->flags |= wndf_minimized;
    1214 
    1215         rc = ds_window_create(client, &params, &w2);
    1216         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1217         w2->flags |= wndf_system;
    1218 
    1219         wnd = ds_window_find_next(w0, wndf_minimized);
    1220         PCUT_ASSERT_EQUALS(w1, wnd);
    1221 
    1222         wnd = ds_window_find_next(w0, wndf_system);
    1223         PCUT_ASSERT_EQUALS(w2, wnd);
    1224 
    1225         wnd = ds_window_find_next(w0, wndf_maximized);
    1226         PCUT_ASSERT_NULL(wnd);
    1227 
    1228         ds_window_destroy(w0);
    1229         ds_window_destroy(w1);
    1230         ds_window_destroy(w2);
    1231         ds_seat_destroy(seat);
    1232         ds_client_destroy(client);
    1233         ds_display_destroy(disp);
    1234 }
    1235 
    1236 /** ds_window_find_prev() finds previous window by flags */
    1237 PCUT_TEST(window_find_prev)
    1238 {
    1239         gfx_context_t *gc;
    1240         ds_display_t *disp;
    1241         ds_client_t *client;
    1242         ds_seat_t *seat;
    1243         ds_window_t *w0;
    1244         ds_window_t *w1;
    1245         ds_window_t *w2;
    1246         ds_window_t *wnd;
    1247         display_wnd_params_t params;
    1248         errno_t rc;
    1249 
    1250         rc = gfx_context_new(&dummy_ops, NULL, &gc);
    1251         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1252 
    1253         rc = ds_display_create(gc, df_none, &disp);
    1254         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1255 
    1256         rc = ds_client_create(disp, NULL, NULL, &client);
    1257         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1258 
    1259         rc = ds_seat_create(disp, "Alice", &seat);
    1260         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1261 
    1262         display_wnd_params_init(&params);
    1263         params.rect.p0.x = params.rect.p0.y = 0;
    1264         params.rect.p1.x = params.rect.p1.y = 1;
    1265 
    1266         rc = ds_window_create(client, &params, &w2);
    1267         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1268         w2->flags |= wndf_system;
    1269 
    1270         rc = ds_window_create(client, &params, &w1);
    1271         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1272         w1->flags |= wndf_minimized;
    1273 
    1274         rc = ds_window_create(client, &params, &w0);
    1275         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1276 
    1277         wnd = ds_window_find_prev(w0, wndf_minimized);
    1278         PCUT_ASSERT_EQUALS(w1, wnd);
    1279 
    1280         wnd = ds_window_find_prev(w0, wndf_system);
    1281         PCUT_ASSERT_EQUALS(w2, wnd);
    1282 
    1283         wnd = ds_window_find_prev(w0, wndf_maximized);
    1284         PCUT_ASSERT_NULL(wnd);
    1285 
    1286         ds_window_destroy(w0);
    1287         ds_window_destroy(w1);
    1288         ds_window_destroy(w2);
    1289         ds_seat_destroy(seat);
    1290         ds_client_destroy(client);
    1291         ds_display_destroy(disp);
    1292 }
    1293 
    1294 /** ds_window_unfocus() switches to another window */
    1295 PCUT_TEST(window_unfocus)
    1296 {
    1297         gfx_context_t *gc;
    1298         ds_display_t *disp;
    1299         ds_client_t *client;
    1300         ds_seat_t *seat;
    1301         ds_window_t *w0;
    1302         ds_window_t *w1;
    1303         display_wnd_params_t params;
    1304         errno_t rc;
    1305 
    1306         rc = gfx_context_new(&dummy_ops, NULL, &gc);
    1307         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1308 
    1309         rc = ds_display_create(gc, df_none, &disp);
    1310         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1311 
    1312         rc = ds_client_create(disp, NULL, NULL, &client);
    1313         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1314 
    1315         rc = ds_seat_create(disp, "Alice", &seat);
    1316         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1317 
    1318         display_wnd_params_init(&params);
    1319         params.rect.p0.x = params.rect.p0.y = 0;
    1320         params.rect.p1.x = params.rect.p1.y = 1;
    1321 
    1322         rc = ds_window_create(client, &params, &w1);
    1323         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1324 
    1325         rc = ds_window_create(client, &params, &w0);
    1326         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1327 
    1328         PCUT_ASSERT_EQUALS(w0, seat->focus);
    1329 
    1330         ds_window_unfocus(w0);
    1331 
    1332         PCUT_ASSERT_EQUALS(w1, seat->focus);
    1333 
    1334         ds_window_destroy(w0);
    1335         ds_window_destroy(w1);
    1336         ds_seat_destroy(seat);
    1337         ds_client_destroy(client);
    1338         ds_display_destroy(disp);
    1339 }
    1340 
    1341 /** ds_window_orig_seat() correctly compares seats */
    1342 PCUT_TEST(window_orig_seat)
    1343 {
    1344         gfx_context_t *gc;
    1345         ds_display_t *disp;
    1346         ds_client_t *client;
    1347         ds_seat_t *seat0;
    1348         ds_seat_t *seat1;
    1349         sysarg_t devid0;
    1350         sysarg_t devid1;
    1351         ds_idevcfg_t *cfg0;
    1352         ds_idevcfg_t *cfg1;
    1353         ds_window_t *wnd;
    1354         display_wnd_params_t params;
    1355         errno_t rc;
    1356 
    1357         rc = gfx_context_new(&dummy_ops, NULL, &gc);
    1358         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1359 
    1360         rc = ds_display_create(gc, df_none, &disp);
    1361         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1362 
    1363         rc = ds_client_create(disp, NULL, NULL, &client);
    1364         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1365 
    1366         rc = ds_seat_create(disp, "Alice", &seat0);
    1367         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1368 
    1369         rc = ds_seat_create(disp, "Bob", &seat1);
    1370         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1371 
    1372         display_wnd_params_init(&params);
    1373         params.rect.p0.x = params.rect.p0.y = 0;
    1374         params.rect.p1.x = params.rect.p1.y = 1;
    1375 
    1376         rc = ds_window_create(client, &params, &wnd);
    1377         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1378 
    1379         devid0 = 42;
    1380         devid1 = 43;
    1381 
    1382         rc = ds_idevcfg_create(disp, devid0, seat0, &cfg0);
    1383         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1384 
    1385         rc = ds_idevcfg_create(disp, devid1, seat1, &cfg1);
    1386         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    1387 
    1388         wnd->state = dsw_moving;
    1389         wnd->orig_pos_id = devid0;
    1390 
    1391         PCUT_ASSERT_TRUE(ds_window_orig_seat(wnd, devid0));
    1392         PCUT_ASSERT_FALSE(ds_window_orig_seat(wnd, devid1));
    1393 
    1394         ds_idevcfg_destroy(cfg0);
    1395         ds_idevcfg_destroy(cfg1);
    1396         ds_window_destroy(wnd);
    1397         ds_seat_destroy(seat0);
    1398         ds_seat_destroy(seat1);
    1399         ds_client_destroy(client);
    1400         ds_display_destroy(disp);
    1401 }
    1402 
    1403686static errno_t dummy_set_color(void *arg, gfx_color_t *color)
    1404687{
Note: See TracChangeset for help on using the changeset viewer.