8 main (int argc, gchar *argv[])
16 gst_init (&argc, &argv);
19 iters = atoi (argv[1]);
24 g_print ("starting element with pad test with %d iterations\n", iters);
27 element = gst_element_factory_make ("fakesink", NULL);;
28 pad = gst_element_get_pad (element, "sink");
29 g_assert (GST_OBJECT_FLOATING (element));
30 g_assert (!GST_OBJECT_FLOATING (pad));
31 g_assert (gst_pad_get_parent (pad) == element);
32 gst_object_unref (GST_OBJECT (element));
33 g_print ("create/addpad/unref new element %ld\n", vmsize()-usage1);
35 for (i=0; i<iters; i++) {
36 element = gst_element_factory_make
38 gst_object_unref (GST_OBJECT (element));
40 g_print ("create/addpad/unref %d elements %ld\n", iters, vmsize()-usage1);
42 for (i=0; i<iters/2; i++) {
43 element = gst_element_factory_make ("fakesink", NULL);
44 element2 = gst_element_factory_make ("fakesrc", NULL);
45 gst_element_link_pads (element, "sink", element2, "src");
46 g_assert (GST_PAD_IS_LINKED (gst_element_get_pad (element2, "src")));
47 g_assert (GST_PAD_IS_LINKED (gst_element_get_pad (element, "sink")));
48 gst_object_unref (GST_OBJECT (element));
49 g_assert (!GST_PAD_IS_LINKED (gst_element_get_pad (element2, "src")));
50 gst_object_unref (GST_OBJECT (element2));
52 g_print ("create/link/unref %d elements %ld\n", iters/2, vmsize()-usage1);
54 for (i=0; i<iters/2; i++) {
55 element = gst_element_factory_make ("fakesink", NULL);
56 element2 = gst_element_factory_make ("fakesrc", NULL);
57 gst_element_link_pads (element, "sink", element2, "src");
58 g_assert (GST_PAD_IS_LINKED (gst_element_get_pad (element2, "src")));
59 g_assert (GST_PAD_IS_LINKED (gst_element_get_pad (element, "sink")));
60 gst_object_unref (GST_OBJECT (element));
61 g_assert (GST_OBJECT_DESTROYED (element));
62 g_assert (!GST_PAD_IS_LINKED (gst_element_get_pad (element2, "src")));
63 gst_object_unref (GST_OBJECT (element2));
64 gst_object_unref (GST_OBJECT (element));
66 g_print ("create/link/destroy %d elements %ld\n", iters/2, vmsize()-usage1);
68 element = gst_element_factory_make ("fakesink", NULL);;
69 pad = gst_element_get_pad (element, "sink");
70 gst_element_remove_pad (element, pad);
71 g_assert (gst_element_get_pad (element, "sink") == NULL);
73 g_print ("pad removal ok %ld\n", vmsize()-usage1);
74 for (i=0; i<iters/2; i++) {
75 element = gst_element_factory_make ("fakesink", NULL);;
76 pad = gst_element_get_pad (element, "sink");
77 gst_element_remove_pad (element, pad);
78 gst_object_unref (GST_OBJECT (element));
80 g_print ("pad removal loop %d %ld\n", iters/2, vmsize()-usage1);
82 for (i=0; i<iters/2; i++) {
83 element = gst_element_factory_make ("fakesink", NULL);;
84 pad = gst_element_get_pad (element, "sink");
85 gst_object_ref (GST_OBJECT (pad));
86 gst_element_remove_pad (element, pad);
87 g_assert (gst_pad_get_parent (pad) == NULL);
88 gst_object_unref (GST_OBJECT (pad));
89 gst_object_unref (GST_OBJECT (element));
91 g_print ("pad removal and test loop %d %ld\n", iters/2, vmsize()-usage1);
93 element = gst_element_factory_make ("fakesink", NULL);;
94 pad = gst_element_get_pad (element, "sink");
95 gst_object_unref (GST_OBJECT (element));
96 g_assert (GST_OBJECT_DESTROYED (element));
97 g_assert (gst_element_get_pad (element, "sink") == NULL);
98 gst_object_unref (GST_OBJECT (element));
100 g_print ("pad destroy/removal ok %ld\n", vmsize()-usage1);
102 for (i=0; i<iters/2; i++) {
103 element = gst_element_factory_make ("fakesink", NULL);;
104 pad = gst_element_get_pad (element, "sink");
105 gst_object_unref (GST_OBJECT (element));
106 gst_object_unref (GST_OBJECT (element));
108 g_print ("pad destroy/removal loop %d %ld\n", iters/2, vmsize()-usage1);
110 for (i=0; i<iters/2; i++) {
111 element = gst_element_factory_make ("fakesink", NULL);;
112 pad = gst_element_get_pad (element, "sink");
113 gst_object_unref (GST_OBJECT (pad));
114 g_assert (gst_element_get_pad (element, "sink") == NULL);
115 gst_object_unref (GST_OBJECT (element));
117 g_print ("pad destroy loop %d %ld\n", iters/2, vmsize()-usage1);
119 g_print ("leaked: %ld\n", vmsize()-usage1);
121 return (vmsize()-usage1 ? -1 : 0);