tests: Update for new GstIterator API

This commit is contained in:
Sebastian Dröge 2011-03-17 11:52:42 +01:00
parent 3d807c228c
commit 8ce0fea199
3 changed files with 76 additions and 60 deletions

View file

@ -337,7 +337,9 @@ GST_START_TEST (test_internal_links)
GstPad *sinkpad, *srcpad1, *srcpad2;
GstIterator *it;
GstIteratorResult res;
gpointer val1, val2;
GValue val1 = { 0, }
, val2 = {
0,};
tee = gst_check_setup_element ("tee");
@ -347,10 +349,9 @@ GST_START_TEST (test_internal_links)
fail_unless (it != NULL);
/* iterator should not return anything */
val1 = NULL;
res = gst_iterator_next (it, &val1);
fail_unless (res == GST_ITERATOR_DONE);
fail_unless (val1 == NULL);
fail_unless (g_value_get_object (&val1) == NULL);
srcpad1 = gst_element_get_request_pad (tee, "src%d");
fail_unless (srcpad1 != NULL);
@ -358,20 +359,19 @@ GST_START_TEST (test_internal_links)
/* iterator should resync */
res = gst_iterator_next (it, &val1);
fail_unless (res == GST_ITERATOR_RESYNC);
fail_unless (val1 == NULL);
fail_unless (g_value_get_object (&val1) == NULL);
gst_iterator_resync (it);
/* we should get something now */
res = gst_iterator_next (it, &val1);
fail_unless (res == GST_ITERATOR_OK);
fail_unless (GST_PAD_CAST (val1) == srcpad1);
fail_unless (GST_PAD_CAST (g_value_get_object (&val1)) == srcpad1);
gst_object_unref (val1);
g_value_reset (&val1);
val1 = NULL;
res = gst_iterator_next (it, &val1);
fail_unless (res == GST_ITERATOR_DONE);
fail_unless (val1 == NULL);
fail_unless (g_value_get_object (&val1) == NULL);
srcpad2 = gst_element_get_request_pad (tee, "src%d");
fail_unless (srcpad2 != NULL);
@ -379,28 +379,27 @@ GST_START_TEST (test_internal_links)
/* iterator should resync */
res = gst_iterator_next (it, &val1);
fail_unless (res == GST_ITERATOR_RESYNC);
fail_unless (val1 == NULL);
fail_unless (g_value_get_object (&val1) == NULL);
gst_iterator_resync (it);
/* we should get one of the 2 pads now */
res = gst_iterator_next (it, &val1);
fail_unless (res == GST_ITERATOR_OK);
fail_unless (GST_PAD_CAST (val1) == srcpad1
|| GST_PAD_CAST (val1) == srcpad2);
fail_unless (GST_PAD_CAST (g_value_get_object (&val1)) == srcpad1
|| GST_PAD_CAST (g_value_get_object (&val1)) == srcpad2);
/* and the other */
res = gst_iterator_next (it, &val2);
fail_unless (res == GST_ITERATOR_OK);
fail_unless (GST_PAD_CAST (val2) == srcpad1
|| GST_PAD_CAST (val2) == srcpad2);
fail_unless (val1 != val2);
gst_object_unref (val1);
gst_object_unref (val2);
fail_unless (GST_PAD_CAST (g_value_get_object (&val2)) == srcpad1
|| GST_PAD_CAST (g_value_get_object (&val2)) == srcpad2);
fail_unless (g_value_get_object (&val1) != g_value_get_object (&val2));
g_value_reset (&val1);
g_value_reset (&val2);
val1 = NULL;
res = gst_iterator_next (it, &val1);
fail_unless (res == GST_ITERATOR_DONE);
fail_unless (val1 == NULL);
fail_unless (g_value_get_object (&val1) == NULL);
gst_iterator_free (it);
@ -410,8 +409,8 @@ GST_START_TEST (test_internal_links)
res = gst_iterator_next (it, &val1);
fail_unless (res == GST_ITERATOR_OK);
fail_unless (GST_PAD_CAST (val1) == sinkpad);
gst_object_unref (val1);
fail_unless (GST_PAD_CAST (g_value_get_object (&val1)) == sinkpad);
g_value_reset (&val1);
res = gst_iterator_next (it, &val1);
fail_unless (res == GST_ITERATOR_DONE);
@ -422,12 +421,14 @@ GST_START_TEST (test_internal_links)
res = gst_iterator_next (it, &val1);
fail_unless (res == GST_ITERATOR_OK);
fail_unless (GST_PAD_CAST (val1) == sinkpad);
gst_object_unref (val1);
fail_unless (GST_PAD_CAST (g_value_get_object (&val1)) == sinkpad);
g_value_reset (&val1);
res = gst_iterator_next (it, &val1);
fail_unless (res == GST_ITERATOR_DONE);
g_value_unset (&val1);
g_value_unset (&val2);
gst_iterator_free (it);
gst_object_unref (srcpad1);
gst_object_unref (srcpad2);

