[libgdata] [tests] Rearchitected the test suites to not use global variables



commit dfff80454d66075b0ce1dbbd85b823ebe3df9625
Author: Philip Withnall <philip tecnocode co uk>
Date:   Sat Jul 4 18:09:39 2009 +0100

    [tests] Rearchitected the test suites to not use global variables
    
    The global main_loop and service variables are now declared in the scope of
    the main function, and passed to the appropriate test cases. Individual test
    cases can now be run without needing to also run the authentication test.

 gdata/tests/calendar.c  |  116 +++++++++++++++++++++--------------------------
 gdata/tests/contacts.c  |   76 ++++++++++++++-----------------
 gdata/tests/picasaweb.c |   71 +++++++++++++++--------------
 gdata/tests/youtube.c   |   78 +++++++++++++++----------------
 4 files changed, 160 insertions(+), 181 deletions(-)
---
diff --git a/gdata/tests/calendar.c b/gdata/tests/calendar.c
index 4ac976d..98c2f77 100644
--- a/gdata/tests/calendar.c
+++ b/gdata/tests/calendar.c
@@ -24,12 +24,8 @@
 #include "gdata.h"
 #include "common.h"
 
-/* TODO: probably a better way to do this; some kind of data associated with the test suite? */
-static GDataService *service = NULL;
-static GMainLoop *main_loop = NULL;
-
 static GDataCalendarCalendar *
