gail: update AtkValue test modules
Use a shared private compatibility helper in the GAIL test modules. Exercise the modern AtkValue API when ATK 2.12 or newer is available while retaining the legacy test path for older ATK versions. Initialize temporary GValues explicitly and keep the helper symbols private to the test modules.
This commit is contained in:
parent
35fd6039f8
commit
f2afa5c648
5 changed files with 122 additions and 17 deletions
|
|
@ -12,6 +12,8 @@ module_LTLIBRARIES = \
|
||||||
libferret.la
|
libferret.la
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
noinst_HEADERS = testvalue.h
|
||||||
|
|
||||||
noinst_LTLIBRARIES = \
|
noinst_LTLIBRARIES = \
|
||||||
libtestaction.la \
|
libtestaction.la \
|
||||||
libtestbutton.la \
|
libtestbutton.la \
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@
|
||||||
#include <strings.h>
|
#include <strings.h>
|
||||||
|
|
||||||
#include "testlib.h"
|
#include "testlib.h"
|
||||||
|
#include "testvalue.h"
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
|
|
@ -1389,7 +1390,8 @@ _print_text_attributes (AtkText *aobject)
|
||||||
static gint
|
static gint
|
||||||
_print_value (AtkValue *aobject)
|
_print_value (AtkValue *aobject)
|
||||||
{
|
{
|
||||||
GValue *value_back, val;
|
GValue val = { 0, };
|
||||||
|
GValue *value_back;
|
||||||
gint group_num;
|
gint group_num;
|
||||||
TabNumber tab_n = VALUE;
|
TabNumber tab_n = VALUE;
|
||||||
|
|
||||||
|
|
@ -1398,11 +1400,11 @@ _print_value (AtkValue *aobject)
|
||||||
group_num = _print_groupname(tab_n, VALUE_INTERFACE,
|
group_num = _print_groupname(tab_n, VALUE_INTERFACE,
|
||||||
"Value Interface");
|
"Value Interface");
|
||||||
|
|
||||||
atk_value_get_current_value(aobject, value_back);
|
gail_test_value_get_current_value(aobject, value_back);
|
||||||
_print_value_type(group_num, "Value", value_back);
|
_print_value_type(group_num, "Value", value_back);
|
||||||
atk_value_get_minimum_value(aobject, value_back);
|
gail_test_value_get_minimum_value(aobject, value_back);
|
||||||
_print_value_type(group_num, "Minimum Value", value_back);
|
_print_value_type(group_num, "Minimum Value", value_back);
|
||||||
atk_value_get_maximum_value(aobject, value_back);
|
gail_test_value_get_maximum_value(aobject, value_back);
|
||||||
_print_value_type(group_num, "Maximum Value", value_back);
|
_print_value_type(group_num, "Maximum Value", value_back);
|
||||||
return(group_num);
|
return(group_num);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <gtk/gtk.h>
|
#include <gtk/gtk.h>
|
||||||
#include <testlib.h>
|
#include <testlib.h>
|
||||||
|
#include "testvalue.h"
|
||||||
|
|
||||||
static gint _test_paned (gpointer data);
|
static gint _test_paned (gpointer data);
|
||||||
static void _check_paned (AtkObject *obj);
|
static void _check_paned (AtkObject *obj);
|
||||||
|
|
@ -31,17 +32,17 @@ static void _property_change_handler (AtkObject *obj,
|
||||||
value = &val;
|
value = &val;
|
||||||
|
|
||||||
memset (value, 0, sizeof (GValue));
|
memset (value, 0, sizeof (GValue));
|
||||||
atk_value_get_current_value (ATK_VALUE (obj), value);
|
gail_test_value_get_current_value (ATK_VALUE (obj), value);
|
||||||
g_return_if_fail (G_VALUE_HOLDS_INT (value));
|
g_return_if_fail (G_VALUE_HOLDS_INT (value));
|
||||||
position = g_value_get_int (value);
|
position = g_value_get_int (value);
|
||||||
g_print ("Position is %d previous position was %d\n",
|
g_print ("Position is %d previous position was %d\n",
|
||||||
position, last_position);
|
position, last_position);
|
||||||
last_position = position;
|
last_position = position;
|
||||||
atk_value_get_minimum_value (ATK_VALUE (obj), value);
|
gail_test_value_get_minimum_value (ATK_VALUE (obj), value);
|
||||||
g_return_if_fail (G_VALUE_HOLDS_INT (value));
|
g_return_if_fail (G_VALUE_HOLDS_INT (value));
|
||||||
position = g_value_get_int (value);
|
position = g_value_get_int (value);
|
||||||
g_print ("Minimum Value is %d\n", position);
|
g_print ("Minimum Value is %d\n", position);
|
||||||
atk_value_get_maximum_value (ATK_VALUE (obj), value);
|
gail_test_value_get_maximum_value (ATK_VALUE (obj), value);
|
||||||
g_return_if_fail (G_VALUE_HOLDS_INT (value));
|
g_return_if_fail (G_VALUE_HOLDS_INT (value));
|
||||||
position = g_value_get_int (value);
|
position = g_value_get_int (value);
|
||||||
g_print ("Maximum Value is %d\n", position);
|
g_print ("Maximum Value is %d\n", position);
|
||||||
|
|
@ -61,14 +62,14 @@ static gint _test_paned (gpointer data)
|
||||||
value = &val;
|
value = &val;
|
||||||
|
|
||||||
memset (value, 0, sizeof (GValue));
|
memset (value, 0, sizeof (GValue));
|
||||||
atk_value_get_current_value (ATK_VALUE (obj), value);
|
gail_test_value_get_current_value (ATK_VALUE (obj), value);
|
||||||
g_return_val_if_fail (G_VALUE_HOLDS_INT (value), FALSE);
|
g_return_val_if_fail (G_VALUE_HOLDS_INT (value), FALSE);
|
||||||
position = g_value_get_int (value);
|
position = g_value_get_int (value);
|
||||||
g_print ("Position is : %d\n", position);
|
g_print ("Position is : %d\n", position);
|
||||||
last_position = position;
|
last_position = position;
|
||||||
position *= 2;
|
position *= 2;
|
||||||
g_value_set_int (value, position);
|
g_value_set_int (value, position);
|
||||||
atk_value_set_current_value (ATK_VALUE (obj), value);
|
gail_test_value_set_current_value (ATK_VALUE (obj), value);
|
||||||
times++;
|
times++;
|
||||||
}
|
}
|
||||||
if (times < 4)
|
if (times < 4)
|
||||||
|
|
|
||||||
98
modules/other/gail/tests/testvalue.h
Normal file
98
modules/other/gail/tests/testvalue.h
Normal file
|
|
@ -0,0 +1,98 @@
|
||||||
|
#ifndef __GAIL_TEST_VALUE_H__
|
||||||
|
#define __GAIL_TEST_VALUE_H__
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
|
#include <atk/atk.h>
|
||||||
|
|
||||||
|
#ifdef HAVE_ATK_VALUE_2_12
|
||||||
|
|
||||||
|
static void
|
||||||
|
gail_test_value_store_number (AtkValue *value,
|
||||||
|
GValue *result,
|
||||||
|
gdouble number)
|
||||||
|
{
|
||||||
|
if (G_VALUE_TYPE (result) == 0)
|
||||||
|
g_value_init (result,
|
||||||
|
atk_object_get_role (ATK_OBJECT (value)) ==
|
||||||
|
ATK_ROLE_SPLIT_PANE ? G_TYPE_INT : G_TYPE_DOUBLE);
|
||||||
|
|
||||||
|
if (G_VALUE_HOLDS_INT (result))
|
||||||
|
g_value_set_int (result, (gint) number);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
g_return_if_fail (G_VALUE_HOLDS_DOUBLE (result));
|
||||||
|
g_value_set_double (result, number);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gail_test_value_get_current_value (AtkValue *value,
|
||||||
|
GValue *result)
|
||||||
|
{
|
||||||
|
gdouble number;
|
||||||
|
|
||||||
|
atk_value_get_value_and_text (value, &number, NULL);
|
||||||
|
gail_test_value_store_number (value, result, number);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gail_test_value_get_limit (AtkValue *value,
|
||||||
|
GValue *result,
|
||||||
|
gboolean upper)
|
||||||
|
{
|
||||||
|
AtkRange *range;
|
||||||
|
gdouble number;
|
||||||
|
|
||||||
|
range = atk_value_get_range (value);
|
||||||
|
g_return_if_fail (range != NULL);
|
||||||
|
|
||||||
|
if (upper)
|
||||||
|
number = atk_range_get_upper_limit (range);
|
||||||
|
else
|
||||||
|
number = atk_range_get_lower_limit (range);
|
||||||
|
|
||||||
|
atk_range_free (range);
|
||||||
|
gail_test_value_store_number (value, result, number);
|
||||||
|
}
|
||||||
|
|
||||||
|
#define gail_test_value_get_minimum_value(value, result) \
|
||||||
|
gail_test_value_get_limit ((value), (result), FALSE)
|
||||||
|
|
||||||
|
#define gail_test_value_get_maximum_value(value, result) \
|
||||||
|
gail_test_value_get_limit ((value), (result), TRUE)
|
||||||
|
|
||||||
|
#define GAIL_TEST_VALUE_NUMBER(value) \
|
||||||
|
(G_VALUE_HOLDS_INT (value) \
|
||||||
|
? (gdouble) g_value_get_int (value) \
|
||||||
|
: g_value_get_double (value))
|
||||||
|
|
||||||
|
#define gail_test_value_set_current_value(value, new_value) \
|
||||||
|
(atk_value_set_value ((value), \
|
||||||
|
GAIL_TEST_VALUE_NUMBER (new_value)), \
|
||||||
|
TRUE)
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#define GAIL_TEST_VALUE_IFACE(value) \
|
||||||
|
ATK_VALUE_GET_IFACE (value)
|
||||||
|
|
||||||
|
#define gail_test_value_get_current_value(value, result) \
|
||||||
|
(GAIL_TEST_VALUE_IFACE (value)->get_current_value ( \
|
||||||
|
(value), (result)))
|
||||||
|
|
||||||
|
#define gail_test_value_get_minimum_value(value, result) \
|
||||||
|
(GAIL_TEST_VALUE_IFACE (value)->get_minimum_value ( \
|
||||||
|
(value), (result)))
|
||||||
|
|
||||||
|
#define gail_test_value_get_maximum_value(value, result) \
|
||||||
|
(GAIL_TEST_VALUE_IFACE (value)->get_maximum_value ( \
|
||||||
|
(value), (result)))
|
||||||
|
|
||||||
|
#define gail_test_value_set_current_value(value, new_value) \
|
||||||
|
(GAIL_TEST_VALUE_IFACE (value)->set_current_value ( \
|
||||||
|
(value), (new_value)))
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* __GAIL_TEST_VALUE_H__ */
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <atk/atk.h>
|
#include <atk/atk.h>
|
||||||
#include <gtk/gtk.h>
|
#include <gtk/gtk.h>
|
||||||
|
#include "testvalue.h"
|
||||||
|
|
||||||
static void _traverse_children (AtkObject *obj);
|
static void _traverse_children (AtkObject *obj);
|
||||||
static void _add_handler (AtkObject *obj);
|
static void _add_handler (AtkObject *obj);
|
||||||
|
|
@ -14,8 +15,8 @@ static void _value_change_handler (AtkObject *obj,
|
||||||
AtkPropertyValues *values)
|
AtkPropertyValues *values)
|
||||||
{
|
{
|
||||||
const gchar *type_name = g_type_name (G_TYPE_FROM_INSTANCE (obj));
|
const gchar *type_name = g_type_name (G_TYPE_FROM_INSTANCE (obj));
|
||||||
GValue *value_back, val;
|
GValue val = { 0, };
|
||||||
|
GValue *value_back;
|
||||||
value_back = &val;
|
value_back = &val;
|
||||||
|
|
||||||
if (!ATK_IS_VALUE (obj)) {
|
if (!ATK_IS_VALUE (obj)) {
|
||||||
|
|
@ -33,17 +34,17 @@ static void _value_change_handler (AtkObject *obj,
|
||||||
|
|
||||||
g_print("Now calling the AtkValue interface functions\n");
|
g_print("Now calling the AtkValue interface functions\n");
|
||||||
|
|
||||||
atk_value_get_current_value (ATK_VALUE(obj), value_back);
|
gail_test_value_get_current_value (ATK_VALUE(obj), value_back);
|
||||||
g_return_if_fail (G_VALUE_HOLDS_DOUBLE (value_back));
|
g_return_if_fail (G_VALUE_HOLDS_DOUBLE (value_back));
|
||||||
g_print ("atk_value_get_current_value returns %f\n",
|
g_print ("atk_value_get_current_value returns %f\n",
|
||||||
g_value_get_double (value_back) );
|
g_value_get_double (value_back) );
|
||||||
|
|
||||||
atk_value_get_maximum_value (ATK_VALUE (obj), value_back);
|
gail_test_value_get_maximum_value (ATK_VALUE (obj), value_back);
|
||||||
g_return_if_fail (G_VALUE_HOLDS_DOUBLE (value_back));
|
g_return_if_fail (G_VALUE_HOLDS_DOUBLE (value_back));
|
||||||
g_print ("atk_value_get_maximum returns %f\n",
|
g_print ("atk_value_get_maximum returns %f\n",
|
||||||
g_value_get_double (value_back));
|
g_value_get_double (value_back));
|
||||||
|
|
||||||
atk_value_get_minimum_value (ATK_VALUE (obj), value_back);
|
gail_test_value_get_minimum_value (ATK_VALUE (obj), value_back);
|
||||||
g_return_if_fail (G_VALUE_HOLDS_DOUBLE (value_back));
|
g_return_if_fail (G_VALUE_HOLDS_DOUBLE (value_back));
|
||||||
g_print ("atk_value_get_minimum returns %f\n",
|
g_print ("atk_value_get_minimum returns %f\n",
|
||||||
g_value_get_double (value_back));
|
g_value_get_double (value_back));
|
||||||
|
|
@ -103,7 +104,8 @@ static void _add_handler (AtkObject *obj)
|
||||||
|
|
||||||
static void _set_values (AtkObject *obj) {
|
static void _set_values (AtkObject *obj) {
|
||||||
|
|
||||||
GValue *value_back, val;
|
GValue val = { 0, };
|
||||||
|
GValue *value_back;
|
||||||
static gint count = 0;
|
static gint count = 0;
|
||||||
gdouble double_value;
|
gdouble double_value;
|
||||||
|
|
||||||
|
|
@ -125,7 +127,7 @@ static void _set_values (AtkObject *obj) {
|
||||||
text = "5.7";
|
text = "5.7";
|
||||||
atk_editable_text_set_text_contents(ATK_EDITABLE_TEXT(obj),text);
|
atk_editable_text_set_text_contents(ATK_EDITABLE_TEXT(obj),text);
|
||||||
g_print("Set text to %s\n",text);
|
g_print("Set text to %s\n",text);
|
||||||
atk_value_get_current_value(ATK_VALUE(obj), value_back);
|
gail_test_value_get_current_value(ATK_VALUE(obj), value_back);
|
||||||
g_return_if_fail (G_VALUE_HOLDS_DOUBLE (value_back));
|
g_return_if_fail (G_VALUE_HOLDS_DOUBLE (value_back));
|
||||||
g_print("atk_value_get_current_value returns %f\n",
|
g_print("atk_value_get_current_value returns %f\n",
|
||||||
g_value_get_double( value_back));
|
g_value_get_double( value_back));
|
||||||
|
|
@ -134,7 +136,7 @@ static void _set_values (AtkObject *obj) {
|
||||||
memset (value_back, 0, sizeof (GValue));
|
memset (value_back, 0, sizeof (GValue));
|
||||||
g_value_init (value_back, G_TYPE_DOUBLE);
|
g_value_init (value_back, G_TYPE_DOUBLE);
|
||||||
g_value_set_double (value_back, 10.0);
|
g_value_set_double (value_back, 10.0);
|
||||||
if (atk_value_set_current_value (ATK_VALUE (obj), value_back))
|
if (gail_test_value_set_current_value (ATK_VALUE (obj), value_back))
|
||||||
{
|
{
|
||||||
double_value = g_value_get_double (value_back);
|
double_value = g_value_get_double (value_back);
|
||||||
g_print("atk_value_set_current_value returns %f\n",
|
g_print("atk_value_set_current_value returns %f\n",
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue