Changeset 1766326 in mainline for uspace/lib/wndmgt/test/wndmgt.c
- Timestamp:
- 2022-10-18T09:06:07Z (3 years ago)
- Branches:
- master, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 7a05d924
- Parents:
- 0761448
- git-author:
- Jiri Svoboda <jiri@…> (2022-10-17 17:05:56)
- git-committer:
- Jiri Svoboda <jiri@…> (2022-10-18 09:06:07)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/wndmgt/test/wndmgt.c
r0761448 r1766326 34 34 #include <loc.h> 35 35 #include <pcut/pcut.h> 36 #include <str.h> 36 37 #include "../private/wndmgt.h" 37 38 … … 81 82 82 83 bool get_window_info_called; 84 sysarg_t get_window_info_wnd_id; 83 85 wndmgt_window_info_t *get_window_info_rinfo; 84 86 … … 127 129 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 128 130 } 131 132 /** wndmgt_get_window_list() with server returning error response works */ 133 PCUT_TEST(get_window_list_failure) 134 { 135 errno_t rc; 136 service_id_t sid; 137 wndmgt_t *wndmgt = NULL; 138 wndmgt_window_list_t *list; 139 test_response_t resp; 140 141 async_set_fallback_port_handler(test_wndmgt_conn, &resp); 142 143 // FIXME This causes this test to be non-reentrant! 144 rc = loc_server_register(test_wndmgt_server); 145 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 146 147 rc = loc_service_register(test_wndmgt_svc, &sid); 148 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 149 150 rc = wndmgt_open(test_wndmgt_svc, NULL, NULL, &wndmgt); 151 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 152 PCUT_ASSERT_NOT_NULL(wndmgt); 153 154 resp.rc = ENOMEM; 155 resp.get_window_list_called = false; 156 157 rc = wndmgt_get_window_list(wndmgt, &list); 158 PCUT_ASSERT_TRUE(resp.get_window_list_called); 159 PCUT_ASSERT_ERRNO_VAL(resp.rc, rc); 160 161 wndmgt_close(wndmgt); 162 rc = loc_service_unregister(sid); 163 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 164 } 165 166 /** wndmgt_get_window_list() with server returning success response works */ 167 PCUT_TEST(get_window_list_success) 168 { 169 errno_t rc; 170 service_id_t sid; 171 wndmgt_t *wndmgt = NULL; 172 wndmgt_window_list_t *list; 173 test_response_t resp; 174 175 async_set_fallback_port_handler(test_wndmgt_conn, &resp); 176 177 // FIXME This causes this test to be non-reentrant! 178 rc = loc_server_register(test_wndmgt_server); 179 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 180 181 rc = loc_service_register(test_wndmgt_svc, &sid); 182 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 183 184 rc = wndmgt_open(test_wndmgt_svc, NULL, NULL, &wndmgt); 185 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 186 PCUT_ASSERT_NOT_NULL(wndmgt); 187 188 resp.rc = EOK; 189 resp.get_window_list_called = false; 190 resp.get_window_list_rlist = calloc(1, sizeof(wndmgt_window_list_t)); 191 PCUT_ASSERT_NOT_NULL(resp.get_window_list_rlist); 192 resp.get_window_list_rlist->nwindows = 2; 193 resp.get_window_list_rlist->windows = calloc(2, sizeof(sysarg_t)); 194 PCUT_ASSERT_NOT_NULL(resp.get_window_list_rlist->windows); 195 resp.get_window_list_rlist->windows[0] = 42; 196 resp.get_window_list_rlist->windows[1] = 43; 197 198 rc = wndmgt_get_window_list(wndmgt, &list); 199 PCUT_ASSERT_TRUE(resp.get_window_list_called); 200 PCUT_ASSERT_ERRNO_VAL(resp.rc, rc); 201 202 PCUT_ASSERT_INT_EQUALS(2, list->nwindows); 203 PCUT_ASSERT_INT_EQUALS(42, list->windows[0]); 204 PCUT_ASSERT_INT_EQUALS(43, list->windows[1]); 205 206 wndmgt_free_window_list(list); 207 wndmgt_close(wndmgt); 208 rc = loc_service_unregister(sid); 209 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 210 } 211 212 /** wndmgt_get_window_infp() with server returning error response works */ 213 PCUT_TEST(get_window_info_failure) 214 { 215 errno_t rc; 216 service_id_t sid; 217 wndmgt_t *wndmgt = NULL; 218 sysarg_t wnd_id; 219 wndmgt_window_info_t *info; 220 test_response_t resp; 221 222 async_set_fallback_port_handler(test_wndmgt_conn, &resp); 223 224 // FIXME This causes this test to be non-reentrant! 225 rc = loc_server_register(test_wndmgt_server); 226 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 227 228 rc = loc_service_register(test_wndmgt_svc, &sid); 229 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 230 231 rc = wndmgt_open(test_wndmgt_svc, NULL, NULL, &wndmgt); 232 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 233 PCUT_ASSERT_NOT_NULL(wndmgt); 234 235 resp.rc = ENOMEM; 236 resp.get_window_info_called = false; 237 wnd_id = 1; 238 239 rc = wndmgt_get_window_info(wndmgt, wnd_id, &info); 240 PCUT_ASSERT_TRUE(resp.get_window_info_called); 241 PCUT_ASSERT_INT_EQUALS(wnd_id, resp.get_window_info_wnd_id); 242 PCUT_ASSERT_ERRNO_VAL(resp.rc, rc); 243 244 wndmgt_close(wndmgt); 245 rc = loc_service_unregister(sid); 246 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 247 } 248 249 /** wndmgt_get_window_info() with server returning success response works */ 250 PCUT_TEST(get_window_info_success) 251 { 252 errno_t rc; 253 service_id_t sid; 254 wndmgt_t *wndmgt = NULL; 255 sysarg_t wnd_id; 256 wndmgt_window_info_t *info; 257 test_response_t resp; 258 259 async_set_fallback_port_handler(test_wndmgt_conn, &resp); 260 261 // FIXME This causes this test to be non-reentrant! 262 rc = loc_server_register(test_wndmgt_server); 263 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 264 265 rc = loc_service_register(test_wndmgt_svc, &sid); 266 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 267 268 rc = wndmgt_open(test_wndmgt_svc, NULL, NULL, &wndmgt); 269 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 270 PCUT_ASSERT_NOT_NULL(wndmgt); 271 272 resp.rc = EOK; 273 resp.get_window_info_called = false; 274 resp.get_window_info_rinfo = calloc(1, sizeof(wndmgt_window_info_t)); 275 PCUT_ASSERT_NOT_NULL(resp.get_window_info_rinfo); 276 resp.get_window_info_rinfo->caption = str_dup("Hello"); 277 PCUT_ASSERT_NOT_NULL(resp.get_window_info_rinfo->caption); 278 wnd_id = 1; 279 280 rc = wndmgt_get_window_info(wndmgt, wnd_id, &info); 281 PCUT_ASSERT_TRUE(resp.get_window_info_called); 282 PCUT_ASSERT_INT_EQUALS(wnd_id, resp.get_window_info_wnd_id); 283 PCUT_ASSERT_ERRNO_VAL(resp.rc, rc); 284 285 PCUT_ASSERT_STR_EQUALS("Hello", info->caption); 286 287 wndmgt_free_window_info(info); 288 wndmgt_close(wndmgt); 289 rc = loc_service_unregister(sid); 290 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 291 } 292 129 293 /** wndmgt_activate_window() with server returning error response works */ 130 294 PCUT_TEST(activate_window_failure) … … 199 363 } 200 364 365 /** wndmgt_close_window() with server returning error response works */ 366 PCUT_TEST(close_window_failure) 367 { 368 errno_t rc; 369 service_id_t sid; 370 wndmgt_t *wndmgt = NULL; 371 sysarg_t wnd_id; 372 test_response_t resp; 373 374 async_set_fallback_port_handler(test_wndmgt_conn, &resp); 375 376 // FIXME This causes this test to be non-reentrant! 377 rc = loc_server_register(test_wndmgt_server); 378 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 379 380 rc = loc_service_register(test_wndmgt_svc, &sid); 381 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 382 383 rc = wndmgt_open(test_wndmgt_svc, NULL, NULL, &wndmgt); 384 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 385 PCUT_ASSERT_NOT_NULL(wndmgt); 386 387 wnd_id = 42; 388 resp.rc = ENOMEM; 389 resp.close_window_called = false; 390 391 rc = wndmgt_close_window(wndmgt, wnd_id); 392 PCUT_ASSERT_TRUE(resp.close_window_called); 393 PCUT_ASSERT_INT_EQUALS(wnd_id, resp.close_window_wnd_id); 394 PCUT_ASSERT_ERRNO_VAL(resp.rc, rc); 395 396 wndmgt_close(wndmgt); 397 rc = loc_service_unregister(sid); 398 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 399 } 400 401 /** wndmgt_close_window() with server returning success response works */ 402 PCUT_TEST(close_window_success) 403 { 404 errno_t rc; 405 service_id_t sid; 406 wndmgt_t *wndmgt = NULL; 407 sysarg_t wnd_id; 408 test_response_t resp; 409 410 async_set_fallback_port_handler(test_wndmgt_conn, &resp); 411 412 // FIXME This causes this test to be non-reentrant! 413 rc = loc_server_register(test_wndmgt_server); 414 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 415 416 rc = loc_service_register(test_wndmgt_svc, &sid); 417 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 418 419 rc = wndmgt_open(test_wndmgt_svc, NULL, NULL, &wndmgt); 420 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 421 PCUT_ASSERT_NOT_NULL(wndmgt); 422 423 wnd_id = 42; 424 resp.rc = EOK; 425 resp.close_window_called = false; 426 427 rc = wndmgt_close_window(wndmgt, wnd_id); 428 PCUT_ASSERT_TRUE(resp.close_window_called); 429 PCUT_ASSERT_INT_EQUALS(wnd_id, resp.close_window_wnd_id); 430 PCUT_ASSERT_ERRNO_VAL(resp.rc, rc); 431 432 wndmgt_close(wndmgt); 433 rc = loc_service_unregister(sid); 434 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 435 } 436 201 437 /** Window added event can be delivered from server to client callback function */ 202 PCUT_TEST(window_added_ event_deliver)438 PCUT_TEST(window_added_deliver) 203 439 { 204 440 errno_t rc; … … 247 483 248 484 /** Window removed event can be delivered from server to client callback function */ 249 PCUT_TEST(window_removed_ event_deliver)485 PCUT_TEST(window_removed_deliver) 250 486 { 251 487 errno_t rc; … … 341 577 test_response_t *resp = (test_response_t *) arg; 342 578 579 resp->get_window_list_called = true; 580 343 581 if (resp->rc != EOK) 344 582 return resp->rc; 345 583 346 resp->get_window_list_called = true;347 584 *rlist = resp->get_window_list_rlist; 348 585 return EOK; … … 354 591 test_response_t *resp = (test_response_t *) arg; 355 592 593 resp->get_window_info_called = true; 594 resp->get_window_info_wnd_id = wnd_id; 595 356 596 if (resp->rc != EOK) 357 597 return resp->rc; 358 598 359 resp->get_window_info_called = true;360 599 *rinfo = resp->get_window_info_rinfo; 361 600 return EOK;
Note:
See TracChangeset
for help on using the changeset viewer.