From 54d54fac0ce64012799d6780cd5c3723e9f570b3 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Tue, 16 Dec 2003 19:32:27 +0000 Subject: [PATCH] add tests for gst_bin_get_(all_)by_interface Original commit message from CVS: add tests for gst_bin_get_(all_)by_interface --- common | 2 +- configure.ac | 1 + tests/old/testsuite/bins/.gitignore | 1 + tests/old/testsuite/bins/Makefile.am | 7 +++ tests/old/testsuite/bins/interface.c | 81 ++++++++++++++++++++++++++++ testsuite/bins/.gitignore | 1 + testsuite/bins/Makefile.am | 7 +++ testsuite/bins/interface.c | 81 ++++++++++++++++++++++++++++ 8 files changed, 180 insertions(+), 1 deletion(-) create mode 100644 tests/old/testsuite/bins/.gitignore create mode 100644 tests/old/testsuite/bins/Makefile.am create mode 100644 tests/old/testsuite/bins/interface.c create mode 100644 testsuite/bins/.gitignore create mode 100644 testsuite/bins/Makefile.am create mode 100644 testsuite/bins/interface.c diff --git a/common b/common index 9f37b3e515..cd5507ae3d 160000 --- a/common +++ b/common @@ -1 +1 @@ -Subproject commit 9f37b3e515260c7b294222a502b2cc75dd0983b6 +Subproject commit cd5507ae3df8dc48c07df9e37878846b6b79faa1 diff --git a/configure.ac b/configure.ac index b4f3b01668..58b607c8c3 100644 --- a/configure.ac +++ b/configure.ac @@ -601,6 +601,7 @@ tests/seeking/Makefile tests/sched/Makefile tests/threadstate/Makefile testsuite/Makefile +testsuite/bins/Makefile testsuite/bytestream/Makefile testsuite/caps/Makefile testsuite/cleanup/Makefile diff --git a/tests/old/testsuite/bins/.gitignore b/tests/old/testsuite/bins/.gitignore new file mode 100644 index 0000000000..b529896ae8 --- /dev/null +++ b/tests/old/testsuite/bins/.gitignore @@ -0,0 +1 @@ +interface diff --git a/tests/old/testsuite/bins/Makefile.am b/tests/old/testsuite/bins/Makefile.am new file mode 100644 index 0000000000..a4a86711b4 --- /dev/null +++ b/tests/old/testsuite/bins/Makefile.am @@ -0,0 +1,7 @@ +include ../Rules + +tests_pass = interface +tests_fail = + +interface_SOURCES = interface.c + diff --git a/tests/old/testsuite/bins/interface.c b/tests/old/testsuite/bins/interface.c new file mode 100644 index 0000000000..61f948d283 --- /dev/null +++ b/tests/old/testsuite/bins/interface.c @@ -0,0 +1,81 @@ +/* GStreamer + * Copyright (C) <1999> Erik Walthinsen + * + * 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 + +/* tests if gst_bin_get_(all_)by_interface works */ + +gint +main (gint argc, gchar *argv[]) +{ + GstBin *bin, *bin2; + GList *list; + GstElement *filesrc; + + gst_init (&argc, &argv); + + bin = GST_BIN (gst_bin_new (NULL)); + g_assert (bin); + + filesrc = gst_element_factory_make ("filesrc", NULL); + g_assert (filesrc); + g_assert (GST_IS_URI_HANDLER (filesrc)); + gst_bin_add (bin, filesrc); + + g_assert (gst_bin_get_by_interface (bin, GST_TYPE_URI_HANDLER) == filesrc); + list = gst_bin_get_all_by_interface (bin, GST_TYPE_URI_HANDLER); + g_assert (g_list_length (list) == 1); + g_assert (list->data == (gpointer) filesrc); + g_list_free (list); + + gst_bin_add_many (bin, + gst_element_factory_make ("identity", NULL), + gst_element_factory_make ("identity", NULL), + gst_element_factory_make ("identity", NULL), + NULL); + g_assert (gst_bin_get_by_interface (bin, GST_TYPE_URI_HANDLER) == filesrc); + list = gst_bin_get_all_by_interface (bin, GST_TYPE_URI_HANDLER); + g_assert (g_list_length (list) == 1); + g_assert (list->data == (gpointer) filesrc); + g_list_free (list); + + bin2 = bin; + bin = GST_BIN (gst_bin_new (NULL)); + g_assert (bin); + gst_bin_add_many (bin, + gst_element_factory_make ("identity", NULL), + gst_element_factory_make ("identity", NULL), + GST_ELEMENT (bin2), + gst_element_factory_make ("identity", NULL), + NULL); + g_assert (gst_bin_get_by_interface (bin, GST_TYPE_URI_HANDLER) == filesrc); + list = gst_bin_get_all_by_interface (bin, GST_TYPE_URI_HANDLER); + g_assert (g_list_length (list) == 1); + g_assert (list->data == (gpointer) filesrc); + g_list_free (list); + + gst_bin_add (bin, gst_element_factory_make ("filesrc", NULL)); + gst_bin_add (bin2, gst_element_factory_make ("filesrc", NULL)); + list = gst_bin_get_all_by_interface (bin, GST_TYPE_URI_HANDLER); + g_assert (g_list_length (list) == 3); + g_list_free (list); + + g_object_unref (bin); + return 0; +} diff --git a/testsuite/bins/.gitignore b/testsuite/bins/.gitignore new file mode 100644 index 0000000000..b529896ae8 --- /dev/null +++ b/testsuite/bins/.gitignore @@ -0,0 +1 @@ +interface diff --git a/testsuite/bins/Makefile.am b/testsuite/bins/Makefile.am new file mode 100644 index 0000000000..a4a86711b4 --- /dev/null +++ b/testsuite/bins/Makefile.am @@ -0,0 +1,7 @@ +include ../Rules + +tests_pass = interface +tests_fail = + +interface_SOURCES = interface.c + diff --git a/testsuite/bins/interface.c b/testsuite/bins/interface.c new file mode 100644 index 0000000000..61f948d283 --- /dev/null +++ b/testsuite/bins/interface.c @@ -0,0 +1,81 @@ +/* GStreamer + * Copyright (C) <1999> Erik Walthinsen + * + * 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 + +/* tests if gst_bin_get_(all_)by_interface works */ + +gint +main (gint argc, gchar *argv[]) +{ + GstBin *bin, *bin2; + GList *list; + GstElement *filesrc; + + gst_init (&argc, &argv); + + bin = GST_BIN (gst_bin_new (NULL)); + g_assert (bin); + + filesrc = gst_element_factory_make ("filesrc", NULL); + g_assert (filesrc); + g_assert (GST_IS_URI_HANDLER (filesrc)); + gst_bin_add (bin, filesrc); + + g_assert (gst_bin_get_by_interface (bin, GST_TYPE_URI_HANDLER) == filesrc); + list = gst_bin_get_all_by_interface (bin, GST_TYPE_URI_HANDLER); + g_assert (g_list_length (list) == 1); + g_assert (list->data == (gpointer) filesrc); + g_list_free (list); + + gst_bin_add_many (bin, + gst_element_factory_make ("identity", NULL), + gst_element_factory_make ("identity", NULL), + gst_element_factory_make ("identity", NULL), + NULL); + g_assert (gst_bin_get_by_interface (bin, GST_TYPE_URI_HANDLER) == filesrc); + list = gst_bin_get_all_by_interface (bin, GST_TYPE_URI_HANDLER); + g_assert (g_list_length (list) == 1); + g_assert (list->data == (gpointer) filesrc); + g_list_free (list); + + bin2 = bin; + bin = GST_BIN (gst_bin_new (NULL)); + g_assert (bin); + gst_bin_add_many (bin, + gst_element_factory_make ("identity", NULL), + gst_element_factory_make ("identity", NULL), + GST_ELEMENT (bin2), + gst_element_factory_make ("identity", NULL), + NULL); + g_assert (gst_bin_get_by_interface (bin, GST_TYPE_URI_HANDLER) == filesrc); + list = gst_bin_get_all_by_interface (bin, GST_TYPE_URI_HANDLER); + g_assert (g_list_length (list) == 1); + g_assert (list->data == (gpointer) filesrc); + g_list_free (list); + + gst_bin_add (bin, gst_element_factory_make ("filesrc", NULL)); + gst_bin_add (bin2, gst_element_factory_make ("filesrc", NULL)); + list = gst_bin_get_all_by_interface (bin, GST_TYPE_URI_HANDLER); + g_assert (g_list_length (list) == 3); + g_list_free (list); + + g_object_unref (bin); + return 0; +}