Changeset a40ae0d in mainline for uspace/srv/hid/display/test/seat.c
- Timestamp:
- 2020-01-09T16:44:57Z (4 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 946a666
- Parents:
- 8e9781f
- git-author:
- Jiri Svoboda <jiri@…> (2020-01-09 18:44:03)
- git-committer:
- Jiri Svoboda <jiri@…> (2020-01-09 16:44:57)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/hid/display/test/seat.c
r8e9781f ra40ae0d 134 134 } 135 135 136 /** Test ds_seat_post_kbd_event() with Alt-Tab switches focus */ 137 PCUT_TEST(post_kbd_event_alt_tab) 138 { 139 ds_display_t *disp; 140 ds_client_t *client; 141 ds_seat_t *seat; 142 ds_window_t *w0; 143 ds_window_t *w1; 144 display_wnd_params_t params; 145 kbd_event_t event; 146 errno_t rc; 147 148 rc = ds_display_create(NULL, &disp); 149 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 150 151 rc = ds_client_create(disp, &test_ds_client_cb, NULL, &client); 152 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 153 154 rc = ds_seat_create(disp, &seat); 155 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 156 157 display_wnd_params_init(¶ms); 158 params.rect.p0.x = params.rect.p0.y = 0; 159 params.rect.p1.x = params.rect.p1.y = 1; 160 161 rc = ds_window_create(client, ¶ms, &w1); 162 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 163 164 rc = ds_window_create(client, ¶ms, &w0); 165 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 166 167 ds_seat_set_focus(seat, w1); 168 PCUT_ASSERT_EQUALS(w1, seat->focus); 169 170 event.type = KEY_PRESS; 171 event.mods = KM_ALT; 172 event.key = KC_TAB; 173 rc = ds_seat_post_kbd_event(seat, &event); 174 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 175 PCUT_ASSERT_EQUALS(w0, seat->focus); 176 177 ds_window_destroy(w0); 178 ds_window_destroy(w1); 179 ds_seat_destroy(seat); 180 ds_client_destroy(client); 181 ds_display_destroy(disp); 182 } 183 184 /** Test ds_seat_post_kbd_event() with regular key press delivers to client queue */ 185 PCUT_TEST(post_kbd_event_regular) 186 { 187 ds_display_t *disp; 188 ds_client_t *client; 189 ds_seat_t *seat; 190 ds_window_t *wnd; 191 display_wnd_params_t params; 192 kbd_event_t event; 193 ds_window_t *rwindow; 194 display_wnd_ev_t revent; 195 bool called_cb = NULL; 196 errno_t rc; 197 198 rc = ds_display_create(NULL, &disp); 199 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 200 201 rc = ds_client_create(disp, &test_ds_client_cb, &called_cb, &client); 202 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 203 204 rc = ds_seat_create(disp, &seat); 205 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 206 207 display_wnd_params_init(¶ms); 208 params.rect.p0.x = params.rect.p0.y = 0; 209 params.rect.p1.x = params.rect.p1.y = 1; 210 211 rc = ds_window_create(client, ¶ms, &wnd); 212 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 213 214 ds_seat_set_focus(seat, wnd); 215 PCUT_ASSERT_EQUALS(wnd, seat->focus); 216 217 event.type = KEY_PRESS; 218 event.key = KC_ENTER; 219 event.mods = 0; 220 event.c = L'\0'; 221 222 PCUT_ASSERT_FALSE(called_cb); 223 224 rc = ds_client_get_event(client, &rwindow, &revent); 225 PCUT_ASSERT_ERRNO_VAL(ENOENT, rc); 226 227 rc = ds_seat_post_kbd_event(seat, &event); 228 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 229 PCUT_ASSERT_TRUE(called_cb); 230 231 rc = ds_client_get_event(client, &rwindow, &revent); 232 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 233 PCUT_ASSERT_EQUALS(wnd, rwindow); 234 PCUT_ASSERT_EQUALS(event.type, revent.kbd_event.type); 235 PCUT_ASSERT_EQUALS(event.key, revent.kbd_event.key); 236 PCUT_ASSERT_EQUALS(event.mods, revent.kbd_event.mods); 237 PCUT_ASSERT_EQUALS(event.c, revent.kbd_event.c); 238 239 rc = ds_client_get_event(client, &rwindow, &revent); 240 PCUT_ASSERT_ERRNO_VAL(ENOENT, rc); 241 242 ds_window_destroy(wnd); 243 ds_client_destroy(client); 244 ds_display_destroy(disp); 245 } 246 247 /** Test ds_seat_post_ptd_event() with click on window switches focus 248 */ 249 PCUT_TEST(post_ptd_event_wnd_switch) 250 { 251 ds_display_t *disp; 252 ds_seat_t *seat; 253 ds_client_t *client; 254 ds_window_t *w0, *w1; 255 display_wnd_params_t params; 256 ptd_event_t event; 257 bool called_cb = false; 258 errno_t rc; 259 260 rc = ds_display_create(NULL, &disp); 261 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 262 263 rc = ds_seat_create(disp, &seat); 264 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 265 266 rc = ds_client_create(disp, &test_ds_client_cb, &called_cb, &client); 267 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 268 269 display_wnd_params_init(¶ms); 270 params.rect.p0.x = params.rect.p0.y = 0; 271 params.rect.p1.x = params.rect.p1.y = 1; 272 273 rc = ds_window_create(client, ¶ms, &w0); 274 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 275 276 rc = ds_window_create(client, ¶ms, &w1); 277 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 278 279 w0->dpos.x = 10; 280 w0->dpos.y = 10; 281 282 w1->dpos.x = 400; 283 w1->dpos.y = 400; 284 285 PCUT_ASSERT_FALSE(called_cb); 286 287 ds_seat_set_focus(seat, w0); 288 289 event.type = PTD_MOVE; 290 event.dmove.x = 400; 291 event.dmove.y = 400; 292 rc = ds_seat_post_ptd_event(seat, &event); 293 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 294 PCUT_ASSERT_FALSE(called_cb); 295 296 event.type = PTD_PRESS; 297 event.btn_num = 1; 298 rc = ds_seat_post_ptd_event(seat, &event); 299 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 300 PCUT_ASSERT_FALSE(called_cb); 301 302 PCUT_ASSERT_EQUALS(w1, seat->focus); 303 304 event.type = PTD_MOVE; 305 event.dmove.x = -400 + 10; 306 event.dmove.y = -400 + 10; 307 rc = ds_seat_post_ptd_event(seat, &event); 308 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 309 PCUT_ASSERT_FALSE(called_cb); 310 311 event.type = PTD_PRESS; 312 event.btn_num = 1; 313 rc = ds_seat_post_ptd_event(seat, &event); 314 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 315 PCUT_ASSERT_FALSE(called_cb); 316 317 PCUT_ASSERT_EQUALS(w0, seat->focus); 318 319 ds_window_destroy(w0); 320 ds_window_destroy(w1); 321 ds_client_destroy(client); 322 ds_seat_destroy(seat); 323 ds_display_destroy(disp); 324 } 325 326 /** Test ds_seat_post_pos_event() */ 327 PCUT_TEST(post_pos_event) 328 { 329 // XXX 330 } 331 136 332 PCUT_EXPORT(seat);
Note:
See TracChangeset
for help on using the changeset viewer.