[maemo-commits] [maemo-commits] r8907 - projects/haf/trunk/libossomime/tests

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Tue Jan 2 14:27:43 EET 2007
Author: martyn
Date: 2007-01-02 14:27:42 +0200 (Tue, 02 Jan 2007)
New Revision: 8907

Added:
   projects/haf/trunk/libossomime/tests/test-mime-default-app.c
Modified:
   projects/haf/trunk/libossomime/tests/test-uri.c
Log:
Updated tests

Added: projects/haf/trunk/libossomime/tests/test-mime-default-app.c
===================================================================
--- projects/haf/trunk/libossomime/tests/test-mime-default-app.c	2007-01-02 12:26:59 UTC (rev 8906)
+++ projects/haf/trunk/libossomime/tests/test-mime-default-app.c	2007-01-02 12:27:42 UTC (rev 8907)
@@ -0,0 +1,66 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2006 Nokia Corporation.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; version 2 of the
+ * License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+/* Test file to test the GnomeVFS default app. */
+
+#include <config.h>
+
+#include <string.h>
+#include <stdlib.h>
+#include <glib.h>
+#include <libgnomevfs/gnome-vfs.h>
+#include <libgnomevfs/gnome-vfs-mime-handlers.h>
+
+int 
+main (int argc, char **argv)
+{
+	GnomeVFSMimeApplication *mime_application;
+
+	gnome_vfs_init ();
+
+	if (argc < 2) {
+		g_printerr ("Usage: %s <mime-type>\n", argv[0]);
+		return EXIT_FAILURE;
+	}
+
+	if (!strchr (argv[1], '/')) {
+		g_printerr ("Mime type must be in the form:'image/png'\n");
+		return EXIT_FAILURE;
+	}
+
+	mime_application = gnome_vfs_mime_get_default_application (argv[1]);
+	if (!mime_application) {
+		g_printerr ("No mime details associated with:'%s'\n", argv[1]);
+		return EXIT_FAILURE;
+	}
+		
+	g_print ("Mime details for:'%s'\n", argv[1]);
+	g_print ("\tid:'%s'\n", mime_application->id);
+	g_print ("\tname:'%s'\n", mime_application->name);
+	g_print ("\tcommand:'%s'\n", mime_application->command);
+	
+	gnome_vfs_mime_application_free (mime_application);
+
+	gnome_vfs_shutdown ();
+
+	return EXIT_SUCCESS;
+}
+
+

Modified: projects/haf/trunk/libossomime/tests/test-uri.c
===================================================================
--- projects/haf/trunk/libossomime/tests/test-uri.c	2007-01-02 12:26:59 UTC (rev 8906)
+++ projects/haf/trunk/libossomime/tests/test-uri.c	2007-01-02 12:27:42 UTC (rev 8907)
@@ -6,39 +6,63 @@
 
 static gboolean   use_default = FALSE;
 static gchar     *get_actions = NULL;
+static gchar     *get_actions_by_uri = NULL;
+static gchar     *action_type = NULL;
 static gchar     *is_default = NULL;
 static gchar     *get_default = NULL;
+static gchar     *get_default_by_uri = NULL;
 static gchar     *set_default = NULL;
