mpdparser: tests: added unit test for getting segment availability when segment timel...
authorFlorin Apostol <florin.apostol@oregan.net>
Thu, 19 Nov 2015 15:30:34 +0000 (15:30 +0000)
committerThiago Santos <thiagoss@osg.samsung.com>
Tue, 9 Feb 2016 19:35:44 +0000 (16:35 -0300)
https://bugzilla.gnome.org/show_bug.cgi?id=757655

tests/check/elements/dash_mpd.c

index ba96b92..9733867 100644 (file)
@@ -4528,6 +4528,7 @@ GST_START_TEST (dash_mpdparser_segment_timeline)
   GstClockTime expectedDuration;
   GstClockTime expectedTimestamp;
   GstFlowReturn flow;
+  GstDateTime *segmentAvailability;
 
   const gchar *xml =
       "<?xml version=\"1.0\"?>"
@@ -4594,6 +4595,22 @@ GST_START_TEST (dash_mpdparser_segment_timeline)
   assert_equals_uint64 (fragment.timestamp, expectedTimestamp * GST_MSECOND);
   gst_media_fragment_info_clear (&fragment);
 
+  /* first segment starts at 3s and has a duration of 2s.
+   * We also add period start time (10s) so we expect a segment availability
+   * start time of 15s
+   */
+  segmentAvailability =
+      gst_mpd_client_get_next_segment_availability_end_time (mpdclient,
+      activeStream);
+  fail_unless (segmentAvailability != NULL);
+  assert_equals_int (gst_date_time_get_year (segmentAvailability), 2015);
+  assert_equals_int (gst_date_time_get_month (segmentAvailability), 3);
+  assert_equals_int (gst_date_time_get_day (segmentAvailability), 24);
+  assert_equals_int (gst_date_time_get_hour (segmentAvailability), 0);
+  assert_equals_int (gst_date_time_get_minute (segmentAvailability), 0);
+  assert_equals_int (gst_date_time_get_second (segmentAvailability), 15);
+  gst_date_time_unref (segmentAvailability);
+
   /* advance to next segment */
   flow = gst_mpd_client_advance_segment (mpdclient, activeStream, TRUE);
   assert_equals_int (flow, GST_FLOW_OK);
@@ -4612,6 +4629,24 @@ GST_START_TEST (dash_mpdparser_segment_timeline)
   assert_equals_uint64 (fragment.timestamp, expectedTimestamp * GST_MSECOND);
   gst_media_fragment_info_clear (&fragment);
 
+  /* first segment starts at 3s and has a duration of 2s.
+   * Second segment starts when the first ends (5s) and has a duration of 2s,
+   * so it ends at 7s.
+   * We also add period start time (10s) so we expect a segment availability
+   * start time of 17s
+   */
+  segmentAvailability =
+      gst_mpd_client_get_next_segment_availability_start_time (mpdclient,
+      activeStream);
+  fail_unless (segmentAvailability != NULL);
+  assert_equals_int (gst_date_time_get_year (segmentAvailability), 2015);
+  assert_equals_int (gst_date_time_get_month (segmentAvailability), 3);
+  assert_equals_int (gst_date_time_get_day (segmentAvailability), 24);
+  assert_equals_int (gst_date_time_get_hour (segmentAvailability), 0);
+  assert_equals_int (gst_date_time_get_minute (segmentAvailability), 0);
+  assert_equals_int (gst_date_time_get_second (segmentAvailability), 17);
+  gst_date_time_unref (segmentAvailability);
+
   /* advance to next segment */
   flow = gst_mpd_client_advance_segment (mpdclient, activeStream, TRUE);
   assert_equals_int (flow, GST_FLOW_OK);
@@ -4629,6 +4664,22 @@ GST_START_TEST (dash_mpdparser_segment_timeline)
   assert_equals_uint64 (fragment.timestamp, expectedTimestamp * GST_MSECOND);
   gst_media_fragment_info_clear (&fragment);
 
+  /* Third segment starts at 10s and has a duration of 3s so it ends at 13s.
+   * We also add period start time (10s) so we expect a segment availability
+   * start time of 23s
+   */
+  segmentAvailability =
+      gst_mpd_client_get_next_segment_availability_start_time (mpdclient,
+      activeStream);
+  fail_unless (segmentAvailability != NULL);
+  assert_equals_int (gst_date_time_get_year (segmentAvailability), 2015);
+  assert_equals_int (gst_date_time_get_month (segmentAvailability), 3);
+  assert_equals_int (gst_date_time_get_day (segmentAvailability), 24);
+  assert_equals_int (gst_date_time_get_hour (segmentAvailability), 0);
+  assert_equals_int (gst_date_time_get_minute (segmentAvailability), 0);
+  assert_equals_int (gst_date_time_get_second (segmentAvailability), 23);
+  gst_date_time_unref (segmentAvailability);
+
   gst_mpd_client_free (mpdclient);
 }