Changes in uspace/lib/ipcgfx/test/ipcgfx.c [afcf704:7470d97] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/ipcgfx/test/ipcgfx.c
rafcf704 r7470d97 1 1 /* 2 * Copyright (c) 20 19Jiri Svoboda2 * Copyright (c) 2021 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 50 50 static void test_ipcgc_conn(ipc_call_t *, void *); 51 51 52 static errno_t test_gc_set_clip_rect(void *, gfx_rect_t *); 52 53 static errno_t test_gc_set_color(void *, gfx_color_t *); 53 54 static errno_t test_gc_fill_rect(void *, gfx_rect_t *); 55 static errno_t test_gc_update(void *); 54 56 static errno_t test_gc_bitmap_create(void *, gfx_bitmap_params_t *, 55 57 gfx_bitmap_alloc_t *, void **); … … 59 61 60 62 static gfx_context_ops_t test_gc_ops = { 63 .set_clip_rect = test_gc_set_clip_rect, 61 64 .set_color = test_gc_set_color, 62 65 .fill_rect = test_gc_fill_rect, 66 .update = test_gc_update, 63 67 .bitmap_create = test_gc_bitmap_create, 64 68 .bitmap_destroy = test_gc_bitmap_destroy, … … 73 77 errno_t rc; 74 78 79 bool set_clip_rect_called; 80 bool do_clip; 81 gfx_rect_t set_clip_rect_rect; 82 75 83 bool set_color_called; 76 84 uint16_t set_color_r; … … 80 88 bool fill_rect_called; 81 89 gfx_rect_t fill_rect_rect; 90 91 bool update_called; 82 92 83 93 bool bitmap_create_called; … … 99 109 gfx_bitmap_alloc_t alloc; 100 110 } test_bitmap_t; 111 112 /** gfx_set_clip_rect with server returning failure */ 113 PCUT_TEST(set_clip_rect_failure) 114 { 115 errno_t rc; 116 service_id_t sid; 117 test_response_t resp; 118 gfx_context_t *gc; 119 gfx_rect_t rect; 120 async_sess_t *sess; 121 ipc_gc_t *ipcgc; 122 123 async_set_fallback_port_handler(test_ipcgc_conn, &resp); 124 125 // FIXME This causes this test to be non-reentrant! 126 rc = loc_server_register(test_ipcgfx_server); 127 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 128 129 rc = loc_service_register(test_ipcgfx_svc, &sid); 130 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 131 132 sess = loc_service_connect(sid, INTERFACE_GC, 0); 133 PCUT_ASSERT_NOT_NULL(sess); 134 135 rc = ipc_gc_create(sess, &ipcgc); 136 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 137 138 gc = ipc_gc_get_ctx(ipcgc); 139 PCUT_ASSERT_NOT_NULL(gc); 140 141 resp.rc = ENOMEM; 142 resp.set_clip_rect_called = false; 143 rect.p0.x = 1; 144 rect.p0.y = 2; 145 rect.p1.x = 3; 146 rect.p1.y = 4; 147 rc = gfx_set_clip_rect(gc, &rect); 148 PCUT_ASSERT_ERRNO_VAL(resp.rc, rc); 149 PCUT_ASSERT_TRUE(resp.set_clip_rect_called); 150 PCUT_ASSERT_EQUALS(rect.p0.x, resp.set_clip_rect_rect.p0.x); 151 PCUT_ASSERT_EQUALS(rect.p0.y, resp.set_clip_rect_rect.p0.y); 152 PCUT_ASSERT_EQUALS(rect.p1.x, resp.set_clip_rect_rect.p1.x); 153 PCUT_ASSERT_EQUALS(rect.p1.y, resp.set_clip_rect_rect.p1.y); 154 155 ipc_gc_delete(ipcgc); 156 async_hangup(sess); 157 158 rc = loc_service_unregister(sid); 159 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 160 } 161 162 /** gfx_set_clip_rect with server returning success */ 163 PCUT_TEST(set_clip_rect_success) 164 { 165 errno_t rc; 166 service_id_t sid; 167 test_response_t resp; 168 gfx_context_t *gc; 169 gfx_rect_t rect; 170 async_sess_t *sess; 171 ipc_gc_t *ipcgc; 172 173 async_set_fallback_port_handler(test_ipcgc_conn, &resp); 174 175 // FIXME This causes this test to be non-reentrant! 176 rc = loc_server_register(test_ipcgfx_server); 177 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 178 179 rc = loc_service_register(test_ipcgfx_svc, &sid); 180 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 181 182 sess = loc_service_connect(sid, INTERFACE_GC, 0); 183 PCUT_ASSERT_NOT_NULL(sess); 184 185 rc = ipc_gc_create(sess, &ipcgc); 186 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 187 188 gc = ipc_gc_get_ctx(ipcgc); 189 PCUT_ASSERT_NOT_NULL(gc); 190 191 resp.rc = EOK; 192 resp.set_clip_rect_called = false; 193 rect.p0.x = 1; 194 rect.p0.y = 2; 195 rect.p1.x = 3; 196 rect.p1.y = 4; 197 rc = gfx_set_clip_rect(gc, &rect); 198 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 199 PCUT_ASSERT_TRUE(resp.set_clip_rect_called); 200 PCUT_ASSERT_TRUE(resp.do_clip); 201 PCUT_ASSERT_EQUALS(rect.p0.x, resp.set_clip_rect_rect.p0.x); 202 PCUT_ASSERT_EQUALS(rect.p0.y, resp.set_clip_rect_rect.p0.y); 203 PCUT_ASSERT_EQUALS(rect.p1.x, resp.set_clip_rect_rect.p1.x); 204 PCUT_ASSERT_EQUALS(rect.p1.y, resp.set_clip_rect_rect.p1.y); 205 206 ipc_gc_delete(ipcgc); 207 async_hangup(sess); 208 209 rc = loc_service_unregister(sid); 210 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 211 } 212 213 /** gfx_set_clip_rect with null rectangle, server returning success */ 214 PCUT_TEST(set_clip_rect_null_success) 215 { 216 errno_t rc; 217 service_id_t sid; 218 test_response_t resp; 219 gfx_context_t *gc; 220 async_sess_t *sess; 221 ipc_gc_t *ipcgc; 222 223 async_set_fallback_port_handler(test_ipcgc_conn, &resp); 224 225 // FIXME This causes this test to be non-reentrant! 226 rc = loc_server_register(test_ipcgfx_server); 227 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 228 229 rc = loc_service_register(test_ipcgfx_svc, &sid); 230 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 231 232 sess = loc_service_connect(sid, INTERFACE_GC, 0); 233 PCUT_ASSERT_NOT_NULL(sess); 234 235 rc = ipc_gc_create(sess, &ipcgc); 236 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 237 238 gc = ipc_gc_get_ctx(ipcgc); 239 PCUT_ASSERT_NOT_NULL(gc); 240 241 resp.rc = EOK; 242 resp.set_clip_rect_called = false; 243 244 rc = gfx_set_clip_rect(gc, NULL); 245 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 246 PCUT_ASSERT_TRUE(resp.set_clip_rect_called); 247 PCUT_ASSERT_FALSE(resp.do_clip); 248 249 ipc_gc_delete(ipcgc); 250 async_hangup(sess); 251 252 rc = loc_service_unregister(sid); 253 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 254 } 101 255 102 256 /** gfx_set_color with server returning failure */ … … 230 384 231 385 resp.rc = ENOMEM; 232 resp. set_color_called = false;386 resp.fill_rect_called = false; 233 387 rect.p0.x = 1; 234 388 rect.p0.y = 2; … … 280 434 281 435 resp.rc = EOK; 282 resp. set_color_called = false;436 resp.fill_rect_called = false; 283 437 rect.p0.x = 1; 284 438 rect.p0.y = 2; … … 292 446 PCUT_ASSERT_EQUALS(rect.p1.x, resp.fill_rect_rect.p1.x); 293 447 PCUT_ASSERT_EQUALS(rect.p1.y, resp.fill_rect_rect.p1.y); 448 449 ipc_gc_delete(ipcgc); 450 async_hangup(sess); 451 452 rc = loc_service_unregister(sid); 453 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 454 } 455 456 /** gfx_update with server returning failure */ 457 PCUT_TEST(update_failure) 458 { 459 errno_t rc; 460 service_id_t sid; 461 test_response_t resp; 462 gfx_context_t *gc; 463 async_sess_t *sess; 464 ipc_gc_t *ipcgc; 465 466 async_set_fallback_port_handler(test_ipcgc_conn, &resp); 467 468 // FIXME This causes this test to be non-reentrant! 469 rc = loc_server_register(test_ipcgfx_server); 470 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 471 472 rc = loc_service_register(test_ipcgfx_svc, &sid); 473 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 474 475 sess = loc_service_connect(sid, INTERFACE_GC, 0); 476 PCUT_ASSERT_NOT_NULL(sess); 477 478 rc = ipc_gc_create(sess, &ipcgc); 479 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 480 481 gc = ipc_gc_get_ctx(ipcgc); 482 PCUT_ASSERT_NOT_NULL(gc); 483 484 resp.rc = ENOMEM; 485 resp.update_called = false; 486 rc = gfx_update(gc); 487 PCUT_ASSERT_ERRNO_VAL(resp.rc, rc); 488 PCUT_ASSERT_TRUE(resp.update_called); 489 490 ipc_gc_delete(ipcgc); 491 async_hangup(sess); 492 493 rc = loc_service_unregister(sid); 494 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 495 } 496 497 /** gfx_update with server returning success */ 498 PCUT_TEST(update_success) 499 { 500 errno_t rc; 501 service_id_t sid; 502 test_response_t resp; 503 gfx_context_t *gc; 504 async_sess_t *sess; 505 ipc_gc_t *ipcgc; 506 507 async_set_fallback_port_handler(test_ipcgc_conn, &resp); 508 509 // FIXME This causes this test to be non-reentrant! 510 rc = loc_server_register(test_ipcgfx_server); 511 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 512 513 rc = loc_service_register(test_ipcgfx_svc, &sid); 514 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 515 516 sess = loc_service_connect(sid, INTERFACE_GC, 0); 517 PCUT_ASSERT_NOT_NULL(sess); 518 519 rc = ipc_gc_create(sess, &ipcgc); 520 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 521 522 gc = ipc_gc_get_ctx(ipcgc); 523 PCUT_ASSERT_NOT_NULL(gc); 524 525 resp.rc = EOK; 526 resp.update_called = false; 527 rc = gfx_update(gc); 528 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 529 PCUT_ASSERT_TRUE(resp.update_called); 294 530 295 531 ipc_gc_delete(ipcgc); … … 812 1048 } 813 1049 1050 /** Set clipping rectangle in test GC. 1051 * 1052 * @param arg Test GC 1053 * @param rect Rectangle 1054 * 1055 * @return EOK on success or an error code 1056 */ 1057 static errno_t test_gc_set_clip_rect(void *arg, gfx_rect_t *rect) 1058 { 1059 test_response_t *resp = (test_response_t *) arg; 1060 1061 resp->set_clip_rect_called = true; 1062 if (rect != NULL) { 1063 resp->do_clip = true; 1064 resp->set_clip_rect_rect = *rect; 1065 } else { 1066 resp->do_clip = false; 1067 } 1068 1069 return resp->rc; 1070 } 1071 814 1072 /** Set color in test GC. 815 1073 * … … 844 1102 resp->fill_rect_called = true; 845 1103 resp->fill_rect_rect = *rect; 1104 return resp->rc; 1105 } 1106 1107 /** Update test GC. 1108 * 1109 * @param arg Test GC 1110 * 1111 * @return EOK on success or an error code 1112 */ 1113 static errno_t test_gc_update(void *arg) 1114 { 1115 test_response_t *resp = (test_response_t *) arg; 1116 1117 resp->update_called = true; 846 1118 return resp->rc; 847 1119 }
Note:
See TracChangeset
for help on using the changeset viewer.