diff --git a/libpurgeablemem/test/purgeable_c_test.cpp b/libpurgeablemem/test/purgeable_c_test.cpp index d46d17762076b913c74417ed85133383708544a0..f3f3e546087c1900fb631b1ff74e9e69f89f3379 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 2b057bd3d33090ff05f66f895d644f542cb697af..fc3bef23cde9c9eafaca21c71c494a50a1a4bc3a 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;