From 9a603cd058214cd6591d8940f5a6f491d4bae0c0 Mon Sep 17 00:00:00 2001 From: wujianlin Date: Wed, 6 Nov 2024 11:10:46 +0800 Subject: [PATCH] fuzztest coverage improved Issue:https://gitee.com/openharmony/commonlibrary_c_utils/issues/IB2E8K?from=project-issue Signed-off-by: wujianlin --- .../refbase_fuzzer/refbase_fuzzer.cpp | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/base/test/fuzztest/refbase_fuzzer/refbase_fuzzer.cpp b/base/test/fuzztest/refbase_fuzzer/refbase_fuzzer.cpp index 8e8b00b..3df969d 100644 --- a/base/test/fuzztest/refbase_fuzzer/refbase_fuzzer.cpp +++ b/base/test/fuzztest/refbase_fuzzer/refbase_fuzzer.cpp @@ -343,9 +343,47 @@ void TestLoop(const std::vector& fuzzOps) CleanUpStrongCounter(state); } +class RefBaseTest : public RefBase { +public: + RefBaseTest() + { + } + ~RefBaseTest() + { + } + + void OnLastWeakRef(const void *objectIda) override + { + FUZZ_LOGI("OnLastWeakRef is called"); + } +}; + +void TestRefBaseFunc() +{ + RefBaseTest* testobject = new RefBaseTest(); + testobject->AttemptAcquire(testobject); + testobject->CheckIsAttemptAcquireSet(testobject); + testobject->OnLastWeakRef(testobject); + + RefBaseTest* testobject1 = new RefBaseTest(); + RefBaseTest* testobject2(testobject1); + RefBaseTest* testobject3 = testobject2; + + wptrtestWptrObject(testobject3); + RefBaseTest* testobject4 = testWptrObject.GetRefPtr(); + FUZZ_LOGI("testobject4 = %{public}p", testobject4); + + RefBase baseObject1{}; + RefBase baseObject2{}; + baseObject2 = std::move(baseObject1); + RefBase baseObject3(std::move(baseObject2)); +} + void RefbaseTestFunc(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider) { FUZZ_LOGI("RefbaseTestFunc start"); + TestRefBaseFunc(); + g_ref = new TestRefBase(&g_refDeleted, g_deletedLock); g_refModified = false; uint8_t threadNum = 1; -- Gitee