[libgdata] Bug 594814 — Handle GeoRSS for YouTube videos



commit 8baf76c36876bd46c4ebe3399bf52d1775078293
Author: Philip Withnall <philip tecnocode co uk>
Date:   Thu Dec 16 12:19:52 2010 +0000

    Bug 594814 â?? Handle GeoRSS for YouTube videos
    
    Add support for getting and setting the latitude and longitude for YouTube
    videos. This adds the following new API:
     â?¢ GDataYouTubeVideo:latitude
     â?¢ GDataYouTubeVideo:longitude
     â?¢ gdata_youtube_video_get_coordinates()
     â?¢ gdata_youtube_video_set_coordinates()
    
    Closes: bgo#594814

 docs/reference/gdata-sections.txt            |    2 +
 gdata/gdata.symbols                          |    2 +
 gdata/services/youtube/gdata-youtube-video.c |  122 ++++++++++++++++++++++-
 gdata/services/youtube/gdata-youtube-video.h |    2 +
 gdata/tests/youtube.c                        |  135 +++++++++++++++++++++++++-
 5 files changed, 257 insertions(+), 6 deletions(-)
---
diff --git a/docs/reference/gdata-sections.txt b/docs/reference/gdata-sections.txt
index 911ee4c..34d0235 100644
--- a/docs/reference/gdata-sections.txt
+++ b/docs/reference/gdata-sections.txt
@@ -256,6 +256,8 @@ gdata_youtube_video_get_video_id
 gdata_youtube_video_get_video_id_from_uri
 gdata_youtube_video_get_aspect_ratio
 gdata_youtube_video_set_aspect_ratio
+gdata_youtube_video_get_coordinates
+gdata_youtube_video_set_coordinates
 <SUBSECTION Standard>
 GDATA_IS_YOUTUBE_VIDEO
 GDATA_IS_YOUTUBE_VIDEO_CLASS
diff --git a/gdata/gdata.symbols b/gdata/gdata.symbols
index 77a1070..1d05b77 100644
--- a/gdata/gdata.symbols
+++ b/gdata/gdata.symbols
@@ -860,3 +860,5 @@ gdata_contacts_contact_get_photo_async
 gdata_contacts_contact_get_photo_finish
 gdata_contacts_contact_set_photo_async
 gdata_contacts_contact_set_photo_finish
+gdata_youtube_video_get_coordinates
+gdata_youtube_video_set_coordinates
diff --git a/gdata/services/youtube/gdata-youtube-video.c b/gdata/services/youtube/gdata-youtube-video.c
index 5bc7929..a381195 100644
--- a/gdata/services/youtube/gdata-youtube-video.c
+++ b/gdata/services/youtube/gdata-youtube-video.c
@@ -78,6 +78,7 @@
 #include "gdata-types.h"
 #include "gdata-youtube-control.h"
 #include "gdata-youtube-enums.h"
+#include "georss/gdata-georss-where.h"
 
 static GObject *gdata_youtube_video_constructor (GType type, guint n_construct_params, GObjectConstructParam *construct_params);
 static void gdata_youtube_video_dispose (GObject *object);
