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_tasks.h" 19 #include "error_multimodal.h" 20 #include "key_event_napi.h" 21 #include "mmi_log.h" 22 23 #undef MMI_LOG_TAG 24 #define MMI_LOG_TAG "DelegateTasksTest" 25 namespace OHOS { 26 namespace MMI { 27 namespace { 28 using namespace testing::ext; 29 } // namespace 30 31 class DelegateTasksTest : 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: DelegateTasksTest_Init_001 39 * @tc.desc: Test the function Init 40 * @tc.type: FUNC 41 * @tc.require: 42 */ 43 HWTEST_F(DelegateTasksTest, DelegateTasksTest_Init_001, TestSize.Level1) 44 { 45 CALL_TEST_DEBUG; 46 DelegateTasks delegateTasks; 47 ASSERT_NO_FATAL_FAILURE(delegateTasks.Init()); 48 ASSERT_NO_FATAL_FAILURE(delegateTasks.ProcessTasks()); 49 EXPECT_EQ(delegateTasks.PostSyncTask(nullptr), ERROR_NULL_POINTER); 50 } 51 52 /** 53 * @tc.name: DelegateTasksTest_PostSyncTask_002 54 * @tc.desc: Test the function PostSyncTask 55 * @tc.type: FUNC 56 * @tc.require: 57 */ 58 HWTEST_F(DelegateTasksTest, DelegateTasksTest_PostSyncTask_002, TestSize.Level1) 59 { 60 CALL_TEST_DEBUG; 61 DelegateTasks delegateTasks; __anonff8e5ed80202() 62 auto callback = []() { return 0; }; 63 EXPECT_EQ(delegateTasks.PostSyncTask(callback), 65142804); 64 } 65 66 /** 67 * @tc.name: DelegateTasksTest_PostSyncTask_003 68 * @tc.desc: Test the function PostSyncTask 69 * @tc.type: FUNC 70 * @tc.require: 71 */ 72 HWTEST_F(DelegateTasksTest, DelegateTasksTest_PostSyncTask_003, TestSize.Level1) 73 { 74 CALL_TEST_DEBUG; 75 DelegateTasks delegateTasks; __anonff8e5ed80302() 76 auto callback = []() { return 0; }; 77 EXPECT_EQ(delegateTasks.PostSyncTask(callback), ETASKS_POST_SYNCTASK_FAIL); 78 } 79 80 /** 81 * @tc.name: DelegateTasksTest_PostSyncTask_004 82 * @tc.desc: Test the function PostSyncTask 83 * @tc.type: FUNC 84 * @tc.require: 85 */ 86 HWTEST_F(DelegateTasksTest, DelegateTasksTest_PostSyncTask_004, TestSize.Level1) 87 { 88 CALL_TEST_DEBUG; 89 DelegateTasks delegateTasks; __anonff8e5ed80402() 90 auto callback = []() { std::this_thread::sleep_for(std::chrono::seconds(4)); return 0; }; 91 EXPECT_NE(delegateTasks.PostSyncTask(callback), ETASKS_WAIT_TIMEOUT); 92 } 93 94 /** 95 * @tc.name: DelegateTasksTest_PostSyncTask_005 96 * @tc.desc: Test the function PostSyncTask 97 * @tc.type: FUNC 98 * @tc.require: 99 */ 100 HWTEST_F(DelegateTasksTest, DelegateTasksTest_PostSyncTask_005, TestSize.Level1) 101 { 102 CALL_TEST_DEBUG; 103 DelegateTasks delegateTasks; __anonff8e5ed80502() 104 auto callback = []() { return 0; }; 105 EXPECT_NE(delegateTasks.PostSyncTask(callback), ETASKS_WAIT_DEFERRED); 106 } 107 108 /** 109 * @tc.name: DelegateTasksTest_PostAsyncTask_001 110 * @tc.desc: Test the function PostAsyncTask 111 * @tc.type: FUNC 112 * @tc.require: 113 */ 114 HWTEST_F(DelegateTasksTest, DelegateTasksTest_PostAsyncTask_001, TestSize.Level1) 115 { 116 CALL_TEST_DEBUG; 117 DelegateTasks delegateTasks; 118 EXPECT_EQ(delegateTasks.PostAsyncTask(nullptr), ERROR_NULL_POINTER); 119 } 120 121 /** 122 * @tc.name: DelegateTasksTest_PopPendingTaskList_001 123 * @tc.desc: Test the function PopPendingTaskList 124 * @tc.type: FUNC 125 * @tc.require: 126 */ 127 HWTEST_F(DelegateTasksTest, DelegateTasksTest_PopPendingTaskList_001, TestSize.Level1) 128 { 129 CALL_TEST_DEBUG; 130 DelegateTasks delegateTasks; 131 std::vector<DelegateTasks::TaskPtr> tasks; 132 ASSERT_NO_FATAL_FAILURE(delegateTasks.PopPendingTaskList(tasks)); 133 } 134 135 /** 136 * @tc.name: DelegateTasksTest_PopPendingTaskList_002 137 * @tc.desc: Test the function PopPendingTaskList 138 * @tc.type: FUNC 139 * @tc.require: 140 */ 141 HWTEST_F(DelegateTasksTest, DelegateTasksTest_PopPendingTaskList_002, TestSize.Level1) 142 { 143 CALL_TEST_DEBUG; 144 DelegateTasks delegateTasks; 145 std::vector<DelegateTasks::TaskPtr> tasks; 146 for (int32_t i = 0; i < 15; i++) { 147 delegateTasks.PopPendingTaskList(tasks); 148 } 149 ASSERT_NO_FATAL_FAILURE(delegateTasks.PopPendingTaskList(tasks)); 150 } 151 152 /** 153 * @tc.name: DelegateTasksTest_PostTask_001 154 * @tc.desc: Test the function PostTask 155 * @tc.type: FUNC 156 * @tc.require: 157 */ 158 HWTEST_F(DelegateTasksTest, DelegateTasksTest_PostTask_001, TestSize.Level1) 159 { 160 CALL_TEST_DEBUG; 161 DelegateTasks delegateTasks; 162 for (int32_t i = 0; i < 1001; i++) { 163 delegateTasks.PostTask(nullptr, nullptr); 164 } 165 auto task = delegateTasks.PostTask(nullptr, nullptr); 166 EXPECT_EQ(task, nullptr); 167 } 168 169 /** 170 * @tc.name: DelegateTasksTest_PostTask_002 171 * @tc.desc: Test the function PostTask 172 * @tc.type: FUNC 173 * @tc.require: 174 */ 175 HWTEST_F(DelegateTasksTest, DelegateTasksTest_PostTask_002, TestSize.Level1) 176 { 177 CALL_TEST_DEBUG; 178 DelegateTasks delegateTasks; 179 std::shared_ptr<DelegateTasks::Promise> promise = std::make_shared<DelegateTasks::Promise>(); 180 auto task = delegateTasks.PostTask(nullptr, promise); 181 EXPECT_EQ(task, nullptr); 182 } 183 184 /** 185 * @tc.name: DelegateTasksTest_CreateKeyEvent_001 186 * @tc.desc: Test the funcation CreateKeyEvent 187 * @tc.type: FUNC 188 * @tc.require: 189 */ 190 HWTEST_F(DelegateTasksTest, DelegateTasksTest_CreateKeyEvent_001, TestSize.Level1) 191 { 192 KeyEventNapi napi; 193 napi_env env = nullptr; 194 std::shared_ptr<KeyEvent> in = KeyEvent::Create(); 195 ASSERT_NE(in, nullptr); 196 napi_value out = nullptr; 197 napi_status status = napi.CreateKeyEvent(env, in, out); 198 ASSERT_NE(status, napi_ok); 199 } 200 201 /** 202 * @tc.name: DelegateTasksTest_GetKeyEvent_001 203 * @tc.desc: Test the funcation GetKeyEvent 204 * @tc.type: FUNC 205 * @tc.require: 206 */ 207 HWTEST_F(DelegateTasksTest, DelegateTasksTest_GetKeyEvent_001, TestSize.Level1) 208 { 209 KeyEventNapi napi; 210 napi_env env = nullptr; 211 napi_value in = nullptr; 212 std::shared_ptr<KeyEvent> out = KeyEvent::Create(); 213 ASSERT_NE(out, nullptr); 214 napi_status status = napi.GetKeyEvent(env, in, out); 215 ASSERT_NE(status, napi_ok); 216 } 217 218 /** 219 * @tc.name: DelegateTasksTest_CreateKeyItem_001 220 * @tc.desc: Test the funcation CreateKeyItem 221 * @tc.type: FUNC 222 * @tc.require: 223 */ 224 HWTEST_F(DelegateTasksTest, DelegateTasksTest_CreateKeyItem_001, TestSize.Level1) 225 { 226 KeyEventNapi napi; 227 napi_env env = nullptr; 228 KeyEvent::KeyItem item; 229 std::optional<KeyEvent::KeyItem> in; 230 item.SetKeyCode(2018); 231 item.SetPressed(false); 232 in.emplace(item); 233 napi_value out = nullptr; 234 napi_status status = napi.CreateKeyItem(env, in, out); 235 ASSERT_NE(status, napi_ok); 236 } 237 238 /** 239 * @tc.name: DelegateTasksTest_GetKeyItem_001 240 * @tc.desc: Test the funcation GetKeyItem 241 * @tc.type: FUNC 242 * @tc.require: 243 */ 244 HWTEST_F(DelegateTasksTest, DelegateTasksTest_GetKeyItem_001, TestSize.Level1) 245 { 246 KeyEventNapi napi; 247 napi_env env = nullptr; 248 napi_value in = nullptr; 249 KeyEvent::KeyItem out; 250 out.SetKeyCode(2018); 251 out.SetPressed(false); 252 napi_status status = napi.GetKeyItem(env, in, out); 253 ASSERT_EQ(status, napi_ok); 254 } 255 } // namespace MMI 256 } // namespace OHOS