6 #include "gtest/gtest.h"
11 TEST(FlAccessibleNodeTest, BuildTree) {
17 g_autoptr(FlAccessibleNode) child1 =
20 g_autoptr(FlAccessibleNode) child2 =
23 g_autoptr(GPtrArray) children =
24 g_ptr_array_new_with_free_func(g_object_unref);
25 g_ptr_array_add(children, g_object_ref(child1));
26 g_ptr_array_add(children, g_object_ref(child2));
29 EXPECT_EQ(atk_object_get_n_accessible_children(ATK_OBJECT(root)), 2);
30 EXPECT_EQ(atk_object_get_index_in_parent(ATK_OBJECT(root)), 0);
31 g_autoptr(AtkObject) c1 =
32 atk_object_ref_accessible_child(ATK_OBJECT(root), 0);
33 EXPECT_EQ(ATK_OBJECT(child1), c1);
34 g_autoptr(AtkObject) c2 =
35 atk_object_ref_accessible_child(ATK_OBJECT(root), 1);
36 EXPECT_EQ(ATK_OBJECT(child2), c2);
37 EXPECT_EQ(atk_object_get_parent(ATK_OBJECT(root)),
nullptr);
39 EXPECT_EQ(atk_object_get_parent(ATK_OBJECT(child1)), ATK_OBJECT(root));
40 EXPECT_EQ(atk_object_get_index_in_parent(ATK_OBJECT(child1)), 0);
41 EXPECT_EQ(atk_object_get_n_accessible_children(ATK_OBJECT(child1)), 0);
43 EXPECT_EQ(atk_object_get_parent(ATK_OBJECT(child2)), ATK_OBJECT(root));
44 EXPECT_EQ(atk_object_get_index_in_parent(ATK_OBJECT(child2)), 1);
45 EXPECT_EQ(atk_object_get_n_accessible_children(ATK_OBJECT(child2)), 0);
49 TEST(FlAccessibleNodeTest, SetName) {
55 EXPECT_STREQ(atk_object_get_name(ATK_OBJECT(node)),
"test");
59 TEST(FlAccessibleNodeTest, SetExtents) {
66 atk_component_get_extents(ATK_COMPONENT(node), &x, &y, &
width, &
height,
75 TEST(FlAccessibleNodeTest, SetFlags) {
81 node,
static_cast<FlutterSemanticsFlag
>(kFlutterSemanticsFlagIsEnabled |
82 kFlutterSemanticsFlagIsFocusable |
83 kFlutterSemanticsFlagIsFocused));
85 AtkStateSet*
state = atk_object_ref_state_set(ATK_OBJECT(node));
86 EXPECT_TRUE(atk_state_set_contains_state(
state, ATK_STATE_ENABLED));
87 EXPECT_TRUE(atk_state_set_contains_state(
state, ATK_STATE_SENSITIVE));
88 EXPECT_TRUE(atk_state_set_contains_state(
state, ATK_STATE_FOCUSABLE));
89 EXPECT_TRUE(atk_state_set_contains_state(
state, ATK_STATE_FOCUSED));
90 EXPECT_TRUE(!atk_state_set_contains_state(
state, ATK_STATE_CHECKED));
91 g_object_unref(
state);
95 TEST(FlAccessibleNodeTest, GetRole) {
102 node,
static_cast<FlutterSemanticsFlag
>(kFlutterSemanticsFlagIsButton));
103 EXPECT_EQ(atk_object_get_role(ATK_OBJECT(node)), ATK_ROLE_PUSH_BUTTON);
106 kFlutterSemanticsFlagHasCheckedState));
107 EXPECT_EQ(atk_object_get_role(ATK_OBJECT(node)), ATK_ROLE_CHECK_BOX);
110 node,
static_cast<FlutterSemanticsFlag
>(
111 kFlutterSemanticsFlagHasCheckedState |
112 kFlutterSemanticsFlagIsInMutuallyExclusiveGroup));
113 EXPECT_EQ(atk_object_get_role(ATK_OBJECT(node)), ATK_ROLE_RADIO_BUTTON);
116 kFlutterSemanticsFlagHasToggledState));
117 EXPECT_EQ(atk_object_get_role(ATK_OBJECT(node)), ATK_ROLE_TOGGLE_BUTTON);
120 EXPECT_EQ(atk_object_get_role(ATK_OBJECT(node)), ATK_ROLE_TEXT);
123 node,
static_cast<FlutterSemanticsFlag
>(kFlutterSemanticsFlagIsTextField |
124 kFlutterSemanticsFlagIsObscured));
125 EXPECT_EQ(atk_object_get_role(ATK_OBJECT(node)), ATK_ROLE_PASSWORD_TEXT);
129 TEST(FlAccessibleNodeTest, SetActions) {
135 node,
static_cast<FlutterSemanticsAction
>(
136 kFlutterSemanticsActionTap | kFlutterSemanticsActionLongPress));
138 EXPECT_EQ(atk_action_get_n_actions(ATK_ACTION(node)), 2);
139 EXPECT_STREQ(atk_action_get_name(ATK_ACTION(node), 0),
"Tap");
140 EXPECT_STREQ(atk_action_get_name(ATK_ACTION(node), 1),
"LongPress");
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_flags(FlAccessibleNode *self, FlutterSemanticsFlag flags)
void fl_accessible_node_set_parent(FlAccessibleNode *self, AtkObject *parent, gint index)
FlAccessibleNode * fl_accessible_node_new(FlEngine *engine, FlutterViewId view_id, int32_t node_id)
TEST(FlAccessibleNodeTest, BuildTree)
G_MODULE_EXPORT FlDartProject * fl_dart_project_new()
G_MODULE_EXPORT FlEngine * fl_engine_new(FlDartProject *project)
const uint8_t uint32_t uint32_t * height
const uint8_t uint32_t * width
G_BEGIN_DECLS FlutterViewId view_id