Chromium Code Reviews| Index: ui/accessibility/ax_tree_unittest.cc |
| diff --git a/ui/accessibility/ax_tree_unittest.cc b/ui/accessibility/ax_tree_unittest.cc |
| index 68a2911664ace3c5464c2e8e0a625d668c24f5bd..37fba489566135ff6e01d13dab4e9325539373c2 100644 |
| --- a/ui/accessibility/ax_tree_unittest.cc |
| +++ b/ui/accessibility/ax_tree_unittest.cc |
| @@ -4,6 +4,7 @@ |
| #include "base/memory/scoped_ptr.h" |
| #include "base/strings/string_number_conversions.h" |
| +#include "testing/gmock/include/gmock/gmock.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| #include "ui/accessibility/ax_node.h" |
| #include "ui/accessibility/ax_serializable_tree.h" |
| @@ -12,6 +13,20 @@ |
| namespace ui { |
| +namespace { |
| + |
| +class MockAXTreeDelegate : public AXTreeDelegate { |
| + public: |
| + MOCK_METHOD1(OnNodeWillBeDeleted, void(AXNode*)); |
|
tfarina
2014/01/13 22:44:38
yeah, something like:
class AXTreeDelegateImpl :
|
| + MOCK_METHOD1(OnNodeCreated, void(AXNode*)); |
| + MOCK_METHOD1(OnNodeChanged, void(AXNode*)); |
| + MOCK_METHOD1(OnRootChanged, void(AXNode*)); |
| +}; |
| + |
| +MATCHER_P(AXNodeWithId, id, "") { return arg->id() == id; } |
| + |
| +} // anonymous namespace |
| + |
| TEST(AXTreeTest, SerializeSimpleAXTree) { |
| AXNodeData root; |
| root.id = 1; |
| @@ -39,27 +54,27 @@ TEST(AXTreeTest, SerializeSimpleAXTree) { |
| initial_state.nodes.push_back(checkbox); |
| AXSerializableTree src_tree(initial_state); |
| - scoped_ptr<AXTreeSource<AXNode> > tree_source( |
| + scoped_ptr<AXTreeSource<const AXNode*> > tree_source( |
| src_tree.CreateTreeSource()); |
| - AXTreeSerializer<AXNode> serializer(tree_source.get()); |
| + AXTreeSerializer<const AXNode*> serializer(tree_source.get()); |
| AXTreeUpdate update; |
| serializer.SerializeChanges(src_tree.GetRoot(), &update); |
| AXTree dst_tree; |
| ASSERT_TRUE(dst_tree.Unserialize(update)); |
| - AXNode* root_node = dst_tree.GetRoot(); |
| + const AXNode* root_node = dst_tree.GetRoot(); |
| ASSERT_TRUE(root_node != NULL); |
| EXPECT_EQ(root.id, root_node->id()); |
| EXPECT_EQ(root.role, root_node->data().role); |
| ASSERT_EQ(2, root_node->child_count()); |
| - AXNode* button_node = root_node->ChildAtIndex(0); |
| + const AXNode* button_node = root_node->ChildAtIndex(0); |
| EXPECT_EQ(button.id, button_node->id()); |
| EXPECT_EQ(button.role, button_node->data().role); |
| - AXNode* checkbox_node = root_node->ChildAtIndex(1); |
| + const AXNode* checkbox_node = root_node->ChildAtIndex(1); |
| EXPECT_EQ(checkbox.id, checkbox_node->id()); |
| EXPECT_EQ(checkbox.role, checkbox_node->data().role); |
| @@ -174,4 +189,31 @@ TEST(AXTreeTest, InvalidReparentingFails) { |
| ASSERT_EQ("Node 3 reparented from 2 to 1", tree.error()); |
| } |
| +TEST(AXTreeTest, TreeDelegateIsCalled) { |
| + AXTreeUpdate initial_state; |
| + initial_state.nodes.resize(1); |
| + initial_state.nodes[0].id = 1; |
| + initial_state.nodes[0].role = AX_ROLE_ROOT_WEB_AREA; |
| + |
| + AXTree tree(initial_state); |
| + AXTreeUpdate update; |
| + update.node_id_to_clear = 1; |
| + update.nodes.resize(2); |
| + update.nodes[0].id = 2; |
| + update.nodes[0].role = AX_ROLE_ROOT_WEB_AREA; |
| + update.nodes[0].child_ids.push_back(3); |
| + update.nodes[1].id = 3; |
| + |
| + testing::StrictMock<MockAXTreeDelegate> mock_delegate; |
| + testing::InSequence s; |
| + EXPECT_CALL(mock_delegate, OnNodeWillBeDeleted(AXNodeWithId(1))); |
| + EXPECT_CALL(mock_delegate, OnNodeCreated(AXNodeWithId(2))); |
| + EXPECT_CALL(mock_delegate, OnNodeCreated(AXNodeWithId(3))); |
| + EXPECT_CALL(mock_delegate, OnRootChanged(AXNodeWithId(2))); |
| + tree.SetDelegate(&mock_delegate); |
| + |
| + EXPECT_TRUE(tree.Unserialize(update)); |
| + tree.SetDelegate(NULL); |
| +} |
| + |
| } // namespace ui |