add tests for gst_bin_get_(all_)by_interface
authorBenjamin Otte <otte@gnome.org>
Tue, 16 Dec 2003 19:32:27 +0000 (19:32 +0000)
committerBenjamin Otte <otte@gnome.org>
Tue, 16 Dec 2003 19:32:27 +0000 (19:32 +0000)
Original commit message from CVS:
add tests for gst_bin_get_(all_)by_interface

common
configure.ac
tests/old/testsuite/bins/.gitignore [new file with mode: 0644]
tests/old/testsuite/bins/Makefile.am [new file with mode: 0644]
tests/old/testsuite/bins/interface.c [new file with mode: 0644]
testsuite/bins/.gitignore [new file with mode: 0644]
testsuite/bins/Makefile.am [new file with mode: 0644]
testsuite/bins/interface.c [new file with mode: 0644]

diff --git a/common b/common
index 9f37b3e515260c7b294222a502b2cc75dd0983b6..cd5507ae3df8dc48c07df9e37878846b6b79faa1 160000 (submodule)
--- a/common
+++ b/common
@@ -1 +1 @@
-Subproject commit 9f37b3e515260c7b294222a502b2cc75dd0983b6
+Subproject commit cd5507ae3df8dc48c07df9e37878846b6b79faa1
index b4f3b01668439b0072fb49884b1e37267be2f5b6..58b607c8c31647ea81364d2dddc354e89f6a72de 100644 (file)
@@ -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 (file)
index 0000000..b529896
--- /dev/null
@@ -0,0 +1 @@
+interface
diff --git a/tests/old/testsuite/bins/Makefile.am b/tests/old/testsuite/bins/Makefile.am
new file mode 100644 (file)
index 0000000..a4a8671
--- /dev/null
@@ -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 (file)
index 0000000..61f948d
--- /dev/null
@@ -0,0 +1,81 @@
+/* GStreamer
+ * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
+ *
+ * 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 <gst/gst.h>
+
+/* 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 (file)
index 0000000..b529896
--- /dev/null
@@ -0,0 +1 @@
+interface
diff --git a/testsuite/bins/Makefile.am b/testsuite/bins/Makefile.am
new file mode 100644 (file)
index 0000000..a4a8671
--- /dev/null
@@ -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 (file)
index 0000000..61f948d
--- /dev/null
@@ -0,0 +1,81 @@
+/* GStreamer
+ * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
+ *
+ * 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 <gst/gst.h>
+
+/* 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;
+}