Ignore:
File:
1 edited

Legend:

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

    r35cffea r17c0f5d  
    11/*
    2  * Copyright (c) 2022 Jiri Svoboda
     2 * Copyright (c) 2023 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    5151};
    5252
     53/** Test creating and destroying window */
     54PCUT_TEST(create_destroy)
     55{
     56        ds_display_t *disp;
     57        ds_client_t *client;
     58        ds_seat_t *seat;
     59        ds_window_t *wnd;
     60        display_wnd_params_t params;
     61        errno_t rc;
     62
     63        rc = ds_display_create(NULL, df_none, &disp);
     64        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     65
     66        rc = ds_client_create(disp, NULL, NULL, &client);
     67        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     68
     69        rc = ds_seat_create(disp, &seat);
     70        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     71
     72        display_wnd_params_init(&params);
     73        params.rect.p0.x = params.rect.p0.y = 0;
     74        params.rect.p1.x = params.rect.p1.y = 10;
     75
     76        rc = ds_window_create(client, &params, &wnd);
     77        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     78
     79        ds_window_destroy(wnd);
     80        ds_seat_destroy(seat);
     81        ds_client_destroy(client);
     82        ds_display_destroy(disp);
     83}
     84
     85/** Test ds_window_bring_to_top() brings window to top */
     86PCUT_TEST(bring_to_top)
     87{
     88        ds_display_t *disp;
     89        ds_client_t *client;
     90        ds_seat_t *seat;
     91        ds_window_t *w1;
     92        ds_window_t *w2;
     93        display_wnd_params_t params;
     94        errno_t rc;
     95
     96        rc = ds_display_create(NULL, df_none, &disp);
     97        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     98
     99        rc = ds_client_create(disp, NULL, NULL, &client);
     100        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     101
     102        rc = ds_seat_create(disp, &seat);
     103        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     104
     105        display_wnd_params_init(&params);
     106        params.rect.p0.x = params.rect.p0.y = 0;
     107        params.rect.p1.x = params.rect.p1.y = 10;
     108
     109        rc = ds_window_create(client, &params, &w1);
     110        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     111
     112        rc = ds_window_create(client, &params, &w2);
     113        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     114
     115        /* w2 should be on the top */
     116        PCUT_ASSERT_EQUALS(w2, ds_display_first_window(disp));
     117
     118        /* Bring w1 to top */
     119        ds_window_bring_to_top(w1);
     120
     121        /* Now w1 should be on the top */
     122        PCUT_ASSERT_EQUALS(w1, ds_display_first_window(disp));
     123
     124        ds_window_destroy(w1);
     125        ds_window_destroy(w2);
     126        ds_seat_destroy(seat);
     127        ds_client_destroy(client);
     128        ds_display_destroy(disp);
     129}
     130
    53131/** Test ds_window_resize(). */
    54132PCUT_TEST(window_resize)
     
    183261}
    184262
     263/** Test ds_window_minimize(). */
     264PCUT_TEST(window_minimize)
     265{
     266        ds_display_t *disp;
     267        ds_client_t *client;
     268        ds_seat_t *seat;
     269        ds_window_t *wnd;
     270        display_wnd_params_t params;
     271        errno_t rc;
     272
     273        rc = ds_display_create(NULL, df_none, &disp);
     274        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     275
     276        rc = ds_client_create(disp, NULL, NULL, &client);
     277        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     278
     279        rc = ds_seat_create(disp, &seat);
     280        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     281
     282        display_wnd_params_init(&params);
     283        params.rect.p0.x = params.rect.p0.y = 0;
     284        params.rect.p1.x = params.rect.p1.y = 10;
     285
     286        rc = ds_window_create(client, &params, &wnd);
     287        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     288
     289        rc = ds_window_minimize(wnd);
     290        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     291
     292        PCUT_ASSERT_INT_EQUALS(wndf_minimized, wnd->flags & wndf_minimized);
     293
     294        ds_window_destroy(wnd);
     295        ds_seat_destroy(seat);
     296        ds_client_destroy(client);
     297        ds_display_destroy(disp);
     298}
     299
     300/** Test ds_window_unminimize(). */
     301PCUT_TEST(window_unminimize)
     302{
     303        ds_display_t *disp;
     304        ds_client_t *client;
     305        ds_seat_t *seat;
     306        ds_window_t *wnd;
     307        display_wnd_params_t params;
     308        errno_t rc;
     309
     310        rc = ds_display_create(NULL, df_none, &disp);
     311        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     312
     313        rc = ds_client_create(disp, NULL, NULL, &client);
     314        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     315
     316        rc = ds_seat_create(disp, &seat);
     317        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     318
     319        display_wnd_params_init(&params);
     320        params.flags |= wndf_minimized;
     321        params.rect.p0.x = params.rect.p0.y = 0;
     322        params.rect.p1.x = params.rect.p1.y = 10;
     323
     324        rc = ds_window_create(client, &params, &wnd);
     325        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     326
     327        rc = ds_window_unminimize(wnd);
     328        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     329
     330        PCUT_ASSERT_INT_EQUALS(0, wnd->flags & wndf_minimized);
     331
     332        ds_window_destroy(wnd);
     333        ds_seat_destroy(seat);
     334        ds_client_destroy(client);
     335        ds_display_destroy(disp);
     336}
     337
    185338/** Test ds_window_maximize(). */
    186339PCUT_TEST(window_maximize)
     
    295448        gc = ds_window_get_ctx(wnd);
    296449        PCUT_ASSERT_NOT_NULL(gc);
     450
     451        ds_window_destroy(wnd);
     452        ds_seat_destroy(seat);
     453        ds_client_destroy(client);
     454        ds_display_destroy(disp);
     455}
     456
     457/** Test ds_window_is_visible() */
     458PCUT_TEST(is_visible)
     459{
     460        ds_display_t *disp;
     461        ds_client_t *client;
     462        ds_seat_t *seat;
     463        ds_window_t *wnd;
     464        display_wnd_params_t params;
     465        errno_t rc;
     466
     467        rc = ds_display_create(NULL, df_none, &disp);
     468        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     469
     470        rc = ds_client_create(disp, NULL, NULL, &client);
     471        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     472
     473        rc = ds_seat_create(disp, &seat);
     474        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     475
     476        display_wnd_params_init(&params);
     477        params.rect.p0.x = params.rect.p0.y = 0;
     478        params.rect.p1.x = params.rect.p1.y = 10;
     479
     480        rc = ds_window_create(client, &params, &wnd);
     481        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     482
     483        PCUT_ASSERT_TRUE(ds_window_is_visible(wnd));
     484
     485        wnd->flags |= wndf_minimized;
     486
     487        PCUT_ASSERT_FALSE(ds_window_is_visible(wnd));
    297488
    298489        ds_window_destroy(wnd);
     
    425616        PCUT_ASSERT_INT_EQUALS(13, wnd->dpos.x);
    426617        PCUT_ASSERT_INT_EQUALS(14, wnd->dpos.y);
     618
     619        ds_window_destroy(wnd);
     620        ds_seat_destroy(seat);
     621        ds_client_destroy(client);
     622        ds_display_destroy(disp);
     623}
     624
     625/** Test ds_window_post_focus_event() */
     626PCUT_TEST(window_post_focus_event)
     627{
     628        gfx_context_t *gc;
     629        ds_display_t *disp;
     630        ds_client_t *client;
     631        ds_seat_t *seat;
     632        ds_window_t *wnd;
     633        display_wnd_params_t params;
     634        errno_t rc;
     635
     636        rc = gfx_context_new(&dummy_ops, NULL, &gc);
     637        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     638
     639        rc = ds_display_create(gc, df_none, &disp);
     640        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     641
     642        rc = ds_client_create(disp, NULL, NULL, &client);
     643        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     644
     645        rc = ds_seat_create(disp, &seat);
     646        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     647
     648        display_wnd_params_init(&params);
     649        params.rect.p0.x = params.rect.p0.y = 0;
     650        params.rect.p1.x = params.rect.p1.y = 1;
     651
     652        rc = ds_window_create(client, &params, &wnd);
     653        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     654
     655        rc = ds_window_post_focus_event(wnd);
     656        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     657
     658        ds_window_destroy(wnd);
     659        ds_seat_destroy(seat);
     660        ds_client_destroy(client);
     661        ds_display_destroy(disp);
     662}
     663
     664/** Test ds_window_post_unfocus_event() */
     665PCUT_TEST(window_post_unfocus_event)
     666{
     667        gfx_context_t *gc;
     668        ds_display_t *disp;
     669        ds_client_t *client;
     670        ds_seat_t *seat;
     671        ds_window_t *wnd;
     672        display_wnd_params_t params;
     673        errno_t rc;
     674
     675        rc = gfx_context_new(&dummy_ops, NULL, &gc);
     676        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     677
     678        rc = ds_display_create(gc, df_none, &disp);
     679        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     680
     681        rc = ds_client_create(disp, NULL, NULL, &client);
     682        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     683
     684        rc = ds_seat_create(disp, &seat);
     685        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     686
     687        display_wnd_params_init(&params);
     688        params.rect.p0.x = params.rect.p0.y = 0;
     689        params.rect.p1.x = params.rect.p1.y = 1;
     690
     691        rc = ds_window_create(client, &params, &wnd);
     692        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     693
     694        rc = ds_window_post_focus_event(wnd);
     695        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    427696
    428697        ds_window_destroy(wnd);
     
    8511120}
    8521121
     1122/** Test ds_window_set_caption() */
     1123PCUT_TEST(window_set_caption)
     1124{
     1125        gfx_context_t *gc;
     1126        ds_display_t *disp;
     1127        ds_client_t *client;
     1128        ds_seat_t *seat;
     1129        ds_window_t *wnd;
     1130        display_wnd_params_t params;
     1131        errno_t rc;
     1132
     1133        rc = gfx_context_new(&dummy_ops, NULL, &gc);
     1134        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     1135
     1136        rc = ds_display_create(gc, df_none, &disp);
     1137        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     1138
     1139        rc = ds_client_create(disp, NULL, NULL, &client);
     1140        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     1141
     1142        rc = ds_seat_create(disp, &seat);
     1143        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     1144
     1145        display_wnd_params_init(&params);
     1146        params.rect.p0.x = params.rect.p0.y = 0;
     1147        params.rect.p1.x = params.rect.p1.y = 1;
     1148
     1149        rc = ds_window_create(client, &params, &wnd);
     1150        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     1151
     1152        PCUT_ASSERT_EQUALS(wnd->display->cursor[dcurs_arrow], wnd->cursor);
     1153
     1154        rc = ds_window_set_caption(wnd, "Hello");
     1155        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     1156        PCUT_ASSERT_INT_EQUALS(0, str_cmp("Hello", wnd->caption));
     1157
     1158        ds_window_destroy(wnd);
     1159        ds_seat_destroy(seat);
     1160        ds_client_destroy(client);
     1161        ds_display_destroy(disp);
     1162}
     1163
     1164/** ds_window_find_alt() finds alternate window by flags */
     1165PCUT_TEST(window_find_alt)
     1166{
     1167        gfx_context_t *gc;
     1168        ds_display_t *disp;
     1169        ds_client_t *client;
     1170        ds_seat_t *seat;
     1171        ds_window_t *w0;
     1172        ds_window_t *w1;
     1173        ds_window_t *w2;
     1174        ds_window_t *wnd;
     1175        display_wnd_params_t params;
     1176        errno_t rc;
     1177
     1178        rc = gfx_context_new(&dummy_ops, NULL, &gc);
     1179        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     1180
     1181        rc = ds_display_create(gc, df_none, &disp);
     1182        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     1183
     1184        rc = ds_client_create(disp, NULL, NULL, &client);
     1185        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     1186
     1187        rc = ds_seat_create(disp, &seat);
     1188        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     1189
     1190        display_wnd_params_init(&params);
     1191        params.rect.p0.x = params.rect.p0.y = 0;
     1192        params.rect.p1.x = params.rect.p1.y = 1;
     1193
     1194        rc = ds_window_create(client, &params, &w0);
     1195        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     1196
     1197        rc = ds_window_create(client, &params, &w1);
     1198        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     1199        w1->flags |= wndf_minimized;
     1200
     1201        rc = ds_window_create(client, &params, &w2);
     1202        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     1203        w2->flags |= wndf_system;
     1204
     1205        wnd = ds_window_find_alt(w0, wndf_minimized);
     1206        PCUT_ASSERT_EQUALS(w1, wnd);
     1207
     1208        wnd = ds_window_find_alt(w0, wndf_system);
     1209        PCUT_ASSERT_EQUALS(w2, wnd);
     1210
     1211        wnd = ds_window_find_alt(w0, wndf_maximized);
     1212        PCUT_ASSERT_NULL(wnd);
     1213
     1214        ds_window_destroy(w0);
     1215        ds_window_destroy(w1);
     1216        ds_window_destroy(w2);
     1217        ds_seat_destroy(seat);
     1218        ds_client_destroy(client);
     1219        ds_display_destroy(disp);
     1220}
     1221
     1222/** ds_window_unfocus() switches to another window */
     1223PCUT_TEST(window_unfocus)
     1224{
     1225        gfx_context_t *gc;
     1226        ds_display_t *disp;
     1227        ds_client_t *client;
     1228        ds_seat_t *seat;
     1229        ds_window_t *w0;
     1230        ds_window_t *w1;
     1231        display_wnd_params_t params;
     1232        errno_t rc;
     1233
     1234        rc = gfx_context_new(&dummy_ops, NULL, &gc);
     1235        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     1236
     1237        rc = ds_display_create(gc, df_none, &disp);
     1238        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     1239
     1240        rc = ds_client_create(disp, NULL, NULL, &client);
     1241        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     1242
     1243        rc = ds_seat_create(disp, &seat);
     1244        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     1245
     1246        display_wnd_params_init(&params);
     1247        params.rect.p0.x = params.rect.p0.y = 0;
     1248        params.rect.p1.x = params.rect.p1.y = 1;
     1249
     1250        rc = ds_window_create(client, &params, &w1);
     1251        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     1252
     1253        rc = ds_window_create(client, &params, &w0);
     1254        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     1255
     1256        PCUT_ASSERT_EQUALS(w0, seat->focus);
     1257
     1258        ds_window_unfocus(w0);
     1259
     1260        PCUT_ASSERT_EQUALS(w1, seat->focus);
     1261
     1262        ds_window_destroy(w0);
     1263        ds_window_destroy(w1);
     1264        ds_seat_destroy(seat);
     1265        ds_client_destroy(client);
     1266        ds_display_destroy(disp);
     1267}
     1268
    8531269static errno_t dummy_set_color(void *arg, gfx_color_t *color)
    8541270{
Note: See TracChangeset for help on using the changeset viewer.