diff options
Diffstat (limited to 'tests/atk_test_text.c')
-rw-r--r-- | tests/atk_test_text.c | 481 |
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); +} |