diff --git a/tests/ivi_layout-internal-test.c b/tests/ivi_layout-internal-test.c index e56eb125..f7f7c805 100644 --- a/tests/ivi_layout-internal-test.c +++ b/tests/ivi_layout-internal-test.c @@ -622,6 +622,73 @@ test_screen_add_layers(struct test_context *ctx) #undef LAYER_NUM } +static void +test_screen_remove_layer(struct test_context *ctx) +{ + const struct ivi_layout_interface *lyt = ctx->layout_interface; + struct ivi_layout_layer *ivilayer; + struct weston_output *output; + struct ivi_layout_layer **array; + int32_t length = 0; + + if (wl_list_empty(&ctx->compositor->output_list)) + return; + + ivilayer = lyt->layer_create_with_dimension(IVI_TEST_LAYER_ID(0), 200, 300); + iassert(ivilayer != NULL); + + output = wl_container_of(ctx->compositor->output_list.next, output, link); + + iassert(lyt->screen_add_layer(output, ivilayer) == IVI_SUCCEEDED); + lyt->commit_changes(); + + iassert(lyt->get_layers_on_screen(output, &length, &array) == IVI_SUCCEEDED); + iassert(length == 1); + iassert(array[0] == ivilayer); + + iassert(lyt->screen_remove_layer(output, ivilayer) == IVI_SUCCEEDED); + lyt->commit_changes(); + + if (length > 0) + free(array); + + array = NULL; + + iassert(lyt->get_layers_on_screen(output, &length, &array) == IVI_SUCCEEDED); + iassert(length == 0); + iassert(array == NULL); + + lyt->layer_destroy(ivilayer); +} + +static void +test_screen_bad_remove_layer(struct test_context *ctx) +{ + const struct ivi_layout_interface *lyt = ctx->layout_interface; + struct ivi_layout_layer *ivilayer; + struct weston_output *output; + + if (wl_list_empty(&ctx->compositor->output_list)) + return; + + ivilayer = lyt->layer_create_with_dimension(IVI_TEST_LAYER_ID(0), 200, 300); + iassert(ivilayer != NULL); + + output = wl_container_of(ctx->compositor->output_list.next, output, link); + + iassert(lyt->screen_remove_layer(NULL, ivilayer) == IVI_FAILED); + lyt->commit_changes(); + + iassert(lyt->screen_remove_layer(output, NULL) == IVI_FAILED); + lyt->commit_changes(); + + iassert(lyt->screen_remove_layer(NULL, NULL) == IVI_FAILED); + lyt->commit_changes(); + + lyt->layer_destroy(ivilayer); +} + + static void test_commit_changes_after_render_order_set_layer_destroy( struct test_context *ctx) @@ -906,6 +973,8 @@ run_internal_tests(void *data) test_screen_render_order(ctx); test_screen_bad_render_order(ctx); test_screen_add_layers(ctx); + test_screen_remove_layer(ctx); + test_screen_bad_remove_layer(ctx); test_commit_changes_after_render_order_set_layer_destroy(ctx); test_layer_properties_changed_notification(ctx);