diff options
author | Seungha Yang <sh.yang@lge.com> | 2016-11-22 16:52:46 +0900 |
---|---|---|
committer | Tim-Philipp Müller <tim@centricular.com> | 2016-12-06 20:28:55 +0000 |
commit | 0494c173e0b72005146195ca001771a0cd8eb5ba (patch) | |
tree | 2f464a761e183a0de3c5823b1f9d65bf239760fb /tests | |
parent | 0728b9b59b1e18b174e210590e3b120f2bf8cf9f (diff) |
uri: Add new uri API to get media fragments URI as table
As an usecase of URI fragment, it can indicate temporal or spatial
dimension of a media stream. To easily parse key-value pair,
newly added gst_uri_get_media_fragment_table () API will provide
the table of key-value pair likewise URI query.
See also https://www.w3.org/TR/media-frags/
https://bugzilla.gnome.org/show_bug.cgi?id=774830
Diffstat (limited to 'tests')
-rw-r--r-- | tests/check/gst/gsturi.c | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/tests/check/gst/gsturi.c b/tests/check/gst/gsturi.c index e7ce6dfd4..dbd1509b6 100644 --- a/tests/check/gst/gsturi.c +++ b/tests/check/gst/gsturi.c @@ -980,6 +980,80 @@ GST_START_TEST (test_url_get_set) GST_END_TEST; +GST_START_TEST (test_url_get_media_fragment_table) +{ + GstUri *url; + gchar *val; + GHashTable *table; + + /* Examples at https://www.w3.org/TR/media-frags/#processing-media-fragment-uri */ + + /* TEST "t=1" */ + url = gst_uri_from_string ("http://foo/var/file#t=1"); + table = gst_uri_get_media_fragment_table (url); + fail_unless (table); + fail_unless (g_hash_table_size (table) == 1); + fail_unless (g_hash_table_lookup_extended (table, "t", NULL, + (gpointer) & val)); + fail_unless_equals_string ("1", val); + g_hash_table_unref (table); + gst_uri_unref (url); + + /* NOTE: Media Fragments URI 1.0 (W3C) is saying that + * "Multiple occurrences of the same dimension: only the last valid occurrence + * of a dimension (e.g. t=10 in #t=2&t=10) is interpreted and all previous + * occurrences (valid or invalid) SHOULD be ignored by the user agent" + */ + /* TEST "t=1&t=2" */ + url = gst_uri_from_string ("http://foo/var/file#t=1&t=2"); + table = gst_uri_get_media_fragment_table (url); + fail_unless (table); + fail_unless (g_hash_table_size (table) == 1); + fail_unless (g_hash_table_lookup_extended (table, "t", NULL, + (gpointer) & val)); + fail_unless_equals_string ("2", val); + g_hash_table_unref (table); + gst_uri_unref (url); + + /* TEST "a=b=c" */ + url = gst_uri_from_string ("http://foo/var/file#a=b=c"); + table = gst_uri_get_media_fragment_table (url); + fail_unless (table); + fail_unless (g_hash_table_size (table) == 1); + fail_unless (g_hash_table_lookup_extended (table, "a", NULL, + (gpointer) & val)); + fail_unless_equals_string ("b=c", val); + g_hash_table_unref (table); + gst_uri_unref (url); + + /* TEST "a&b=c" */ + url = gst_uri_from_string ("http://foo/var/file#a&b=c"); + table = gst_uri_get_media_fragment_table (url); + fail_unless (table); + fail_unless (g_hash_table_size (table) == 2); + fail_unless (g_hash_table_lookup_extended (table, "a", NULL, + (gpointer) & val)); + fail_unless (val == NULL); + fail_unless (g_hash_table_lookup_extended (table, "b", NULL, + (gpointer) & val)); + fail_unless_equals_string ("c", val); + g_hash_table_unref (table); + gst_uri_unref (url); + + /* TEST "%74=%6ept%3A%310" */ + url = gst_uri_from_string ("http://foo/var/file#%74=%6ept%3A%310"); + table = gst_uri_get_media_fragment_table (url); + fail_unless (table); + fail_unless (g_hash_table_size (table) == 1); + fail_unless (g_hash_table_lookup_extended (table, "t", NULL, + (gpointer) & val)); + fail_unless_equals_string ("npt:10", val); + g_hash_table_unref (table); + gst_uri_unref (url); +} + +GST_END_TEST; + static Suite * gst_uri_suite (void) { @@ -1003,6 +1077,7 @@ gst_uri_suite (void) tcase_add_test (tc_chain, test_url_equality); tcase_add_test (tc_chain, test_url_constructors); tcase_add_test (tc_chain, test_url_get_set); + tcase_add_test (tc_chain, test_url_get_media_fragment_table); return s; } |