Ignore:
File:
1 edited

Legend:

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

    r195b7b3 r46a47c0  
    11/*
    2  * Copyright (c) 2019 Jiri Svoboda
     2 * Copyright (c) 2023 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    3434#include "../client.h"
    3535#include "../display.h"
     36#include "../seat.h"
    3637#include "../window.h"
    3738
     
    7879        ds_display_t *disp;
    7980        ds_client_t *client;
     81        ds_seat_t *seat;
    8082        ds_window_t *w0;
    8183        ds_window_t *w1;
    8284        ds_window_t *wnd;
    8385        display_wnd_params_t params;
    84         errno_t rc;
    85 
    86         rc = ds_display_create(NULL, df_none, &disp);
    87         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    88 
    89         rc = ds_client_create(disp, &test_ds_client_cb, NULL, &client);
     86        bool called_cb = NULL;
     87        errno_t rc;
     88
     89        rc = ds_display_create(NULL, df_none, &disp);
     90        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     91
     92        rc = ds_client_create(disp, &test_ds_client_cb, &called_cb, &client);
     93        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     94
     95        rc = ds_seat_create(disp, "Alice", &seat);
    9096        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    9197
     
    114120        ds_window_destroy(w0);
    115121        ds_window_destroy(w1);
     122        ds_seat_destroy(seat);
    116123        ds_client_destroy(client);
    117124        ds_display_destroy(disp);
     
    123130        ds_display_t *disp;
    124131        ds_client_t *client;
     132        ds_seat_t *seat;
    125133        ds_window_t *w0;
    126134        ds_window_t *w1;
    127135        ds_window_t *wnd;
    128136        display_wnd_params_t params;
    129         errno_t rc;
    130 
    131         rc = ds_display_create(NULL, df_none, &disp);
    132         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    133 
    134         rc = ds_client_create(disp, &test_ds_client_cb, NULL, &client);
     137        bool called_cb = NULL;
     138        errno_t rc;
     139
     140        rc = ds_display_create(NULL, df_none, &disp);
     141        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     142
     143        rc = ds_client_create(disp, &test_ds_client_cb, &called_cb, &client);
     144        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     145
     146        rc = ds_seat_create(disp, "Alice", &seat);
    135147        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    136148
     
    156168        ds_window_destroy(w0);
    157169        ds_window_destroy(w1);
     170        ds_seat_destroy(seat);
    158171        ds_client_destroy(client);
    159172        ds_display_destroy(disp);
     
    165178        ds_display_t *disp;
    166179        ds_client_t *client;
     180        ds_seat_t *seat;
    167181        ds_window_t *wnd;
    168182        display_wnd_params_t params;
     
    178192        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    179193
    180         display_wnd_params_init(&params);
    181         params.rect.p0.x = params.rect.p0.y = 0;
    182         params.rect.p1.x = params.rect.p1.y = 1;
    183 
    184         rc = ds_window_create(client, &params, &wnd);
    185         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    186 
    187         PCUT_ASSERT_FALSE(called_cb);
     194        rc = ds_seat_create(disp, "Alice", &seat);
     195        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     196
     197        display_wnd_params_init(&params);
     198        params.rect.p0.x = params.rect.p0.y = 0;
     199        params.rect.p1.x = params.rect.p1.y = 1;
     200
     201        rc = ds_window_create(client, &params, &wnd);
     202        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     203
     204        /* New window gets focused event */
     205        PCUT_ASSERT_TRUE(called_cb);
     206
     207        rc = ds_client_get_event(client, &rwindow, &revent);
     208        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     209
     210        called_cb = false;
    188211
    189212        rc = ds_client_get_event(client, &rwindow, &revent);
     
    203226
    204227        ds_window_destroy(wnd);
     228        ds_seat_destroy(seat);
    205229        ds_client_destroy(client);
    206230        ds_display_destroy(disp);
     
    212236        ds_display_t *disp;
    213237        ds_client_t *client;
     238        ds_seat_t *seat;
    214239        ds_window_t *wnd;
    215240        display_wnd_params_t params;
    216241        ds_window_t *rwindow;
     242        display_wnd_focus_ev_t efocus;
    217243        display_wnd_ev_t revent;
    218244        bool called_cb = NULL;
     
    225251        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    226252
    227         display_wnd_params_init(&params);
    228         params.rect.p0.x = params.rect.p0.y = 0;
    229         params.rect.p1.x = params.rect.p1.y = 1;
    230 
    231         rc = ds_window_create(client, &params, &wnd);
    232         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    233 
    234         PCUT_ASSERT_FALSE(called_cb);
    235 
    236         rc = ds_client_get_event(client, &rwindow, &revent);
    237         PCUT_ASSERT_ERRNO_VAL(ENOENT, rc);
    238 
    239         rc = ds_client_post_focus_event(client, wnd);
     253        rc = ds_seat_create(disp, "Alice", &seat);
     254        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     255
     256        display_wnd_params_init(&params);
     257        params.rect.p0.x = params.rect.p0.y = 0;
     258        params.rect.p1.x = params.rect.p1.y = 1;
     259
     260        rc = ds_window_create(client, &params, &wnd);
     261        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     262
     263        /* New window gets focused event */
     264        PCUT_ASSERT_TRUE(called_cb);
     265
     266        rc = ds_client_get_event(client, &rwindow, &revent);
     267        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     268
     269        called_cb = false;
     270
     271        rc = ds_client_get_event(client, &rwindow, &revent);
     272        PCUT_ASSERT_ERRNO_VAL(ENOENT, rc);
     273
     274        efocus.nfocus = 42;
     275
     276        rc = ds_client_post_focus_event(client, wnd, &efocus);
    240277        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    241278        PCUT_ASSERT_TRUE(called_cb);
     
    245282        PCUT_ASSERT_EQUALS(wnd, rwindow);
    246283        PCUT_ASSERT_EQUALS(wev_focus, revent.etype);
     284        PCUT_ASSERT_INT_EQUALS(efocus.nfocus, revent.ev.focus.nfocus);
    247285
    248286        rc = ds_client_get_event(client, &rwindow, &revent);
     
    250288
    251289        ds_window_destroy(wnd);
     290        ds_seat_destroy(seat);
    252291        ds_client_destroy(client);
    253292        ds_display_destroy(disp);
     
    259298        ds_display_t *disp;
    260299        ds_client_t *client;
     300        ds_seat_t *seat;
    261301        ds_window_t *wnd;
    262302        display_wnd_params_t params;
     
    273313        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    274314
    275         display_wnd_params_init(&params);
    276         params.rect.p0.x = params.rect.p0.y = 0;
    277         params.rect.p1.x = params.rect.p1.y = 1;
    278 
    279         rc = ds_window_create(client, &params, &wnd);
    280         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     315        rc = ds_seat_create(disp, "Alice", &seat);
     316        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     317
     318        display_wnd_params_init(&params);
     319        params.rect.p0.x = params.rect.p0.y = 0;
     320        params.rect.p1.x = params.rect.p1.y = 1;
     321
     322        rc = ds_window_create(client, &params, &wnd);
     323        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     324
     325        /* New window gets focused event */
     326        PCUT_ASSERT_TRUE(called_cb);
     327
     328        rc = ds_client_get_event(client, &rwindow, &revent);
     329        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     330
     331        called_cb = false;
     332
     333        rc = ds_client_get_event(client, &rwindow, &revent);
     334        PCUT_ASSERT_ERRNO_VAL(ENOENT, rc);
    281335
    282336        event.type = KEY_PRESS;
     
    284338        event.mods = 0;
    285339        event.c = L'\0';
    286 
    287         PCUT_ASSERT_FALSE(called_cb);
    288 
    289         rc = ds_client_get_event(client, &rwindow, &revent);
    290         PCUT_ASSERT_ERRNO_VAL(ENOENT, rc);
    291340
    292341        rc = ds_client_post_kbd_event(client, wnd, &event);
     
    307356
    308357        ds_window_destroy(wnd);
     358        ds_seat_destroy(seat);
    309359        ds_client_destroy(client);
    310360        ds_display_destroy(disp);
     
    316366        ds_display_t *disp;
    317367        ds_client_t *client;
     368        ds_seat_t *seat;
    318369        ds_window_t *wnd;
    319370        display_wnd_params_t params;
     
    330381        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    331382
    332         display_wnd_params_init(&params);
    333         params.rect.p0.x = params.rect.p0.y = 0;
    334         params.rect.p1.x = params.rect.p1.y = 1;
    335 
    336         rc = ds_window_create(client, &params, &wnd);
    337         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     383        rc = ds_seat_create(disp, "Alice", &seat);
     384        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     385
     386        display_wnd_params_init(&params);
     387        params.rect.p0.x = params.rect.p0.y = 0;
     388        params.rect.p1.x = params.rect.p1.y = 1;
     389
     390        rc = ds_window_create(client, &params, &wnd);
     391        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     392
     393        /* New window gets focused event */
     394        PCUT_ASSERT_TRUE(called_cb);
     395
     396        rc = ds_client_get_event(client, &rwindow, &revent);
     397        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     398
     399        called_cb = false;
     400
     401        PCUT_ASSERT_FALSE(called_cb);
     402
     403        rc = ds_client_get_event(client, &rwindow, &revent);
     404        PCUT_ASSERT_ERRNO_VAL(ENOENT, rc);
    338405
    339406        event.type = POS_PRESS;
    340407        event.hpos = 1;
    341408        event.vpos = 2;
    342 
    343         PCUT_ASSERT_FALSE(called_cb);
    344 
    345         rc = ds_client_get_event(client, &rwindow, &revent);
    346         PCUT_ASSERT_ERRNO_VAL(ENOENT, rc);
    347409
    348410        rc = ds_client_post_pos_event(client, wnd, &event);
     
    362424
    363425        ds_window_destroy(wnd);
     426        ds_seat_destroy(seat);
    364427        ds_client_destroy(client);
    365428        ds_display_destroy(disp);
     
    371434        ds_display_t *disp;
    372435        ds_client_t *client;
     436        ds_seat_t *seat;
    373437        ds_window_t *wnd;
    374438        display_wnd_params_t params;
     
    385449        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    386450
    387         display_wnd_params_init(&params);
    388         params.rect.p0.x = params.rect.p0.y = 0;
    389         params.rect.p1.x = params.rect.p1.y = 1;
    390 
    391         rc = ds_window_create(client, &params, &wnd);
    392         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     451        rc = ds_seat_create(disp, "Alice", &seat);
     452        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     453
     454        display_wnd_params_init(&params);
     455        params.rect.p0.x = params.rect.p0.y = 0;
     456        params.rect.p1.x = params.rect.p1.y = 1;
     457
     458        rc = ds_window_create(client, &params, &wnd);
     459        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     460
     461        /* New window gets focused event */
     462        PCUT_ASSERT_TRUE(called_cb);
     463
     464        rc = ds_client_get_event(client, &rwindow, &revent);
     465        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     466
     467        called_cb = false;
     468
     469        PCUT_ASSERT_FALSE(called_cb);
     470
     471        rc = ds_client_get_event(client, &rwindow, &revent);
     472        PCUT_ASSERT_ERRNO_VAL(ENOENT, rc);
    393473
    394474        rect.p0.x = 1;
     
    396476        rect.p1.x = 3;
    397477        rect.p1.y = 4;
    398 
    399         PCUT_ASSERT_FALSE(called_cb);
    400 
    401         rc = ds_client_get_event(client, &rwindow, &revent);
    402         PCUT_ASSERT_ERRNO_VAL(ENOENT, rc);
    403478
    404479        rc = ds_client_post_resize_event(client, wnd, &rect);
     
    419494
    420495        ds_window_destroy(wnd);
     496        ds_seat_destroy(seat);
    421497        ds_client_destroy(client);
    422498        ds_display_destroy(disp);
     
    428504        ds_display_t *disp;
    429505        ds_client_t *client;
     506        ds_seat_t *seat;
     507        ds_window_t *wnd;
     508        display_wnd_params_t params;
     509        ds_window_t *rwindow;
     510        display_wnd_unfocus_ev_t eunfocus;
     511        display_wnd_ev_t revent;
     512        bool called_cb = NULL;
     513        errno_t rc;
     514
     515        rc = ds_display_create(NULL, df_none, &disp);
     516        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     517
     518        rc = ds_client_create(disp, &test_ds_client_cb, &called_cb, &client);
     519        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     520
     521        rc = ds_seat_create(disp, "Alice", &seat);
     522        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     523
     524        display_wnd_params_init(&params);
     525        params.rect.p0.x = params.rect.p0.y = 0;
     526        params.rect.p1.x = params.rect.p1.y = 1;
     527
     528        rc = ds_window_create(client, &params, &wnd);
     529        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     530
     531        /* New window gets focused event */
     532        PCUT_ASSERT_TRUE(called_cb);
     533
     534        rc = ds_client_get_event(client, &rwindow, &revent);
     535        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     536
     537        called_cb = false;
     538
     539        rc = ds_client_get_event(client, &rwindow, &revent);
     540        PCUT_ASSERT_ERRNO_VAL(ENOENT, rc);
     541
     542        eunfocus.nfocus = 42;
     543
     544        rc = ds_client_post_unfocus_event(client, wnd, &eunfocus);
     545        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     546        PCUT_ASSERT_TRUE(called_cb);
     547
     548        rc = ds_client_get_event(client, &rwindow, &revent);
     549        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     550        PCUT_ASSERT_EQUALS(wnd, rwindow);
     551        PCUT_ASSERT_EQUALS(wev_unfocus, revent.etype);
     552        PCUT_ASSERT_INT_EQUALS(eunfocus.nfocus, revent.ev.unfocus.nfocus);
     553
     554        rc = ds_client_get_event(client, &rwindow, &revent);
     555        PCUT_ASSERT_ERRNO_VAL(ENOENT, rc);
     556
     557        ds_window_destroy(wnd);
     558        ds_seat_destroy(seat);
     559        ds_client_destroy(client);
     560        ds_display_destroy(disp);
     561}
     562
     563/** Test ds_client_purge_window_events() */
     564PCUT_TEST(client_purge_window_events)
     565{
     566        ds_display_t *disp;
     567        ds_client_t *client;
     568        ds_seat_t *seat;
    430569        ds_window_t *wnd;
    431570        display_wnd_params_t params;
     
    441580        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    442581
    443         display_wnd_params_init(&params);
    444         params.rect.p0.x = params.rect.p0.y = 0;
    445         params.rect.p1.x = params.rect.p1.y = 1;
    446 
    447         rc = ds_window_create(client, &params, &wnd);
    448         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    449 
    450         PCUT_ASSERT_FALSE(called_cb);
    451 
    452         rc = ds_client_get_event(client, &rwindow, &revent);
    453         PCUT_ASSERT_ERRNO_VAL(ENOENT, rc);
    454 
    455         rc = ds_client_post_unfocus_event(client, wnd);
    456         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    457         PCUT_ASSERT_TRUE(called_cb);
    458 
    459         rc = ds_client_get_event(client, &rwindow, &revent);
    460         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    461         PCUT_ASSERT_EQUALS(wnd, rwindow);
    462         PCUT_ASSERT_EQUALS(wev_unfocus, revent.etype);
    463 
     582        rc = ds_seat_create(disp, "Alice", &seat);
     583        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     584
     585        display_wnd_params_init(&params);
     586        params.rect.p0.x = params.rect.p0.y = 0;
     587        params.rect.p1.x = params.rect.p1.y = 1;
     588
     589        rc = ds_window_create(client, &params, &wnd);
     590        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     591
     592        /* New window gets focused event */
     593        PCUT_ASSERT_TRUE(called_cb);
     594
     595        /* Purge it */
     596        ds_client_purge_window_events(client, wnd);
     597
     598        /* The queue should be empty now */
    464599        rc = ds_client_get_event(client, &rwindow, &revent);
    465600        PCUT_ASSERT_ERRNO_VAL(ENOENT, rc);
    466601
    467602        ds_window_destroy(wnd);
     603        ds_seat_destroy(seat);
    468604        ds_client_destroy(client);
    469605        ds_display_destroy(disp);
     
    479615        ds_display_t *disp;
    480616        ds_client_t *client;
     617        ds_seat_t *seat;
    481618        ds_window_t *wnd;
    482619        display_wnd_params_t params;
     
    489626        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    490627
    491         display_wnd_params_init(&params);
    492         params.rect.p0.x = params.rect.p0.y = 0;
    493         params.rect.p1.x = params.rect.p1.y = 1;
    494 
    495         rc = ds_window_create(client, &params, &wnd);
    496         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    497 
     628        rc = ds_seat_create(disp, "Alice", &seat);
     629        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     630
     631        display_wnd_params_init(&params);
     632        params.rect.p0.x = params.rect.p0.y = 0;
     633        params.rect.p1.x = params.rect.p1.y = 1;
     634
     635        rc = ds_window_create(client, &params, &wnd);
     636        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     637
     638        ds_seat_destroy(seat);
    498639        ds_client_destroy(client);
    499640        ds_display_destroy(disp);
Note: See TracChangeset for help on using the changeset viewer.