From: Nobuhiko Tanibata <nobuhiko_tanib...@xddp.denso.co.jp>

These tests are implemented on test suite framework, which provides
helper client.
Following features are tested,
  - notification of adding ivi-surface
  - notification of ivi-surface configure
  - notification of creating ivi-surface
  - notification of removing ivi-surface

Signed-off-by: Nobuhiko Tanibata <nobuhiko_tanib...@xddp.denso.co.jp>
Reviewed-by: Pekka Paalanen <pekka.paala...@collabora.co.uk>
---
 tests/ivi_layout-test-plugin.c | 172 +++++++++++++++++++++++++++++++++++++++++
 tests/ivi_layout-test.c        |  79 +++++++++++++++++++
 2 files changed, 251 insertions(+)

diff --git a/tests/ivi_layout-test-plugin.c b/tests/ivi_layout-test-plugin.c
index a134a14..28afac9 100644
--- a/tests/ivi_layout-test-plugin.c
+++ b/tests/ivi_layout-test-plugin.c
@@ -82,6 +82,7 @@ struct test_launcher {
 struct test_context {
        const struct ivi_controller_interface *controller_interface;
        struct wl_resource *runner_resource;
+       uint32_t user_flags;
 };
 
 static struct test_context static_context;
@@ -877,3 +878,174 @@ RUNNER_TEST(cleanup_layer)
        ctl->layer_destroy(ivilayer);
 }
 
+static void
+test_surface_properties_changed_notification_callback(struct 
ivi_layout_surface *ivisurf,
+                                                     const struct 
ivi_layout_surface_properties *prop,
+                                                     enum 
ivi_layout_notification_mask mask,
+                                                     void *userdata)
+{
+       struct test_context *ctx = userdata;
+       const struct ivi_controller_interface *ctl = ctx->controller_interface;
+
+       runner_assert_or_return(ctl->get_id_of_surface(ivisurf) == 
IVI_TEST_SURFACE_ID(0));
+
+       ctx->user_flags = 1;
+}
+
+RUNNER_TEST(surface_properties_changed_notification)
+{
+       const struct ivi_controller_interface *ctl = ctx->controller_interface;
+       const uint32_t id_surface = IVI_TEST_SURFACE_ID(0);
+       struct ivi_layout_surface *ivisurf;
+
+       ctx->user_flags = 0;
+
+       ivisurf = ctl->get_surface_from_id(id_surface);
+       runner_assert(ivisurf != NULL);
+
+       runner_assert(ctl->surface_add_notification(
+                     ivisurf, 
test_surface_properties_changed_notification_callback, ctx) == IVI_SUCCEEDED);
+
+       ctl->commit_changes();
+
+       runner_assert(ctx->user_flags == 0);
+
+       runner_assert(ctl->surface_set_destination_rectangle(
+                     ivisurf, 20, 30, 200, 300) == IVI_SUCCEEDED);
+
+       ctl->commit_changes();
+
+       runner_assert(ctx->user_flags == 1);
+
+       ctx->user_flags = 0;
+       runner_assert(ctl->surface_set_destination_rectangle(
+                     ivisurf, 20, 30, 200, 300) == IVI_SUCCEEDED);
+
+       ctl->commit_changes();
+
+       runner_assert(ctx->user_flags == 0);
+
+       ctl->surface_remove_notification(ivisurf);
+       ctx->user_flags = 0;
+       runner_assert(ctl->surface_set_destination_rectangle(
+                     ivisurf, 40, 50, 400, 500) == IVI_SUCCEEDED);
+
+       ctl->commit_changes();
+
+       runner_assert(ctx->user_flags == 0);
+}
+
+static void
+test_surface_configure_notification_callback(struct ivi_layout_surface 
*ivisurf,
+                                            void *userdata)
+{
+       struct test_context *ctx = userdata;
+       const struct ivi_controller_interface *ctl = ctx->controller_interface;
+
+       runner_assert_or_return(ctl->get_id_of_surface(ivisurf) == 
IVI_TEST_SURFACE_ID(0));
+
+       ctx->user_flags = 1;
+}
+
+RUNNER_TEST(surface_configure_notification_p1)
+{
+       const struct ivi_controller_interface *ctl = ctx->controller_interface;
+
+       runner_assert(IVI_SUCCEEDED == 
ctl->add_notification_configure_surface(test_surface_configure_notification_callback,
 ctx));
+       ctl->commit_changes();
+
+       ctx->user_flags = 0;
+}
+
+RUNNER_TEST(surface_configure_notification_p2)
+{
+       const struct ivi_controller_interface *ctl = ctx->controller_interface;
+
+       runner_assert(ctx->user_flags == 1);
+
+       
ctl->remove_notification_configure_surface(test_surface_configure_notification_callback,
 ctx);
+       ctx->user_flags = 0;
+}
+
+RUNNER_TEST(surface_configure_notification_p3)
+{
+       const struct ivi_controller_interface *ctl = ctx->controller_interface;
+
+       ctl->commit_changes();
+       runner_assert(ctx->user_flags == 0);
+}
+
+static void
+test_surface_create_notification_callback(struct ivi_layout_surface *ivisurf,
+                                         void *userdata)
+{
+       struct test_context *ctx = userdata;
+       const struct ivi_controller_interface *ctl = ctx->controller_interface;
+
+       runner_assert_or_return(ctl->get_id_of_surface(ivisurf) == 
IVI_TEST_SURFACE_ID(0));
+
+       ctx->user_flags = 1;
+}
+
+RUNNER_TEST(surface_create_notification_p1)
+{
+       const struct ivi_controller_interface *ctl = ctx->controller_interface;
+
+       runner_assert(ctl->add_notification_create_surface(
+                     test_surface_create_notification_callback, ctx) == 
IVI_SUCCEEDED);
+
+       ctx->user_flags = 0;
+}
+
+RUNNER_TEST(surface_create_notification_p2)
+{
+       const struct ivi_controller_interface *ctl = ctx->controller_interface;
+
+       runner_assert(ctx->user_flags == 1);
+
+       ctl->remove_notification_create_surface(
+               test_surface_create_notification_callback, ctx);
+       ctx->user_flags = 0;
+}
+
+RUNNER_TEST(surface_create_notification_p3)
+{
+       runner_assert(ctx->user_flags == 0);
+}
+
+static void
+test_surface_remove_notification_callback(struct ivi_layout_surface *ivisurf,
+                                         void *userdata)
+{
+       struct test_context *ctx = userdata;
+       const struct ivi_controller_interface *ctl = ctx->controller_interface;
+
+       runner_assert_or_return(ctl->get_id_of_surface(ivisurf) == 
IVI_TEST_SURFACE_ID(0));
+
+       ctx->user_flags = 1;
+}
+
+RUNNER_TEST(surface_remove_notification_p1)
+{
+       const struct ivi_controller_interface *ctl = ctx->controller_interface;
+
+       runner_assert(ctl->add_notification_remove_surface(
+                     test_surface_remove_notification_callback, ctx) == 
IVI_SUCCEEDED);
+
+       ctx->user_flags = 0;
+}
+
+RUNNER_TEST(surface_remove_notification_p2)
+{
+       const struct ivi_controller_interface *ctl = ctx->controller_interface;
+
+       runner_assert(ctx->user_flags == 1);
+
+       
ctl->remove_notification_remove_surface(test_surface_remove_notification_callback,
 ctx);
+       ctx->user_flags = 0;
+}
+
+RUNNER_TEST(surface_remove_notification_p3)
+{
+       runner_assert(ctx->user_flags == 0);
+}
diff --git a/tests/ivi_layout-test.c b/tests/ivi_layout-test.c
index 2ac67a4..7091c9f 100644
--- a/tests/ivi_layout-test.c
+++ b/tests/ivi_layout-test.c
@@ -196,6 +196,7 @@ const char * const basic_test_names[] = {
        "surface_destination_rectangle",
        "surface_source_rectangle",
        "surface_bad_opacity",
+       "surface_properties_changed_notification",
 };
 
 const char * const surface_property_commit_changes_test_names[] = {
@@ -387,3 +388,81 @@ TEST(commit_changes_after_render_order_set_surface_destroy)
        ivi_window_destroy(winds[2]);
        runner_destroy(runner);
 }
