7#include "gtest/gtest.h"
14 ::testing::NiceMock<flutter::testing::MockGtk>
mock_gtk;
28 g_ptr_array_new_with_free_func(g_object_unref);
29 g_ptr_array_add(children, g_object_ref(child1));
30 g_ptr_array_add(children, g_object_ref(child2));
33 EXPECT_EQ(atk_object_get_n_accessible_children(ATK_OBJECT(root)), 2);
34 EXPECT_EQ(atk_object_get_index_in_parent(ATK_OBJECT(root)), 0);
36 atk_object_ref_accessible_child(ATK_OBJECT(root), 0);
37 EXPECT_EQ(ATK_OBJECT(child1), c1);
39 atk_object_ref_accessible_child(ATK_OBJECT(root), 1);
40 EXPECT_EQ(ATK_OBJECT(child2), c2);
41 EXPECT_EQ(atk_object_get_parent(ATK_OBJECT(root)),
nullptr);
43 EXPECT_EQ(atk_object_get_parent(ATK_OBJECT(child1)), ATK_OBJECT(root));
44 EXPECT_EQ(atk_object_get_index_in_parent(ATK_OBJECT(child1)), 0);
45 EXPECT_EQ(atk_object_get_n_accessible_children(ATK_OBJECT(child1)), 0);
47 EXPECT_EQ(atk_object_get_parent(ATK_OBJECT(child2)), ATK_OBJECT(root));
48 EXPECT_EQ(atk_object_get_index_in_parent(ATK_OBJECT(child2)), 1);
49 EXPECT_EQ(atk_object_get_n_accessible_children(ATK_OBJECT(child2)), 0);
56 EXPECT_STREQ(atk_object_get_name(ATK_OBJECT(node)),
"test");
64 atk_component_get_extents(ATK_COMPONENT(node), &
x, &
y, &
width, &
height,
79 AtkStateSet* state1 = atk_object_ref_state_set(ATK_OBJECT(node));
80 EXPECT_FALSE(atk_state_set_contains_state(state1, ATK_STATE_FOCUSABLE));
81 EXPECT_FALSE(atk_state_set_contains_state(state1, ATK_STATE_FOCUSED));
82 g_object_unref(state1);
87 ::testing::_, ATK_STATE_FOCUSABLE,
TRUE));
89 AtkStateSet* state2 = atk_object_ref_state_set(ATK_OBJECT(node));
90 EXPECT_TRUE(atk_state_set_contains_state(state2, ATK_STATE_FOCUSABLE));
91 EXPECT_FALSE(atk_state_set_contains_state(state2, ATK_STATE_FOCUSED));
92 g_object_unref(state2);
97 ::testing::_, ATK_STATE_FOCUSED,
TRUE));
99 AtkStateSet* state3 = atk_object_ref_state_set(ATK_OBJECT(node));
100 EXPECT_TRUE(atk_state_set_contains_state(state3, ATK_STATE_FOCUSABLE));
101 EXPECT_TRUE(atk_state_set_contains_state(state3, ATK_STATE_FOCUSED));
102 g_object_unref(state3);
113 AtkStateSet* state1 = atk_object_ref_state_set(ATK_OBJECT(node));
114 EXPECT_FALSE(atk_state_set_contains_state(state1, ATK_STATE_CHECKABLE));
115 EXPECT_FALSE(atk_state_set_contains_state(state1, ATK_STATE_CHECKED));
116 g_object_unref(state1);
122 ::testing::_, ATK_STATE_CHECKABLE,
TRUE));
124 AtkStateSet* state2 = atk_object_ref_state_set(ATK_OBJECT(node));
125 EXPECT_TRUE(atk_state_set_contains_state(state2, ATK_STATE_CHECKABLE));
126 EXPECT_FALSE(atk_state_set_contains_state(state2, ATK_STATE_CHECKED));
127 g_object_unref(state2);
133 ::testing::_, ATK_STATE_CHECKED,
TRUE));
135 AtkStateSet* state3 = atk_object_ref_state_set(ATK_OBJECT(node));
136 EXPECT_TRUE(atk_state_set_contains_state(state3, ATK_STATE_CHECKABLE));
137 EXPECT_TRUE(atk_state_set_contains_state(state3, ATK_STATE_CHECKED));
138 g_object_unref(state3);
144 AtkStateSet* state4 = atk_object_ref_state_set(ATK_OBJECT(node));
145 EXPECT_TRUE(atk_state_set_contains_state(state4, ATK_STATE_CHECKABLE));
146 EXPECT_TRUE(atk_state_set_contains_state(state4, ATK_STATE_CHECKED));
147 g_object_unref(state4);
153 AtkStateSet* state5 = atk_object_ref_state_set(ATK_OBJECT(node));
154 EXPECT_TRUE(atk_state_set_contains_state(state5, ATK_STATE_CHECKABLE));
155 EXPECT_TRUE(atk_state_set_contains_state(state5, ATK_STATE_CHECKED));
156 g_object_unref(state5);
166 AtkStateSet* state1 = atk_object_ref_state_set(ATK_OBJECT(node));
167 EXPECT_FALSE(atk_state_set_contains_state(state1, ATK_STATE_SELECTED));
168 g_object_unref(state1);
173 AtkStateSet* state2 = atk_object_ref_state_set(ATK_OBJECT(node));
174 EXPECT_FALSE(atk_state_set_contains_state(state2, ATK_STATE_SELECTED));
175 g_object_unref(state2);
180 ::testing::_, ATK_STATE_SELECTED,
TRUE));
182 AtkStateSet* state3 = atk_object_ref_state_set(ATK_OBJECT(node));
183 EXPECT_TRUE(atk_state_set_contains_state(state3, ATK_STATE_SELECTED));
184 g_object_unref(state3);
194 AtkStateSet* state1 = atk_object_ref_state_set(ATK_OBJECT(node));
195 EXPECT_FALSE(atk_state_set_contains_state(state1, ATK_STATE_SENSITIVE));
196 EXPECT_FALSE(atk_state_set_contains_state(state1, ATK_STATE_ENABLED));
197 g_object_unref(state1);
202 ::testing::_, ATK_STATE_SENSITIVE,
TRUE));
204 AtkStateSet* state2 = atk_object_ref_state_set(ATK_OBJECT(node));
205 EXPECT_TRUE(atk_state_set_contains_state(state2, ATK_STATE_SENSITIVE));
206 EXPECT_FALSE(atk_state_set_contains_state(state2, ATK_STATE_ENABLED));
207 g_object_unref(state2);
212 ::testing::_, ATK_STATE_ENABLED,
TRUE));
214 AtkStateSet* state3 = atk_object_ref_state_set(ATK_OBJECT(node));
215 EXPECT_TRUE(atk_state_set_contains_state(state3, ATK_STATE_SENSITIVE));
216 EXPECT_TRUE(atk_state_set_contains_state(state3, ATK_STATE_ENABLED));
217 g_object_unref(state3);
227 AtkStateSet* state1 = atk_object_ref_state_set(ATK_OBJECT(node));
228 EXPECT_FALSE(atk_state_set_contains_state(state1, ATK_STATE_SHOWING));
229 g_object_unref(state1);
234 ::testing::_, ATK_STATE_SHOWING,
TRUE));
236 AtkStateSet* state2 = atk_object_ref_state_set(ATK_OBJECT(node));
237 EXPECT_TRUE(atk_state_set_contains_state(state2, ATK_STATE_SHOWING));
238 g_object_unref(state2);
248 AtkStateSet* state1 = atk_object_ref_state_set(ATK_OBJECT(node));
249 EXPECT_FALSE(atk_state_set_contains_state(state1, ATK_STATE_VISIBLE));
250 g_object_unref(state1);
255 ::testing::_, ATK_STATE_VISIBLE,
TRUE));
257 AtkStateSet* state2 = atk_object_ref_state_set(ATK_OBJECT(node));
258 EXPECT_TRUE(atk_state_set_contains_state(state2, ATK_STATE_VISIBLE));
259 g_object_unref(state2);
269 AtkStateSet* state1 = atk_object_ref_state_set(ATK_OBJECT(node));
270 EXPECT_FALSE(atk_state_set_contains_state(state1, ATK_STATE_READ_ONLY));
271 g_object_unref(state1);
276 ::testing::_, ATK_STATE_READ_ONLY,
TRUE));
278 AtkStateSet* state2 = atk_object_ref_state_set(ATK_OBJECT(node));
279 EXPECT_TRUE(atk_state_set_contains_state(state2, ATK_STATE_READ_ONLY));
280 g_object_unref(state2);
290 AtkStateSet* state1 = atk_object_ref_state_set(ATK_OBJECT(node));
291 EXPECT_FALSE(atk_state_set_contains_state(state1, ATK_STATE_EDITABLE));
292 g_object_unref(state1);
297 ::testing::_, ATK_STATE_EDITABLE,
TRUE));
299 AtkStateSet* state2 = atk_object_ref_state_set(ATK_OBJECT(node));
300 EXPECT_TRUE(atk_state_set_contains_state(state2, ATK_STATE_EDITABLE));
301 g_object_unref(state2);
311 EXPECT_EQ(atk_object_get_role(ATK_OBJECT(node)), ATK_ROLE_PUSH_BUTTON);
316 EXPECT_EQ(atk_object_get_role(ATK_OBJECT(node)), ATK_ROLE_CHECK_BOX);
322 EXPECT_EQ(atk_object_get_role(ATK_OBJECT(node)), ATK_ROLE_RADIO_BUTTON);
327 EXPECT_EQ(atk_object_get_role(ATK_OBJECT(node)), ATK_ROLE_TOGGLE_BUTTON);
332 EXPECT_EQ(atk_object_get_role(ATK_OBJECT(node)), ATK_ROLE_TEXT);
338 EXPECT_EQ(atk_object_get_role(ATK_OBJECT(node)), ATK_ROLE_PASSWORD_TEXT);
348 EXPECT_EQ(atk_action_get_n_actions(ATK_ACTION(node)), 2);
349 EXPECT_STREQ(atk_action_get_name(ATK_ACTION(node), 0),
"Tap");
350 EXPECT_STREQ(atk_action_get_name(ATK_ACTION(node), 1),
"LongPress");
364 g_object_unref(local_engine);
367 EXPECT_FALSE(atk_action_do_action(ATK_ACTION(node), 0));
378 g_object_unref(root);
381 EXPECT_EQ(atk_object_get_parent(ATK_OBJECT(child)),
nullptr);
383 atk_component_get_extents(ATK_COMPONENT(child), &
x, &
y, &
width, &
height,
::testing::NiceMock< flutter::testing::MockGtk > mock_gtk
@ kFlutterCheckStateNone
The semantics node does not have check state.
@ kFlutterCheckStateTrue
The semantics node is checked.
@ kFlutterCheckStateFalse
The semantics node is not checked.
@ kFlutterSemanticsActionLongPress
@ kFlutterSemanticsActionTap
@ kFlutterTristateTrue
The property is applicable and its state is "true" or "on".
@ kFlutterTristateFalse
The property is applicable and its state is "false" or "off".
@ kFlutterTristateNone
The property is not applicable to this semantics node.
g_autoptr(FlEngine) engine
void fl_accessible_node_set_name(FlAccessibleNode *self, const gchar *name)
void fl_accessible_node_set_actions(FlAccessibleNode *self, FlutterSemanticsAction actions)
void fl_accessible_node_set_children(FlAccessibleNode *self, GPtrArray *children)
void fl_accessible_node_set_extents(FlAccessibleNode *self, gint x, gint y, gint width, gint height)
void fl_accessible_node_set_parent(FlAccessibleNode *self, AtkObject *parent, gint index)
void fl_accessible_node_set_flags(FlAccessibleNode *self, FlutterSemanticsFlags *flags)
FlAccessibleNode * fl_accessible_node_new(FlEngine *engine, FlutterViewId view_id, int32_t node_id)
TEST_F(FlAccessibleNodeTest, BuildTree)
G_MODULE_EXPORT FlDartProject * fl_dart_project_new()
G_MODULE_EXPORT FlEngine * fl_engine_new(FlDartProject *project)
G_BEGIN_DECLS FlutterViewId view_id
void atk_object_notify_state_change(AtkObject *accessible, AtkState state, gboolean value)
FlutterTristate is_enabled
Whether a semantic node is currently enabled.
bool is_obscured
Whether the value of the semantics node is obscured.
FlutterTristate is_selected
Whether a semantics node is selected.
bool is_in_mutually_exclusive_group
Whether a semantic node is in a mutually exclusive group.
FlutterTristate is_toggled
FlutterTristate is_focused
Whether the semantic node currently holds the user's focus.
bool is_hidden
Whether the semantics node is considered hidden.
bool is_text_field
Whether the semantic node represents a text field.
FlutterCheckState is_checked
Whether a semantics node is checked.
bool is_button
Whether the semantic node represents a button.