Ignore:
File:
1 edited

Legend:

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

    r17c0f5d r35cffea  
    11/*
    2  * Copyright (c) 2023 Jiri Svoboda
     2 * Copyright (c) 2022 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    5151};
    5252
    53 /** Test creating and destroying window */
    54 PCUT_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 */
    86 PCUT_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 
    13153/** Test ds_window_resize(). */
    13254PCUT_TEST(window_resize)
     
    261183}
    262184
    263 /** Test ds_window_minimize(). */
    264 PCUT_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(). */
    301 PCUT_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 
    338185/** Test ds_window_maximize(). */
    339186PCUT_TEST(window_maximize)
     
    448295        gc = ds_window_get_ctx(wnd);
    449296        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() */
    458 PCUT_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));
    488297
    489298        ds_window_destroy(wnd);
     
    616425        PCUT_ASSERT_INT_EQUALS(13, wnd->dpos.x);
    617426        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() */
    626 PCUT_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() */
    665 PCUT_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);
    696427
    697428        ds_window_destroy(wnd);
     
    1120851}
    1121852
    1122 /** Test ds_window_set_caption() */
    1123 PCUT_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 */
    1165 PCUT_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 */
    1223 PCUT_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 
    1269853static errno_t dummy_set_color(void *arg, gfx_color_t *color)
    1270854{
Note: See TracChangeset for help on using the changeset viewer.