+
+TEST(ivi_layout_surface_configure_notification)
+{
+       struct client *client;
+       struct runner *runner;
+       struct ivi_window *wind;
+       struct wl_buffer *buffer;
+
+       client = create_client();
+       runner = client_create_runner(client);
+
+       runner_run(runner, "surface_configure_notification_p1");
+
+       wind = client_create_ivi_window(client, IVI_TEST_SURFACE_ID(0));
+
+       buffer = create_shm_buffer(client, 200, 300, NULL);
+
+       wl_surface_attach(wind->wl_surface, buffer, 0, 0);
+       wl_surface_damage(wind->wl_surface, 0, 0, 20, 30);
+       wl_surface_commit(wind->wl_surface);
+
+       runner_run(runner, "surface_configure_notification_p2");
+
+       wl_surface_attach(wind->wl_surface, buffer, 0, 0);
+       wl_surface_damage(wind->wl_surface, 0, 0, 40, 50);
+       wl_surface_commit(wind->wl_surface);
+
+       runner_run(runner, "surface_configure_notification_p3");
+
+       wl_buffer_destroy(buffer);
+       ivi_window_destroy(wind);
+       runner_destroy(runner);
+}
+
+TEST(ivi_layout_surface_create_notification)
+{
+       struct client *client;
+       struct runner *runner;
+       struct ivi_window *wind;
+
+       client = create_client();
+       runner = client_create_runner(client);
+
+       runner_run(runner, "surface_create_notification_p1");
+
+       wind = client_create_ivi_window(client, IVI_TEST_SURFACE_ID(0));
+
+       runner_run(runner, "surface_create_notification_p2");
+
+       ivi_window_destroy(wind);
+       wind = client_create_ivi_window(client, IVI_TEST_SURFACE_ID(0));
+       runner_run(runner, "surface_create_notification_p3");
+
+       ivi_window_destroy(wind);
+       runner_destroy(runner);
+}
+
+TEST(ivi_layout_surface_remove_notification)
+{
+       struct client *client;
+       struct runner *runner;
+       struct ivi_window *wind;
+
+       client = create_client();
+       runner = client_create_runner(client);
+
+       wind = client_create_ivi_window(client, IVI_TEST_SURFACE_ID(0));
+       runner_run(runner, "surface_remove_notification_p1");
+       ivi_window_destroy(wind);
+
+       runner_run(runner, "surface_remove_notification_p2");
+
+       wind = client_create_ivi_window(client, IVI_TEST_SURFACE_ID(0));
+       ivi_window_destroy(wind);
+       runner_run(runner, "surface_remove_notification_p3");
+
+       runner_destroy(runner);
+}
-- 
1.8.3.1

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

Reply via email to