Ignore this patch... resubmitting as a series to address coding conventions.

U. Artie


>-----Original Message-----
>From: Eoff, Ullysses A
>Sent: Wednesday, September 26, 2012 3:09 PM
>To: wayland-devel@lists.freedesktop.org
>Cc: Eoff, Ullysses A
>Subject: [PATCH] tests: add button test
>
>From: "U. Artie Eoff" <ullysses.a.e...@intel.com>
>
>Signed-off-by: U. Artie Eoff <ullysses.a.e...@intel.com>
>---
> tests/Makefile.am   |   4 +-
> tests/button-test.c | 136
>++++++++++++++++++++++++++++++++++++++++++++++++++++
> tests/test-client.c |  18 ++++++-
> 3 files changed, 156 insertions(+), 2 deletions(-)
> create mode 100644 tests/button-test.c
>
>diff --git a/tests/Makefile.am b/tests/Makefile.am
>index 60c73a1..fcf6674 100644
>--- a/tests/Makefile.am
>+++ b/tests/Makefile.am
>@@ -1,6 +1,7 @@
> TESTS = surface-test.la client-test.la        \
>       event-test.la text-test.la      \
>-      surface-global-test.la
>+      surface-global-test.la          \
>+      button-test.la
>
> TESTS_ENVIRONMENT = $(SHELL) $(top_srcdir)/tests/weston-test
>
>@@ -22,6 +23,7 @@ surface_test_la_SOURCES = surface-test.c
>$(test_runner_src)
> client_test_la_SOURCES = client-test.c $(test_runner_src)
> event_test_la_SOURCES = event-test.c $(test_runner_src)
> text_test_la_SOURCES = text-test.c $(test_runner_src)
>+button_test_la_SOURCES = button-test.c $(test_runner_src)
>
> test_client_SOURCES = test-client.c
> test_client_LDADD = $(SIMPLE_CLIENT_LIBS)
>diff --git a/tests/button-test.c b/tests/button-test.c
>new file mode 100644
>index 0000000..437291a
>--- /dev/null
>+++ b/tests/button-test.c
>@@ -0,0 +1,136 @@
>+/*
>+ * Copyright © 2012 Intel Corporation
>+ *
>+ * Permission to use, copy, modify, distribute, and sell this software and
>+ * its documentation for any purpose is hereby granted without fee,
>provided
>+ * that the above copyright notice appear in all copies and that both that
>+ * copyright notice and this permission notice appear in supporting
>+ * documentation, and that the name of the copyright holders not be used in
>+ * advertising or publicity pertaining to distribution of the software
>+ * without specific, written prior permission.  The copyright holders make
>+ * no representations about the suitability of this software for any
>+ * purpose.  It is provided "as is" without express or implied warranty.
>+ *
>+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO
>THIS
>+ * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
>AND
>+ * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
>+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
>WHATSOEVER
>+ * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
>ACTION OF
>+ * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
>OR IN
>+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
>+ */
>+
>+#include <stdlib.h>
>+#include <stdio.h>
>+#include <sys/socket.h>
>+#include <assert.h>
>+#include <unistd.h>
>+#include <string.h>
>+#include <linux/input.h>
>+
>+#include "test-runner.h"
>+
>+struct context {
>+      struct weston_layer *layer;
>+      struct weston_seat *seat;
>+      struct weston_surface *surface;
>+};
>+
>+static void
>+handle_button_up(struct test_client *);
>+
>+static void
>+handle_button_down(struct test_client *client)
>+{
>+      struct context *context = client->data;
>+      uint32_t mask;
>+
>+      assert(sscanf(client->buf, "%u", &mask) == 1);
>+
>+      assert(mask == 1);
>+
>+      notify_button(context->seat, 100, BTN_LEFT,
>+              WL_POINTER_BUTTON_STATE_RELEASED);
>+
>+      test_client_send(client, "send-button-state\n");
>+      client->handle = handle_button_up;
>+}
>+
>+static void
>+handle_button_up(struct test_client *client)
>+{
>+      struct context *context = client->data;
>+      static int once = 0;
>+      uint32_t mask;
>+
>+      assert(sscanf(client->buf, "%u", &mask) == 1);
>+
>+      assert(mask == 0);
>+
>+      if (!once++) {
>+              notify_button(context->seat, 100, BTN_LEFT,
>+                      WL_POINTER_BUTTON_STATE_PRESSED);
>+
>+              test_client_send(client, "send-button-state\n");
>+              client->handle = handle_button_down;
>+      } else {
>+              test_client_send(client, "bye\n");
>+              client->handle = NULL;
>+      }
>+}
>+
>+static void
>+handle_surface(struct test_client *client)
>+{
>+      uint32_t id;
>+      struct context *context = client->data;
>+      struct wl_resource *resource;
>+      struct wl_list *seat_list;
>+
>+      assert(sscanf(client->buf, "surface %u", &id) == 1);
>+      fprintf(stderr, "server: got surface id %u\n", id);
>+      resource = wl_client_get_object(client->client, id);
>+      assert(resource);
>+      assert(strcmp(resource->object.interface->name, "wl_surface") ==
>0);
>+
>+      context->surface = (struct weston_surface *) resource;
>+      weston_surface_set_color(context->surface, 0.0, 0.0, 0.0, 1.0);
>+
>+      context->layer = malloc(sizeof *context->layer);
>+      assert(context->layer);
>+      weston_layer_init(context->layer, &client->compositor-
>>cursor_layer.link);
>+      wl_list_insert(&context->layer->surface_list, &context->surface-
>>layer_link);
>+
>+      seat_list = &client->compositor->seat_list;
>+      assert(wl_list_length(seat_list) == 1);
>+      context->seat = container_of(seat_list->next, struct weston_seat,
>link);
>+
>+      client->compositor->focus = 1; /* Make it work even if pointer is
>+                                      * outside X window. */
>+
>+      weston_surface_configure(context->surface, 100, 100, 100, 100);
>+      weston_surface_update_transform(context->surface);
>+      weston_surface_damage(context->surface);
>+
>+      notify_pointer_focus(context->seat, context->surface->output,
>+              wl_fixed_from_int(150), wl_fixed_from_int(150));
>+
>+      test_client_send(client, "send-button-state\n");
>+      client->handle = handle_button_up;
>+}
>+
>+TEST(button_test)
>+{
>+      struct context *context;
>+      struct test_client *client;
>+
>+      client = test_client_launch(compositor, "test-client");
>+      client->terminate = 1;
>+
>+      test_client_send(client, "create-surface\n");
>+      client->handle = handle_surface;
>+
>+      context = calloc(1, sizeof *context);
>+      assert(context);
>+      client->data = context;
>+}
>diff --git a/tests/test-client.c b/tests/test-client.c
>index f8a1a7b..3765305 100644
>--- a/tests/test-client.c
>+++ b/tests/test-client.c
>@@ -311,7 +311,21 @@ static const struct wl_surface_listener
>surface_listener = {
> };
>
> static void
>-send_state(int fd, struct display* display)
>+send_button_state(int fd, struct display *display)
>+{
>+      char buf[64];
>+      int len;
>+
>+      wl_display_flush(display->display);
>+
>+      len = snprintf(buf, sizeof buf, "%u\n", display->input->button_mask);
>+      assert(write(fd, buf, len) == len);
>+
>+      wl_display_roundtrip(display->display);
>+}
>+
>+static void
>+send_state(int fd, struct display *display)
> {
>       char buf[64];
>       int len;
>@@ -398,6 +412,8 @@ int main(int argc, char *argv[])
>                       create_surface(fd, display);
>               } else if (strncmp(buf, "send-state\n", ret) == 0) {
>                       send_state(fd, display);
>+              } else if (strncmp(buf, "send-button-state\n", ret) == 0) {
>+                      send_button_state(fd, display);
>               } else {
>                       fprintf(stderr, "test-client: unknown command
>%.*s\n", ret, buf);
>                       return -1;
>--
>1.7.11.2

_______________________________________________
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to