summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorTim-Philipp Müller <tim@centricular.net>2007-10-31 12:30:28 +0000
committerTim-Philipp Müller <tim@centricular.net>2007-10-31 12:30:28 +0000
commitcfecc1f0253c450941799b2acaed40afcc782215 (patch)
tree855b80048af3293f625c56e8546b943c2da2a48b /tests
parentffa52e2eace523b98770adb7aa90cc46f8c419c0 (diff)
tests/check/libs/audio.c: Add simple unit test to make sure GstValue intersection of channel layouts works the way I ...
Original commit message from CVS: * tests/check/libs/audio.c: (init_value_to_channel_layout), (test_channel_layout_value_intersect), (audio_suite): Add simple unit test to make sure GstValue intersection of channel layouts works the way I think it does.
Diffstat (limited to 'tests')
-rw-r--r--tests/check/libs/audio.c57
1 files changed, 57 insertions, 0 deletions
diff --git a/tests/check/libs/audio.c b/tests/check/libs/audio.c
index 7363292526..c111ff5f19 100644
--- a/tests/check/libs/audio.c
+++ b/tests/check/libs/audio.c
@@ -456,6 +456,62 @@ GST_START_TEST (test_buffer_clipping_samples)
GST_END_TEST;
+static void
+init_value_to_channel_layout (GValue * val, GstAudioChannelPosition pos1,
+ GstAudioChannelPosition pos2)
+{
+ GValue pos = { 0, };
+
+ g_value_init (val, GST_TYPE_ARRAY);
+ g_value_init (&pos, GST_TYPE_AUDIO_CHANNEL_POSITION);
+ g_value_set_enum (&pos, pos1);
+ gst_value_array_append_value (val, &pos);
+ g_value_set_enum (&pos, pos2);
+ gst_value_array_append_value (val, &pos);
+ g_value_unset (&pos);
+}
+
+GST_START_TEST (test_channel_layout_value_intersect)
+{
+ GValue layout = { 0, };
+ GValue list = { 0, };
+ GValue res = { 0, };
+
+ g_value_init (&list, GST_TYPE_LIST);
+ init_value_to_channel_layout (&layout, GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT,
+ GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT);
+ gst_value_list_append_value (&list, &layout);
+ g_value_unset (&layout);
+ init_value_to_channel_layout (&layout, GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT,
+ GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT);
+ gst_value_list_append_value (&list, &layout);
+ g_value_unset (&layout);
+
+ init_value_to_channel_layout (&layout, GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT,
+ GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT);
+
+ /* we should get the second layout in the list, as it matches the input */
+ fail_unless (gst_value_intersect (&res, &layout, &list));
+ g_value_unset (&layout);
+ fail_unless (GST_VALUE_HOLDS_ARRAY (&res));
+ fail_unless_equals_int (gst_value_array_get_size (&res), 2);
+ fail_unless_equals_int (g_value_get_enum (gst_value_array_get_value (&res,
+ 0)), GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT);
+ fail_unless_equals_int (g_value_get_enum (gst_value_array_get_value (&res,
+ 1)), GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT);
+ g_value_unset (&res);
+
+ /* this (with rear position) should not yield any results */
+ init_value_to_channel_layout (&layout, GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT,
+ GST_AUDIO_CHANNEL_POSITION_REAR_RIGHT);
+ fail_if (gst_value_intersect (&res, &layout, &list));
+ g_value_unset (&layout);
+
+ g_value_unset (&list);
+}
+
+GST_END_TEST;
+
static Suite *
audio_suite (void)
{
@@ -466,6 +522,7 @@ audio_suite (void)
tcase_add_test (tc_chain, test_multichannel_checks);
tcase_add_test (tc_chain, test_buffer_clipping_time);
tcase_add_test (tc_chain, test_buffer_clipping_samples);
+ tcase_add_test (tc_chain, test_channel_layout_value_intersect);
return s;
}