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 <gtest/gtest.h> 17 18 #include "delegate_interface.h" 19 #include "error_multimodal.h" 20 21 #include "mmi_log.h" 22 23 #undef MMI_LOG_TAG 24 #define MMI_LOG_TAG "DelegateInterfaceTest" 25 namespace OHOS { 26 namespace MMI { 27 namespace { 28 using namespace testing::ext; 29 } // namespace 30 31 class DelegateInterfaceTest : public testing::Test { 32 public: SetUpTestCase(void)33 static void SetUpTestCase(void) {} TearDownTestCase(void)34 static void TearDownTestCase(void) {} 35 }; 36 37 /** 38 * @tc.name: DelegateInterfaceTest_GetDeviceTags_01 39 * @tc.desc: Test the function GetDeviceTags 40 * @tc.type: FUNC 41 * @tc.require: 42 */ 43 HWTEST_F(DelegateInterfaceTest, DelegateInterfaceTest_GetDeviceTags_01, TestSize.Level1) 44 { 45 CALL_TEST_DEBUG; __anonf59594830202(DTaskCallback cb) 46 std::function<int32_t(DTaskCallback)> delegate = [](DTaskCallback cb) -> int32_t { 47 return 0; 48 }; 49 DelegateInterface delegateInterface(delegate); 50 InputHandlerType type = InputHandlerType::MONITOR; 51 uint32_t ret = delegateInterface.GetDeviceTags(type); 52 EXPECT_EQ(ret, 0); 53 54 type = InputHandlerType::NONE; 55 EXPECT_TRUE(delegateInterface.handlers.empty()); 56 uint32_t ret2 = delegateInterface.GetDeviceTags(type); 57 EXPECT_EQ(ret2, 0); 58 } 59 60 /** 61 * @tc.name: DelegateInterfaceTest_GetDeviceTags_02 62 * @tc.desc: Test the function GetDeviceTags 63 * @tc.type: FUNC 64 * @tc.require: 65 */ 66 HWTEST_F(DelegateInterfaceTest, DelegateInterfaceTest_GetDeviceTags_02, TestSize.Level1) 67 { 68 CALL_TEST_DEBUG; __anonf59594830302(DTaskCallback cb) 69 std::function<int32_t(DTaskCallback)> delegate = [](DTaskCallback cb) -> int32_t { 70 return 0; 71 }; 72 DelegateInterface delegateInterface(delegate); 73 InputHandlerType type = InputHandlerType::INTERCEPTOR; 74 DelegateInterface::HandlerSummary handler1 = {"handler1", 0x1, HandlerMode::SYNC, 1, 2}; 75 DelegateInterface::HandlerSummary handler2 = {"handler2", 0x2, HandlerMode::ASYNC, 2, 3}; 76 delegateInterface.handlers.insert({INTERCEPTOR, handler1}); 77 delegateInterface.handlers.insert({MONITOR, handler2}); 78 ASSERT_FALSE(delegateInterface.handlers.empty()); 79 uint32_t ret1 = delegateInterface.GetDeviceTags(type); 80 EXPECT_EQ(ret1, 2); 81 82 type = InputHandlerType::NONE; 83 uint32_t ret2 = delegateInterface.GetDeviceTags(type); 84 EXPECT_EQ(ret2, 0); 85 } 86 87 /** 88 * @tc.name: DelegateInterfaceTest_RemoveLocal_01 89 * @tc.desc: Test the function RemoveLocal 90 * @tc.type: FUNC 91 * @tc.require: 92 */ 93 HWTEST_F(DelegateInterfaceTest, DelegateInterfaceTest_RemoveLocal_01, TestSize.Level1) 94 { 95 CALL_TEST_DEBUG; __anonf59594830402(DTaskCallback cb) 96 std::function<int32_t(DTaskCallback)> delegate = [](DTaskCallback cb) -> int32_t { 97 return 0; 98 }; 99 DelegateInterface delegateInterface(delegate); 100 InputHandlerType type = InputHandlerType::NONE; 101 std::string name = "handler"; 102 uint32_t deviceTags = 1; 103 DelegateInterface::HandlerSummary handler1 = {"handler1", 0x1, HandlerMode::SYNC, 1, 2}; 104 DelegateInterface::HandlerSummary handler2 = {"handler2", 0x2, HandlerMode::ASYNC, 2, 3}; 105 delegateInterface.handlers.insert({INTERCEPTOR, handler1}); 106 delegateInterface.handlers.insert({MONITOR, handler2}); 107 ASSERT_NO_FATAL_FAILURE(delegateInterface.RemoveLocal(type, name, deviceTags)); 108 109 type = InputHandlerType::INTERCEPTOR; 110 name = "handler3"; 111 ASSERT_NO_FATAL_FAILURE(delegateInterface.RemoveLocal(type, name, deviceTags)); 112 113 type = InputHandlerType::INTERCEPTOR; 114 name = "handler1"; 115 ASSERT_NO_FATAL_FAILURE(delegateInterface.RemoveLocal(type, name, deviceTags)); 116 } 117 118 /** 119 * @tc.name: DelegateInterfaceTest_GetPriority_01 120 * @tc.desc: Test the function GetPriority 121 * @tc.type: FUNC 122 * @tc.require: 123 */ 124 HWTEST_F(DelegateInterfaceTest, DelegateInterfaceTest_GetPriority_01, TestSize.Level1) 125 { 126 CALL_TEST_DEBUG; __anonf59594830502(DTaskCallback cb) 127 std::function<int32_t(DTaskCallback)> delegate = [](DTaskCallback cb) -> int32_t { 128 return 0; 129 }; 130 DelegateInterface delegateInterface(delegate); 131 InputHandlerType type = InputHandlerType::INTERCEPTOR; 132 DelegateInterface::HandlerSummary handler1 = {"handler1", 0x1, HandlerMode::SYNC, 1, 2}; 133 DelegateInterface::HandlerSummary handler2 = {"handler2", 0x2, HandlerMode::ASYNC, 2, 3}; 134 delegateInterface.handlers.insert({INTERCEPTOR, handler1}); 135 delegateInterface.handlers.insert({MONITOR, handler2}); 136 137 int32_t ret = delegateInterface.GetPriority(type); 138 EXPECT_EQ(ret, 1); 139 140 type = InputHandlerType::NONE; 141 int32_t ret2 = delegateInterface.GetPriority(type); 142 EXPECT_EQ(ret2, 500); 143 } 144 145 /** 146 * @tc.name: DelegateInterfaceTest_GetEventType_01 147 * @tc.desc: Test the function GetEventType 148 * @tc.type: FUNC 149 * @tc.require: 150 */ 151 HWTEST_F(DelegateInterfaceTest, DelegateInterfaceTest_GetEventType_01, TestSize.Level1) 152 { 153 CALL_TEST_DEBUG; __anonf59594830602(DTaskCallback cb) 154 std::function<int32_t(DTaskCallback)> delegate = [](DTaskCallback cb) -> int32_t { 155 return 0; 156 }; 157 DelegateInterface delegateInterface(delegate); 158 InputHandlerType type = InputHandlerType::MONITOR; 159 EXPECT_TRUE(delegateInterface.handlers.empty()); 160 uint32_t ret = delegateInterface.GetEventType(type); 161 EXPECT_EQ(ret, 0); 162 } 163 164 /** 165 * @tc.name: DelegateInterfaceTest_GetEventType_02 166 * @tc.desc: Test the function GetEventType 167 * @tc.type: FUNC 168 * @tc.require: 169 */ 170 HWTEST_F(DelegateInterfaceTest, DelegateInterfaceTest_GetEventType_02, TestSize.Level1) 171 { 172 CALL_TEST_DEBUG; __anonf59594830702(DTaskCallback cb) 173 std::function<int32_t(DTaskCallback)> delegate = [](DTaskCallback cb) -> int32_t { 174 return 0; 175 }; 176 DelegateInterface delegateInterface(delegate); 177 InputHandlerType type = InputHandlerType::MONITOR; 178 DelegateInterface::HandlerSummary handler1 = {"handler1", 0x1, HandlerMode::SYNC, 1, 2}; 179 DelegateInterface::HandlerSummary handler2 = {"handler2", 0x2, HandlerMode::ASYNC, 2, 3}; 180 delegateInterface.handlers.insert({INTERCEPTOR, handler1}); 181 delegateInterface.handlers.insert({MONITOR, handler2}); 182 uint32_t ret = delegateInterface.GetEventType(type); 183 EXPECT_EQ(ret, 2); 184 } 185 186 /** 187 * @tc.name: DelegateInterfaceTest_OnPostSyncTask_01 188 * @tc.desc: Test the function OnPostSyncTask 189 * @tc.type: FUNC 190 * @tc.require: 191 */ 192 HWTEST_F(DelegateInterfaceTest, DelegateInterfaceTest_OnPostSyncTask_01, TestSize.Level1) 193 { 194 CALL_TEST_DEBUG; __anonf59594830802(DTaskCallback cb) 195 std::function<int32_t(DTaskCallback)> delegate = [](DTaskCallback cb) -> int32_t { 196 return 0; 197 }; 198 DelegateInterface delegateInterface(delegate); __anonf59594830902() 199 DTaskCallback myCallback = []() -> int32_t { 200 return RET_OK; 201 }; 202 uint32_t ret = delegateInterface.OnPostSyncTask(myCallback); 203 EXPECT_EQ(ret, RET_OK); 204 } 205 206 /** 207 * @tc.name: DelegateInterfaceTest_OnInputEventHandler_01 208 * @tc.desc: Test the function OnInputEventHandler 209 * @tc.type: FUNC 210 * @tc.require: 211 */ 212 HWTEST_F(DelegateInterfaceTest, DelegateInterfaceTest_OnInputEventHandler_01, TestSize.Level1) 213 { 214 CALL_TEST_DEBUG; __anonf59594830a02(DTaskCallback cb) 215 std::function<int32_t(DTaskCallback)> delegate = [](DTaskCallback cb) -> int32_t { 216 return 0; 217 }; 218 DelegateInterface delegateInterface(delegate); 219 std::shared_ptr<PointerEvent> pointerEvent = PointerEvent::Create(); 220 ASSERT_NE(pointerEvent, nullptr); 221 222 InputHandlerType type = InputHandlerType::NONE; 223 DelegateInterface::HandlerSummary handler1 = {"handler1", 0x1, HandlerMode::SYNC, 1, 2}; 224 DelegateInterface::HandlerSummary handler2 = {"handler2", 0x2, HandlerMode::ASYNC, 2, 3}; 225 delegateInterface.handlers.insert({INTERCEPTOR, handler1}); 226 delegateInterface.handlers.insert({MONITOR, handler2}); 227 ASSERT_NO_FATAL_FAILURE(delegateInterface.OnInputEventHandler(type, pointerEvent)); 228 #ifdef OHOS_BUILD_ENABLE_MONITOR 229 type = InputHandlerType::MONITOR; 230 ASSERT_NO_FATAL_FAILURE(delegateInterface.OnInputEventHandler(type, pointerEvent)); 231 #endif // OHOS_BUILD_ENABLE_MONITOR 232 233 #ifdef OHOS_BUILD_ENABLE_INTERCEPTOR 234 type = InputHandlerType::INTERCEPTOR; 235 ASSERT_NO_FATAL_FAILURE(delegateInterface.OnInputEventHandler(type, pointerEvent)); 236 #endif // OHOS_BUILD_ENABLE_INTERCEPTOR 237 } 238 239 /** 240 * @tc.name: DelegateInterfaceTest_AddHandler_01 241 * @tc.desc: Test the function AddHandler 242 * @tc.type: FUNC 243 * @tc.require: 244 */ 245 HWTEST_F(DelegateInterfaceTest, DelegateInterfaceTest_AddHandler_01, TestSize.Level1) 246 { 247 CALL_TEST_DEBUG; __anonf59594830b02(DTaskCallback cb) 248 std::function<int32_t(DTaskCallback)> delegate = [](DTaskCallback cb) -> int32_t { 249 return 0; 250 }; 251 DelegateInterface delegateInterface(delegate); 252 DelegateInterface::HandlerSummary summary; 253 summary.handlerName = "handler1"; 254 DelegateInterface::HandlerSummary handler1 = {"handler1", 0x1, HandlerMode::SYNC, 1, 2}; 255 DelegateInterface::HandlerSummary handler2 = {"handler2", 0x2, HandlerMode::ASYNC, 2, 3}; 256 delegateInterface.handlers.insert({INTERCEPTOR, handler1}); 257 delegateInterface.handlers.insert({MONITOR, handler2}); 258 259 InputHandlerType type = InputHandlerType::MONITOR; 260 int32_t ret = delegateInterface.AddHandler(type, summary); 261 EXPECT_EQ(ret, ERROR_NULL_POINTER); 262 263 summary.handlerName = "handler"; 264 int32_t ret2 = delegateInterface.AddHandler(type, summary); 265 EXPECT_EQ(ret2, ERROR_NULL_POINTER); 266 } 267 268 /** 269 * @tc.name: DelegateInterfaceTest_AddHandler_02 270 * @tc.desc: Test the function AddHandler 271 * @tc.type: FUNC 272 * @tc.require: 273 */ 274 HWTEST_F(DelegateInterfaceTest, DelegateInterfaceTest_AddHandler_02, TestSize.Level1) 275 { 276 CALL_TEST_DEBUG; __anonf59594830c02(DTaskCallback cb) 277 std::function<int32_t(DTaskCallback)> delegate = [](DTaskCallback cb) -> int32_t { 278 return 0; 279 }; 280 DelegateInterface delegateInterface(delegate); 281 DelegateInterface::HandlerSummary summary; 282 summary.handlerName = "handler"; 283 DelegateInterface::HandlerSummary handler1 = {"handler1", 0x1, HandlerMode::SYNC, 1, 2}; 284 DelegateInterface::HandlerSummary handler2 = {"handler2", 0x2, HandlerMode::ASYNC, 2, 3}; 285 delegateInterface.handlers.insert({INTERCEPTOR, handler1}); 286 delegateInterface.handlers.insert({MONITOR, handler2}); 287 288 InputHandlerType type = InputHandlerType::MONITOR; 289 HandleEventType currentType = delegateInterface.GetEventType(type); 290 type = InputHandlerType::INTERCEPTOR; 291 HandleEventType newType = delegateInterface.GetEventType(type); 292 EXPECT_TRUE(currentType != newType); 293 294 uint32_t currentTags = delegateInterface.GetDeviceTags(type); 295 summary.deviceTags = 1; 296 EXPECT_TRUE((currentTags & summary.deviceTags) != summary.deviceTags); 297 298 int32_t ret = delegateInterface.AddHandler(type, summary); 299 EXPECT_EQ(ret, ERROR_NULL_POINTER); 300 301 type = InputHandlerType::MONITOR; 302 currentType = delegateInterface.GetEventType(type); 303 newType = delegateInterface.GetEventType(type); 304 EXPECT_FALSE(currentType != newType); 305 int32_t ret2 = delegateInterface.AddHandler(type, summary); 306 EXPECT_EQ(ret2, ERROR_NULL_POINTER); 307 } 308 } // namespace MMI 309 } // namespace OHOS