On 06/21/2015 11:35 PM, Nobuhiko Tanibata wrote:
> From: Nobuhiko Tanibata <[email protected]>
> 
> 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 <[email protected]>
> Reviewed-by: Pekka Paalanen <[email protected]>

Looks good.

Reviewed-by: Jon A. Cruz <[email protected]>

> ---
>  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);
> +}
> 

-- 
Jon A. Cruz - Senior Open Source Developer
Samsung Open Source Group
[email protected]
_______________________________________________
wayland-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to