14514f5e3Sopenharmony_ci/*
24514f5e3Sopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd.
34514f5e3Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
44514f5e3Sopenharmony_ci * you may not use this file except in compliance with the License.
54514f5e3Sopenharmony_ci * You may obtain a copy of the License at
64514f5e3Sopenharmony_ci *
74514f5e3Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
84514f5e3Sopenharmony_ci *
94514f5e3Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
104514f5e3Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
114514f5e3Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
124514f5e3Sopenharmony_ci * See the License for the specific language governing permissions and
134514f5e3Sopenharmony_ci * limitations under the License.
144514f5e3Sopenharmony_ci */
154514f5e3Sopenharmony_ci
164514f5e3Sopenharmony_ci#include <cstdio>
174514f5e3Sopenharmony_ci#include <fstream>
184514f5e3Sopenharmony_ci#include <ostream>
194514f5e3Sopenharmony_ci#include <string>
204514f5e3Sopenharmony_ci
214514f5e3Sopenharmony_ci#include "gtest/gtest.h"
224514f5e3Sopenharmony_ci#include "ecmascript/extractortool/src/zip_file.h"
234514f5e3Sopenharmony_ci#include "ecmascript/tests/test_helper.h"
244514f5e3Sopenharmony_ci#include "ecmascript/extractortool/src/zip_file_reader.h"
254514f5e3Sopenharmony_ci
264514f5e3Sopenharmony_ciusing namespace panda::ecmascript;
274514f5e3Sopenharmony_cinamespace panda::ecmascript {
284514f5e3Sopenharmony_ciclass ZipFileFriend {
294514f5e3Sopenharmony_cipublic:
304514f5e3Sopenharmony_ci    explicit ZipFileFriend(const std::string &path) : zipFile_(path)
314514f5e3Sopenharmony_ci    {
324514f5e3Sopenharmony_ci    }
334514f5e3Sopenharmony_ci
344514f5e3Sopenharmony_ci    ~ZipFileFriend()
354514f5e3Sopenharmony_ci    {
364514f5e3Sopenharmony_ci        Close();
374514f5e3Sopenharmony_ci    }
384514f5e3Sopenharmony_ci
394514f5e3Sopenharmony_ci    void SetContentLocation(ZipPos start, size_t length)
404514f5e3Sopenharmony_ci    {
414514f5e3Sopenharmony_ci        zipFile_.SetContentLocation(start, length);
424514f5e3Sopenharmony_ci    }
434514f5e3Sopenharmony_ci
444514f5e3Sopenharmony_ci    bool CheckEndDir(EndDir &endDir) const
454514f5e3Sopenharmony_ci    {
464514f5e3Sopenharmony_ci        return zipFile_.CheckEndDir(endDir);
474514f5e3Sopenharmony_ci    }
484514f5e3Sopenharmony_ci
494514f5e3Sopenharmony_ci    bool ParseEndDirectory()
504514f5e3Sopenharmony_ci    {
514514f5e3Sopenharmony_ci        return zipFile_.ParseEndDirectory();
524514f5e3Sopenharmony_ci    }
534514f5e3Sopenharmony_ci
544514f5e3Sopenharmony_ci    bool ParseOneEntry(uint8_t *&entryPtr)
554514f5e3Sopenharmony_ci    {
564514f5e3Sopenharmony_ci        return zipFile_.ParseOneEntry(entryPtr);
574514f5e3Sopenharmony_ci    }
584514f5e3Sopenharmony_ci
594514f5e3Sopenharmony_ci    void AddEntryToTree(const std::string &fileName)
604514f5e3Sopenharmony_ci    {
614514f5e3Sopenharmony_ci        return zipFile_.AddEntryToTree(fileName);
624514f5e3Sopenharmony_ci    }
634514f5e3Sopenharmony_ci
644514f5e3Sopenharmony_ci    bool ParseAllEntries()
654514f5e3Sopenharmony_ci    {
664514f5e3Sopenharmony_ci        return zipFile_.ParseAllEntries();
674514f5e3Sopenharmony_ci    }
684514f5e3Sopenharmony_ci
694514f5e3Sopenharmony_ci    bool Open()
704514f5e3Sopenharmony_ci    {
714514f5e3Sopenharmony_ci        return zipFile_.Open();
724514f5e3Sopenharmony_ci    }
734514f5e3Sopenharmony_ci
744514f5e3Sopenharmony_ci    void Close()
754514f5e3Sopenharmony_ci    {
764514f5e3Sopenharmony_ci        zipFile_.Close();
774514f5e3Sopenharmony_ci    }
784514f5e3Sopenharmony_ci
794514f5e3Sopenharmony_ci    bool IsDirExist(const std::string &dir) const
804514f5e3Sopenharmony_ci    {
814514f5e3Sopenharmony_ci        return zipFile_.IsDirExist(dir);
824514f5e3Sopenharmony_ci    }
834514f5e3Sopenharmony_ci
844514f5e3Sopenharmony_ci    void GetAllFileList(const std::string &srcPath, std::vector<std::string> &assetList)
854514f5e3Sopenharmony_ci    {
864514f5e3Sopenharmony_ci        zipFile_.GetAllFileList(srcPath, assetList);
874514f5e3Sopenharmony_ci    }
884514f5e3Sopenharmony_ci
894514f5e3Sopenharmony_ci    void GetChildNames(const std::string &srcPath, std::set<std::string> &fileSet)
904514f5e3Sopenharmony_ci    {
914514f5e3Sopenharmony_ci        zipFile_.GetChildNames(srcPath, fileSet);
924514f5e3Sopenharmony_ci    }
934514f5e3Sopenharmony_ci
944514f5e3Sopenharmony_ci    bool GetEntry(const std::string &entryName, ZipEntry &resultEntry) const
954514f5e3Sopenharmony_ci    {
964514f5e3Sopenharmony_ci        return zipFile_.GetEntry(entryName, resultEntry);
974514f5e3Sopenharmony_ci    }
984514f5e3Sopenharmony_ci
994514f5e3Sopenharmony_ci    bool CheckCoherencyLocalHeader(const ZipEntry &zipEntry, uint16_t &extraSize) const
1004514f5e3Sopenharmony_ci    {
1014514f5e3Sopenharmony_ci        return zipFile_.CheckCoherencyLocalHeader(zipEntry, extraSize);
1024514f5e3Sopenharmony_ci    }
1034514f5e3Sopenharmony_ci
1044514f5e3Sopenharmony_ci    std::unique_ptr<FileMapper> CreateFileMapper(const std::string &fileName, FileMapperType type) const
1054514f5e3Sopenharmony_ci    {
1064514f5e3Sopenharmony_ci        return zipFile_.CreateFileMapper(fileName, type);
1074514f5e3Sopenharmony_ci    }
1084514f5e3Sopenharmony_ci
1094514f5e3Sopenharmony_ci    bool ExtractToBufByName(const std::string &fileName, std::unique_ptr<uint8_t[]> &dataPtr, size_t &len) const
1104514f5e3Sopenharmony_ci    {
1114514f5e3Sopenharmony_ci        return zipFile_.ExtractToBufByName(fileName, dataPtr, len);
1124514f5e3Sopenharmony_ci    }
1134514f5e3Sopenharmony_ci
1144514f5e3Sopenharmony_ci    void SetIsOpen(bool isOpen)
1154514f5e3Sopenharmony_ci    {
1164514f5e3Sopenharmony_ci        zipFile_.isOpen_ = isOpen;
1174514f5e3Sopenharmony_ci    }
1184514f5e3Sopenharmony_ci
1194514f5e3Sopenharmony_ci    ZipPos GetFileStartPos() const
1204514f5e3Sopenharmony_ci    {
1214514f5e3Sopenharmony_ci        return zipFile_.fileStartPos_;
1224514f5e3Sopenharmony_ci    }
1234514f5e3Sopenharmony_ci
1244514f5e3Sopenharmony_ci    void SetFileLength(ZipPos length)
1254514f5e3Sopenharmony_ci    {
1264514f5e3Sopenharmony_ci        zipFile_.fileLength_ = length;
1274514f5e3Sopenharmony_ci    }
1284514f5e3Sopenharmony_ci
1294514f5e3Sopenharmony_ci    ZipPos GetFileLength() const
1304514f5e3Sopenharmony_ci    {
1314514f5e3Sopenharmony_ci        return zipFile_.fileLength_;
1324514f5e3Sopenharmony_ci    }
1334514f5e3Sopenharmony_ci
1344514f5e3Sopenharmony_ci    const std::string &GetPathName() const
1354514f5e3Sopenharmony_ci    {
1364514f5e3Sopenharmony_ci        return zipFile_.pathName_;
1374514f5e3Sopenharmony_ci    }
1384514f5e3Sopenharmony_ci
1394514f5e3Sopenharmony_ci    void SetPathName(const std::string &newPathName)
1404514f5e3Sopenharmony_ci    {
1414514f5e3Sopenharmony_ci        zipFile_.pathName_ = newPathName;
1424514f5e3Sopenharmony_ci    }
1434514f5e3Sopenharmony_ci
1444514f5e3Sopenharmony_ci    std::shared_ptr<ZipFileReader> GetZipFileReader() const
1454514f5e3Sopenharmony_ci    {
1464514f5e3Sopenharmony_ci        return zipFile_.zipFileReader_;
1474514f5e3Sopenharmony_ci    }
1484514f5e3Sopenharmony_ci
1494514f5e3Sopenharmony_ci    void SetZipFileReader(const std::shared_ptr<ZipFileReader> &newZipFileReader)
1504514f5e3Sopenharmony_ci    {
1514514f5e3Sopenharmony_ci        zipFile_.zipFileReader_ = newZipFileReader;
1524514f5e3Sopenharmony_ci    }
1534514f5e3Sopenharmony_ci
1544514f5e3Sopenharmony_ciprivate:
1554514f5e3Sopenharmony_ci    ZipFile zipFile_;
1564514f5e3Sopenharmony_ci};
1574514f5e3Sopenharmony_ci}
1584514f5e3Sopenharmony_ci
1594514f5e3Sopenharmony_cinamespace panda::test {
1604514f5e3Sopenharmony_ciclass ZipFileTest : public testing::Test {
1614514f5e3Sopenharmony_cipublic:
1624514f5e3Sopenharmony_ci    static void SetUpTestCase()
1634514f5e3Sopenharmony_ci    {
1644514f5e3Sopenharmony_ci        GTEST_LOG_(INFO) << "SetUpTestCase";
1654514f5e3Sopenharmony_ci    }
1664514f5e3Sopenharmony_ci
1674514f5e3Sopenharmony_ci    static void TearDownTestCase()
1684514f5e3Sopenharmony_ci    {
1694514f5e3Sopenharmony_ci        GTEST_LOG_(INFO) << "TearDownCase";
1704514f5e3Sopenharmony_ci    }
1714514f5e3Sopenharmony_ci
1724514f5e3Sopenharmony_ci    void SetUp() override
1734514f5e3Sopenharmony_ci    {
1744514f5e3Sopenharmony_ci        TestHelper::CreateEcmaVMWithScope(instance, thread, scope);
1754514f5e3Sopenharmony_ci        instance->SetEnableForceGC(false);
1764514f5e3Sopenharmony_ci    }
1774514f5e3Sopenharmony_ci
1784514f5e3Sopenharmony_ci    void TearDown() override
1794514f5e3Sopenharmony_ci    {
1804514f5e3Sopenharmony_ci        TestHelper::DestroyEcmaVMWithScope(instance, scope);
1814514f5e3Sopenharmony_ci    }
1824514f5e3Sopenharmony_ci
1834514f5e3Sopenharmony_ci    EcmaVM *instance{nullptr};
1844514f5e3Sopenharmony_ci    EcmaHandleScope *scope{nullptr};
1854514f5e3Sopenharmony_ci    JSThread *thread{nullptr};
1864514f5e3Sopenharmony_ci};
1874514f5e3Sopenharmony_ci
1884514f5e3Sopenharmony_ciint CreateTestFile()
1894514f5e3Sopenharmony_ci{
1904514f5e3Sopenharmony_ci    const std::string fileName = "TestFile.zip";
1914514f5e3Sopenharmony_ci    std::ofstream file(fileName);
1924514f5e3Sopenharmony_ci    if (!file.is_open()) {
1934514f5e3Sopenharmony_ci        return 1;
1944514f5e3Sopenharmony_ci    }
1954514f5e3Sopenharmony_ci    file << "This is a test file." << std::endl;
1964514f5e3Sopenharmony_ci    file.close();
1974514f5e3Sopenharmony_ci    if (!file) {
1984514f5e3Sopenharmony_ci        return 1;
1994514f5e3Sopenharmony_ci    }
2004514f5e3Sopenharmony_ci    return 0;
2014514f5e3Sopenharmony_ci}
2024514f5e3Sopenharmony_ci
2034514f5e3Sopenharmony_ciint DeleteTestFile()
2044514f5e3Sopenharmony_ci{
2054514f5e3Sopenharmony_ci    const char *fileName = "TestFile.zip";
2064514f5e3Sopenharmony_ci    if (std::remove(fileName) != 0) {
2074514f5e3Sopenharmony_ci        return 1;
2084514f5e3Sopenharmony_ci    }
2094514f5e3Sopenharmony_ci    return 0;
2104514f5e3Sopenharmony_ci}
2114514f5e3Sopenharmony_ci
2124514f5e3Sopenharmony_ciHWTEST_F_L0(ZipFileTest, SetContentLocationTest)
2134514f5e3Sopenharmony_ci{
2144514f5e3Sopenharmony_ci    std::string pathName = "path/to/zip.hap";
2154514f5e3Sopenharmony_ci    ZipFileFriend zipFileFriend(pathName);
2164514f5e3Sopenharmony_ci    zipFileFriend.SetIsOpen(true);
2174514f5e3Sopenharmony_ci    zipFileFriend.SetContentLocation(1, 1);
2184514f5e3Sopenharmony_ci    EXPECT_EQ(zipFileFriend.GetFileStartPos(), 0);
2194514f5e3Sopenharmony_ci    EXPECT_EQ(zipFileFriend.GetFileLength(), 0);
2204514f5e3Sopenharmony_ci
2214514f5e3Sopenharmony_ci    zipFileFriend.SetIsOpen(false);
2224514f5e3Sopenharmony_ci    zipFileFriend.SetContentLocation(1, 1);
2234514f5e3Sopenharmony_ci    EXPECT_EQ(zipFileFriend.GetFileStartPos(), 1);
2244514f5e3Sopenharmony_ci    EXPECT_EQ(zipFileFriend.GetFileLength(), 1);
2254514f5e3Sopenharmony_ci}
2264514f5e3Sopenharmony_ci
2274514f5e3Sopenharmony_ciHWTEST_F_L0(ZipFileTest, CheckEndDirTest)
2284514f5e3Sopenharmony_ci{
2294514f5e3Sopenharmony_ci    std::string pathName = "path/to/zip.hap";
2304514f5e3Sopenharmony_ci    ZipFileFriend zipFileFriend(pathName);
2314514f5e3Sopenharmony_ci    EndDir endDir;
2324514f5e3Sopenharmony_ci    EXPECT_FALSE(zipFileFriend.CheckEndDir(endDir));
2334514f5e3Sopenharmony_ci
2344514f5e3Sopenharmony_ci    zipFileFriend.SetFileLength(100);
2354514f5e3Sopenharmony_ci    EndDir endDir2;
2364514f5e3Sopenharmony_ci    endDir2.signature = 0x06054b50;
2374514f5e3Sopenharmony_ci    endDir2.numDisk = 0;
2384514f5e3Sopenharmony_ci    endDir2.startDiskOfCentralDir = 0;
2394514f5e3Sopenharmony_ci    endDir2.totalEntriesInThisDisk = 1;
2404514f5e3Sopenharmony_ci    endDir2.totalEntries = 1;
2414514f5e3Sopenharmony_ci    endDir2.sizeOfCentralDir = 78;
2424514f5e3Sopenharmony_ci    endDir2.offset = 0;
2434514f5e3Sopenharmony_ci    endDir2.commentLen = 0;
2444514f5e3Sopenharmony_ci
2454514f5e3Sopenharmony_ci    EXPECT_TRUE(zipFileFriend.CheckEndDir(endDir2));
2464514f5e3Sopenharmony_ci}
2474514f5e3Sopenharmony_ci
2484514f5e3Sopenharmony_ciHWTEST_F_L0(ZipFileTest, ParseEndDirectoryTest)
2494514f5e3Sopenharmony_ci{
2504514f5e3Sopenharmony_ci    std::string pathName = "path/to/zip.hap";
2514514f5e3Sopenharmony_ci    ZipFileFriend zipFileFriend(pathName);
2524514f5e3Sopenharmony_ci    zipFileFriend.SetFileLength(22);
2534514f5e3Sopenharmony_ci    EXPECT_FALSE(zipFileFriend.ParseEndDirectory());
2544514f5e3Sopenharmony_ci}
2554514f5e3Sopenharmony_ci
2564514f5e3Sopenharmony_ciHWTEST_F_L0(ZipFileTest, OpenTest)
2574514f5e3Sopenharmony_ci{
2584514f5e3Sopenharmony_ci    std::string pathName = "test_files/long_path_name.txt";
2594514f5e3Sopenharmony_ci    ZipFileFriend zipFileFriend(pathName);
2604514f5e3Sopenharmony_ci    zipFileFriend.SetIsOpen(true);
2614514f5e3Sopenharmony_ci    EXPECT_TRUE(zipFileFriend.Open());
2624514f5e3Sopenharmony_ci
2634514f5e3Sopenharmony_ci    zipFileFriend.SetIsOpen(false);
2644514f5e3Sopenharmony_ci    std::string longPathName(4097, 'a');
2654514f5e3Sopenharmony_ci    zipFileFriend.SetPathName(longPathName);
2664514f5e3Sopenharmony_ci    EXPECT_FALSE(zipFileFriend.Open());
2674514f5e3Sopenharmony_ci}
2684514f5e3Sopenharmony_ci
2694514f5e3Sopenharmony_ciHWTEST_F_L0(ZipFileTest, CloseTest)
2704514f5e3Sopenharmony_ci{
2714514f5e3Sopenharmony_ci    std::string pathName = "zipFileTest.zip";
2724514f5e3Sopenharmony_ci    ZipFileFriend zipFileFriend(pathName);
2734514f5e3Sopenharmony_ci    zipFileFriend.Close();
2744514f5e3Sopenharmony_ci    EXPECT_EQ(zipFileFriend.GetPathName(), "zipFileTest.zip");
2754514f5e3Sopenharmony_ci
2764514f5e3Sopenharmony_ci    EXPECT_EQ(CreateTestFile(), 0);
2774514f5e3Sopenharmony_ci    std::shared_ptr<ZipFileReader> zipFileReader = ZipFileReader::CreateZipFileReader(pathName);
2784514f5e3Sopenharmony_ci    zipFileFriend.SetZipFileReader(zipFileReader);
2794514f5e3Sopenharmony_ci    EXPECT_EQ(DeleteTestFile(), 0);
2804514f5e3Sopenharmony_ci    zipFileFriend.Close();
2814514f5e3Sopenharmony_ci}
2824514f5e3Sopenharmony_ci
2834514f5e3Sopenharmony_ciHWTEST_F_L0(ZipFileTest, IsDirExistTest)
2844514f5e3Sopenharmony_ci{
2854514f5e3Sopenharmony_ci    std::string pathName = "zipFileTest.zip";
2864514f5e3Sopenharmony_ci    ZipFileFriend zipFileFriend(pathName);
2874514f5e3Sopenharmony_ci    EXPECT_FALSE(zipFileFriend.IsDirExist(""));
2884514f5e3Sopenharmony_ci    std::string dir = ".";
2894514f5e3Sopenharmony_ci    EXPECT_FALSE(zipFileFriend.IsDirExist(dir));
2904514f5e3Sopenharmony_ci    dir = "path/to/nonexistent";
2914514f5e3Sopenharmony_ci    EXPECT_FALSE(zipFileFriend.IsDirExist(dir));
2924514f5e3Sopenharmony_ci    dir = "/";
2934514f5e3Sopenharmony_ci    EXPECT_TRUE(zipFileFriend.IsDirExist(dir));
2944514f5e3Sopenharmony_ci}
2954514f5e3Sopenharmony_ci
2964514f5e3Sopenharmony_ciHWTEST_F_L0(ZipFileTest, GetAllFileListTest)
2974514f5e3Sopenharmony_ci{
2984514f5e3Sopenharmony_ci    std::string pathName = "zipFileTest.zip";
2994514f5e3Sopenharmony_ci    ZipFileFriend zipFileFriend(pathName);
3004514f5e3Sopenharmony_ci    std::vector<std::string> assetList;
3014514f5e3Sopenharmony_ci    zipFileFriend.GetAllFileList("", assetList);
3024514f5e3Sopenharmony_ci    EXPECT_TRUE(assetList.empty());
3034514f5e3Sopenharmony_ci
3044514f5e3Sopenharmony_ci    assetList.clear();
3054514f5e3Sopenharmony_ci    zipFileFriend.GetAllFileList(".", assetList);
3064514f5e3Sopenharmony_ci    EXPECT_TRUE(assetList.empty());
3074514f5e3Sopenharmony_ci
3084514f5e3Sopenharmony_ci    assetList.clear();
3094514f5e3Sopenharmony_ci    zipFileFriend.GetAllFileList("./", assetList);
3104514f5e3Sopenharmony_ci    EXPECT_TRUE(assetList.empty());
3114514f5e3Sopenharmony_ci
3124514f5e3Sopenharmony_ci    assetList.clear();
3134514f5e3Sopenharmony_ci    zipFileFriend.GetAllFileList("path/to/nonexistent", assetList);
3144514f5e3Sopenharmony_ci    EXPECT_TRUE(assetList.empty());
3154514f5e3Sopenharmony_ci}
3164514f5e3Sopenharmony_ci
3174514f5e3Sopenharmony_ciHWTEST_F_L0(ZipFileTest, GetChildNamesTest)
3184514f5e3Sopenharmony_ci{
3194514f5e3Sopenharmony_ci    std::string pathName = "zipFileTest.zip";
3204514f5e3Sopenharmony_ci    ZipFileFriend zipFileFriend(pathName);
3214514f5e3Sopenharmony_ci    std::set<std::string> fileSet;
3224514f5e3Sopenharmony_ci
3234514f5e3Sopenharmony_ci    zipFileFriend.GetChildNames("", fileSet);
3244514f5e3Sopenharmony_ci    EXPECT_TRUE(fileSet.empty());
3254514f5e3Sopenharmony_ci
3264514f5e3Sopenharmony_ci    fileSet.clear();
3274514f5e3Sopenharmony_ci    zipFileFriend.GetChildNames("/", fileSet);
3284514f5e3Sopenharmony_ci    EXPECT_TRUE(fileSet.empty());
3294514f5e3Sopenharmony_ci
3304514f5e3Sopenharmony_ci    fileSet.clear();
3314514f5e3Sopenharmony_ci    zipFileFriend.GetChildNames(".", fileSet);
3324514f5e3Sopenharmony_ci    EXPECT_TRUE(fileSet.empty());
3334514f5e3Sopenharmony_ci
3344514f5e3Sopenharmony_ci    fileSet.clear();
3354514f5e3Sopenharmony_ci    zipFileFriend.GetChildNames(".", fileSet);
3364514f5e3Sopenharmony_ci    EXPECT_TRUE(fileSet.empty());
3374514f5e3Sopenharmony_ci
3384514f5e3Sopenharmony_ci    fileSet.clear();
3394514f5e3Sopenharmony_ci    zipFileFriend.GetChildNames("path/to/nonexistent", fileSet);
3404514f5e3Sopenharmony_ci    EXPECT_TRUE(fileSet.empty());
3414514f5e3Sopenharmony_ci}
3424514f5e3Sopenharmony_ci
3434514f5e3Sopenharmony_ciHWTEST_F_L0(ZipFileTest, GetEntryTest)
3444514f5e3Sopenharmony_ci{
3454514f5e3Sopenharmony_ci    std::string pathName = "zipFileTest.zip";
3464514f5e3Sopenharmony_ci    ZipFileFriend zipFileFriend(pathName);
3474514f5e3Sopenharmony_ci    ZipEntry resultEntry;
3484514f5e3Sopenharmony_ci    std::string nonExistingEntryName = "nonExistingEntry";
3494514f5e3Sopenharmony_ci    EXPECT_FALSE(zipFileFriend.GetEntry(nonExistingEntryName, resultEntry));
3504514f5e3Sopenharmony_ci}
3514514f5e3Sopenharmony_ci
3524514f5e3Sopenharmony_ciHWTEST_F_L0(ZipFileTest, CheckCoherencyLocalHeaderTest)
3534514f5e3Sopenharmony_ci{
3544514f5e3Sopenharmony_ci    std::string pathName = "zipFileTest.zip";
3554514f5e3Sopenharmony_ci    ZipFileFriend zipFileFriend(pathName);
3564514f5e3Sopenharmony_ci    ZipEntry zipEntry;
3574514f5e3Sopenharmony_ci    uint16_t extraSize;
3584514f5e3Sopenharmony_ci    size_t fileStartPos_;
3594514f5e3Sopenharmony_ci    fileStartPos_ = 0;
3604514f5e3Sopenharmony_ci    zipEntry.compressionMethod = 8;
3614514f5e3Sopenharmony_ci    zipEntry.localHeaderOffset = 0;
3624514f5e3Sopenharmony_ci    zipEntry.fileName = "testFile.txt";
3634514f5e3Sopenharmony_ci    zipEntry.compressionMethod = 9;
3644514f5e3Sopenharmony_ci    EXPECT_FALSE(zipFileFriend.CheckCoherencyLocalHeader(zipEntry, extraSize));
3654514f5e3Sopenharmony_ci    zipEntry.fileName = std::string(4096, 'a');
3664514f5e3Sopenharmony_ci    EXPECT_FALSE(zipFileFriend.CheckCoherencyLocalHeader(zipEntry, extraSize));
3674514f5e3Sopenharmony_ci    zipEntry.fileName = "differentName.txt";
3684514f5e3Sopenharmony_ci    EXPECT_FALSE(zipFileFriend.CheckCoherencyLocalHeader(zipEntry, extraSize));
3694514f5e3Sopenharmony_ci}
3704514f5e3Sopenharmony_ci}