diff --git a/tests/check/Makefile.am b/tests/check/Makefile.am index c4efed6cf7..25f2458aa2 100644 --- a/tests/check/Makefile.am +++ b/tests/check/Makefile.am @@ -75,6 +75,12 @@ else check_kate= endif +if USE_MIMIC +check_mimic=pipelines/mimic +else +check_mimic= +endif + VALGRIND_TO_FIX = \ elements/mpeg2enc \ @@ -111,7 +117,8 @@ check_PROGRAMS = \ elements/mxfdemux \ elements/mxfmux \ pipelines/mxf \ - $(check_metadata) + $(check_metadata) \ + $(check_mimic) noinst_HEADERS = elements/mxfdemux.h elements/amrparse_data.h elements/aacparse_data.h diff --git a/tests/check/pipelines/.gitignore b/tests/check/pipelines/.gitignore index 55f143ad2c..e72868322e 100644 --- a/tests/check/pipelines/.gitignore +++ b/tests/check/pipelines/.gitignore @@ -1,3 +1,4 @@ .dirstamp metadata mxf +mimic diff --git a/tests/check/pipelines/mimic.c b/tests/check/pipelines/mimic.c new file mode 100644 index 0000000000..5d51a80bee --- /dev/null +++ b/tests/check/pipelines/mimic.c @@ -0,0 +1,79 @@ +/* GStreamer + * + * unit test for mimic + * + * Copyright 2009 Collabora Ltd. + * @author: Olivier Crete + * Copyright 2009 Nokia Corp. + * + * 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 + +static GMainLoop *loop; + +static void +eos_message_cb (GstBus * bus, GstMessage * message, gpointer user_data) +{ + GST_DEBUG ("Received eos"); + g_main_loop_quit (loop); +} + +GST_START_TEST (test_mimic_pipeline) +{ + GstElement *pipeline; + GError *error = NULL; + GstBus *bus; + const gchar *bin_str = "videotestsrc num-buffers=10 ! mimenc ! " + "mimdec ! fakesink"; + + pipeline = gst_parse_launch (bin_str, &error); + fail_unless (pipeline != NULL, "Error parsing pipeline: %s", bin_str, + error ? error->message : "(invalid error)"); + + loop = g_main_loop_new (NULL, FALSE); + bus = gst_element_get_bus (pipeline); + gst_bus_add_signal_watch (bus); + g_signal_connect (bus, "message::eos", (GCallback) eos_message_cb, NULL); + gst_object_unref (bus); + + fail_unless (gst_element_set_state (pipeline, GST_STATE_PLAYING) + != GST_STATE_CHANGE_FAILURE); + + g_main_loop_run (loop); + g_main_loop_unref (loop); + + gst_element_set_state (pipeline, GST_STATE_NULL); + gst_object_unref (pipeline); +} + +GST_END_TEST; + +static Suite * +mimic_suite (void) +{ + Suite *s = suite_create ("mimic"); + TCase *tc_chain; + + tc_chain = tcase_create ("mimic_pipeline"); + tcase_add_test (tc_chain, test_mimic_pipeline); + suite_add_tcase (s, tc_chain); + + return s; +} + +GST_CHECK_MAIN (mimic)