check/: add a test that does a bunch of state changes on elements needs some fixing for valgrind

Original commit message from CVS:

* check/Makefile.am:
* check/generic/states.c: (GST_START_TEST), (states_suite), (main):
add a test that does a bunch of state changes on elements
needs some fixing for valgrind
* check/states/sinks.c: (gst_object_suite):
whitespace
* gst/gstcaps.h:
add prototype for gst_caps_is_equal_fixed
* gst/gstplugin.c:
* gst/gstregistrypool.c:
doc fixes
This commit is contained in:
Thomas Vander Stichele 2005-08-24 16:09:50 +00:00
parent 438739a556
commit 6ed334f0f8
10 changed files with 214 additions and 23 deletions

View file

@ -1,3 +1,17 @@
2005-08-24 Thomas Vander Stichele <thomas at apestaart dot org>
* check/Makefile.am:
* check/generic/states.c: (GST_START_TEST), (states_suite), (main):
add a test that does a bunch of state changes on elements
needs some fixing for valgrind
* check/states/sinks.c: (gst_object_suite):
whitespace
* gst/gstcaps.h:
add prototype for gst_caps_is_equal_fixed
* gst/gstplugin.c:
* gst/gstregistrypool.c:
doc fixes
2005-08-24 Andy Wingo <wingo@pobox.com> 2005-08-24 Andy Wingo <wingo@pobox.com>
* gst/gstquery.c (gst_query_new_convert): Spew if we try to * gst/gstquery.c (gst_query_new_convert): Spew if we try to

View file

@ -55,6 +55,7 @@ check_PROGRAMS = \
pipelines/simple_launch_lines \ pipelines/simple_launch_lines \
pipelines/cleanup \ pipelines/cleanup \
states/sinks \ states/sinks \
generic/states \
gst-libs/controller \ gst-libs/controller \
gst-libs/gdp gst-libs/gdp
@ -82,6 +83,7 @@ gst_libs_controller_LDADD = $(GST_OBJ_LIBS) \
# valgrind testing # valgrind testing
# these just need valgrind fixing, period # these just need valgrind fixing, period
TESTS_TO_FIX = \ TESTS_TO_FIX = \
generic/states \
gst-libs/controller \ gst-libs/controller \
pipelines/cleanup \ pipelines/cleanup \
pipelines/simple_launch_lines pipelines/simple_launch_lines

85
check/generic/states.c Normal file
View file

