diff options
Diffstat (limited to 'tests/test-application.c')
-rw-r--r-- | tests/test-application.c | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/tests/test-application.c b/tests/test-application.c new file mode 100644 index 0000000..74265ae --- /dev/null +++ b/tests/test-application.c @@ -0,0 +1,116 @@ +/* + * AT-SPI - Assistive Technology Service Provider Interface + * (Gnome Accessibility Project; https://wiki.gnome.org/Accessibility) + * + * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* + * Testing AT-SPI requires both a test application and AT client. + * Test applications are built using the Dummy ATK implementation: MyAtk. + * This file contains the entry point for all test applications. + * The test will provide its own implementation of atk_get_root, + * and as such provide all the application state for the test. + */ + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#include <glib.h> +#include <atk/atk.h> +#include <atk-bridge.h> +#include "my-atk.h" +#include "atk-object-xml-loader.h" + +static AtkObject *root_accessible; + +static GMainLoop *mainloop; + +static gchar *tdata_path = NULL; + +void +test_init (gchar *path) +{ + gchar *td; + + if (path == NULL) { + g_print("No test data file provided\n"); + exit(EXIT_FAILURE); + } + tdata_path = path; + + td = g_build_path (G_DIR_SEPARATOR_S, tdata_path, NULL, NULL); + root_accessible = ATK_OBJECT (atk_object_xml_parse (td)); + g_free (td); +} + +AtkObject * +test_get_root (void) +{ + return root_accessible; +} + +static AtkObject * +get_root (void) +{ + return test_get_root (); +} + +const gchar * +get_toolkit_name (void) +{ + return strdup ("atspitesting-toolkit"); +} + +static void +setup_atk_util (void) +{ + AtkUtilClass *klass; + + klass = g_type_class_ref (ATK_TYPE_UTIL); + klass->get_root = get_root; + klass->get_toolkit_name = get_toolkit_name; + g_type_class_unref (klass); +} + +static GOptionEntry optentries[] = +{ + {"test-data-file", 0, 0, G_OPTION_ARG_STRING, &tdata_path, "Path to file of test data", NULL}, + {NULL} +}; + +int main (int argc, char *argv[]) +{ + GOptionContext *opt; + GError *err = NULL; + opt = g_option_context_new (NULL); + g_option_context_add_main_entries (opt, optentries, NULL); + g_option_context_set_ignore_unknown_options (opt, TRUE); + + if (!g_option_context_parse (opt, &argc, &argv, &err)) + g_error("Option parsing failed: %s\n", err->message); + + setup_atk_util (); + test_init (tdata_path); + atk_bridge_adaptor_init (NULL, NULL); + + mainloop = g_main_loop_new (NULL, FALSE); + g_main_loop_run (mainloop); + + return 0; +} |