From 886b43679d890afdb6487f90ac5c766600a5bf4a Mon Sep 17 00:00:00 2001 From: Thomas Vander Stichele Date: Wed, 24 Aug 2005 16:18:25 +0000 Subject: [PATCH] check/: add same test as to core, it bitches out on playbin atm. Original commit message from CVS: * check/Makefile.am: * check/generic/states.c: (GST_START_TEST), (states_suite), (main): add same test as to core, it bitches out on playbin atm. --- ChangeLog | 6 +++ check/Makefile.am | 5 +++ check/generic/states.c | 85 ++++++++++++++++++++++++++++++++++++ tests/check/Makefile.am | 5 +++ tests/check/generic/states.c | 85 ++++++++++++++++++++++++++++++++++++ 5 files changed, 186 insertions(+) create mode 100644 check/generic/states.c create mode 100644 tests/check/generic/states.c diff --git a/ChangeLog b/ChangeLog index 4da063ddb8..1b61381a1c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2005-08-24 Thomas Vander Stichele + + * check/Makefile.am: + * check/generic/states.c: (GST_START_TEST), (states_suite), (main): + add same test as to core, it bitches out on playbin atm. + 2005-08-24 Wim Taymans * configure.ac: diff --git a/check/Makefile.am b/check/Makefile.am index 705e4f6a44..2d387e3f90 100644 --- a/check/Makefile.am +++ b/check/Makefile.am @@ -32,6 +32,11 @@ check_PROGRAMS = \ elements/volume \ $(check_vorbis) +# these tests don't even pass +# generic/states: elements need state fixin' before this can be added +noinst_PROGRAMS = \ + generic/states + AM_CFLAGS = $(GST_OBJ_CFLAGS) $(GST_CHECK_CFLAGS) $(CHECK_CFLAGS) LDADD = $(GST_OBJ_LIBS) $(GST_CHECK_LIBS) $(CHECK_LIBS) diff --git a/check/generic/states.c b/check/generic/states.c new file mode 100644 index 0000000000..3b9b961c9f --- /dev/null +++ b/check/generic/states.c @@ -0,0 +1,85 @@ +/* GStreamer + * + * unit test for state changes on all elements + * + * Copyright (C) <2005> 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 + +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; +} diff --git a/tests/check/Makefile.am b/tests/check/Makefile.am index 705e4f6a44..2d387e3f90 100644 --- a/tests/check/Makefile.am +++ b/tests/check/Makefile.am @@ -32,6 +32,11 @@ check_PROGRAMS = \ elements/volume \ $(check_vorbis) +# these tests don't even pass +# generic/states: elements need state fixin' before this can be added +noinst_PROGRAMS = \ + generic/states + AM_CFLAGS = $(GST_OBJ_CFLAGS) $(GST_CHECK_CFLAGS) $(CHECK_CFLAGS) LDADD = $(GST_OBJ_LIBS) $(GST_CHECK_LIBS) $(CHECK_LIBS) diff --git a/tests/check/generic/states.c b/tests/check/generic/states.c new file mode 100644 index 0000000000..3b9b961c9f --- /dev/null +++ b/tests/check/generic/states.c @@ -0,0 +1,85 @@ +/* GStreamer + * + * unit test for state changes on all elements + * + * Copyright (C) <2005> 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 + +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; +}