@ -0,0 +1,85 @@
/* GStreamer
*
* unit test for state changes on all elements
*
* Copyright (C) <2005> Thomas Vander Stichele <thomas at apestaart dot org>
*
* 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 <unistd.h>
#include <gst/check/gstcheck.h>
GST_START_TEST (test_state_changes)
{
GstElement *element;
GList *features, *f;
features = gst_registry_pool_feature_list (GST_TYPE_ELEMENT_FACTORY);
for (f = features; f; f = f->next) {
GstPluginFeature *feature = f->data;
const gchar *name = gst_plugin_feature_get_name (feature);
GST_DEBUG ("testing element %s", name);
element = gst_element_factory_make (name, name);
gst_element_set_state (element, GST_STATE_READY);
gst_element_set_state (element, GST_STATE_PAUSED);
gst_element_set_state (element, GST_STATE_PLAYING);
gst_element_set_state (element, GST_STATE_PAUSED);
gst_element_set_state (element, GST_STATE_READY);
gst_element_set_state (element, GST_STATE_NULL);
gst_element_set_state (element, GST_STATE_PAUSED);
gst_element_set_state (element, GST_STATE_READY);
gst_element_set_state (element, GST_STATE_PLAYING);
gst_element_set_state (element, GST_STATE_PAUSED);
gst_element_set_state (element, GST_STATE_NULL);
gst_object_unref (GST_OBJECT (element));
}
}
GST_END_TEST;
Suite *
states_suite (void)
{
Suite *s = suite_create ("states");
TCase *tc_chain = tcase_create ("general");
suite_add_tcase (s, tc_chain);
tcase_add_test (tc_chain, test_state_changes);
return s;
}
int
main (int argc, char **argv)
{
int nf;
Suite *s = states_suite ();
SRunner *sr = srunner_create (s);
gst_check_init (&argc, &argv);
srunner_run_all (sr, CK_NORMAL);
nf = srunner_ntests_failed (sr);
srunner_free (sr);
return nf;
}

View file

@ -180,16 +180,16 @@ GST_START_TEST (test_livesrc_sink)
fail_unless (pending == GST_STATE_VOID_PENDING, "not playing"); fail_unless (pending == GST_STATE_VOID_PENDING, "not playing");
} }
GST_END_TEST GST_END_TEST;
/* test: try changing state of sinks */ /* test: try changing state of sinks */
Suite * gst_object_suite (void) Suite *
gst_object_suite (void)
{ {
Suite *s = suite_create ("Sinks"); Suite *s = suite_create ("Sinks");
TCase *tc_chain = tcase_create ("general"); TCase *tc_chain = tcase_create ("general");
/* turn off timeout */
tcase_set_timeout (tc_chain, 60);
suite_add_tcase (s, tc_chain); suite_add_tcase (s, tc_chain);
tcase_add_test (tc_chain, test_sink); tcase_add_test (tc_chain, test_sink);
tcase_add_test (tc_chain, test_src_sink); tcase_add_test (tc_chain, test_src_sink);

View file

@ -125,6 +125,9 @@ gboolean gst_caps_is_subset (const GstCaps *subset,
const GstCaps *superset); const GstCaps *superset);
gboolean gst_caps_is_equal (const GstCaps *caps1, gboolean gst_caps_is_equal (const GstCaps *caps1,
const GstCaps *caps2); const GstCaps *caps2);
gboolean gst_caps_is_equal_fixed (const GstCaps * caps1,
const GstCaps * caps2);
/* operations */ /* operations */
GstCaps * gst_caps_intersect (const GstCaps *caps1, GstCaps * gst_caps_intersect (const GstCaps *caps1,

View file

@ -740,9 +740,9 @@ _feature_filter (GstPlugin * plugin, gpointer user_data)
} }
/** /**
* gst_plugin_list_feature_list: * gst_plugin_list_feature_filter:
* @list: a list of plugins to query * @list: a #GList of plugins to query
* @filter: the filter to use * @filter: the filter function to use
* @first: only return first match * @first: only return first match
* @user_data: user data passed to the filter function * @user_data: user data passed to the filter function
* *

View file

@ -131,7 +131,7 @@ gst_registry_pool_load_all (void)
* *
* Get a list of all plugins in the pool. * Get a list of all plugins in the pool.
* *
* Returns: a GList of plugins, g_list_free after use. * Returns: a newly allocated GList of #GstPlugin.
*/ */
GList * GList *
gst_registry_pool_plugin_list (void) gst_registry_pool_plugin_list (void)
@ -149,7 +149,7 @@ gst_registry_pool_plugin_list (void)
* the results. If the first flag is set, only the first match is * the results. If the first flag is set, only the first match is
* returned (as a list with a single object). * returned (as a list with a single object).
* *
* Returns: a GList of plugins, g_list_free after use. * Returns: a newly allocated GList of #GstPlugin.
*/ */
GList * GList *
gst_registry_pool_plugin_filter (GstPluginFilter filter, gboolean first, gst_registry_pool_plugin_filter (GstPluginFilter filter, gboolean first,
@ -191,7 +191,7 @@ gst_registry_pool_plugin_filter (GstPluginFilter filter, gboolean first,
* *
* Get a list of all pluginfeatures of the given type in the pool. * Get a list of all pluginfeatures of the given type in the pool.
* *
* Returns: a GList of pluginfeatures, g_list_free after use. * Returns: a newly allocated #GList of #GstPluginFeature.
*/ */
GList * GList *
gst_registry_pool_feature_list (GType type) gst_registry_pool_feature_list (GType type)

View file

@ -55,6 +55,7 @@ check_PROGRAMS = \
pipelines/simple_launch_lines \ pipelines/simple_launch_lines \
pipelines/cleanup \ pipelines/cleanup \
states/sinks \ states/sinks \
generic/states \
gst-libs/controller \ gst-libs/controller \
gst-libs/gdp gst-libs/gdp
@ -82,6 +83,7 @@ gst_libs_controller_LDADD = $(GST_OBJ_LIBS) \
# valgrind testing # valgrind testing
# these just need valgrind fixing, period # these just need valgrind fixing, period
TESTS_TO_FIX = \ TESTS_TO_FIX = \
generic/states \
gst-libs/controller \ gst-libs/controller \
pipelines/cleanup \ pipelines/cleanup \
pipelines/simple_launch_lines pipelines/simple_launch_lines

View file

@ -180,16 +180,16 @@ GST_START_TEST (test_livesrc_sink)
fail_unless (pending == GST_STATE_VOID_PENDING, "not playing"); fail_unless (pending == GST_STATE_VOID_PENDING, "not playing");
} }
GST_END_TEST GST_END_TEST;
/* test: try changing state of sinks */ /* test: try changing state of sinks */
Suite * gst_object_suite (void) Suite *
gst_object_suite (void)
{ {
Suite *s = suite_create ("Sinks"); Suite *s = suite_create ("Sinks");
TCase *tc_chain = tcase_create ("general"); TCase *tc_chain = tcase_create ("general");
/* turn off timeout */
tcase_set_timeout (tc_chain, 60);
suite_add_tcase (s, tc_chain); suite_add_tcase (s, tc_chain);
tcase_add_test (tc_chain, test_sink); tcase_add_test (tc_chain, test_sink);
tcase_add_test (tc_chain, test_src_sink); tcase_add_test (tc_chain, test_src_sink);

View file

@ -0,0 +1,85 @@
/* GStreamer
*
* unit test for state changes on all elements
*
* Copyright (C) <2005> Thomas Vander Stichele <thomas at apestaart dot org>
*
* 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 <unistd.h>
#include <gst/check/gstcheck.h>
GST_START_TEST (test_state_changes)
{
GstElement *element;
GList *features, *f;
features = gst_registry_pool_feature_list (GST_TYPE_ELEMENT_FACTORY);
for (f = features; f; f = f->next) {
GstPluginFeature *feature = f->data;
const gchar *name = gst_plugin_feature_get_name (feature);
GST_DEBUG ("testing element %s", name);
element = gst_element_factory_make (name, name);
gst_element_set_state (element, GST_STATE_READY);
gst_element_set_state (element, GST_STATE_PAUSED);
gst_element_set_state (element, GST_STATE_PLAYING);
gst_element_set_state (element, GST_STATE_PAUSED);
gst_element_set_state (element, GST_STATE_READY);
gst_element_set_state (element, GST_STATE_NULL);
gst_element_set_state (element, GST_STATE_PAUSED);
gst_element_set_state (element, GST_STATE_READY);
gst_element_set_state (element, GST_STATE_PLAYING);
gst_element_set_state (element, GST_STATE_PAUSED);
gst_element_set_state (element, GST_STATE_NULL);
gst_object_unref (GST_OBJECT (element));
}
}
GST_END_TEST;
Suite *
states_suite (void)
{
Suite *s = suite_create ("states");
TCase *tc_chain = tcase_create ("general");
suite_add_tcase (s, tc_chain);
tcase_add_test (tc_chain, test_state_changes);
return s;
}
int
main (int argc, char **argv)
{
int nf;
Suite *s = states_suite ();
SRunner *sr = srunner_create (s);
gst_check_init (&argc, &argv);
srunner_run_all (sr, CK_NORMAL);
nf = srunner_ntests_failed (sr);
srunner_free (sr);
return nf;
}