-get_calendar (GError **error)
+get_calendar (GDataService *service, GError **error)
 {
 	GDataFeed *calendar_feed;
 	GDataCalendarCalendar *calendar;
@@ -56,6 +52,7 @@ static void
 test_authentication (void)
 {
 	gboolean retval;
+	GDataService *service;
 	GError *error = NULL;
 
 	/* Create a service */
@@ -78,7 +75,7 @@ test_authentication (void)
 }
 
 static void
-test_authentication_async_cb (GDataService *service, GAsyncResult *async_result, gpointer user_data)
+test_authentication_async_cb (GDataService *service, GAsyncResult *async_result, GMainLoop *main_loop)
 {
 	gboolean retval;
 	GError *error = NULL;
@@ -99,27 +96,29 @@ test_authentication_async_cb (GDataService *service, GAsyncResult *async_result,
 static void
 test_authentication_async (void)
 {
+	GDataService *service;
+	GMainLoop *main_loop = g_main_loop_new (NULL, TRUE);
+
 	/* Create a service */
 	service = GDATA_SERVICE (gdata_calendar_service_new (CLIENT_ID));
 
 	g_assert (service != NULL);
 	g_assert (GDATA_IS_SERVICE (service));
 
-	gdata_service_authenticate_async (service, USERNAME, PASSWORD, NULL, (GAsyncReadyCallback) test_authentication_async_cb, NULL);
+	gdata_service_authenticate_async (service, USERNAME, PASSWORD, NULL, (GAsyncReadyCallback) test_authentication_async_cb, main_loop);
 
-	main_loop = g_main_loop_new (NULL, TRUE);
 	g_main_loop_run (main_loop);
 	g_main_loop_unref (main_loop);
+
+	g_object_unref (service);
 }
 
 static void
-test_query_all_calendars (void)
+test_query_all_calendars (GDataService *service)
 {
 	GDataFeed *feed;
 	GError *error = NULL;
 
-	g_assert (service != NULL);
-
 	feed = gdata_calendar_service_query_all_calendars (GDATA_CALENDAR_SERVICE (service), NULL, NULL, NULL, NULL, &error);
 	g_assert_no_error (error);
 	g_assert (GDATA_IS_CALENDAR_FEED (feed));
@@ -131,7 +130,7 @@ test_query_all_calendars (void)
 }
 
 static void
-test_query_all_calendars_async_cb (GDataService *service, GAsyncResult *async_result, gpointer user_data)
+test_query_all_calendars_async_cb (GDataService *service, GAsyncResult *async_result, GMainLoop *main_loop)
 {
 	GDataFeed *feed;
 	GError *error = NULL;
@@ -148,26 +147,23 @@ test_query_all_calendars_async_cb (GDataService *service, GAsyncResult *async_re
 }
 
 static void
-test_query_all_calendars_async (void)
+test_query_all_calendars_async (GDataService *service)
 {
-	g_assert (service != NULL);
+	GMainLoop *main_loop = g_main_loop_new (NULL, TRUE);
 
 	gdata_calendar_service_query_all_calendars_async (GDATA_CALENDAR_SERVICE (service), NULL, NULL, NULL,
-							  NULL, (GAsyncReadyCallback) test_query_all_calendars_async_cb, NULL);
+							  NULL, (GAsyncReadyCallback) test_query_all_calendars_async_cb, main_loop);
 
-	main_loop = g_main_loop_new (NULL, TRUE);
 	g_main_loop_run (main_loop);
 	g_main_loop_unref (main_loop);
 }
 
 static void
-test_query_own_calendars (void)
+test_query_own_calendars (GDataService *service)
 {
 	GDataFeed *feed;
 	GError *error = NULL;
 
-	g_assert (service != NULL);
-
 	feed = gdata_calendar_service_query_own_calendars (GDATA_CALENDAR_SERVICE (service), NULL, NULL, NULL, NULL, &error);
 	g_assert_no_error (error);
 	g_assert (GDATA_IS_CALENDAR_FEED (feed));
@@ -179,7 +175,7 @@ test_query_own_calendars (void)
 }
 
 static void
-test_query_own_calendars_async_cb (GDataService *service, GAsyncResult *async_result, gpointer user_data)
+test_query_own_calendars_async_cb (GDataService *service, GAsyncResult *async_result, GMainLoop *main_loop)
 {
 	GDataFeed *feed;
 	GError *error = NULL;
@@ -196,28 +192,25 @@ test_query_own_calendars_async_cb (GDataService *service, GAsyncResult *async_re
 }
 
 static void
-test_query_own_calendars_async (void)
+test_query_own_calendars_async (GDataService *service)
 {
-	g_assert (service != NULL);
+	GMainLoop *main_loop = g_main_loop_new (NULL, TRUE);
 
 	gdata_calendar_service_query_own_calendars_async (GDATA_CALENDAR_SERVICE (service), NULL, NULL, NULL,
-							  NULL, (GAsyncReadyCallback) test_query_own_calendars_async_cb, NULL);
+							  NULL, (GAsyncReadyCallback) test_query_own_calendars_async_cb, main_loop);
 
-	main_loop = g_main_loop_new (NULL, TRUE);
 	g_main_loop_run (main_loop);
 	g_main_loop_unref (main_loop);
 }
 
 static void
-test_query_events (void)
+test_query_events (GDataService *service)
 {
 	GDataFeed *feed;
 	GDataCalendarCalendar *calendar;
 	GError *error = NULL;
 
-	g_assert (service != NULL);
-
-	calendar = get_calendar (&error);
+	calendar = get_calendar (service, &error);
 
 	/* Get the entry feed */
 	feed = gdata_calendar_service_query_events (GDATA_CALENDAR_SERVICE (service), calendar, NULL, NULL, NULL, NULL, &error);
@@ -232,7 +225,7 @@ test_query_events (void)
 }
 
 static void
-test_insert_simple (void)
+test_insert_simple (GDataService *service)
 {
 	GDataCalendarEvent *event, *new_event;
 	GDataCategory *category;
@@ -243,8 +236,6 @@ test_insert_simple (void)
 	gchar *xml;
 	GError *error = NULL;
 
-	g_assert (service != NULL);
-
 	event = gdata_calendar_event_new (NULL);
 
 	gdata_entry_set_title (GDATA_ENTRY (event), "Tennis with Beth");
@@ -303,7 +294,7 @@ test_insert_simple (void)
 }
 
 static void
-test_xml_dates (void)
+test_xml_dates (GDataService *service)
 {
 	GDataCalendarEvent *event;
 	GList *times, *i;
@@ -396,7 +387,7 @@ test_xml_dates (void)
 }
 
 static void
-test_xml_recurrence (void)
+test_xml_recurrence (GDataService *service)
 {
 	GDataCalendarEvent *event;
 	GError *error = NULL;
@@ -458,7 +449,7 @@ test_xml_recurrence (void)
 }
 
 static void
-test_query_uri (void)
+test_query_uri (GDataService *service)
 {
 	GTimeVal time_val, time_val2;
 	gchar *query_uri;
@@ -529,15 +520,13 @@ test_query_uri (void)
 }
 
 static void
-test_acls_get_rules (void)
+test_acls_get_rules (GDataService *service)
 {
 	GDataFeed *feed;
 	GDataCalendarCalendar *calendar;
 	GError *error = NULL;
 
-	g_assert (service != NULL);
-
-	calendar = get_calendar (&error);
+	calendar = get_calendar (service, &error);
 
 	/* Get the rules */
 	feed = gdata_access_handler_get_rules (GDATA_ACCESS_HANDLER (calendar), service, NULL, NULL, NULL, &error);
@@ -552,7 +541,7 @@ test_acls_get_rules (void)
 }
 
 static void
-test_acls_insert_rule (void)
+test_acls_insert_rule (GDataService *service)
 {
 	GDataCalendarCalendar *calendar;
 	GDataAccessRule *rule, *new_rule;
@@ -562,9 +551,7 @@ test_acls_insert_rule (void)
 	gchar *xml;
 	GError *error = NULL;
 
-	g_assert (service != NULL);
-
-	calendar = get_calendar (&error);
+	calendar = get_calendar (service, &error);
 
 	rule = gdata_access_rule_new (NULL);
 
@@ -617,7 +604,7 @@ test_acls_insert_rule (void)
 }
 
 static void
-test_acls_update_rule (void)
+test_acls_update_rule (GDataService *service)
 {
 	GDataFeed *feed;
 	GDataCalendarCalendar *calendar;
@@ -626,9 +613,7 @@ test_acls_update_rule (void)
 	GList *rules;
 	GError *error = NULL;
 
-	g_assert (service != NULL);
-
-	calendar = get_calendar (&error);
+	calendar = get_calendar (service, &error);
 
 	/* Get a rule */
 	feed = gdata_access_handler_get_rules (GDATA_ACCESS_HANDLER (calendar), service, NULL, NULL, NULL, &error);
@@ -671,7 +656,7 @@ test_acls_update_rule (void)
 }
 
 static void
-test_acls_delete_rule (void)
+test_acls_delete_rule (GDataService *service)
 {
 	GDataFeed *feed;
 	GDataCalendarCalendar *calendar;
@@ -680,9 +665,7 @@ test_acls_delete_rule (void)
 	gboolean success;
 	GError *error = NULL;
 
-	g_assert (service != NULL);
-
-	calendar = get_calendar (&error);
+	calendar = get_calendar (service, &error);
 
 	/* Get a rule */
 	feed = gdata_access_handler_get_rules (GDATA_ACCESS_HANDLER (calendar), service, NULL, NULL, NULL, &error);
@@ -718,37 +701,40 @@ int
 main (int argc, char *argv[])
 {
 	gint retval;
+	GDataService *service;
 
 	g_type_init ();
 	g_thread_init (NULL);
 	g_test_init (&argc, &argv, NULL);
 	g_test_bug_base ("http://bugzilla.gnome.org/show_bug.cgi?id=";);
 
+	service = GDATA_SERVICE (gdata_calendar_service_new (CLIENT_ID));
+	gdata_service_authenticate (service, USERNAME, PASSWORD, NULL, NULL);
+
 	g_test_add_func ("/calendar/authentication", test_authentication);
 	if (g_test_thorough () == TRUE)
 		g_test_add_func ("/calendar/authentication_async", test_authentication_async);
-	g_test_add_func ("/calendar/query/all_calendars", test_query_all_calendars);
+	g_test_add_data_func ("/calendar/query/all_calendars", service, test_query_all_calendars);
 	if (g_test_thorough () == TRUE)
-		g_test_add_func ("/calendar/query/all_calendars_async", test_query_all_calendars_async);
-	g_test_add_func ("/calendar/query/own_calendars", test_query_own_calendars);
+		g_test_add_data_func ("/calendar/query/all_calendars_async", service, test_query_all_calendars_async);
+	g_test_add_data_func ("/calendar/query/own_calendars", service, test_query_own_calendars);
 	if (g_test_thorough () == TRUE)
-		g_test_add_func ("/calendar/query/own_calendars_async", test_query_own_calendars_async);
-	g_test_add_func ("/calendar/query/events", test_query_events);
+		g_test_add_data_func ("/calendar/query/own_calendars_async", service, test_query_own_calendars_async);
+	g_test_add_data_func ("/calendar/query/events", service, test_query_events);
 	if (g_test_slow () == TRUE)
-		g_test_add_func ("/calendar/insert/simple", test_insert_simple);
-	g_test_add_func ("/calendar/xml/dates", test_xml_dates);
-	g_test_add_func ("/calendar/xml/recurrence", test_xml_recurrence);
-	g_test_add_func ("/calendar/query/uri", test_query_uri);
-	g_test_add_func ("/calendar/acls/get_rules", test_acls_get_rules);
+		g_test_add_data_func ("/calendar/insert/simple", service, test_insert_simple);
+	g_test_add_data_func ("/calendar/xml/dates", service, test_xml_dates);
+	g_test_add_data_func ("/calendar/xml/recurrence", service, test_xml_recurrence);
+	g_test_add_data_func ("/calendar/query/uri", service, test_query_uri);
+	g_test_add_data_func ("/calendar/acls/get_rules", service, test_acls_get_rules);
 	if (g_test_slow () == TRUE) {
-		g_test_add_func ("/calendar/acls/insert_rule", test_acls_insert_rule);
-		g_test_add_func ("/calendar/acls/update_rule", test_acls_update_rule);
-		g_test_add_func ("/calendar/acls/delete_rule", test_acls_delete_rule);
+		g_test_add_data_func ("/calendar/acls/insert_rule", service, test_acls_insert_rule);
+		g_test_add_data_func ("/calendar/acls/update_rule", service, test_acls_update_rule);
+		g_test_add_data_func ("/calendar/acls/delete_rule", service, test_acls_delete_rule);
 	}
 
 	retval = g_test_run ();
-	if (service != NULL)
-		g_object_unref (service);
+	g_object_unref (service);
 
 	return retval;
 }
diff --git a/gdata/tests/contacts.c b/gdata/tests/contacts.c
index 34e8115..5cee6f0 100644
--- a/gdata/tests/contacts.c
+++ b/gdata/tests/contacts.c
@@ -23,20 +23,14 @@
 #include "gdata.h"
 #include "common.h"
 
-/* TODO: probably a better way to do this; some kind of data associated with the test suite? */
-static GDataService *service = NULL;
-static GMainLoop *main_loop = NULL;
-
 static GDataContactsContact *
-get_contact (void)
+get_contact (GDataService *service)
 {
 	GDataFeed *feed;
 	GDataEntry *entry;
 	GList *entries;
 	GError *error = NULL;
 
-	g_assert (service != NULL);
-
 	feed = gdata_contacts_service_query_contacts (GDATA_CONTACTS_SERVICE (service), NULL, NULL, NULL, NULL, &error);
 	g_assert_no_error (error);
 	g_assert (GDATA_IS_FEED (feed));
@@ -57,6 +51,7 @@ static void
 test_authentication (void)
 {
 	gboolean retval;
+	GDataService *service;
 	GError *error = NULL;
 
 	/* Create a service */
@@ -76,16 +71,16 @@ test_authentication (void)
 	g_assert (gdata_service_is_authenticated (service) == TRUE);
 	g_assert_cmpstr (gdata_service_get_username (service), ==, USERNAME);
 	g_assert_cmpstr (gdata_service_get_password (service), ==, PASSWORD);
+
+	g_object_unref (service);
 }
 
 static void
-test_query_all_contacts (void)
+test_query_all_contacts (GDataService *service)
 {
 	GDataFeed *feed;
 	GError *error = NULL;
 
-	g_assert (service != NULL);
-
 	feed = gdata_contacts_service_query_contacts (GDATA_CONTACTS_SERVICE (service), NULL, NULL, NULL, NULL, &error);
 	g_assert_no_error (error);
 	g_assert (GDATA_IS_FEED (feed));
@@ -97,7 +92,7 @@ test_query_all_contacts (void)
 }
 
 static void
-test_query_all_contacts_async_cb (GDataService *service, GAsyncResult *async_result, gpointer user_data)
+test_query_all_contacts_async_cb (GDataService *service, GAsyncResult *async_result, GMainLoop *main_loop)
 {
 	GDataFeed *feed;
 	GError *error = NULL;
@@ -114,20 +109,19 @@ test_query_all_contacts_async_cb (GDataService *service, GAsyncResult *async_res
 }
 
 static void
-test_query_all_contacts_async (void)
+test_query_all_contacts_async (GDataService *service)
 {
-	g_assert (service != NULL);
+	GMainLoop *main_loop = g_main_loop_new (NULL, TRUE);
 
 	gdata_contacts_service_query_contacts_async (GDATA_CONTACTS_SERVICE (service), NULL, NULL, NULL,
-						     NULL, (GAsyncReadyCallback) test_query_all_contacts_async_cb, NULL);
+						     NULL, (GAsyncReadyCallback) test_query_all_contacts_async_cb, main_loop);
 
-	main_loop = g_main_loop_new (NULL, TRUE);
 	g_main_loop_run (main_loop);
 	g_main_loop_unref (main_loop);
 }
 
 static void
-test_insert_simple (void)
+test_insert_simple (GDataService *service)
 {
 	GDataContactsContact *contact, *new_contact;
 	GDataCategory *category;
@@ -138,8 +132,6 @@ test_insert_simple (void)
 	gchar *xml;
 	GError *error = NULL;
 
-	g_assert (service != NULL);
-
 	contact = gdata_contacts_contact_new (NULL);
 
 	gdata_entry_set_title (GDATA_ENTRY (contact), "Elizabeth Bennet");
@@ -209,7 +201,7 @@ test_insert_simple (void)
 }
 
 static void
-test_query_uri (void)
+test_query_uri (GDataService *service)
 {
 	gchar *query_uri;
 	GDataContactsQuery *query = gdata_contacts_query_new ("q");
@@ -248,7 +240,7 @@ test_query_uri (void)
 }
 
 static void
-test_parser_minimal (void)
+test_parser_minimal (GDataService *service)
 {
 	GDataContactsContact *contact;
 	GError *error = NULL;
@@ -283,7 +275,7 @@ test_parser_minimal (void)
 }
 
 static void
-test_photo_has_photo (void)
+test_photo_has_photo (GDataService *service)
 {
 	GDataContactsContact *contact;
 	gsize length = 0;
@@ -336,7 +328,7 @@ test_photo_has_photo (void)
 }
 
 static void
-test_photo_add (void)
+test_photo_add (GDataService *service)
 {
 	GDataContactsContact *contact;
 	gchar *data;
@@ -345,11 +337,10 @@ test_photo_add (void)
 	GError *error = NULL;
 
 	/* Get the photo */
-	/* TODO: Fix the path */
-	g_assert (g_file_get_contents ("/home/philip/Development/libgdata/gdata/tests/photo.jpg", &data, &length, NULL) == TRUE);
+	g_assert (g_file_get_contents (TEST_FILE_DIR "photo.jpg", &data, &length, NULL) == TRUE);
 
 	/* Add it to the contact */
-	contact = get_contact ();
+	contact = get_contact (service);
 	retval = gdata_contacts_contact_set_photo (contact, service, data, length, NULL, &error);
 	g_assert_no_error (error);
 	g_assert (retval == TRUE);
@@ -360,14 +351,14 @@ test_photo_add (void)
 }
 
 static void
-test_photo_get (void)
+test_photo_get (GDataService *service)
 {
 	GDataContactsContact *contact;
 	gchar *data, *content_type = NULL;
 	gsize length = 0;
 	GError *error = NULL;
 
-	contact = get_contact ();
+	contact = get_contact (service);
 	g_assert (gdata_contacts_contact_has_photo (contact) == TRUE);
 
 	/* Get the photo from the network */
@@ -386,12 +377,12 @@ test_photo_get (void)
 }
 
 static void
-test_photo_delete (void)
+test_photo_delete (GDataService *service)
 {
 	GDataContactsContact *contact;
 	GError *error = NULL;
 
-	contact = get_contact ();
+	contact = get_contact (service);
 	g_assert (gdata_contacts_contact_has_photo (contact) == TRUE);
 
 	/* Remove the contact's photo */
@@ -407,6 +398,7 @@ test_photo_delete (void)
 int
 main (int argc, char *argv[])
 {
+	GDataService *service;
 	gint retval;
 
 	g_type_init ();
@@ -414,24 +406,26 @@ main (int argc, char *argv[])
 	g_test_init (&argc, &argv, NULL);
 	g_test_bug_base ("http://bugzilla.gnome.org/show_bug.cgi?id=";);
 
-	g_test_add_func ("/contacts/authentication", test_authentication);
-	g_test_add_func ("/contacts/query/all_contacts", test_query_all_contacts);
+	service = GDATA_SERVICE (gdata_contacts_service_new (CLIENT_ID));
+	gdata_service_authenticate (service, USERNAME, PASSWORD, NULL, NULL);
+
+	g_test_add_data_func ("/contacts/authentication", service, test_authentication);
+	g_test_add_data_func ("/contacts/query/all_contacts", service, test_query_all_contacts);
 	if (g_test_thorough () == TRUE)
-		g_test_add_func ("/contacts/query/all_contacts_async", test_query_all_contacts_async);
+		g_test_add_data_func ("/contacts/query/all_contacts_async", service, test_query_all_contacts_async);
 	if (g_test_slow () == TRUE)
-		g_test_add_func ("/contacts/insert/simple", test_insert_simple);
-	g_test_add_func ("/contacts/query/uri", test_query_uri);
-	g_test_add_func ("/contacts/parser/minimal", test_parser_minimal);
-	g_test_add_func ("/contacts/photo/has_photo", test_photo_has_photo);
+		g_test_add_data_func ("/contacts/insert/simple", service, test_insert_simple);
+	g_test_add_data_func ("/contacts/query/uri", service, test_query_uri);
+	g_test_add_data_func ("/contacts/parser/minimal", service, test_parser_minimal);
+	g_test_add_data_func ("/contacts/photo/has_photo", service, test_photo_has_photo);
 	if (g_test_slow () == TRUE) {
-		g_test_add_func ("/contacts/photo/add", test_photo_add);
-		g_test_add_func ("/contacts/photo/get", test_photo_get);
-		g_test_add_func ("/contacts/photo/delete", test_photo_delete);
+		g_test_add_data_func ("/contacts/photo/add", service, test_photo_add);
+		g_test_add_data_func ("/contacts/photo/get", service, test_photo_get);
+		g_test_add_data_func ("/contacts/photo/delete", service, test_photo_delete);
 	}
 
 	retval = g_test_run ();
-	if (service != NULL)
-		g_object_unref (service);
+	g_object_unref (service);
 
 	return retval;
 }
diff --git a/gdata/tests/picasaweb.c b/gdata/tests/picasaweb.c
index 92e8538..c72ed67 100644
--- a/gdata/tests/picasaweb.c
+++ b/gdata/tests/picasaweb.c
@@ -30,14 +30,11 @@
 #define NUM_ALBUMS 3
 #define TEST_ALBUM_INDEX 2
 
-/* TODO: probably a better way to do this; some kind of data associated with the test suite? */
-static GDataService *service = NULL;
-static GMainLoop *main_loop = NULL;
-
 static void
 test_authentication (void)
 {
 	gboolean retval;
+	GDataService *service;
 	GError *error = NULL;
 
 	/* Create a service */
@@ -57,10 +54,12 @@ test_authentication (void)
 	g_assert (gdata_service_is_authenticated (service) == TRUE);
 	g_assert_cmpstr (gdata_service_get_username (service), ==, PW_USERNAME);
 	g_assert_cmpstr (gdata_service_get_password (service), ==, PASSWORD);
+
+	g_object_unref (service);
 }
 
 static void
-test_authentication_async_cb (GDataService *service, GAsyncResult *async_result, gpointer user_data)
+test_authentication_async_cb (GDataService *service, GAsyncResult *async_result, GMainLoop *main_loop)
 {
 	gboolean retval;
 	GError *error = NULL;
@@ -82,21 +81,25 @@ test_authentication_async_cb (GDataService *service, GAsyncResult *async_result,
 static void
 test_authentication_async (void)
 {
+	GDataService *service;
+	GMainLoop *main_loop = g_main_loop_new (NULL, TRUE);
+
 	/* Create a service */
 	service = GDATA_SERVICE (gdata_picasaweb_service_new (CLIENT_ID));
 
 	g_assert (service != NULL);
 	g_assert (GDATA_IS_SERVICE (service));
 
-	gdata_service_authenticate_async (service, PW_USERNAME, PASSWORD, NULL, (GAsyncReadyCallback) test_authentication_async_cb, NULL);
+	gdata_service_authenticate_async (service, PW_USERNAME, PASSWORD, NULL, (GAsyncReadyCallback) test_authentication_async_cb, main_loop);
 
-	main_loop = g_main_loop_new (NULL, TRUE);
 	g_main_loop_run (main_loop);
 	g_main_loop_unref (main_loop);
+
+	g_object_unref (service);
 }
 
 static void
-test_upload_simple (void)
+test_upload_simple (GDataService *service)
 {
 	GDataCategory *category;
 	GDataPicasaWebFile *photo;
@@ -105,8 +108,6 @@ test_upload_simple (void)
 	gchar *xml;
 	GError *error = NULL;
 
-	g_assert (service != NULL);
-
 	photo = gdata_picasaweb_file_new (NULL);
 
 	gdata_entry_set_title (GDATA_ENTRY (photo), "Photo Entry Title");
@@ -155,7 +156,7 @@ test_upload_simple (void)
 
 
 static void
-test_photo (void)
+test_photo (GDataService *service)
 {
 	GError *error = NULL;
 	GDataFeed *album_feed;
@@ -248,7 +249,7 @@ test_photo (void)
 }
 
 static void
-test_photo_feed_entry (void)
+test_photo_feed_entry (GDataService *service)
 {
 	GDataFeed *album_feed;
 	GDataFeed *photo_feed;
@@ -304,7 +305,7 @@ test_photo_feed_entry (void)
 }
 
 static void
-test_photo_feed (void)
+test_photo_feed (GDataService *service)
 {
 	GError *error = NULL;
 	GDataFeed *album_feed;
@@ -340,7 +341,7 @@ test_photo_feed (void)
 }
 
 static void
-test_album (void)
+test_album (GDataService *service)
 {
 	GDataFeed *album_feed;
 	GError *error = NULL;
@@ -383,7 +384,7 @@ test_album (void)
 }
 
 static void
-test_album_feed_entry (void)
+test_album_feed_entry (GDataService *service)
 {
 	GDataFeed *album_feed;
 	GError *error = NULL;
@@ -433,7 +434,7 @@ test_album_feed_entry (void)
 }
 
 static void
-test_album_feed (void)
+test_album_feed (GDataService *service)
 {
 	GDataFeed *album_feed;
 	GError *error = NULL;
@@ -455,7 +456,7 @@ test_album_feed (void)
 }
 
 static void
-test_query_all_albums (void)
+test_query_all_albums (GDataService *service)
 {
 	GDataFeed *album_feed;
 	GDataFeed *photo_feed;
@@ -464,8 +465,6 @@ test_query_all_albums (void)
 	GDataEntry *entry;
 	GDataPicasaWebAlbum *album;
 
-	g_assert (service != NULL);
-
 	/* TODO: find out whether I need to free this; probably */
 	album_feed = gdata_picasaweb_service_query_all_albums (GDATA_PICASAWEB_SERVICE (service), NULL, NULL, NULL, NULL, NULL, &error);
 	g_assert_no_error (error);
@@ -490,7 +489,7 @@ test_query_all_albums (void)
 }
 
 static void
-test_query_all_albums_async_cb (GDataService *service, GAsyncResult *async_result, gpointer user_data)
+test_query_all_albums_async_cb (GDataService *service, GAsyncResult *async_result, GMainLoop *main_loop)
 {
 	GDataFeed *feed;
 	GError *error;
@@ -507,14 +506,13 @@ test_query_all_albums_async_cb (GDataService *service, GAsyncResult *async_resul
 }
 
 static void
-test_query_all_albums_async (void)
+test_query_all_albums_async (GDataService *service)
 {
-	g_assert (service != NULL);
+	GMainLoop *main_loop = g_main_loop_new (NULL, TRUE);
 
 	gdata_picasaweb_service_query_all_albums_async (GDATA_PICASAWEB_SERVICE (service), NULL, NULL, NULL, NULL,
-							NULL, (GAsyncReadyCallback) test_query_all_albums_async_cb, NULL);
+							NULL, (GAsyncReadyCallback) test_query_all_albums_async_cb, main_loop);
 
-	main_loop = g_main_loop_new (NULL, TRUE);
 	g_main_loop_run (main_loop);
 	g_main_loop_unref (main_loop);
 }
@@ -524,6 +522,7 @@ test_query_all_albums_async (void)
 int
 main (int argc, char *argv[])
 {
+	GDataService *service;
 	gint retval;
 
 	g_type_init ();
@@ -531,23 +530,25 @@ main (int argc, char *argv[])
 	g_test_init (&argc, &argv, NULL);
 	g_test_bug_base ("http://bugzilla.gnome.org/show_bug.cgi?id=";);
 
+	service = GDATA_SERVICE (gdata_picasaweb_service_new (CLIENT_ID));
+	gdata_service_authenticate (service, PW_USERNAME, PASSWORD, NULL, NULL);
+
 	g_test_add_func ("/picasaweb/authentication", test_authentication);
 	if (g_test_thorough () == TRUE)
 		g_test_add_func ("/picasaweb/authentication_async", test_authentication_async);
-	g_test_add_func ("/picasaweb/query/all_albums", test_query_all_albums);
+	g_test_add_data_func ("/picasaweb/query/all_albums", service, test_query_all_albums);
 	if (g_test_thorough () == TRUE)
-		g_test_add_func ("/picasaweb/query/all_albums_async", test_query_all_albums_async);
-	g_test_add_func ("/picasaweb/query/album_feed", test_album_feed);
-	g_test_add_func ("/picasaweb/query/album_feed_entry", test_album_feed_entry);
-	g_test_add_func ("/picasaweb/query/album", test_album);
-	g_test_add_func ("/picasaweb/query/photo_feed", test_photo_feed);
-	g_test_add_func ("/picasaweb/query/photo_feed_entry", test_photo_feed_entry);
-	g_test_add_func ("/picasaweb/query/photo", test_photo);
-	g_test_add_func ("/picasaweb/upload/photo", test_upload_simple);
+		g_test_add_data_func ("/picasaweb/query/all_albums_async", service, test_query_all_albums_async);
+	g_test_add_data_func ("/picasaweb/query/album_feed", service, test_album_feed);
+	g_test_add_data_func ("/picasaweb/query/album_feed_entry", service, test_album_feed_entry);
+	g_test_add_data_func ("/picasaweb/query/album", service, test_album);
+	g_test_add_data_func ("/picasaweb/query/photo_feed", service, test_photo_feed);
+	g_test_add_data_func ("/picasaweb/query/photo_feed_entry", service, test_photo_feed_entry);
+	g_test_add_data_func ("/picasaweb/query/photo", service, test_photo);
+	g_test_add_data_func ("/picasaweb/upload/photo", service, test_upload_simple);
 
 	retval = g_test_run ();
-	if (service != NULL)
-		g_object_unref (service);
+	g_object_unref (service);
 
 	return retval;
 }
diff --git a/gdata/tests/youtube.c b/gdata/tests/youtube.c
index 17fc6d2..2631142 100644
--- a/gdata/tests/youtube.c
+++ b/gdata/tests/youtube.c
@@ -27,14 +27,11 @@
 #define YT_USERNAME "GDataTest"
 #define YT_PASSWORD "gdata"
 
-/* TODO: probably a better way to do this; some kind of data associated with the test suite? */
-static GDataService *service = NULL;
-static GMainLoop *main_loop = NULL;
-
 static void
 test_authentication (void)
 {
 	gboolean retval;
+	GDataService *service;
 	GError *error = NULL;
 
 	/* Create a service */
@@ -56,10 +53,12 @@ test_authentication (void)
 	g_assert_cmpstr (gdata_service_get_username (service), ==, YT_USERNAME "@gmail.com");
 	g_assert_cmpstr (gdata_service_get_password (service), ==, YT_PASSWORD);
 	g_assert_cmpstr (gdata_youtube_service_get_youtube_user (GDATA_YOUTUBE_SERVICE (service)), ==, YT_USERNAME);
+
+	g_object_unref (service);
 }
 
 static void
-test_authentication_async_cb (GDataService *service, GAsyncResult *async_result, gpointer user_data)
+test_authentication_async_cb (GDataService *service, GAsyncResult *async_result, GMainLoop *main_loop)
 {
 	gboolean retval;
 	GError *error = NULL;
@@ -81,27 +80,29 @@ test_authentication_async_cb (GDataService *service, GAsyncResult *async_result,
 static void
 test_authentication_async (void)
 {
+	GMainLoop *main_loop;
+	GDataService *service;
+
 	/* Create a service */
 	service = GDATA_SERVICE (gdata_youtube_service_new (DEVELOPER_KEY, CLIENT_ID));
 
 	g_assert (service != NULL);
 	g_assert (GDATA_IS_SERVICE (service));
 
-	gdata_service_authenticate_async (service, YT_USERNAME, YT_PASSWORD, NULL, (GAsyncReadyCallback) test_authentication_async_cb, NULL);
-
 	main_loop = g_main_loop_new (NULL, TRUE);
+	gdata_service_authenticate_async (service, YT_USERNAME, YT_PASSWORD, NULL, (GAsyncReadyCallback) test_authentication_async_cb, main_loop);
+
 	g_main_loop_run (main_loop);
 	g_main_loop_unref (main_loop);
+	g_object_unref (service);
 }
 
 static void
-test_query_standard_feed (void)
+test_query_standard_feed (GDataService *service)
 {
 	GDataFeed *feed;
 	GError *error = NULL;
 
-	g_assert (service != NULL);
-
 	feed = gdata_youtube_service_query_standard_feed (GDATA_YOUTUBE_SERVICE (service), GDATA_YOUTUBE_TOP_RATED_FEED, NULL, NULL, NULL, NULL, &error);
 	g_assert_no_error (error);
 	g_assert (GDATA_IS_FEED (feed));
@@ -113,7 +114,7 @@ test_query_standard_feed (void)
 }
 
 static void
-test_query_standard_feed_async_cb (GDataService *service, GAsyncResult *async_result, gpointer user_data)
+test_query_standard_feed_async_cb (GDataService *service, GAsyncResult *async_result, GMainLoop *main_loop)
 {
 	GDataFeed *feed;
 	GError *error = NULL;
@@ -130,14 +131,13 @@ test_query_standard_feed_async_cb (GDataService *service, GAsyncResult *async_re
 }
 
 static void
-test_query_standard_feed_async (void)
+test_query_standard_feed_async (GDataService *service)
 {
-	g_assert (service != NULL);
+	GMainLoop *main_loop = g_main_loop_new (NULL, TRUE);
 
 	gdata_youtube_service_query_standard_feed_async (GDATA_YOUTUBE_SERVICE (service), GDATA_YOUTUBE_TOP_RATED_FEED, NULL,
-							 NULL, NULL, NULL, (GAsyncReadyCallback) test_query_standard_feed_async_cb, NULL);
+							 NULL, NULL, NULL, (GAsyncReadyCallback) test_query_standard_feed_async_cb, main_loop);
 
-	main_loop = g_main_loop_new (NULL, TRUE);
 	g_main_loop_run (main_loop);
 	g_main_loop_unref (main_loop);
 }
@@ -212,14 +212,12 @@ get_video_for_related (void)
 }
 
 static void
-test_query_related (void)
+test_query_related (GDataService *service)
 {
 	GDataFeed *feed;
 	GDataYouTubeVideo *video;
 	GError *error = NULL;
 
-	g_assert (service != NULL);
-
 	video = get_video_for_related ();
 	feed = gdata_youtube_service_query_related (GDATA_YOUTUBE_SERVICE (service), video, NULL, NULL, NULL, NULL, &error);
 	g_assert_no_error (error);
@@ -233,7 +231,7 @@ test_query_related (void)
 }
 
 static void
-test_query_related_async_cb (GDataService *service, GAsyncResult *async_result, gpointer user_data)
+test_query_related_async_cb (GDataService *service, GAsyncResult *async_result, GMainLoop *main_loop)
 {
 	GDataFeed *feed;
 	GError *error = NULL;
@@ -250,24 +248,22 @@ test_query_related_async_cb (GDataService *service, GAsyncResult *async_result,
 }
 
 static void
-test_query_related_async (void)
+test_query_related_async (GDataService *service)
 {
 	GDataYouTubeVideo *video;
-
-	g_assert (service != NULL);
+	GMainLoop *main_loop = g_main_loop_new (NULL, TRUE);
 
 	video = get_video_for_related ();
 	gdata_youtube_service_query_related_async (GDATA_YOUTUBE_SERVICE (service), video, NULL, NULL, NULL,
-						   NULL, (GAsyncReadyCallback) test_query_related_async_cb, NULL);
+						   NULL, (GAsyncReadyCallback) test_query_related_async_cb, main_loop);
 	g_object_unref (video);
 
-	main_loop = g_main_loop_new (NULL, TRUE);
 	g_main_loop_run (main_loop);
 	g_main_loop_unref (main_loop);
 }
 
 static void
-test_upload_simple (void)
+test_upload_simple (GDataService *service)
 {
 	GDataYouTubeVideo *video, *new_video;
 	GDataMediaCategory *category;
@@ -275,8 +271,6 @@ test_upload_simple (void)
 	gchar *xml;
 	GError *error = NULL;
 
-	g_assert (service != NULL);
-
 	video = gdata_youtube_video_new (NULL);
 
 	gdata_entry_set_title (GDATA_ENTRY (video), "Bad Wedding Toast");
@@ -321,7 +315,7 @@ test_upload_simple (void)
 }
 
 static void
-test_parsing_app_control (void)
+test_parsing_app_control (GDataService *service)
 {
 	GDataYouTubeVideo *video;
 	GDataYouTubeState *state;
@@ -373,7 +367,7 @@ test_parsing_app_control (void)
 }
 
 static void
-test_parsing_yt_recorded (void)
+test_parsing_yt_recorded (GDataService *service)
 {
 	GDataYouTubeVideo *video;
 	GTimeVal recorded;
@@ -504,7 +498,7 @@ test_parsing_comments_feed_link (void)
 }*/
 
 static void
-test_query_uri (void)
+test_query_uri (GDataService *service)
 {
 	gdouble latitude, longitude, radius;
 	gboolean has_location;
@@ -586,31 +580,35 @@ int
 main (int argc, char *argv[])
 {
 	gint retval;
+	GDataService *service;
 
 	g_type_init ();
 	g_thread_init (NULL);
 	g_test_init (&argc, &argv, NULL);
 	g_test_bug_base ("http://bugzilla.gnome.org/show_bug.cgi?id=";);
 
+	service = GDATA_SERVICE (gdata_youtube_service_new (DEVELOPER_KEY, CLIENT_ID));
+	gdata_service_authenticate (service, YT_USERNAME, YT_PASSWORD, NULL, NULL);
+
 	g_test_add_func ("/youtube/authentication", test_authentication);
 	if (g_test_thorough () == TRUE)
 		g_test_add_func ("/youtube/authentication_async", test_authentication_async);
-	g_test_add_func ("/youtube/query/standard_feed", test_query_standard_feed);
+	g_test_add_data_func ("/youtube/query/standard_feed", service, test_query_standard_feed);
 	if (g_test_thorough () == TRUE)
-		g_test_add_func ("/youtube/query/standard_feed_async", test_query_standard_feed_async);
-	g_test_add_func ("/youtube/query/related", test_query_related);
+		g_test_add_data_func ("/youtube/query/standard_feed_async", service, test_query_standard_feed_async);
+	g_test_add_data_func ("/youtube/query/related", service, test_query_related);
 	if (g_test_thorough () == TRUE)
-		g_test_add_func ("/youtube/query/related_async", test_query_related_async);
+		g_test_add_data_func ("/youtube/query/related_async", service, test_query_related_async);
 	if (g_test_slow () == TRUE)
-		g_test_add_func ("/youtube/upload/simple", test_upload_simple);
-	g_test_add_func ("/youtube/parsing/app:control", test_parsing_app_control);
+		g_test_add_data_func ("/youtube/upload/simple", service, test_upload_simple);
+	g_test_add_data_func ("/youtube/parsing/app:control", service, test_parsing_app_control);
 	/*g_test_add_func ("/youtube/parsing/comments/feedLink", test_parsing_comments_feed_link);*/
-	g_test_add_func ("/youtube/parsing/yt:recorded", test_parsing_yt_recorded);
-	g_test_add_func ("/youtube/query/uri", test_query_uri);
+	g_test_add_data_func ("/youtube/parsing/yt:recorded", service, test_parsing_yt_recorded);
+	g_test_add_data_func ("/youtube/query/uri", service, test_query_uri);
+	g_test_add_data_func ("/youtube/query/uri", service, test_query_uri);
 
 	retval = g_test_run ();
-	if (service != NULL)
-		g_object_unref (service);
+	g_object_unref (service);
 
 	return retval;
 }



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