@@ -107,6 +108,9 @@ struct _GDataYouTubeVideoPrivate {
 	/* media:group */
 	GDataMediaGroup *media_group; /* is actually a GDataYouTubeGroup */
 
+	/* georss:where */
+	GDataGeoRSSWhere *georss_where;
+
 	/* Other properties */
 	GDataYouTubeControl *youtube_control;
 	gint64 recorded;
@@ -132,7 +136,9 @@ enum {
 	PROP_IS_DRAFT,
 	PROP_STATE,
 	PROP_RECORDED,
-	PROP_ASPECT_RATIO
+	PROP_ASPECT_RATIO,
+	PROP_LATITUDE,
+	PROP_LONGITUDE
 };
 
 G_DEFINE_TYPE (GDataYouTubeVideo, gdata_youtube_video, GDATA_TYPE_ENTRY)
@@ -445,6 +451,40 @@ gdata_youtube_video_class_init (GDataYouTubeVideoClass *klass)
 	                                                      "Aspect Ratio", "The aspect ratio of the video.",
 	                                                      NULL,
 	                                                      G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+	/**
+	 * GDataYouTubeVideo:latitude:
+	 *
+	 * The location as a latitude coordinate associated with this video. Valid latitudes range from <code class="literal">-90.0</code>
+	 * to <code class="literal">90.0</code> inclusive.
+	 *
+	 * For more information, see the <ulink type="http" url="http://code.google.com/apis/youtube/2.0/reference.html#GeoRSS_elements_reference";>
+	 * GeoRSS specification</ulink>.
+	 *
+	 * Since: 0.8.0
+	 **/
+	g_object_class_install_property (gobject_class, PROP_LATITUDE,
+	                                 g_param_spec_double ("latitude",
+	                                                      "Latitude", "The location as a latitude coordinate associated with this video.",
+	                                                      -90.0, 90.0, 0.0,
+	                                                      G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+	/**
+	 * GDataYouTubeVideo:longitude:
+	 *
+	 * The location as a longitude coordinate associated with this video. Valid longitudes range from <code class="literal">-180.0</code>
+	 * to <code class="literal">180.0</code> inclusive.
+	 *
+	 * For more information, see the <ulink type="http" url="http://code.google.com/apis/youtube/2.0/reference.html#GeoRSS_elements_reference";>
+	 * GeoRSS specification</ulink>.
+	 *
+	 * Since: 0.8.0
+	 **/
+	g_object_class_install_property (gobject_class, PROP_LONGITUDE,
+	                                 g_param_spec_double ("longitude",
+	                                                      "Longitude", "The location as a longitude coordinate associated with this video.",
+	                                                      -180.0, 180.0, 0.0,
+	                                                      G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 }
 
 static void
@@ -461,6 +501,7 @@ gdata_youtube_video_init (GDataYouTubeVideo *self)
 	self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, GDATA_TYPE_YOUTUBE_VIDEO, GDataYouTubeVideoPrivate);
 	self->priv->recorded = -1;
 	self->priv->access_controls = g_hash_table_new_full (g_str_hash, g_str_equal, (GDestroyNotify) g_free, NULL);
+	self->priv->georss_where = g_object_new (GDATA_TYPE_GEORSS_WHERE, NULL);
 
 	/* The video's title is duplicated between atom:title and media:group/media:title, so listen for change notifications on atom:title
 	 * and propagate them to media:group/media:title accordingly. Since the media group isn't publically accessible, we don't need to
@@ -495,6 +536,10 @@ gdata_youtube_video_dispose (GObject *object)
 		g_object_unref (priv->media_group);
 	priv->media_group = NULL;
 
+	if (priv->georss_where != NULL)
+		g_object_unref (priv->georss_where);
+	priv->georss_where = NULL;
+
 	if (priv->youtube_control != NULL)
 		g_object_unref (priv->youtube_control);
 	priv->youtube_control = NULL;
@@ -581,6 +626,12 @@ gdata_youtube_video_get_property (GObject *object, guint property_id, GValue *va
 		case PROP_ASPECT_RATIO:
 			g_value_set_string (value, gdata_youtube_group_get_aspect_ratio (GDATA_YOUTUBE_GROUP (priv->media_group)));
 			break;
+		case PROP_LATITUDE:
+			g_value_set_double (value, gdata_georss_where_get_latitude (priv->georss_where));
+			break;
+		case PROP_LONGITUDE:
+			g_value_set_double (value, gdata_georss_where_get_longitude (priv->georss_where));
+			break;
 		default:
 			/* We don't have any other property... */
 			G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
@@ -618,6 +669,14 @@ gdata_youtube_video_set_property (GObject *object, guint property_id, const GVal
 		case PROP_ASPECT_RATIO:
 			gdata_youtube_video_set_aspect_ratio (self, g_value_get_string (value));
 			break;
+		case PROP_LATITUDE:
+			gdata_youtube_video_set_coordinates (self, g_value_get_double (value),
+			                                     gdata_georss_where_get_longitude (self->priv->georss_where));
+			break;
+		case PROP_LONGITUDE:
+			gdata_youtube_video_set_coordinates (self, gdata_georss_where_get_latitude (self->priv->georss_where),
+			                                     g_value_get_double (value));
+			break;
 		default:
 			/* We don't have any other property... */
 			G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
@@ -639,6 +698,10 @@ parse_xml (GDataParsable *parsable, xmlDoc *doc, xmlNode *node, gpointer user_da
 	           gdata_parser_object_from_element (node, "control", P_REQUIRED | P_NO_DUPES, GDATA_TYPE_YOUTUBE_CONTROL,
 	                                             &(self->priv->youtube_control), &success, error) == TRUE) {
 		return success;
+	} else if (gdata_parser_is_namespace (node, "http://www.georss.org/georss";) == TRUE &&
+	           gdata_parser_object_from_element (node, "where", P_REQUIRED, GDATA_TYPE_GEORSS_WHERE,
+	                                             &(self->priv->georss_where), &success, error) == TRUE) {
+		return success;
 	} else if (gdata_parser_is_namespace (node, "http://gdata.youtube.com/schemas/2007";) == TRUE) {
 		if (gdata_parser_string_from_element (node, "location", P_NONE, &(self->priv->location), &success, error) == TRUE) {
 			return success;
@@ -818,9 +881,11 @@ get_xml (GDataParsable *parsable, GString *xml_string)
 	/* app:control */
 	_gdata_parsable_get_xml (GDATA_PARSABLE (priv->youtube_control), xml_string, FALSE);
 
-	/* TODO:
-	 * - georss:where
-	 */
+	/* georss:where */
+	if (priv->georss_where != NULL && gdata_georss_where_get_latitude (priv->georss_where) != G_MAXDOUBLE &&
+	    gdata_georss_where_get_longitude (priv->georss_where) != G_MAXDOUBLE) {
+		_gdata_parsable_get_xml (GDATA_PARSABLE (priv->georss_where), xml_string, FALSE);
+	}
 }
 
 static void
@@ -833,9 +898,10 @@ get_namespaces (GDataParsable *parsable, GHashTable *namespaces)
 
 	g_hash_table_insert (namespaces, (gchar*) "yt", (gchar*) "http://gdata.youtube.com/schemas/2007";);
 
-	/* Add the media:group and app:control namespaces */
+	/* Add the media:group, app:control and georss:where namespaces */
 	GDATA_PARSABLE_GET_CLASS (priv->media_group)->get_namespaces (GDATA_PARSABLE (priv->media_group), namespaces);
 	GDATA_PARSABLE_GET_CLASS (priv->youtube_control)->get_namespaces (GDATA_PARSABLE (priv->youtube_control), namespaces);
+	GDATA_PARSABLE_GET_CLASS (priv->georss_where)->get_namespaces (GDATA_PARSABLE (priv->georss_where), namespaces);
 }
 
 static gchar *
@@ -1463,3 +1529,49 @@ gdata_youtube_video_set_aspect_ratio (GDataYouTubeVideo *self, const gchar *aspe
 	gdata_youtube_group_set_aspect_ratio (GDATA_YOUTUBE_GROUP (self->priv->media_group), aspect_ratio);
 	g_object_notify (G_OBJECT (self), "aspect-ratio");
 }
+
+/**
+ * gdata_youtube_video_get_coordinates:
+ * @self: a #GDataYouTubeVideo
+ * @latitude: (out caller-allocates) (allow-none): return location for the latitude, or %NULL
+ * @longitude: (out caller-allocates) (allow-none): return location for the longitude, or %NULL
+ *
+ * Gets the #GDataYouTubeVideo:latitude and #GDataYouTubeVideo:longitude properties, setting the out parameters to them. If either latitude or
+ * longitude is %NULL, that parameter will not be set. If the coordinates are unset, @latitude and @longitude will be set to %G_MAXDOUBLE.
+ *
+ * Since: 0.8.0
+ **/
+void
+gdata_youtube_video_get_coordinates (GDataYouTubeVideo *self, gdouble *latitude, gdouble *longitude)
+{
+	g_return_if_fail (GDATA_IS_YOUTUBE_VIDEO (self));
+
+	if (latitude != NULL)
+		*latitude = gdata_georss_where_get_latitude (self->priv->georss_where);
+	if (longitude != NULL)
+		*longitude = gdata_georss_where_get_longitude (self->priv->georss_where);
+}
+
+/**
+ * gdata_youtube_video_set_coordinates:
+ * @self: a #GDataYouTubeVideo
+ * @latitude: the video's new latitude coordinate, or %G_MAXDOUBLE
+ * @longitude: the video's new longitude coordinate, or %G_MAXDOUBLE
+ *
+ * Sets the #GDataYouTubeVideo:latitude and #GDataYouTubeVideo:longitude properties to @latitude and @longitude respectively.
+ *
+ * Since: 0.8.0
+ **/
+void
+gdata_youtube_video_set_coordinates (GDataYouTubeVideo *self, gdouble latitude, gdouble longitude)
+{
+	g_return_if_fail (GDATA_IS_YOUTUBE_VIDEO (self));
+
+	gdata_georss_where_set_latitude (self->priv->georss_where, latitude);
+	gdata_georss_where_set_longitude (self->priv->georss_where, longitude);
+
+	g_object_freeze_notify (G_OBJECT (self));
+	g_object_notify (G_OBJECT (self), "latitude");
+	g_object_notify (G_OBJECT (self), "longitude");
+	g_object_thaw_notify (G_OBJECT (self));
+}
diff --git a/gdata/services/youtube/gdata-youtube-video.h b/gdata/services/youtube/gdata-youtube-video.h
index cb29a55..6fbce5e 100644
--- a/gdata/services/youtube/gdata-youtube-video.h
+++ b/gdata/services/youtube/gdata-youtube-video.h
@@ -179,6 +179,8 @@ gint64 gdata_youtube_video_get_recorded (GDataYouTubeVideo *self);
 void gdata_youtube_video_set_recorded (GDataYouTubeVideo *self, gint64 recorded);
 const gchar *gdata_youtube_video_get_aspect_ratio (GDataYouTubeVideo *self) G_GNUC_PURE;
 void gdata_youtube_video_set_aspect_ratio (GDataYouTubeVideo *self, const gchar *aspect_ratio);
+void gdata_youtube_video_get_coordinates (GDataYouTubeVideo *self, gdouble *latitude, gdouble *longitude);
+void gdata_youtube_video_set_coordinates (GDataYouTubeVideo *self, gdouble latitude, gdouble longitude);
 
 gchar *gdata_youtube_video_get_video_id_from_uri (const gchar *video_uri) G_GNUC_WARN_UNUSED_RESULT G_GNUC_MALLOC;
 
diff --git a/gdata/tests/youtube.c b/gdata/tests/youtube.c
index d94c4bf..2056fec 100644
--- a/gdata/tests/youtube.c
+++ b/gdata/tests/youtube.c
@@ -542,6 +542,8 @@ test_parsing_yt_recorded (void)
 				"xmlns:gd='http://schemas.google.com/g/2005' "
 				"xmlns:yt='http://gdata.youtube.com/schemas/2007' "
 				"xmlns:app='http://www.w3.org/2007/app' "
+				"xmlns:georss='http://www.georss.org/georss' "
+				"xmlns:gml='http://www.opengis.net/gml' "
 				"gd:etag='W/\"CEMFSX47eCp7ImA9WxVUGEw.\"'>"
 				"<title type='text'>Judas Priest - Painkiller</title>"
 				"<id>tag:youtube.com,2008:video:JAagedeKdcQ</id>"
@@ -628,6 +630,8 @@ test_parsing_yt_access_control (void)
 				"xmlns:gd='http://schemas.google.com/g/2005' "
 				"xmlns:yt='http://gdata.youtube.com/schemas/2007' "
 				"xmlns:app='http://www.w3.org/2007/app' "
+				"xmlns:georss='http://www.georss.org/georss' "
+				"xmlns:gml='http://www.opengis.net/gml' "
 				"gd:etag='W/\"CEMFSX47eCp7ImA9WxVUGEw.\"'>"
 				"<title type='text'>Judas Priest - Painkiller</title>"
 				"<id>tag:youtube.com,2008:video:JAagedeKdcQ</id>"
@@ -764,6 +768,133 @@ test_parsing_comments_feed_link (void)
 }*/
 
 static void
+test_parsing_georss_where (void)
+{
+	GDataYouTubeVideo *video;
+	gdouble latitude, longitude;
+	GError *error = NULL;
+
+	video = GDATA_YOUTUBE_VIDEO (gdata_parsable_new_from_xml (GDATA_TYPE_YOUTUBE_VIDEO,
+		"<entry xmlns='http://www.w3.org/2005/Atom' "
+		       "xmlns:media='http://search.yahoo.com/mrss/' "
+		       "xmlns:yt='http://gdata.youtube.com/schemas/2007' "
+		       "xmlns:gd='http://schemas.google.com/g/2005' "
+		       "xmlns:georss='http://www.georss.org/georss' "
+		       "xmlns:gml='http://www.opengis.net/gml'>"
+			"<id>tag:youtube.com,2008:video:JAagedeKdcQ</id>"
+			"<published>2006-05-16T14:06:37.000Z</published>"
+			"<updated>2009-03-23T12:46:58.000Z</updated>"
+			"<category scheme='http://schemas.google.com/g/2005#kind' term='http://gdata.youtube.com/schemas/2007#video'/>"
+			"<title>Some video somewhere</title>"
+			"<link rel='http://www.iana.org/assignments/relation/alternate' type='text/html' href='http://www.youtube.com/watch?v=JAagedeKdcQ'/>"
+			"<link rel='http://www.iana.org/assignments/relation/self' type='application/atom+xml' href='http://gdata.youtube.com/feeds/api/videos/JAagedeKdcQ?client=ytapi-google-jsdemo'/>"
+			"<author>"
+				"<name>Foo</name>"
+				"<uri>http://gdata.youtube.com/feeds/api/users/Foo</uri>"
+			"</author>"
+			"<media:group>"
+				"<media:title type='plain'>Some video somewhere</media:title>"
+				"<media:credit role='uploader' scheme='urn:youtube'>Foo</media:credit>"
+				"<media:category label='Music' scheme='http://gdata.youtube.com/schemas/2007/categories.cat'>Music</media:category>"
+			"</media:group>"
+			"<georss:where>"
+				"<gml:Point>"
+					"<gml:pos>41.14556884765625 -8.63525390625</gml:pos>"
+				"</gml:Point>"
+			"</georss:where>"
+		"</entry>", -1, &error));
+	g_assert_no_error (error);
+	g_assert (GDATA_IS_YOUTUBE_VIDEO (video));
+	g_clear_error (&error);
+
+	/* Test the coordinates */
+	gdata_youtube_video_get_coordinates (video, &latitude, &longitude);
+	g_assert_cmpfloat (latitude, ==, 41.14556884765625);
+	g_assert_cmpfloat (longitude, ==, -8.63525390625);
+
+	/* Update them and see if they're set OK and the XML's written out OK */
+	gdata_youtube_video_set_coordinates (video, 5.5, 6.5);
+
+	g_object_get (G_OBJECT (video),
+	              "latitude", &latitude,
+	              "longitude", &longitude,
+	              NULL);
+
+	g_assert_cmpfloat (latitude, ==, 5.5);
+	g_assert_cmpfloat (longitude, ==, 6.5);
+
+	/* Check the XML */
+	gdata_test_assert_xml (video,
+		"<?xml version='1.0' encoding='UTF-8'?>"
+		"<entry xmlns='http://www.w3.org/2005/Atom' "
+		       "xmlns:app='http://www.w3.org/2007/app' "
+		       "xmlns:media='http://search.yahoo.com/mrss/' "
+		       "xmlns:yt='http://gdata.youtube.com/schemas/2007' "
+		       "xmlns:gd='http://schemas.google.com/g/2005' "
+		       "xmlns:georss='http://www.georss.org/georss' "
+		       "xmlns:gml='http://www.opengis.net/gml'>"
+			"<title type='text'>Some video somewhere</title>"
+			"<id>tag:youtube.com,2008:video:JAagedeKdcQ</id>"
+			"<updated>2009-03-23T12:46:58Z</updated>"
+			"<published>2006-05-16T14:06:37Z</published>"
+			"<category term='http://gdata.youtube.com/schemas/2007#video' scheme='http://schemas.google.com/g/2005#kind'/>"
+			"<link href='http://www.youtube.com/watch?v=JAagedeKdcQ' rel='http://www.iana.org/assignments/relation/alternate' type='text/html'/>"
+			"<link href='http://gdata.youtube.com/feeds/api/videos/JAagedeKdcQ?client=ytapi-google-jsdemo' rel='http://www.iana.org/assignments/relation/self' type='application/atom+xml'/>"
+			"<author>"
+				"<name>Foo</name>"
+				"<uri>http://gdata.youtube.com/feeds/api/users/Foo</uri>"
+			"</author>"
+			"<media:group>"
+				"<media:category scheme='http://gdata.youtube.com/schemas/2007/categories.cat' label='Music'>Music</media:category>"
+				"<media:title type='plain'>Some video somewhere</media:title>"
+			"</media:group>"
+			"<app:control><app:draft>no</app:draft></app:control>"
+			"<georss:where>"
+				"<gml:Point>"
+					"<gml:pos>5.5 6.5</gml:pos>"
+				"</gml:Point>"
+			"</georss:where>"
+		"</entry>");
+
+	/* Unset the properties and ensure they're removed from the XML */
+	gdata_youtube_video_set_coordinates (video, G_MAXDOUBLE, G_MAXDOUBLE);
+
+	gdata_youtube_video_get_coordinates (video, &latitude, &longitude);
+	g_assert_cmpfloat (latitude, ==, G_MAXDOUBLE);
+	g_assert_cmpfloat (longitude, ==, G_MAXDOUBLE);
+
+	/* Check the XML */
+	gdata_test_assert_xml (video,
+		"<?xml version='1.0' encoding='UTF-8'?>"
+		"<entry xmlns='http://www.w3.org/2005/Atom' "
+		       "xmlns:app='http://www.w3.org/2007/app' "
+		       "xmlns:media='http://search.yahoo.com/mrss/' "
+		       "xmlns:yt='http://gdata.youtube.com/schemas/2007' "
+		       "xmlns:gd='http://schemas.google.com/g/2005' "
+		       "xmlns:georss='http://www.georss.org/georss' "
+		       "xmlns:gml='http://www.opengis.net/gml'>"
+			"<title type='text'>Some video somewhere</title>"
+			"<id>tag:youtube.com,2008:video:JAagedeKdcQ</id>"
+			"<updated>2009-03-23T12:46:58Z</updated>"
+			"<published>2006-05-16T14:06:37Z</published>"
+			"<category term='http://gdata.youtube.com/schemas/2007#video' scheme='http://schemas.google.com/g/2005#kind'/>"
+			"<link href='http://www.youtube.com/watch?v=JAagedeKdcQ' rel='http://www.iana.org/assignments/relation/alternate' type='text/html'/>"
+			"<link href='http://gdata.youtube.com/feeds/api/videos/JAagedeKdcQ?client=ytapi-google-jsdemo' rel='http://www.iana.org/assignments/relation/self' type='application/atom+xml'/>"
+			"<author>"
+				"<name>Foo</name>"
+				"<uri>http://gdata.youtube.com/feeds/api/users/Foo</uri>"
+			"</author>"
+			"<media:group>"
+				"<media:category scheme='http://gdata.youtube.com/schemas/2007/categories.cat' label='Music'>Music</media:category>"
+				"<media:title type='plain'>Some video somewhere</media:title>"
+			"</media:group>"
+			"<app:control><app:draft>no</app:draft></app:control>"
+		"</entry>");
+
+	g_object_unref (video);
+}
+
+static void
 test_video_escaping (void)
 {
 	GDataYouTubeVideo *video;
@@ -781,7 +912,8 @@ test_video_escaping (void)
 	                 "<?xml version='1.0' encoding='UTF-8'?>"
 	                 "<entry xmlns='http://www.w3.org/2005/Atom' xmlns:media='http://search.yahoo.com/mrss/' "
 	                        "xmlns:gd='http://schemas.google.com/g/2005' "
-	                        "xmlns:yt='http://gdata.youtube.com/schemas/2007' xmlns:app='http://www.w3.org/2007/app'>"
+	                        "xmlns:yt='http://gdata.youtube.com/schemas/2007' xmlns:app='http://www.w3.org/2007/app' "
+	                        "xmlns:georss='http://www.georss.org/georss' xmlns:gml='http://www.opengis.net/gml'>"
 				"<title type='text'></title>"
 				"<category term='http://gdata.youtube.com/schemas/2007#video' scheme='http://schemas.google.com/g/2005#kind'/>"
 				"<media:group>"
@@ -1264,6 +1396,7 @@ main (int argc, char *argv[])
 	g_test_add_func ("/youtube/parsing/yt:accessControl", test_parsing_yt_access_control);
 	g_test_add_func ("/youtube/parsing/yt:category", test_parsing_yt_category);
 	g_test_add_func ("/youtube/parsing/video_id_from_uri", test_parsing_video_id_from_uri);
+	g_test_add_func ("/youtube/parsing/georss:where", test_parsing_georss_where);
 
 	g_test_add_func ("/youtube/video/escaping", test_video_escaping);
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]