View file

@ -61,7 +61,7 @@ GST_START_TEST (test_interface)
GstBin *bin, *bin2;
GstElement *filesrc;
GstIterator *it;
gpointer item;
GValue item = { 0, };
bin = GST_BIN (gst_bin_new (NULL));
fail_unless (bin != NULL, "Could not create bin");
@ -77,8 +77,8 @@ GST_START_TEST (test_interface)
it = gst_bin_iterate_all_by_interface (bin, GST_TYPE_URI_HANDLER);
fail_unless (it != NULL);
fail_unless (gst_iterator_next (it, &item) == GST_ITERATOR_OK);
fail_unless (item == (gpointer) filesrc);
gst_object_unref (GST_OBJECT (item));
fail_unless (g_value_get_object (&item) == (gpointer) filesrc);
g_value_reset (&item);
fail_unless (gst_iterator_next (it, &item) == GST_ITERATOR_DONE);
gst_iterator_free (it);
@ -89,8 +89,8 @@ GST_START_TEST (test_interface)
it = gst_bin_iterate_all_by_interface (bin, GST_TYPE_URI_HANDLER);
fail_unless (it != NULL);
fail_unless (gst_iterator_next (it, &item) == GST_ITERATOR_OK);
fail_unless (item == (gpointer) filesrc);
gst_object_unref (GST_OBJECT (item));
fail_unless (g_value_get_object (&item) == (gpointer) filesrc);
g_value_reset (&item);
fail_unless (gst_iterator_next (it, &item) == GST_ITERATOR_DONE);
gst_iterator_free (it);
@ -103,8 +103,8 @@ GST_START_TEST (test_interface)
GST_ELEMENT (bin2), gst_element_factory_make ("identity", NULL), NULL);
it = gst_bin_iterate_all_by_interface (bin, GST_TYPE_URI_HANDLER);
fail_unless (gst_iterator_next (it, &item) == GST_ITERATOR_OK);
fail_unless (item == (gpointer) filesrc);
gst_object_unref (GST_OBJECT (item));
fail_unless (g_value_get_object (&item) == (gpointer) filesrc);
g_value_reset (&item);
fail_unless (gst_iterator_next (it, &item) == GST_ITERATOR_DONE);
gst_iterator_free (it);
@ -112,12 +112,13 @@ GST_START_TEST (test_interface)
gst_bin_add (bin2, gst_element_factory_make ("filesrc", NULL));
it = gst_bin_iterate_all_by_interface (bin, GST_TYPE_URI_HANDLER);
fail_unless (gst_iterator_next (it, &item) == GST_ITERATOR_OK);
gst_object_unref (GST_OBJECT (item));
g_value_reset (&item);
fail_unless (gst_iterator_next (it, &item) == GST_ITERATOR_OK);
gst_object_unref (GST_OBJECT (item));
g_value_reset (&item);
fail_unless (gst_iterator_next (it, &item) == GST_ITERATOR_OK);
gst_object_unref (GST_OBJECT (item));
g_value_reset (&item);
fail_unless (gst_iterator_next (it, &item) == GST_ITERATOR_DONE);
g_value_unset (&item);
gst_iterator_free (it);
gst_object_unref (bin);
@ -887,7 +888,7 @@ GST_START_TEST (test_iterate_sorted)
{
GstElement *src, *tee, *identity, *sink1, *sink2, *pipeline, *bin;
GstIterator *it;
gpointer elem;
GValue elem = { 0, };
pipeline = gst_pipeline_new (NULL);
fail_unless (pipeline != NULL, "Could not create pipeline");
@ -922,19 +923,21 @@ GST_START_TEST (test_iterate_sorted)
it = gst_bin_iterate_sorted (GST_BIN (pipeline));
fail_unless (gst_iterator_next (it, &elem) == GST_ITERATOR_OK);
fail_unless (elem == sink2);
gst_object_unref (elem);
fail_unless (g_value_get_object (&elem) == (gpointer) sink2);
g_value_reset (&elem);
fail_unless (gst_iterator_next (it, &elem) == GST_ITERATOR_OK);
fail_unless (elem == identity);
gst_object_unref (elem);
fail_unless (g_value_get_object (&elem) == (gpointer) identity);
g_value_reset (&elem);
fail_unless (gst_iterator_next (it, &elem) == GST_ITERATOR_OK);
fail_unless (elem == bin);
gst_object_unref (elem);
fail_unless (g_value_get_object (&elem) == (gpointer) bin);
g_value_reset (&elem);
g_value_unset (&elem);
gst_iterator_free (it);
ASSERT_OBJECT_REFCOUNT (pipeline, "pipeline", 1);
gst_object_unref (pipeline);
}

