move check stuff to its own library to be used by other modules
[platform/upstream/gstreamer.git] / tests / check / gst / gstelement.c
index 36cff21..aeff42d 100644 (file)
@@ -19,9 +19,9 @@
  * Boston, MA 02111-1307, USA.
  */
 
-#include "../gstcheck.h"
+#include <gst/check/gstcheck.h>
 
-START_TEST (test_add_remove_pad)
+GST_START_TEST (test_add_remove_pad)
 {
   GstElement *e;
   GstPad *p;
@@ -47,9 +47,9 @@ START_TEST (test_add_remove_pad)
   gst_object_unref (p);
 }
 
-END_TEST;
+GST_END_TEST;
 
-START_TEST (test_add_pad_unref_element)
+GST_START_TEST (test_add_pad_unref_element)
 {
   GstElement *e;
   GstPad *p;
@@ -76,8 +76,60 @@ START_TEST (test_add_pad_unref_element)
   gst_object_unref (p);
 }
 
-END_TEST;
+GST_END_TEST;
 
+GST_START_TEST (test_error_no_bus)
+{
+  GstElement *e;
+
+  e = gst_element_factory_make ("fakesrc", "source");
+
+  /* I don't want errors shown */
+  gst_debug_set_default_threshold (GST_LEVEL_NONE);
+
+  GST_ELEMENT_ERROR (e, RESOURCE, OPEN_READ, ("I could not read"), ("debug"));
+
+  gst_object_unref (e);
+}
+
+GST_END_TEST;
+
+/* link and run two elements without putting them in a 
+ * pipeline */
+GST_START_TEST (test_link)
+{
+  GstElement *src, *sink;
+
+  src = gst_element_factory_make ("fakesrc", "source");
+  sink = gst_element_factory_make ("fakesink", "sink");
+
+  fail_unless (gst_element_link_pads (src, "src", sink, "sink"));
+
+  /* do sink to source state change */
+  gst_element_set_state (sink, GST_STATE_PAUSED);
+  gst_element_set_state (src, GST_STATE_PAUSED);
+
+  /* wait for preroll */
+  gst_element_get_state (sink, NULL, NULL, NULL);
+
+  /* play some more */
+  gst_element_set_state (sink, GST_STATE_PLAYING);
+  gst_element_set_state (src, GST_STATE_PLAYING);
+
+  g_usleep (G_USEC_PER_SEC);
+
+  /* and stop */
+  gst_element_set_state (sink, GST_STATE_PAUSED);
+  gst_element_set_state (src, GST_STATE_PAUSED);
+
+  /* wait for preroll */
+  gst_element_get_state (sink, NULL, NULL, NULL);
+
+  gst_element_set_state (sink, GST_STATE_NULL);
+  gst_element_set_state (src, GST_STATE_NULL);
+}
+
+GST_END_TEST;
 
 Suite *
 gst_element_suite (void)
@@ -88,6 +140,8 @@ gst_element_suite (void)
   suite_add_tcase (s, tc_chain);
   tcase_add_test (tc_chain, test_add_remove_pad);
   tcase_add_test (tc_chain, test_add_pad_unref_element);
+  tcase_add_test (tc_chain, test_error_no_bus);
+  tcase_add_test (tc_chain, test_link);
 
   return s;
 }