[discident-glib] test: Add async EAN lookup test



commit acdaf7b0039a85dabc765690a4dac19ea09ff4e2
Author: Bastien Nocera <hadess hadess net>
Date:   Thu Dec 6 00:38:28 2012 +0100

    test: Add async EAN lookup test

 discident-glib/test-diglib.c |   64 ++++++++++++++++++++++++++++++++++--------
 1 files changed, 52 insertions(+), 12 deletions(-)
---
diff --git a/discident-glib/test-diglib.c b/discident-glib/test-diglib.c
index 94c684c..f96429d 100644
--- a/discident-glib/test-diglib.c
+++ b/discident-glib/test-diglib.c
@@ -156,30 +156,70 @@ bail:
 static char **uris = NULL;
 
 static void
-handle_ean (const char *ean)
+discident_ean_print (GObject *source_object,
+		     GAsyncResult *res,
+		     gpointer user_data)
 {
-	DiscidentEan *object;
-	char *title, *img_url;
 	GError *error = NULL;
-	gboolean ret;
+	char *title, *img_url, *barcode;
 
-	object = discident_ean_new ();
-	ret = discident_ean_lookup_sync (object, ean, &title, &img_url, &error);
-	if (ret == FALSE) {
-		g_message ("discident_ean_lookup_sync() failed with: %s", error->message);
+	title = discident_ean_lookup_finish (DISCIDENT_EAN (source_object),
+					     res,
+					     &barcode,
+					     &img_url,
+					     &error);
+	if (title == NULL) {
+		g_message ("Could not query barcode: %s", error->message);
 		g_error_free (error);
-		g_object_unref (object);
-		return;
+		goto bail;
 	}
-	g_print ("EAN: %s\n", ean);
+
+	g_print ("EAN: %s\n", barcode);
 	g_print ("Title: %s\n", title);
 	g_print ("Thumbnail: %s\n", img_url);
 	g_print ("\n");
 
+	g_free (barcode);
 	g_free (title);
 	g_free (img_url);
 
-	g_object_unref (object);
+bail:
+	num_queries--;
+	if (num_queries == 0)
+		g_main_loop_quit (loop);
+}
+
+static void
+handle_ean (const char *ean)
+{
+	DiscidentEan *object;
+	char *title, *img_url;
+	GError *error = NULL;
+	gboolean ret;
+
+	object = discident_ean_new ();
+
+	if (!option_async) {
+		ret = discident_ean_lookup_sync (object, ean, &title, &img_url, &error);
+		if (ret == FALSE) {
+			g_message ("discident_ean_lookup_sync() failed with: %s", error->message);
+			g_error_free (error);
+			g_object_unref (object);
+			return;
+		}
+		g_print ("EAN: %s\n", ean);
+		g_print ("Title: %s\n", title);
+		g_print ("Thumbnail: %s\n", img_url);
+		g_print ("\n");
+
+		g_free (title);
+		g_free (img_url);
+
+		g_object_unref (object);
+	} else {
+		num_queries++;
+		discident_ean_lookup (object, ean, NULL, discident_ean_print, NULL);
+	}
 }
 
 static void



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