tests: test set for ivi-layer bad condition with helper-client

These tests are implemented on test suite framework, which provides
helper client.
Following features are tested,
- bad render order of ivi-surface on ivi-layer
- call commitchanges after a ivi_surface in render order is destoryed

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Jon A. Cruz <jonc@osg.samsung.com>
diff --git a/tests/ivi_layout-test.c b/tests/ivi_layout-test.c
index 051ded4..2ac67a4 100644
--- a/tests/ivi_layout-test.c
+++ b/tests/ivi_layout-test.c
@@ -210,6 +210,7 @@
 
 const char * const render_order_test_names[] = {
 	"layer_render_order",
+	"layer_bad_render_order",
 };
 
 TEST_P(ivi_layout_runner, basic_test_names)
@@ -337,3 +338,52 @@
 	ivi_window_destroy(winds[2]);
 	runner_destroy(runner);
 }
+
+TEST(destroy_surface_after_layer_render_order)
+{
+	struct client *client;
+	struct runner *runner;
+	struct ivi_window *winds[3];
+
+	client = create_client();
+	runner = client_create_runner(client);
+
+	winds[0] = client_create_ivi_window(client, IVI_TEST_SURFACE_ID(0));
+	winds[1] = client_create_ivi_window(client, IVI_TEST_SURFACE_ID(1));
+	winds[2] = client_create_ivi_window(client, IVI_TEST_SURFACE_ID(2));
+
+	runner_run(runner, "test_layer_render_order_destroy_one_surface_p1");
+
+	ivi_window_destroy(winds[1]);
+
+	runner_run(runner, "test_layer_render_order_destroy_one_surface_p2");
+
+	ivi_window_destroy(winds[0]);
+	ivi_window_destroy(winds[2]);
+	runner_destroy(runner);
+}
+
+TEST(commit_changes_after_render_order_set_surface_destroy)
+{
+	struct client *client;
+	struct runner *runner;
+	struct ivi_window *winds[3];
+
+	client = create_client();
+	runner = client_create_runner(client);
+
+	winds[0] = client_create_ivi_window(client, IVI_TEST_SURFACE_ID(0));
+	winds[1] = client_create_ivi_window(client, IVI_TEST_SURFACE_ID(1));
+	winds[2] = client_create_ivi_window(client, IVI_TEST_SURFACE_ID(2));
+
+	runner_run(runner, "commit_changes_after_render_order_set_surface_destroy");
+
+	ivi_window_destroy(winds[1]);
+
+	runner_run(runner, "ivi_layout_commit_changes");
+	runner_run(runner, "cleanup_layer");
+
+	ivi_window_destroy(winds[0]);
+	ivi_window_destroy(winds[2]);
+	runner_destroy(runner);
+}