summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorKristian Høgsberg <krh@bitplanet.net>2012-03-23 16:56:19 -0400
committerKristian Høgsberg <krh@bitplanet.net>2012-03-23 16:56:19 -0400
commit33ad8a3315b22a38ddae116314e081488e5f3ee4 (patch)
treed3857aa4cc2d71e1ef5054e901fcd07cfeef82f9 /tests
parent0ca52cce98325b1fdae9046474e70246ae4c87e2 (diff)
connection-test: Store expected result in struct marshal_data
Diffstat (limited to 'tests')
-rw-r--r--tests/connection-test.c48
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);
}