-
Notifications
You must be signed in to change notification settings - Fork 175
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
test: [ut]Write the docopyfileworker class ut
Write the docopyfileworker class ut Log: Write the docopyfileworker class ut Task: https://pms.uniontech.com/task-view-278221.html
- Loading branch information
Showing
7 changed files
with
1,011 additions
and
5 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
132 changes: 132 additions & 0 deletions
132
...in-fileoperations/fileoperations/fileoperations/cleantrash/ut_docleantrashfilesworker.cpp
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,132 @@ | ||
// SPDX-FileCopyrightText: 2022 - 2023 UnionTech Software Technology Co., Ltd. | ||
// | ||
// SPDX-License-Identifier: GPL-3.0-or-later | ||
|
||
#include "stubext.h" | ||
#include "plugins/common/core/dfmplugin-fileoperations/fileoperations/cleantrash/cleantrashfiles.h" | ||
#include "plugins/common/core/dfmplugin-fileoperations/fileoperations/cleantrash/docleantrashfilesworker.h" | ||
#include "plugins/common/core/dfmplugin-fileoperations/fileoperations/copyfiles/storageinfo.h" | ||
|
||
#include <dfm-base/base/urlroute.h> | ||
#include <dfm-base/base/schemefactory.h> | ||
#include <dfm-base/file/local/asyncfileinfo.h> | ||
#include <dfm-base/file/local/syncfileinfo.h> | ||
#include <dfm-base/file/local/localfilehandler.h> | ||
#include <dfm-base/utils/clipboard.h> | ||
|
||
#include <dfm-framework/event/event.h> | ||
|
||
#include <gtest/gtest.h> | ||
|
||
#include <dfm-io/denumerator.h> | ||
|
||
typedef QMap<QString,QVariant> * mapValue; | ||
Q_DECLARE_METATYPE(mapValue); | ||
|
||
DPFILEOPERATIONS_USE_NAMESPACE | ||
DFMBASE_USE_NAMESPACE | ||
DPF_USE_NAMESPACE | ||
class UT_DoCleanTrashFilesWorker : public testing::Test | ||
{ | ||
public: | ||
void SetUp() override { | ||
// 注册路由 | ||
UrlRoute::regScheme(Global::Scheme::kFile, "/", QIcon(), false, QObject::tr("System Disk")); | ||
UrlRoute::regScheme(Global::Scheme::kAsyncFile, "/", QIcon(), false, QObject::tr("System Disk")); | ||
// 注册Scheme为"file"的扩展的文件信息 本地默认文件的 | ||
InfoFactory::regClass<dfmbase::SyncFileInfo>(Global::Scheme::kFile); | ||
InfoFactory::regClass<AsyncFileInfo>(Global::Scheme::kAsyncFile); | ||
} | ||
void TearDown() override {} | ||
}; | ||
|
||
TEST_F(UT_DoCleanTrashFilesWorker, testDoWork) | ||
{ | ||
CleanTrashFiles job; | ||
DoCleanTrashFilesWorker worker; | ||
stub_ext::StubExt stub; | ||
stub.set_lamda(&DoCleanTrashFilesWorker::saveOperations, []{ __DBG_STUB_INVOKE__ }); | ||
stub.set_lamda(VADDR(AbstractWorker, doWork), []{ __DBG_STUB_INVOKE__ return false;}); | ||
EXPECT_FALSE(worker.doWork()); | ||
|
||
stub.set_lamda(VADDR(AbstractWorker, doWork), []{ __DBG_STUB_INVOKE__ return true;}); | ||
stub.set_lamda(VADDR(AbstractWorker, endWork), []{ __DBG_STUB_INVOKE__ }); | ||
EXPECT_TRUE(worker.doWork()); | ||
|
||
worker.onUpdateProgress(); | ||
|
||
stub.set_lamda(VADDR(AbstractWorker, initArgs), []{ __DBG_STUB_INVOKE__ return true;}); | ||
EXPECT_TRUE(worker.initArgs()); | ||
|
||
EXPECT_FALSE(worker.statisticsFilesSize()); | ||
|
||
worker.sourceUrls.append(FileUtils::trashRootUrl()); | ||
int index = 0; | ||
stub.set_lamda(&DEnumerator::hasNext, [&index]{ __DBG_STUB_INVOKE__ index++; return index % 2;}); | ||
stub.set_lamda(&DEnumerator::next, []{ __DBG_STUB_INVOKE__ return QUrl::fromLocalFile(QDir::currentPath());}); | ||
EXPECT_TRUE(worker.statisticsFilesSize()); | ||
} | ||
|
||
TEST_F(UT_DoCleanTrashFilesWorker, testCleanAllTrashFiles) | ||
{ | ||
DoCleanTrashFilesWorker worker; | ||
stub_ext::StubExt stub; | ||
stub.set_lamda(&DoCleanTrashFilesWorker::saveOperations, []{ __DBG_STUB_INVOKE__ }); | ||
worker.stop(); | ||
EXPECT_TRUE(worker.cleanAllTrashFiles()); | ||
|
||
worker.sourceUrls.append(QUrl()); | ||
EXPECT_FALSE(worker.cleanAllTrashFiles()); | ||
|
||
worker.allFilesList.append(QUrl()); | ||
EXPECT_FALSE(worker.cleanAllTrashFiles()); | ||
|
||
worker.resume(); | ||
stub.set_lamda(&DoCleanTrashFilesWorker::doHandleErrorAndWait, []{ __DBG_STUB_INVOKE__ | ||
return AbstractJobHandler::SupportAction::kNoAction;}); | ||
EXPECT_FALSE(worker.cleanAllTrashFiles()); | ||
|
||
stub.set_lamda(&DoCleanTrashFilesWorker::doHandleErrorAndWait, []{ __DBG_STUB_INVOKE__ | ||
return AbstractJobHandler::SupportAction::kSkipAction;}); | ||
EXPECT_TRUE(worker.cleanAllTrashFiles()); | ||
|
||
worker.allFilesList.clear(); | ||
QUrl url("trash:///text_DoCleanTrashFilesWorker.txt"); | ||
worker.allFilesList.append(url); | ||
EXPECT_TRUE(worker.cleanAllTrashFiles()); | ||
|
||
stub.set_lamda(&DoCleanTrashFilesWorker::doHandleErrorAndWait, []{ __DBG_STUB_INVOKE__ | ||
return AbstractJobHandler::SupportAction::kNoAction;}); | ||
EXPECT_FALSE(worker.cleanAllTrashFiles()); | ||
|
||
QSharedPointer<SyncFileInfo> info(new SyncFileInfo(QUrl::fromLocalFile(QDir::currentPath()))); | ||
stub.set_lamda(&InfoFactory::create<FileInfo>, [&info] { __DBG_STUB_INVOKE__ return info; }); | ||
stub.set_lamda(&DoCleanTrashFilesWorker::clearTrashFile, []{ __DBG_STUB_INVOKE__ return false;}); | ||
EXPECT_FALSE(worker.cleanAllTrashFiles()); | ||
|
||
stub.set_lamda(&DoCleanTrashFilesWorker::clearTrashFile, []{ __DBG_STUB_INVOKE__ return true;}); | ||
EXPECT_TRUE(worker.cleanAllTrashFiles()); | ||
|
||
} | ||
|
||
TEST_F(UT_DoCleanTrashFilesWorker, testClearTrashFile) | ||
{ | ||
DoCleanTrashFilesWorker worker; | ||
stub_ext::StubExt stub; | ||
stub.set_lamda(&DoCleanTrashFilesWorker::doHandleErrorAndWait, []{ __DBG_STUB_INVOKE__ | ||
return AbstractJobHandler::SupportAction::kNoAction;}); | ||
stub.set_lamda(&DoCleanTrashFilesWorker::deleteFile, []{ __DBG_STUB_INVOKE__ return false;}); | ||
worker.localFileHandler.reset(new LocalFileHandler); | ||
QUrl url(QUrl::fromLocalFile(QDir::currentPath())); | ||
FileInfoPointer info(new SyncFileInfo(url)); | ||
EXPECT_TRUE(worker.clearTrashFile(info)); | ||
|
||
stub.clear(); | ||
stub.set_lamda(static_cast<bool(QWaitCondition::*)(QMutex *, unsigned long )>(&QWaitCondition::wait), []{ __DBG_STUB_INVOKE__ return false;}); | ||
EXPECT_EQ(AbstractJobHandler::SupportAction::kNoAction, | ||
worker.doHandleErrorAndWait(url, AbstractJobHandler::JobErrorType::kNoError)); | ||
|
||
stub.set_lamda(&LocalFileHandler::deleteFile, []{ __DBG_STUB_INVOKE__ return true;}); | ||
EXPECT_TRUE(worker.deleteFile(url)); | ||
|
||
} |
136 changes: 136 additions & 0 deletions
136
...dfmplugin-fileoperations/fileoperations/fileoperations/copyfiles/ut_docopyfilesworker.cpp
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,136 @@ | ||
// SPDX-FileCopyrightText: 2022 - 2023 UnionTech Software Technology Co., Ltd. | ||
// | ||
// SPDX-License-Identifier: GPL-3.0-or-later | ||
|
||
#include "stubext.h" | ||
#include "plugins/common/core/dfmplugin-fileoperations/fileoperations/copyfiles/copyfiles.h" | ||
#include "plugins/common/core/dfmplugin-fileoperations/fileoperations/copyfiles/docopyfilesworker.h" | ||
|
||
#include <dfm-base/base/urlroute.h> | ||
#include <dfm-base/base/schemefactory.h> | ||
#include <dfm-base/file/local/asyncfileinfo.h> | ||
#include <dfm-base/file/local/syncfileinfo.h> | ||
#include <dfm-base/file/local/localfilehandler.h> | ||
#include <dfm-base/utils/clipboard.h> | ||
|
||
#include <dfm-framework/event/event.h> | ||
|
||
#include <gtest/gtest.h> | ||
|
||
typedef QMap<QString,QVariant> * mapValue; | ||
Q_DECLARE_METATYPE(mapValue); | ||
|
||
DPFILEOPERATIONS_USE_NAMESPACE | ||
DFMBASE_USE_NAMESPACE | ||
DPF_USE_NAMESPACE | ||
class UT_DoCopyFilesWorker : public testing::Test | ||
{ | ||
public: | ||
void SetUp() override { | ||
// 注册路由 | ||
UrlRoute::regScheme(Global::Scheme::kFile, "/", QIcon(), false, QObject::tr("System Disk")); | ||
UrlRoute::regScheme(Global::Scheme::kAsyncFile, "/", QIcon(), false, QObject::tr("System Disk")); | ||
// 注册Scheme为"file"的扩展的文件信息 本地默认文件的 | ||
InfoFactory::regClass<dfmbase::SyncFileInfo>(Global::Scheme::kFile); | ||
InfoFactory::regClass<AsyncFileInfo>(Global::Scheme::kAsyncFile); | ||
} | ||
void TearDown() override {} | ||
}; | ||
|
||
TEST_F(UT_DoCopyFilesWorker, testDoWork) | ||
{ | ||
CopyFiles job; | ||
DoCopyFilesWorker worker; | ||
worker.workData.reset(new WorkerData); | ||
worker.workData->jobFlags |= AbstractJobHandler::JobFlag::kCopyRemote; | ||
stub_ext::StubExt stub; | ||
stub.set_lamda(&ClipBoard::getRemoteUrls, []{ __DBG_STUB_INVOKE__ return QList<QUrl>();}); | ||
stub.set_lamda(&DoCopyFilesWorker::saveOperations, []{ __DBG_STUB_INVOKE__ }); | ||
stub.set_lamda(VADDR(AbstractWorker, doWork), []{__DBG_STUB_INVOKE__ return false;}); | ||
stub.set_lamda(&DoCopyFilesWorker::doHandleErrorAndWait, []{ __DBG_STUB_INVOKE__ | ||
return AbstractJobHandler::SupportAction::kNoAction;}); | ||
EXPECT_FALSE(worker.doWork()); | ||
|
||
worker.workData->jobFlags &= AbstractJobHandler::JobFlag::kNoHint; | ||
stub.clear(); | ||
stub.set_lamda(VADDR(AbstractWorker, doWork), []{__DBG_STUB_INVOKE__ return true;}); | ||
EXPECT_TRUE(worker.doWork()); | ||
|
||
stub.set_lamda(&DoCopyFilesWorker::copyFiles, []{__DBG_STUB_INVOKE__ return false;}); | ||
EXPECT_FALSE(worker.doWork()); | ||
} | ||
|
||
TEST_F(UT_DoCopyFilesWorker, testInitArgs) | ||
{ | ||
DoCopyFilesWorker worker; | ||
worker.workData.reset(new WorkerData); | ||
stub_ext::StubExt stub; | ||
stub.set_lamda(&DoCopyFilesWorker::saveOperations, []{ __DBG_STUB_INVOKE__ }); | ||
stub.set_lamda(&DoCopyFilesWorker::doHandleErrorAndWait, []{ __DBG_STUB_INVOKE__ | ||
return AbstractJobHandler::SupportAction::kNoAction;}); | ||
EXPECT_FALSE(worker.initArgs()); | ||
|
||
worker.sourceUrls.append(QUrl()); | ||
EXPECT_FALSE(worker.initArgs()); | ||
|
||
QUrl targetUrl; | ||
targetUrl.setScheme("smb"); | ||
worker.targetUrl = targetUrl; | ||
EXPECT_FALSE(worker.initArgs()); | ||
|
||
targetUrl = QUrl::fromLocalFile(QDir::currentPath() + QDir::separator() + "target.txt"); | ||
worker.targetUrl = targetUrl; | ||
EXPECT_FALSE(worker.initArgs()); | ||
|
||
stub.set_lamda(VADDR(SyncFileInfo, exists), []{ __DBG_STUB_INVOKE__ return true;}); | ||
EXPECT_TRUE(worker.initArgs()); | ||
|
||
auto targetInfo = InfoFactory::create<FileInfo>(targetUrl); | ||
worker.precompleteTargetFileInfo.append(targetInfo); | ||
worker.endWork(); | ||
} | ||
|
||
bool copyFileFunc(DoCopyFilesWorker *&, const FileInfoPointer &, const FileInfoPointer &, bool *skip) { | ||
__DBG_STUB_INVOKE__ | ||
if (skip) | ||
*skip = true; | ||
return false; | ||
} | ||
|
||
TEST_F(UT_DoCopyFilesWorker, testCopyFiles) | ||
{ | ||
DoCopyFilesWorker worker; | ||
worker.workData.reset(new WorkerData); | ||
stub_ext::StubExt stub; | ||
auto sorceUrl = QUrl::fromLocalFile(QDir::currentPath() + "/sourceUrl.txt"); | ||
auto targetUrl = QUrl::fromLocalFile(QDir::currentPath() + "/targetUrl.txt"); | ||
worker.stop(); | ||
worker.sourceUrls.append(QUrl()); | ||
EXPECT_FALSE(worker.copyFiles()); | ||
|
||
worker.resume(); | ||
stub.set_lamda(&DoCopyFilesWorker::doHandleErrorAndWait, []{ __DBG_STUB_INVOKE__ | ||
return AbstractJobHandler::SupportAction::kSkipAction;}); | ||
EXPECT_TRUE(worker.copyFiles()); | ||
|
||
stub.set_lamda(&DoCopyFilesWorker::doHandleErrorAndWait, []{ __DBG_STUB_INVOKE__ | ||
return AbstractJobHandler::SupportAction::kNoAction;}); | ||
EXPECT_FALSE(worker.copyFiles()); | ||
|
||
auto targetInfo = InfoFactory::create<FileInfo>(targetUrl); | ||
worker.targetInfo = targetInfo; | ||
stub.set_lamda(VADDR(SyncFileInfo, isAttributes), []{ __DBG_STUB_INVOKE__ return true;}); | ||
stub.set_lamda(&FileUtils::isHigherHierarchy, []{ __DBG_STUB_INVOKE__ return true;}); | ||
worker.sourceUrls.clear(); | ||
worker.sourceUrls.append(sorceUrl); | ||
EXPECT_FALSE(worker.copyFiles()); | ||
|
||
stub.set_lamda(VADDR(SyncFileInfo, isAttributes), []{ __DBG_STUB_INVOKE__ return false;}); | ||
stub.set_lamda(&DoCopyFilesWorker::doCopyFile, []{ __DBG_STUB_INVOKE__ return false;}); | ||
EXPECT_FALSE(worker.copyFiles()); | ||
|
||
stub.set(ADDR(DoCopyFilesWorker, doCopyFile), copyFileFunc); | ||
EXPECT_TRUE(worker.copyFiles()); | ||
|
||
worker.onUpdateProgress(); | ||
} |
Oops, something went wrong.