11401458bSopenharmony_ci/* 21401458bSopenharmony_ci * Copyright (c) 2022-2024 Huawei Device Co., Ltd. 31401458bSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 41401458bSopenharmony_ci * you may not use this file except in compliance with the License. 51401458bSopenharmony_ci * You may obtain a copy of the License at 61401458bSopenharmony_ci * 71401458bSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 81401458bSopenharmony_ci * 91401458bSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 101401458bSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 111401458bSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 121401458bSopenharmony_ci * See the License for the specific language governing permissions and 131401458bSopenharmony_ci * limitations under the License. 141401458bSopenharmony_ci */ 151401458bSopenharmony_ci 161401458bSopenharmony_ci#include <gtest/gtest.h> 171401458bSopenharmony_ci 181401458bSopenharmony_ci#include <chrono> 191401458bSopenharmony_ci#include <iosfwd> 201401458bSopenharmony_ci#include <string> 211401458bSopenharmony_ci#include <thread> 221401458bSopenharmony_ci#include <unistd.h> 231401458bSopenharmony_ci#include <vector> 241401458bSopenharmony_ci 251401458bSopenharmony_ci#include "gtest/gtest-message.h" 261401458bSopenharmony_ci#include "gtest/gtest-test-part.h" 271401458bSopenharmony_ci#include "gtest/hwext/gtest-ext.h" 281401458bSopenharmony_ci#include "gtest/hwext/gtest-tag.h" 291401458bSopenharmony_ci 301401458bSopenharmony_ci#include "ash_mem_utils.h" 311401458bSopenharmony_ci#include "file_util.h" 321401458bSopenharmony_ci#include "hilog/log.h" 331401458bSopenharmony_ci#include "hisysevent_base_listener.h" 341401458bSopenharmony_ci#include "hisysevent_base_query_callback.h" 351401458bSopenharmony_ci#include "hisysevent_delegate.h" 361401458bSopenharmony_ci#include "hisysevent_listener_proxy.h" 371401458bSopenharmony_ci#include "hisysevent_query_proxy.h" 381401458bSopenharmony_ci#include "hisysevent_rules.h" 391401458bSopenharmony_ci#include "iquery_sys_event_callback.h" 401401458bSopenharmony_ci#include "query_argument.h" 411401458bSopenharmony_ci#include "query_sys_event_callback_stub.h" 421401458bSopenharmony_ci#include "ret_code.h" 431401458bSopenharmony_ci#include "string_ex.h" 441401458bSopenharmony_ci#include "string_util.h" 451401458bSopenharmony_ci#include "sys_event_service_proxy.h" 461401458bSopenharmony_ci 471401458bSopenharmony_ci 481401458bSopenharmony_ciusing namespace testing::ext; 491401458bSopenharmony_ciusing namespace OHOS; 501401458bSopenharmony_ciusing namespace OHOS::HiviewDFX; 511401458bSopenharmony_ci 521401458bSopenharmony_cinamespace { 531401458bSopenharmony_ciconstexpr char ASH_MEM_NAME[] = "TestSharedMemory"; 541401458bSopenharmony_ciconstexpr int32_t ASH_MEM_SIZE = 1024 * 2; // 2K 551401458bSopenharmony_ciconstexpr char LOG_DIR_PATH[] = "/data/test/adapter_native_test"; 561401458bSopenharmony_ciconstexpr char FILE_PATH[] = "/data/test/adapter_native_test/test.log"; 571401458bSopenharmony_ci 581401458bSopenharmony_cisptr<Ashmem> GetAshmem() 591401458bSopenharmony_ci{ 601401458bSopenharmony_ci auto ashmem = Ashmem::CreateAshmem(ASH_MEM_NAME, ASH_MEM_SIZE); 611401458bSopenharmony_ci if (ashmem == nullptr) { 621401458bSopenharmony_ci return nullptr; 631401458bSopenharmony_ci } 641401458bSopenharmony_ci if (!ashmem->MapReadAndWriteAshmem()) { 651401458bSopenharmony_ci return ashmem; 661401458bSopenharmony_ci } 671401458bSopenharmony_ci return ashmem; 681401458bSopenharmony_ci} 691401458bSopenharmony_ci 701401458bSopenharmony_ciuint64_t GetMilliseconds() 711401458bSopenharmony_ci{ 721401458bSopenharmony_ci auto now = std::chrono::system_clock::now(); 731401458bSopenharmony_ci auto millisecs = std::chrono::duration_cast<std::chrono::milliseconds>(now.time_since_epoch()); 741401458bSopenharmony_ci return millisecs.count(); 751401458bSopenharmony_ci} 761401458bSopenharmony_ci 771401458bSopenharmony_ciclass QuerySysEventCallbackStubTest : public QuerySysEventCallbackStub { 781401458bSopenharmony_cipublic: 791401458bSopenharmony_ci QuerySysEventCallbackStubTest() {} 801401458bSopenharmony_ci virtual ~QuerySysEventCallbackStubTest() {} 811401458bSopenharmony_ci 821401458bSopenharmony_ci void OnQuery(const std::vector<std::u16string>& sysEvent, const std::vector<int64_t>& seq) {} 831401458bSopenharmony_ci void OnComplete(int32_t reason, int32_t total, int64_t seq) {} 841401458bSopenharmony_ci 851401458bSopenharmony_cipublic: 861401458bSopenharmony_ci enum Code { 871401458bSopenharmony_ci DEFAULT = -1, 881401458bSopenharmony_ci ON_QUERY = 0, 891401458bSopenharmony_ci ON_COMPLETE, 901401458bSopenharmony_ci }; 911401458bSopenharmony_ci}; 921401458bSopenharmony_ci 931401458bSopenharmony_ciclass SysEventCallbackStubTest : public SysEventCallbackStub { 941401458bSopenharmony_cipublic: 951401458bSopenharmony_ci SysEventCallbackStubTest() {} 961401458bSopenharmony_ci virtual ~SysEventCallbackStubTest() {} 971401458bSopenharmony_ci 981401458bSopenharmony_ci void Handle(const std::u16string& domain, const std::u16string& eventName, uint32_t eventType, 991401458bSopenharmony_ci const std::u16string& eventDetail) {} 1001401458bSopenharmony_ci 1011401458bSopenharmony_cipublic: 1021401458bSopenharmony_ci enum Code { 1031401458bSopenharmony_ci DEFAULT = -1, 1041401458bSopenharmony_ci HANDLE = 0, 1051401458bSopenharmony_ci }; 1061401458bSopenharmony_ci}; 1071401458bSopenharmony_ci} 1081401458bSopenharmony_ci 1091401458bSopenharmony_ciclass HiSysEventAdapterNativeTest : public testing::Test { 1101401458bSopenharmony_cipublic: 1111401458bSopenharmony_ci static void SetUpTestCase(void); 1121401458bSopenharmony_ci static void TearDownTestCase(void); 1131401458bSopenharmony_ci void SetUp(); 1141401458bSopenharmony_ci void TearDown(); 1151401458bSopenharmony_ci}; 1161401458bSopenharmony_ci 1171401458bSopenharmony_civoid HiSysEventAdapterNativeTest::SetUpTestCase(void) 1181401458bSopenharmony_ci{ 1191401458bSopenharmony_ci} 1201401458bSopenharmony_ci 1211401458bSopenharmony_civoid HiSysEventAdapterNativeTest::TearDownTestCase(void) 1221401458bSopenharmony_ci{ 1231401458bSopenharmony_ci} 1241401458bSopenharmony_ci 1251401458bSopenharmony_civoid HiSysEventAdapterNativeTest::SetUp(void) 1261401458bSopenharmony_ci{ 1271401458bSopenharmony_ci} 1281401458bSopenharmony_ci 1291401458bSopenharmony_civoid HiSysEventAdapterNativeTest::TearDown(void) 1301401458bSopenharmony_ci{ 1311401458bSopenharmony_ci} 1321401458bSopenharmony_ci 1331401458bSopenharmony_ci/** 1341401458bSopenharmony_ci * @tc.name: TestAshMemory 1351401458bSopenharmony_ci * @tc.desc: Ashmemory test 1361401458bSopenharmony_ci * @tc.type: FUNC 1371401458bSopenharmony_ci * @tc.require: issueI62BDW 1381401458bSopenharmony_ci */ 1391401458bSopenharmony_ciHWTEST_F(HiSysEventAdapterNativeTest, TestAshMemory, TestSize.Level1) 1401401458bSopenharmony_ci{ 1411401458bSopenharmony_ci MessageParcel data; 1421401458bSopenharmony_ci std::vector<std::u16string> src = { 1431401458bSopenharmony_ci Str8ToStr16(std::string("0")), 1441401458bSopenharmony_ci Str8ToStr16(std::string("1")), 1451401458bSopenharmony_ci }; 1461401458bSopenharmony_ci auto ret = AshMemUtils::WriteBulkData(data, src); 1471401458bSopenharmony_ci ASSERT_NE(ret, nullptr); 1481401458bSopenharmony_ci std::vector<std::u16string> dest; 1491401458bSopenharmony_ci auto ret1 = AshMemUtils::ReadBulkData(data, dest); 1501401458bSopenharmony_ci ASSERT_TRUE(ret1); 1511401458bSopenharmony_ci ASSERT_EQ(src.size(), dest.size()); 1521401458bSopenharmony_ci ASSERT_EQ(Str16ToStr8(dest[0]), "0"); 1531401458bSopenharmony_ci ASSERT_EQ(Str16ToStr8(dest[1]), "1"); 1541401458bSopenharmony_ci AshMemUtils::CloseAshmem(nullptr); 1551401458bSopenharmony_ci ASSERT_TRUE(true); 1561401458bSopenharmony_ci AshMemUtils::CloseAshmem(GetAshmem()); 1571401458bSopenharmony_ci ASSERT_TRUE(true); 1581401458bSopenharmony_ci} 1591401458bSopenharmony_ci 1601401458bSopenharmony_ci/** 1611401458bSopenharmony_ci * @tc.name: TestHiSysEventDelegateApisWithInvalidInstance 1621401458bSopenharmony_ci * @tc.desc: Call Add/Removelistener/SetDebugMode with a HiSysEventDelegate instance directly 1631401458bSopenharmony_ci * @tc.type: FUNC 1641401458bSopenharmony_ci * @tc.require: issueI62BDW 1651401458bSopenharmony_ci */ 1661401458bSopenharmony_ciHWTEST_F(HiSysEventAdapterNativeTest, TestHiSysEventDelegateApisWithInvalidInstance, TestSize.Level1) 1671401458bSopenharmony_ci{ 1681401458bSopenharmony_ci std::shared_ptr<OHOS::HiviewDFX::HiSysEventDelegate> delegate = 1691401458bSopenharmony_ci std::make_shared<OHOS::HiviewDFX::HiSysEventDelegate>(); 1701401458bSopenharmony_ci std::thread t([delegate] () { 1711401458bSopenharmony_ci delegate->BinderFunc(); 1721401458bSopenharmony_ci }); 1731401458bSopenharmony_ci t.detach(); 1741401458bSopenharmony_ci auto ret = delegate->RemoveListener(nullptr); 1751401458bSopenharmony_ci ASSERT_EQ(ret, ERR_LISTENER_NOT_EXIST); 1761401458bSopenharmony_ci ret = delegate->SetDebugMode(nullptr, true); 1771401458bSopenharmony_ci ASSERT_EQ(ret, ERR_LISTENER_NOT_EXIST); 1781401458bSopenharmony_ci auto listener = std::make_shared<HiSysEventBaseListener>(); 1791401458bSopenharmony_ci std::vector<ListenerRule> rules; 1801401458bSopenharmony_ci ListenerRule listenerRule("DOMAIN", "EVENT_NAME", "TAG", RuleType::WHOLE_WORD); 1811401458bSopenharmony_ci rules.emplace_back(listenerRule); 1821401458bSopenharmony_ci ret = delegate->AddListener(listener, rules); 1831401458bSopenharmony_ci ASSERT_EQ(ret, IPC_CALL_SUCCEED); 1841401458bSopenharmony_ci ret = delegate->SetDebugMode(listener, true); 1851401458bSopenharmony_ci if (ret == IPC_CALL_SUCCEED) { 1861401458bSopenharmony_ci ret = delegate->SetDebugMode(listener, false); 1871401458bSopenharmony_ci ASSERT_EQ(ret, IPC_CALL_SUCCEED); 1881401458bSopenharmony_ci } 1891401458bSopenharmony_ci ret = delegate->RemoveListener(listener); 1901401458bSopenharmony_ci ASSERT_EQ(ret, IPC_CALL_SUCCEED); 1911401458bSopenharmony_ci long long defaultTimeStap = -1; 1921401458bSopenharmony_ci int queryCount = 10; 1931401458bSopenharmony_ci struct QueryArg args(defaultTimeStap, defaultTimeStap, queryCount); 1941401458bSopenharmony_ci std::vector<QueryRule> queryRules; 1951401458bSopenharmony_ci std::vector<std::string> eventNames {"START_ABILITY"}; 1961401458bSopenharmony_ci QueryRule rule("AAFWK", eventNames); 1971401458bSopenharmony_ci queryRules.emplace_back(rule); 1981401458bSopenharmony_ci auto baseQuerier = std::make_shared<HiSysEventBaseQueryCallback>(); 1991401458bSopenharmony_ci ret = delegate->Query(args, queryRules, baseQuerier); 2001401458bSopenharmony_ci ASSERT_EQ(ret, IPC_CALL_SUCCEED); 2011401458bSopenharmony_ci int64_t currentTime = static_cast<int64_t>(GetMilliseconds()); 2021401458bSopenharmony_ci auto result = delegate->Subscribe(queryRules); 2031401458bSopenharmony_ci ASSERT_GE(std::to_string(result).length(), std::to_string(currentTime).length()); 2041401458bSopenharmony_ci ret = delegate->Unsubscribe(); 2051401458bSopenharmony_ci ASSERT_EQ(ret, 0); 2061401458bSopenharmony_ci} 2071401458bSopenharmony_ci 2081401458bSopenharmony_ci/** 2091401458bSopenharmony_ci * @tc.name: TestQuerySysEventCallback 2101401458bSopenharmony_ci * @tc.desc: QuerySysEventCallbackStub test 2111401458bSopenharmony_ci * @tc.type: FUNC 2121401458bSopenharmony_ci * @tc.require: issueI62WJT 2131401458bSopenharmony_ci */ 2141401458bSopenharmony_ciHWTEST_F(HiSysEventAdapterNativeTest, TestQuerySysEventCallback, TestSize.Level1) 2151401458bSopenharmony_ci{ 2161401458bSopenharmony_ci QuerySysEventCallbackStub* querySysEventCallbackStub = new(std::nothrow) QuerySysEventCallbackStubTest(); 2171401458bSopenharmony_ci MessageParcel data, reply; 2181401458bSopenharmony_ci MessageOption option; 2191401458bSopenharmony_ci querySysEventCallbackStub->OnRemoteRequest(QuerySysEventCallbackStubTest::Code::DEFAULT, data, reply, option); 2201401458bSopenharmony_ci ASSERT_TRUE(true); 2211401458bSopenharmony_ci querySysEventCallbackStub->OnRemoteRequest(QuerySysEventCallbackStubTest::Code::ON_QUERY, data, reply, option); 2221401458bSopenharmony_ci ASSERT_TRUE(true); 2231401458bSopenharmony_ci querySysEventCallbackStub->OnRemoteRequest(QuerySysEventCallbackStubTest::Code::ON_COMPLETE, data, reply, option); 2241401458bSopenharmony_ci ASSERT_TRUE(true); 2251401458bSopenharmony_ci} 2261401458bSopenharmony_ci 2271401458bSopenharmony_ci/** 2281401458bSopenharmony_ci * @tc.name: TestSysEventCallback 2291401458bSopenharmony_ci * @tc.desc: SysEventCallbackStub test 2301401458bSopenharmony_ci * @tc.type: FUNC 2311401458bSopenharmony_ci * @tc.require: issueI62WJT 2321401458bSopenharmony_ci */ 2331401458bSopenharmony_ciHWTEST_F(HiSysEventAdapterNativeTest, TestSysEventCallback, TestSize.Level1) 2341401458bSopenharmony_ci{ 2351401458bSopenharmony_ci SysEventCallbackStub* sysEventCallbackStub = new(std::nothrow) SysEventCallbackStubTest(); 2361401458bSopenharmony_ci MessageParcel data, reply; 2371401458bSopenharmony_ci MessageOption option; 2381401458bSopenharmony_ci sysEventCallbackStub->OnRemoteRequest(SysEventCallbackStubTest::Code::DEFAULT, data, reply, option); 2391401458bSopenharmony_ci ASSERT_TRUE(true); 2401401458bSopenharmony_ci sysEventCallbackStub->OnRemoteRequest(SysEventCallbackStubTest::Code::HANDLE, data, reply, option); 2411401458bSopenharmony_ci ASSERT_TRUE(true); 2421401458bSopenharmony_ci} 2431401458bSopenharmony_ci 2441401458bSopenharmony_ci/** 2451401458bSopenharmony_ci * @tc.name: FileUtilOhosTest001 2461401458bSopenharmony_ci * @tc.desc: FileUtil test 2471401458bSopenharmony_ci * @tc.type: FUNC 2481401458bSopenharmony_ci * @tc.require: SR000I1G43 2491401458bSopenharmony_ci */ 2501401458bSopenharmony_ciHWTEST_F(HiSysEventAdapterNativeTest, FileUtilOhosTest001, TestSize.Level3) 2511401458bSopenharmony_ci{ 2521401458bSopenharmony_ci auto ret = FileUtil::ForceCreateDirectory(LOG_DIR_PATH); 2531401458bSopenharmony_ci ASSERT_TRUE(ret); 2541401458bSopenharmony_ci ret = FileUtil::IsDirectory(LOG_DIR_PATH); 2551401458bSopenharmony_ci ASSERT_TRUE(ret); 2561401458bSopenharmony_ci ret = FileUtil::RemoveDirectory(LOG_DIR_PATH); 2571401458bSopenharmony_ci ASSERT_TRUE(ret); 2581401458bSopenharmony_ci ret = FileUtil::IsDirectory(LOG_DIR_PATH); 2591401458bSopenharmony_ci ASSERT_TRUE(!ret); 2601401458bSopenharmony_ci auto result = FileUtil::GetFilePathByDir(LOG_DIR_PATH, "test.log"); 2611401458bSopenharmony_ci ASSERT_EQ(result, FILE_PATH); 2621401458bSopenharmony_ci} 2631401458bSopenharmony_ci 2641401458bSopenharmony_ci/** 2651401458bSopenharmony_ci * @tc.name: FileUtilOhosTest002 2661401458bSopenharmony_ci * @tc.desc: FileUtil test 2671401458bSopenharmony_ci * @tc.type: FUNC 2681401458bSopenharmony_ci * @tc.require: SR000I1G43 2691401458bSopenharmony_ci */ 2701401458bSopenharmony_ciHWTEST_F(HiSysEventAdapterNativeTest, FileUtilOhosTest002, TestSize.Level3) 2711401458bSopenharmony_ci{ 2721401458bSopenharmony_ci auto ret = FileUtil::IsLegalPath("aa/../bb"); 2731401458bSopenharmony_ci ASSERT_TRUE(!ret); 2741401458bSopenharmony_ci ret = FileUtil::IsLegalPath("aa/./bb"); 2751401458bSopenharmony_ci ASSERT_TRUE(!ret); 2761401458bSopenharmony_ci ret = FileUtil::IsLegalPath("aa/bb/"); 2771401458bSopenharmony_ci ASSERT_TRUE(ret); 2781401458bSopenharmony_ci ret = FileUtil::IsLegalPath("aa/bb/cc"); 2791401458bSopenharmony_ci ASSERT_TRUE(ret); 2801401458bSopenharmony_ci} 2811401458bSopenharmony_ci 2821401458bSopenharmony_ci/** 2831401458bSopenharmony_ci * @tc.name: MarshallingTAndUnmarshallingTest 2841401458bSopenharmony_ci * @tc.desc: Unmarshalling test 2851401458bSopenharmony_ci * @tc.type: FUNC 2861401458bSopenharmony_ci * @tc.require: issueI62WJT 2871401458bSopenharmony_ci */ 2881401458bSopenharmony_ciHWTEST_F(HiSysEventAdapterNativeTest, MarshallingTAndUnmarshallingTest, TestSize.Level1) 2891401458bSopenharmony_ci{ 2901401458bSopenharmony_ci long long defaultTimeStap = -1; 2911401458bSopenharmony_ci int queryCount = 10; 2921401458bSopenharmony_ci OHOS::HiviewDFX::QueryArgument args(defaultTimeStap, defaultTimeStap, queryCount); 2931401458bSopenharmony_ci MessageParcel parcel1; 2941401458bSopenharmony_ci auto ret = args.Marshalling(parcel1); 2951401458bSopenharmony_ci ASSERT_TRUE(ret); 2961401458bSopenharmony_ci QueryArgument* argsPtr = args.Unmarshalling(parcel1); 2971401458bSopenharmony_ci ASSERT_NE(argsPtr, nullptr); 2981401458bSopenharmony_ci ASSERT_EQ(argsPtr->maxEvents, 10); // 10 is a expcted test value 2991401458bSopenharmony_ci ASSERT_EQ(argsPtr->beginTime, -1); // -1 is a expcted test value 3001401458bSopenharmony_ci OHOS::HiviewDFX::SysEventRule sysEventRule("DOMAIN", "EVENT_NAME", "TAG", OHOS::HiviewDFX::RuleType::WHOLE_WORD); 3011401458bSopenharmony_ci MessageParcel parcel2; 3021401458bSopenharmony_ci ret = sysEventRule.Marshalling(parcel2); 3031401458bSopenharmony_ci ASSERT_TRUE(ret); 3041401458bSopenharmony_ci OHOS::HiviewDFX::SysEventRule* sysEventRulePtr = sysEventRule.Unmarshalling(parcel2); 3051401458bSopenharmony_ci ASSERT_NE(sysEventRulePtr, nullptr); 3061401458bSopenharmony_ci ASSERT_EQ(sysEventRulePtr->domain, "DOMAIN"); 3071401458bSopenharmony_ci ASSERT_EQ(sysEventRulePtr->eventName, "EVENT_NAME"); 3081401458bSopenharmony_ci ASSERT_EQ(sysEventRulePtr->tag, "TAG"); 3091401458bSopenharmony_ci std::vector<std::string> eventNames { "EVENT_NAME1", "EVENT_NAME2" }; 3101401458bSopenharmony_ci OHOS::HiviewDFX::SysEventQueryRule queryRule("DOMAIN", eventNames); 3111401458bSopenharmony_ci MessageParcel parcel3; 3121401458bSopenharmony_ci ret = queryRule.Marshalling(parcel3); 3131401458bSopenharmony_ci ASSERT_TRUE(ret); 3141401458bSopenharmony_ci OHOS::HiviewDFX::SysEventQueryRule* queryRulePtr = queryRule.Unmarshalling(parcel3); 3151401458bSopenharmony_ci ASSERT_NE(queryRulePtr, nullptr); 3161401458bSopenharmony_ci ASSERT_EQ(queryRulePtr->domain, "DOMAIN");; 3171401458bSopenharmony_ci ASSERT_EQ(queryRulePtr->eventList.size(), 2); // 2 is a expcted test value 3181401458bSopenharmony_ci ASSERT_EQ(queryRulePtr->eventList[0], "EVENT_NAME1"); 3191401458bSopenharmony_ci} 3201401458bSopenharmony_ci 3211401458bSopenharmony_ci/** 3221401458bSopenharmony_ci * @tc.name: CStringUtilTest 3231401458bSopenharmony_ci * @tc.desc: Test methods which defined in namespace StringUtil 3241401458bSopenharmony_ci * @tc.type: FUNC 3251401458bSopenharmony_ci * @tc.require: issueI62WJT 3261401458bSopenharmony_ci */ 3271401458bSopenharmony_ciHWTEST_F(HiSysEventAdapterNativeTest, CStringUtilTest, TestSize.Level1) 3281401458bSopenharmony_ci{ 3291401458bSopenharmony_ci char dest[100] {}; // 100 is a test length 3301401458bSopenharmony_ci std::string src = "01234567"; 3311401458bSopenharmony_ci 3321401458bSopenharmony_ci auto ret = StringUtil::CopyCString(dest, src, 3); // 3 is a test length 3331401458bSopenharmony_ci ASSERT_EQ(ret, -1); // -1 is a expected result 3341401458bSopenharmony_ci ret = StringUtil::CopyCString(dest, src, 10); // 3 is a test length 3351401458bSopenharmony_ci ASSERT_NE(ret, -1); // -1 is a expected result 3361401458bSopenharmony_ci char* dest2p = dest; 3371401458bSopenharmony_ci char** dest2pp = &dest2p; 3381401458bSopenharmony_ci ret = StringUtil::CreateCString(dest2pp, src, 3); // 3 is a test length 3391401458bSopenharmony_ci ASSERT_EQ(ret, -1); // -1 is a expected result 3401401458bSopenharmony_ci ret = StringUtil::CreateCString(dest2pp, src, 10); // 3 is a test length 3411401458bSopenharmony_ci ASSERT_NE(ret, -1); // -1 is a expected result 3421401458bSopenharmony_ci ret = StringUtil::ConvertCString(src, dest2pp, 3); // 3 is a test length 3431401458bSopenharmony_ci ASSERT_EQ(ret, -1); // -1 is a expected result 3441401458bSopenharmony_ci ret = StringUtil::ConvertCString(src, dest2pp, 10); // 3 is a test length 3451401458bSopenharmony_ci ASSERT_NE(ret, -1); // -1 is a expected result 3461401458bSopenharmony_ci char v3[10][100] {}; 3471401458bSopenharmony_ci char* dest3p = v3[0]; 3481401458bSopenharmony_ci char** dest3pp = &dest3p; 3491401458bSopenharmony_ci char*** dest3ppp = &dest3pp; 3501401458bSopenharmony_ci std::vector<std::string> srcs1 = {}; 3511401458bSopenharmony_ci std::vector<std::string> srcs2 = { 3521401458bSopenharmony_ci "01234567", 3531401458bSopenharmony_ci "01234567", 3541401458bSopenharmony_ci }; 3551401458bSopenharmony_ci size_t len; 3561401458bSopenharmony_ci ret = StringUtil::ConvertCStringVec(srcs1, dest3ppp, len); 3571401458bSopenharmony_ci ASSERT_EQ(ret, 0); 3581401458bSopenharmony_ci ASSERT_EQ(len, 0); 3591401458bSopenharmony_ci ret = StringUtil::ConvertCStringVec(srcs2, dest3ppp, len); 3601401458bSopenharmony_ci ASSERT_EQ(ret, 0); 3611401458bSopenharmony_ci ASSERT_EQ(len, 2); // 2 is a expected length 3621401458bSopenharmony_ci char dest4[3] = {'0', '1', '2'}; 3631401458bSopenharmony_ci StringUtil::MemsetSafe(reinterpret_cast<void*>(dest4), 3); // 3 is a test length 3641401458bSopenharmony_ci ASSERT_EQ(dest4[0], 0); 3651401458bSopenharmony_ci ASSERT_EQ(dest4[1], 0); // 1 is a test index 3661401458bSopenharmony_ci ASSERT_EQ(dest4[2], 0); // 2 is a test index 3671401458bSopenharmony_ci} 3681401458bSopenharmony_ci 3691401458bSopenharmony_ci/** 3701401458bSopenharmony_ci * @tc.name: HiSysEventListenerProxyTest 3711401458bSopenharmony_ci * @tc.desc: Test apis of HiSysEventListenerProxy 3721401458bSopenharmony_ci * @tc.type: FUNC 3731401458bSopenharmony_ci * @tc.require: issueI62WJT 3741401458bSopenharmony_ci */ 3751401458bSopenharmony_ciHWTEST_F(HiSysEventAdapterNativeTest, HiSysEventListenerProxyTest, TestSize.Level1) 3761401458bSopenharmony_ci{ 3771401458bSopenharmony_ci auto baseListener = std::make_shared<HiSysEventBaseListener>(); 3781401458bSopenharmony_ci HiSysEventListenerProxy proxy(baseListener); 3791401458bSopenharmony_ci proxy.Handle(Str8ToStr16(std::string("DOMAIN")), Str8ToStr16(std::string("EVENT_NAME")), 0, 3801401458bSopenharmony_ci Str8ToStr16(std::string("{}"))); 3811401458bSopenharmony_ci auto listener = proxy.GetEventListener(); 3821401458bSopenharmony_ci ASSERT_NE(listener, nullptr); 3831401458bSopenharmony_ci auto deathRecipient = proxy.GetCallbackDeathRecipient(); 3841401458bSopenharmony_ci ASSERT_NE(deathRecipient, nullptr); 3851401458bSopenharmony_ci if (deathRecipient != nullptr) { 3861401458bSopenharmony_ci deathRecipient->OnRemoteDied(nullptr); 3871401458bSopenharmony_ci ASSERT_NE(deathRecipient->GetEventListener(), nullptr); 3881401458bSopenharmony_ci } 3891401458bSopenharmony_ci} 3901401458bSopenharmony_ci 3911401458bSopenharmony_ci/** 3921401458bSopenharmony_ci * @tc.name: HiSysEventQueryProxyTest 3931401458bSopenharmony_ci * @tc.desc: Test apis of HiSysEventQueryProxy 3941401458bSopenharmony_ci * @tc.type: FUNC 3951401458bSopenharmony_ci * @tc.require: issueI62WJT 3961401458bSopenharmony_ci */ 3971401458bSopenharmony_ciHWTEST_F(HiSysEventAdapterNativeTest, HiSysEventQueryProxyTest, TestSize.Level1) 3981401458bSopenharmony_ci{ 3991401458bSopenharmony_ci auto baseQuerier = std::make_shared<HiSysEventBaseQueryCallback>(); 4001401458bSopenharmony_ci HiSysEventQueryProxy proxy(baseQuerier); 4011401458bSopenharmony_ci std::vector<std::u16string> sysEvent {}; 4021401458bSopenharmony_ci std::vector<int64_t> seq {}; 4031401458bSopenharmony_ci proxy.OnQuery(sysEvent, seq); 4041401458bSopenharmony_ci ASSERT_TRUE(true); 4051401458bSopenharmony_ci proxy.OnComplete(0, 0, 0); 4061401458bSopenharmony_ci ASSERT_TRUE(true); 4071401458bSopenharmony_ci}