aboutsummaryrefslogtreecommitdiff
path: root/tests/test-desktop-shortcuts.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test-desktop-shortcuts.c')
-rw-r--r--tests/test-desktop-shortcuts.c137
1 files changed, 137 insertions, 0 deletions
diff --git a/tests/test-desktop-shortcuts.c b/tests/test-desktop-shortcuts.c
new file mode 100644
index 0000000..1a655f7
--- /dev/null
+++ b/tests/test-desktop-shortcuts.c
@@ -0,0 +1,137 @@
+#include <gtk/gtk.h>
+#include "libindicator/indicator-desktop-shortcuts.h"
+
+/* Basic object creation and destruction. Stop big
+ f*** ups here. */
+void
+test_desktop_shortcuts_creation (void)
+{
+
+ IndicatorDesktopShortcuts * ids = indicator_desktop_shortcuts_new(SRCDIR "/test-well-formed.desktop", "France");
+ g_assert(ids != NULL);
+
+ g_object_add_weak_pointer(G_OBJECT(ids), (gpointer *)&ids);
+ g_object_unref(G_OBJECT(ids));
+
+ g_assert(ids == NULL);
+ return;
+}
+
+/* Tests that the NotShowIn the desktop group is watched
+ for */
+void
+test_desktop_shortcuts_globalnoshow (void)
+{
+
+ IndicatorDesktopShortcuts * ids = indicator_desktop_shortcuts_new(SRCDIR "/test-well-formed.desktop", "Germany");
+ g_assert(ids != NULL);
+
+ const gchar ** nicks = indicator_desktop_shortcuts_get_nicks(ids);
+ g_assert(nicks[0] == NULL);
+
+ g_object_unref(ids);
+
+ return;
+}
+
+gboolean
+nicks_contains (const gchar ** nicks, const gchar * search)
+{
+ if (nicks[0] == NULL)
+ return FALSE;
+ if (g_strcmp0(nicks[0], search) == 0)
+ return TRUE;
+ return nicks_contains(&nicks[1], search);
+}
+
+/* Checking that the local show OnlyIn works. */
+void
+test_desktop_shortcuts_localfilter (void)
+{
+ IndicatorDesktopShortcuts * ids = indicator_desktop_shortcuts_new(SRCDIR "/test-well-formed.desktop", "France");
+ g_assert(ids != NULL);
+
+ const gchar ** nicks = indicator_desktop_shortcuts_get_nicks(ids);
+
+ g_assert(nicks_contains(nicks, "bob"));
+ g_assert(nicks_contains(nicks, "alvin"));
+ g_assert(!nicks_contains(nicks, "jim"));
+
+ g_object_unref(ids);
+
+ return;
+}
+
+/* Nick names -- checks to see they all have names */
+void
+test_desktop_shortcuts_nicknames (void)
+{
+ IndicatorDesktopShortcuts * ids = indicator_desktop_shortcuts_new(SRCDIR "/test-well-formed.desktop", "France");
+ g_assert(ids != NULL);
+
+ const gchar ** nicks = indicator_desktop_shortcuts_get_nicks(ids);
+ gint i = 0;
+ while (nicks[i] != NULL) {
+ gchar * expectedstr = g_strdup_printf("%s's shortcut", nicks[i]);
+ gchar * name = indicator_desktop_shortcuts_nick_get_name(ids, nicks[i]);
+ g_assert(name != NULL);
+
+ gboolean same = (g_strcmp0(expectedstr, name) == 0);
+
+ g_free(name);
+ g_free(expectedstr);
+
+ g_assert(same);
+
+ i++;
+ }
+
+
+ g_object_unref(ids);
+
+ return;
+}
+
+/* Try executing a shortcut which will touch a file */
+void
+test_desktop_shortcuts_launch (void)
+{
+ IndicatorDesktopShortcuts * ids = indicator_desktop_shortcuts_new(SRCDIR "/test-well-formed.desktop", "TouchTest");
+ g_assert(ids != NULL);
+
+ const gchar ** nicks = indicator_desktop_shortcuts_get_nicks(ids);
+ g_assert(nicks_contains(nicks, "touch"));
+
+ g_assert(indicator_desktop_shortcuts_nick_exec(ids, "touch"));
+ g_assert(g_file_test(BUILD_DIR "/test-desktop-shortcuts-touch-test", G_FILE_TEST_EXISTS));
+
+ g_object_unref(ids);
+
+ return;
+}
+
+/* Build our test suite */
+void
+test_desktop_shortcuts_suite (void)
+{
+ g_test_add_func ("/libindicator/desktopshortcuts/creation", test_desktop_shortcuts_creation);
+ g_test_add_func ("/libindicator/desktopshortcuts/globalnosho", test_desktop_shortcuts_globalnoshow);
+ g_test_add_func ("/libindicator/desktopshortcuts/nicknames", test_desktop_shortcuts_nicknames);
+ g_test_add_func ("/libindicator/desktopshortcuts/launch", test_desktop_shortcuts_launch);
+
+ return;
+}
+
+int
+main (int argc, char ** argv)
+{
+ g_type_init ();
+ g_test_init (&argc, &argv, NULL);
+ gtk_init(&argc, &argv);
+
+ test_desktop_shortcuts_suite();
+
+ g_log_set_always_fatal(G_LOG_LEVEL_CRITICAL);
+
+ return g_test_run();
+}