From 38c9fefa0127b4773b102c070af9e3e01d74264e Mon Sep 17 00:00:00 2001 From: =?utf8?q?Tim-Philipp=20M=C3=BCller?= Date: Wed, 23 Nov 2011 00:57:39 +0000 Subject: [PATCH] tests: add basic unit test for matroskaparse --- tests/check/Makefile.am | 1 + tests/check/elements/.gitignore | 1 + tests/check/elements/matroskaparse.c | 118 +++++++++++++++++++++++++++++++++++ tests/files/pinknoise-vorbis.mkv | Bin 0 -> 5486 bytes 4 files changed, 120 insertions(+) create mode 100644 tests/check/elements/matroskaparse.c create mode 100644 tests/files/pinknoise-vorbis.mkv diff --git a/tests/check/Makefile.am b/tests/check/Makefile.am index 046d0f3..b466193 100644 --- a/tests/check/Makefile.am +++ b/tests/check/Makefile.am @@ -133,6 +133,7 @@ check_PROGRAMS = \ elements/interleave \ elements/level \ elements/matroskamux \ + elements/matroskaparse \ elements/mpegaudioparse \ elements/multifile \ elements/qtmux \ diff --git a/tests/check/elements/.gitignore b/tests/check/elements/.gitignore index 62c482a..c868fc8 100644 --- a/tests/check/elements/.gitignore +++ b/tests/check/elements/.gitignore @@ -37,6 +37,7 @@ interleave jpegenc level matroskamux +matroskaparse mpegaudioparse multifile qtmux diff --git a/tests/check/elements/matroskaparse.c b/tests/check/elements/matroskaparse.c new file mode 100644 index 0000000..e1d5e41 --- /dev/null +++ b/tests/check/elements/matroskaparse.c @@ -0,0 +1,118 @@ +/* GStreamer unit tests for matroskaparse + * Copyright (C) 2011 Tim-Philipp Müller + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include + +#include + +static void +run_check_for_file (const gchar * file_name, gboolean push_mode) +{ + GstStateChangeReturn state_ret; + GstMessage *msg; + GstElement *src, *sep, *sink, *matroskaparse, *pipeline; + GstBus *bus; + gchar *path; + + pipeline = gst_pipeline_new ("pipeline"); + fail_unless (pipeline != NULL, "Failed to create pipeline!"); + + bus = gst_element_get_bus (pipeline); + + src = gst_element_factory_make ("filesrc", "filesrc"); + fail_unless (src != NULL, "Failed to create 'filesrc' element!"); + + if (push_mode) { + sep = gst_element_factory_make ("queue", "queue"); + fail_unless (sep != NULL, "Failed to create 'queue' element"); + } else { + sep = gst_element_factory_make ("identity", "identity"); + fail_unless (sep != NULL, "Failed to create 'identity' element"); + } + + matroskaparse = gst_element_factory_make ("matroskaparse", "matroskaparse"); + fail_unless (matroskaparse != NULL, "Failed to create matroskaparse element"); + + sink = gst_element_factory_make ("fakesink", "fakesink"); + fail_unless (sink != NULL, "Failed to create 'fakesink' element!"); + + gst_bin_add_many (GST_BIN (pipeline), src, sep, matroskaparse, sink, NULL); + + fail_unless (gst_element_link (src, sep)); + fail_unless (gst_element_link (sep, matroskaparse)); + fail_unless (gst_element_link (matroskaparse, sink)); + + path = g_build_filename (GST_TEST_FILES_PATH, file_name, NULL); + GST_LOG ("reading file '%s'", path); + g_object_set (src, "location", path, NULL); + + state_ret = gst_element_set_state (pipeline, GST_STATE_PAUSED); + fail_unless (state_ret != GST_STATE_CHANGE_FAILURE); + + if (state_ret == GST_STATE_CHANGE_ASYNC) { + GST_LOG ("waiting for pipeline to reach PAUSED state"); + state_ret = gst_element_get_state (pipeline, NULL, NULL, -1); + fail_unless_equals_int (state_ret, GST_STATE_CHANGE_SUCCESS); + } + + GST_LOG ("PAUSED, let's play a little.."); + state_ret = gst_element_set_state (pipeline, GST_STATE_PLAYING); + fail_unless (state_ret != GST_STATE_CHANGE_FAILURE); + + msg = gst_bus_poll (bus, GST_MESSAGE_EOS, -1); + fail_unless (msg != NULL, "Expected EOS message on bus! (%s)", file_name); + + gst_message_unref (msg); + gst_object_unref (bus); + + fail_unless_equals_int (gst_element_set_state (pipeline, GST_STATE_NULL), + GST_STATE_CHANGE_SUCCESS); + gst_object_unref (pipeline); + + g_free (path); +} + +GST_START_TEST (test_parse_file_pull) +{ + run_check_for_file ("pinknoise-vorbis.mkv", TRUE); +} + +GST_END_TEST; + +GST_START_TEST (test_parse_file_push) +{ + run_check_for_file ("pinknoise-vorbis.mkv", FALSE); +} + +GST_END_TEST; + +static Suite * +matroskaparse_suite (void) +{ + Suite *s = suite_create ("matroskaparse"); + TCase *tc_chain = tcase_create ("general"); + + suite_add_tcase (s, tc_chain); + tcase_add_test (tc_chain, test_parse_file_pull); + tcase_add_test (tc_chain, test_parse_file_push); + + return s; +} + +GST_CHECK_MAIN (matroskaparse) diff --git a/tests/files/pinknoise-vorbis.mkv b/tests/files/pinknoise-vorbis.mkv new file mode 100644 index 0000000000000000000000000000000000000000..f83006c8558f12b5ff859b9718bedbb4088f5815 GIT binary patch literal 5486 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 jEanp!?-N-3Coujeu%u65+x|C({(U)