[discident-glib] test: Add async EAN lookup test
- From: Bastien Nocera <hadess src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [discident-glib] test: Add async EAN lookup test
- Date: Wed, 5 Dec 2012 23:39:31 +0000 (UTC)
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]