View file

@ -44,13 +44,13 @@ GST_START_TEST (test_manual_iteration)
GMutex *m;
GstIterator *iter;
GstIteratorResult res;
gpointer item;
GValue item = { 0, };
gint i = 0;
l = make_list_of_ints (NUM_ELEMENTS);
m = g_mutex_new ();
iter = gst_iterator_new_list (G_TYPE_INT, m, &cookie, &l, NULL, NULL, NULL);
iter = gst_iterator_new_list (G_TYPE_POINTER, m, &cookie, &l, NULL, NULL);
fail_unless (iter != NULL);
@ -58,7 +58,8 @@ GST_START_TEST (test_manual_iteration)
res = gst_iterator_next (iter, &item);
if (i < NUM_ELEMENTS) {
fail_unless (res == GST_ITERATOR_OK);
fail_unless (GPOINTER_TO_INT (item) == i);
fail_unless (GPOINTER_TO_INT (g_value_get_pointer (&item)) == i);
g_value_reset (&item);
i++;
continue;
} else {
@ -66,8 +67,8 @@ GST_START_TEST (test_manual_iteration)
break;
}
}
/* clean up */
g_value_unset (&item);
gst_iterator_free (iter);
g_mutex_free (m);
g_list_free (l);
@ -82,14 +83,14 @@ GST_START_TEST (test_resync)
GMutex *m;
GstIterator *iter;
GstIteratorResult res;
gpointer item;
GValue item = { 0, };
gint i = 0;
gboolean hacked_list = FALSE;
l = make_list_of_ints (NUM_ELEMENTS);
m = g_mutex_new ();
iter = gst_iterator_new_list (G_TYPE_INT, m, &cookie, &l, NULL, NULL, NULL);
iter = gst_iterator_new_list (G_TYPE_POINTER, m, &cookie, &l, NULL, NULL);
fail_unless (iter != NULL);
@ -97,12 +98,14 @@ GST_START_TEST (test_resync)
res = gst_iterator_next (iter, &item);
if (i < NUM_ELEMENTS / 2) {
fail_unless (res == GST_ITERATOR_OK);
fail_unless (GPOINTER_TO_INT (item) == i);
fail_unless (GPOINTER_TO_INT (g_value_get_pointer (&item)) == i);
g_value_reset (&item);
i++;
continue;
} else if (!hacked_list) {
/* here's where we test resync */
fail_unless (res == GST_ITERATOR_OK);
g_value_reset (&item);
l = g_list_prepend (l, GINT_TO_POINTER (-1));
cookie++;
hacked_list = TRUE;
@ -112,12 +115,14 @@ GST_START_TEST (test_resync)
gst_iterator_resync (iter);
res = gst_iterator_next (iter, &item);
fail_unless (res == GST_ITERATOR_OK);
fail_unless (GPOINTER_TO_INT (item) == -1);
fail_unless (GPOINTER_TO_INT (g_value_get_pointer (&item)) == -1);
g_value_reset (&item);
break;
}
}
/* clean up */
g_value_unset (&item);
gst_iterator_free (iter);
g_mutex_free (m);
g_list_free (l);
@ -126,9 +131,10 @@ GST_START_TEST (test_resync)
GST_END_TEST;
static gboolean
add_fold_func (gpointer item, GValue * ret, gpointer user_data)
add_fold_func (const GValue * item, GValue * ret, gpointer user_data)
{
g_value_set_int (ret, g_value_get_int (ret) + GPOINTER_TO_INT (item));
g_value_set_int (ret,
g_value_get_int (ret) + GPOINTER_TO_INT (g_value_get_pointer (item)));
return TRUE;
}
@ -144,7 +150,7 @@ GST_START_TEST (test_fold)
l = make_list_of_ints (NUM_ELEMENTS);
m = g_mutex_new ();
iter = gst_iterator_new_list (G_TYPE_INT, m, &cookie, &l, NULL, NULL, NULL);
iter = gst_iterator_new_list (G_TYPE_POINTER, m, &cookie, &l, NULL, NULL);
fail_unless (iter != NULL);
expected = 0;
@ -171,27 +177,33 @@ GST_START_TEST (test_single)
{
GstIterator *it;
GstStructure *s = gst_structure_new ("test", NULL);
GValue v = { 0, };
GstStructure *i;
it = gst_iterator_new_single (GST_TYPE_STRUCTURE, s,
(GstCopyFunction) gst_structure_copy, (GFreeFunc) gst_structure_free);
g_value_init (&v, GST_TYPE_STRUCTURE);
g_value_set_boxed (&v, s);
it = gst_iterator_new_single (GST_TYPE_STRUCTURE, &v);
g_value_reset (&v);
fail_unless (gst_iterator_next (it, (gpointer) & i) == GST_ITERATOR_OK);
fail_unless (gst_iterator_next (it, &v) == GST_ITERATOR_OK);
i = g_value_get_boxed (&v);
fail_unless (strcmp (gst_structure_get_name (s),
gst_structure_get_name (i)) == 0);
gst_structure_free (i);
i = NULL;
fail_unless (gst_iterator_next (it, (gpointer) & i) == GST_ITERATOR_DONE);
fail_unless (i == NULL);
g_value_reset (&v);
fail_unless (gst_iterator_next (it, &v) == GST_ITERATOR_DONE);
fail_unless (g_value_get_boxed (&v) == NULL);
gst_iterator_free (it);
gst_structure_free (s);
it = gst_iterator_new_single (GST_TYPE_STRUCTURE, NULL,
(GstCopyFunction) gst_structure_copy, (GFreeFunc) gst_structure_free);
it = gst_iterator_new_single (GST_TYPE_STRUCTURE, NULL);
fail_unless (gst_iterator_next (it, (gpointer) & i) == GST_ITERATOR_DONE);
fail_unless (i == NULL);
fail_unless (gst_iterator_next (it, &v) == GST_ITERATOR_DONE);
fail_unless (g_value_get_boxed (&v) == NULL);
g_value_reset (&v);
gst_iterator_free (it);
}