1 /*
2  * Copyright (c) 2024 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 <fstream>
17 
18 #include <gtest/gtest.h>
19 
20 #include "nap_process.h"
21 
22 namespace OHOS {
23 namespace MMI {
24 namespace {
25 using namespace testing::ext;
26 constexpr int32_t REMOVE_OBSERVER = -2;
27 constexpr int32_t NAP_EVENT = 0;
28 constexpr int32_t SUBSCRIBED = 1;
29 constexpr int32_t ACTIVE_EVENT = 2;
30 } // namespace
31 
32 class NapProcessTest : public testing::Test {
33 public:
SetUpTestCase(void)34     static void SetUpTestCase(void) {}
TearDownTestCase(void)35     static void TearDownTestCase(void) {}
36 };
37 
38 /**
39  * @tc.name: NapProcessTest_Init_001
40  * @tc.desc: Test init
41  * @tc.type: FUNC
42  * @tc.require:
43  */
44 HWTEST_F(NapProcessTest, NapProcessTest_Init_001, TestSize.Level1)
45 {
46     UDSServer udsServer;
47     NapProcess napProcess;
48     napProcess.Init(udsServer);
49     ASSERT_EQ(&udsServer, napProcess.udsServer_);
50 }
51 
52 /**
53  * @tc.name: NapProcessTest_NotifyBundleName_001
54  * @tc.desc: Test notify bundle name
55  * @tc.type: FUNC
56  * @tc.require:
57  */
58 HWTEST_F(NapProcessTest, NapProcessTest_NotifyBundleName_001, TestSize.Level1)
59 {
60     NapProcess napProcess;
61     NapProcess::NapStatusData data;
62     data.pid = -1;
63     data.uid = 1000;
64     data.bundleName = "com.example.app";
65     int32_t syncState = 1;
66     int32_t result = napProcess.NotifyBundleName(data, syncState);
67     ASSERT_EQ(result, RET_ERR);
68     data.pid = 1234;
69     result = napProcess.NotifyBundleName(data, syncState);
70     ASSERT_EQ(result, RET_ERR);
71 }
72 
73 /**
74  * @tc.name: NapProcessTest_IsNeedNotify_001
75  * @tc.desc: Test is need notify
76  * @tc.type: FUNC
77  * @tc.require:
78  */
79 HWTEST_F(NapProcessTest, NapProcessTest_IsNeedNotify_001, TestSize.Level1)
80 {
81     NapProcess napProcess;
82     NapProcess::NapStatusData data;
83     data.pid = 1;
84     data.uid = 1;
85     data.bundleName = "bundleName";
86     napProcess.napMap_[data] = SUBSCRIBED;
87     ASSERT_TRUE(napProcess.IsNeedNotify(data));
88     napProcess.napMap_[data] = NAP_EVENT;
89     ASSERT_TRUE(napProcess.IsNeedNotify(data));
90     napProcess.napMap_[data] = REMOVE_OBSERVER;
91     ASSERT_FALSE(napProcess.IsNeedNotify(data));
92     napProcess.napMap_[data] = ACTIVE_EVENT;
93     ASSERT_FALSE(napProcess.IsNeedNotify(data));
94 }
95 
96 /**
97  * @tc.name: NapProcessTest_SetNapStatus_001
98  * @tc.desc: Test set nap status
99  * @tc.type: FUNC
100  * @tc.require:
101  */
102 HWTEST_F(NapProcessTest, NapProcessTest_SetNapStatus_001, TestSize.Level1)
103 {
104     NapProcess napProcess;
105     int32_t pid = 1234;
106     int32_t uid = 4321;
107     std ::string bundleName = "testBundle";
108     int32_t napStatus = ACTIVE_EVENT;
109     ASSERT_EQ(napProcess.SetNapStatus(pid, uid, bundleName, napStatus), RET_OK);
110     napStatus = NAP_EVENT;
111     ASSERT_EQ(napProcess.SetNapStatus(pid, uid, bundleName, napStatus), RET_OK);
112     napStatus = 3;
113     ASSERT_EQ(napProcess.SetNapStatus(pid, uid, bundleName, napStatus), RET_OK);
114 }
115 
116 /**
117  * @tc.name: NapProcessTest_AddMmiSubscribedEventData_001
118  * @tc.desc:Add mmi subscribed event data
119  * @tc.type: FUNC
120  * @tc.require:
121  */
122 HWTEST_F(NapProcessTest, NapProcessTest_AddMmiSubscribedEventData_001, TestSize.Level1)
123 {
124     NapProcess process;
125     NapProcess::NapStatusData data;
126     int32_t syncState = 2;
127     int32_t result = process.AddMmiSubscribedEventData(data, syncState);
128     ASSERT_EQ(result, RET_OK);
129     ASSERT_EQ(process.napMap_[data], syncState);
130     int32_t newsyncState = 2;
131     process.AddMmiSubscribedEventData(data, syncState);
132     result = process.AddMmiSubscribedEventData(data, newsyncState);
133     ASSERT_EQ(result, RET_OK);
134     ASSERT_EQ(process.napMap_[data], syncState);
135 }
136 
137 /**
138  * @tc.name: NapProcessTest_RemoveMmiSubscribedEventData_001
139  * @tc.desc: Test remove mmi subscribed event data
140  * @tc.type: FUNC
141  * @tc.require:
142  */
143 HWTEST_F(NapProcessTest, NapProcessTest_RemoveMmiSubscribedEventData_001, TestSize.Level1)
144 {
145     NapProcess process;
146     NapProcess::NapStatusData napData;
147     int32_t syncState = 1;
148     int32_t ret = process.RemoveMmiSubscribedEventData(napData);
149     ASSERT_EQ(ret, RET_OK);
150     process.AddMmiSubscribedEventData(napData, syncState);
151     ret = process.RemoveMmiSubscribedEventData(napData);
152     ASSERT_EQ(ret, RET_OK);
153 }
154 
155 /**
156  * @tc.name: NapProcessTest_GetNapClientPid_001
157  * @tc.desc: Test get nap client pid
158  * @tc.type: FUNC
159  * @tc.require:
160  */
161 HWTEST_F(NapProcessTest, NapProcessTest_GetNapClientPid_001, TestSize.Level1)
162 {
163     NapProcess napProcess;
164     int32_t expectedPid = 1234;
165     napProcess.napClientPid_ = expectedPid;
166     int32_t actualPid = napProcess.GetNapClientPid();
167     ASSERT_EQ(expectedPid, actualPid);
168 }
169 
170 /**
171  * @tc.name: NapProcessTest_NotifyNapOnline_001
172  * @tc.desc: Test notify nap online
173  * @tc.type: FUNC
174  * @tc.require:
175  */
176 HWTEST_F(NapProcessTest, NapProcessTest_NotifyNapOnline_001, TestSize.Level1)
177 {
178     NapProcess napProcess;
179     int32_t result = napProcess.NotifyNapOnline();
180     ASSERT_NE(napProcess.GetNapClientPid(), result);
181 }
182 
183 /**
184  * @tc.name: NapProcessTest_RemoveInputEventObserver_001
185  * @tc.desc: Test remove input event observer
186  * @tc.type: FUNC
187  * @tc.require:
188  */
189 HWTEST_F(NapProcessTest, NapProcessTest_RemoveInputEventObserver_001, TestSize.Level1)
190 {
191     NapProcess napProcess;
192     int32_t ret = napProcess.RemoveInputEventObserver();
193     ASSERT_EQ(ret, RET_OK);
194     ASSERT_TRUE(napProcess.napMap_.empty());
195     ASSERT_EQ(napProcess.napClientPid_, REMOVE_OBSERVER);
196 }
197 
198 /**
199  * @tc.name: NapProcessTest_GetAllMmiSubscribedEvents_001
200  * @tc.desc: Test get all mmi subscribed events
201  * @tc.type: FUNC
202  * @tc.require:
203  */
204 HWTEST_F(NapProcessTest, NapProcessTest_GetAllMmiSubscribedEvents_001, TestSize.Level1)
205 {
206     NapProcess napProcess;
207     std::map<std::tuple<int32_t, int32_t, std::string>, int32_t> datas;
208     ASSERT_EQ(napProcess.GetAllMmiSubscribedEvents(datas), RET_OK);
209     ASSERT_TRUE(datas.empty());
210 }
211 } // namespace MMI
212 } // namespace OHOS