summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/connection-test.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/tests/connection-test.c b/tests/connection-test.c
index 54ac423..14a58e6 100644
--- a/tests/connection-test.c
+++ b/tests/connection-test.c
@@ -20,6 +20,7 @@
* OF THIS SOFTWARE.
*/
+#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
@@ -288,6 +289,13 @@ validate_demarshal_h(struct marshal_data *data,
}
static void
+validate_demarshal_f(struct marshal_data *data,
+ struct wl_object *object, wl_fixed_t f)
+{
+ assert(data->value.i == f);
+}
+
+static void
demarshal(struct marshal_data *data, const char *format,
uint32_t *msg, void (*func)(void))
{
@@ -335,6 +343,12 @@ TEST(connection_demarshal)
memcpy(&msg[3], data.value.s, msg[2]);
demarshal(&data, "s", msg, (void *) validate_demarshal_s);
+ data.value.i = wl_fixed_from_double(-90000.2390);
+ msg[0] = 400200;
+ msg[1] = 12;
+ msg[2] = data.value.i;
+ demarshal(&data, "f", msg, (void *) validate_demarshal_f);
+
release_marshal_data(&data);
}
@@ -400,6 +414,18 @@ TEST(connection_marshal_demarshal)
marshal_demarshal(&data, (void *) validate_demarshal_h,
8, "h", data.value.h);
+ data.value.i = wl_fixed_from_double(1234.5678);
+ marshal_demarshal(&data, (void *) validate_demarshal_f,
+ 12, "f", data.value.i);
+
+ data.value.i = wl_fixed_from_double(-90000.2390);
+ marshal_demarshal(&data, (void *) validate_demarshal_f,
+ 12, "f", data.value.i);
+
+ data.value.i = wl_fixed_from_double((1 << 23) - 1 + 0.0941);
+ marshal_demarshal(&data, (void *) validate_demarshal_f,
+ 12, "f", data.value.i);
+
release_marshal_data(&data);
}