+static gchar     *set_default_by_uri = NULL;
 static gchar     *set_default_to_nothing = NULL;
 static gchar     *get_scheme = NULL;
 static gchar    **open_uris = NULL;
 
 static GOptionEntry entries[] = 
 {
+	{ "get-actions", 0, 
+	  0, G_OPTION_ARG_STRING, 
+	  &get_actions, 
+	  "Get a list of actions for a scheme like \"http\" [DEPRECATED]",
+	  NULL },
+	{ "get-default", 0, 
+	  0, G_OPTION_ARG_STRING, 
+	  &get_default, 
+	  "Get the default action for a scheme like \"http\" [DEPRECATED]", 
+	  NULL },
+	{ "set-default", 0, 
+	  0, G_OPTION_ARG_STRING, 
+	  &set_default, 
+	  "Set the default action for a scheme like \"http\" (used WITH --get-default) [DEPRECATED]",
+	  NULL },
 	{ "use-default", 'd', 
 	  0, G_OPTION_ARG_NONE, 
 	  &use_default, 
 	  "Use the no action when opening a URI, this means we do NOT get the default action first.", 
 	  NULL },
-	{ "get-actions", 'a', 
+	{ "get-actions-by-uri", 'a', 
 	  0, G_OPTION_ARG_STRING, 
-	  &get_actions, 
-	  "Get a list of actions for a scheme like \"http\"",
+	  &get_actions_by_uri, 
+	  "Get a list of actions by uri (can be used with --action-type)",
 	  NULL },
+	{ "action-type", 't', 
+	  0, G_OPTION_ARG_STRING, 
+	  &action_type, 
+	  "The action type (\"Normal\", \"Neutral\" or \"Fallback\"), used with --get-actions-by-uri",
+	  NULL },
 	{ "is-default", 'i', 
 	  0, G_OPTION_ARG_STRING, 
 	  &is_default, 
 	  "Return TRUE or FALSE for an action name (this is used WITH --get-actions)", 
 	  NULL },
-	{ "get-default", 'g', 
+	{ "get-default-by-uri", 'g', 
 	  0, G_OPTION_ARG_STRING, 
-	  &get_default, 
-	  "Get the default action for a scheme like \"http\"", 
+	  &get_default_by_uri, 
+	  "Get the default action by uri", 
 	  NULL },
-	{ "set-default", 's', 
+	{ "set-default-by-uri", 's', 
 	  0, G_OPTION_ARG_STRING, 
-	  &set_default, 
-	  "Set the default action for a scheme like \"http\" (this is used WITH --get-default)",
+	  &set_default_by_uri, 
+	  "Set the default action by uri (used WITH --get-default-by-uri)",
 	  NULL },
 	{ "set-default-to-nothing", 'n', 
 	  0, G_OPTION_ARG_STRING, 
@@ -69,8 +93,9 @@
 	g_option_context_parse (context, &argc, &argv, NULL);
 	g_option_context_free (context);
 
-	if ((!use_default && !get_actions && !get_default && 
-	     !set_default && !set_default_to_nothing && 
+	if ((!use_default && !get_actions && !get_actions_by_uri &&
+	     !get_default && !get_default_by_uri && 
+	     !set_default && !set_default_by_uri && !set_default_to_nothing && 
 	     !get_scheme && !open_uris) ||
 	    (set_default && !get_default) || 
 	    (is_default && !get_actions)) {
@@ -85,7 +110,6 @@
 		if (error != NULL) {
 			g_printerr ("Could not set default to nothing for scheme:'%s', error:%d->'%s'\n", 
 				    set_default_to_nothing, error->code, error->message);
-			
 			g_clear_error (&error); 
 			return EXIT_FAILURE;
 		}
@@ -100,7 +124,6 @@
 		if (error != NULL) {
 			g_printerr ("Could not get default action for scheme:'%s', error:%d->'%s'\n", 
 				    get_default, error->code, error->message);
-			
 			g_clear_error (&error); 
 			return EXIT_FAILURE;
 		} 
@@ -109,7 +132,6 @@
 		if (error != NULL) {
 			g_printerr ("Could not set default action for scheme:'%s', error:%d->'%s'\n", 
 				    set_default, error->code, error->message);
-			
 			g_clear_error (&error); 
 			return EXIT_FAILURE;
 		}
@@ -130,7 +152,6 @@
 		if (error != NULL) {
 			g_printerr ("Could not get actions for scheme:'%s', error:%d->'%s'\n", 
 				    get_actions, error->code, error->message);
-			
 			g_clear_error (&error); 
 			return EXIT_FAILURE;
 		}
@@ -166,6 +187,76 @@
 		}
 	}
 
+	if (get_default_by_uri && set_default_by_uri) {
+		OssoURIAction *default_action;
+		
+		default_action = osso_uri_get_default_action_by_uri (get_default_by_uri, &error);
+		if (error != NULL) {
+			g_printerr ("Could not get default action by uri:'%s', error:%d->'%s'\n", 
+				    get_default_by_uri, error->code, error->message);
+			g_clear_error (&error); 
+			return EXIT_FAILURE;
+		} 
+
+		osso_uri_set_default_action_by_uri (set_default_by_uri, default_action, &error);
+		if (error != NULL) {
+			g_printerr ("Could not set default action by uri:'%s', error:%d->'%s'\n", 
+				    set_default_by_uri, error->code, error->message);
+			g_clear_error (&error); 
+			return EXIT_FAILURE;
+		}
+
+		if (default_action) {
+			osso_uri_action_unref (default_action);
+		}
+
+		g_print ("Default for:'%s' set for '%s' too.\n", 
+			 get_default_by_uri, set_default_by_uri);
+	}
+
+	if (get_actions_by_uri && is_default) {
+		GSList *actions;
+		GSList *l;
+
+		actions = osso_uri_get_actions_by_uri (get_actions_by_uri, -1, &error);
+		if (error != NULL) {
+			g_printerr ("Could not get actions by uri:'%s', error:%d->'%s'\n", 
+				    get_actions_by_uri, error->code, error->message);
+			g_clear_error (&error); 
+			return EXIT_FAILURE;
+		}
+
+		if (actions) {
+			OssoURIAction *action;
+			const gchar   *name = NULL;
+			gboolean       found = FALSE;
+
+			for (l = actions; l && !found; l = l->next) {
+				action = l->data;
+				name = osso_uri_action_get_name (action);
+
+				if (name && strcmp (name, is_default) == 0) {
+					found = TRUE;
+				}
+			}
+
+			if (found) {
+				gboolean is_default_action;
+
+				is_default_action = osso_uri_is_default_action (action, NULL);
+
+				g_print ("Action:'%s' %s the default action\n", 
+					 is_default, is_default_action ? "is" : "is NOT");
+			} else {
+				g_print ("Action:'%s' was not found\n", is_default);
+			}
+			
+			osso_uri_free_actions (actions);
+		} else {
+			g_print ("No actions for uri:'%s'\n", get_actions_by_uri);
+		}
+	}
+
 	if (get_default) {
 		OssoURIAction *default_action;
 
@@ -173,7 +264,6 @@
 		if (error != NULL) {
 			g_printerr ("Could not get default action for scheme:'%s', error:%d->'%s'\n", 
 				    get_default, error->code, error->message);
-			
 			g_clear_error (&error); 
 			return EXIT_FAILURE;
 		} 
@@ -188,15 +278,36 @@
 		}
 	}
 
+	if (get_default_by_uri) {
+		OssoURIAction *default_action;
+
+		default_action = osso_uri_get_default_action_by_uri (get_default_by_uri, &error);
+		if (error != NULL) {
+			g_printerr ("Could not get default action for uri:'%s', error:%d->'%s'\n", 
+				    get_default_by_uri, error->code, error->message);
+			g_clear_error (&error); 
+			return EXIT_FAILURE;
+		} 
+
+		if (default_action) {
+			g_print ("Default action for uri:'%s' is '%s'\n", 
+				 get_default_by_uri, osso_uri_action_get_name (default_action));
+			osso_uri_action_unref (default_action);
+		} else {
+			g_print ("No default action for uri:'%s'\n", 
+				 get_default_by_uri);
+		}
+	}
+
 	if (get_actions) {
-		GSList *actions;
+		GSList *actions = NULL;
 		GSList *l;
 
 		actions = osso_uri_get_actions (get_actions, &error);
+
 		if (error != NULL) {
 			g_printerr ("Could not get actions for scheme:'%s', error:%d->'%s'\n", 
 				    get_actions, error->code, error->message);
-			
 			g_clear_error (&error); 
 			return EXIT_FAILURE;
 		}
@@ -218,6 +329,52 @@
 		}
 	}
 
+	if (get_actions_by_uri) {
+		GSList *actions = NULL;
+		GSList *l;
+
+		if (!action_type) {
+			actions = osso_uri_get_actions_by_uri (get_actions_by_uri, -1, &error);
+		} else {
+			OssoURIActionType type;
+			
+			type = OSSO_URI_ACTION_NORMAL;
+			
+			if (action_type) {
+				if (g_ascii_strcasecmp (action_type, "Neutral") == 0) {
+					type = OSSO_URI_ACTION_NEUTRAL;
+				} else if (g_ascii_strcasecmp (action_type, "Fallback") == 0) {
+					type = OSSO_URI_ACTION_FALLBACK;
+				}
+			}
+
+			actions = osso_uri_get_actions_by_uri (get_actions_by_uri, type, &error);
+		}
+
+		if (error != NULL) {
+			g_printerr ("Could not get actions for uri:'%s', error:%d->'%s'\n", 
+				    get_actions_by_uri, error->code, error->message);
+			g_clear_error (&error); 
+			return EXIT_FAILURE;
+		}
+
+		if (actions) {
+			g_print ("Actions for uri:'%s' are:\n", get_actions_by_uri);
+			
+			for (l = actions; l; l = l->next) {
+				OssoURIAction *action;
+				
+				action = l->data;
+				
+				g_print ("\t%s\n", osso_uri_action_get_name (action));
+			}
+			
+			osso_uri_free_actions (actions);
+		} else {
+			g_print ("No actions for uri:'%s'\n", get_actions_by_uri);
+		}
+	}
+
 	if (get_scheme) {
 		gchar *scheme;
 
@@ -225,7 +382,6 @@
 		if (error != NULL) {
 			g_printerr ("Could not get scheme from uri:'%s', error:%d->'%s'\n", 
 				    get_scheme, error->code, error->message);
-			
 			g_clear_error (&error); 
 			return EXIT_FAILURE;
 		}


More information about the maemo-commits mailing list