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 69 napProcess.napClientPid_ = 0; 70 result = napProcess.NotifyBundleName(data, syncState); 71 ASSERT_EQ(result, RET_ERR); 72 73 data.pid = 1234; 74 result = napProcess.NotifyBundleName(data, syncState); 75 ASSERT_EQ(result, RET_ERR); 76 } 77 78 /** 79 * @tc.name: NapProcessTest_IsNeedNotify_001 80 * @tc.desc: Test is need notify 81 * @tc.type: FUNC 82 * @tc.require: 83 */ 84 HWTEST_F(NapProcessTest, NapProcessTest_IsNeedNotify_001, TestSize.Level1) 85 { 86 NapProcess napProcess; 87 NapProcess::NapStatusData data; 88 data.pid = 1; 89 data.uid = 1; 90 data.bundleName = "bundleName"; 91 napProcess.napMap_[data] = SUBSCRIBED; 92 ASSERT_TRUE(napProcess.IsNeedNotify(data)); 93 napProcess.napMap_[data] = NAP_EVENT; 94 ASSERT_TRUE(napProcess.IsNeedNotify(data)); 95 napProcess.napMap_[data] = REMOVE_OBSERVER; 96 ASSERT_FALSE(napProcess.IsNeedNotify(data)); 97 napProcess.napMap_[data] = ACTIVE_EVENT; 98 ASSERT_FALSE(napProcess.IsNeedNotify(data)); 99 } 100 101 /** 102 * @tc.name: NapProcessTest_SetNapStatus_001 103 * @tc.desc: Test set nap status 104 * @tc.type: FUNC 105 * @tc.require: 106 */ 107 HWTEST_F(NapProcessTest, NapProcessTest_SetNapStatus_001, TestSize.Level1) 108 { 109 NapProcess napProcess; 110 int32_t pid = 1234; 111 int32_t uid = 4321; 112 std ::string bundleName = "testBundle"; 113 int32_t napStatus = ACTIVE_EVENT; 114 ASSERT_EQ(napProcess.SetNapStatus(pid, uid, bundleName, napStatus), RET_OK); 115 napStatus = NAP_EVENT; 116 ASSERT_EQ(napProcess.SetNapStatus(pid, uid, bundleName, napStatus), RET_OK); 117 napStatus = 3; 118 ASSERT_EQ(napProcess.SetNapStatus(pid, uid, bundleName, napStatus), RET_OK); 119 } 120 121 /** 122 * @tc.name: NapProcessTest_AddMmiSubscribedEventData_001 123 * @tc.desc:Add mmi subscribed event data 124 * @tc.type: FUNC 125 * @tc.require: 126 */ 127 HWTEST_F(NapProcessTest, NapProcessTest_AddMmiSubscribedEventData_001, TestSize.Level1) 128 { 129 NapProcess process; 130 NapProcess::NapStatusData data; 131 int32_t syncState = 2; 132 int32_t result = process.AddMmiSubscribedEventData(data, syncState); 133 ASSERT_EQ(result, RET_OK); 134 ASSERT_EQ(process.napMap_[data], syncState); 135 int32_t newsyncState = 2; 136 process.AddMmiSubscribedEventData(data, syncState); 137 result = process.AddMmiSubscribedEventData(data, newsyncState); 138 ASSERT_EQ(result, RET_OK); 139 ASSERT_EQ(process.napMap_[data], syncState); 140 } 141 142 /** 143 * @tc.name: NapProcessTest_RemoveMmiSubscribedEventData_001 144 * @tc.desc: Test remove mmi subscribed event data 145 * @tc.type: FUNC 146 * @tc.require: 147 */ 148 HWTEST_F(NapProcessTest, NapProcessTest_RemoveMmiSubscribedEventData_001, TestSize.Level1) 149 { 150 NapProcess process; 151 NapProcess::NapStatusData napData; 152 int32_t syncState = 1; 153 int32_t ret = process.RemoveMmiSubscribedEventData(napData); 154 ASSERT_EQ(ret, RET_OK); 155 process.AddMmiSubscribedEventData(napData, syncState); 156 ret = process.RemoveMmiSubscribedEventData(napData); 157 ASSERT_EQ(ret, RET_OK); 158 } 159 160 /** 161 * @tc.name: NapProcessTest_GetNapClientPid_001 162 * @tc.desc: Test get nap client pid 163 * @tc.type: FUNC 164 * @tc.require: 165 */ 166 HWTEST_F(NapProcessTest, NapProcessTest_GetNapClientPid_001, TestSize.Level1) 167 { 168 NapProcess napProcess; 169 int32_t expectedPid = 1234; 170 napProcess.napClientPid_ = expectedPid; 171 int32_t actualPid = napProcess.GetNapClientPid(); 172 ASSERT_EQ(expectedPid, actualPid); 173 } 174 175 /** 176 * @tc.name: NapProcessTest_NotifyNapOnline_001 177 * @tc.desc: Test notify nap online 178 * @tc.type: FUNC 179 * @tc.require: 180 */ 181 HWTEST_F(NapProcessTest, NapProcessTest_NotifyNapOnline_001, TestSize.Level1) 182 { 183 NapProcess napProcess; 184 int32_t result = napProcess.NotifyNapOnline(); 185 ASSERT_NE(napProcess.GetNapClientPid(), result); 186 } 187 188 /** 189 * @tc.name: NapProcessTest_RemoveInputEventObserver_001 190 * @tc.desc: Test remove input event observer 191 * @tc.type: FUNC 192 * @tc.require: 193 */ 194 HWTEST_F(NapProcessTest, NapProcessTest_RemoveInputEventObserver_001, TestSize.Level1) 195 { 196 NapProcess napProcess; 197 int32_t ret = napProcess.RemoveInputEventObserver(); 198 ASSERT_EQ(ret, RET_OK); 199 ASSERT_TRUE(napProcess.napMap_.empty()); 200 ASSERT_EQ(napProcess.napClientPid_, REMOVE_OBSERVER); 201 } 202 203 /** 204 * @tc.name: NapProcessTest_GetAllMmiSubscribedEvents_001 205 * @tc.desc: Test get all mmi subscribed events 206 * @tc.type: FUNC 207 * @tc.require: 208 */ 209 HWTEST_F(NapProcessTest, NapProcessTest_GetAllMmiSubscribedEvents_001, TestSize.Level1) 210 { 211 NapProcess napProcess; 212 std::map<std::tuple<int32_t, int32_t, std::string>, int32_t> datas; 213 ASSERT_EQ(napProcess.GetAllMmiSubscribedEvents(datas), RET_OK); 214 ASSERT_TRUE(datas.empty()); 215 } 216 217 /** 218 * @tc.name: NapProcessTest_GetAllMmiSubscribedEvents_002 219 * @tc.desc: Test get all mmi subscribed events 220 * @tc.type: FUNC 221 * @tc.require: 222 */ 223 HWTEST_F(NapProcessTest, NapProcessTest_GetAllMmiSubscribedEvents_002, TestSize.Level1) 224 { 225 NapProcess napProcess; 226 NapProcess::NapStatusData data; 227 data.pid = 1; 228 data.uid = 1; 229 data.bundleName = "bundleName"; 230 napProcess.napMap_[data] = SUBSCRIBED; 231 std::map<std::tuple<int32_t, int32_t, std::string>, int32_t> datas; 232 ASSERT_EQ(napProcess.GetAllMmiSubscribedEvents(datas), RET_OK); 233 ASSERT_FALSE(datas.empty()); 234 } 235 } // namespace MMI 236 } // namespace OHOS