static void test_srt_do_test (SubParseInputChunk * input, guint start_idx, guint num) { guint n; GstCaps *outcaps; GST_LOG ("srt test: start_idx = %u, num = %u", start_idx, num); setup_subparse (); for (n = start_idx; n < start_idx + num; ++n) { GstBuffer *buf; buf = buffer_from_static_string (input[n].in); fail_unless_equals_int (gst_pad_push (mysrcpad, buf), GST_FLOW_OK); } gst_pad_push_event (mysrcpad, gst_event_new_eos ()); fail_unless_equals_int (g_list_length (buffers), num); outcaps = gst_pad_get_current_caps (mysinkpad); for (n = start_idx; n < start_idx + num; ++n) { const GstStructure *buffer_caps_struct; GstBuffer *buf; GstMapInfo map; buf = g_list_nth_data (buffers, n - start_idx); fail_unless (buf != NULL); fail_unless (GST_BUFFER_TIMESTAMP_IS_VALID (buf), NULL); fail_unless (GST_BUFFER_DURATION_IS_VALID (buf), NULL); fail_unless_equals_uint64 (GST_BUFFER_TIMESTAMP (buf), input[n].from_ts); fail_unless_equals_uint64 (GST_BUFFER_DURATION (buf), input[n].to_ts - input[n].from_ts); gst_buffer_map (buf, &map, GST_MAP_READ); /* can be NULL */ if (map.data != NULL) { /* shouldn't have trailing newline characters */ fail_if (map.size > 0 && map.data[map.size - 1] == '\n'); /* shouldn't include NUL-terminator in data size */ fail_if (map.size > 0 && map.data[map.size - 1] == '\0'); /* but should still have a NUL-terminator behind the declared data */ fail_unless_equals_int (map.data[map.size], '\0'); /* make sure out string matches expected string */ fail_unless_equals_string ((gchar *) map.data, input[n].out); } gst_buffer_unmap (buf, &map); /* check caps */ fail_unless (outcaps != NULL); buffer_caps_struct = gst_caps_get_structure (outcaps, 0); fail_unless (gst_structure_has_name (buffer_caps_struct, "text/x-raw")); fail_unless_equals_string (gst_structure_get_string (buffer_caps_struct, "format"), "pango-markup"); } gst_caps_unref (outcaps); teardown_subparse (); }
static void do_test (SubParseInputChunk * input, guint num, const gchar * media_type) { guint n; setup_subparse (); for (n = 0; n < num; ++n) { GstBuffer *buf; buf = buffer_from_static_string (input[n].in); fail_unless_equals_int (gst_pad_push (mysrcpad, buf), GST_FLOW_OK); } gst_pad_push_event (mysrcpad, gst_event_new_eos ()); fail_unless_equals_int (g_list_length (buffers), num); for (n = 0; n < num; ++n) { const GstStructure *buffer_caps_struct; GstBuffer *buf; gchar *out; guint out_size; buf = g_list_nth_data (buffers, n); fail_unless (buf != NULL); /* check timestamp */ fail_unless (GST_BUFFER_TIMESTAMP_IS_VALID (buf), NULL); fail_unless_equals_uint64 (GST_BUFFER_TIMESTAMP (buf), input[n].from_ts); /* might not be able to put a duration on the last buffer */ if (input[n].to_ts != GST_CLOCK_TIME_NONE) { /* check duration */ fail_unless (GST_BUFFER_DURATION_IS_VALID (buf), NULL); fail_unless_equals_uint64 (GST_BUFFER_DURATION (buf), input[n].to_ts - input[n].from_ts); } out = (gchar *) GST_BUFFER_DATA (buf); out_size = GST_BUFFER_SIZE (buf); /* shouldn't have trailing newline characters */ fail_if (out_size > 0 && out[out_size - 1] == '\n'); /* shouldn't include NUL-terminator in data size */ fail_if (out_size > 0 && out[out_size - 1] == '\0'); /* but should still have a NUL-terminator behind the declared data */ fail_unless_equals_int (out[out_size], '\0'); /* make sure out string matches expected string */ fail_unless_equals_string (out, input[n].out); /* check caps */ fail_unless (GST_BUFFER_CAPS (buf) != NULL); buffer_caps_struct = gst_caps_get_structure (GST_BUFFER_CAPS (buf), 0); fail_unless_equals_string (gst_structure_get_name (buffer_caps_struct), media_type); } teardown_subparse (); }
static void test_srt_do_test (SubParseInputChunk * input, guint start_idx, guint num) { guint n; GST_LOG ("srt test: start_idx = %u, num = %u", start_idx, num); setup_subparse (); for (n = start_idx; n < start_idx + num; ++n) { GstBuffer *buf; buf = buffer_from_static_string (input[n].in); fail_unless_equals_int (gst_pad_push (mysrcpad, buf), GST_FLOW_OK); } gst_pad_push_event (mysrcpad, gst_event_new_eos ()); fail_unless_equals_int (g_list_length (buffers), num); for (n = start_idx; n < start_idx + num; ++n) { const GstStructure *buffer_caps_struct; GstBuffer *buf; gchar *out; guint out_size; buf = g_list_nth_data (buffers, n - start_idx); fail_unless (buf != NULL); fail_unless (GST_BUFFER_TIMESTAMP_IS_VALID (buf), NULL); fail_unless (GST_BUFFER_DURATION_IS_VALID (buf), NULL); fail_unless_equals_uint64 (GST_BUFFER_TIMESTAMP (buf), input[n].from_ts); fail_unless_equals_uint64 (GST_BUFFER_DURATION (buf), input[n].to_ts - input[n].from_ts); out = (gchar *) GST_BUFFER_DATA (buf); out_size = GST_BUFFER_SIZE (buf); /* shouldn't have trailing newline characters */ fail_if (out_size > 0 && out[out_size - 1] == '\n'); /* shouldn't include NUL-terminator in data size */ fail_if (out_size > 0 && out[out_size - 1] == '\0'); /* but should still have a NUL-terminator behind the declared data */ fail_unless_equals_int (out[out_size], '\0'); /* make sure out string matches expected string */ fail_unless_equals_string (out, input[n].out); /* check caps */ fail_unless (GST_BUFFER_CAPS (buf) != NULL); buffer_caps_struct = gst_caps_get_structure (GST_BUFFER_CAPS (buf), 0); fail_unless_equals_string (gst_structure_get_name (buffer_caps_struct), "text/x-pango-markup"); } teardown_subparse (); }