* 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;
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;
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, GST_CLOCK_TIME_NONE);
+
+ /* 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, GST_CLOCK_TIME_NONE);
+
+ gst_element_set_state (sink, GST_STATE_NULL);
+ gst_element_set_state (src, GST_STATE_NULL);
+}
+
+GST_END_TEST;
+
+/* linking two elements without pads should fail */
+GST_START_TEST (test_link_no_pads)
+{
+ GstElement *src, *sink;
+
+ src = gst_bin_new ("src");
+ sink = gst_bin_new ("sink");
+
+ fail_if (gst_element_link (src, sink));
+
+ gst_object_unref (src);
+ gst_object_unref (sink);
+}
+
+GST_END_TEST;
Suite *
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);
+ tcase_add_test (tc_chain, test_link_no_pads);
return s;
}