From: Brandon Lewis Date: Wed, 20 Oct 2010 15:23:22 +0000 (+0100) Subject: tests: test that adding tracks after adding layers works X-Git-Tag: 1.19.3~493^2~2554 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d7af7f630a8e933ffc4e25df87eabdfdeb00ec4b;p=platform%2Fupstream%2Fgstreamer.git tests: test that adding tracks after adding layers works --- diff --git a/tests/check/ges/basic.c b/tests/check/ges/basic.c index 7174787..839c049 100644 --- a/tests/check/ges/basic.c +++ b/tests/check/ges/basic.c @@ -216,6 +216,87 @@ GST_START_TEST (test_ges_timeline_add_layer) GST_END_TEST; +/* this time we add the layer before we add the track. */ + +GST_START_TEST (test_ges_timeline_add_layer_first) +{ + GESTimeline *timeline; + GESTimelineLayer *layer; + GESTrack *track; + GESCustomTimelineSource *s1, *s2, *s3; + GESTrackObject *trackobject; + + ges_init (); + + /* Timeline and 1 Layer */ + GST_DEBUG ("Create a timeline"); + timeline = ges_timeline_new (); + fail_unless (timeline != NULL); + + GST_DEBUG ("Create a layer"); + layer = ges_timeline_layer_new (); + fail_unless (layer != NULL); + /* Give the Timeline a Track */ + GST_DEBUG ("Create a Track"); + track = ges_track_new (GES_TRACK_TYPE_CUSTOM, GST_CAPS_ANY); + fail_unless (track != NULL); + + /* Create a source and add it to the Layer */ + GST_DEBUG ("Creating a source"); + s1 = ges_custom_timeline_source_new (my_fill_track_func, NULL); + fail_unless (s1 != NULL); + fail_unless (ges_timeline_layer_add_object (layer, GES_TIMELINE_OBJECT (s1))); + fail_unless (GES_TIMELINE_OBJECT (s1)->layer == layer); + + GST_DEBUG ("Creating a source"); + s2 = ges_custom_timeline_source_new (my_fill_track_func, NULL); + fail_unless (s2 != NULL); + fail_unless (ges_timeline_layer_add_object (layer, GES_TIMELINE_OBJECT (s2))); + fail_unless (GES_TIMELINE_OBJECT (s2)->layer == layer); + + GST_DEBUG ("Creating a source"); + s3 = ges_custom_timeline_source_new (my_fill_track_func, NULL); + fail_unless (s3 != NULL); + fail_unless (ges_timeline_layer_add_object (layer, GES_TIMELINE_OBJECT (s3))); + fail_unless (GES_TIMELINE_OBJECT (s3)->layer == layer); + + GST_DEBUG ("Add the layer to the timeline"); + fail_unless (ges_timeline_add_layer (timeline, layer)); + /* The timeline steals our reference to the layer */ + ASSERT_OBJECT_REFCOUNT (layer, "layer", 1); + fail_unless (layer->timeline == timeline); + fail_unless (g_list_find (timeline->layers, layer) != NULL); + + GST_DEBUG ("Add the track to the timeline"); + fail_unless (ges_timeline_add_track (timeline, track)); + ASSERT_OBJECT_REFCOUNT (track, "track", 1); + fail_unless (track->timeline == timeline); + fail_unless ((gpointer) GST_ELEMENT_PARENT (track) == (gpointer) timeline); + + /* Make sure the associated TrackObjects are in the Track */ + fail_unless (GES_TIMELINE_OBJECT (s1)->trackobjects != NULL); + fail_unless (GES_TIMELINE_OBJECT (s2)->trackobjects != NULL); + fail_unless (GES_TIMELINE_OBJECT (s3)->trackobjects != NULL); + + trackobject = + GES_TRACK_OBJECT ((GES_TIMELINE_OBJECT (s1)->trackobjects)->data); + ASSERT_OBJECT_REFCOUNT (trackobject, "trackobject", 1); + + trackobject = + GES_TRACK_OBJECT ((GES_TIMELINE_OBJECT (s2)->trackobjects)->data); + ASSERT_OBJECT_REFCOUNT (trackobject, "trackobject", 1); + + trackobject = + GES_TRACK_OBJECT ((GES_TIMELINE_OBJECT (s3)->trackobjects)->data); + ASSERT_OBJECT_REFCOUNT (trackobject, "trackobject", 1); + + /* theoretically this is all we need to do to ensure cleanup */ + g_object_unref (timeline); +} + +GST_END_TEST; + + static Suite * ges_suite (void) { @@ -227,6 +308,7 @@ ges_suite (void) tcase_add_test (tc_chain, test_ges_init); tcase_add_test (tc_chain, test_ges_scenario); tcase_add_test (tc_chain, test_ges_timeline_add_layer); + tcase_add_test (tc_chain, test_ges_timeline_add_layer_first); return s; }