Testing AT-SPI requires both a test application and an AT client. Test applications are built from xml files using xml loader module, based on Dummy ATK implementation. Each test is built as a GTest object and packed into a single interface test suite. Test directory contains: * atk_suite - Generates a test suite, the main executable of all test suite, help is shown when run with '-h' parameter. * atk-object-xml-loader - Generates dummy atk object from xml file. * test-application - Starts an application with atk object generated by atk-object-xml-loader * data/ - Folder which contains xml file from which dummy atk object is generated * dummyatk/ - Folder which contains dummy atk implementation ************************ HOW TO CREATE NEW TESTS: 1) Add atspi interface which will be tested to Atk_Test_Case in atk_suite.c and atk_suite.h, then add proper test call in atk_suite_build function. 2) Prepare xml file which describes tested root object and descendants. If any new fields in xml file appear, atk-object-xml-loader should be modifed. 3) Add test file named atk_test_TEST_NAME.c, where TEST_NAME is tested interface name: a) Create function which runs tested application b) Create get_root_obj function for tested interface c) Create tested functions d) Create function which calls all test functions, this function should be called in atk_suite.c file. ************************* AVAILABLE TESTS: - Accessible: -accessible_get_name -accessible_get_description -accessible_get_child_count -accessible_get_parent -accessible_get_child_at_index -accessible_get_index_in_parent -accessible_get_relation_set_1 -accessible_get_relation_set_2 -accessible_get_role -accessible_get_role_name -accessible_get_localized_role_name -accessible_get_state_set -accessible_get_attributes -accessible_get_attributes_as_array -accessible_get_toolkit_name -accessible_get_toolkit_version -accessible_get_atspi_version -accessible_get_id -accessible_get_application -accessible_get_action_iface -accessible_get_collection_iface -accessible_get_component_iface -accessible_get_document_iface -accessible_get_editable_text_iface -accessible_get_hypertext_iface -accessible_get_image_iface -accessible_get_selection_iface -accessible_get_table_iface -accessible_get_text_iface -accessible_get_value_iface -accessible_get_interfaces -accessible_get_object_locale -accessible_set_cache_mask -accessible_clear_cache -accessible_get_process_id - Action: -get_action_interface -action_get_action_description -action_get_action_name -action_get_n_actions -action_get_key_binding -action_get_localized_name -action_do_action - Component: -component_contains -component_get_accessible_at_point -component_get_extents -component_get_layer -component_get_mdi_z_order -component_grab_focus -component_get_alpha -component_set_extents - Collection -get_collection_iface -get_matches -get_matches_to -get_matches_from - EditableText: -get_editable_text_iface -editable_text_set_attributes -editable_text_insert_text -editable_text_copy_text -editable_text_cut_text -editable_text_delete_text -editable_text_paste_text - Image: -get_image_iface -image_get_image_size -image_get_image_position -image_get_image_extents -image_get_image_locale - HyperLink -hyperlink_get_n_anchors -hyperlink_get_uri -hyperlink_get_object -hyperlink_get_index_range -hyperlink_get_start_index -hyperlink_get_end_index -hyperlink_is_valid - HyperText -hypertext_get_n_links -hypertext_get_link -hypertext_get_link_index - Relation -relation_get_relation_type -relation_get_n_targets -relation_get_target - Selection -selection_get_n_selected_children -selection_get_selected_child -selection_select_child -selection_deselect_selected -selection_deselect_child -selection_is_child_selected -selection_select_all -selection_clear_selection - State Set -state_set_new -state_set_set_by_name -state_set_add -state_set_compare -state_set_contains -state_set_equals -state_set_get_states -state_set_is_empty -state_set_remove - Table -table_get_caption -table_get_summary -table_get_n_rows -table_get_n_columns -table_get_accessible_at -table_get_index_at -table_get_row_at_index -table_get_column_at_index -table_get_row_description -table_get_column_description -table_get_row_extent_at -table_get_column_extent_at -table_get_row_header -table_get_column_header -table_get_n_selected_rows -table_get_selected_rows -table_get_selected_columns -table_get_n_selected_columns -table_is_row_selected -table_is_column_selected -table_add_row_selection -table_add_column_selection -table_remove_row_selection -table_remove_column_selection -table_get_row_column_extents_at_index -table_is_selected - Table Cell -table_cell_get_column_span -table_cell_get_column_header_cells -table_cell_get_column_index -table_cell_get_row_span -table_cell_get_row_header_cells -table_cell_get_row_column_span -table_cell_get_table - Text: -text_get_character_count -text_get_text -text_get_caret_offset -text_get_text_attributes -text_get_attribute_run -text_get_get_text_attribute_value -text_get_defualt_attributes -text_set_caret_offset -text_get_string_at_offset -text_get_character_at_offset -text_get_character_extents -text_get_offset_at_point -text_get_range_extents -text_get_bounded_ranges -text_get_n_selections -text_get_selection -text_add_selection -text_remove_selection -text_set_selection - Value -value_get_minimum_value -value_get_current_value -value_get_maximum_value -value_set_current_value -value_get_minimum_increment