summaryrefslogtreecommitdiff
path: root/tests/atk_test_text.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/atk_test_text.c')
-rw-r--r--tests/atk_test_text.c481
1 files changed, 481 insertions, 0 deletions
diff --git a/tests/atk_test_text.c b/tests/atk_test_text.c
new file mode 100644
index 0000000..b9e29dc
--- /dev/null
+++ b/tests/atk_test_text.c
@@ -0,0 +1,481 @@
+/*
+ * AT-SPI - Assistive Technology Service Provider Interface
+ * (Gnome Accessibility Project; https://wiki.gnome.org/Accessibility)
+ *
+ * Copyright (c) 2015 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.
+ */
+
+#include "atk_test_util.h"
+#include "atk_suite.h"
+
+#define DATA_FILE TESTS_DATA_DIR"/test-text.xml"
+
+static gboolean GHRunc_find (gpointer key, gpointer value, gpointer user_data)
+{
+ if (!g_strcmp0 (key, user_data)) {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static void
+atk_test_text_get_character_count (gpointer fixture, gconstpointer user_data)
+{
+ AtspiAccessible *_obj = get_root_obj (DATA_FILE);
+ g_assert (_obj);
+ AtspiAccessible *child = atspi_accessible_get_child_at_index (_obj, 0, NULL);
+ g_assert (child);
+ AtspiText *obj = atspi_accessible_get_text_iface (child);
+
+ gint count = atspi_text_get_character_count (obj, NULL);
+ g_assert_cmpint (count, ==, 16);
+}
+
+static void
+atk_test_text_get_text (gpointer fixture, gconstpointer user_data)
+{
+ AtspiAccessible *_obj = get_root_obj (DATA_FILE);
+ g_assert (_obj);
+ AtspiAccessible *child = atspi_accessible_get_child_at_index (_obj, 0, NULL);
+ g_assert (child);
+ AtspiText *obj = atspi_accessible_get_text_iface (child);
+
+ gchar *text = atspi_text_get_text (obj, 9, 14, NULL);
+ g_assert_cmpstr (text, ==, "works");
+ g_free (text);
+}
+
+static void
+atk_test_text_get_caret_offset (gpointer fixture, gconstpointer user_data)
+{
+ AtspiAccessible *_obj = get_root_obj (DATA_FILE);
+ g_assert (_obj);
+ AtspiAccessible *child = atspi_accessible_get_child_at_index (_obj, 0, NULL);
+ g_assert (child);
+ AtspiText *obj = atspi_accessible_get_text_iface (child);
+
+ gint pos = atspi_text_get_caret_offset (obj, NULL);
+ g_assert_cmpint (pos,==,-1);
+}
+
+static void
+atk_test_text_set_caret_offset (gpointer fixture, gconstpointer user_data)
+{
+ AtspiAccessible *_obj = get_root_obj (DATA_FILE);
+ g_assert (_obj);
+ AtspiAccessible *child = atspi_accessible_get_child_at_index (_obj, 0, NULL);
+ g_assert (child);
+ AtspiText *obj = atspi_accessible_get_text_iface (child);
+
+ g_assert_true (atspi_text_set_caret_offset (obj, 5, NULL));
+ g_assert_false (atspi_text_set_caret_offset (obj, -1, NULL));
+ gint pos = atspi_text_get_caret_offset (obj, NULL);
+ g_assert_cmpint (pos, ==, 5);
+}
+static void
+atk_test_text_get_character_at_offset (gpointer fixture, gconstpointer user_data)
+{
+ AtspiAccessible *_obj = get_root_obj (DATA_FILE);
+ g_assert (_obj);
+ AtspiAccessible *child = atspi_accessible_get_child_at_index (_obj, 0, NULL);
+ g_assert (child);
+ AtspiText *obj = atspi_accessible_get_text_iface (child);
+
+ guint chr = atspi_text_get_character_at_offset (obj, 5, NULL);
+ g_assert_cmpint (chr, ==, 32);
+}
+
+static void
+atk_test_text_get_character_extents (gpointer fixture, gconstpointer user_data)
+{
+ AtspiAccessible *_obj = get_root_obj (DATA_FILE);
+ g_assert (_obj);
+ AtspiAccessible *child = atspi_accessible_get_child_at_index (_obj, 0, NULL);
+ g_assert (child);
+ AtspiText *obj = atspi_accessible_get_text_iface (child);
+
+ AtspiRect *rec = atspi_text_get_character_extents (obj, 6, ATSPI_COORD_TYPE_SCREEN, NULL);
+ g_assert_cmpint (rec->x, ==, 100);
+ g_assert_cmpint (rec->y, ==, 33);
+ g_assert_cmpint (rec->width, ==, 110);
+ g_assert_cmpint (rec->height, ==, 30);
+
+ g_free (rec);
+}
+
+static void
+atk_test_text_get_range_extents (gpointer fixture, gconstpointer user_data)
+{
+ AtspiAccessible *_obj = get_root_obj (DATA_FILE);
+ g_assert (_obj);
+ AtspiAccessible *child = atspi_accessible_get_child_at_index (_obj, 0, NULL);
+ g_assert (child);
+ AtspiText *obj = atspi_accessible_get_text_iface (child);
+
+ AtspiRect *rec = atspi_text_get_range_extents (obj, 0, 1, ATSPI_COORD_TYPE_SCREEN, NULL);
+
+ g_assert_cmpint (rec->x, ==, 100);
+ g_assert_cmpint (rec->y, ==, 33);
+ g_assert_cmpint (rec->width, ==, 110);
+ g_assert_cmpint (rec->height, ==, 30);
+
+ g_free (rec);
+}
+
+static void
+atk_test_text_add_selection (gpointer fixture, gconstpointer user_data)
+{
+ AtspiAccessible *_obj = get_root_obj (DATA_FILE);
+ g_assert (_obj);
+ AtspiAccessible *child = atspi_accessible_get_child_at_index (_obj, 0, NULL);
+ g_assert (child);
+ AtspiText *obj = atspi_accessible_get_text_iface (child);
+
+ g_assert_true (atspi_text_add_selection (obj, 9, 14, NULL));
+}
+
+static void
+atk_test_text_get_n_selections (gpointer fixture, gconstpointer user_data)
+{
+ AtspiAccessible *_obj = get_root_obj (DATA_FILE);
+ g_assert (_obj);
+ AtspiAccessible *child = atspi_accessible_get_child_at_index (_obj, 0, NULL);
+ g_assert (child);
+ AtspiText *obj = atspi_accessible_get_text_iface (child);
+
+ gint n = atspi_text_get_n_selections (obj, NULL);
+ g_assert_cmpint (n, ==, 0);
+ g_assert_true (atspi_text_add_selection (obj, 9, 14, NULL));
+ g_assert_true (atspi_text_add_selection (obj, 9, 14, NULL));
+ g_assert_true (atspi_text_add_selection (obj, 9, 14, NULL));
+ n = atspi_text_get_n_selections (obj, NULL);
+ g_assert_cmpint (n, ==, 3);
+}
+
+static void
+atk_test_text_get_selection (gpointer fixture, gconstpointer user_data)
+{
+ AtspiAccessible *_obj = get_root_obj (DATA_FILE);
+ g_assert (_obj);
+ AtspiAccessible *child = atspi_accessible_get_child_at_index (_obj, 0, NULL);
+ g_assert (child);
+ AtspiText *obj = atspi_accessible_get_text_iface (child);
+
+ g_assert_true (atspi_text_add_selection (obj, 9, 14, NULL));
+ g_assert_true (atspi_text_add_selection (obj, 14, 15, NULL));
+
+ AtspiRange *range = atspi_text_get_selection (obj, 0, NULL);
+ g_assert (range);
+ g_assert_cmpint (range->start_offset, ==, 9);
+ g_assert_cmpint (range->end_offset, ==, 14);
+ g_free (range);
+
+ range = atspi_text_get_selection (obj, 1, NULL);
+ g_assert (range);
+ g_assert_cmpint (range->start_offset, ==, 14);
+ g_assert_cmpint (range->end_offset, ==, 15);
+ g_free (range);
+}
+
+static void
+atk_test_text_set_selection (gpointer fixture, gconstpointer user_data)
+{
+ AtspiAccessible *_obj = get_root_obj (DATA_FILE);
+ g_assert (_obj);
+ AtspiAccessible *child = atspi_accessible_get_child_at_index (_obj, 0, NULL);
+ g_assert (child);
+ AtspiText *obj = atspi_accessible_get_text_iface (child);
+
+ g_assert_true(atspi_text_add_selection (obj, 9, 14, NULL));
+ g_assert_true(atspi_text_add_selection (obj, 14, 15, NULL));
+ g_assert_true(atspi_text_set_selection (obj, 0, 1, 2, NULL));
+ g_assert_true(atspi_text_set_selection (obj, 1, 3, 4, NULL));
+
+ AtspiRange *range = atspi_text_get_selection (obj, 0, NULL);
+ g_assert (range);
+ g_assert_cmpint (range->start_offset, ==, 1);
+ g_assert_cmpint (range->end_offset, ==, 2);
+ g_free (range);
+
+ range = atspi_text_get_selection (obj, 1, NULL);
+ g_assert (range);
+ g_assert_cmpint (range->start_offset, ==, 3);
+ g_assert_cmpint (range->end_offset, ==, 4);
+ g_free (range);
+}
+
+static void
+atk_test_text_remove_selection (gpointer fixture, gconstpointer user_data)
+{
+ AtspiAccessible *_obj = get_root_obj (DATA_FILE);
+ g_assert (_obj);
+ AtspiAccessible *child = atspi_accessible_get_child_at_index (_obj, 0, NULL);
+ g_assert (child);
+ AtspiText *obj = atspi_accessible_get_text_iface (child);
+
+ gint n = atspi_text_get_n_selections (obj, NULL);
+ g_assert_cmpint (n, ==, 0);
+
+ g_assert_true (atspi_text_add_selection (obj, 9, 14, NULL));
+ g_assert_true (atspi_text_add_selection (obj, 14, 15, NULL));
+ n = atspi_text_get_n_selections (obj, NULL);
+ g_assert_cmpint (n, ==, 2);
+
+ g_assert_true (atspi_text_remove_selection (obj, 1, NULL));
+ n = atspi_text_get_n_selections (obj, NULL);
+ g_assert_cmpint (n, ==, 1);
+
+ g_assert_true (atspi_text_remove_selection (obj, 0, NULL));
+ n = atspi_text_get_n_selections (obj, NULL);
+ g_assert_cmpint (n, ==, 0);
+}
+
+static void
+atk_test_text_get_offset_at_point (gpointer fixture, gconstpointer user_data)
+{
+ AtspiAccessible *_obj = get_root_obj (DATA_FILE);
+ g_assert (_obj);
+ AtspiAccessible *child = atspi_accessible_get_child_at_index (_obj, 0, NULL);
+ g_assert (child);
+ AtspiText *obj = atspi_accessible_get_text_iface (child);
+
+ gint n = atspi_text_get_offset_at_point (obj, 0, 0, ATSPI_COORD_TYPE_SCREEN, NULL);
+ g_assert_cmpint (n, ==, 5);
+}
+
+static void
+atk_test_text_get_text_attribute_value (gpointer fixture, gconstpointer user_data)
+{
+ AtspiAccessible *_obj = get_root_obj (DATA_FILE);
+ g_assert (_obj);
+ AtspiAccessible *child = atspi_accessible_get_child_at_index (_obj, 0, NULL);
+ g_assert (child);
+ AtspiText *obj = atspi_accessible_get_text_iface (child);
+
+ GError *err = NULL;
+ gchar *str = atspi_text_get_text_attribute_value (obj, 0, "text_test_attr1", &err);
+ if (err)
+ g_print ("error msg:%s\n", err->message);
+ g_assert (str);
+ g_assert_cmpstr (str, ==, "on");
+ g_free (str);
+
+ str = atspi_text_get_text_attribute_value (obj, 0, "text_test_attr2", NULL);
+ g_assert (str);
+ g_assert_cmpstr (str, ==, "off");
+ g_free (str);
+}
+
+static void
+atk_test_text_get_attribute_run (gpointer fixture, gconstpointer user_data)
+{
+ AtspiAccessible *_obj = get_root_obj (DATA_FILE);
+ g_assert (_obj);
+ AtspiAccessible *child = atspi_accessible_get_child_at_index (_obj, 0, NULL);
+ g_assert (child);
+ AtspiText *obj = atspi_accessible_get_text_iface (child);
+
+ gint start_offset = 0;
+ gint end_offset = 0;
+ GHashTable *tab = atspi_text_get_attribute_run (obj, 0, FALSE, &start_offset, &end_offset , NULL);
+
+ g_assert (tab);
+
+ g_assert_cmpstr ((const char*) g_hash_table_find (tab, GHRunc_find, "text_test_attr1"), ==, "on");
+ g_assert_cmpstr ((const char*) g_hash_table_find (tab, GHRunc_find, "text_test_attr2"), ==, "off");
+ g_assert_cmpint (start_offset, == , 5);
+ g_assert_cmpint (end_offset, == , 10);
+ g_hash_table_destroy (tab);
+}
+
+static void
+atk_test_text_get_defualt_attributes (gpointer fixture, gconstpointer user_data)
+{
+ AtspiAccessible *_obj = get_root_obj (DATA_FILE);
+ g_assert (_obj);
+ AtspiAccessible *child = atspi_accessible_get_child_at_index (_obj, 0, NULL);
+ g_assert (child);
+ AtspiText *obj = atspi_accessible_get_text_iface (child);
+
+ GHashTable *tab = atspi_text_get_default_attributes (obj, NULL);
+ g_assert (tab);
+
+ g_assert_cmpstr ((const char*) g_hash_table_find (tab, GHRunc_find, "bold_text"), ==, "on");
+ g_assert_cmpstr ((const char*) g_hash_table_find (tab, GHRunc_find, "underline_text"), ==, "off");
+ g_assert_cmpstr ((const char*) g_hash_table_find (tab, GHRunc_find, "dummy_text"), ==, "");
+ g_hash_table_destroy (tab);
+}
+
+static void
+atk_test_text_get_text_attributes (gpointer fixture, gconstpointer user_data)
+{
+ AtspiAccessible *_obj = get_root_obj (DATA_FILE);
+ g_assert (_obj);
+ AtspiAccessible *child = atspi_accessible_get_child_at_index (_obj, 0, NULL);
+ g_assert (child);
+ AtspiText *obj = atspi_accessible_get_text_iface (child);
+
+ gint start_offset = 0;
+ gint end_offset = 0;
+ GHashTable *tab = atspi_text_get_text_attributes (obj, 0, &start_offset, &end_offset, NULL);
+
+ g_assert (tab);
+
+ g_assert_cmpstr ((const char*) g_hash_table_find (tab, GHRunc_find, "text_test_attr1"), ==, "on");
+ g_assert_cmpstr ((const char*) g_hash_table_find (tab, GHRunc_find, "text_test_attr2"), ==, "off");
+ g_assert_cmpint (start_offset, == , 5);
+ g_assert_cmpint (end_offset, == , 10);
+ g_hash_table_destroy (tab);
+}
+
+static void
+atk_test_text_get_string_at_offset_s1 (gpointer fixture, gconstpointer user_data)
+{
+ AtspiAccessible *_obj = get_root_obj (DATA_FILE);
+ g_assert (_obj);
+ AtspiAccessible *child = atspi_accessible_get_child_at_index (_obj, 0, NULL);
+ g_assert (child);
+ AtspiText *obj = atspi_accessible_get_text_iface (child);
+
+ AtspiTextRange *range = atspi_text_get_string_at_offset (obj, 0, ATSPI_TEXT_GRANULARITY_CHAR, NULL);
+
+ g_assert_cmpint (range->start_offset, ==, 0);
+ g_assert_cmpint (range->end_offset, ==, 1);
+ g_assert_cmpstr (range->content, ==, "t");
+
+ g_free (range);
+
+ range = atspi_text_get_string_at_offset (obj, 5, ATSPI_TEXT_GRANULARITY_WORD, NULL);
+
+ g_assert_cmpint (range->start_offset, ==, 6);
+ g_assert_cmpint (range->end_offset, ==, 7);
+ g_assert_cmpstr (range->content, ==, "it");
+
+ g_free (range);
+}
+static void
+atk_test_text_get_string_at_offset_s2 (gpointer fixture, gconstpointer user_data)
+{
+ AtspiAccessible *_obj = get_root_obj (DATA_FILE);
+ g_assert (_obj);
+ AtspiAccessible *child = atspi_accessible_get_child_at_index (_obj, 1, NULL);
+ g_assert (child);
+ AtspiText *obj = atspi_accessible_get_text_iface (child);
+
+ AtspiTextRange *range = atspi_text_get_string_at_offset (obj, 20, ATSPI_TEXT_GRANULARITY_SENTENCE, NULL);
+
+ g_assert_cmpint (range->start_offset, ==, 18);
+ g_assert_cmpint (range->end_offset, ==, 34);
+ g_assert_cmpstr (range->content, ==, "Second sentence.");
+
+ g_free (range);
+
+ range = atspi_text_get_string_at_offset (obj, 21, ATSPI_TEXT_GRANULARITY_LINE, NULL);
+
+ g_assert_cmpint (range->start_offset, ==, 18);
+ g_assert_cmpint (range->end_offset, ==, 34);
+ g_assert_cmpstr (range->content, ==, "Second sentence.");
+
+ g_free (range);
+
+ range = atspi_text_get_string_at_offset (obj, 0, ATSPI_TEXT_GRANULARITY_PARAGRAPH, NULL);
+
+ g_assert_cmpint (range->start_offset, ==, 0);
+ g_assert_cmpint (range->end_offset, ==, 0);
+ g_assert_cmpstr (range->content, ==, "");
+
+ g_free (range);
+}
+
+static void
+atk_test_text_get_bounded_ranges (gpointer fixture, gconstpointer user_data)
+{
+ AtspiAccessible *_obj = get_root_obj (DATA_FILE);
+ g_assert (_obj);
+ AtspiAccessible *child = atspi_accessible_get_child_at_index (_obj, 0, NULL);
+ g_assert (child);
+ AtspiText *obj = atspi_accessible_get_text_iface (child);
+
+ GArray *array = atspi_text_get_bounded_ranges (obj, 15, 21, 100, 50, ATSPI_COORD_TYPE_SCREEN, ATSPI_TEXT_CLIP_MAX, ATSPI_TEXT_CLIP_MIN, NULL);
+ g_assert (array);
+
+ AtspiTextRange *range = &g_array_index (array, AtspiTextRange, 0);
+ g_assert_cmpint (g_array_get_element_size (array), ==, sizeof (AtspiTextRange));
+ g_assert_cmpint (range->start_offset, ==, 0);
+ g_assert_cmpint (range->end_offset, ==, 5);
+ g_assert_cmpstr (range->content, ==, "text0");
+
+ range = &g_array_index (array, AtspiTextRange, 1);
+ g_assert_cmpint (g_array_get_element_size (array), ==, sizeof (AtspiTextRange));
+ g_assert_cmpint (range->start_offset, ==, 6);
+ g_assert_cmpint (range->end_offset, ==, 10);
+ g_assert_cmpstr (range->content, ==, "it w");
+
+ g_array_free (array,TRUE);
+}
+
+static void
+teardown_text_test (gpointer fixture, gconstpointer user_data)
+{
+ kill (child_pid, SIGTERM);
+}
+
+void
+atk_test_text (void)
+{
+ g_test_add_vtable (ATK_TEST_PATH_TEXT "/atk_test_text_get_character_count",
+ 0, NULL, NULL, atk_test_text_get_character_count, teardown_text_test);
+ g_test_add_vtable (ATK_TEST_PATH_TEXT "/atk_test_text_get_text",
+ 0, NULL, NULL, atk_test_text_get_text, teardown_text_test);
+ g_test_add_vtable (ATK_TEST_PATH_TEXT "/atk_test_text_get_caret_offset",
+ 0, NULL, NULL, atk_test_text_get_caret_offset, teardown_text_test);
+ g_test_add_vtable (ATK_TEST_PATH_TEXT "/atk_test_text_get_text_attributes",
+ 0, NULL, NULL, atk_test_text_get_text_attributes, teardown_text_test);
+ g_test_add_vtable (ATK_TEST_PATH_TEXT "/atk_test_text_get_attribute_run",
+ 0, NULL, NULL, atk_test_text_get_attribute_run, teardown_text_test);
+ g_test_add_vtable (ATK_TEST_PATH_TEXT "/atk_test_text_get_text_attribute_value",
+ 0, NULL, NULL, atk_test_text_get_text_attribute_value, teardown_text_test);
+ g_test_add_vtable (ATK_TEST_PATH_TEXT "/atk_test_text_get_defualt_attributes",
+ 0, NULL, NULL, atk_test_text_get_defualt_attributes, teardown_text_test);
+ g_test_add_vtable (ATK_TEST_PATH_TEXT "/atk_test_text_set_caret_offset",
+ 0, NULL, NULL, atk_test_text_set_caret_offset, teardown_text_test);
+ g_test_add_vtable (ATK_TEST_PATH_TEXT "/atk_test_text_get_string_at_offset_s1",
+ 0, NULL, NULL, atk_test_text_get_string_at_offset_s1, teardown_text_test );
+ g_test_add_vtable (ATK_TEST_PATH_TEXT "/atk_test_text_get_string_at_offset_s2",
+ 0, NULL, NULL, atk_test_text_get_string_at_offset_s2, teardown_text_test );
+ g_test_add_vtable (ATK_TEST_PATH_TEXT "/atk_test_text_get_character_at_offset",
+ 0, NULL, NULL, atk_test_text_get_character_at_offset, teardown_text_test);
+ g_test_add_vtable (ATK_TEST_PATH_TEXT "/atk_test_text_get_character_extents",
+ 0, NULL, NULL, atk_test_text_get_character_extents, teardown_text_test);
+ g_test_add_vtable (ATK_TEST_PATH_TEXT "/atk_test_text_get_offset_at_point",
+ 0, NULL, NULL, atk_test_text_get_offset_at_point, teardown_text_test);
+ g_test_add_vtable (ATK_TEST_PATH_TEXT "/atk_test_text_get_range_extents",
+ 0, NULL, NULL, atk_test_text_get_range_extents, teardown_text_test);
+ g_test_add_vtable (ATK_TEST_PATH_TEXT "/atk_test_text_get_bounded_ranges",
+ 0, NULL, NULL, atk_test_text_get_bounded_ranges, teardown_text_test);
+ g_test_add_vtable (ATK_TEST_PATH_TEXT "/atk_test_text_get_n_selections",
+ 0, NULL, NULL, atk_test_text_get_n_selections, teardown_text_test);
+ g_test_add_vtable (ATK_TEST_PATH_TEXT "/atk_test_text_get_selection",
+ 0, NULL, NULL, atk_test_text_get_selection, teardown_text_test);
+ g_test_add_vtable (ATK_TEST_PATH_TEXT "/atk_test_text_add_selection",
+ 0, NULL, NULL, atk_test_text_add_selection, teardown_text_test );
+ g_test_add_vtable (ATK_TEST_PATH_TEXT "/atk_test_text_remove_selection",
+ 0, NULL, NULL, atk_test_text_remove_selection, teardown_text_test );
+ g_test_add_vtable (ATK_TEST_PATH_TEXT "/atk_test_text_set_selection",
+ 0, NULL, NULL, atk_test_text_set_selection, teardown_text_test);
+}