From a6ffe9172c121e3395c5342e33f10c33b1c3525f Mon Sep 17 00:00:00 2001 From: dongsenhao Date: Thu, 31 Aug 2023 21:09:04 +0800 Subject: [PATCH] Increase purgeable_c_test and purgebleashmem_test branch coverage of test Signed-off-by: dongsenhao --- libpurgeablemem/test/purgeable_c_test.cpp | 1 + libpurgeablemem/test/purgeableashmem_test.cpp | 72 ++++++++++++++++++- 2 files changed, 72 insertions(+), 1 deletion(-) diff --git a/libpurgeablemem/test/purgeable_c_test.cpp b/libpurgeablemem/test/purgeable_c_test.cpp index d46d177..f3f3e54 100644 --- a/libpurgeablemem/test/purgeable_c_test.cpp +++ b/libpurgeablemem/test/purgeable_c_test.cpp @@ -75,6 +75,7 @@ HWTEST_F(PurgeableCTest, MultiObjCreateTest, TestSize.Level1) { const char alphabetFinal[] = "BBCDEFGHIJKLMNOPQRSTUVWXYZ\0"; struct AlphabetInitParam initPara = {'A', 'Z'}; + PurgMemCreate(0, InitAlphabet, &initPara); struct PurgMem *pobj1 = PurgMemCreate(27, InitAlphabet, &initPara); LoopPrintAlphabet(pobj1, 1); struct AlphabetModifyParam a2b = {'A', 'B'}; diff --git a/libpurgeablemem/test/purgeableashmem_test.cpp b/libpurgeablemem/test/purgeableashmem_test.cpp index 2b057bd..fc3bef2 100644 --- a/libpurgeablemem/test/purgeableashmem_test.cpp +++ b/libpurgeablemem/test/purgeableashmem_test.cpp @@ -25,9 +25,14 @@ #include "gtest/gtest.h" #include "ashmem.h" -#include "purgeable_ashmem.h" #include "securec.h" +#define private public +#define protected public +#include "purgeable_ashmem.h" +#undef private +#undef protected + namespace OHOS { namespace PurgeableMem { using namespace testing; @@ -554,6 +559,71 @@ HWTEST_F(PurgeableAshmemTest, InvalidInputBuilderTest, TestSize.Level1) EXPECT_EQ(ret, false); } +HWTEST_F(PurgeableAshmemTest, IsPurgedTest, TestSize.Level1) +{ + std::unique_ptr builder1 = std::make_unique('A', 'Z'); + std::unique_ptr modA2B = std::make_unique('A', 'B'); + PurgeableAshMem pobj(std::move(builder1)); + pobj.isSupport_ = 0; + EXPECT_EQ(pobj.IsPurged(), false); + EXPECT_EQ(pobj.Pin(), true); + EXPECT_EQ(pobj.Unpin(), true); + EXPECT_EQ(pobj.GetPinStatus(), false); + pobj.isSupport_ = 1; + pobj.ashmemFd_ = 0; + EXPECT_EQ(pobj.Pin(), false); + EXPECT_EQ(pobj.Unpin(), false); + pobj.dataSizeInput_ = 0; + EXPECT_EQ(pobj.CreatePurgeableData_(), false); + pobj.dataPtr_ = nullptr; + ModifyPurgMemByBuilder(&pobj, std::move(modA2B)); + pobj.isDataValid_ = false; + pobj.BeginReadWithDataLock(); + pobj.isDataValid_ = true; + pobj.EndReadWithDataLock(); +} + +HWTEST_F(PurgeableAshmemTest, GetPinStatusTest, TestSize.Level1) +{ + std::unique_ptr builder1 = std::make_unique('A', 'Z'); + PurgeableAshMem pobj(std::move(builder1)); + pobj.isSupport_ = 1; + EXPECT_NE(pobj.GetPinStatus(), 0); + pobj.isSupport_ = 0; + EXPECT_EQ(pobj.GetPinStatus(), 0); +} + +HWTEST_F(PurgeableAshmemTest, ChangeAshmemDataTest, TestSize.Level1) +{ + std::unique_ptr builder1 = std::make_unique('A', 'Z'); + PurgeableAshMem pobj1(27, std::move(builder1)); + PurgeableAshMem pobj2(27, std::move(builder1)); + PurgeableAshMem pobj3(27, std::move(builder1)); + PurgeableAshMem pobj4(27, std::move(builder1)); + size_t newSize = 0; + size_t size = 123; + int fd = 5; + int intdata = 12345; + void *data = &intdata; + size_t page_size = 1 << 12; + pobj1.ResizeData(newSize); + newSize = 1; + pobj1.ResizeData(newSize); + pobj2.ashmemFd_ = 0; + pobj2.ResizeData(newSize); + pobj2.dataPtr_ = data; + pobj2.ResizeData(newSize); + + pobj3.ChangeAshmemData(size, fd, data); + pobj4.ashmemFd_ = 0; + pobj4.ChangeAshmemData(size, fd, data); + pobj4.dataPtr_ = data; + pobj4.ChangeAshmemData(size, fd, data); + size = ((pobj4.dataSizeInput_ + page_size - 1) / page_size) * page_size; + fd = AshmemCreate("PurgeableAshmem", size); + EXPECT_EQ(pobj4.ChangeAshmemData(size, fd, data), true); +} + void LoopPrintAlphabet(PurgeableAshMem *pdata, unsigned int loopCount) { std::cout << "inter " << __func__ << std::endl; -- Gitee