ghostpad: add some tests for activation
authorHavard Graff <havard.graff@gmail.com>
Wed, 17 Feb 2016 10:02:34 +0000 (11:02 +0100)
committerSebastian Dröge <sebastian@centricular.com>
Wed, 17 Feb 2016 10:26:12 +0000 (12:26 +0200)
https://bugzilla.gnome.org/show_bug.cgi?id=761913

tests/check/gst/gstghostpad.c

index c274e6d..c139dbc 100644 (file)
@@ -20,6 +20,7 @@
  */
 
 #include <gst/check/gstcheck.h>
+#include <gst/check/gstharness.h>
 
 /* test if removing a bin also cleans up the ghostpads
  */
@@ -1167,6 +1168,67 @@ GST_START_TEST (test_ghost_pads_remove_while_playing)
 
 GST_END_TEST;
 
+
+GST_START_TEST (test_activate_src)
+{
+  GstHarness *h;
+  GstElement *b;
+  GstElement *src;
+  GstPad *srcpad;
+
+  b = gst_bin_new (NULL);
+  src = gst_element_factory_make ("fakesrc", NULL);
+  g_object_set (src, "sync", TRUE, NULL);
+  gst_bin_add (GST_BIN (b), src);
+
+  srcpad = gst_element_get_static_pad (src, "src");
+  gst_element_add_pad (b, gst_ghost_pad_new ("src", srcpad));
+  gst_object_unref (srcpad);
+
+  h = gst_harness_new_with_element (b, NULL, "src");
+  gst_harness_play (h);
+
+  gst_harness_crank_single_clock_wait (h);
+  gst_buffer_unref (gst_harness_pull (h));
+
+  gst_object_unref (b);
+  gst_harness_teardown (h);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_activate_sink_and_src)
+{
+  GstHarness *h;
+  GstElement *b;
+  GstElement *element;
+  GstPad *sinkpad;
+  GstPad *srcpad;
+
+  b = gst_bin_new (NULL);
+  element = gst_element_factory_make ("identity", NULL);
+  gst_bin_add (GST_BIN (b), element);
+
+  sinkpad = gst_element_get_static_pad (element, "sink");
+  gst_element_add_pad (b, gst_ghost_pad_new ("sink", sinkpad));
+  gst_object_unref (sinkpad);
+
+  srcpad = gst_element_get_static_pad (element, "src");
+  gst_element_add_pad (b, gst_ghost_pad_new ("src", srcpad));
+  gst_object_unref (srcpad);
+
+  h = gst_harness_new_with_element (b, "sink", "src");
+  gst_harness_set_src_caps_str (h, "mycaps");
+
+  gst_harness_push (h, gst_buffer_new());
+  gst_buffer_unref (gst_harness_pull (h));
+
+  gst_object_unref (b);
+  gst_harness_teardown (h);
+}
+
+GST_END_TEST;
+
 static Suite *
 gst_ghost_pad_suite (void)
 {
@@ -1193,6 +1255,9 @@ gst_ghost_pad_suite (void)
   tcase_add_test (tc_chain, test_ghost_pads_internal_link);
   tcase_add_test (tc_chain, test_ghost_pads_remove_while_playing);
 
+  tcase_add_test (tc_chain, test_activate_src);
+  tcase_add_test (tc_chain, test_activate_sink_and_src);
+
   return s;
 }