1c29fa5a6Sopenharmony_ci/* 2c29fa5a6Sopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd. 3c29fa5a6Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4c29fa5a6Sopenharmony_ci * you may not use this file except in compliance with the License. 5c29fa5a6Sopenharmony_ci * You may obtain a copy of the License at 6c29fa5a6Sopenharmony_ci * 7c29fa5a6Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8c29fa5a6Sopenharmony_ci * 9c29fa5a6Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10c29fa5a6Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11c29fa5a6Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12c29fa5a6Sopenharmony_ci * See the License for the specific language governing permissions and 13c29fa5a6Sopenharmony_ci * limitations under the License. 14c29fa5a6Sopenharmony_ci */ 15c29fa5a6Sopenharmony_ci 16c29fa5a6Sopenharmony_ci#include <gtest/gtest.h> 17c29fa5a6Sopenharmony_ci 18c29fa5a6Sopenharmony_ci#include "delegate_tasks.h" 19c29fa5a6Sopenharmony_ci#include "error_multimodal.h" 20c29fa5a6Sopenharmony_ci#include "key_event_napi.h" 21c29fa5a6Sopenharmony_ci#include "mmi_log.h" 22c29fa5a6Sopenharmony_ci 23c29fa5a6Sopenharmony_ci#undef MMI_LOG_TAG 24c29fa5a6Sopenharmony_ci#define MMI_LOG_TAG "DelegateTasksTest" 25c29fa5a6Sopenharmony_cinamespace OHOS { 26c29fa5a6Sopenharmony_cinamespace MMI { 27c29fa5a6Sopenharmony_cinamespace { 28c29fa5a6Sopenharmony_ciusing namespace testing::ext; 29c29fa5a6Sopenharmony_ci} // namespace 30c29fa5a6Sopenharmony_ci 31c29fa5a6Sopenharmony_ciclass DelegateTasksTest : public testing::Test { 32c29fa5a6Sopenharmony_cipublic: 33c29fa5a6Sopenharmony_ci static void SetUpTestCase(void) {} 34c29fa5a6Sopenharmony_ci static void TearDownTestCase(void) {} 35c29fa5a6Sopenharmony_ci}; 36c29fa5a6Sopenharmony_ci 37c29fa5a6Sopenharmony_ci/** 38c29fa5a6Sopenharmony_ci * @tc.name: DelegateTasksTest_Init_001 39c29fa5a6Sopenharmony_ci * @tc.desc: Test the function Init 40c29fa5a6Sopenharmony_ci * @tc.type: FUNC 41c29fa5a6Sopenharmony_ci * @tc.require: 42c29fa5a6Sopenharmony_ci */ 43c29fa5a6Sopenharmony_ciHWTEST_F(DelegateTasksTest, DelegateTasksTest_Init_001, TestSize.Level1) 44c29fa5a6Sopenharmony_ci{ 45c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 46c29fa5a6Sopenharmony_ci DelegateTasks delegateTasks; 47c29fa5a6Sopenharmony_ci ASSERT_NO_FATAL_FAILURE(delegateTasks.Init()); 48c29fa5a6Sopenharmony_ci ASSERT_NO_FATAL_FAILURE(delegateTasks.ProcessTasks()); 49c29fa5a6Sopenharmony_ci EXPECT_EQ(delegateTasks.PostSyncTask(nullptr), ERROR_NULL_POINTER); 50c29fa5a6Sopenharmony_ci} 51c29fa5a6Sopenharmony_ci 52c29fa5a6Sopenharmony_ci/** 53c29fa5a6Sopenharmony_ci * @tc.name: DelegateTasksTest_PostSyncTask_002 54c29fa5a6Sopenharmony_ci * @tc.desc: Test the function PostSyncTask 55c29fa5a6Sopenharmony_ci * @tc.type: FUNC 56c29fa5a6Sopenharmony_ci * @tc.require: 57c29fa5a6Sopenharmony_ci */ 58c29fa5a6Sopenharmony_ciHWTEST_F(DelegateTasksTest, DelegateTasksTest_PostSyncTask_002, TestSize.Level1) 59c29fa5a6Sopenharmony_ci{ 60c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 61c29fa5a6Sopenharmony_ci DelegateTasks delegateTasks; 62c29fa5a6Sopenharmony_ci auto callback = []() { return 0; }; 63c29fa5a6Sopenharmony_ci EXPECT_EQ(delegateTasks.PostSyncTask(callback), 65142804); 64c29fa5a6Sopenharmony_ci} 65c29fa5a6Sopenharmony_ci 66c29fa5a6Sopenharmony_ci/** 67c29fa5a6Sopenharmony_ci * @tc.name: DelegateTasksTest_PostSyncTask_003 68c29fa5a6Sopenharmony_ci * @tc.desc: Test the function PostSyncTask 69c29fa5a6Sopenharmony_ci * @tc.type: FUNC 70c29fa5a6Sopenharmony_ci * @tc.require: 71c29fa5a6Sopenharmony_ci */ 72c29fa5a6Sopenharmony_ciHWTEST_F(DelegateTasksTest, DelegateTasksTest_PostSyncTask_003, TestSize.Level1) 73c29fa5a6Sopenharmony_ci{ 74c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 75c29fa5a6Sopenharmony_ci DelegateTasks delegateTasks; 76c29fa5a6Sopenharmony_ci auto callback = []() { return 0; }; 77c29fa5a6Sopenharmony_ci EXPECT_EQ(delegateTasks.PostSyncTask(callback), ETASKS_POST_SYNCTASK_FAIL); 78c29fa5a6Sopenharmony_ci} 79c29fa5a6Sopenharmony_ci 80c29fa5a6Sopenharmony_ci/** 81c29fa5a6Sopenharmony_ci * @tc.name: DelegateTasksTest_PostSyncTask_004 82c29fa5a6Sopenharmony_ci * @tc.desc: Test the function PostSyncTask 83c29fa5a6Sopenharmony_ci * @tc.type: FUNC 84c29fa5a6Sopenharmony_ci * @tc.require: 85c29fa5a6Sopenharmony_ci */ 86c29fa5a6Sopenharmony_ciHWTEST_F(DelegateTasksTest, DelegateTasksTest_PostSyncTask_004, TestSize.Level1) 87c29fa5a6Sopenharmony_ci{ 88c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 89c29fa5a6Sopenharmony_ci DelegateTasks delegateTasks; 90c29fa5a6Sopenharmony_ci auto callback = []() { std::this_thread::sleep_for(std::chrono::seconds(4)); return 0; }; 91c29fa5a6Sopenharmony_ci EXPECT_NE(delegateTasks.PostSyncTask(callback), ETASKS_WAIT_TIMEOUT); 92c29fa5a6Sopenharmony_ci} 93c29fa5a6Sopenharmony_ci 94c29fa5a6Sopenharmony_ci/** 95c29fa5a6Sopenharmony_ci * @tc.name: DelegateTasksTest_PostSyncTask_005 96c29fa5a6Sopenharmony_ci * @tc.desc: Test the function PostSyncTask 97c29fa5a6Sopenharmony_ci * @tc.type: FUNC 98c29fa5a6Sopenharmony_ci * @tc.require: 99c29fa5a6Sopenharmony_ci */ 100c29fa5a6Sopenharmony_ciHWTEST_F(DelegateTasksTest, DelegateTasksTest_PostSyncTask_005, TestSize.Level1) 101c29fa5a6Sopenharmony_ci{ 102c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 103c29fa5a6Sopenharmony_ci DelegateTasks delegateTasks; 104c29fa5a6Sopenharmony_ci auto callback = []() { return 0; }; 105c29fa5a6Sopenharmony_ci EXPECT_NE(delegateTasks.PostSyncTask(callback), ETASKS_WAIT_DEFERRED); 106c29fa5a6Sopenharmony_ci} 107c29fa5a6Sopenharmony_ci 108c29fa5a6Sopenharmony_ci/** 109c29fa5a6Sopenharmony_ci * @tc.name: DelegateTasksTest_PostAsyncTask_001 110c29fa5a6Sopenharmony_ci * @tc.desc: Test the function PostAsyncTask 111c29fa5a6Sopenharmony_ci * @tc.type: FUNC 112c29fa5a6Sopenharmony_ci * @tc.require: 113c29fa5a6Sopenharmony_ci */ 114c29fa5a6Sopenharmony_ciHWTEST_F(DelegateTasksTest, DelegateTasksTest_PostAsyncTask_001, TestSize.Level1) 115c29fa5a6Sopenharmony_ci{ 116c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 117c29fa5a6Sopenharmony_ci DelegateTasks delegateTasks; 118c29fa5a6Sopenharmony_ci EXPECT_EQ(delegateTasks.PostAsyncTask(nullptr), ERROR_NULL_POINTER); 119c29fa5a6Sopenharmony_ci} 120c29fa5a6Sopenharmony_ci 121c29fa5a6Sopenharmony_ci/** 122c29fa5a6Sopenharmony_ci * @tc.name: DelegateTasksTest_PopPendingTaskList_001 123c29fa5a6Sopenharmony_ci * @tc.desc: Test the function PopPendingTaskList 124c29fa5a6Sopenharmony_ci * @tc.type: FUNC 125c29fa5a6Sopenharmony_ci * @tc.require: 126c29fa5a6Sopenharmony_ci */ 127c29fa5a6Sopenharmony_ciHWTEST_F(DelegateTasksTest, DelegateTasksTest_PopPendingTaskList_001, TestSize.Level1) 128c29fa5a6Sopenharmony_ci{ 129c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 130c29fa5a6Sopenharmony_ci DelegateTasks delegateTasks; 131c29fa5a6Sopenharmony_ci std::vector<DelegateTasks::TaskPtr> tasks; 132c29fa5a6Sopenharmony_ci ASSERT_NO_FATAL_FAILURE(delegateTasks.PopPendingTaskList(tasks)); 133c29fa5a6Sopenharmony_ci} 134c29fa5a6Sopenharmony_ci 135c29fa5a6Sopenharmony_ci/** 136c29fa5a6Sopenharmony_ci * @tc.name: DelegateTasksTest_PopPendingTaskList_002 137c29fa5a6Sopenharmony_ci * @tc.desc: Test the function PopPendingTaskList 138c29fa5a6Sopenharmony_ci * @tc.type: FUNC 139c29fa5a6Sopenharmony_ci * @tc.require: 140c29fa5a6Sopenharmony_ci */ 141c29fa5a6Sopenharmony_ciHWTEST_F(DelegateTasksTest, DelegateTasksTest_PopPendingTaskList_002, TestSize.Level1) 142c29fa5a6Sopenharmony_ci{ 143c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 144c29fa5a6Sopenharmony_ci DelegateTasks delegateTasks; 145c29fa5a6Sopenharmony_ci std::vector<DelegateTasks::TaskPtr> tasks; 146c29fa5a6Sopenharmony_ci for (int32_t i = 0; i < 15; i++) { 147c29fa5a6Sopenharmony_ci delegateTasks.PopPendingTaskList(tasks); 148c29fa5a6Sopenharmony_ci } 149c29fa5a6Sopenharmony_ci ASSERT_NO_FATAL_FAILURE(delegateTasks.PopPendingTaskList(tasks)); 150c29fa5a6Sopenharmony_ci} 151c29fa5a6Sopenharmony_ci 152c29fa5a6Sopenharmony_ci/** 153c29fa5a6Sopenharmony_ci * @tc.name: DelegateTasksTest_PostTask_001 154c29fa5a6Sopenharmony_ci * @tc.desc: Test the function PostTask 155c29fa5a6Sopenharmony_ci * @tc.type: FUNC 156c29fa5a6Sopenharmony_ci * @tc.require: 157c29fa5a6Sopenharmony_ci */ 158c29fa5a6Sopenharmony_ciHWTEST_F(DelegateTasksTest, DelegateTasksTest_PostTask_001, TestSize.Level1) 159c29fa5a6Sopenharmony_ci{ 160c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 161c29fa5a6Sopenharmony_ci DelegateTasks delegateTasks; 162c29fa5a6Sopenharmony_ci for (int32_t i = 0; i < 1001; i++) { 163c29fa5a6Sopenharmony_ci delegateTasks.PostTask(nullptr, nullptr); 164c29fa5a6Sopenharmony_ci } 165c29fa5a6Sopenharmony_ci auto task = delegateTasks.PostTask(nullptr, nullptr); 166c29fa5a6Sopenharmony_ci EXPECT_EQ(task, nullptr); 167c29fa5a6Sopenharmony_ci} 168c29fa5a6Sopenharmony_ci 169c29fa5a6Sopenharmony_ci/** 170c29fa5a6Sopenharmony_ci * @tc.name: DelegateTasksTest_PostTask_002 171c29fa5a6Sopenharmony_ci * @tc.desc: Test the function PostTask 172c29fa5a6Sopenharmony_ci * @tc.type: FUNC 173c29fa5a6Sopenharmony_ci * @tc.require: 174c29fa5a6Sopenharmony_ci */ 175c29fa5a6Sopenharmony_ciHWTEST_F(DelegateTasksTest, DelegateTasksTest_PostTask_002, TestSize.Level1) 176c29fa5a6Sopenharmony_ci{ 177c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 178c29fa5a6Sopenharmony_ci DelegateTasks delegateTasks; 179c29fa5a6Sopenharmony_ci DelegateTasks::Promise promise; 180c29fa5a6Sopenharmony_ci auto task = delegateTasks.PostTask(nullptr, &promise); 181c29fa5a6Sopenharmony_ci EXPECT_EQ(task, nullptr); 182c29fa5a6Sopenharmony_ci} 183c29fa5a6Sopenharmony_ci 184c29fa5a6Sopenharmony_ci/** 185c29fa5a6Sopenharmony_ci * @tc.name:DelegateTasksTest_CreateKeyEvent_001 186c29fa5a6Sopenharmony_ci * @tc.desc:Test the funcation CreateKeyEvent 187c29fa5a6Sopenharmony_ci * @tc.type: FUNC 188c29fa5a6Sopenharmony_ci * @tc.require: 189c29fa5a6Sopenharmony_ci */ 190c29fa5a6Sopenharmony_ciHWTEST_F(DelegateTasksTest, DelegateTasksTest_CreateKeyEvent_001, TestSize.Level1) 191c29fa5a6Sopenharmony_ci{ 192c29fa5a6Sopenharmony_ci KeyEventNapi napi; 193c29fa5a6Sopenharmony_ci napi_env env = nullptr; 194c29fa5a6Sopenharmony_ci std::shared_ptr<KeyEvent> in = KeyEvent::Create(); 195c29fa5a6Sopenharmony_ci ASSERT_NE(in, nullptr); 196c29fa5a6Sopenharmony_ci napi_value out = nullptr; 197c29fa5a6Sopenharmony_ci napi_status status = napi.CreateKeyEvent(env, in, out); 198c29fa5a6Sopenharmony_ci ASSERT_NE(status, napi_ok); 199c29fa5a6Sopenharmony_ci} 200c29fa5a6Sopenharmony_ci 201c29fa5a6Sopenharmony_ci/** 202c29fa5a6Sopenharmony_ci * @tc.name:DelegateTasksTest_GetKeyEvent_001 203c29fa5a6Sopenharmony_ci * @tc.desc:Test the funcation GetKeyEvent 204c29fa5a6Sopenharmony_ci * @tc.type: FUNC 205c29fa5a6Sopenharmony_ci * @tc.require: 206c29fa5a6Sopenharmony_ci */ 207c29fa5a6Sopenharmony_ciHWTEST_F(DelegateTasksTest, DelegateTasksTest_GetKeyEvent_001, TestSize.Level1) 208c29fa5a6Sopenharmony_ci{ 209c29fa5a6Sopenharmony_ci KeyEventNapi napi; 210c29fa5a6Sopenharmony_ci napi_env env = nullptr; 211c29fa5a6Sopenharmony_ci napi_value in = nullptr; 212c29fa5a6Sopenharmony_ci std::shared_ptr<KeyEvent> out = KeyEvent::Create(); 213c29fa5a6Sopenharmony_ci ASSERT_NE(out, nullptr); 214c29fa5a6Sopenharmony_ci napi_status status = napi.GetKeyEvent(env, in, out); 215c29fa5a6Sopenharmony_ci ASSERT_NE(status, napi_ok); 216c29fa5a6Sopenharmony_ci} 217c29fa5a6Sopenharmony_ci 218c29fa5a6Sopenharmony_ci/** 219c29fa5a6Sopenharmony_ci * @tc.name:DelegateTasksTest_CreateKeyItem_001 220c29fa5a6Sopenharmony_ci * @tc.desc:Test the funcation CreateKeyItem 221c29fa5a6Sopenharmony_ci * @tc.type: FUNC 222c29fa5a6Sopenharmony_ci * @tc.require: 223c29fa5a6Sopenharmony_ci */ 224c29fa5a6Sopenharmony_ciHWTEST_F(DelegateTasksTest, DelegateTasksTest_CreateKeyItem_001, TestSize.Level1) 225c29fa5a6Sopenharmony_ci{ 226c29fa5a6Sopenharmony_ci KeyEventNapi napi; 227c29fa5a6Sopenharmony_ci napi_env env = nullptr; 228c29fa5a6Sopenharmony_ci KeyEvent::KeyItem item; 229c29fa5a6Sopenharmony_ci std::optional<KeyEvent::KeyItem> in; 230c29fa5a6Sopenharmony_ci item.SetKeyCode(2018); 231c29fa5a6Sopenharmony_ci item.SetPressed(false); 232c29fa5a6Sopenharmony_ci in.emplace(item); 233c29fa5a6Sopenharmony_ci napi_value out = nullptr; 234c29fa5a6Sopenharmony_ci napi_status status = napi.CreateKeyItem(env, in, out); 235c29fa5a6Sopenharmony_ci ASSERT_NE(status, napi_ok); 236c29fa5a6Sopenharmony_ci} 237c29fa5a6Sopenharmony_ci 238c29fa5a6Sopenharmony_ci/** 239c29fa5a6Sopenharmony_ci * @tc.name:DelegateTasksTest_GetKeyItem_001 240c29fa5a6Sopenharmony_ci * @tc.desc:Test the funcation GetKeyItem 241c29fa5a6Sopenharmony_ci * @tc.type: FUNC 242c29fa5a6Sopenharmony_ci * @tc.require: 243c29fa5a6Sopenharmony_ci */ 244c29fa5a6Sopenharmony_ciHWTEST_F(DelegateTasksTest, DelegateTasksTest_GetKeyItem_001, TestSize.Level1) 245c29fa5a6Sopenharmony_ci{ 246c29fa5a6Sopenharmony_ci KeyEventNapi napi; 247c29fa5a6Sopenharmony_ci napi_env env = nullptr; 248c29fa5a6Sopenharmony_ci napi_value in = nullptr; 249c29fa5a6Sopenharmony_ci KeyEvent::KeyItem out; 250c29fa5a6Sopenharmony_ci out.SetKeyCode(2024); 251c29fa5a6Sopenharmony_ci out.SetPressed(false); 252c29fa5a6Sopenharmony_ci napi_status status = napi.GetKeyItem(env, in, out); 253c29fa5a6Sopenharmony_ci ASSERT_EQ(status, napi_ok); 254c29fa5a6Sopenharmony_ci} 255c29fa5a6Sopenharmony_ci} // namespace MMI 256c29fa5a6Sopenharmony_ci} // namespace OHOS