From b84ec5add606fc7253df4abf8f14232095e45d84 Mon Sep 17 00:00:00 2001 From: Thibault Saunier Date: Wed, 29 May 2013 16:48:03 -0400 Subject: [PATCH] tests: Add a basic test for pipeline state change Add some test utils to create a pipeline --- tests/check/ges/basic.c | 36 ++++++++++++++++++++++++++++++++++++ tests/check/ges/test-utils.c | 16 ++++++++++++++++ tests/check/ges/test-utils.h | 2 ++ 3 files changed, 54 insertions(+) diff --git a/tests/check/ges/basic.c b/tests/check/ges/basic.c index 5fe8eecab3..bcd0a0140c 100644 --- a/tests/check/ges/basic.c +++ b/tests/check/ges/basic.c @@ -19,6 +19,8 @@ * Boston, MA 02110-1301, USA. */ +#include "test-utils.h" + #include #include @@ -689,6 +691,39 @@ GST_START_TEST (test_ges_timeline_multiple_tracks) GST_END_TEST; +GST_START_TEST (test_ges_timeline_pipeline_change_state) +{ + GstState state; + GESAsset *asset; + GESLayer *layer; + GESTimeline *timeline; + GESTimelinePipeline *pipeline; + + ges_init (); + + layer = ges_layer_new (); + timeline = ges_timeline_new_audio_video (); + fail_unless (ges_timeline_add_layer (timeline, layer)); + + pipeline = ges_test_create_pipeline (timeline); + + asset = ges_asset_request (GES_TYPE_TEST_CLIP, NULL, NULL); + ges_layer_add_asset (layer, asset, 0, 0, 10, GES_TRACK_TYPE_UNKNOWN); + gst_object_unref (asset); + + ASSERT_SET_STATE (GST_ELEMENT (pipeline), GST_STATE_PLAYING, + GST_STATE_CHANGE_ASYNC); + fail_unless (gst_element_get_state (GST_ELEMENT (pipeline), &state, NULL, + GST_CLOCK_TIME_NONE) == GST_STATE_CHANGE_SUCCESS); + fail_unless (state == GST_STATE_PLAYING); + ASSERT_SET_STATE (GST_ELEMENT (pipeline), GST_STATE_NULL, + GST_STATE_CHANGE_SUCCESS); + + gst_object_unref (pipeline); +} + +GST_END_TEST; + static Suite * ges_suite (void) { @@ -703,6 +738,7 @@ ges_suite (void) tcase_add_test (tc_chain, test_ges_timeline_add_layer_first); tcase_add_test (tc_chain, test_ges_timeline_remove_track); tcase_add_test (tc_chain, test_ges_timeline_multiple_tracks); + tcase_add_test (tc_chain, test_ges_timeline_pipeline_change_state); return s; } diff --git a/tests/check/ges/test-utils.c b/tests/check/ges/test-utils.c index 8e2d6bbcab..e0897a440f 100644 --- a/tests/check/ges/test-utils.c +++ b/tests/check/ges/test-utils.c @@ -84,3 +84,19 @@ ges_test_file_uri (const gchar * filename) return uri; } + +GESTimelinePipeline * +ges_test_create_pipeline (GESTimeline * timeline) +{ + GESTimelinePipeline *pipeline; + + pipeline = ges_timeline_pipeline_new (); + fail_unless (ges_timeline_pipeline_add_timeline (pipeline, timeline)); + + g_object_set (pipeline, "audio-sink", gst_element_factory_make ("fakesink", + "test-audiofakesink"), "video-sink", + gst_element_factory_make ("fakesink", "test-videofakesink"), NULL); + + return pipeline; + +} diff --git a/tests/check/ges/test-utils.h b/tests/check/ges/test-utils.h index 094c03576d..8e2476e9dd 100644 --- a/tests/check/ges/test-utils.h +++ b/tests/check/ges/test-utils.h @@ -23,7 +23,9 @@ #define _GES_TEST_UTILS #include +#include +GESTimelinePipeline * ges_test_create_pipeline (GESTimeline *timeline); gchar * ges_test_get_audio_only_uri (void); gchar * ges_test_get_audio_video_uri (void); gchar * ges_test_get_image_uri (void);