Changeset 7470d97 in mainline for uspace/lib/ipcgfx/test/ipcgfx.c
- Timestamp:
- 2021-04-30T15:05:06Z (4 years ago)
- Branches:
- master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 051349b
- Parents:
- 252d03c
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/ipcgfx/test/ipcgfx.c
r252d03c r7470d97 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 *); … … 60 61 61 62 static gfx_context_ops_t test_gc_ops = { 63 .set_clip_rect = test_gc_set_clip_rect, 62 64 .set_color = test_gc_set_color, 63 65 .fill_rect = test_gc_fill_rect, … … 75 77 errno_t rc; 76 78 79 bool set_clip_rect_called; 80 bool do_clip; 81 gfx_rect_t set_clip_rect_rect; 82 77 83 bool set_color_called; 78 84 uint16_t set_color_r; … … 103 109 gfx_bitmap_alloc_t alloc; 104 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 } 105 255 106 256 /** gfx_set_color with server returning failure */ … … 234 384 235 385 resp.rc = ENOMEM; 236 resp. set_color_called = false;386 resp.fill_rect_called = false; 237 387 rect.p0.x = 1; 238 388 rect.p0.y = 2; … … 284 434 285 435 resp.rc = EOK; 286 resp. set_color_called = false;436 resp.fill_rect_called = false; 287 437 rect.p0.x = 1; 288 438 rect.p0.y = 2; … … 898 1048 } 899 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 900 1072 /** Set color in test GC. 901 1073 *
Note:
See TracChangeset
for help on using the changeset viewer.