From 55856b344c1641da95633d2b71f0f09cf3bcb77d Mon Sep 17 00:00:00 2001 From: Thomas Vander Stichele Date: Sun, 2 Jul 2006 09:04:45 +0000 Subject: [PATCH] libs/gst/dataprotocol/Makefile.am: build dataprotocol test by linking to the lib, instead of compiling the source, so... Original commit message from CVS: * libs/gst/dataprotocol/Makefile.am: build dataprotocol test by linking to the lib, instead of compiling the source, so we get coverage * tests/check/Makefile.am: * tests/check/elements/filesrc.c: (event_func), (setup_filesrc), (cleanup_filesrc), (GST_START_TEST), (filesrc_suite): add a test for filesrc --- ChangeLog | 10 +++ libs/gst/dataprotocol/Makefile.am | 2 +- tests/check/Makefile.am | 8 ++- tests/check/elements/filesrc.c | 137 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 154 insertions(+), 3 deletions(-) create mode 100644 tests/check/elements/filesrc.c diff --git a/ChangeLog b/ChangeLog index 99d3dc2..ea0a715 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,15 @@ 2006-07-02 Thomas Vander Stichele + * libs/gst/dataprotocol/Makefile.am: + build dataprotocol test by linking to the lib, instead of + compiling the source, so we get coverage + * tests/check/Makefile.am: + * tests/check/elements/filesrc.c: (event_func), (setup_filesrc), + (cleanup_filesrc), (GST_START_TEST), (filesrc_suite): + add a test for filesrc + +2006-07-02 Thomas Vander Stichele + * tests/check/gst/gststructure.c: (GST_START_TEST), (gst_structure_suite): Push coverage from 59.04% to 70.00% diff --git a/libs/gst/dataprotocol/Makefile.am b/libs/gst/dataprotocol/Makefile.am index eca8c62..408e4ba 100644 --- a/libs/gst/dataprotocol/Makefile.am +++ b/libs/gst/dataprotocol/Makefile.am @@ -12,7 +12,7 @@ libgstdataprotocol_@GST_MAJORMINOR@_la_CFLAGS = $(GST_OBJ_CFLAGS) libgstdataprotocol_@GST_MAJORMINOR@_la_LIBADD = $(GST_OBJ_LIBS) libgstdataprotocol_@GST_MAJORMINOR@_la_LDFLAGS = $(GST_LIB_LDFLAGS) $(GST_ALL_LDFLAGS) $(GST_LT_LDFLAGS) -CLEANFILES = *.gcno *.gcda *.gcov +CLEANFILES = *.gcno *.gcda *.gcov *.gcov.out %.c.gcov: .libs/libgstdataprotocol_@GST_MAJORMINOR@_la-%.gcda %.c $(GCOV) -b -f -o $^ > $@.out diff --git a/tests/check/Makefile.am b/tests/check/Makefile.am index 2b9974b..872bf12 100644 --- a/tests/check/Makefile.am +++ b/tests/check/Makefile.am @@ -51,6 +51,7 @@ REGISTRY_CHECKS = \ elements/fakesink \ elements/fakesrc \ elements/fdsrc \ + elements/filesrc \ elements/identity \ libs/basesrc \ libs/controller \ @@ -105,11 +106,14 @@ LDADD = $(top_builddir)/libs/gst/check/libgstcheck-@GST_MAJORMINOR@.la \ $(CHECK_LIBS) libs_gdp_SOURCES = \ - libs/gdp.c \ - $(top_srcdir)/libs/gst/dataprotocol/dataprotocol.c + libs/gdp.c libs_gdp_CFLAGS = $(AM_CFLAGS) +libs_gdp_LDADD = \ + $(top_builddir)/libs/gst/dataprotocol/libgstdataprotocol-@GST_MAJORMINOR@.la \ + $(LDADD) elements_fdsrc_CFLAGS=$(GST_OBJ_CFLAGS) $(CHECK_CFLAGS) -DTESTFILE=\"$(top_srcdir)/configure.ac\" +elements_filesrc_CFLAGS=$(GST_OBJ_CFLAGS) $(CHECK_CFLAGS) -DTESTFILE=\"$(top_srcdir)/configure.ac\" libs_basesrc_LDADD = \ $(top_builddir)/libs/gst/base/libgstbase-@GST_MAJORMINOR@.la \ diff --git a/tests/check/elements/filesrc.c b/tests/check/elements/filesrc.c new file mode 100644 index 0000000..734107d --- /dev/null +++ b/tests/check/elements/filesrc.c @@ -0,0 +1,137 @@ +/* GStreamer + * + * Copyright (C) 2006 Thomas Vander Stichele + * + * 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 +#include +#include + +#include + +gboolean have_eos = FALSE; + +GstPad *mysinkpad; + +static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink", + GST_PAD_SINK, + GST_PAD_ALWAYS, + GST_STATIC_CAPS_ANY); + +gboolean +event_func (GstPad * pad, GstEvent * event) +{ + if (GST_EVENT_TYPE (event) == GST_EVENT_EOS) { + have_eos = TRUE; + gst_event_unref (event); + return TRUE; + } + + gst_event_unref (event); + return FALSE; +} + +GstElement * +setup_filesrc () +{ + GstElement *filesrc; + + GST_DEBUG ("setup_filesrc"); + filesrc = gst_check_setup_element ("filesrc"); + mysinkpad = gst_check_setup_sink_pad (filesrc, &sinktemplate, NULL); + gst_pad_set_event_function (mysinkpad, event_func); + gst_pad_set_active (mysinkpad, TRUE); + return filesrc; +} + +void +cleanup_filesrc (GstElement * filesrc) +{ + gst_check_teardown_sink_pad (filesrc); + gst_check_teardown_element (filesrc); +} + +GST_START_TEST (test_seeking) +{ + GstElement *src; + GstQuery *seeking_query; + gboolean seekable; + +#ifndef TESTFILE +#error TESTFILE not defined +#endif + src = setup_filesrc (); + + g_object_set (G_OBJECT (src), "location", TESTFILE, NULL); + fail_unless (gst_element_set_state (src, + GST_STATE_PAUSED) == GST_STATE_CHANGE_SUCCESS, + "could not set to paused"); + + /* Test that filesrc is seekable with a file fd */ + fail_unless ((seeking_query = gst_query_new_seeking (GST_FORMAT_BYTES)) + != NULL); + fail_unless (gst_element_query (src, seeking_query) == TRUE); + gst_query_parse_seeking (seeking_query, NULL, &seekable, NULL, NULL); + fail_unless (seekable == TRUE); + gst_query_unref (seeking_query); + + fail_unless (gst_element_set_state (src, + GST_STATE_NULL) == GST_STATE_CHANGE_SUCCESS, "could not set to null"); + + /* cleanup */ + cleanup_filesrc (src); +} + +GST_END_TEST; + +GST_START_TEST (test_coverage) +{ + GstElement *src; + gchar *location; + + src = setup_filesrc (); + + g_object_set (G_OBJECT (src), "location", "/i/do/not/exist", NULL); + g_object_get (G_OBJECT (src), "location", &location, NULL); + fail_unless_equals_string (location, "/i/do/not/exist"); + g_free (location); + g_object_set (G_OBJECT (src), "location", NULL, NULL); + g_object_get (G_OBJECT (src), "location", &location, NULL); + fail_if (location); + + /* cleanup */ + cleanup_filesrc (src); +} + +GST_END_TEST; + +Suite * +filesrc_suite (void) +{ + Suite *s = suite_create ("filesrc"); + TCase *tc_chain = tcase_create ("general"); + + suite_add_tcase (s, tc_chain); + tcase_add_test (tc_chain, test_seeking); + tcase_add_test (tc_chain, test_coverage); + + return s; +} + +GST_CHECK_MAIN (filesrc); -- 2.7.4