tests: Test wl_message_count_arrays
authorYong Bakos <ybakos@humanoriented.com>
Thu, 3 Nov 2016 20:42:54 +0000 (13:42 -0700)
committerPekka Paalanen <pekka.paalanen@collabora.co.uk>
Thu, 10 Nov 2016 15:12:04 +0000 (17:12 +0200)
message-test.c did not cover wl_message_count_arrays, so add one test that
specifically tests this method. Note that this exposes wl_message_count_arrays
in a private header (wayland-private.h), and removes the `static` modifier of
the implementation.

Signed-off-by: Yong Bakos <ybakos@humanoriented.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
src/connection.c
src/wayland-private.h
tests/message-test.c

index c3293a9..5c3d187 100644 (file)
@@ -392,7 +392,7 @@ wl_connection_queue(struct wl_connection *connection,
        return wl_buffer_put(&connection->out, data, count);
 }
 
-static int
+int
 wl_message_count_arrays(const struct wl_message *message)
 {
        int i, arrays;
index ef58ccf..676b181 100644 (file)
@@ -163,6 +163,9 @@ int
 arg_count_for_signature(const char *signature);
 
 int
+wl_message_count_arrays(const struct wl_message *message);
+
+int
 wl_message_get_since(const struct wl_message *message);
 
 void
index cb08f90..389f788 100644 (file)
@@ -51,3 +51,40 @@ TEST(message_version)
                       messages[i].expected_version);
        }
 }
+
+TEST(message_count_arrays)
+{
+       unsigned int i;
+       struct wl_message fake_messages[] = {
+               { "empty", "", NULL },
+               { "non_present", "iufsonh", NULL },
+               { "leading", "aiufsonh", NULL},
+               { "trailing", "iufsonha", NULL },
+               { "middle", "iufasonh", NULL },
+               { "multiple", "aaiufaasonhaa", NULL },
+               { "leading_version", "2aaiufaasonhaa", NULL },
+               { "among_nullables", "iufsa?oa?nah", NULL },
+               { "all_mixed", "2aiufas?oa?na", NULL },
+       };
+       const struct {
+               const struct wl_message *message;
+               int expected_array_count;
+       } messages[] = {
+               { &wl_pointer_interface.events[WL_POINTER_ENTER], 0 },
+               { &wl_keyboard_interface.events[WL_KEYBOARD_ENTER], 1 },
+               { &fake_messages[0], 0 },
+               { &fake_messages[1], 0 },
+               { &fake_messages[2], 1 },
+               { &fake_messages[3], 1 },
+               { &fake_messages[4], 1 },
+               { &fake_messages[5], 6 },
+               { &fake_messages[6], 6 },
+               { &fake_messages[7], 3 },
+               { &fake_messages[8], 4 }
+       };
+
+       for (i = 0; i < ARRAY_LENGTH(messages); ++i) {
+               assert(wl_message_count_arrays(messages[i].message) ==
+                      messages[i].expected_array_count);
+       }
+}