Ignore:
File:
1 edited

Legend:

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

    r9e84d2c rdd7df1c  
    11/*
    2  * Copyright (c) 2019 Jiri Svoboda
     2 * Copyright (c) 2023 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    3636#include "../client.h"
    3737#include "../display.h"
     38#include "../idevcfg.h"
    3839#include "../seat.h"
    3940#include "../window.h"
     
    5152};
    5253
     54/** Test creating and destroying window */
     55PCUT_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 */
     87PCUT_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
    53132/** Test ds_window_resize(). */
    54133PCUT_TEST(window_resize)
     
    69148        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    70149
    71         rc = ds_seat_create(disp, &seat);
     150        rc = ds_seat_create(disp, "Alice", &seat);
    72151        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    73152
     
    99178}
    100179
     180/** Test ds_window_get_pos(). */
     181PCUT_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(). */
     222PCUT_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(). */
     265PCUT_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(). */
     302PCUT_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(). */
     340PCUT_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(). */
     380PCUT_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
    101422/** Test ds_window_get_ctx(). */
    102423PCUT_TEST(window_get_ctx)
     
    116437        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    117438
    118         rc = ds_seat_create(disp, &seat);
     439        rc = ds_seat_create(disp, "Alice", &seat);
    119440        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    120441
     
    135456}
    136457
     458/** Test ds_window_is_visible() */
     459PCUT_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
    137496/** Test ds_window_post_kbd_event() with Alt-F4 sends close event */
    138497PCUT_TEST(window_post_kbd_event_alt_f4)
     
    158517        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    159518
    160         rc = ds_seat_create(disp, &seat);
     519        rc = ds_seat_create(disp, "Alice", &seat);
    161520        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    162521
     
    213572        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    214573
    215         rc = ds_seat_create(disp, &seat);
     574        rc = ds_seat_create(disp, "Alice", &seat);
    216575        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    217576
     
    265624}
    266625
     626/** Test ds_window_post_focus_event() */
     627PCUT_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() */
     666PCUT_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
    267704/** Test ds_window_move_req() */
    268705PCUT_TEST(window_move_req)
     
    275712        display_wnd_params_t params;
    276713        gfx_coord2_t pos;
     714        sysarg_t pos_id;
    277715        errno_t rc;
    278716
     
    286724        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    287725
    288         rc = ds_seat_create(disp, &seat);
     726        rc = ds_seat_create(disp, "Alice", &seat);
    289727        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    290728
     
    300738        pos.x = 42;
    301739        pos.y = 43;
    302         ds_window_move_req(wnd, &pos);
     740        pos_id = 44;
     741        ds_window_move_req(wnd, &pos, pos_id);
    303742
    304743        PCUT_ASSERT_INT_EQUALS(dsw_moving, wnd->state);
    305744        PCUT_ASSERT_INT_EQUALS(pos.x, wnd->orig_pos.x);
    306745        PCUT_ASSERT_INT_EQUALS(pos.y, wnd->orig_pos.y);
     746        PCUT_ASSERT_INT_EQUALS(pos_id, wnd->orig_pos_id);
    307747
    308748        ds_window_destroy(wnd);
     
    322762        display_wnd_params_t params;
    323763        gfx_coord2_t pos;
     764        sysarg_t pos_id;
    324765        errno_t rc;
    325766
     
    333774        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    334775
    335         rc = ds_seat_create(disp, &seat);
     776        rc = ds_seat_create(disp, "Alice", &seat);
    336777        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    337778
     
    347788        pos.x = 42;
    348789        pos.y = 43;
    349         ds_window_resize_req(wnd, display_wr_top_right, &pos);
     790        pos_id = 44;
     791        ds_window_resize_req(wnd, display_wr_top_right, &pos, pos_id);
    350792
    351793        PCUT_ASSERT_INT_EQUALS(dsw_resizing, wnd->state);
     
    353795        PCUT_ASSERT_INT_EQUALS(pos.x, wnd->orig_pos.x);
    354796        PCUT_ASSERT_INT_EQUALS(pos.y, wnd->orig_pos.y);
     797        PCUT_ASSERT_INT_EQUALS(pos_id, wnd->orig_pos_id);
    355798
    356799        ds_window_destroy(wnd);
     
    380823        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    381824
    382         rc = ds_seat_create(disp, &seat);
     825        rc = ds_seat_create(disp, "Alice", &seat);
    383826        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    384827
     
    6501093        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    6511094
    652         rc = ds_seat_create(disp, &seat);
     1095        rc = ds_seat_create(disp, "Alice", &seat);
    6531096        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    6541097
     
    6661109        PCUT_ASSERT_EQUALS(wnd->display->cursor[dcurs_arrow], wnd->cursor);
    6671110
     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
    6681117        rc = ds_window_set_cursor(wnd, dcurs_limit);
    6691118        PCUT_ASSERT_ERRNO_VAL(EINVAL, rc);
     
    6731122        PCUT_ASSERT_ERRNO_VAL(EINVAL, rc);
    6741123        PCUT_ASSERT_EQUALS(wnd->display->cursor[dcurs_arrow], wnd->cursor);
     1124#pragma GCC diagnostic pop
    6751125
    6761126        rc = ds_window_set_cursor(wnd, dcurs_size_lr);
     
    6841134}
    6851135
     1136/** Test ds_window_set_caption() */
     1137PCUT_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 */
     1179PCUT_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 */
     1237PCUT_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 */
     1295PCUT_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 */
     1342PCUT_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
    6861403static errno_t dummy_set_color(void *arg, gfx_color_t *color)
    6871404{
Note: See TracChangeset for help on using the changeset viewer.