diff options
author | Kristian Høgsberg <krh@bitplanet.net> | 2012-03-23 16:56:19 -0400 |
---|---|---|
committer | Kristian Høgsberg <krh@bitplanet.net> | 2012-03-23 16:56:19 -0400 |
commit | 33ad8a3315b22a38ddae116314e081488e5f3ee4 (patch) | |
tree | d3857aa4cc2d71e1ef5054e901fcd07cfeef82f9 /tests | |
parent | 0ca52cce98325b1fdae9046474e70246ae4c87e2 (diff) |
connection-test: Store expected result in struct marshal_data
Diffstat (limited to 'tests')
-rw-r--r-- | tests/connection-test.c | 48 |
1 files changed, 25 insertions, 23 deletions
diff --git a/tests/connection-test.c b/tests/connection-test.c index 6afb67e..f805624 100644 --- a/tests/connection-test.c +++ b/tests/connection-test.c @@ -146,6 +146,11 @@ struct marshal_data { uint32_t read_mask; uint32_t write_mask; uint32_t buffer[10]; + union { + uint32_t u; + int32_t i; + const char *s; + } value; }; static void @@ -244,30 +249,24 @@ TEST(connection_marshal) } static void -validate_demarshal_u(void *data, struct wl_object *object, uint32_t u) +validate_demarshal_u(struct marshal_data *data, + struct wl_object *object, uint32_t u) { - uint32_t *msg = data; - - assert(object->id = msg[0]); - assert(msg[2] == u); + assert(data->value.u == u); } static void -validate_demarshal_i(void *data, struct wl_object *object, int32_t i) +validate_demarshal_i(struct marshal_data *data, + struct wl_object *object, int32_t i) { - uint32_t *msg = data; - - assert(object->id = msg[0]); - assert((int32_t) msg[2] == i); + assert(data->value.i == i); } static void -validate_demarshal_s(void *data, struct wl_object *object, const char *s) +validate_demarshal_s(struct marshal_data *data, + struct wl_object *object, const char *s) { - uint32_t *msg = data; - - assert(object->id = msg[0]); - assert(strcmp(s, "superdude") == 0); + assert(strcmp(data->value.s, s) == 0); } static void @@ -288,31 +287,33 @@ demarshal(struct marshal_data *data, const char *format, object.id = msg[0]; closure = wl_connection_demarshal(data->read_connection, size, &objects, &message); - wl_closure_invoke(closure, &object, func, msg); + wl_closure_invoke(closure, &object, func, data); } TEST(connection_demarshal) { struct marshal_data data; uint32_t msg[10]; - static const char text[] = "superdude"; setup_marshal_data(&data); + data.value.u = 8000; msg[0] = 400200; /* object id */ msg[1] = 12; /* size = 12, opcode = 0 */ - msg[2] = 8000; + msg[2] = data.value.u; demarshal(&data, "u", msg, (void *) validate_demarshal_u); + data.value.i = -557799; msg[0] = 400200; msg[1] = 12; - msg[2] = -557799; + msg[2] = data.value.i; demarshal(&data, "i", msg, (void *) validate_demarshal_i); + data.value.s = "superdude"; msg[0] = 400200; msg[1] = 24; msg[2] = 10; - memcpy(&msg[3], text, msg[2]); + memcpy(&msg[3], data.value.s, msg[2]); demarshal(&data, "s", msg, (void *) validate_demarshal_s); release_marshal_data(&data); @@ -352,7 +353,7 @@ marshal_demarshal(struct marshal_data *data, object.id = msg[0]; closure = wl_connection_demarshal(data->read_connection, size, &objects, &message); - wl_closure_invoke(closure, &object, func, msg); + wl_closure_invoke(closure, &object, func, data); wl_closure_destroy(closure); } @@ -363,8 +364,9 @@ TEST(connection_marshal_demarshal) setup_marshal_data(&data); - marshal_demarshal(&data, (void *) validate_demarshal_s, 24, - "s", "superdude"); + data.value.s = "cookie robots"; + marshal_demarshal(&data, (void *) validate_demarshal_s, + 28, "s", data.value.s); release_marshal_data(&data); } |