diff options
author | Tim-Philipp Müller <tim@centricular.com> | 2015-03-14 17:23:03 +0000 |
---|---|---|
committer | Tim-Philipp Müller <tim@centricular.com> | 2015-03-14 17:23:03 +0000 |
commit | b1b718c6d0b5fae368deb5268072ab19eb70636d (patch) | |
tree | c35580546b05bf0dbb758193952bdb9cf7a4a0df /tests/check | |
parent | e6a0f52e3c052033a74063309c1e6401b7deea15 (diff) |
tests: add unit test for gst_adapter_take_buffer_list()
Diffstat (limited to 'tests/check')
-rw-r--r-- | tests/check/libs/adapter.c | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/tests/check/libs/adapter.c b/tests/check/libs/adapter.c index a99c8e0e9..5794aa8a7 100644 --- a/tests/check/libs/adapter.c +++ b/tests/check/libs/adapter.c @@ -807,6 +807,53 @@ GST_START_TEST (test_take_list) GST_END_TEST; +/* Fill a buffer with a sequence of 32 bit ints and read them back out + * using take_buffer, checking that they're still in the right order */ +GST_START_TEST (test_take_buffer_list) +{ + GstAdapter *adapter; + int i = 0; + + adapter = create_and_fill_adapter (); + while (gst_adapter_available (adapter) >= sizeof (guint32)) { + GstBufferList *buffer_list; + GstBuffer *buf; + gsize left; + GstMapInfo info; + guint8 *ptr; + guint n, num; + + buffer_list = gst_adapter_take_buffer_list (adapter, sizeof (guint32) * 5); + fail_unless (buffer_list != NULL); + num = gst_buffer_list_length (buffer_list); + fail_unless (num > 0); + + for (n = 0; n < num; ++n) { + buf = gst_buffer_list_get (buffer_list, n); + + fail_unless (gst_buffer_map (buf, &info, GST_MAP_READ)); + + ptr = info.data; + left = info.size; + + while (left > 0) { + fail_unless (GST_READ_UINT32_LE (ptr) == i); + i++; + ptr += sizeof (guint32); + left -= sizeof (guint32); + } + gst_buffer_unmap (buf, &info); + } + gst_buffer_list_unref (buffer_list); + } + fail_unless (gst_adapter_available (adapter) == 0, + "Data was left in the adapter"); + + g_object_unref (adapter); +} + +GST_END_TEST; + GST_START_TEST (test_merge) { GstAdapter *adapter; @@ -916,6 +963,7 @@ gst_adapter_suite (void) tcase_add_test (tc_chain, test_timestamp); tcase_add_test (tc_chain, test_scan); tcase_add_test (tc_chain, test_take_list); + tcase_add_test (tc_chain, test_take_buffer_list); tcase_add_test (tc_chain, test_merge); tcase_add_test (tc_chain, test_take_buffer_fast); |