1 /*
2 * Copyright (c) 2022 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include <gtest/gtest.h>
17 #include "accessibility_connection.h"
18 #include "wm_common.h"
19 #include "dm_common.h"
20 #include "common_test_utils.h"
21
22 using namespace testing;
23 using namespace testing::ext;
24
25 namespace OHOS {
26 namespace Rosen {
27 class AccessibilityConnectionTest : public testing::Test {
28 public:
29 static void SetUpTestCase();
30 static void TearDownTestCase();
31 void SetUp() override;
32 void TearDown() override;
33 sptr<AccessibilityConnection> accessibilityConnection_;
34 };
35
SetUpTestCase()36 void AccessibilityConnectionTest::SetUpTestCase()
37 {
38 }
39
TearDownTestCase()40 void AccessibilityConnectionTest::TearDownTestCase()
41 {
42 }
43
SetUp()44 void AccessibilityConnectionTest::SetUp()
45 {
46 sptr<WindowRoot> windowRoot_ = new WindowRoot([](Event event, const sptr<IRemoteObject>& remoteObject) {});
47 accessibilityConnection_ = new AccessibilityConnection(windowRoot_);
48 }
49
TearDown()50 void AccessibilityConnectionTest::TearDown()
51 {
52 }
53
54 namespace {
55 /**
56 * @tc.name: FillAccessibilityWindowInfo01
57 * @tc.desc: normal function
58 * @tc.type: FUNC
59 */
60 HWTEST_F(AccessibilityConnectionTest, FillAccessibilityWindowInfo01, Function | SmallTest | Level2)
61 {
62 uint32_t focusedWindow = 1;
63 sptr<WindowProperty> windowProperty1 = new WindowProperty();
64 windowProperty1->SetWindowId(focusedWindow);
65 windowProperty1->SetDecorEnable(true);
66 sptr<WindowNode> windowNode1 = new WindowNode(windowProperty1);
67 windowNode1->SetWindowProperty(windowProperty1);
68 sptr<WindowNode> windowNode3 = nullptr;
69 std::vector<sptr<WindowNode>> nodes;
70 nodes.emplace_back(windowNode1);
71 std::vector<sptr<AccessibilityWindowInfo>> infos;
72 accessibilityConnection_->FillAccessibilityWindowInfo(nodes, focusedWindow, infos);
73 ASSERT_EQ(1, infos.size());
74 ASSERT_TRUE(infos[0]->isDecorEnable_);
75 ASSERT_TRUE(infos[0]->focused_);
76 }
77
78 /**
79 * @tc.name: GetAccessibilityWindowInfo01
80 * @tc.desc: normal function
81 * @tc.type: FUNC
82 */
83 HWTEST_F(AccessibilityConnectionTest, GetAccessibilityWindowInfo01, Function | SmallTest | Level2)
84 {
85 std::vector<sptr<AccessibilityWindowInfo>> infos;
86 accessibilityConnection_->GetAccessibilityWindowInfo(infos);
87 ASSERT_EQ(0, infos.size());
88 }
89
90 /**
91 * @tc.name: UpdateFocusChangeEvent01
92 * @tc.desc: normal function
93 * @tc.type: FUNC
94 */
95 HWTEST_F(AccessibilityConnectionTest, UpdateFocusChangeEvent01, Function | SmallTest | Level2)
96 {
97 sptr<DisplayInfo> displayInfo = new DisplayInfo();
98 ScreenId displayGroupId = 0;
99 sptr<WindowNodeContainer> container = new WindowNodeContainer(displayInfo, displayGroupId);
100 accessibilityConnection_->UpdateFocusChangeEvent(container);
101 ASSERT_EQ(1, accessibilityConnection_->focusedWindowMap_.size());
102 }
103
104 /**
105 * @tc.name: UpdateFocusChangeEvent02
106 * @tc.desc: normal function
107 * @tc.type: FUNC
108 */
109 HWTEST_F(AccessibilityConnectionTest, UpdateFocusChangeEvent02, Function | SmallTest | Level2)
110 {
111 sptr<DisplayInfo> displayInfo = new DisplayInfo();
112 ScreenId displayGroupId = 0;
113 sptr<WindowNodeContainer> container = new WindowNodeContainer(displayInfo, displayGroupId);
114 uint32_t newFocusWindow = 1;
115 container->SetFocusWindow(newFocusWindow);
116 uint32_t oldFocusWindow = 1;
117 accessibilityConnection_->focusedWindowMap_.insert(std::make_pair(container, oldFocusWindow));
118 accessibilityConnection_->UpdateFocusChangeEvent(container);
119 ASSERT_EQ(1, accessibilityConnection_->focusedWindowMap_.size());
120 ASSERT_EQ(1, accessibilityConnection_->focusedWindowMap_[container]);
121 }
122
123 /**
124 * @tc.name: UpdateFocusChangeEvent03
125 * @tc.desc: normal function
126 * @tc.type: FUNC
127 */
128 HWTEST_F(AccessibilityConnectionTest, UpdateFocusChangeEvent03, Function | SmallTest | Level2)
129 {
130 sptr<DisplayInfo> displayInfo = new DisplayInfo();
131 ScreenId displayGroupId = 0;
132 sptr<WindowNodeContainer> container = new WindowNodeContainer(displayInfo, displayGroupId);
133 uint32_t newFocusWindow = 2;
134 container->SetFocusWindow(newFocusWindow);
135 uint32_t oldFocusWindow = 1;
136 accessibilityConnection_->focusedWindowMap_.insert(std::make_pair(container, oldFocusWindow));
137 accessibilityConnection_->UpdateFocusChangeEvent(container);
138 ASSERT_EQ(1, accessibilityConnection_->focusedWindowMap_.size());
139 ASSERT_EQ(2, accessibilityConnection_->focusedWindowMap_[container]);
140 }
141 }
142 }
143 }