8 main (int argc, gchar * argv[])
16 gst_init (&argc, &argv);
19 iters = atoi (argv[1]);
23 g_print ("starting element with pad test with %d iterations\n", iters);
26 element = gst_element_factory_make ("fakesink", NULL);;
27 g_assert (GST_IS_ELEMENT (element));
28 pad = gst_element_get_pad (element, "sink");
29 g_assert (GST_IS_PAD (pad));
30 g_assert (GST_OBJECT_IS_FLOATING (element));
31 g_assert (!GST_OBJECT_IS_FLOATING (pad));
32 g_assert (gst_pad_get_parent (pad) == element);
33 gst_object_unref (element);
34 g_print ("create/addpad/unref 1 new element: %ld\n", vmsize () - usage1);
36 for (i = 0; i < iters; i++) {
37 element = gst_element_factory_make ("fakesink", NULL);;
38 g_assert (GST_IS_ELEMENT (element));
39 gst_object_unref (element);
41 g_print ("create/unref %d elements: %ld\n", iters, vmsize () - usage1);
43 for (i = 0; i < iters / 2; i++) {
44 element = gst_element_factory_make ("fakesink", NULL);
45 g_assert (GST_IS_ELEMENT (element));
46 element2 = gst_element_factory_make ("fakesrc", NULL);
47 g_assert (GST_IS_ELEMENT (element2));
48 gst_element_link_pads (element2, "src", element, "sink");
49 g_assert (GST_PAD_IS_LINKED (gst_element_get_pad (element2, "src")));
50 g_assert (GST_PAD_IS_LINKED (gst_element_get_pad (element, "sink")));
51 gst_object_unref (element);
52 g_assert (!GST_PAD_IS_LINKED (gst_element_get_pad (element2, "src")));
53 gst_object_unref (element2);
55 g_print ("create/link/unref %d element duos: %ld\n", iters / 2,
58 element = gst_element_factory_make ("fakesink", NULL);;
59 g_assert (GST_IS_ELEMENT (element));
60 pad = gst_element_get_pad (element, "sink");
61 g_assert (GST_IS_PAD (pad));
62 gst_element_remove_pad (element, pad);
63 g_assert (gst_element_get_pad (element, "sink") == NULL);
64 gst_object_unref (element);
66 g_print ("pad removal on one element: %ld\n", vmsize () - usage1);
68 for (i = 0; i < iters / 2; i++) {
69 element = gst_element_factory_make ("fakesink", NULL);;
70 g_assert (GST_IS_ELEMENT (element));
71 pad = gst_element_get_pad (element, "sink");
72 g_assert (GST_IS_PAD (pad));
73 gst_element_remove_pad (element, pad);
74 g_assert (gst_element_get_pad (element, "sink") == NULL);
75 gst_object_unref (element);
77 g_print ("pad removal loop on %d elements: %ld\n", iters / 2,
80 for (i = 0; i < iters / 2; i++) {
81 element = gst_element_factory_make ("fakesink", NULL);;
82 g_assert (GST_IS_ELEMENT (element));
83 pad = gst_element_get_pad (element, "sink");
84 g_assert (GST_IS_PAD (pad));
86 gst_element_remove_pad (element, pad);
87 g_assert (gst_pad_get_parent (pad) == NULL);
88 gst_object_unref (pad);
89 gst_object_unref (element);
91 g_print ("pad ref/removal/test loop on %d elements: %ld\n", iters / 2,
94 element = gst_element_factory_make ("fakesink", NULL);;
95 g_assert (GST_IS_ELEMENT (element));
96 pad = gst_element_get_pad (element, "sink");
97 g_assert (GST_IS_PAD (pad));
98 gst_object_unref (element);
100 g_print ("pad unref on one element: %ld\n", vmsize () - usage1);
102 for (i = 0; i < iters / 2; i++) {
103 element = gst_element_factory_make ("fakesink", NULL);
104 g_assert (GST_IS_ELEMENT (element));
105 pad = gst_element_get_pad (element, "sink");
106 g_assert (GST_IS_PAD (pad));
107 gst_object_unref (element);
109 g_print ("pad unref loop on %d elements: %ld\n", iters / 2,
112 g_print ("leaked: %ld\n", vmsize () - usage1);