8 main (int argc, gchar *argv[])
10 GstObject *object, *object2;
14 gst_init (&argc, &argv);
17 iters = atoi (argv[1]);
21 g_print ("starting test with %d iterations\n", iters);
23 object = gst_object_new ();
24 gst_object_unref (object);
25 g_print ("create/unref new object %ld\n", vmsize()-usage1);
27 for (i=0; i<iters;i++) {
28 object = gst_object_new ();
29 gst_object_unref (object);
32 g_print ("create/unref %d object %ld\n", iters, vmsize()-usage1);
34 object = gst_object_new ();
35 g_assert (GST_OBJECT_FLOATING (object));
36 gst_object_ref (object);
37 gst_object_sink (object);
38 g_assert (!GST_OBJECT_FLOATING (object));
39 gst_object_unref (object);
40 g_print ("create/ref/sink/unref new object %ld\n", vmsize()-usage1);
42 for (i=0; i<iters;i++) {
43 object = gst_object_new ();
44 gst_object_ref (object);
45 gst_object_sink (object);
46 gst_object_unref (object);
48 g_print ("create/ref/sink/unref %d object %ld\n", iters, vmsize()-usage1);
50 object = gst_object_new ();
51 g_assert (!GST_OBJECT_DESTROYED (object));
52 gst_object_unref (object);
53 g_assert (GST_OBJECT_DESTROYED (object));
54 gst_object_unref (object);
55 g_print ("create/destroy/unref new object %ld\n", vmsize()-usage1);
57 for (i=0; i<iters;i++) {
58 object = gst_object_new ();
59 gst_object_unref (object);
60 gst_object_unref (object);
62 g_print ("destroy/unref %d object %ld\n", iters, vmsize()-usage1);
64 object = gst_object_new ();
65 gst_object_ref (object);
66 gst_object_unref (object);
67 gst_object_unref (object);
68 g_print ("create/ref/unref/unref new object %ld\n", vmsize()-usage1);
70 for (i=0; i<iters;i++) {
71 object = gst_object_new ();
72 gst_object_ref (object);
73 gst_object_unref (object);
74 gst_object_unref (object);
76 g_print ("create/ref/unref/unref %d object %ld\n", iters, vmsize()-usage1);
78 object = gst_object_new ();
79 gst_object_ref (object);
80 gst_object_unref (object);
81 gst_object_unref (object);
82 gst_object_unref (object);
83 g_print ("create/ref/destroy/unref/unref new object %ld\n", vmsize()-usage1);
85 for (i=0; i<iters;i++) {
86 object = gst_object_new ();
87 gst_object_ref (object);
88 gst_object_unref (object);
89 gst_object_unref (object);
90 gst_object_unref (object);
92 g_print ("create/ref/destroy/unref/unref %d object %ld\n", iters, vmsize()-usage1);
94 for (i=0; i<iters;i++) {
95 object = gst_object_new ();
96 gst_object_ref (object);
97 gst_object_set_name (object, "testing123");
98 gst_object_unref (object);
99 gst_object_set_name (object, "testing123");
100 gst_object_unref (object);
101 gst_object_unref (object);
103 g_print ("create/ref/destroy/unref/unref %d object with name %ld\n", iters, vmsize()-usage1);
105 object = gst_object_new ();
106 for (i=0; i<iters;i++) {
107 gst_object_set_name (object, "testing");
109 gst_object_unref (object);
110 g_print ("create/set name/unref %d object %ld\n", iters, vmsize()-usage1);
112 object = gst_object_new ();
113 object2 = gst_object_new ();
114 g_assert (GST_OBJECT_FLOATING (object));
115 g_assert (GST_OBJECT_FLOATING (object2));
117 gst_object_set_parent (object, object2);
118 g_assert (GST_OBJECT_FLOATING (object2));
119 g_assert (!GST_OBJECT_FLOATING (object));
121 g_print ("parentage flags set_parent ok %ld\n", vmsize()-usage1);
123 gst_object_ref (object);
124 gst_object_unparent (object);
125 g_assert (GST_OBJECT_FLOATING (object2));
126 g_assert (!GST_OBJECT_FLOATING (object));
127 g_assert (gst_object_get_parent (object) == NULL);
129 g_print ("parentage flags unparent ok %ld\n", vmsize()-usage1);
131 gst_object_set_parent (object, object2);
132 g_assert (GST_OBJECT_FLOATING (object2));
133 g_assert (!GST_OBJECT_FLOATING (object));
134 g_assert (gst_object_get_parent (object) == object2);
136 gst_object_unref (object);
137 g_assert (GST_OBJECT_DESTROYED (object));
138 g_assert (!GST_OBJECT_FLOATING (object));
139 g_assert (gst_object_get_parent (object) == NULL);
140 gst_object_unref (object);
142 g_print ("parentage flags destroy ok %ld\n", vmsize()-usage1);
144 for (i=0; i<iters;i++) {
145 object = gst_object_new ();
146 object2 = gst_object_new ();
147 gst_object_set_parent (object2, object);
148 gst_object_unref (object);
149 gst_object_unref (object2);
151 g_print ("create/unref %d 2 parented objects %ld\n", iters, vmsize()-usage1);
153 g_print ("leaked: %ld\n", vmsize()-usage1);
155 return (vmsize()-usage1 ? -1 : 0);