diff --git a/tests/cmake-lcov-test.sh b/tests/cmake-lcov-test.sh deleted file mode 100644 index 82ca18d60..000000000 --- a/tests/cmake-lcov-test.sh +++ /dev/null @@ -1,23 +0,0 @@ -utdir=build-ut -rm -r $utdir -rm -r ../$utdir -mkdir ../$utdir -cd ../$utdir - -cmake -DCMAKE_BUILD_TYPE=Debug .. -make -j16 - -workdir=$(cd ../$(dirname $0)/$utdir; pwd) - -./tests/deepin-editor-test --gtest_output=xml:./report/report.xml - -mkdir -p report -lcov -d $workdir -c -o ./report/coverage.info - -lcov --extract ./report/coverage.info '*/src/*' -o ./report/coverage.info - -lcov --remove ./report/coverage.info '*/tests/*' -o ./report/coverage.info - -genhtml -o ./report ./report/coverage.info - -exit 0 diff --git a/tests/src/common/ut_config.cpp b/tests/src/common/ut_config.cpp deleted file mode 100644 index c7df70e54..000000000 --- a/tests/src/common/ut_config.cpp +++ /dev/null @@ -1,56 +0,0 @@ -// SPDX-FileCopyrightText: 2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "../../src/common/config.h" - -#include -#include - -// Cover Config::Config(QObject*) and Config::~Config() by constructing and -// destructing a fresh instance (constructor is private, accessible via -// -fno-access-control compile flag used by the test target). -TEST(UT_Config, Destructor) -{ - Config *cfg = new Config(); - ASSERT_NE(cfg, nullptr); - - delete cfg; - SUCCEED(); -} - -// Cover Config::instance() singleton access path. -TEST(UT_Config, Instance) -{ - Config *cfg = Config::instance(); - ASSERT_NE(cfg, nullptr); - EXPECT_EQ(Config::instance(), cfg); -} - -// Cover Config::enableImproveGB18030 / enablePatchedIconv / defaultEncoding getters. -TEST(UT_Config, Getters) -{ - Config *cfg = Config::instance(); - EXPECT_FALSE(cfg->defaultEncoding().isEmpty()); -} - -// Cover the lambda connected to DConfig::valueChanged inside the constructor. -// dconfig member is private; accessible via -fno-access-control. -#ifdef DTKCORE_CLASS_DConfigFile -TEST(UT_Config, ValueChangedLambda) -{ - Config *cfg = Config::instance(); - if (cfg->dconfig && cfg->dconfig->isValid()) { - QMetaObject::invokeMethod(cfg->dconfig, "valueChanged", - Qt::DirectConnection, - Q_ARG(QString, "disableImproveGB18030")); - QMetaObject::invokeMethod(cfg->dconfig, "valueChanged", - Qt::DirectConnection, - Q_ARG(QString, "enablePatchedIconv")); - QMetaObject::invokeMethod(cfg->dconfig, "valueChanged", - Qt::DirectConnection, - Q_ARG(QString, "defaultEncoding")); - } - SUCCEED(); -} -#endif diff --git a/tests/src/common/ut_csyntaxhighlighter.cpp b/tests/src/common/ut_csyntaxhighlighter.cpp deleted file mode 100644 index 0629b3088..000000000 --- a/tests/src/common/ut_csyntaxhighlighter.cpp +++ /dev/null @@ -1,118 +0,0 @@ -// SPDX-FileCopyrightText: 2022-2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "ut_csyntaxhighlighter.h" - -test_CSyntaxHighlighter::test_CSyntaxHighlighter() -{ - -} - -TEST_F(test_CSyntaxHighlighter, setEnableHighlight) -{ - - TextEdit *m_pTextEdit = new TextEdit(); - bool bRet = true; - CSyntaxHighlighter *pCSyntaxHighlighter = new CSyntaxHighlighter(m_pTextEdit->document()); - pCSyntaxHighlighter->setEnableHighlight(bRet); - - EXPECT_EQ(pCSyntaxHighlighter->m_bHighlight,true); - - EXPECT_NE(m_pTextEdit,nullptr); - EXPECT_NE(pCSyntaxHighlighter,nullptr); - - pCSyntaxHighlighter->deleteLater(); - m_pTextEdit->deleteLater(); - - - -} - -TEST_F(test_CSyntaxHighlighter, setEnableHighlight2) -{ - - TextEdit *m_pTextEdit = new TextEdit(); - bool bRet = true; - CSyntaxHighlighter *pCSyntaxHighlighter = new CSyntaxHighlighter(this); - pCSyntaxHighlighter->setEnableHighlight(bRet); - - EXPECT_EQ(pCSyntaxHighlighter->m_bHighlight,true); - - EXPECT_NE(m_pTextEdit,nullptr); - EXPECT_NE(pCSyntaxHighlighter,nullptr); - - pCSyntaxHighlighter->deleteLater(); - m_pTextEdit->deleteLater(); - - -} - -TEST_F(test_CSyntaxHighlighter, highlightBlock) -{ - - TextEdit *m_pTextEdit = new TextEdit(); - bool bRet = true; - const QString strTest = "12345"; - CSyntaxHighlighter *pCSyntaxHighlighter = new CSyntaxHighlighter(m_pTextEdit->document()); - pCSyntaxHighlighter->m_bHighlight = false; - pCSyntaxHighlighter->highlightBlock(strTest); - - EXPECT_EQ(pCSyntaxHighlighter->m_bHighlight,false); - EXPECT_NE(m_pTextEdit,nullptr); - EXPECT_NE(pCSyntaxHighlighter,nullptr); - pCSyntaxHighlighter->deleteLater(); - m_pTextEdit->deleteLater(); - - - - -} - -// Cover CSyntaxHighlighter::setInvalidCharHighlight(bool) -TEST_F(test_CSyntaxHighlighter, setInvalidCharHighlight_enable) -{ - TextEdit *m_pTextEdit = new TextEdit(); - CSyntaxHighlighter *pCSyntaxHighlighter = new CSyntaxHighlighter(m_pTextEdit->document()); - pCSyntaxHighlighter->setInvalidCharHighlight(true); - - EXPECT_EQ(pCSyntaxHighlighter->m_bInvalidCharHighlight, true); - EXPECT_EQ(pCSyntaxHighlighter->m_bHighlight, true); - - pCSyntaxHighlighter->deleteLater(); - m_pTextEdit->deleteLater(); -} - -TEST_F(test_CSyntaxHighlighter, setInvalidCharHighlight_disable) -{ - TextEdit *m_pTextEdit = new TextEdit(); - CSyntaxHighlighter *pCSyntaxHighlighter = new CSyntaxHighlighter(m_pTextEdit->document()); - pCSyntaxHighlighter->setInvalidCharHighlight(false); - - EXPECT_EQ(pCSyntaxHighlighter->m_bInvalidCharHighlight, false); - - pCSyntaxHighlighter->deleteLater(); - m_pTextEdit->deleteLater(); -} - -TEST_F(test_CSyntaxHighlighter, highlightBlock1) -{ - - TextEdit *m_pTextEdit = new TextEdit(); - bool bRet = true; - const QString strTest = "12345"; - CSyntaxHighlighter *pCSyntaxHighlighter = new CSyntaxHighlighter(m_pTextEdit->document()); - pCSyntaxHighlighter->m_bHighlight = true; - pCSyntaxHighlighter->highlightBlock(strTest); - - EXPECT_EQ(pCSyntaxHighlighter->m_bHighlight,true); - EXPECT_NE(m_pTextEdit,nullptr); - EXPECT_NE(pCSyntaxHighlighter,nullptr); - - pCSyntaxHighlighter->deleteLater(); - m_pTextEdit->deleteLater(); - - - -} - diff --git a/tests/src/common/ut_csyntaxhighlighter.h b/tests/src/common/ut_csyntaxhighlighter.h deleted file mode 100644 index 210402d52..000000000 --- a/tests/src/common/ut_csyntaxhighlighter.h +++ /dev/null @@ -1,22 +0,0 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef TEST_CSYNTAXHIGHLIGHTER_H -#define TEST_CSYNTAXHIGHLIGHTER_H - -#include "../../src/common/CSyntaxHighlighter.h" -#include "../../src/editor/dtextedit.h" - -#include "gtest/gtest.h" -#include - -class test_CSyntaxHighlighter: public QObject, public::testing::Test -{ -public: - test_CSyntaxHighlighter(); - - KSyntaxHighlighting::SyntaxHighlighter *m_highlighter = nullptr; -}; - -#endif // TEST_CSYNTAXHIGHLIGHTER_H \ No newline at end of file diff --git a/tests/src/common/ut_encoding.cpp b/tests/src/common/ut_encoding.cpp deleted file mode 100644 index b5fe76a36..000000000 --- a/tests/src/common/ut_encoding.cpp +++ /dev/null @@ -1,68 +0,0 @@ -// SPDX-FileCopyrightText: 2021 - 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -//#include "test_encoding.h" - -//test_encoding::test_encoding() -//{ - -//} - -//TEST_F(test_encoding, FileLoadThread) -//{ -// extern bool validateUTF8 (const QByteArray byteArray); -// char i = 'a'; -// QByteArray a(3,i); -// detectCharset(a); -// -//} - -//TEST_F(test_encoding, detectCharsetLatin) -//{ -// const char *text = "dsfsdfsdf"; -// const std::string detectCharsetLatin(text); -// -//} - -//TEST_F(test_encoding, detectCharsetCyrillic) -//{ -// const char *text = "dsfsdfsdf"; -// const std::string detectCharsetCyrillic(text); -// -//} - -//TEST_F(test_encoding, detectCharsetWinArabic) -//{ -// const char *text = "dsfsdfsdf"; -// const std::string detectCharsetWinArabic(text); -// -//} - -//TEST_F(test_encoding, detectCharsetChinese) -//{ -// const char *text = "dsfsdfsdf"; -// const std::string detectCharsetChinese(text); -// -//} - -//TEST_F(test_encoding, detectCharsetJapanese) -//{ -// const char *text = "dsfsdfsdf"; -// const std::string detectCharsetJapanese(text); -// -//} - -//TEST_F(test_encoding, detectCharsetKorean) -//{ -// const char *text = "dsfsdfsdf"; -// const std::string detectCharsetKorean(text); -// -//} - -//TEST_F(test_encoding, detect_noniso) -//{ -// const char *text = "dsfsdfsdf"; -// const std::string detect_noniso(text); -// -//} diff --git a/tests/src/common/ut_encoding.h b/tests/src/common/ut_encoding.h deleted file mode 100644 index ff17ef431..000000000 --- a/tests/src/common/ut_encoding.h +++ /dev/null @@ -1,26 +0,0 @@ -// SPDX-FileCopyrightText: 2021 - 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -//#ifndef TEST_ENCODING_H -//#define TEST_ENCODING_H - -//#include"../../src/common/settings.h" -//#include"../../src/controls/tabbar.h" -//#include"../../src/editor/editwrapper.h" -//#include"../../src/widgets/window.h" -//#include"../../src/startmanager.h" -//#include"../../src/editor/dtextedit.h" -//#include"../../src/common/CSyntaxHighlighter.h" -//#include"../src/common/encoding.h" - -//#include "gtest/gtest.h" -//#include - -//class test_encoding: public QObject, public::testing::Test -//{ -//public: -// test_encoding(); -//}; - -//#endif // TEST_ENCODING_H diff --git a/tests/src/common/ut_eventlogutils.cpp b/tests/src/common/ut_eventlogutils.cpp deleted file mode 100644 index 711a61a63..000000000 --- a/tests/src/common/ut_eventlogutils.cpp +++ /dev/null @@ -1,41 +0,0 @@ -// SPDX-FileCopyrightText: 2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "../../src/common/eventlogutils.h" - -#include -#include -#include - -// Cover Eventlogutils::GetInstance() and the private Eventlogutils::Eventlogutils() -// constructor (invoked on first GetInstance call). -TEST(UT_Eventlogutils, GetInstance) -{ - Eventlogutils *p1 = Eventlogutils::GetInstance(); - ASSERT_NE(p1, nullptr); - - Eventlogutils *p2 = Eventlogutils::GetInstance(); - EXPECT_EQ(p1, p2); -} - -// Cover Eventlogutils::writeLogs(QJsonObject&). -// writeEventLogFunc may be null when libdeepin-event-log.so is unavailable, -// the function still executes and returns early in that case. -TEST(UT_Eventlogutils, writeLogs) -{ - QJsonObject data; - data["tid"] = static_cast(Eventlogutils::StartUp); - data["msg"] = QStringLiteral("unit test message"); - - Eventlogutils::GetInstance()->writeLogs(data); - SUCCEED(); -} - -// Cover writeLogs with empty json object. -TEST(UT_Eventlogutils, writeLogs_empty) -{ - QJsonObject data; - Eventlogutils::GetInstance()->writeLogs(data); - SUCCEED(); -} diff --git a/tests/src/common/ut_fileloadthread.cpp b/tests/src/common/ut_fileloadthread.cpp deleted file mode 100644 index 2e102b810..000000000 --- a/tests/src/common/ut_fileloadthread.cpp +++ /dev/null @@ -1,103 +0,0 @@ -// SPDX-FileCopyrightText: 2019 - 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "ut_fileloadthread.h" -#include "../../src/common/fileloadthread.h" -#include "stub.h" - -#include - -test_fileloadthread::test_fileloadthread() -{ -} - -void test_fileloadthread::SetUp() -{ - fthread = new FileLoadThread("aa"); - - EXPECT_NE(fthread, nullptr); - -} - -void test_fileloadthread::TearDown() -{ - delete fthread; - fthread = nullptr; -} - -//FileLoadThread(const QString &filepath, QObject *QObject = nullptr); -TEST_F(test_fileloadthread, FileLoadThread) -{ - FileLoadThread thread("aa"); - - EXPECT_EQ(thread.m_strFilePath, "aa"); -} - -//void run(); -TEST_F(test_fileloadthread, run) -{ - FileLoadThread *thread = new FileLoadThread("aa"); - thread->run(); - - EXPECT_NE(thread, nullptr); - thread->deleteLater(); -} - -//void setEncodeInfo(QStringList pathList,QStringList codeList); -TEST_F(test_fileloadthread, setEncodeInfo) -{ - QStringList pathList, codeList; - FileLoadThread *thread = new FileLoadThread("aa"); - //thread->setEncodeInfo(pathList,codeList); - - - EXPECT_NE(thread, nullptr); - thread->deleteLater(); -} - -//QString getCodec(); -TEST_F(test_fileloadthread, getCodec) -{ - FileLoadThread *thread = new FileLoadThread("aa"); - // thread->getCodec(); - - EXPECT_NE(thread, nullptr); - thread->deleteLater(); -} - -QByteArray readErrorFunc(qint64 maxlen) -{ - Q_UNUSED(maxlen); - throw std::bad_alloc(); - return QByteArray(); -} - -TEST_F(test_fileloadthread, readError) -{ - QString tmpFilePath("/tmp/test_fileloadthread.txt"); - QFile tmpFile(tmpFilePath); - if (tmpFile.open(QFile::WriteOnly)) { - tmpFile.write("local test data"); - tmpFile.close(); - } - ASSERT_TRUE(tmpFile.exists()); - - FileLoadThread *thread = new FileLoadThread(tmpFilePath); - Stub readErrorStub; - readErrorStub.set((QByteArray(QFile::*)(qint64))(ADDR(QFile, read)), readErrorFunc); - - bool readError = false; - connect(thread, &FileLoadThread::sigLoadFinished, [&](const QByteArray & encode, const QByteArray & content, bool error) { - Q_UNUSED(encode); - Q_UNUSED(content); - readError = error; - }); - - thread->run(); - - EXPECT_TRUE(readError); - EXPECT_NE(thread, nullptr); - thread->deleteLater(); - tmpFile.remove(); -} diff --git a/tests/src/common/ut_fileloadthread.h b/tests/src/common/ut_fileloadthread.h deleted file mode 100644 index 54ea6c869..000000000 --- a/tests/src/common/ut_fileloadthread.h +++ /dev/null @@ -1,21 +0,0 @@ -// SPDX-FileCopyrightText: 2019 - 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef TEST_FILELOADTHREAD_H -#define TEST_FILELOADTHREAD_H -#include "gtest/gtest.h" -#include - -class FileLoadThread; -class test_fileloadthread : public QObject - , public ::testing::Test -{ -public: - test_fileloadthread(); - virtual void SetUp() override; - virtual void TearDown() override; - FileLoadThread *fthread; -}; - -#endif // TEST_FILELOADTHREAD_H diff --git a/tests/src/common/ut_iflytek_ai_assistant.cpp b/tests/src/common/ut_iflytek_ai_assistant.cpp deleted file mode 100644 index 629d51e4b..000000000 --- a/tests/src/common/ut_iflytek_ai_assistant.cpp +++ /dev/null @@ -1,63 +0,0 @@ -// SPDX-FileCopyrightText: 2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "../../src/common/iflytek_ai_assistant.h" - -#include -#include -#include -#include - -// Cover IflytekAiAssistant::launchCopilotChat(QSharedPointer const&) -// which is a private static method (accessible via -fno-access-control). -// Using an invalid interface, call() returns an error message so the function -// returns Disable. The exact result depends on the DBus environment, so we -// only assert the function executes and returns a known enum value. -TEST(UT_IflytekAiAssistant, launchCopilotChat) -{ - QSharedPointer copilot = - QSharedPointer::create("com.deepin.copilot", - "/com/deepin/copilot", - "com.deepin.copilot"); - ASSERT_FALSE(copilot.isNull()); - - IflytekAiAssistant::CallStatus ret = - IflytekAiAssistant::launchCopilotChat(copilot); - // The return value is either Disable (error path) or Enable (no error msg). - EXPECT_TRUE(ret == IflytekAiAssistant::Disable || - ret == IflytekAiAssistant::Enable); -} - -// Cover IflytekAiAssistant::stopTtsDirectlyInternal() const (private method). -// When status() != Enable it returns the current status immediately. -TEST(UT_IflytekAiAssistant, stopTtsDirectlyInternal_notEnabled) -{ - IflytekAiAssistant *ins = IflytekAiAssistant::instance(); - IflytekAiAssistant::CallStatus ret = ins->stopTtsDirectlyInternal(); - EXPECT_EQ(ret, ins->status()); -} - -// Cover IflytekAiAssistant::stopTtsDirectlyInternal() const on the success path. -// Force m_status to Enable so the DBus call branch is exercised. -TEST(UT_IflytekAiAssistant, stopTtsDirectlyInternal_enabled) -{ - IflytekAiAssistant *ins = IflytekAiAssistant::instance(); - IflytekAiAssistant::CallStatus oldStatus = ins->m_status; - ins->m_status = IflytekAiAssistant::Enable; - - IflytekAiAssistant::CallStatus ret = ins->stopTtsDirectlyInternal(); - EXPECT_EQ(ret, IflytekAiAssistant::Success); - - ins->m_status = oldStatus; -} - -// Cover IflytekAiAssistant::~IflytekAiAssistant() (private, defaulted destructor) -// by constructing and destructing a fresh instance. -TEST(UT_IflytekAiAssistant, Destructor) -{ - IflytekAiAssistant *p = new IflytekAiAssistant(); - ASSERT_NE(p, nullptr); - delete p; - SUCCEED(); -} diff --git a/tests/src/common/ut_performancemonitor.cpp b/tests/src/common/ut_performancemonitor.cpp deleted file mode 100644 index 45bb417bf..000000000 --- a/tests/src/common/ut_performancemonitor.cpp +++ /dev/null @@ -1,76 +0,0 @@ -// SPDX-FileCopyrightText: 2019 - 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "ut_performancemonitor.h" -#include "../../src/common/performancemonitor.h" - -test_performanceMonitor::test_performanceMonitor() -{ - -} - -//explicit PerformanceMonitor(QObject *parent = nullptr); -TEST_F(test_performanceMonitor, PerformanceMonitor) -{ - PerformanceMonitor PerformanceMonitor; - -} - -//static void initializeAppStart(); -TEST_F(test_performanceMonitor, initializeAppStart) -{ - PerformanceMonitor p; - p.initializeAppStart(); - EXPECT_NE(p.initializeAppStartMs,0); - -} - -//static void initializAppFinish(); -TEST_F(test_performanceMonitor, initializAppFinish) -{ - PerformanceMonitor p; - p.initializAppFinish(); - - EXPECT_NE(p.inittalizeApoFinishMs,0); - -} - -//static void closeAppStart(); -TEST_F(test_performanceMonitor, closeAppStart) -{ - PerformanceMonitor p; - p.closeAppStart(); - - EXPECT_NE(p.closeAppStartMs,0); - -} - -//static void closeAPPFinish(); -TEST_F(test_performanceMonitor, closeAPPFinish) -{ - PerformanceMonitor p; - p.closeAPPFinish(); - - EXPECT_NE(p.closeAppFinishMs,0); - -} - -//static void openFileStart(); -TEST_F(test_performanceMonitor, openFileStart) -{ - PerformanceMonitor p; - p.openFileStart(); - - EXPECT_NE(p.openFileStartMs,0); -} - -//static void openFileFinish(const QString &strFileName, qint64 iFileSize); -TEST_F(test_performanceMonitor, openFileFinish) -{ - PerformanceMonitor p; - p.openFileFinish("aa",1); - - EXPECT_NE(p.openFileFinishMs,0); - -} diff --git a/tests/src/common/ut_performancemonitor.h b/tests/src/common/ut_performancemonitor.h deleted file mode 100644 index 7b15b9f40..000000000 --- a/tests/src/common/ut_performancemonitor.h +++ /dev/null @@ -1,16 +0,0 @@ -// SPDX-FileCopyrightText: 2019 - 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef TEST_PERFORMANCEMONITOR_H -#define TEST_PERFORMANCEMONITOR_H -#include "gtest/gtest.h" -#include - -class test_performanceMonitor : public QObject, public::testing::Test -{ -public: - test_performanceMonitor(); -}; - -#endif // TEST_PERFORMANCEMONITOR_H diff --git a/tests/src/common/ut_setting.cpp b/tests/src/common/ut_setting.cpp deleted file mode 100644 index 4bce8d7b2..000000000 --- a/tests/src/common/ut_setting.cpp +++ /dev/null @@ -1,597 +0,0 @@ -// SPDX-FileCopyrightText: 2019-2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "ut_setting.h" -#include "../../src/common/settings.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -// #include -#include "src/stub.h" - -namespace settinsstub { - -KeySequenceEdit* keyvalue = nullptr; -KeySequenceEdit* KeySequenceEditstub() -{ - if(keyvalue==nullptr) - { - DTK_CORE_NAMESPACE::DSettingsOption o; - o.setValue("123.456"); - keyvalue = new KeySequenceEdit(&o); - } - return keyvalue; -} -} - -using namespace settinsstub; - -UT_Setting::UT_Setting() -{ - m_setting = new Settings(); -} - -void UT_Setting::SetUp() -{ - if (m_setting != nullptr) { - m_setting = new Settings(); - } - - EXPECT_NE(m_setting, nullptr); -} - -void UT_Setting::TearDown() -{ - delete m_setting; - m_setting=nullptr; -} - -QString retqstring() -{ - return "123.456"; -} - -TEST(UT_Setting_Settings, UT_Setting_Settings) -{ - Settings* m_setting = new Settings(); - QString figPath = QString("%1/%2/%3/config.conf") - .arg(QStandardPaths::writableLocation(QStandardPaths::ConfigLocation)) - .arg(qApp->organizationName()) - .arg(qApp->applicationName()); - QSettingBackend *m_backend = new QSettingBackend(figPath); - - - m_setting->settings = DSettings::fromJsonFile(":/resources/settings.json"); - m_setting->settings->setBackend(m_backend); - auto fontFamliy = m_setting->settings->option("base.font.family"); - // QVariant value; - // fontFamliy->valueChanged(value); - // sleep(500); -#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) - QVariant retVal; - QMetaObject::invokeMethod(fontFamliy, "valueChanged", Qt::DirectConnection, - QGenericReturnArgument(), - Q_ARG(QVariant, "dsd")); -#endif - - - EXPECT_NE(m_backend,nullptr); - m_backend->deleteLater(); - m_setting->deleteLater(); -} - -TEST(UT_Setting_Settings, UT_Setting_Settings_002) -{ - Settings* m_setting = new Settings(); - QString figPath = QString("%1/%2/%3/config.conf") - .arg(QStandardPaths::writableLocation(QStandardPaths::ConfigLocation)) - .arg(qApp->organizationName()) - .arg(qApp->applicationName()); - QSettingBackend *m_backend = new QSettingBackend(figPath); - EXPECT_NE(m_backend, nullptr); - - // 析构验证改为一次 delete:显式调用 ~Settings() 后再 deleteLater 会二次析构(UB,全量用例段错误根源) - delete m_setting; - - if (m_backend != nullptr) { - m_backend->deleteLater(); - } -} - -//static Settings* instance(); -TEST(UT_Setting_instance, UT_Setting_instance) -{ - EXPECT_NE(Settings::instance(),nullptr); - -} - -//void dtkThemeWorkaround(QWidget *parent, const QString &theme); -TEST(UT_Setting_dtkThemeWorkaround, UT_Setting_dtkThemeWorkaround) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world")); - Settings *Settings = Settings::instance(); - Settings->dtkThemeWorkaround(pWindow, DEEPIN_THEME); - EXPECT_NE(pWindow, nullptr); - - // 不再 deleteLater 单例:销毁进程级 Settings 会导致后续 instance() 悬空(历史崩溃源) - pWindow->deleteLater(); -} - -//static QPair createFontComBoBoxHandle(QObject *obj); -TEST(UT_Setting_createFontComBoBoxHandle, UT_Setting_createFontComBoBoxHandle) -{ - Settings* m_setting = new Settings(); - - QWidget *widget = new QWidget(); - DSettingsDialog *dialog = new DSettingsDialog(widget); - dialog->widgetFactory()->registerWidget("fontcombobox", m_setting->createFontComBoBoxHandle); - - DTK_CORE_NAMESPACE::DSettingsOption o; - auto it = m_setting->createFontComBoBoxHandle(&o); - EXPECT_EQ(it.first,nullptr); - - EXPECT_NE(dialog,nullptr); - EXPECT_NE(widget,nullptr); - widget->deleteLater(); - dialog->deleteLater(); - m_setting->deleteLater(); -} - -//static QPair createKeySequenceEditHandle(QObject *obj); -TEST(UT_Setting_createKeySequenceEditHandle, UT_Setting_createKeySequenceEditHandle_001) -{ - Settings* m_setting = new Settings(); - QWidget *widget = new QWidget(); - DSettingsDialog *dialog = new DSettingsDialog(widget); - dialog->widgetFactory()->registerWidget("fontcombobox", Settings::createKeySequenceEditHandle); - - DTK_CORE_NAMESPACE::DSettingsOption o; - auto it = m_setting->createKeySequenceEditHandle(&o); - EXPECT_EQ(it.first,nullptr); - - EXPECT_NE(dialog,nullptr); - EXPECT_NE(widget,nullptr); - widget->deleteLater(); - dialog->deleteLater(); - m_setting->deleteLater(); -} - -//static Settings* instance(); - -//void setSettingDialog(DSettingsDialog *settingsDialog); -TEST(UT_Setting_setSettingDialog, UT_Setting_setSettingDialog) -{ - QWidget *widget = new QWidget(); - DSettingsDialog *dialog = new DSettingsDialog(widget); - Settings *pSettings = Settings::instance(); - pSettings->setSettingDialog(dialog); - - EXPECT_NE(Settings::instance()->m_pSettingsDialog, nullptr); - - EXPECT_NE(dialog,nullptr); - EXPECT_NE(widget,nullptr); - widget->deleteLater(); - dialog->deleteLater(); - // 不 deleteLater 单例:已存在的 Window/TextEdit 缓存 m_settings 裸指针,单例回收会使它们悬空 -} - -//private: -//void updateAllKeysWithKeymap(QString keymap); -TEST(UT_Setting_updateAllKeysWithKeymap, UT_Setting_updateAllKeysWithKeymap) -{ - QString keymap = Settings::instance()->settings->option("shortcuts.keymap.keymap")->value().toString(); - Settings::instance()->updateAllKeysWithKeymap(keymap); - - EXPECT_NE(Settings::instance()->m_bUserChangeKey,true); -} - -//void copyCustomizeKeysFromKeymap(QString keymap); -TEST(UT_Setting_copyCustomizeKeysFromKeymap, UT_Setting_copyCustomizeKeysFromKeymap) -{ - QString keymap = Settings::instance()->settings->option("shortcuts.keymap.keymap")->value().toString(); - Settings::instance()->copyCustomizeKeysFromKeymap(keymap); - - EXPECT_NE(Settings::instance()->m_bUserChangeKey,true); -} - -//此函数代码调试中已经覆盖, html中显示未覆盖 -TEST(UT_Setting_checkShortcutValid, UT_Setting_checkShortcutValid) -{ - Settings* m_setting = new Settings(); - - bool ok; - QString reason = "reason"; - EXPECT_NE(m_setting->checkShortcutValid("shortcuts.keymap.keymap", "Enter", reason, ok),true); - m_setting->deleteLater(); -} - -TEST(UT_Setting_checkShortcutValid2, UT_Setting_checkShortcutValid2) -{ - Settings* m_setting = new Settings(); - bool ok; - QString reason = "reason"; - EXPECT_NE(m_setting->checkShortcutValid("shortcuts.keymap.keymap", "<", reason, ok),true); - - m_setting->deleteLater(); -} - -TEST(UT_Setting_checkShortcutValid3, UT_Setting_checkShortcutValid3) -{ - Settings* m_setting = new Settings(); - bool ok; - QString reason = "reason"; - EXPECT_NE(m_setting->checkShortcutValid("shortcuts.keymap.keymap<", "Num+", reason, ok),true); - - m_setting->deleteLater(); -} - -TEST(UT_Setting_isShortcutConflict, UT_Setting_isShortcutConflict) -{ - Settings* m_setting = new Settings(); - //Settings::instance()->isShortcutConflict("shortcuts.keymap.keymap", "Enter"); - // assert(1 == 1); - QStringList list; - list << "aa" - << "bb"; - EXPECT_NE(m_setting->isShortcutConflict("aa", "bb"), true); - - EXPECT_NE(m_setting->isShortcutConflict("aa", "bb"), true); - - QVariant value; - QString strValue("Ctrl+Z"); - const QString strKey("shortcuts.editor.undo"); - m_setting->m_bUserChangeKey = false; - m_setting->slotCustomshortcut(strKey, strValue); - - m_setting->slotsigAdjustFont(value); - - QVariant keymap2 = Settings::instance()->settings->option("base.font.size")->value(); - m_setting->slotsigAdjustFontSize(keymap2); - m_setting->slotsigAdjustWordWrap(value); - m_setting->slotsigSetLineNumberShow(value); - m_setting->slotsigAdjustBookmark(value); - m_setting->slotsigShowCodeFlodFlag(value); - m_setting->slotsigShowBlankCharacter(value); - m_setting->slotsigHightLightCurrentLine(value); - m_setting->slotsigAdjustTabSpaceNumber(value); - - QVariant keymap = Settings::instance()->settings->option("shortcuts.keymap.keymap")->value(); - m_setting->slotupdateAllKeysWithKeymap(keymap); - - m_setting->deleteLater(); -} - -TEST(UT_Setting_slotCustomshortcut, UT_Setting_slotCustomshortcut_001) -{ - QString strValue("Ctrl+Z"); - const QString strKey("shortcuts.editor.undo"); - Settings *pSettings = new Settings(); - pSettings->m_bUserChangeKey = false; - pSettings->slotCustomshortcut(strKey, strValue); - ASSERT_TRUE(pSettings->m_bUserChangeKey == false); - - pSettings->deleteLater(); -} - - -QVariant stub_dsettings_option() -{ - QVariant variant = QString("Hello word"); - return variant; -} - -TEST(UT_Setting_slotCustomshortcut, UT_Setting_slotCustomshortcut_002) -{ - QString strValue("Ctrl+Z"); - const QString strKey("shortcuts.editor.undo"); - Settings *pSettings = new Settings(); - pSettings->m_bUserChangeKey = false; - pSettings->slotCustomshortcut(strKey, strValue); - ASSERT_TRUE(pSettings->m_bUserChangeKey == false); - - pSettings->deleteLater(); -} - -TEST(UT_Setting_isShortcutConflict, UT_Setting_slotsigAdjustFontSize) -{ - Settings *pSettings = new Settings(); - pSettings->slotsigAdjustFont(15); - ASSERT_TRUE(pSettings->m_backend != nullptr); - - pSettings->deleteLater(); -} - -TEST(UT_Setting_createDialog, UT_Setting_createDialog_001) -{ - DSettingsDialog *pSettingsDialog = new DSettingsDialog; - Settings *pSettings = new Settings(); - pSettings->m_pSettingsDialog = pSettingsDialog; - DDialog *pDialog = pSettings->createDialog(QString("title"), QString("content"), true); - - ASSERT_TRUE(pDialog != nullptr); - - pSettingsDialog->deleteLater(); - pDialog->deleteLater(); - pSettings->deleteLater(); -} - -TEST(UT_Setting_createDialog, UT_Setting_createDialog_002) -{ - DSettingsDialog *pSettingsDialog = new DSettingsDialog; - Settings *pSettings = new Settings(); - pSettings->m_pSettingsDialog = pSettingsDialog; - DDialog *pDialog = pSettings->createDialog(QString("title"), QString("content"), false); - - ASSERT_TRUE(pDialog != nullptr); - - pSettingsDialog->deleteLater(); - pDialog->deleteLater(); - pSettings->deleteLater(); -} - -// -TEST(UT_Setting_KeySequenceEdit, UT_Setting_KeySequenceEdit1) -{ - QWidget *widget = new QWidget(); - DSettingsDialog *dialog = new DSettingsDialog(widget); - auto option = qobject_cast(dialog); - - KeySequenceEdit *shortCutLineEdit = new KeySequenceEdit(option); - QEvent *e = new QEvent(QEvent::KeyPress); - shortCutLineEdit->eventFilter(shortCutLineEdit,e); - - QVariant keymap = Settings::instance()->settings->option("shortcuts.keymap.keymap")->value(); - shortCutLineEdit->slotDSettingsOptionvalueChanged(keymap); - - EXPECT_NE(widget, nullptr); - EXPECT_NE(shortCutLineEdit, nullptr); - EXPECT_NE(e, nullptr); - widget->deleteLater(); - dialog->deleteLater(); - shortCutLineEdit->deleteLater(); - delete e ; - e=nullptr; -} - -TEST(UT_Setting_KeySequenceEdit, UT_KeySequenceEdit_KeySequenceEdit) -{ - DTK_CORE_NAMESPACE::DSettingsOption *opt = new DTK_CORE_NAMESPACE::DSettingsOption; - KeySequenceEdit *pKeySequenceEdit = new KeySequenceEdit(opt); - ASSERT_TRUE(pKeySequenceEdit->m_pOption != nullptr); - - opt->deleteLater(); - pKeySequenceEdit->deleteLater(); -} - -TEST(UT_Setting_KeySequenceEdit, UT_KeySequenceEdit_eventFilter_001) -{ - DTK_CORE_NAMESPACE::DSettingsOption *opt = new DTK_CORE_NAMESPACE::DSettingsOption; - KeySequenceEdit *pKeySequenceEdit = new KeySequenceEdit(opt); - Qt::KeyboardModifier modefiers[4] = {Qt::NoModifier, Qt::AltModifier, Qt::MetaModifier, Qt::NoModifier}; - QKeyEvent *pKeyEvent = new QKeyEvent(QEvent::KeyPress, Qt::Key_Return, modefiers[0], "\r"); - bool bRet = pKeySequenceEdit->eventFilter(pKeySequenceEdit, pKeyEvent); - - ASSERT_TRUE(bRet == true); - - opt->deleteLater(); - pKeySequenceEdit->deleteLater(); - delete pKeyEvent; - pKeyEvent = nullptr; -} - -TEST(UT_Setting_KeySequenceEdit, UT_KeySequenceEdit_eventFilter_002) -{ - DTK_CORE_NAMESPACE::DSettingsOption *opt = new DTK_CORE_NAMESPACE::DSettingsOption; - KeySequenceEdit *pKeySequenceEdit = new KeySequenceEdit(opt); - bool bRet = pKeySequenceEdit->eventFilter(nullptr, nullptr); - ASSERT_TRUE(bRet == false); - - opt->deleteLater(); - pKeySequenceEdit->deleteLater(); -} - -TEST(UT_Setting_KeySequenceEdit, UT_KeySequenceEdit_slotDSettingsOptionvalueChanged_001) -{ - DTK_CORE_NAMESPACE::DSettingsOption *opt = new DTK_CORE_NAMESPACE::DSettingsOption; - KeySequenceEdit *pKeySequenceEdit = new KeySequenceEdit(opt); - pKeySequenceEdit->slotDSettingsOptionvalueChanged(QString("")); - ASSERT_TRUE(pKeySequenceEdit->m_pOption != nullptr); - - opt->deleteLater(); - pKeySequenceEdit->deleteLater(); -} - -TEST(UT_Setting_KeySequenceEdit, UT_KeySequenceEdit_slotDSettingsOptionvalueChanged_002) -{ - DTK_CORE_NAMESPACE::DSettingsOption *opt = new DTK_CORE_NAMESPACE::DSettingsOption; - KeySequenceEdit *pKeySequenceEdit = new KeySequenceEdit(opt); - pKeySequenceEdit->slotDSettingsOptionvalueChanged(QString("Ctr+t")); - ASSERT_TRUE(pKeySequenceEdit->m_pOption != nullptr); - - opt->deleteLater(); - pKeySequenceEdit->deleteLater(); -} - -TEST(UT_Setting_KeySequenceEdit, UT_KeySequenceEdit_option) -{ - DTK_CORE_NAMESPACE::DSettingsOption *opt = new DTK_CORE_NAMESPACE::DSettingsOption; - KeySequenceEdit *pKeySequenceEdit = new KeySequenceEdit(opt); - DTK_CORE_NAMESPACE::DSettingsOption *pRet = pKeySequenceEdit->option(); - - ASSERT_TRUE(pRet == opt); - - opt->deleteLater(); - pKeySequenceEdit->deleteLater(); -} - -//以下两条CASE 脚本跑会造成程序崩,加两行debug后就不崩了 -//TEST(UT_Setting_createDialog2, UT_Setting_createDialog2) -//{ -// Settings set; -// set.createDialog("ba", "bb", false); -//} - -//TEST(UT_Setting_createDialog, UT_Setting_createDialog) -//{ -// Settings set; -// set.createDialog("ba", "bb", true); -//} - -//=========================================================================== -// Coverage additions for uncovered functions in settings.cpp -//=========================================================================== - -// Cover CustemBackend::CustemBackend(QString const&, QObject*), -// doSetOption, doSync, keys, getOption and ~CustemBackend (both variants). -TEST(UT_CustemBackend, AllMethods) -{ - QString tmpPath = QDir::tempPath() + "/ut_custem_backend.conf"; - // remove leftover config from previous runs - QFile::remove(tmpPath); - - CustemBackend *backend = new CustemBackend(tmpPath, nullptr); - ASSERT_NE(backend, nullptr); - ASSERT_NE(backend->m_settings, nullptr); - - // doSetOption writes a value - backend->doSetOption("test.key", QVariant("test_value")); - - // doSync flushes to disk - backend->doSync(); - - // keys should now contain the key we just wrote - QStringList keyList = backend->keys(); - EXPECT_TRUE(keyList.contains("test.key")); - - // getOption reads it back - QVariant val = backend->getOption("test.key"); - EXPECT_EQ(val.toString(), QString("test_value")); - - // destructor deletes m_settings (covers both deleting & complete dtor) - delete backend; -} - -// Cover Settings::setSavePathId(int) and round-trip with getSavePathId(). -TEST(UT_Setting_setSavePathId, setSavePathId) -{ - Settings *s = Settings::instance(); - s->setSavePathId(2); - EXPECT_EQ(s->getSavePathId(), 2); - - s->setSavePathId(0); - EXPECT_EQ(s->getSavePathId(), 0); -} - -// Cover Settings::~Settings() with a clean new/delete pair. -TEST(UT_Setting_Destructor, Destructor) -{ - Settings *s = new Settings(); - ASSERT_NE(s, nullptr); - delete s; - SUCCEED(); -} - -// Cover the lambda {lambda(QVariant)#1} inside createSavingPathWgt by -// emitting the option's valueChanged signal after widget creation. -TEST(UT_Setting_createSavingPathWgt, LambdaValueChange) -{ - Settings *s = Settings::instance(); - auto option = s->settings->option("advance.open_save_setting.savingpathwgt"); - ASSERT_NE(option, nullptr); - - QWidget *w = Settings::createSavingPathWgt(option); - // trigger the connected lambda {lambda(QVariant)#1} - option->setValue(1); - - if (w) - w->deleteLater(); -} - -// Cover the lambdas inside createFontComBoBoxHandle: -// {lambda(QVariant)#1} -> option valueChanged -// {lambda(QString const&)#2} -> comboBox currentTextChanged -TEST(UT_Setting_createFontComBoBoxHandle, Lambdas) -{ - Settings *s = Settings::instance(); - DTK_CORE_NAMESPACE::DSettingsOption *option = new DTK_CORE_NAMESPACE::DSettingsOption(); - option->setValue(QFontDatabase::systemFont(QFontDatabase::FixedFont).family()); - - auto widgetPair = s->createFontComBoBoxHandle(option); - - // trigger lambda #1 (option valueChanged handler) - option->setValue(QFontDatabase::systemFont(QFontDatabase::GeneralFont).family()); - - // trigger lambda #2 (comboBox currentTextChanged handler) - QComboBox *combo = nullptr; - if (widgetPair.second) { - combo = qobject_cast(widgetPair.second); - if (!combo) - combo = widgetPair.second->findChild(); - } - if (combo) { - combo->setCurrentText(QStringLiteral("Sans Serif")); - } - - if (widgetPair.second) - widgetPair.second->deleteLater(); - option->deleteLater(); -} - -// Cover the lambda {lambda(QKeySequence const&)#1} inside -// createKeySequenceEditHandle by emitting editingFinished with a sequence. -// Since DDialog::exec() is virtual, we subclass it and override exec() to -// return 0 (cancel) immediately WITHOUT running a nested event loop. A -// real exec() event loop would process accumulated DeferredDelete events -// from previous tests (e.g. destroying the Settings singleton mid-test), -// causing a SEGV inside QObject::~QObject(). -class NoLoopDDialog : public DDialog -{ -public: - using DDialog::DDialog; - int exec() override { return 0; } -}; - -static DDialog *stub_createDialog(Settings *, const QString &, const QString &, const bool &) -{ - return new NoLoopDDialog(); -} - -TEST(UT_Setting_createKeySequenceEditHandle, LambdaEditingFinished) -{ - Settings *s = Settings::instance(); - - auto option = s->settings->option("shortcuts.window.newwindow"); - ASSERT_NE(option, nullptr); - - auto widgetPair = Settings::createKeySequenceEditHandle(option); - - // Stub createDialog (non-virtual member) so any conflict dialog auto-closes. - Stub stub; - stub.set(ADDR(Settings, createDialog), stub_createDialog); - - // KeySequenceEdit lacks a Q_OBJECT macro so qobject_cast cannot be used; - // the second widget of the pair is the edit widget itself. - KeySequenceEdit *edit = nullptr; - if (widgetPair.second) { - edit = static_cast(widgetPair.second); - } - if (edit) { - // emit editingFinished -> triggers the connected lambda - emit edit->editingFinished(QKeySequence(QStringLiteral("Ctrl+T"))); - } - - if (widgetPair.second) - widgetPair.second->deleteLater(); -} diff --git a/tests/src/common/ut_setting.h b/tests/src/common/ut_setting.h deleted file mode 100644 index 1b14e4d46..000000000 --- a/tests/src/common/ut_setting.h +++ /dev/null @@ -1,28 +0,0 @@ -// SPDX-FileCopyrightText: 2019 - 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef UT_Setting_H -#define UT_Setting_H - -#include "gtest/gtest.h" -#include -#include -#include "../../src/widgets/window.h" -#include "../../src/common/utils.h" - -class Settings; -class KeySequenceEdit; -class UT_Setting : public QObject - , public ::testing::Test -{ - Q_OBJECT - -public: - UT_Setting(); - virtual void SetUp() override; - virtual void TearDown() override; - Settings *m_setting; -}; - -#endif // UT_Setting_H diff --git a/tests/src/common/ut_textfilesaver.cpp b/tests/src/common/ut_textfilesaver.cpp deleted file mode 100644 index 0b388921d..000000000 --- a/tests/src/common/ut_textfilesaver.cpp +++ /dev/null @@ -1,49 +0,0 @@ -// SPDX-FileCopyrightText: 2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "../../src/common/text_file_saver.h" - -#include -#include -#include -#include -#include - -// Cover TextFileSaver::saveAs(QString const&) - success path with a temp file. -TEST(UT_TextFileSaver, saveAs_success) -{ - QTextDocument doc; - doc.setPlainText(QStringLiteral("Hello world\nSecond line")); - - TextFileSaver saver(&doc); - - QTemporaryDir dir; - ASSERT_TRUE(dir.isValid()); - QString filePath = dir.path() + "/test_saveas.txt"; - - bool ret = saver.saveAs(filePath); - EXPECT_TRUE(ret); - - // The file should exist and contain content. - QFile file(filePath); - EXPECT_TRUE(file.exists()); -} - -// Cover TextFileSaver::saveAs(QString const&) - failure path (unwritable path) -// which should restore the original path and return false. -TEST(UT_TextFileSaver, saveAs_failure) -{ - QTextDocument doc; - doc.setPlainText(QStringLiteral("content")); - - TextFileSaver saver(&doc); - saver.setFilePath(QStringLiteral("/tmp/original_path_keep.txt")); - - // An invalid directory path cannot be opened for writing. - bool ret = saver.saveAs(QStringLiteral("/nonexistent_dir_xyz/path/file.txt")); - EXPECT_FALSE(ret); - - // On failure the original path is restored. - EXPECT_FALSE(saver.errorString().isEmpty()); -} diff --git a/tests/src/common/ut_utils.cpp b/tests/src/common/ut_utils.cpp deleted file mode 100644 index 793c3ebd4..000000000 --- a/tests/src/common/ut_utils.cpp +++ /dev/null @@ -1,540 +0,0 @@ -// SPDX-FileCopyrightText: 2019-2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "ut_utils.h" - -#include "../../src/common/settings.h" -#include "../../src/controls/tabbar.h" -#include "../../src/editor/editwrapper.h" -#include "../../src/widgets/window.h" -#include "../../src/startmanager.h" -#include "../../src/editor/dtextedit.h" -#include "../../src/common/utils.h" -extern "C" { -#include "../../src/basepub/load_libs.h" -} - -#include "stub.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "qchar.h" -#include "QTextDecoder" -#include "qlocale.h" - - -namespace utilsstub { -QChar::Script scriptvalue = QChar::Script_Hiragana; -QChar::Script scriptstub() -{ - return scriptvalue; -} - -QLocale::Script scriptvalue2 = QLocale::ArabicScript; -QLocale::Script scriptstub2() -{ - return scriptvalue2; -} - -bool rettruestub() -{ - return true; -} - -bool retfalsestub() -{ - return false; -} - -ushort unicodestub() -{ - return 0x0000; -} - -QString namevalue; -QString namestub() -{ - return namevalue; -} - -int retintstub() -{ - return 2; -} - -} - -using namespace utilsstub; - -UT_Utils::UT_Utils() -{ -} - -void UT_Utils::SetUp() -{ - utils = new Utils; - EXPECT_NE(utils, nullptr); -} - -void UT_Utils::TearDown() -{ - delete utils; - utils = nullptr; -} - -//static QString getQrcPath(const QString &imageName); -TEST(UT_Utils_getQrcPath, UT_Utils_getQrcPath) -{ - EXPECT_NE(Utils::getQrcPath("aa").contains("aa"), false); - -} - -//static QString getQssPath(const QString &qssName); -TEST(UT_Utils_getQssPath, UT_Utils_getQssPath) -{ - EXPECT_NE(Utils::getQssPath("aa").contains("aa"), false); - -} - -//static QSize getRenderSize(int fontSize, const QString &string); -TEST(UT_Utils_getRenderSize, UT_Utils_getRenderSize) -{ - EXPECT_NE(Utils::getRenderSize(1, "aa").width(), 0); - -} - -//static void setFontSize(QPainter &painter, int textSize); -TEST(UT_Utils_setFontSize, UT_Utils_setFontSize) -{ - QImage image(10, 10, QImage::Format_RGB888); - QPainter painter(&image); - Utils::setFontSize(painter, 1); - EXPECT_NE(painter.font().pixelSize(), 0); - -} - -//static void applyQss(QWidget *widget, const QString &qssName); -TEST(UT_Utils_applyQss, UT_Utils_applyQss) -{ - QWidget *widget = new QWidget; - Utils::applyQss(widget, "1"); - - EXPECT_NE(widget, nullptr); - widget->deleteLater(); -} - -//static QString getKeyshortcut(QKeyEvent *keyEvent); -TEST(UT_Utils_getKeyshortcut, UT_Utils_getKeyshortcut) -{ - //QKeyEvent::Type - QKeyEvent *keyEvent = new QKeyEvent(QEvent::KeyPress, 1, Qt::NoModifier); - EXPECT_EQ(Utils::getKeyshortcut(keyEvent).contains("+"), false); - -} - -//static QString getKeyshortcutFromKeymap(Settings* settings, const QString &keyCategory, const QString &keyName); -TEST(UT_Utils_getKeyshortcutFromKeymap, UT_Utils_getKeyshortcutFromKeymap) -{ - EXPECT_NE(Utils::getKeyshortcutFromKeymap(Settings::instance(), "editor", "selectall"), " "); - -} - -//static bool fileExists(const QString &path); -TEST(UT_Utils_fileExists, UT_Utils_fileExists) -{ - EXPECT_NE(Utils::fileExists("aa"), true); -} - -//static bool fileIsWritable(const QString &path); -TEST(UT_Utils_fileIsWritable, UT_Utils_fileIsWritable) -{ - EXPECT_NE(Utils::fileIsWritable("aa"), true); -} - -//static bool fileIsHome(const QString &path); -TEST(UT_Utils_fileIsHome, UT_Utils_fileIsHome) -{ - EXPECT_NE(Utils::fileIsHome("aa"), true); - -} - -//static void passInputEvent(int wid); - -//static QPixmap dropShadow(const QPixmap &source, qreal radius, const QColor &color, const QPoint &offset); -//static QImage dropShadow(const QPixmap &px, qreal radius, const QColor &color); -TEST(UT_Utils_dropShadow, UT_Utils_dropShadow) -{ - QImage image(10, 10, QImage::Format_RGB888); - EXPECT_NE(Utils::dropShadow(QPixmap::fromImage(image), 1.5, QColor("#000000"), QPoint(1, 1)).isNull(), true); - Utils::dropShadow(QPixmap::fromImage(image), 1.5, QColor("#000000")); - -} - -//static QByteArray detectEncode(const QByteArray &data, const QString &fileName = QString()); -TEST(UT_Utils_detectEncode, UT_Utils_detectEncode_001) -{ - EXPECT_NE(Utils::detectEncode("aa").size(), 0); -} - -TEST(UT_Utils_detectEncode, UT_Utils_detectEncode_002) -{ - Utils *utils = new Utils; - QByteArray array; - array.clear(); - EXPECT_NE(utils->detectEncode(array).size(), 0); - - delete utils; - utils = nullptr; - -} - -QTextCodec *stub_codecForUtfText(const QByteArray &ba, QTextCodec *defaultCodec) -{ - return nullptr; -} - -QMimeType stub_mimeTypeForData(const QByteArray &data) -{ - QMimeType type; - QMimeDatabase base; - type = base.mimeTypeForName("application/xml"); - return type; -} -TEST(UT_Utils_detectEncode, UT_Utils_detectEncode_007) -{ - // Qt6 note: removed QString::size stub because Qt6's QStringView - // asserts "str || !len" when constructing from a null pointer with - // a non-zero length. Instead we provide real XML data containing a - // Content-Language meta tag so the code path is exercised without - // relying on the dangerous size stub. - - Utils *utils = new Utils; - - typedef QTextCodec *(*fptr)(const QByteArray &, QTextCodec *); - fptr A_foo = (fptr)(&QTextCodec::codecForUtfText); - - Stub st; - st.set(A_foo, stub_codecForUtfText); - - Stub s3; - s3.set((QLocale::Script(QLocale::*)() const)ADDR(QLocale, script), scriptstub2); - - // Provide real XML data with Content-Language header for each script - // so the proberType switching path is exercised naturally. - auto makeXml = [](const QString &lang) -> QByteArray { - return QString("").arg(lang).toLatin1(); - }; - - scriptvalue2 = QLocale::SimplifiedChineseScript; - EXPECT_NE(utils->detectEncode(makeXml("zh-CN")).size(), 0); - - scriptvalue2 = QLocale::TraditionalChineseScript; - EXPECT_NE(utils->detectEncode(makeXml("zh-TW")).size(), 0); - - scriptvalue2 = QLocale::CyrillicScript; - EXPECT_NE(utils->detectEncode(makeXml("ru")).size(), 0); - - scriptvalue2 = QLocale::GreekScript; - EXPECT_NE(utils->detectEncode(makeXml("el")).size(), 0); - - scriptvalue2 = QLocale::HebrewScript; - EXPECT_NE(utils->detectEncode(makeXml("he")).size(), 0); - - scriptvalue2 = QLocale::JapaneseScript; - EXPECT_NE(utils->detectEncode(makeXml("ja")).size(), 0); - - scriptvalue2 = QLocale::KoreanScript; - EXPECT_NE(utils->detectEncode(makeXml("ko")).size(), 0); - - scriptvalue2 = QLocale::ThaiScript; - EXPECT_NE(utils->detectEncode(makeXml("th")).size(), 0); - - scriptvalue2 = QLocale::AvestanScript; - EXPECT_NE(utils->detectEncode(makeXml("av")).size(), 0); - - delete utils; - utils = nullptr; -} - -//static QByteArray getEncode(const QByteArray &data); -TEST(UT_Utils_getEncode, UT_Utils_getEncode) -{ - EXPECT_NE(Utils::getEncode("aa").isEmpty(), true); - -} - -//static qreal easeInOut(qreal x); -TEST(UT_Utils_easeInOut, UT_Utils_easeInOut) -{ - EXPECT_NE(Utils::easeInOut(0.1), 0); -} - -//static qreal easeInQuad(qreal x); -TEST(UT_Utils_easeInQuad, UT_Utils_easeInQuad) -{ - EXPECT_NE(Utils::easeInQuad(0.1), 0); -} - -//static qreal easeInQuint(qreal x); -TEST(UT_Utils_easeInQuint, UT_Utils_easeInQuint) -{ - EXPECT_NE(Utils::easeInQuint(0.1), 0); -} - -//static qreal easeOutQuad(qreal x); -TEST(UT_Utils_easeOutQuad, UT_Utils_easeOutQuad) -{ - EXPECT_NE(Utils::easeOutQuad(0.1), 0); -} - -//static qreal easeOutQuint(qreal x); -TEST(UT_Utils_easeOutQuint, UT_Utils_easeOutQuint) -{ - EXPECT_NE(Utils::easeOutQuint(0.1), 0); -} - -//static QVariantMap getThemeMapFromPath(const QString &filepath); -TEST(UT_Utils_getThemeMapFromPath, UT_Utils_getThemeMapFromPath) -{ - EXPECT_NE(Utils::getThemeMapFromPath("aa").isEmpty(), false); -} - -//static bool isMimeTypeSupport(const QString &filepath); -TEST(UT_Utils_isMimeTypeSupport, UT_Utils_isMimeTypeSupport) -{ - EXPECT_NE(Utils::isMimeTypeSupport("aa"), false); -} - -//static bool isDraftFile(const QString &filepath); -TEST(UT_Utils_isDraftFile, UT_Utils_isDraftFile) -{ - EXPECT_NE(Utils::isDraftFile("aa"), true); -} - -//static const QStringList getEncodeList(); -TEST(UT_Utils_getEncodeList, UT_Utils_getEncodeList) -{ - Utils::getEncodeList(); - EXPECT_NE(Utils::renderSVG("", QSize(40, 40), false).isNull(), false); - -} - -TEST(UT_Utils_clearChildrenFoucusEx, clearChildrenFoucusEx) -{ - QWidget *wgt = new QWidget; - QPushButton *btn = new QPushButton(wgt); - - Utils::clearChildrenFoucusEx(wgt); - - EXPECT_NE(wgt, nullptr); - EXPECT_NE(btn, nullptr); - - wgt->deleteLater(); - btn->deleteLater(); - -} - -TEST(UT_Utils_setChildrenFocus, setChildrenFocus) -{ - QWidget *wgt = new QWidget; - QPushButton *btn = new QPushButton(wgt); - - Utils::setChildrenFocus(wgt, Qt::NoFocus); - - EXPECT_NE(wgt, nullptr); - EXPECT_NE(btn, nullptr); - - wgt->deleteLater(); - btn->deleteLater(); - -} - -TEST(UT_Utils_getProcessCountByName, getProcessCountByName) -{ - char a[10] = {"12345"}; - Utils::getProcessCountByName(a); - - EXPECT_NE(a[0], '2'); -} - -TEST(UT_Utils_killProcessByName, killProcessByName) -{ - char a[10] = {"12345"}; - Utils::killProcessByName(a); - - EXPECT_NE(a[0], '2'); -} - - -// static RegionIntersectType checkRegionIntersect(int x1, int y1, int x2, int y2); -TEST(UT_Utils_checkRegionIntersect, checkRegionIntersect) -{ - // 测试各边界判断 - Utils::RegionIntersectType type; - type = Utils::checkRegionIntersect(10, 20, 0, 9); - ASSERT_EQ(type, Utils::ELeft); - type = Utils::checkRegionIntersect(10, 20, 0, 10); - ASSERT_NE(type, Utils::ELeft); - - type = Utils::checkRegionIntersect(10, 20, 21, 30); - ASSERT_EQ(type, Utils::ERight); - type = Utils::checkRegionIntersect(10, 20, 20, 30); - ASSERT_NE(type, Utils::ERight); - - type = Utils::checkRegionIntersect(10, 20, 9, 15); - ASSERT_EQ(type, Utils::EIntersectLeft); - type = Utils::checkRegionIntersect(10, 20, 15, 21); - ASSERT_EQ(type, Utils::EIntersectRight); - type = Utils::checkRegionIntersect(10, 20, 9, 21); - ASSERT_EQ(type, Utils::EIntersectOutter); - type = Utils::checkRegionIntersect(10, 20, 10, 20); - ASSERT_EQ(type, Utils::EIntersectInner); -} - -QByteArray supportEncoding_readAll_stub() -{ - return QByteArray(); -} - -TEST(UT_Utils_getSupportEncoding, getSupportEncoding) -{ - auto encoding = Utils::getSupportEncoding(); - ASSERT_FALSE(encoding.isEmpty()); -} - -TEST(UT_Utils_getSupportEncoding, getSupportEncodingWithError) -{ - // getSupportEncoding 内部使用函数级静态缓存 s_groupEncodeVec:首次成功加载后再次调用 - // 时,即使 readAll 失败也会命中缓存并返回已加载的编码列表(而非空)。共享测试进程里 - // 该缓存会被更早的用例(Window/DDropdownMenu 构造或启动初始化)预先填充,因此原用 - // 例“readAll 失败 → 返回空”的首加载分支在全量运行中不可达(且原用例对 QVector::isEmpty - // 打桩会触发未对齐写 UB)。这里改为验证缓存韧性:确保缓存已加载后 stub readAll 失败, - // 断言仍返回非空缓存结果。 - ASSERT_FALSE(Utils::getSupportEncoding().isEmpty()); - - Stub stub2; - stub2.set(ADDR(QIODevice, readAll), supportEncoding_readAll_stub); - auto encoding = Utils::getSupportEncoding(); - ASSERT_FALSE(encoding.isEmpty()); -} - -TEST(UT_Utils_getSupportEncodingList, getSupportEncodingList) -{ - QStringList encodingList = Utils::getSupportEncodingList(); - ASSERT_FALSE(encodingList.isEmpty()); - ASSERT_TRUE(encodingList.contains("UTF-8")); -} - -void uos_document_clip_copy_false(const char *path, int *intercept) -{ - Q_UNUSED(path) - if (intercept) { - *intercept = 1; - } -} -#if _ZPD_ -TEST(UT_Utils_zpdLib, enableClipCopy_notLoad_True) -{ - EXPECT_TRUE(Utils::enableClipCopy("")); - EXPECT_TRUE(Utils::enableClipCopy(QString::null)); - - getLoadZPDLibsInstance()->m_document_clip_copy = &uos_document_clip_copy_false; - EXPECT_FALSE(Utils::enableClipCopy("")); - - getLoadZPDLibsInstance()->m_document_clip_copy = nullptr; -} -#endif - -//=========================================================================== -// Coverage additions for uncovered functions in utils.cpp -//=========================================================================== - -// Cover Utils::loadCustomDLL() -TEST(UT_Utils_loadCustomDLL, loadCustomDLL) -{ - Utils::loadCustomDLL(); - SUCCEED(); -} - -// Cover Utils::getStringMD5Hash(QString const&) -TEST(UT_Utils_getStringMD5Hash, getStringMD5Hash) -{ - QString input = QStringLiteral("hello world"); - QString hash = Utils::getStringMD5Hash(input); - EXPECT_FALSE(hash.isEmpty()); - // MD5 of "hello world" is 5eb63bbbe01eeed093cb22bb8f5acdc3 - EXPECT_EQ(hash, QString("5eb63bbbe01eeed093cb22bb8f5acdc3")); -} - -// Cover Utils::libPath(QString const&) -TEST(UT_Utils_libPath, libPath) -{ - // a non-existent library returns empty string - QString path = Utils::libPath("libnonexistent_xyz.so"); - EXPECT_TRUE(path.isEmpty() || !path.isEmpty()); - - // querying a well-known lib should not crash - QString path2 = Utils::libPath("libQt"); - EXPECT_TRUE(path2.isEmpty() || !path2.isEmpty()); -} - -// Cover Utils::isShareDirAndReadOnly(QString const&) -TEST(UT_Utils_isShareDirAndReadOnly, isShareDirAndReadOnly_exe) -{ - // The samba share directory usually does not exist in the test environment, - // the function should return false without crashing. - bool ret = Utils::isShareDirAndReadOnly("/tmp/not_a_share.txt"); - EXPECT_FALSE(ret); -} - -// Cover Utils::lineFeed(QString const&, int, QFont const&, int) -TEST(UT_Utils_lineFeed, lineFeed_singleRow) -{ - QFont font; - // nElidedRow == 1 takes the elide-middle branch - QString result = Utils::lineFeed("some long text here", 50, font, 1); - EXPECT_FALSE(result.isEmpty()); -} - -TEST(UT_Utils_lineFeed, lineFeed_multiRow) -{ - QFont font; - // multi-row wrapping path (default nElidedRow == 2) - QString result = Utils::lineFeed("some very long text that should wrap", 30, font, 2); - EXPECT_TRUE(!result.isEmpty() || result.isEmpty()); -} - -TEST(UT_Utils_lineFeed, lineFeed_negativeRow) -{ - QFont font; - // negative nElidedRow is clamped to 2 - QString result = Utils::lineFeed("test", 100, font, -1); - EXPECT_FALSE(result.isEmpty()); -} - -// Cover Utils::sendFloatMessageFixedFont(QWidget*, QIcon const&, QString const&) -// and the embedded lambdas. Calling twice on the same parent triggers the -// count_if lambda (lambda(DFloatingMessage*)) in the second call because the -// message manager content child has been created by the first call. -TEST(UT_Utils_sendFloatMessageFixedFont, sendMessage) -{ - QWidget *par = new QWidget; - QIcon icon = QIcon::fromTheme("deepin-editor"); - - // first call: content child not yet present, skips count_if branch - Utils::sendFloatMessageFixedFont(par, icon, QStringLiteral("first message")); - // second call: content child exists, executes count_if lambda - Utils::sendFloatMessageFixedFont(par, icon, QStringLiteral("second message")); - - par->deleteLater(); - SUCCEED(); -} diff --git a/tests/src/common/ut_utils.h b/tests/src/common/ut_utils.h deleted file mode 100644 index dc4b89448..000000000 --- a/tests/src/common/ut_utils.h +++ /dev/null @@ -1,22 +0,0 @@ -// SPDX-FileCopyrightText: 2019 - 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef UT_Utils_H -#define UT_Utils_H - -#include "gtest/gtest.h" -#include - -class Utils; -class UT_Utils : public QObject - , public ::testing::Test -{ -public: - UT_Utils(); - virtual void SetUp() override; - virtual void TearDown() override; - Utils *utils; -}; - -#endif // UT_Utils_H diff --git a/tests/src/controls/ut_findbar.cpp b/tests/src/controls/ut_findbar.cpp deleted file mode 100644 index 34fcd4b0d..000000000 --- a/tests/src/controls/ut_findbar.cpp +++ /dev/null @@ -1,254 +0,0 @@ -// SPDX-FileCopyrightText: 2019-2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "ut_findbar.h" -#include "../../src/controls/findbar.h" -#include -#include -#include - -test_findbar::test_findbar() -{ - -} - -TEST_F(test_findbar, FindBar) -{ - FindBar findBar(nullptr); - -} - -//bool isFocus(); -TEST_F(test_findbar, isFocus) -{ - FindBar *findBar = new FindBar(); - - EXPECT_NE(findBar,nullptr); - EXPECT_EQ(findBar->isFocus(),false); - - findBar->deleteLater(); - -} - -//void focus(); -TEST_F(test_findbar, focus) -{ - FindBar *findBar = new FindBar(); - findBar->focus(); - EXPECT_NE(findBar,nullptr); - - findBar->deleteLater(); - -} - -//void activeInput(QString text, QString file, int row, int column, int scrollOffset); -TEST_F(test_findbar, activeInput) -{ - FindBar *findBar = new FindBar(); - findBar->activeInput("aa","aa",1,1,1); - - - EXPECT_NE(findBar,nullptr); - EXPECT_EQ(findBar->m_editLine->lineEdit()->text(),"aa"); - - findBar->deleteLater(); - - -} - -//void setMismatchAlert(bool isAlert); -TEST_F(test_findbar, setMismatchAlert) -{ - FindBar *findBar = new FindBar(); - findBar->setMismatchAlert(true); - - EXPECT_NE(findBar,nullptr); - EXPECT_EQ(findBar->m_editLine->isAlert(),true); - findBar->deleteLater(); - -} - -//void receiveText(QString t); -TEST_F(test_findbar, receiveText) -{ - FindBar *findBar = new FindBar(); - findBar->receiveText("aa"); - - EXPECT_NE(findBar,nullptr); - EXPECT_EQ(findBar->m_receivedText,"aa"); - - findBar->deleteLater(); - -} - -//void setSearched(bool _); -TEST_F(test_findbar, setSearched) -{ - FindBar *findBar = new FindBar(); - findBar->setSearched(true); - - EXPECT_NE(findBar,nullptr); - EXPECT_EQ(findBar->searched,true); - findBar->deleteLater(); - -} - -//void findPreClicked(); -TEST_F(test_findbar, findPreClicked) -{ - FindBar *findBar = new FindBar(); - findBar->findPreClicked(); - - - EXPECT_NE(findBar,nullptr); - EXPECT_EQ(findBar->searched,true); - findBar->deleteLater(); -} - -//public slots: -//void findCancel(); -TEST_F(test_findbar, findCancel) -{ - FindBar *findBar = new FindBar(); - findBar->findCancel(); - - EXPECT_NE(findBar,nullptr); - EXPECT_EQ(findBar->isVisible(),false); - findBar->deleteLater(); - -} - -//void handleContentChanged(); -TEST_F(test_findbar, handleContentChanged) -{ - FindBar *findBar = new FindBar(); - findBar->handleContentChanged(); - findBar->handleFindPrev(); - findBar->handleFindNext(); - - EXPECT_NE(findBar,nullptr); - findBar->deleteLater(); - -} - -//void slot_ifClearSearchWord(); -//TEST_F(test_findbar, slot_ifClearSearchWord) -//{ -// FindBar *findBar = new FindBar(); -// findBar->slot_ifClearSearchWord(); -// -//} - -//protected: -//void hideEvent(QHideEvent *event) override; -TEST_F(test_findbar, hideEvent) -{ - QHideEvent *event = new QHideEvent(); - FindBar *findBar = new FindBar(); - findBar->hideEvent(event); - - EXPECT_NE(event,nullptr); - EXPECT_NE(findBar,nullptr); - findBar->deleteLater(); - delete event; - -} - -//bool focusNextPrevChild(bool next) override; -TEST_F(test_findbar, focusNextPrevChild) -{ - FindBar *findBar = new FindBar(); - - EXPECT_EQ(findBar->focusNextPrevChild(true),false); - EXPECT_NE(findBar,nullptr); - findBar->deleteLater(); - -} - -//void keyPressEvent(QKeyEvent *e) override; -TEST_F(test_findbar, keyPressEvent) -{ - FindBar *findBar = new FindBar(); - - QKeyEvent *e = new QKeyEvent(QEvent::KeyPress,Qt::Key_Tab,Qt::NoModifier); - findBar->m_closeButton->setFocus(); - findBar->keyPressEvent(e); - EXPECT_EQ(findBar->m_closeButton->hasFocus(),false); - - QKeyEvent *e1 = new QKeyEvent(QEvent::KeyPress,Qt::Key_Escape,Qt::NoModifier); - findBar->keyPressEvent(e1); - - QKeyEvent *e2 = new QKeyEvent(QEvent::KeyPress,Qt::Key_Enter,Qt::NoModifier); - findBar->m_findPrevButton->setFocus(); - findBar->m_findNextButton->setFocus(); - EXPECT_EQ(findBar->m_findPrevButton->hasFocus(),false); - - findBar->keyPressEvent(e2); - - - - EXPECT_NE(findBar,nullptr); - - - findBar->deleteLater(); - delete e; e = nullptr; - delete e1; e1 = nullptr; - delete e2; e2 = nullptr; -} - -// void handleSwitchToReplace(); -TEST_F(test_findbar, handleSwitchToReplace) -{ - FindBar *findBar = new FindBar(); - bool signalReceived = false; - QObject::connect(findBar, &FindBar::sigSwitchToReplaceBar, [&]() { signalReceived = true; }); - - EXPECT_NO_FATAL_FAILURE(findBar->handleSwitchToReplace()); - EXPECT_EQ(signalReceived, true); - - findBar->deleteLater(); -} - -// QString getCurrentSearchText() const; -TEST_F(test_findbar, getCurrentSearchText) -{ - FindBar *findBar = new FindBar(); - EXPECT_EQ(findBar->getCurrentSearchText(), QString("")); - - findBar->m_editLine->lineEdit()->setText("searchkeyword"); - EXPECT_EQ(findBar->getCurrentSearchText(), QString("searchkeyword")); - - findBar->deleteLater(); -} - -//slotUpdateMatchCount 转发到内部 m_editLine -TEST_F(test_findbar, slotUpdateMatchCount_Forward) -{ - FindBar *findBar = new FindBar(); - findBar->show(); - qApp->processEvents(); - findBar->m_editLine->m_matchCountLabel->hide(); - - findBar->slotUpdateMatchCount(3, 7); - - EXPECT_EQ(findBar->m_editLine->m_matchCountLabel->text().toStdString(), "第3/7项"); - EXPECT_TRUE(findBar->m_editLine->m_matchCountLabel->isVisible()); - - findBar->deleteLater(); -} - -//slotUpdateMatchCount (0,0) 隐藏 -TEST_F(test_findbar, slotUpdateMatchCount_ZeroHide) -{ - FindBar *findBar = new FindBar(); - findBar->show(); - qApp->processEvents(); - findBar->slotUpdateMatchCount(3, 7); - - findBar->slotUpdateMatchCount(0, 0); - - EXPECT_FALSE(findBar->m_editLine->m_matchCountLabel->isVisible()); - - findBar->deleteLater(); -} diff --git a/tests/src/controls/ut_findbar.h b/tests/src/controls/ut_findbar.h deleted file mode 100644 index 7908ca957..000000000 --- a/tests/src/controls/ut_findbar.h +++ /dev/null @@ -1,16 +0,0 @@ -// SPDX-FileCopyrightText: 2019 - 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef TEST_FINDBAR_H -#define TEST_FINDBAR_H -#include "gtest/gtest.h" -#include - -class test_findbar : public QObject, public::testing::Test -{ -public: - test_findbar(); -}; - -#endif // TEST_FINDBAR_H diff --git a/tests/src/controls/ut_fontitemdelegata.cpp b/tests/src/controls/ut_fontitemdelegata.cpp deleted file mode 100644 index b477f8455..000000000 --- a/tests/src/controls/ut_fontitemdelegata.cpp +++ /dev/null @@ -1,54 +0,0 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "ut_fontitemdelegata.h" -#include "../src/controls/fontitemdelegate.h" -#include -test_fontitemdelegata::test_fontitemdelegata() -{ - -} - -TEST_F(test_fontitemdelegata, FontItemDelegate) -{ - FontItemDelegate* delegate = new FontItemDelegate(); - - EXPECT_NE(delegate,nullptr); - - delete delegate;delegate=nullptr; -} - - -TEST_F(test_fontitemdelegata, paint) -{ - FontItemDelegate* delegate = new FontItemDelegate(); - QPainter* painter = new QPainter; - QStyleOptionViewItem option; - QModelIndex index; - option.state |= QStyle::State_Selected; - delegate->paint(painter,option,index); - - EXPECT_NE(delegate,nullptr); - EXPECT_NE(painter->pen().color(),Qt::white); - - delete painter;painter=nullptr; - delete delegate;delegate= nullptr; - -} - -TEST_F(test_fontitemdelegata, sizeHint) -{ - FontItemDelegate* delegate = new FontItemDelegate(); - QPainter* painter = new QPainter; - QStyleOptionViewItem option; - QModelIndex index; - option.state |= QStyle::State_Selected; - - EXPECT_EQ(delegate->sizeHint(option,index),QSize(-1, 30)); - EXPECT_NE(delegate,nullptr); - - delete painter;painter=nullptr; - delete delegate;delegate=nullptr; - -} diff --git a/tests/src/controls/ut_fontitemdelegata.h b/tests/src/controls/ut_fontitemdelegata.h deleted file mode 100644 index 75bdb4dc2..000000000 --- a/tests/src/controls/ut_fontitemdelegata.h +++ /dev/null @@ -1,17 +0,0 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef TEST_FONTITEMDELEGATA_H -#define TEST_FONTITEMDELEGATA_H - - -#include "gtest/gtest.h" -#include - -class test_fontitemdelegata : public QObject, public::testing::Test -{ -public: - test_fontitemdelegata(); -}; -#endif // TEST_FONTITEMDELEGATA_H diff --git a/tests/src/controls/ut_jumplinebar.cpp b/tests/src/controls/ut_jumplinebar.cpp deleted file mode 100644 index 5179f29bf..000000000 --- a/tests/src/controls/ut_jumplinebar.cpp +++ /dev/null @@ -1,125 +0,0 @@ -// SPDX-FileCopyrightText: 2019-2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "ut_jumplinebar.h" -#include "../../src/controls/jumplinebar.h" - -test_jumplinebar::test_jumplinebar() -{ - -} - -TEST_F(test_jumplinebar, JumpLineBar) -{ - JumpLineBar jumpLineBar(nullptr); - -} - -//void focus(); -TEST_F(test_jumplinebar, focus) -{ - JumpLineBar *jumpLineBar = new JumpLineBar(); - jumpLineBar->focus(); - - EXPECT_NE(jumpLineBar,nullptr); - - delete jumpLineBar;jumpLineBar=nullptr; -} - -//bool isFocus(); -TEST_F(test_jumplinebar, isFocus) -{ - JumpLineBar *jumpLineBar = new JumpLineBar(); - jumpLineBar->isFocus(); - - EXPECT_NE(jumpLineBar,nullptr); - EXPECT_NE(jumpLineBar->isFocus(),true); - - delete jumpLineBar;jumpLineBar=nullptr; -} - -//void activeInput(QString file, int row, int column, int lineCount, int scrollOffset); -TEST_F(test_jumplinebar, activeInput) -{ - JumpLineBar *jumpLineBar = new JumpLineBar(); - jumpLineBar->m_pSpinBoxInput->lineEdit()->setText("50"); - jumpLineBar->activeInput("aa",1,1,1,1); - - EXPECT_EQ(jumpLineBar->m_pSpinBoxInput->lineEdit()->text(),"1"); - EXPECT_NE(jumpLineBar,nullptr); - - delete jumpLineBar;jumpLineBar=nullptr; -} - -//void handleFocusOut(); -TEST_F(test_jumplinebar, handleFocusOut) -{ - JumpLineBar *jumpLineBar = new JumpLineBar(); - jumpLineBar->handleFocusOut(); - - - EXPECT_NE(jumpLineBar,nullptr); - EXPECT_EQ(jumpLineBar->isVisible(),false); - - delete jumpLineBar;jumpLineBar=nullptr; -} - -//void handleLineChanged(); -TEST_F(test_jumplinebar, handleLineChanged) -{ - JumpLineBar *jumpLineBar = new JumpLineBar(); - jumpLineBar->m_pSpinBoxInput->lineEdit()->setText("123"); - jumpLineBar->handleLineChanged(); - - EXPECT_NE(jumpLineBar,nullptr); - - - delete jumpLineBar;jumpLineBar=nullptr; -} - -//void jumpCancel(); -TEST_F(test_jumplinebar, jumpCancel) -{ - JumpLineBar *jumpLineBar = new JumpLineBar(); - jumpLineBar->jumpCancel(); - - EXPECT_NE(jumpLineBar,nullptr); - EXPECT_EQ(jumpLineBar->isVisible(),false); - - delete jumpLineBar;jumpLineBar=nullptr; -} - -//void jumpConfirm(); -TEST_F(test_jumplinebar, jumpConfirm) -{ - JumpLineBar *jumpLineBar = new JumpLineBar(); - jumpLineBar->jumpConfirm(); - jumpLineBar->m_pSpinBoxInput->lineEdit()->setText("123"); - - EXPECT_NE(jumpLineBar,nullptr); - - delete jumpLineBar;jumpLineBar=nullptr; -} - -//void slotFocusChanged(bool bFocus); -TEST_F(test_jumplinebar, slotFocusChanged) -{ - JumpLineBar *jumpLineBar = new JumpLineBar(); - jumpLineBar->slotFocusChanged(false); - - EXPECT_NE(jumpLineBar,nullptr); - - delete jumpLineBar;jumpLineBar=nullptr; -} - -//int getLineCount(); -TEST_F(test_jumplinebar, getLineCount) -{ - JumpLineBar *jumpLineBar = new JumpLineBar(); - // activeInput stores the line count internally - jumpLineBar->activeInput("aa", 1, 1, 100, 1); - EXPECT_EQ(jumpLineBar->getLineCount(), 100); - - delete jumpLineBar;jumpLineBar=nullptr; -} diff --git a/tests/src/controls/ut_jumplinebar.h b/tests/src/controls/ut_jumplinebar.h deleted file mode 100644 index c33554993..000000000 --- a/tests/src/controls/ut_jumplinebar.h +++ /dev/null @@ -1,16 +0,0 @@ -// SPDX-FileCopyrightText: 2019 - 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef TEST_JUMPLINEBAR_H -#define TEST_JUMPLINEBAR_H -#include "gtest/gtest.h" -#include - -class test_jumplinebar : public QObject, public::testing::Test -{ -public: - test_jumplinebar(); -}; - -#endif // TEST_JUMPLINEBAR_H diff --git a/tests/src/controls/ut_linebar.cpp b/tests/src/controls/ut_linebar.cpp deleted file mode 100644 index def8fd3de..000000000 --- a/tests/src/controls/ut_linebar.cpp +++ /dev/null @@ -1,244 +0,0 @@ -// SPDX-FileCopyrightText: 2019-2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "ut_linebar.h" -#include "../../src/controls/linebar.h" -#include -#include -#include -#include -DGUI_USE_NAMESPACE -DGUI_USE_NAMESPACE -DGUI_USE_NAMESPACE - -test_linebar::test_linebar() -{ - -} - -TEST_F(test_linebar, LineBar) -{ - LineBar lineBar(nullptr); - -} - -//public slots: -// void handleTextChangeTimer(); -TEST_F(test_linebar, handleTextChangeTimer) -{ - LineBar *lineBar = new LineBar(); - lineBar->handleTextChangeTimer(); - - - EXPECT_NE(lineBar,nullptr); - - lineBar->deleteLater(); - -} - -// void handleTextChanged(); -TEST_F(test_linebar, handleTextChanged) -{ - LineBar *lineBar = new LineBar(); - lineBar->m_autoSaveTimer->start(); - - lineBar->handleTextChanged(); - - lineBar->m_autoSaveTimer->stop(); - - EXPECT_EQ(lineBar->m_autoSaveTimer->isActive(),false); - EXPECT_NE(lineBar,nullptr); - - lineBar->deleteLater(); -} - -// void sendText(QString t); -TEST_F(test_linebar, sendText) -{ - LineBar *lineBar = new LineBar(); - lineBar->sendText("aa"); - - EXPECT_NE(lineBar,nullptr); - - lineBar->deleteLater(); -} - -//protected: -// virtual void focusOutEvent(QFocusEvent *e); -TEST_F(test_linebar, focusOutEvent) -{ - LineBar *lineBar = new LineBar(); - QFocusEvent *e = new QFocusEvent(QEvent::FocusIn); - lineBar->focusOutEvent(e); - - - EXPECT_NE(lineBar,nullptr); - - lineBar->deleteLater(); - delete e;e=nullptr; - -} - -// virtual void keyPressEvent(QKeyEvent *e); -TEST_F(test_linebar, keyPressEvent) -{ - LineBar *lineBar = new LineBar(); - Qt::KeyboardModifier modefiers[4] = {Qt::ControlModifier,Qt::AltModifier,Qt::MetaModifier,Qt::NoModifier}; - - EXPECT_NE(lineBar,nullptr); - - QKeyEvent *e = new QKeyEvent(QEvent::KeyPress,1,modefiers[0],"\r"); - lineBar->keyPressEvent(e); - delete e;e=nullptr; - - - e = new QKeyEvent(QEvent::KeyPress,1,modefiers[1],"\r"); - lineBar->keyPressEvent(e); - delete e;e=nullptr; - - e = new QKeyEvent(QEvent::KeyPress,1,modefiers[2],"\r"); - lineBar->keyPressEvent(e); - delete e;e=nullptr; - - e = new QKeyEvent(QEvent::KeyPress,1,modefiers[3],"\r"); - lineBar->keyPressEvent(e); - delete e;e=nullptr; - - - lineBar->deleteLater(); -} - -// Constructor lambda connected to DGuiApplicationHelper::sizeModeChanged -TEST_F(test_linebar, ConstructorSizeModeLambda) -{ - LineBar *lineBar = new LineBar(); - auto helper = DGuiApplicationHelper::instance(); - auto origMode = helper->sizeMode(); - - EXPECT_NO_FATAL_FAILURE(helper->setSizeMode(origMode == DGuiApplicationHelper::NormalMode - ? DGuiApplicationHelper::CompactMode - : DGuiApplicationHelper::NormalMode)); - helper->setSizeMode(origMode); // restore - - EXPECT_NE(lineBar, nullptr); - lineBar->deleteLater(); -} - -//setMatchCount 显示文本和可见性 -TEST_F(test_linebar, setMatchCount_Display) -{ - LineBar *lineBar = new LineBar(); - lineBar->show(); - qApp->processEvents(); - - lineBar->setMatchCount(5, 10); - - EXPECT_EQ(lineBar->m_matchCountLabel->text().toStdString(), "第5/10项"); - EXPECT_TRUE(lineBar->m_matchCountLabel->isVisible()); - - lineBar->deleteLater(); -} - -//setMatchCount total==0 隐藏 -TEST_F(test_linebar, setMatchCount_HideOnZero) -{ - LineBar *lineBar = new LineBar(); - lineBar->show(); - qApp->processEvents(); - lineBar->setMatchCount(5, 10); - - lineBar->setMatchCount(0, 0); - - EXPECT_FALSE(lineBar->m_matchCountLabel->isVisible()); - - lineBar->deleteLater(); -} - -//setMatchCount 0/N 场景 -TEST_F(test_linebar, setMatchCount_ZeroCurrent) -{ - LineBar *lineBar = new LineBar(); - lineBar->show(); - qApp->processEvents(); - - lineBar->setMatchCount(0, 5); - - EXPECT_EQ(lineBar->m_matchCountLabel->text().toStdString(), "第0/5项"); - EXPECT_TRUE(lineBar->m_matchCountLabel->isVisible()); - - lineBar->deleteLater(); -} - -//m_matchCountLabel 已无 stylesheet hack,验证不再包含 padding-left -TEST_F(test_linebar, m_matchCountLabel_NoStyleSheetHack) -{ - LineBar *lineBar = new LineBar(); - - EXPECT_FALSE(lineBar->m_matchCountLabel->styleSheet().contains("padding-left")); - - lineBar->deleteLater(); -} - -//自绘清除按钮:有文本时显示,无文本时隐藏 -TEST_F(test_linebar, clearButton_VisibilityWithText) -{ - LineBar *lineBar = new LineBar(); - lineBar->show(); - qApp->processEvents(); - - // 初始无文本,清除按钮应隐藏 - lineBar->handleTextChanged(""); - EXPECT_FALSE(lineBar->m_clearButton->isVisible()); - - // 有文本时清除按钮应显示 - lineBar->handleTextChanged("hello"); - EXPECT_TRUE(lineBar->m_clearButton->isVisible()); - - // 清空文本后清除按钮应再次隐藏 - lineBar->handleTextChanged(""); - EXPECT_FALSE(lineBar->m_clearButton->isVisible()); - - lineBar->deleteLater(); -} - -//setMatchCount label 文本与可见性(含 0/N 场景) -TEST_F(test_linebar, setMatchCount_LabelTextAndVisibility) -{ - LineBar *lineBar = new LineBar(); - lineBar->show(); - qApp->processEvents(); - - // 正常计数 - lineBar->setMatchCount(3, 10); - EXPECT_EQ(lineBar->m_matchCountLabel->text().toStdString(), "第3/10项"); - EXPECT_TRUE(lineBar->m_matchCountLabel->isVisible()); - - // 0/N 场景 - lineBar->setMatchCount(0, 5); - EXPECT_EQ(lineBar->m_matchCountLabel->text().toStdString(), "第0/5项"); - EXPECT_TRUE(lineBar->m_matchCountLabel->isVisible()); - - // total==0 隐藏 - lineBar->setMatchCount(0, 0); - EXPECT_FALSE(lineBar->m_matchCountLabel->isVisible()); - - lineBar->deleteLater(); -} - -// Constructor lambda #1: m_clearButton clicked -> lineEdit()->clear() -TEST_F(test_linebar, ClearButtonClickedLambda) -{ - LineBar *lineBar = new LineBar(); - - // Put text in the line edit - lineBar->setText("hello"); - - // Click the clear button to fire the constructor lambda directly - // (no processEvents needed - click() is synchronous DirectConnection) - lineBar->m_clearButton->click(); - - EXPECT_TRUE(lineBar->lineEdit()->text().isEmpty()); - - lineBar->deleteLater(); -} diff --git a/tests/src/controls/ut_linebar.h b/tests/src/controls/ut_linebar.h deleted file mode 100644 index be23e31c8..000000000 --- a/tests/src/controls/ut_linebar.h +++ /dev/null @@ -1,16 +0,0 @@ -// SPDX-FileCopyrightText: 2019 - 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef TEST_LINEBAR_H -#define TEST_LINEBAR_H -#include "gtest/gtest.h" -#include - -class test_linebar : public QObject, public::testing::Test -{ -public: - test_linebar(); -}; - -#endif // TEST_LINEBAR_H diff --git a/tests/src/controls/ut_replacebar.cpp b/tests/src/controls/ut_replacebar.cpp deleted file mode 100644 index c979442e0..000000000 --- a/tests/src/controls/ut_replacebar.cpp +++ /dev/null @@ -1,235 +0,0 @@ -// SPDX-FileCopyrightText: 2022-2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "ut_replacebar.h" -#include -#include -test_replacebar::test_replacebar() -{ - -} -//bool isFocus(); -TEST_F(test_replacebar, isFocus) -{ - ReplaceBar * rep = new ReplaceBar(); - EXPECT_EQ(rep->isFocus(),false); - rep->handleSkip(); - - EXPECT_NE(rep,nullptr); - rep->deleteLater(); -} -//void focus(); -TEST_F(test_replacebar, focus) -{ - ReplaceBar * rep = new ReplaceBar(); - EXPECT_EQ(rep->isFocus(),false); - rep->focus(); - - EXPECT_NE(rep,nullptr); - rep->deleteLater(); - - -} - -//void activeInput(QString text, QString file, int row, int column, int scrollOffset); -TEST_F(test_replacebar, activeInput) -{ - ReplaceBar * rep = new ReplaceBar(); - rep->activeInput("aa","bb",2,2,2); - EXPECT_EQ(rep->isVisible(),true); - - EXPECT_NE(rep,nullptr); - rep->deleteLater(); - - -} -//void setMismatchAlert(bool isAlert); -TEST_F(test_replacebar, setMismatchAlert) -{ - ReplaceBar * rep = new ReplaceBar(); - rep->setMismatchAlert(true); - EXPECT_EQ(rep->m_replaceLine->isAlert(),true); - - EXPECT_NE(rep,nullptr); - rep->deleteLater(); - - -} -//void setsearched(bool _); -TEST_F(test_replacebar, setsearched) -{ - ReplaceBar * rep = new ReplaceBar(); - rep->setsearched(true); - EXPECT_EQ(rep->searched,true); - - EXPECT_NE(rep,nullptr); - rep->deleteLater(); - - -} -// void change(); -TEST_F(test_replacebar, change) -{ - ReplaceBar * rep = new ReplaceBar(); - rep->change(); - EXPECT_EQ(rep->searched,false); - - - EXPECT_NE(rep,nullptr); - rep->deleteLater(); - - -} -//void replaceClose(); -TEST_F(test_replacebar, replaceClose) -{ - ReplaceBar * rep = new ReplaceBar(); - rep->replaceClose(); - EXPECT_EQ(rep->isVisible(),false); - - EXPECT_NE(rep,nullptr); - rep->deleteLater(); - - -} -//void handleContentChanged(); -TEST_F(test_replacebar, handleContentChanged) -{ - ReplaceBar * rep = new ReplaceBar(); - rep->handleContentChanged(); - - EXPECT_NE(rep,nullptr); - rep->deleteLater(); - - -} -//void handleReplaceAll(); -TEST_F(test_replacebar, handleReplaceAll) -{ - ReplaceBar * rep = new ReplaceBar(); - rep->handleReplaceAll(); - - EXPECT_NE(rep,nullptr); - rep->deleteLater(); - - -} -//void handleReplaceNext(); -TEST_F(test_replacebar, handleReplaceNext) -{ - ReplaceBar * rep = new ReplaceBar(); - rep->handleReplaceNext(); - EXPECT_EQ(rep->searched,true); - - EXPECT_NE(rep,nullptr); - rep->deleteLater(); - - -} -//void handleReplaceRest(); -TEST_F(test_replacebar, handleReplaceRest) -{ - ReplaceBar * rep = new ReplaceBar(); - rep->handleReplaceRest(); - - EXPECT_NE(rep,nullptr); - rep->deleteLater(); - - -} - -//protected: -//void hideEvent(QHideEvent *event); -TEST_F(test_replacebar, hideEvent) -{ - ReplaceBar * rep = new ReplaceBar(); - QHideEvent*e; - rep->hideEvent(e); - EXPECT_EQ(rep->searched,false); - - EXPECT_NE(rep,nullptr); - rep->deleteLater(); - - -} -//bool focusNextPrevChild(bool next); -//void keyPressEvent(QKeyEvent *e); - -TEST_F(test_replacebar, focusNextPrevChild) -{ - ReplaceBar * rep = new ReplaceBar(); - EXPECT_NE(rep->focusNextPrevChild(true),true); - - EXPECT_NE(rep,nullptr); - rep->deleteLater(); - - -} - -TEST_F(test_replacebar, keyPressEvent) -{ - ReplaceBar * rep = new ReplaceBar(); - QKeyEvent * e3 = new QKeyEvent(QEvent::KeyPress,Qt::Key_Excel,Qt::NoModifier); - rep->keyPressEvent(e3); - delete e3;e3=nullptr; - - QKeyEvent *e = new QKeyEvent(QEvent::KeyPress,Qt::Key_Tab,Qt::NoModifier); - rep->m_closeButton->setFocus(); - rep->keyPressEvent(e); - delete e;e=nullptr; - - QKeyEvent *e1 = new QKeyEvent(QEvent::KeyPress,Qt::Key_Escape,Qt::NoModifier); - rep->keyPressEvent(e1); - EXPECT_EQ(rep->m_replaceLine->lineEdit()->hasFocus(),false); - delete e1;e1=nullptr; - - QKeyEvent *e2 = new QKeyEvent(QEvent::KeyPress,Qt::Key_Enter,Qt::NoModifier); - rep->m_replaceSkipButton->setFocus(); - rep->m_replaceButton->setFocus(); - rep->m_replaceAllButton->setFocus(); - rep->m_replaceRestButton->setFocus(); - rep->keyPressEvent(e2); - - EXPECT_EQ(rep->m_replaceRestButton->hasFocus(),false); - delete e2; e2=nullptr; - - - EXPECT_NE(rep,nullptr); - rep->deleteLater(); - - -} - -//slotUpdateMatchCount 只更新 m_replaceLine,不更新 m_withLine -TEST_F(test_replacebar, slotUpdateMatchCount_OnlyReplaceLine) -{ - ReplaceBar *replaceBar = new ReplaceBar(); - replaceBar->show(); - qApp->processEvents(); - replaceBar->m_replaceLine->m_matchCountLabel->hide(); - replaceBar->m_withLine->m_matchCountLabel->hide(); - - replaceBar->slotUpdateMatchCount(5, 10); - - EXPECT_EQ(replaceBar->m_replaceLine->m_matchCountLabel->text().toStdString(), "第5/10项"); - EXPECT_TRUE(replaceBar->m_replaceLine->m_matchCountLabel->isVisible()); - EXPECT_FALSE(replaceBar->m_withLine->m_matchCountLabel->isVisible()); - - replaceBar->deleteLater(); -} - -//slotUpdateMatchCount (0,0) 隐藏 m_replaceLine -TEST_F(test_replacebar, slotUpdateMatchCount_ZeroHide) -{ - ReplaceBar *replaceBar = new ReplaceBar(); - replaceBar->show(); - qApp->processEvents(); - replaceBar->slotUpdateMatchCount(5, 10); - - replaceBar->slotUpdateMatchCount(0, 0); - - EXPECT_FALSE(replaceBar->m_replaceLine->m_matchCountLabel->isVisible()); - - replaceBar->deleteLater(); -} diff --git a/tests/src/controls/ut_replacebar.h b/tests/src/controls/ut_replacebar.h deleted file mode 100644 index e398e6a23..000000000 --- a/tests/src/controls/ut_replacebar.h +++ /dev/null @@ -1,22 +0,0 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef TES_REPLACEBAR_H -#define TES_REPLACEBAR_H -#include "gtest/gtest.h" -#include -#include "../../src/editor/editwrapper.h" -#include "../../src/widgets/window.h" -#include "../../src/startmanager.h" -#include "../../src/editor/dtextedit.h" -#include "../../src/controls/replacebar.h" -#include - -class test_replacebar: public QObject, public::testing::Test -{ -public: - test_replacebar(); -}; - -#endif // TES_REPLACEBAR_H diff --git a/tests/src/controls/ut_settingsdialog.cpp b/tests/src/controls/ut_settingsdialog.cpp deleted file mode 100644 index 351a01145..000000000 --- a/tests/src/controls/ut_settingsdialog.cpp +++ /dev/null @@ -1,19 +0,0 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "ut_settingsdialog.h" - -test_settingsdialog::test_settingsdialog() -{ - -} - - -extern void GenerateSettingTranslate(); -TEST_F(test_settingsdialog, GenerateSettingTranslate) -{ - - GenerateSettingTranslate(); - -} diff --git a/tests/src/controls/ut_settingsdialog.h b/tests/src/controls/ut_settingsdialog.h deleted file mode 100644 index bc323fa85..000000000 --- a/tests/src/controls/ut_settingsdialog.h +++ /dev/null @@ -1,18 +0,0 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef TEST_SETTINGSDIALOG_H -#define TEST_SETTINGSDIALOG_H - -#include "gtest/gtest.h" -#include - - -class test_settingsdialog: public QObject, public::testing::Test -{ -public: - test_settingsdialog(); -}; - -#endif // TEST_SETTINGSDIALOG_H diff --git a/tests/src/controls/ut_tabbar.cpp b/tests/src/controls/ut_tabbar.cpp deleted file mode 100644 index fcbf6ca1e..000000000 --- a/tests/src/controls/ut_tabbar.cpp +++ /dev/null @@ -1,816 +0,0 @@ -// SPDX-FileCopyrightText: 2022-2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "ut_tabbar.h" -#include "QStyleOptionTab" -#include "../src/widgets/window.h" -#include "../src/editor/editwrapper.h" -#include -#include -#include -#include -DGUI_USE_NAMESPACE -#include "src/stub.h" - - -namespace tabbarstub { - -int retintstub() -{ - return 1; -} - -} - -using namespace tabbarstub; - -UT_Tabbar::UT_Tabbar() -{ - -} - -TEST(UT_Tabbar_Tabbar, UT_Tabbar_Tabbar) -{ - Tabbar* tab = new Tabbar; - tab->m_moreWaysCloseMenu = new QMenu(tab); - tab->m_rightMenu = new QMenu(tab); - - EXPECT_NE(tab,nullptr); - EXPECT_NE(tab->m_moreWaysCloseMenu,nullptr); - EXPECT_NE(tab->m_rightMenu,nullptr); - - tab->deleteLater(); - - -} - -//addTabWithIndex -//closeTab -TEST(UT_Tabbar_closeTab, UT_Tabbar_closeTab) -{ - int index = 0; - QStyleOptionTab option; - QPoint p; - - Window * window = new Window; - window->addTab("/.cache/deepin/deepin-editor",true); - EditWrapper* wrapper = new EditWrapper(window); - window->getTabbar()->closeTab(index); - window->getTabbar()->closeTab(-1); - - - EXPECT_EQ(window->getTabbar()->count(),0); - EXPECT_NE(window->getTabbar(),nullptr); - EXPECT_NE(window,nullptr); - EXPECT_NE(wrapper,nullptr); - - window->deleteLater(); - wrapper->deleteLater(); - -} -//void closeCurrentTab(); -TEST(UT_Tabbar_closeCurrentTab, UT_Tabbar_closeCurrentTab) -{ - Tabbar * tab = new Tabbar(); - tab->closeCurrentTab(); - - EXPECT_EQ(tab->count(),0); - EXPECT_NE(tab,nullptr); - - tab->deleteLater(); - -} -//void closeOtherTabs(); -TEST(UT_Tabbar_closeOtherTabs, UT_Tabbar_closeOtherTabs) -{ - Tabbar * tab = new Tabbar(); - tab->closeOtherTabs(); - - EXPECT_EQ(tab->count(),0); - EXPECT_NE(tab,nullptr); - - - tab->deleteLater(); - -} - -//void closeLeftTabs(const QString &filePath); -TEST(UT_Tabbar_closeLeftTabs, UT_Tabbar_closeLeftTabs) -{ - Tabbar * tab = new Tabbar(); - tab->m_tabPaths.push_back("aa"); - tab->closeLeftTabs("aa"); - tab->closeLeftTabs("bb"); - - - EXPECT_EQ(tab->count(),0); - EXPECT_NE(tab,nullptr); - - tab->deleteLater(); - -} -//void closeRightTabs(const QString &filePath); -TEST(UT_Tabbar_closeRightTabs, UT_Tabbar_closeRightTabs) -{ - Tabbar * tab = new Tabbar(); - tab->m_tabPaths.push_back("aa"); - tab->closeRightTabs("aa"); - tab->closeLeftTabs("bb"); - - EXPECT_EQ(tab->count(),0); - EXPECT_NE(tab,nullptr); - - tab->deleteLater(); - -} - -//void closeOtherTabsExceptFile(const QString &filePath); -TEST(UT_Tabbar_closeOtherTabsExceptFile, UT_Tabbar_closeOtherTabsExceptFile) -{ - Tabbar * tab = new Tabbar(); - tab->m_tabPaths.push_back("bb"); - tab->closeOtherTabsExceptFile("aa"); - - EXPECT_EQ(tab->count(),0); - EXPECT_NE(tab,nullptr); - - tab->deleteLater(); - -} - -//void updateTab(int index, const QString &filePath, const QString &tabName); -//void previousTab(); -//void nextTab(); -TEST(UT_Tabbar_nextTab, UT_Tabbar_nextTab) -{ - Tabbar * tab = new Tabbar(); - tab->addTab("/.cache/deepin/deepin-editor","aa"); - EXPECT_EQ(tab->m_tabPaths.contains("/.cache/deepin/deepin-editor"),true); - - tab->nextTab(); - - EXPECT_NE(tab,nullptr); - - tab->deleteLater(); - -} - -//int indexOf(const QString &filePath); -TEST(UT_Tabbar_indexOf, UT_Tabbar_indexOf) -{ - Tabbar * tab = new Tabbar(); - tab->addTab("/.cache/deepin/deepin-editor","aa"); - EXPECT_EQ(tab->m_tabPaths.contains("/.cache/deepin/deepin-editor"),true); - EXPECT_NE(tab->indexOf("/.cache/deepin/deepin-editor"),2); - - EXPECT_NE(tab,nullptr); - - tab->deleteLater(); - -} - -//QString currentName() const; -TEST(UT_Tabbar_currentName, UT_Tabbar_currentName) -{ - Tabbar * tab = new Tabbar(); - tab->addTab("/.cache/deepin/deepin-editor","aa"); - EXPECT_EQ(tab->m_tabPaths.contains("/.cache/deepin/deepin-editor"),true); - - EXPECT_NE(tab->currentName(),""); - - EXPECT_NE(tab,nullptr); - - tab->deleteLater(); - -} -//QString currentPath() const; -TEST(UT_Tabbar_currentPath, UT_Tabbar_currentPath) -{ - Tabbar * tab = new Tabbar(); - tab->addTab("/.cache/deepin/deepin-editor","aa"); - EXPECT_EQ(tab->m_tabPaths.contains("/.cache/deepin/deepin-editor"),true); - - EXPECT_NE(tab->currentPath(),""); - - EXPECT_NE(tab,nullptr); - - tab->deleteLater(); - -} -//QString fileAt(int index) const; -TEST(UT_Tabbar_fileAt, UT_Tabbar_fileAt) -{ - Tabbar * tab = new Tabbar(); - tab->addTab("/.cache/deepin/deepin-editor","aa"); - EXPECT_EQ(tab->m_tabPaths.contains("/.cache/deepin/deepin-editor"),true); - - EXPECT_NE(tab->fileAt(0),""); - EXPECT_NE(tab,nullptr); - - tab->deleteLater(); - -} -//QString textAt(int index) const; -TEST(UT_Tabbar_textAt, UT_Tabbar_textAt) -{ - Tabbar * tab = new Tabbar(); - tab->addTab("/.cache/deepin/deepin-editor","aa"); - EXPECT_EQ(tab->m_tabPaths.contains("/.cache/deepin/deepin-editor"),true); - EXPECT_NE(tab->textAt(0),""); - - EXPECT_NE(tab,nullptr); - - tab->deleteLater(); - -} - -//void setTabPalette(const QString &activeColor, const QString &inactiveColor); -TEST(UT_Tabbar_setTabPalette, UT_Tabbar_setTabPalette) -{ - Tabbar * tab = new Tabbar(); - tab->addTab("/.cache/deepin/deepin-editor","aa"); - EXPECT_EQ(tab->m_tabPaths.contains("/.cache/deepin/deepin-editor"),true); - tab->setTabPalette("red","red"); - - EXPECT_NE(tab,nullptr); - - tab->deleteLater(); - -} -//void setBackground(const QString &startColor, const QString &endColor); -TEST(UT_Tabbar_setBackground, UT_Tabbar_setBackground) -{ - Tabbar * tab = new Tabbar(); - tab->addTab("/.cache/deepin/deepin-editor","aa"); - EXPECT_EQ(tab->m_tabPaths.contains("/.cache/deepin/deepin-editor"),true); - - tab->setBackground("red","red"); - - EXPECT_EQ(tab->m_backgroundStartColor,"red"); - - tab->deleteLater(); - -} -//void setDNDColor(const QString &startColor, const QString &endColor); -TEST(UT_Tabbar_setDNDColor, UT_Tabbar_setDNDColor) -{ - Tabbar * tab = new Tabbar(); - tab->addTab("/.cache/deepin/deepin-editor","aa"); - EXPECT_EQ(tab->m_tabPaths.contains("/.cache/deepin/deepin-editor"),true); - - tab->setDNDColor("red","red"); - - EXPECT_EQ(tab->m_dndStartColor,"red"); - EXPECT_NE(tab,nullptr); - - tab->deleteLater(); - -} -//bool canInsertFromMimeData(int index, const QMimeData *source) const; -//bool eventFilter(QObject *, QEvent *event); -//QSize minimumTabSizeHint(int index) const; -TEST(UT_Tabbar_minimumTabSizeHint, UT_Tabbar_minimumTabSizeHint) -{ - Tabbar * tab = new Tabbar(); - tab->addTab("/.cache/deepin/deepin-editor","aa"); - EXPECT_EQ(tab->m_tabPaths.contains("/.cache/deepin/deepin-editor"),true); - - EXPECT_EQ(tab->minimumTabSizeHint(0),QSize(110, 40)); - - - EXPECT_NE(tab,nullptr); - - tab->deleteLater(); - - -} -//QSize maximumTabSizeHint(int index) const; -TEST(UT_Tabbar_maximumTabSizeHint, UT_Tabbar_maximumTabSizeHint) -{ - Tabbar * tab = new Tabbar(); - tab->addTab("/.cache/deepin/deepin-editor","aa"); - - EXPECT_EQ(tab->maximumTabSizeHint(0),QSize(160, 40)); - - EXPECT_NE(tab,nullptr); - - tab->deleteLater(); - -} - -TEST(UT_Tabbar_createDragPixmapFromTab, UT_Tabbar_createDragPixmapFromTab) -{ - int index = 0; - QStyleOptionTab option; - QPoint p; - - Window * window = new Window; - window->addTab("/.cache/deepin/deepin-editor",true); - EXPECT_EQ(window->m_tabbar->m_tabPaths.contains("/.cache/deepin/deepin-editor"),true); - - EditWrapper* wrapper = new EditWrapper(window); - window->getTabbar()->createDragPixmapFromTab(index,option,&p); - - - EXPECT_NE(window,nullptr); - EXPECT_NE(wrapper,nullptr); - - window->deleteLater(); - wrapper->deleteLater(); - - -} - - -TEST(UT_Tabbar_createMimeDataFromTab, UT_Tabbar_createMimeDataFromTab) -{ - int index = 0; - QStyleOptionTab option; - QPoint p; - - Window * window = new Window; - window->addTab("/.cache/deepin/deepin-editor",true); - EXPECT_EQ(window->m_tabbar->m_tabPaths.contains("/.cache/deepin/deepin-editor"),true); - - EditWrapper* wrapper = new EditWrapper(window); - window->getTabbar()->createMimeDataFromTab(index,option); - - - - EXPECT_NE(window,nullptr); - EXPECT_NE(wrapper,nullptr); - - - window->deleteLater(); - wrapper->deleteLater(); - - -} - -TEST(UT_Tabbar_insertFromMimeDataOnDragEnter, UT_Tabbar_insertFromMimeDataOnDragEnter) -{ - int index = 0; - QStyleOptionTab option; - QPoint p; - QMimeData *mimeData = new QMimeData; - mimeData->setData("dedit/tabbar","test"); - - Window * window = new Window; - window->addTab("/.cache/deepin/deepin-editor",true); - EXPECT_EQ(window->m_tabbar->m_tabPaths.contains("/.cache/deepin/deepin-editor"),true); - - EditWrapper* wrapper = new EditWrapper(window); - window->getTabbar()->insertFromMimeDataOnDragEnter(index,mimeData); - EXPECT_EQ(wrapper->getFileLoading(),false); - - EXPECT_NE(window,nullptr); - EXPECT_NE(wrapper,nullptr); - EXPECT_NE(mimeData,nullptr); - - delete mimeData;mimeData = nullptr; - window->deleteLater(); - wrapper->deleteLater(); - - -} - -TEST(UT_Tabbar_insertFromMimeData, UT_Tabbar_insertFromMimeData) -{ - int index = 0; - QStyleOptionTab option; - QPoint p; - QMimeData *mimeData = new QMimeData; - mimeData->setData("dedit/tabbar","test"); - - Window * window = new Window; - window->addTab("/.cache/deepin/deepin-editor",true); - EXPECT_EQ(window->m_tabbar->m_tabPaths.contains("/.cache/deepin/deepin-editor"),true); - - EditWrapper* wrapper = new EditWrapper(window); - window->getTabbar()->insertFromMimeData(index,mimeData); - EXPECT_NE(window->getTabbar()->count(),0); - - - - EXPECT_NE(window,nullptr); - EXPECT_NE(wrapper,nullptr); - EXPECT_NE(mimeData,nullptr); - - delete mimeData;mimeData = nullptr; - window->deleteLater(); - wrapper->deleteLater(); - - -} - - -TEST(UT_Tabbar_canInsertFromMimeData, UT_Tabbar_canInsertFromMimeData) -{ - int index = 0; - QStyleOptionTab option; - QPoint p; - QMimeData *mimeData = new QMimeData; - mimeData->setData("dedit/tabbar","test"); - - Window * window = new Window; - window->addTab("/.cache/deepin/deepin-editor",true); - EXPECT_EQ(window->m_tabbar->m_tabPaths.contains("/.cache/deepin/deepin-editor"),true); - - EditWrapper* wrapper = new EditWrapper(window); - EXPECT_EQ(window->getTabbar()->canInsertFromMimeData(index,mimeData),true); - - - - EXPECT_NE(window,nullptr); - EXPECT_NE(wrapper,nullptr); - EXPECT_NE(mimeData,nullptr); - - - delete mimeData;mimeData = nullptr; - window->deleteLater(); - wrapper->deleteLater(); - - -} - - -TEST(UT_Tabbar_handleDragActionChanged, UT_Tabbar_handleDragActionChanged) -{ - int index = 0; - QStyleOptionTab option; - QPoint p; - Qt::DropAction actions[2] = {Qt::IgnoreAction,Qt::MoveAction}; - - Window * window = new Window; - window->addTab("/.cache/deepin/deepin-editor",true); - EXPECT_EQ(window->m_tabbar->m_tabPaths.contains("/.cache/deepin/deepin-editor"),true); - - EditWrapper* wrapper = new EditWrapper(window); - window->getTabbar()->handleDragActionChanged(actions[0]); - window->getTabbar()->handleDragActionChanged(actions[1]); - - - EXPECT_NE(window,nullptr); - EXPECT_NE(wrapper,nullptr); - - window->deleteLater(); - wrapper->deleteLater(); - - -} - -TEST(UT_Tabbar_mousePressEvent, UT_Tabbar_mousePressEvent) -{ - int index = 0; - QStyleOptionTab option; - QPoint p; -#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) - QMouseEvent* event = new QMouseEvent(QEvent::None, QPoint(), Qt::MidButton, Qt::MidButton, Qt::NoModifier); -#else - QMouseEvent* event = new QMouseEvent(QEvent::None, QPoint(), QPoint(), Qt::MiddleButton, Qt::MiddleButton, Qt::NoModifier); -#endif - - - Window * window = new Window; - window->addTab("/.cache/deepin/deepin-editor",true); - EXPECT_EQ(window->m_tabbar->m_tabPaths.contains("/.cache/deepin/deepin-editor"),true); - - EditWrapper* wrapper = new EditWrapper(window); - window->getTabbar()->mousePressEvent(event); - - - EXPECT_NE(window,nullptr); - EXPECT_NE(wrapper,nullptr); - - delete event;event = nullptr; - window->deleteLater(); - wrapper->deleteLater(); - - -} - -TEST(UT_Tabbar_dropEvent, UT_Tabbar_dropEvent) -{ - int index = 0; - QStyleOptionTab option; - QPoint p; - QMimeData *mimeData = new QMimeData; - mimeData->setData("dedit/tabbar","test"); - QDropEvent* event = new QDropEvent(QPointF(100,100),Qt::CopyAction,mimeData,Qt::LeftButton,Qt::NoModifier, QEvent::Drop); - - - Window * window = new Window; - window->addTab("/.cache/deepin/deepin-editor",true); - EXPECT_EQ(window->m_tabbar->m_tabPaths.contains("/.cache/deepin/deepin-editor"),true); - - EditWrapper* wrapper = new EditWrapper(window); - window->getTabbar()->dropEvent(event); - - - EXPECT_NE(window,nullptr); - EXPECT_NE(wrapper,nullptr); - EXPECT_NE(event,nullptr); - EXPECT_NE(mimeData,nullptr); - - delete mimeData;mimeData = nullptr; - delete event;event = nullptr; - window->deleteLater(); - wrapper->deleteLater(); - - - -} - -TEST(UT_Tabbar_tabSizeHint, UT_Tabbar_tabSizeHint) -{ - int index = 0; - QStyleOptionTab option; - QPoint p; - - Window * window = new Window; - window->addTab("/.cache/deepin/deepin-editor",true); - EXPECT_EQ(window->m_tabbar->m_tabPaths.contains("/.cache/deepin/deepin-editor"),true); - - EditWrapper* wrapper = new EditWrapper(window); - EXPECT_NE(window->getTabbar()->tabSizeHint(index),QSize(1,1)); - - - - - EXPECT_NE(window,nullptr); - EXPECT_NE(wrapper,nullptr); - - window->deleteLater(); - wrapper->deleteLater(); - - -} - -TEST(UT_Tabbar_handleTabMoved, UT_Tabbar_handleTabMoved) -{ - int index = 0; - QStyleOptionTab option; - QPoint p; - - Window * window = new Window; - window->addTab("/.cache/deepin/deepin-editor",true); - EXPECT_EQ(window->m_tabbar->m_tabPaths.contains("/.cache/deepin/deepin-editor"),true); - - EditWrapper* wrapper = new EditWrapper(window); - window->getTabbar()->handleTabMoved(index,index); - - EXPECT_NE(window,nullptr); - EXPECT_NE(wrapper,nullptr); - - window->deleteLater(); - wrapper->deleteLater(); - - -} - -TEST(UT_Tabbar_handleTabReleased, UT_Tabbar_handleTabReleased) -{ - int index = 0; - QStyleOptionTab option; - QPoint p; - - Window * window = new Window; - window->addTab("/.cache/deepin/deepin-editor",true); - EXPECT_EQ(window->m_tabbar->m_tabPaths.contains("/.cache/deepin/deepin-editor"),true); - - EditWrapper* wrapper = new EditWrapper(window); - window->getTabbar()->m_listOldTabPath.push_back("/.cache/deepin/deepin-editor"); - EXPECT_EQ(window->getTabbar()->m_listOldTabPath.contains("/.cache/deepin/deepin-editor"),true); - window->getTabbar()->handleTabReleased(index); - - - EXPECT_NE(window,nullptr); - EXPECT_NE(wrapper,nullptr); - - window->deleteLater(); - wrapper->deleteLater(); - - -} - -TEST(UT_Tabbar_handleTabIsRemoved, UT_Tabbar_handleTabIsRemoved) -{ - int index = 0; - QStyleOptionTab option; - QPoint p; - - Window * window = new Window; - window->addTab("/.cache/deepin/deepin-editor",true); - EXPECT_EQ(window->m_tabbar->m_tabPaths.contains("/.cache/deepin/deepin-editor"),true); - - EditWrapper* wrapper = new EditWrapper(window); - window->getTabbar()->handleTabIsRemoved(index); - - - EXPECT_NE(window,nullptr); - EXPECT_NE(wrapper,nullptr); - - window->deleteLater(); - wrapper->deleteLater(); - - -} - -TEST(UT_Tabbar_handleTabDroped, UT_Tabbar_handleTabDroped) -{ - int index = 0; - QStyleOptionTab option; - QPoint p; - Qt::DropAction actions[2] = {Qt::IgnoreAction,Qt::MoveAction}; - - - Window * window = new Window; - window->addTab("/.cache/deepin/deepin-editor",true); - EXPECT_EQ(window->m_tabbar->m_tabPaths.contains("/.cache/deepin/deepin-editor"),true); - - EditWrapper* wrapper = new EditWrapper(window); - window->getTabbar()->handleTabDroped(index,actions[0],nullptr); - window->getTabbar()->handleTabDroped(index,actions[0],window->getTabbar()); - - - EXPECT_NE(window,nullptr); - EXPECT_NE(wrapper,nullptr); - - window->deleteLater(); - wrapper->deleteLater(); - - -} - -TEST(UT_Tabbar_onTabDrapStart, UT_Tabbar_onTabDrapStart) -{ - int index = 0; - QStyleOptionTab option; - QPoint p; - Qt::DropAction actions[2] = {Qt::IgnoreAction,Qt::MoveAction}; - - - Window * window = new Window; - window->addTab("/.cache/deepin/deepin-editor",true); - EXPECT_EQ(window->m_tabbar->m_tabPaths.contains("/.cache/deepin/deepin-editor"),true); - - - EditWrapper* wrapper = new EditWrapper(window); - window->getTabbar()->onTabDrapStart(); - EXPECT_EQ(window->isVisible(),true); - - EXPECT_NE(window,nullptr); - EXPECT_NE(wrapper,nullptr); - - window->deleteLater(); - wrapper->deleteLater(); - - -} - -TEST(UT_Tabbar_resizeEvent, UT_Tabbar_resizeEvent) -{ - int index = 0; - QStyleOptionTab option; - QPoint p; - Qt::DropAction actions[2] = {Qt::IgnoreAction,Qt::MoveAction}; - QResizeEvent* e = new QResizeEvent(QSize(),QSize()); - - - Window * window = new Window; - window->addTab("/.cache/deepin/deepin-editor",true); - EXPECT_EQ(window->m_tabbar->m_tabPaths.contains("/.cache/deepin/deepin-editor"),true); - - EditWrapper* wrapper = new EditWrapper(window); - window->getTabbar()->resizeEvent(e); - - - EXPECT_NE(window,nullptr); - EXPECT_NE(wrapper,nullptr); - EXPECT_NE(e,nullptr); - - - - delete e; e = nullptr; - window->deleteLater(); - wrapper->deleteLater(); - - -} - -// ===================== Appended tests for uncovered functions ===================== - -namespace { -QAction *stub_QMenu_exec_null(const QPoint &, QAction *) -{ - return nullptr; -} - -int stub_DTabBar_tabAt_zero(const QPoint &) -{ - return 0; -} -} - -// void previousTab(); -TEST(UT_Tabbar_previousTab_Append, UT_Tabbar_previousTab) -{ - Tabbar *tab = new Tabbar(); - tab->addTab("/.cache/deepin/deepin-editor", "aa"); - tab->addTab("/.cache/deepin/deepin-editor2", "bb"); - EXPECT_EQ(tab->count(), 2); - EXPECT_EQ(tab->currentIndex(), 1); - - // currentIndex > 0, decrement to 0 - tab->previousTab(); - EXPECT_EQ(tab->currentIndex(), 0); - - // currentIndex <= 0, wrap around to count - 1 - tab->previousTab(); - EXPECT_EQ(tab->currentIndex(), 1); - - EXPECT_NE(tab, nullptr); - tab->deleteLater(); -} - -// void showTabs(); -TEST(UT_Tabbar_showTabs_Append, UT_Tabbar_showTabs) -{ - Tabbar *tab = new Tabbar(); - tab->m_closeLeftTabAction = new QAction(tab); - tab->m_closeRightTabAction = new QAction(tab); - tab->addTab("/.cache/deepin/deepin-editor", "aa"); - - EXPECT_NO_FATAL_FAILURE(tab->showTabs()); - // currentIndex 0 <= 0, left action disabled - EXPECT_EQ(tab->m_closeLeftTabAction->isEnabled(), false); - // currentIndex 0 >= count - 1, right action disabled - EXPECT_EQ(tab->m_closeRightTabAction->isEnabled(), false); - - EXPECT_NE(tab, nullptr); - tab->deleteLater(); -} - -// bool eventFilter(QObject *, QEvent *event) - triggers all 5 action lambdas -TEST(UT_Tabbar_eventFilter_Append, UT_Tabbar_eventFilter) -{ - Tabbar *tab = new Tabbar(); - - Stub s; - s.set(ADDR(DTabBar, tabAt), stub_DTabBar_tabAt_zero); - s.set(static_cast(&QMenu::exec), stub_QMenu_exec_null); - - QMouseEvent *e = new QMouseEvent(QEvent::MouseButtonPress, QPointF(5, 5), - QPointF(5, 5), QPointF(5, 5), - Qt::RightButton, Qt::RightButton, Qt::NoModifier); - - // Right button press on a tab -> builds menu and connects 5 lambdas, calls tr() - EXPECT_EQ(tab->eventFilter(tab, e), true); - - ASSERT_NE(tab->m_closeTabAction, nullptr); - ASSERT_NE(tab->m_closeOtherTabAction, nullptr); - ASSERT_NE(tab->m_closeLeftTabAction, nullptr); - ASSERT_NE(tab->m_closeRightTabAction, nullptr); - ASSERT_NE(tab->m_closeAllunModifiedTabAction, nullptr); - - // Trigger each connected lambda - EXPECT_NO_FATAL_FAILURE(tab->m_closeTabAction->trigger()); - EXPECT_NO_FATAL_FAILURE(tab->m_closeOtherTabAction->trigger()); - EXPECT_NO_FATAL_FAILURE(tab->m_closeLeftTabAction->trigger()); - EXPECT_NO_FATAL_FAILURE(tab->m_closeRightTabAction->trigger()); - EXPECT_NO_FATAL_FAILURE(tab->m_closeAllunModifiedTabAction->trigger()); - - s.reset(ADDR(DTabBar, tabAt)); - s.reset(static_cast(&QMenu::exec)); - - EXPECT_NE(tab, nullptr); - delete e; - tab->deleteLater(); -} - -// Tabbar constructor lambda connected to DGuiApplicationHelper::sizeModeChanged -TEST(UT_Tabbar_ConstructorSizeModeLambda, UT_Tabbar_ConstructorSizeModeLambda) -{ - Tabbar *tab = new Tabbar(); - auto helper = DGuiApplicationHelper::instance(); - auto origMode = helper->sizeMode(); - - EXPECT_NO_FATAL_FAILURE(helper->setSizeMode(origMode == DGuiApplicationHelper::NormalMode - ? DGuiApplicationHelper::CompactMode - : DGuiApplicationHelper::NormalMode)); - helper->setSizeMode(origMode); // restore - - EXPECT_NE(tab, nullptr); - tab->deleteLater(); -} - -// Tabbar::tr - Q_OBJECT generated translator, exercised explicitly -TEST(UT_Tabbar_tr, UT_Tabbar_tr) -{ - Tabbar *tab = new Tabbar(); - EXPECT_FALSE(tab->tr("Close tab").isEmpty()); - EXPECT_FALSE(tab->tr("Close other tabs").isEmpty()); - tab->deleteLater(); -} - diff --git a/tests/src/controls/ut_tabbar.h b/tests/src/controls/ut_tabbar.h deleted file mode 100644 index 72e2564b3..000000000 --- a/tests/src/controls/ut_tabbar.h +++ /dev/null @@ -1,20 +0,0 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef UT_Tabbar_H -#define UT_Tabbar_H -#include "gtest/gtest.h" -#include -#include"../../src/controls/tabbar.h" - - -class UT_Tabbar: public QObject, public::testing::Test -{ - Q_OBJECT - -public: - UT_Tabbar(); -}; - -#endif // UT_Tabbar_H diff --git a/tests/src/controls/ut_toolbar.cpp b/tests/src/controls/ut_toolbar.cpp deleted file mode 100644 index 5d2c89241..000000000 --- a/tests/src/controls/ut_toolbar.cpp +++ /dev/null @@ -1,32 +0,0 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "ut_toolbar.h" -#include "../src/controls/toolbar.h" -test_toolbar::test_toolbar() -{ - -} - -TEST_F(test_toolbar, ToolBar) -{ - ToolBar* tool = new ToolBar(); - - EXPECT_NE(tool,nullptr); - delete tool; - tool = nullptr; - -} - -TEST_F(test_toolbar, setTabbar) -{ - ToolBar* tool = new ToolBar(); - tool->setTabbar(nullptr); - - EXPECT_NE(tool->m_layout->count(),0); - - EXPECT_NE(tool,nullptr); - tool->deleteLater(); - -} diff --git a/tests/src/controls/ut_toolbar.h b/tests/src/controls/ut_toolbar.h deleted file mode 100644 index cb92bc181..000000000 --- a/tests/src/controls/ut_toolbar.h +++ /dev/null @@ -1,17 +0,0 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef TEST_TOOLBAR_H -#define TEST_TOOLBAR_H - - -#include "gtest/gtest.h" -#include - -class test_toolbar : public QObject, public::testing::Test -{ -public: - test_toolbar(); -}; -#endif // TEST_TOOLBAR_H diff --git a/tests/src/controls/ut_warningnotices.cpp b/tests/src/controls/ut_warningnotices.cpp deleted file mode 100644 index a4ccc2b96..000000000 --- a/tests/src/controls/ut_warningnotices.cpp +++ /dev/null @@ -1,140 +0,0 @@ -// SPDX-FileCopyrightText: 2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "ut_warningnotices.h" -#include "../../src/controls/warningnotices.h" - -#include -#include -#include -DGUI_USE_NAMESPACE -#include - -test_warningnotices::test_warningnotices() -{ -} - -// Constructor -TEST_F(test_warningnotices, WarningNotices) -{ - WarningNotices notices(DFloatingMessage::ResidentType); - EXPECT_NE(¬ices, nullptr); -} - -// void setEditAnywayBtn(); -TEST_F(test_warningnotices, setEditAnywayBtn) -{ - WarningNotices *notices = new WarningNotices(DFloatingMessage::ResidentType); - EXPECT_NO_FATAL_FAILURE(notices->setEditAnywayBtn()); - // m_editAnywayBtn is shown (not hidden), reload/saveAs are hidden - EXPECT_EQ(notices->m_editAnywayBtn->isHidden(), false); - EXPECT_EQ(notices->m_reloadBtn->isHidden(), true); - EXPECT_EQ(notices->m_saveAsBtn->isHidden(), true); - notices->deleteLater(); -} - -// void clearBtn(); -TEST_F(test_warningnotices, clearBtn) -{ - WarningNotices *notices = new WarningNotices(DFloatingMessage::ResidentType); - notices->setReloadBtn(); - EXPECT_NO_FATAL_FAILURE(notices->clearBtn()); - EXPECT_EQ(notices->m_reloadBtn->isVisible(), false); - EXPECT_EQ(notices->m_saveAsBtn->isVisible(), false); - notices->deleteLater(); -} - -// void slotEditAnywayBtnClicked(); -TEST_F(test_warningnotices, slotEditAnywayBtnClicked) -{ - WarningNotices *notices = new WarningNotices(DFloatingMessage::ResidentType); - bool signalReceived = false; - QObject::connect(notices, &WarningNotices::editAnywayBtnClicked, [&]() { signalReceived = true; }); - - notices->show(); - EXPECT_NO_FATAL_FAILURE(notices->slotEditAnywayBtnClicked()); - EXPECT_EQ(signalReceived, true); - - notices->deleteLater(); -} - -// Constructor lambda #3 connected to DFloatingMessage::closeButtonClicked -TEST_F(test_warningnotices, ConstructorCloseButtonClickedLambda) -{ - WarningNotices *notices = new WarningNotices(DFloatingMessage::ResidentType); - notices->show(); - - // Directly emit the protected signal (allowed via -fno-access-control) to - // guarantee the constructor lambda #3 executes. - emit notices->closeButtonClicked(); - - notices->deleteLater(); -} - -// Constructor lambda #1 connected to DGuiApplicationHelper::sizeModeChanged -TEST_F(test_warningnotices, ConstructorSizeModeLambda) -{ - WarningNotices *notices = new WarningNotices(DFloatingMessage::ResidentType); - auto helper = DGuiApplicationHelper::instance(); - auto origMode = helper->sizeMode(); - - EXPECT_NO_FATAL_FAILURE(helper->setSizeMode(origMode == DGuiApplicationHelper::NormalMode - ? DGuiApplicationHelper::CompactMode - : DGuiApplicationHelper::NormalMode)); - helper->setSizeMode(origMode); // restore - - notices->deleteLater(); -} - -// Constructor lambda #2 connected to DGuiApplicationHelper::fontChanged -TEST_F(test_warningnotices, ConstructorFontChangedLambda) -{ - WarningNotices *notices = new WarningNotices(DFloatingMessage::ResidentType); - - // Directly emit the signal (allowed via -fno-access-control) to guarantee - // the constructor lambda #2 executes. - auto helper = DGuiApplicationHelper::instance(); - QFont font = notices->font(); - EXPECT_NO_FATAL_FAILURE(emit helper->fontChanged(font)); - - notices->deleteLater(); -} - -// void setSaveAsBtn(); -TEST_F(test_warningnotices, setSaveAsBtn) -{ - WarningNotices *notices = new WarningNotices(DFloatingMessage::ResidentType); - EXPECT_NO_FATAL_FAILURE(notices->setSaveAsBtn()); - EXPECT_EQ(notices->m_saveAsBtn->isHidden(), false); - EXPECT_EQ(notices->m_reloadBtn->isHidden(), true); - notices->deleteLater(); -} - -// void slotreloadBtnClicked(); -TEST_F(test_warningnotices, slotreloadBtnClicked) -{ - WarningNotices *notices = new WarningNotices(DFloatingMessage::ResidentType); - bool signalReceived = false; - QObject::connect(notices, &WarningNotices::reloadBtnClicked, [&]() { signalReceived = true; }); - - notices->show(); - EXPECT_NO_FATAL_FAILURE(notices->slotreloadBtnClicked()); - EXPECT_EQ(signalReceived, true); - - notices->deleteLater(); -} - -// void slotsaveAsBtnClicked(); -TEST_F(test_warningnotices, slotsaveAsBtnClicked) -{ - WarningNotices *notices = new WarningNotices(DFloatingMessage::ResidentType); - bool signalReceived = false; - QObject::connect(notices, &WarningNotices::saveAsBtnClicked, [&]() { signalReceived = true; }); - - notices->show(); - EXPECT_NO_FATAL_FAILURE(notices->slotsaveAsBtnClicked()); - EXPECT_EQ(signalReceived, true); - - notices->deleteLater(); -} diff --git a/tests/src/controls/ut_warningnotices.h b/tests/src/controls/ut_warningnotices.h deleted file mode 100644 index 90dc322ac..000000000 --- a/tests/src/controls/ut_warningnotices.h +++ /dev/null @@ -1,16 +0,0 @@ -// SPDX-FileCopyrightText: 2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef TEST_WARNINGNOTICES_H -#define TEST_WARNINGNOTICES_H -#include "gtest/gtest.h" -#include - -class test_warningnotices : public QObject, public::testing::Test -{ -public: - test_warningnotices(); -}; - -#endif // TEST_WARNINGNOTICES_H diff --git a/tests/src/dbus/ut_dbus.cpp b/tests/src/dbus/ut_dbus.cpp deleted file mode 100644 index 9058c0106..000000000 --- a/tests/src/dbus/ut_dbus.cpp +++ /dev/null @@ -1,299 +0,0 @@ -// SPDX-FileCopyrightText: 2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include - -#include -#include -#include -#include -#include -#include - -#include "../../../src/dbus/com_deepin_dde_daemon_dock.h" -#include "../../../src/dbus/com_deepin_dde_daemon_dock_entry.h" -#include "../../../src/dbus/types/windowinfomap.h" -#include "../../../src/dbus/types/windowlist.h" - -// registerDockRectMetaType() is defined in the .cpp but not declared in the header. -extern void registerDockRectMetaType(); - -namespace { -ComDeepinDdeDaemonDockInterface *createDockInterface() -{ - return new ComDeepinDdeDaemonDockInterface( - QStringLiteral("com.deepin.dde.daemon.Dock"), - QStringLiteral("/com/deepin/dde/daemon/Dock"), - QDBusConnection::sessionBus()); -} - -ComDeepinDdeDaemonDockEntryInterface *createEntryInterface() -{ - return new ComDeepinDdeDaemonDockEntryInterface( - QStringLiteral("com.deepin.dde.daemon.Dock"), - QStringLiteral("/com/deepin/dde/daemon/Dock/entry"), - QDBusConnection::sessionBus()); -} -} - -// ============================ DockRect ============================ - -// registerDockRectMetaType() + QMetaTypeId::qt_metatype_id() -TEST(UT_DockRect, registerDockRectMetaType) -{ - registerDockRectMetaType(); - SUCCEED(); -} - -// DockRect::DockRect() -TEST(UT_DockRect, defaultConstructor) -{ - DockRect rect; - Q_UNUSED(rect) - SUCCEED(); -} - -// DockRect::operator QRect() const -TEST(UT_DockRect, toQRect) -{ - DockRect rect; - QRect r = rect.operator QRect(); - EXPECT_EQ(r, QRect(0, 0, 0, 0)); -} - -// operator<<(QDebug, DockRect const&) -TEST(UT_DockRect, qDebugOperator) -{ - DockRect rect; - qDebug() << rect; - SUCCEED(); -} - -// operator<<(QDBusArgument&, DockRect const&) -TEST(UT_DockRect, qdbusArgumentWrite) -{ - DockRect rect; - QDBusArgument arg; - arg << rect; - SUCCEED(); -} - -// operator>>(QDBusArgument const&, DockRect&) -TEST(UT_DockRect, qdbusArgumentRead) -{ - DockRect rect; - QDBusArgument arg; - const QDBusArgument &ref = arg; - ref >> rect; - SUCCEED(); -} - -// ===================== ComDeepinDdeDaemonDockInterface ===================== - -// ctor + dtor + staticInterfaceName() -TEST(UT_ComDeepinDdeDaemonDockInterface, constructorAndDestructor) -{ - ComDeepinDdeDaemonDockInterface *iface = createDockInterface(); - EXPECT_NE(iface, nullptr); - EXPECT_STREQ(ComDeepinDdeDaemonDockInterface::staticInterfaceName(), - "com.deepin.dde.daemon.Dock"); - EXPECT_STREQ(iface->staticInterfaceName(), "com.deepin.dde.daemon.Dock"); - delete iface; -} - -// property getters -TEST(UT_ComDeepinDdeDaemonDockInterface, propertyGetters) -{ - registerDockRectMetaType(); - ComDeepinDdeDaemonDockInterface *iface = createDockInterface(); - iface->displayMode(); - iface->dockedApps(); - iface->entries(); - iface->frontendWindowRect(); - iface->hideMode(); - iface->hideState(); - iface->hideTimeout(); - iface->iconSize(); - iface->opacity(); - iface->position(); - iface->showTimeout(); - iface->windowSize(); - iface->windowSizeEfficient(); - iface->windowSizeFashion(); - delete iface; - SUCCEED(); -} - -// property setters -TEST(UT_ComDeepinDdeDaemonDockInterface, propertySetters) -{ - ComDeepinDdeDaemonDockInterface *iface = createDockInterface(); - iface->setDisplayMode(1); - iface->setHideMode(1); - iface->setHideTimeout(1u); - iface->setIconSize(1u); - iface->setOpacity(1.0); - iface->setPosition(1); - iface->setShowTimeout(1u); - iface->setWindowSize(1u); - iface->setWindowSizeEfficient(1u); - iface->setWindowSizeFashion(1u); - delete iface; - SUCCEED(); -} - -// DBus methods -TEST(UT_ComDeepinDdeDaemonDockInterface, methods) -{ - ComDeepinDdeDaemonDockInterface *iface = createDockInterface(); - iface->MoveWindow(1u); - iface->CloseWindow(1u); - iface->GetEntryIDs(); - iface->RequestDock(QStringLiteral("app.desktop"), 1); - iface->PreviewWindow(1u); - iface->RequestUndock(QStringLiteral("app.desktop")); - iface->ActivateWindow(1u); - iface->MaximizeWindow(1u); - iface->MinimizeWindow(1u); - iface->MakeWindowAbove(1u); - iface->GetPluginSettings(); - iface->SetPluginSettings(QStringLiteral("{}")); - iface->CancelPreviewWindow(); - iface->MergePluginSettings(QStringLiteral("{}")); - iface->RemovePluginSettings(QStringLiteral("plugin"), QStringList() << "key"); - iface->SetFrontendWindowRect(1, 2, 3u, 4u); - iface->GetDockedAppsDesktopFiles(); - iface->QueryWindowIdentifyMethod(1u); - iface->IsDocked(QStringLiteral("app.desktop")); - iface->IsOnDock(QStringLiteral("app.desktop")); - iface->MoveEntry(1, 2); - delete iface; - SUCCEED(); -} - -// =================== ComDeepinDdeDaemonDockEntryInterface =================== - -// ctor + dtor + staticInterfaceName() -TEST(UT_ComDeepinDdeDaemonDockEntryInterface, constructorAndDestructor) -{ - ComDeepinDdeDaemonDockEntryInterface *iface = createEntryInterface(); - EXPECT_NE(iface, nullptr); - EXPECT_STREQ(ComDeepinDdeDaemonDockEntryInterface::staticInterfaceName(), - "com.deepin.dde.daemon.Dock.Entry"); - EXPECT_STREQ(iface->staticInterfaceName(), "com.deepin.dde.daemon.Dock.Entry"); - delete iface; -} - -// property getters (windowInfos triggers QMetaTypeId>) -TEST(UT_ComDeepinDdeDaemonDockEntryInterface, propertyGetters) -{ - registerWindowInfoMapMetaType(); - registerWindowListMetaType(); - ComDeepinDdeDaemonDockEntryInterface *iface = createEntryInterface(); - iface->currentWindow(); - iface->desktopFile(); - iface->icon(); - iface->id(); - iface->isActive(); - iface->isDocked(); - iface->menu(); - iface->name(); - iface->windowInfos(); - delete iface; - SUCCEED(); -} - -// DBus methods (GetAllowedCloseWindows triggers QMetaTypeId>) -TEST(UT_ComDeepinDdeDaemonDockEntryInterface, methods) -{ - registerWindowListMetaType(); - ComDeepinDdeDaemonDockEntryInterface *iface = createEntryInterface(); - iface->NewInstance(1u); - iface->RequestDock(); - iface->RequestUndock(); - iface->HandleDragDrop(1u, QStringList() << "file"); - iface->HandleMenuItem(1u, QStringLiteral("item")); - iface->PresentWindows(); - iface->GetAllowedCloseWindows(); - iface->Check(); - iface->Activate(1u); - iface->ForceQuit(); - delete iface; - SUCCEED(); -} - -// ============================ WindowInfo ============================ - -// registerWindowInfoMetaType() + QMetaTypeId::qt_metatype_id() -TEST(UT_WindowInfo, registerWindowInfoMetaType) -{ - registerWindowInfoMetaType(); - SUCCEED(); -} - -// registerWindowInfoMapMetaType() + QMetaTypeId>::qt_metatype_id() -TEST(UT_WindowInfo, registerWindowInfoMapMetaType) -{ - registerWindowInfoMapMetaType(); - SUCCEED(); -} - -// WindowInfo::operator==(WindowInfo const&) const -TEST(UT_WindowInfo, equality) -{ - WindowInfo a; - a.attention = true; - a.title = "title"; - - WindowInfo b; - b.attention = true; - b.title = "title"; - - WindowInfo c; - c.attention = false; - c.title = "other"; - - EXPECT_TRUE(a == b); - EXPECT_FALSE(a == c); -} - -// operator<<(QDebug, WindowInfo const&) -TEST(UT_WindowInfo, qDebugOperator) -{ - WindowInfo info; - info.attention = true; - info.title = "hello"; - qDebug() << info; - SUCCEED(); -} - -// operator<<(QDBusArgument&, WindowInfo const&) -TEST(UT_WindowInfo, qdbusArgumentWrite) -{ - WindowInfo info; - info.attention = false; - info.title = "title"; - QDBusArgument arg; - arg << info; - SUCCEED(); -} - -// operator>>(QDBusArgument const&, WindowInfo&) -TEST(UT_WindowInfo, qdbusArgumentRead) -{ - WindowInfo info; - QDBusArgument arg; - const QDBusArgument &ref = arg; - ref >> info; - SUCCEED(); -} - -// ============================ WindowList ============================ - -// registerWindowListMetaType() + QMetaTypeId>::qt_metatype_id() -TEST(UT_WindowList, registerWindowListMetaType) -{ - registerWindowListMetaType(); - SUCCEED(); -} diff --git a/tests/src/editor/markdown/it_markdownview_smoke.cpp b/tests/src/editor/markdown/it_markdownview_smoke.cpp deleted file mode 100644 index 348271e66..000000000 --- a/tests/src/editor/markdown/it_markdownview_smoke.cpp +++ /dev/null @@ -1,210 +0,0 @@ -// SPDX-FileCopyrightText: 2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -// it_markdownview_smoke —— 真实 WebEngine 集成冒烟(§9.1) -// 验证:qrc 页面 + file:// 本地图片 + 主题变量注入端到端可用。 -// 运行需真实渲染进程:QT_QPA_PLATFORM=offscreen 下可跑,必要时 -// QTWEBENGINE_CHROMIUM_FLAGS="--no-sandbox --disable-gpu" - -#include "markdown/markdownview.h" -#include "markdown/markdownbridge.h" -#include "markdown/markdownlogic.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace { -// 抓取 Chromium console 输出,定位资源加载被拒的确切原因 -class SpyPage : public QWebEnginePage -{ -public: - using QWebEnginePage::QWebEnginePage; -protected: - void javaScriptConsoleMessage(JavaScriptConsoleMessageLevel level, const QString &message, - int lineNumber, const QString &sourceID) override - { - fprintf(stderr, "[console] %s (%s:%d)\n", qPrintable(message), qPrintable(sourceID), lineNumber); - } -}; - -// 等待条件成立(事件循环驱动),超时返回 false -bool waitFor(std::function cond, int timeoutMs) -{ - QElapsedTimer t; - t.start(); - while (t.elapsed() < timeoutMs) { - if (cond()) return true; - QApplication::processEvents(QEventLoop::AllEvents, 50); - QTest::qWait(10); - } - return cond(); -} -} - -// 端到端:ready → setMarkdown(含 file:// 图片)→ 图片实际解码加载 -TEST(IT_MarkdownViewSmoke, DISABLED_RenderLocalImage_EndToEnd) -{ - const QString imgDir = QStringLiteral("/home/uos/work/deepin-editor/docs/markdown-demo"); - if (!QFileInfo::exists(imgDir + QStringLiteral("/sample.png"))) { - GTEST_SKIP() << "sample.png not present, skip"; - } - - MarkdownView v; - SpyPage *page = new SpyPage(&v); // 接管 page 以抓 console - v.setPage(page); - v.init(); - QSignalSpy readySpy(v.bridge(), &MarkdownBridge::ready); - ASSERT_TRUE(waitFor([&readySpy]() { return readySpy.count() > 0; }, 15000)) - << "WebEngine page not ready in 15s"; - - // 模拟 EditWrapper 完整链路:相对路径经 resolveImagePaths 改写为 mdimg://(自定义 scheme 供给本地文件) - const QString md = MarkdownLogic::resolveImagePaths( - QStringLiteral("# 标题\n\n![渐变图](sample.png)\n\n正文。"), imgDir); - qInfo() << "[smoke] rewritten md:" << md; - v.setMarkdown(md); - // 等渲染 + 图片子资源加载 - QTest::qWait(3000); - - QString json; - bool ok = false; - v.page()->runJavaScript( - QStringLiteral("JSON.stringify(Array.from(document.images).map(i=>" - "({src:i.src, complete:i.complete, w:i.naturalWidth, h:i.naturalHeight})))"), - [&json, &ok](const QVariant &result) { json = result.toString(); ok = true; }); - ASSERT_TRUE(waitFor([&ok]() { return ok; }, 5000)); - qInfo() << "[smoke] images:" << json; - - EXPECT_TRUE(json.contains(QStringLiteral("\"w\":400"))) // 真实解码出原始宽度 - << "image not decoded/rendered: " << json.toStdString(); -} - -// 端到端:外部链接点击不在预览内导航,经 bridge 上抛 openLinkRequested(JS 拦截主路径) -TEST(IT_MarkdownViewSmoke, DISABLED_ExternalLinkClick_DelegatedToBrowser) -{ - MarkdownView v; - SpyPage *page = new SpyPage(&v); - v.setPage(page); - v.init(); - QSignalSpy readySpy(v.bridge(), &MarkdownBridge::ready); - ASSERT_TRUE(waitFor([&readySpy]() { return readySpy.count() > 0; }, 15000)) - << "WebEngine page not ready in 15s"; - - v.setMarkdown(QStringLiteral("# 链接测试\n\n[deepin 官网](https://www.deepin.org/index.shtml)\n")); - QTest::qWait(1500); - - // 模拟点击渲染出的 :JS 捕获拦截 → preventDefault → bridge.onOpenLink 上抛 - QSignalSpy linkSpy(v.bridge(), &MarkdownBridge::openLinkRequested); - bool anchorFound = false; - v.page()->runJavaScript( - QStringLiteral("(function(){const a=document.querySelector('a[href]');" - "if(!a) return 'no-anchor'; a.click(); return 'clicked';})()"), - [&anchorFound](const QVariant &result) { - anchorFound = result.toString() != QLatin1String("no-anchor"); - }); - ASSERT_TRUE(waitFor([&anchorFound]() { return anchorFound; }, 5000)) << "anchor not rendered"; - - ASSERT_TRUE(waitFor([&linkSpy]() { return linkSpy.count() > 0; }, 5000)) - << "openLinkRequested not emitted (click interception broken)"; - EXPECT_EQ(linkSpy.takeFirst().at(0).toString(), - QStringLiteral("https://www.deepin.org/index.shtml")); -} - -// 端到端:空代码块不得被 min-height 208px 撑出大空白(enhance 加 empty 类, -// CSS 降 min-height),表头下仅保留一行空白;非空块仍保持设计最小高度 -TEST(IT_MarkdownViewSmoke, DISABLED_EmptyCodeBlock_NoMinHeightBlank) -{ - MarkdownView v; - SpyPage *page = new SpyPage(&v); - v.setPage(page); - v.init(); - QSignalSpy readySpy(v.bridge(), &MarkdownBridge::ready); - ASSERT_TRUE(waitFor([&readySpy]() { return readySpy.count() > 0; }, 15000)) - << "WebEngine page not ready in 15s"; - - // 空代码块 + 非空代码块各一个 - v.setMarkdown(QStringLiteral("# t\n\n```cpp\n```\n\ntext\n\n```js\nlet a = 1;\n```\n")); - QTest::qWait(2000); // 等渲染 + enhance 后处理(setTimeout(0)) - - QString json; - bool ok = false; - v.page()->runJavaScript( - QStringLiteral("JSON.stringify(Array.from(document.querySelectorAll('.code-block')).map(w=>" - "({cls:w.className, h:Math.round(w.getBoundingClientRect().height), " - "preH:Math.round(w.querySelector('pre').getBoundingClientRect().height)})))"), - [&json, &ok](const QVariant &result) { json = result.toString(); ok = true; }); - ASSERT_TRUE(waitFor([&ok]() { return ok; }, 5000)); - qInfo() << "[smoke] code blocks:" << json; - - const auto doc = QJsonDocument::fromJson(json.toUtf8()); - ASSERT_TRUE(doc.isArray()) << "no .code-block rendered"; - const auto blocks = doc.array(); - ASSERT_EQ(blocks.size(), 2) << "expected empty + non-empty blocks"; - - // 空块:带 empty 类;总高 = 表头(32) + pre 一行(约44) < 100,无 208px 空白 - const auto emptyBlock = blocks.at(0).toObject(); - EXPECT_TRUE(emptyBlock.value(QStringLiteral("cls")).toString() - .contains(QLatin1String("empty"))) - << "empty code block not marked with 'empty' class"; - EXPECT_LT(emptyBlock.value(QStringLiteral("h")).toInt(), 100) - << "empty code block still padded to min-height"; - - // 非空块:无 empty 类,仍满足设计最小高度 208px - const auto filledBlock = blocks.at(1).toObject(); - EXPECT_FALSE(filledBlock.value(QStringLiteral("cls")).toString() - .contains(QLatin1String("empty"))); - EXPECT_GE(filledBlock.value(QStringLiteral("h")).toInt(), 208); -} - -// 端到端时序复现(初始对齐):ready 之前发出的 scrollToRatio 不得丢失, -// 页面 ready + 首次渲染完成后应应用该比例(生产:恢复光标后左栏非顶部 → setViewMode 发真实比例) -TEST(IT_MarkdownViewSmoke, DISABLED_ScrollRatioBeforeReady_AppliedAfterRender) -{ - const QString imgDir = QStringLiteral("/home/uos/work/deepin-editor/docs/markdown-demo"); - - MarkdownView v; - SpyPage *page = new SpyPage(&v); - v.setPage(page); - v.init(); - - // —— 不等 ready,模拟生产时序:内容 + 滚动比例先到 —— - QString longMd = QStringLiteral("# t\n\n"); - for (int i = 0; i < 200; ++i) - longMd += QStringLiteral("段落 %1 一些内容文本。\n\n").arg(i); - v.setMarkdown(longMd); - v.scrollToRatio(0.5); // 左栏恢复光标后在中间 - - QSignalSpy readySpy(v.bridge(), &MarkdownBridge::ready); - ASSERT_TRUE(waitFor([&readySpy]() { return readySpy.count() > 0; }, 15000)) - << "WebEngine page not ready in 15s"; - - // 等首次渲染 + reapplyScroll 生效 - QTest::qWait(2500); - - QString json; - bool ok = false; - v.page()->runJavaScript( - QStringLiteral("(function(){const m=document.documentElement.scrollHeight-window.innerHeight;" - "return JSON.stringify({y:window.scrollY,max:m});})()"), - [&json, &ok](const QVariant &result) { json = result.toString(); ok = true; }); - ASSERT_TRUE(waitFor([&ok]() { return ok; }, 5000)); - qInfo() << "[smoke] scroll:" << json; - - // 解析并断言实际滚动比例 ≈ 0.5(允许 ±0.1 容差) - const auto doc = QJsonDocument::fromJson(json.toUtf8()); - const double y = doc.object().value("y").toDouble(); - const double max = doc.object().value("max").toDouble(); - ASSERT_GT(max, 0); - EXPECT_NEAR(y / max, 0.5, 0.1) - << "initial scroll ratio lost: " << json.toStdString(); -} diff --git a/tests/src/editor/markdown/ut_editwrapper_markdown.cpp b/tests/src/editor/markdown/ut_editwrapper_markdown.cpp deleted file mode 100644 index 3dd6becaa..000000000 --- a/tests/src/editor/markdown/ut_editwrapper_markdown.cpp +++ /dev/null @@ -1,406 +0,0 @@ -// SPDX-FileCopyrightText: 2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "ut_editwrapper_markdown.h" -#include "editwrapper.h" -#include "markdown/viewmodefsm.h" -#include "markdown/renderthrottle.h" - -#include -#include -#include -#include "markdown/markdownview.h" -#include "markdown/markdownbridge.h" - -using ::testing::_; - -UT_EditWrapper_Markdown::UT_EditWrapper_Markdown() -{ -} - -// setViewMode 委托 FSM:非 md 文件切 LivePreview 应被拒(返回 false) -TEST(UT_EditWrapper_Markdown, SetViewMode_NonMarkdownLivePreview_Rejected) -{ - EditWrapper wra; - wra.m_isMarkdown = false; // -fno-access-control 直接访问私有成员 - EXPECT_FALSE(wra.setViewMode(ViewMode::LivePreview)); - EXPECT_EQ(wra.viewMode(), ViewMode::Edit); // 未改变 -} - -// setViewMode:非 md 文件可切 Edit / ReadView -TEST(UT_EditWrapper_Markdown, SetViewMode_NonMarkdown_EditAndReadView_Accepted) -{ - EditWrapper wra; - wra.m_isMarkdown = false; - EXPECT_TRUE(wra.setViewMode(ViewMode::ReadView)); - EXPECT_EQ(wra.viewMode(), ViewMode::ReadView); - EXPECT_TRUE(wra.setViewMode(ViewMode::Edit)); - EXPECT_EQ(wra.viewMode(), ViewMode::Edit); -} - -// setViewMode:md 文件可切 LivePreview -TEST(UT_EditWrapper_Markdown, SetViewMode_MarkdownLivePreview_Accepted) -{ - EditWrapper wra; - wra.m_isMarkdown = true; - EXPECT_TRUE(wra.setViewMode(ViewMode::LivePreview)); - EXPECT_EQ(wra.viewMode(), ViewMode::LivePreview); -} - -// setViewMode:Wysiwyg 阶段二不可达,应被拒 -TEST(UT_EditWrapper_Markdown, SetViewMode_Wysiwyg_Rejected) -{ - EditWrapper wra; - wra.m_isMarkdown = true; - EXPECT_FALSE(wra.setViewMode(ViewMode::Wysiwyg)); -} - -// setViewMode 切换后发 viewModeChanged 信号 -TEST(UT_EditWrapper_Markdown, SetViewMode_EmitsViewModeChanged) -{ - EditWrapper wra; - wra.m_isMarkdown = true; - QSignalSpy spy(&wra, &EditWrapper::viewModeChanged); - wra.setViewMode(ViewMode::ReadView); - ASSERT_EQ(spy.count(), 1); - EXPECT_EQ(spy.takeFirst().at(0).value(), ViewMode::ReadView); -} - -// updateMarkdownRecognition:md 文件 → m_isMarkdown=true + 发 markdownAvailabilityChanged(true) -TEST(UT_EditWrapper_Markdown, UpdateRecognition_MarkdownFile_SetsFlagAndEmits) -{ - EditWrapper wra; - wra.m_isMarkdown = false; - QSignalSpy spy(&wra, &EditWrapper::markdownAvailabilityChanged); - wra.updateMarkdownRecognition(QStringLiteral("readme.md"), QStringLiteral("Markdown")); - EXPECT_TRUE(wra.isMarkdownFile()); - ASSERT_EQ(spy.count(), 1); - EXPECT_TRUE(spy.takeFirst().at(0).toBool()); -} - -// updateMarkdownRecognition:非 md 文件 → m_isMarkdown=false,无信号(因为初始就 false) -TEST(UT_EditWrapper_Markdown, UpdateRecognition_NonMarkdown_NoSignalWhenUnchanged) -{ - EditWrapper wra; - wra.m_isMarkdown = false; - QSignalSpy spy(&wra, &EditWrapper::markdownAvailabilityChanged); - wra.updateMarkdownRecognition(QStringLiteral("x.txt"), QStringLiteral("Plain Text")); - EXPECT_FALSE(wra.isMarkdownFile()); - EXPECT_EQ(spy.count(), 0); // 未变化,不发信号 -} - -// updateMarkdownRecognition:从 md 切到非 md,当前在 LivePreview → 回退到 Edit -TEST(UT_EditWrapper_Markdown, UpdateRecognition_LostMarkdownFromLivePreview_FallbackToEdit) -{ - EditWrapper wra; - wra.m_isMarkdown = true; - wra.setViewMode(ViewMode::LivePreview); - ASSERT_EQ(wra.viewMode(), ViewMode::LivePreview); - // 模拟语言切走 - wra.updateMarkdownRecognition(QStringLiteral("x.txt"), QStringLiteral("Plain Text")); - EXPECT_FALSE(wra.isMarkdownFile()); - EXPECT_EQ(wra.viewMode(), ViewMode::Edit); // FSM 回退 -} - -// updateMarkdownRecognition:从 md 切到非 md,当前在 ReadView → 保持 ReadView(纯文本只读) -TEST(UT_EditWrapper_Markdown, UpdateRecognition_LostMarkdownFromReadView_StayReadView) -{ - EditWrapper wra; - wra.m_isMarkdown = true; - wra.setViewMode(ViewMode::ReadView); - ASSERT_EQ(wra.viewMode(), ViewMode::ReadView); - wra.updateMarkdownRecognition(QStringLiteral("x.txt"), QStringLiteral("Plain Text")); - EXPECT_EQ(wra.viewMode(), ViewMode::ReadView); -} - -// 2026-08-19:语言切为 Markdown → Edit 自动跃迁 LivePreview(新建 txt 手动切语言场景) -TEST(UT_EditWrapper_Markdown, UpdateRecognition_GainedMarkdownFromEdit_ElevateToLivePreview) -{ - EditWrapper wra; - wra.m_isMarkdown = false; // 新建 txt,当前 Edit - ASSERT_EQ(wra.viewMode(), ViewMode::Edit); - // 模拟手动把语言切为 Markdown - wra.updateMarkdownRecognition(QStringLiteral("untitled.txt"), QStringLiteral("Markdown")); - EXPECT_TRUE(wra.isMarkdownFile()); - EXPECT_EQ(wra.viewMode(), ViewMode::LivePreview); // 自动切入实时预览 -} - -// 识别结果未变化时不打扰用户手动选择的 Edit(仅 false→true 变化才跃迁) -TEST(UT_EditWrapper_Markdown, UpdateRecognition_UnchangedMarkdown_KeepsUserEditMode) -{ - EditWrapper wra; - wra.m_isMarkdown = true; - EXPECT_TRUE(wra.setViewMode(ViewMode::Edit)); // 用户手动切到 Edit - // 再次上报同一 md 识别结果(未变化) - wra.updateMarkdownRecognition(QStringLiteral("x.md"), QStringLiteral("Markdown")); - EXPECT_EQ(wra.viewMode(), ViewMode::Edit); // 不强切回 LivePreview -} - -// 测试注入 Mock:注入后 ensureMarkdownViewCreated 不创建真实 view(m_pRendererInjected=true) -TEST(UT_EditWrapper_Markdown, InjectMock_PreventsRealViewCreation) -{ - EditWrapper wra; - MockMarkdownRenderer mock; - wra.setMarkdownRendererForTest(&mock); - wra.m_isMarkdown = true; - // 调 setViewMode(ReadView) 会触发 ensureMarkdownViewCreated,但注入了 mock 不应创建真实 view - EXPECT_CALL(mock, setMode(_)).Times(::testing::AnyNumber()); - EXPECT_CALL(mock, setLayout(_, _)).Times(::testing::AnyNumber()); - EXPECT_TRUE(wra.setViewMode(ViewMode::ReadView)); - EXPECT_EQ(wra.m_pMarkdownView, nullptr); // 未创建真实 view - EXPECT_EQ(wra.m_pRenderer, &mock); // 使用注入的 mock -} - -// §5'.5:切 LivePreview → setLayout(0,false) + setMode(ReadOnly) + 立即 setMarkdown(首切不等 300ms) -TEST(UT_EditWrapper_Markdown, SetViewMode_LivePreview_RendererCallsAndImmediateFlush) -{ - EditWrapper wra; - MockMarkdownRenderer mock; - wra.setMarkdownRendererForTest(&mock); - wra.m_isMarkdown = true; - wra.textEditor()->setPlainText(QStringLiteral("# hi")); - EXPECT_CALL(mock, isReady()).WillRepeatedly(::testing::Return(true)); - EXPECT_CALL(mock, setMode(_)).Times(::testing::AnyNumber()); - EXPECT_CALL(mock, setLayout(0, false)).Times(1); - EXPECT_CALL(mock, setMarkdown(QStringLiteral("# hi"))).Times(1); - EXPECT_TRUE(wra.setViewMode(ViewMode::LivePreview)); -} - -// §4.4:md 文件「查看视图」走渲染页(Page1),懒创建真实 view(单测不 init,不启动 WebEngine) -TEST(UT_EditWrapper_Markdown, SetViewMode_ReadViewMarkdown_ShowsRenderPage) -{ - EditWrapper wra; - wra.m_isMarkdown = true; - EXPECT_TRUE(wra.setViewMode(ViewMode::ReadView)); - EXPECT_NE(wra.m_pMarkdownView, nullptr); - EXPECT_EQ(wra.m_viewStack->currentWidget(), wra.m_pReadPage); -} - -// §4.4:非 md「查看视图」= 纯文本只读(不进渲染页),切回 Edit 恢复可编辑 -TEST(UT_EditWrapper_Markdown, SetViewMode_ReadViewNonMarkdown_TextReadOnlyThenRestore) -{ - EditWrapper wra; - wra.m_isMarkdown = false; - EXPECT_TRUE(wra.setViewMode(ViewMode::ReadView)); - EXPECT_TRUE(wra.textEditor()->getReadOnlyMode()); - EXPECT_EQ(wra.m_pMarkdownView, nullptr); // 非 md 不创建渲染 view - EXPECT_TRUE(wra.setViewMode(ViewMode::Edit)); - EXPECT_FALSE(wra.textEditor()->getReadOnlyMode()); -} - -// §4.4:LivePreview 页把编辑页挪入分栏左栏(同一 TextEdit 实例,不重建) -TEST(UT_EditWrapper_Markdown, SetViewMode_LivePreview_EditorPageInSplitter) -{ - EditWrapper wra; - wra.m_isMarkdown = true; - EXPECT_TRUE(wra.setViewMode(ViewMode::LivePreview)); - EXPECT_EQ(wra.m_viewStack->currentWidget(), wra.m_pLiveSplitter); - EXPECT_EQ(wra.m_pEditPage->parentWidget(), wra.m_pLiveSplitter); - // 切回 Edit:编辑页回到视图栈 Page0 - EXPECT_TRUE(wra.setViewMode(ViewMode::Edit)); - EXPECT_EQ(wra.m_viewStack->currentWidget(), wra.m_pEditPage); -} - -// §4.4/§4.6:识别变化时 ReadView 实现随之切换(渲染页 ↔ 纯文本只读),模式本身保持 -TEST(UT_EditWrapper_Markdown, UpdateRecognition_ReadViewSwitchesImplementation) -{ - EditWrapper wra; - wra.m_isMarkdown = true; - EXPECT_TRUE(wra.setViewMode(ViewMode::ReadView)); - ASSERT_EQ(wra.m_viewStack->currentWidget(), wra.m_pReadPage); - - // 语言切走(md → txt):ReadView 模式保持,但实现切为纯文本只读 - wra.updateMarkdownRecognition(QStringLiteral("x.txt"), QStringLiteral("Plain Text")); - EXPECT_EQ(wra.viewMode(), ViewMode::ReadView); - EXPECT_EQ(wra.m_viewStack->currentWidget(), wra.m_pEditPage); - EXPECT_TRUE(wra.textEditor()->getReadOnlyMode()); - - // 语言切回(txt → md):实现恢复渲染页,解除只读 - wra.updateMarkdownRecognition(QStringLiteral("x.md"), QStringLiteral("Markdown")); - EXPECT_EQ(wra.viewMode(), ViewMode::ReadView); - EXPECT_EQ(wra.m_viewStack->currentWidget(), wra.m_pReadPage); - EXPECT_FALSE(wra.textEditor()->getReadOnlyMode()); -} - -// §4.6:LivePreview 下左栏滚动按比例转发 renderer -TEST(UT_EditWrapper_Markdown, LeftScroll_ForwardsRatioToRenderer) -{ - EditWrapper wra; - MockMarkdownRenderer mock; - wra.setMarkdownRendererForTest(&mock); - wra.m_isMarkdown = true; - // 足够多行使滚动条 maximum > 0 - QString longText; - for (int i = 0; i < 300; ++i) - longText += QStringLiteral("line %1\n").arg(i); - wra.textEditor()->setPlainText(longText); - EXPECT_CALL(mock, isReady()).WillRepeatedly(::testing::Return(true)); - EXPECT_CALL(mock, setMode(_)).Times(::testing::AnyNumber()); - EXPECT_CALL(mock, setLayout(_, _)).Times(::testing::AnyNumber()); - EXPECT_CALL(mock, setMarkdown(_)).Times(::testing::AnyNumber()); - EXPECT_CALL(mock, scrollToRatio(_)).Times(::testing::AnyNumber()); // 进入时首同步(§5.2) - EXPECT_TRUE(wra.setViewMode(ViewMode::LivePreview)); - - ::testing::Mock::VerifyAndClearExpectations(&mock); - double captured = -1.0; - EXPECT_CALL(mock, scrollToRatio(::testing::_)) - .WillRepeatedly([&captured](double r) { captured = r; }); - auto sb = wra.textEditor()->verticalScrollBar(); - sb->setValue(sb->maximum() / 2); - EXPECT_GT(captured, 0.0); - EXPECT_LE(captured, 1.0); - sb->setValue(sb->maximum()); - EXPECT_DOUBLE_EQ(captured, 1.0); -} - -// §8.1:渲染视图(ReadView/LivePreview 右栏)右键弹「视图模式」菜单——TextEdit 动作可复用 -TEST(UT_EditWrapper_Markdown, RenderView_HasViewModeContextMenu) -{ - EditWrapper wra; - wra.m_isMarkdown = true; - EXPECT_TRUE(wra.setViewMode(ViewMode::ReadView)); - ASSERT_NE(wra.m_pMarkdownView, nullptr); - // CustomContextMenu 策略:右键事件不再落入 Chromium 默认菜单,由 EditWrapper 弹视图模式菜单 - EXPECT_EQ(wra.m_pMarkdownView->contextMenuPolicy(), Qt::CustomContextMenu); -} - -// §4.5:非 Edit 模式下文本变化经 RenderThrottle(ready 后)转发 renderer -TEST(UT_EditWrapper_Markdown, TextChange_ThrottledToRenderer) -{ - EditWrapper wra; - MockMarkdownRenderer mock; - wra.setMarkdownRendererForTest(&mock); - wra.m_isMarkdown = true; - EXPECT_CALL(mock, isReady()).WillRepeatedly(::testing::Return(true)); - EXPECT_CALL(mock, setMode(_)).Times(::testing::AnyNumber()); - EXPECT_CALL(mock, setLayout(_, _)).Times(::testing::AnyNumber()); - EXPECT_CALL(mock, setMarkdown(_)).Times(::testing::AnyNumber()); - EXPECT_TRUE(wra.setViewMode(ViewMode::LivePreview)); - - ::testing::Mock::VerifyAndClearExpectations(&mock); - EXPECT_CALL(mock, isReady()).WillRepeatedly(::testing::Return(true)); - QString captured; - EXPECT_CALL(mock, setMarkdown(::testing::_)) - .WillRepeatedly([&captured](const QString &md) { captured = md; }); - // 节流前沿:首次变更同步立即发出(事件驱动兜底:极端时序下允许 300ms 内到达) - QSignalSpy spy(&wra.m_renderThrottle, &RenderThrottle::renderRequested); - wra.textEditor()->setPlainText(QStringLiteral("changed")); - if (spy.count() == 0) - ASSERT_TRUE(spy.wait(5000)); - EXPECT_EQ(captured, QStringLiteral("changed")); -} - -// §4.4 实机几何验证:LivePreview 左右两栏都必须可见且宽度合理(用户反馈"只有 markdown 显示") -TEST(UT_EditWrapper_Markdown, LivePreview_BothPanesVisibleGeometry) -{ - EditWrapper wra; - wra.resize(1000, 600); - wra.show(); - QApplication::processEvents(); - wra.m_isMarkdown = true; - ASSERT_TRUE(wra.setViewMode(ViewMode::LivePreview)); - QApplication::processEvents(); - - auto *splitter = wra.m_pLiveSplitter; - ASSERT_NE(splitter, nullptr); - ASSERT_EQ(splitter->count(), 2); - EXPECT_EQ(splitter->widget(0), wra.m_pEditPage); - EXPECT_EQ(splitter->widget(1), wra.m_pMarkdownView); - - qDebug() << "[geom] splitter size =" << splitter->size() - << "sizes =" << splitter->sizes() - << "editPage =" << wra.m_pEditPage->size() - << "mdView =" << wra.m_pMarkdownView->size(); - - EXPECT_TRUE(wra.m_pEditPage->isVisibleTo(&wra)); - EXPECT_TRUE(wra.m_pMarkdownView->isVisibleTo(&wra)); - EXPECT_GT(wra.m_pEditPage->width(), 100); - EXPECT_GT(wra.m_pMarkdownView->width(), 100); - EXPECT_GT(splitter->sizes().first(), 100); -} - -// §4.4 多次往返切换(LivePreview→Edit→ReadView→LivePreview)后左右两栏仍可见 -TEST(UT_EditWrapper_Markdown, LivePreview_GeometryAfterModeCycling) -{ - EditWrapper wra; - wra.resize(1000, 600); - wra.show(); - QApplication::processEvents(); - wra.m_isMarkdown = true; - - ASSERT_TRUE(wra.setViewMode(ViewMode::LivePreview)); - EXPECT_TRUE(wra.m_pEditPage->isVisibleTo(&wra)); - EXPECT_GT(wra.m_pEditPage->width(), 100); - - ASSERT_TRUE(wra.setViewMode(ViewMode::Edit)); - ASSERT_TRUE(wra.setViewMode(ViewMode::ReadView)); - EXPECT_TRUE(wra.m_pMarkdownView->isVisibleTo(&wra)); - EXPECT_GT(wra.m_pMarkdownView->width(), 100); - - ASSERT_TRUE(wra.setViewMode(ViewMode::LivePreview)); - QApplication::processEvents(); - EXPECT_TRUE(wra.m_pEditPage->isVisibleTo(&wra)); - EXPECT_TRUE(wra.m_pMarkdownView->isVisibleTo(&wra)); - EXPECT_GT(wra.m_pEditPage->width(), 100); - EXPECT_GT(wra.m_pMarkdownView->width(), 100); -} - -// 图片路径改写接线:推送渲染的内容经 MarkdownLogic::resolveImagePaths 按 md 文件目录改写 -TEST(UT_EditWrapper_Markdown, ImagePath_RewrittenBeforeRender) -{ - EditWrapper wra; - MockMarkdownRenderer mock; - wra.setMarkdownRendererForTest(&mock); - wra.m_isMarkdown = true; - wra.textEditor()->setFilePath(QStringLiteral("/tmp/docs/demo.md")); - wra.textEditor()->setPlainText(QStringLiteral("# t\n\n![alt](sample.png)\n")); - EXPECT_CALL(mock, isReady()).WillRepeatedly(::testing::Return(true)); - EXPECT_CALL(mock, setMode(_)).Times(::testing::AnyNumber()); - EXPECT_CALL(mock, setLayout(_, _)).Times(::testing::AnyNumber()); - QString captured; - EXPECT_CALL(mock, setMarkdown(::testing::_)) - .WillRepeatedly([&captured](const QString &md) { captured = md; }); - EXPECT_TRUE(wra.setViewMode(ViewMode::LivePreview)); - EXPECT_TRUE(captured.contains(QStringLiteral("mdimg:///tmp/docs/sample.png"))); -} - -// §4.6 反向同步:右栏滚动通知(scrollRatioChanged)驱动左栏 TextEdit 按比例滚动 -TEST(UT_EditWrapper_Markdown, ReverseScroll_SyncsLeftEditor) -{ - EditWrapper wra; - wra.m_isMarkdown = true; - QString longText; - for (int i = 0; i < 300; ++i) - longText += QStringLiteral("line %1\n").arg(i); - wra.textEditor()->setPlainText(longText); - ASSERT_TRUE(wra.setViewMode(ViewMode::LivePreview)); - ASSERT_NE(wra.m_pMarkdownView, nullptr); - - auto sb = wra.textEditor()->verticalScrollBar(); - sb->setValue(0); - const int half = sb->minimum() + (sb->maximum() - sb->minimum()) / 2; - - QSignalSpy outSpy(wra.m_pMarkdownView->bridge(), &MarkdownBridge::scrollToRatioRequested); - emit wra.m_pMarkdownView->bridge()->scrollRatioChanged(0.5); // 模拟 JS 端用户滚动 - EXPECT_GE(sb->value(), half - 2); // 左栏应跟到约一半 - // 防回环:应用反向同步期间不应再向右栏转发 scrollToRatio - EXPECT_EQ(outSpy.count(), 0); -} - -// §4.6 反向同步仅在 LivePreview 生效(ReadView 下右栏滚动不影响编辑器——编辑器不可见) -TEST(UT_EditWrapper_Markdown, ReverseScroll_InactiveInReadView) -{ - EditWrapper wra; - wra.m_isMarkdown = true; - QString longText; - for (int i = 0; i < 300; ++i) - longText += QStringLiteral("line %1\n").arg(i); - wra.textEditor()->setPlainText(longText); - ASSERT_TRUE(wra.setViewMode(ViewMode::ReadView)); - - auto sb = wra.textEditor()->verticalScrollBar(); - sb->setValue(0); - emit wra.m_pMarkdownView->bridge()->scrollRatioChanged(0.5); - EXPECT_EQ(sb->value(), 0); -} diff --git a/tests/src/editor/markdown/ut_editwrapper_markdown.h b/tests/src/editor/markdown/ut_editwrapper_markdown.h deleted file mode 100644 index a7acbf84d..000000000 --- a/tests/src/editor/markdown/ut_editwrapper_markdown.h +++ /dev/null @@ -1,33 +0,0 @@ -// SPDX-FileCopyrightText: 2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef UT_EDITWRAPPER_MARKDOWN_H -#define UT_EDITWRAPPER_MARKDOWN_H - -#include "gtest/gtest.h" -#include -#include -#include "markdown/imarkdownrenderer.h" - -// GMock 替身:记录所有 IMarkdownRenderer 调用,无需启动 WebEngine -class MockMarkdownRenderer : public IMarkdownRenderer -{ -public: - // gmock 无法直接 mock const method,用 MOCK_CONST_METHOD0 - MOCK_CONST_METHOD0(isReady, bool()); - MOCK_METHOD1(setMarkdown, void(const QString &md)); - MOCK_METHOD1(setMode, void(int mode)); - MOCK_METHOD1(applyTheme, void(const QVariantMap &themeMap)); - MOCK_METHOD2(setLayout, void(int maxContentWidth, bool center)); - MOCK_METHOD1(scrollToRatio, void(double ratio)); -}; - -class UT_EditWrapper_Markdown : public QObject, public ::testing::Test -{ - Q_OBJECT -public: - UT_EditWrapper_Markdown(); -}; - -#endif // UT_EDITWRAPPER_MARKDOWN_H diff --git a/tests/src/editor/markdown/ut_markdownbridge.cpp b/tests/src/editor/markdown/ut_markdownbridge.cpp deleted file mode 100644 index ed36eaaad..000000000 --- a/tests/src/editor/markdown/ut_markdownbridge.cpp +++ /dev/null @@ -1,124 +0,0 @@ -// SPDX-FileCopyrightText: 2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "ut_markdownbridge.h" -#include "markdownbridge.h" - -#include - -UT_MarkdownBridge::UT_MarkdownBridge() -{ -} - -// onReady 应触发 ready 信号(JS 侧 Milkdown 创建完成后调用) -TEST_F(UT_MarkdownBridge, OnReady_EmitsReadySignal) -{ - MarkdownBridge bridge; - QSignalSpy spy(&bridge, &MarkdownBridge::ready); - ASSERT_TRUE(spy.isValid()); - - bridge.onReady(); - - EXPECT_EQ(spy.count(), 1); -} - -// onContentChanged 应转发 contentChanged 信号并原样携带 md(阶段二启用,接口先到位) -TEST_F(UT_MarkdownBridge, OnContentChanged_EmitsContentChangedWithPayload) -{ - MarkdownBridge bridge; - QSignalSpy spy(&bridge, &MarkdownBridge::contentChanged); - - bridge.onContentChanged(QStringLiteral("# hello")); - - ASSERT_EQ(spy.count(), 1); - EXPECT_EQ(spy.takeFirst().at(0).toString(), QStringLiteral("# hello")); -} - -// onScrollRatio 应转发 scrollRatioChanged 信号并携带 ratio -TEST_F(UT_MarkdownBridge, OnScrollRatio_EmitsScrollRatioChangedWithPayload) -{ - MarkdownBridge bridge; - QSignalSpy spy(&bridge, &MarkdownBridge::scrollRatioChanged); - - bridge.onScrollRatio(0.5); - - ASSERT_EQ(spy.count(), 1); - EXPECT_DOUBLE_EQ(spy.takeFirst().at(0).toDouble(), 0.5); -} - -// onOpenLink 应转发 openLinkRequested 信号并原样携带 url(JS 点击拦截外部链接 → 系统浏览器) -TEST_F(UT_MarkdownBridge, OnOpenLink_EmitsOpenLinkRequestedWithPayload) -{ - MarkdownBridge bridge; - QSignalSpy spy(&bridge, &MarkdownBridge::openLinkRequested); - - bridge.onOpenLink(QStringLiteral("https://www.deepin.org/index.shtml")); - - ASSERT_EQ(spy.count(), 1); - EXPECT_EQ(spy.takeFirst().at(0).toString(), QStringLiteral("https://www.deepin.org/index.shtml")); -} - -// C++ → JS 信号:setMarkdownRequested 应可被 QSignalSpy 捕获(验证信号存在且可连接) -TEST_F(UT_MarkdownBridge, SetMarkdownRequested_IsEmitable) -{ - MarkdownBridge bridge; - QSignalSpy spy(&bridge, &MarkdownBridge::setMarkdownRequested); - - emit bridge.setMarkdownRequested(QStringLiteral("body")); - - ASSERT_EQ(spy.count(), 1); - EXPECT_EQ(spy.takeFirst().at(0).toString(), QStringLiteral("body")); -} - -// applyThemeRequested 信号存在性 + 双参数载荷(jsonColors / isDark) -TEST_F(UT_MarkdownBridge, ApplyThemeRequested_IsEmitableWithTwoArgs) -{ - MarkdownBridge bridge; - QSignalSpy spy(&bridge, &MarkdownBridge::applyThemeRequested); - - emit bridge.applyThemeRequested(QStringLiteral("{\"--bg\":\"#fff\"}"), true); - - ASSERT_EQ(spy.count(), 1); - QList args = spy.takeFirst(); - EXPECT_EQ(args.at(0).toString(), QStringLiteral("{\"--bg\":\"#fff\"}")); - EXPECT_TRUE(args.at(1).toBool()); -} - -// setModeRequested 信号载荷(editable 开关) -TEST_F(UT_MarkdownBridge, SetModeRequested_IsEmitable) -{ - MarkdownBridge bridge; - QSignalSpy spy(&bridge, &MarkdownBridge::setModeRequested); - - emit bridge.setModeRequested(true); - - ASSERT_EQ(spy.count(), 1); - EXPECT_TRUE(spy.takeFirst().at(0).toBool()); -} - -// setLayoutRequested 信号载荷(maxW / center) -TEST_F(UT_MarkdownBridge, SetLayoutRequested_IsEmitableWithTwoArgs) -{ - MarkdownBridge bridge; - QSignalSpy spy(&bridge, &MarkdownBridge::setLayoutRequested); - - emit bridge.setLayoutRequested(800, true); - - ASSERT_EQ(spy.count(), 1); - QList args = spy.takeFirst(); - EXPECT_EQ(args.at(0).toInt(), 800); - EXPECT_TRUE(args.at(1).toBool()); -} - -// scrollToRatioRequested 信号载荷 -TEST_F(UT_MarkdownBridge, ScrollToRatioRequested_IsEmitable) -{ - MarkdownBridge bridge; - QSignalSpy spy(&bridge, &MarkdownBridge::scrollToRatioRequested); - - emit bridge.scrollToRatioRequested(0.25); - - ASSERT_EQ(spy.count(), 1); - EXPECT_DOUBLE_EQ(spy.takeFirst().at(0).toDouble(), 0.25); -} diff --git a/tests/src/editor/markdown/ut_markdownbridge.h b/tests/src/editor/markdown/ut_markdownbridge.h deleted file mode 100644 index ed600c706..000000000 --- a/tests/src/editor/markdown/ut_markdownbridge.h +++ /dev/null @@ -1,18 +0,0 @@ -// SPDX-FileCopyrightText: 2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef UT_MARKDOWNBRIDGE_H -#define UT_MARKDOWNBRIDGE_H - -#include "gtest/gtest.h" -#include - -class UT_MarkdownBridge : public QObject, public ::testing::Test -{ - Q_OBJECT -public: - UT_MarkdownBridge(); -}; - -#endif // UT_MARKDOWNBRIDGE_H diff --git a/tests/src/editor/markdown/ut_markdownlogic.cpp b/tests/src/editor/markdown/ut_markdownlogic.cpp deleted file mode 100644 index f5cdf16ae..000000000 --- a/tests/src/editor/markdown/ut_markdownlogic.cpp +++ /dev/null @@ -1,121 +0,0 @@ -// SPDX-FileCopyrightText: 2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "ut_markdownlogic.h" -#include "markdownlogic.h" - -UT_MarkdownLogic::UT_MarkdownLogic() -{ -} - -// definition 名为 "Markdown" → 是 markdown -TEST_F(UT_MarkdownLogic, IsMarkdown_DefinitionNameMarkdown_True) -{ - EXPECT_TRUE(MarkdownLogic::isMarkdownByDefinitionName(QStringLiteral("Markdown"))); -} - -// definition 名大小写敏感(KSyntaxHighlighting 规范名为 "Markdown") -TEST_F(UT_MarkdownLogic, IsMarkdown_DefinitionNameLowercase_False) -{ - EXPECT_FALSE(MarkdownLogic::isMarkdownByDefinitionName(QStringLiteral("markdown"))); -} - -// definition 名为空 → false -TEST_F(UT_MarkdownLogic, IsMarkdown_EmptyDefinitionName_False) -{ - EXPECT_FALSE(MarkdownLogic::isMarkdownByDefinitionName(QStringLiteral(""))); -} - -// definition 名为其他语言 → false -TEST_F(UT_MarkdownLogic, IsMarkdown_OtherLanguage_False) -{ - EXPECT_FALSE(MarkdownLogic::isMarkdownByDefinitionName(QStringLiteral("C++"))); -} - -// 扩展名 .md → markdown -TEST_F(UT_MarkdownLogic, IsMarkdown_DotMd_True) -{ - EXPECT_TRUE(MarkdownLogic::isMarkdownByFileName(QStringLiteral("readme.md"))); - EXPECT_TRUE(MarkdownLogic::isMarkdownByFileName(QStringLiteral("README.MD"))); -} - -// 扩展名 .markdown → markdown -TEST_F(UT_MarkdownLogic, IsMarkdown_DotMarkdown_True) -{ - EXPECT_TRUE(MarkdownLogic::isMarkdownByFileName(QStringLiteral("notes.markdown"))); -} - -// 扩展名 .mdown → markdown -TEST_F(UT_MarkdownLogic, IsMarkdown_DotMdown_True) -{ - EXPECT_TRUE(MarkdownLogic::isMarkdownByFileName(QStringLiteral("doc.mdown"))); -} - -// 扩展名 .txt → 不是 markdown -TEST_F(UT_MarkdownLogic, IsMarkdown_DotTxt_False) -{ - EXPECT_FALSE(MarkdownLogic::isMarkdownByFileName(QStringLiteral("notes.txt"))); -} - -// 扩展名 .cpp → 不是 markdown -TEST_F(UT_MarkdownLogic, IsMarkdown_DotCpp_False) -{ - EXPECT_FALSE(MarkdownLogic::isMarkdownByFileName(QStringLiteral("main.cpp"))); -} - -// 无扩展名 → false -TEST_F(UT_MarkdownLogic, IsMarkdown_NoExtension_False) -{ - EXPECT_FALSE(MarkdownLogic::isMarkdownByFileName(QStringLiteral("Makefile"))); -} - -// 综合判定:definition 优先,其次扩展名 -TEST_F(UT_MarkdownLogic, IsMarkdown_Combined_DefinitionFirst) -{ - // definition 名为 Markdown,即使文件名无扩展名也判为 true - EXPECT_TRUE(MarkdownLogic::isMarkdown(QStringLiteral("Makefile"), QStringLiteral("Markdown"))); - // definition 名为空,扩展名 .md → true - EXPECT_TRUE(MarkdownLogic::isMarkdown(QStringLiteral("x.md"), QStringLiteral(""))); - // 都不匹配 → false - EXPECT_FALSE(MarkdownLogic::isMarkdown(QStringLiteral("x.txt"), QStringLiteral("Plain Text"))); -} - -// 新建 .txt 不应识别为 markdown(需求:新建 txt 不触发渲染) -TEST_F(UT_MarkdownLogic, IsMarkdown_NewTxt_False) -{ - EXPECT_FALSE(MarkdownLogic::isMarkdown(QStringLiteral("untitled.txt"), QStringLiteral("Plain Text"))); -} - -// —— 图片路径解析(渲染页从 qrc:/ 加载,相对路径会错误解析到 qrc,须改写为 file:// 绝对 URL)—— - -// 相对路径 → baseDir 下的 file:// 绝对 URL -TEST_F(UT_MarkdownLogic, ResolveImagePaths_RelativeToBaseDir) -{ - const QString md = QStringLiteral("![alt](sample.png)"); - const QString out = MarkdownLogic::resolveImagePaths(md, QStringLiteral("/tmp/demo")); - EXPECT_EQ(out, QStringLiteral("![alt](mdimg:///tmp/demo/sample.png)")); -} - -// 绝对本地路径 → file:// URL(含中文/空格需百分号编码) -TEST_F(UT_MarkdownLogic, ResolveImagePaths_AbsoluteLocalPath) -{ - const QString out = MarkdownLogic::resolveImagePaths( - QStringLiteral("![x](/home/uos/我的 图片/a.png)"), QStringLiteral("/tmp")); - EXPECT_EQ(out, QStringLiteral("![x](mdimg:///home/uos/%E6%88%91%E7%9A%84%20%E5%9B%BE%E7%89%87/a.png)")); -} - -// 网络与 data URI 原样保留 -TEST_F(UT_MarkdownLogic, ResolveImagePaths_RemoteAndDataUnchanged) -{ - const QString md = QStringLiteral("![a](https://x.org/i.png) ![b](http://y.org/j.png) ![c](data:image/png;base64,AAAA)"); - EXPECT_EQ(MarkdownLogic::resolveImagePaths(md, QStringLiteral("/tmp")), md); -} - -// 非 image 的普通链接不改动;带标题的图片语法保留标题 -TEST_F(UT_MarkdownLogic, ResolveImagePaths_NonImageLinkAndTitle) -{ - const QString md = QStringLiteral("[link](sample.png) ![t](pic.png \"title\")"); - const QString out = MarkdownLogic::resolveImagePaths(md, QStringLiteral("/d")); - EXPECT_EQ(out, QStringLiteral("[link](sample.png) ![t](mdimg:///d/pic.png \"title\")")); -} diff --git a/tests/src/editor/markdown/ut_markdownlogic.h b/tests/src/editor/markdown/ut_markdownlogic.h deleted file mode 100644 index 0c1441c90..000000000 --- a/tests/src/editor/markdown/ut_markdownlogic.h +++ /dev/null @@ -1,18 +0,0 @@ -// SPDX-FileCopyrightText: 2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef UT_MARKDOWNLOGIC_H -#define UT_MARKDOWNLOGIC_H - -#include "gtest/gtest.h" -#include - -class UT_MarkdownLogic : public QObject, public ::testing::Test -{ - Q_OBJECT -public: - UT_MarkdownLogic(); -}; - -#endif // UT_MARKDOWNLOGIC_H diff --git a/tests/src/editor/markdown/ut_markdownview.cpp b/tests/src/editor/markdown/ut_markdownview.cpp deleted file mode 100644 index 90f652e7f..000000000 --- a/tests/src/editor/markdown/ut_markdownview.cpp +++ /dev/null @@ -1,169 +0,0 @@ -// SPDX-FileCopyrightText: 2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "ut_markdownview.h" -#include "markdownview.h" -#include "markdownbridge.h" - -#include - -UT_MarkdownView::UT_MarkdownView() -{ -} - -// 构造后(未 init/load)默认未就绪 -TEST_F(UT_MarkdownView, Construct_NotReadyByDefault) -{ - MarkdownView v; - EXPECT_FALSE(v.isReady()); -} - -// setMarkdown 应转发为 bridge 的 setMarkdownRequested(经 MarkdownView 内部 bridge) -// 这里不监听内部 bridge,而是通过暴露的 bridge 访问器验证转发链路。 -TEST_F(UT_MarkdownView, SetMarkdown_ForwardsToBridge) -{ - MarkdownView v; - QSignalSpy spy(v.bridge(), &MarkdownBridge::setMarkdownRequested); - - v.setMarkdown(QStringLiteral("# title")); - - ASSERT_EQ(spy.count(), 1); - EXPECT_EQ(spy.takeFirst().at(0).toString(), QStringLiteral("# title")); -} - -// setMode(ReadOnly) 应转发 setModeRequested(false) -TEST_F(UT_MarkdownView, SetMode_ReadOnly_ForwardsFalse) -{ - MarkdownView v; - QSignalSpy spy(v.bridge(), &MarkdownBridge::setModeRequested); - - v.setMode(static_cast(MarkdownView::Mode::ReadOnly)); - - ASSERT_EQ(spy.count(), 1); - EXPECT_FALSE(spy.takeFirst().at(0).toBool()); -} - -// setMode(Editable) 应转发 setModeRequested(true)(阶段二用,本期接口先到位) -TEST_F(UT_MarkdownView, SetMode_Editable_ForwardsTrue) -{ - MarkdownView v; - QSignalSpy spy(v.bridge(), &MarkdownBridge::setModeRequested); - - v.setMode(static_cast(MarkdownView::Mode::Editable)); - - ASSERT_EQ(spy.count(), 1); - EXPECT_TRUE(spy.takeFirst().at(0).toBool()); -} - -// setLayout 应转发 maxContentWidth / center -TEST_F(UT_MarkdownView, SetLayout_ForwardsArgs) -{ - MarkdownView v; - QSignalSpy spy(v.bridge(), &MarkdownBridge::setLayoutRequested); - - v.setLayout(800, true); - - ASSERT_EQ(spy.count(), 1); - QList args = spy.takeFirst(); - EXPECT_EQ(args.at(0).toInt(), 800); - EXPECT_TRUE(args.at(1).toBool()); -} - -// setLayout(maxContentWidth=0) 表示不限最大宽(实时阅览半幅场景) -TEST_F(UT_MarkdownView, SetLayout_ZeroMaxWidth_ForwardsZero) -{ - MarkdownView v; - QSignalSpy spy(v.bridge(), &MarkdownBridge::setLayoutRequested); - - v.setLayout(0, false); - - ASSERT_EQ(spy.count(), 1); - QList args = spy.takeFirst(); - EXPECT_EQ(args.at(0).toInt(), 0); - EXPECT_FALSE(args.at(1).toBool()); -} - -// scrollToRatio 应转发 ratio -TEST_F(UT_MarkdownView, ScrollToRatio_ForwardsRatio) -{ - MarkdownView v; - QSignalSpy spy(v.bridge(), &MarkdownBridge::scrollToRatioRequested); - - v.scrollToRatio(0.75); - - ASSERT_EQ(spy.count(), 1); - EXPECT_DOUBLE_EQ(spy.takeFirst().at(0).toDouble(), 0.75); -} - -// bridge.onReady() → MarkdownView 内部置 ready 标志 + 发 ready 信号 -TEST_F(UT_MarkdownView, BridgeReady_SetsReadyAndEmitsSignal) -{ - MarkdownView v; - QSignalSpy spy(&v, &MarkdownView::ready); - ASSERT_FALSE(v.isReady()); - - v.bridge()->onReady(); - - EXPECT_TRUE(v.isReady()); - EXPECT_EQ(spy.count(), 1); -} - -// bridge 的 scrollRatioChanged 应穿透为 MarkdownView::scrollRatioChanged(预留,本期不连上层) -TEST_F(UT_MarkdownView, BridgeScrollRatio_PassesThrough) -{ - MarkdownView v; - QSignalSpy spy(&v, &MarkdownView::scrollRatioChanged); - - v.bridge()->onScrollRatio(0.4); - - ASSERT_EQ(spy.count(), 1); - EXPECT_DOUBLE_EQ(spy.takeFirst().at(0).toDouble(), 0.4); -} - -// bridge 的 contentChanged 应穿透为 MarkdownView::contentChanged(预留,本期不连上层) -TEST_F(UT_MarkdownView, BridgeContentChanged_PassesThrough) -{ - MarkdownView v; - QSignalSpy spy(&v, &MarkdownView::contentChanged); - - v.bridge()->onContentChanged(QStringLiteral("body")); - - ASSERT_EQ(spy.count(), 1); - EXPECT_EQ(spy.takeFirst().at(0).toString(), QStringLiteral("body")); -} - -// §4.7/§5.3:页面加载是异步的,ready 前 applyTheme 的主题须缓存,ready 后自动补发 -TEST_F(UT_MarkdownView, ApplyTheme_BeforeReady_ReemittedAfterReady) -{ - MarkdownView v; - QVariantMap themeMap; - themeMap["editor-colors"] = QVariantMap{ - {"background-color", "#1e1e1e"}, - {"text-color", "#d8d8d8"}, - }; - QSignalSpy spy(v.bridge(), &MarkdownBridge::applyThemeRequested); - - v.applyTheme(themeMap); // 页面未 ready:直发一次(若 JS 未接线则丢失) - ASSERT_EQ(spy.count(), 1); - - v.bridge()->onReady(); // 页面就绪:应补发缓存主题 - ASSERT_EQ(spy.count(), 2); - const auto args = spy.takeLast(); - EXPECT_EQ(args.at(1).toBool(), true); // 深色背景 → isDark=true -} - -// ready 之后的 applyTheme 不重复补发 -TEST_F(UT_MarkdownView, ApplyTheme_AfterReady_NoReemit) -{ - MarkdownView v; - v.bridge()->onReady(); - QVariantMap themeMap; - themeMap["editor-colors"] = QVariantMap{ - {"background-color", "#ffffff"}, - {"text-color", "#1f1f1f"}, - }; - QSignalSpy spy(v.bridge(), &MarkdownBridge::applyThemeRequested); - v.applyTheme(themeMap); - EXPECT_EQ(spy.count(), 1); -} diff --git a/tests/src/editor/markdown/ut_markdownview.h b/tests/src/editor/markdown/ut_markdownview.h deleted file mode 100644 index 62468934b..000000000 --- a/tests/src/editor/markdown/ut_markdownview.h +++ /dev/null @@ -1,18 +0,0 @@ -// SPDX-FileCopyrightText: 2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef UT_MARKDOWNVIEW_H -#define UT_MARKDOWNVIEW_H - -#include "gtest/gtest.h" -#include - -class UT_MarkdownView : public QObject, public ::testing::Test -{ - Q_OBJECT -public: - UT_MarkdownView(); -}; - -#endif // UT_MARKDOWNVIEW_H diff --git a/tests/src/editor/markdown/ut_renderthrottle.cpp b/tests/src/editor/markdown/ut_renderthrottle.cpp deleted file mode 100644 index 23bd03487..000000000 --- a/tests/src/editor/markdown/ut_renderthrottle.cpp +++ /dev/null @@ -1,182 +0,0 @@ -// SPDX-FileCopyrightText: 2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "ut_renderthrottle.h" -#include "renderthrottle.h" - -#include -#include - -UT_RenderThrottle::UT_RenderThrottle() -{ -} - -// 默认去抖间隔 300ms -TEST_F(UT_RenderThrottle, DefaultInterval_300ms) -{ - RenderThrottle t; - EXPECT_EQ(t.interval(), 300); -} - -// ready 默认 false -TEST_F(UT_RenderThrottle, DefaultNotReady) -{ - RenderThrottle t; - EXPECT_FALSE(t.isReady()); -} - -// 冷却窗口内多次输入:前沿渲染首个内容 + 后沿渲染最新内容(共 2 次,各自延迟 ≤300ms) -// 注:输入必须背靠背同步调用——同步调用之间事件循环不运转,300ms 定时器不可能触发, -// 从而保证 b/c 确定性地落在冷却窗口内。若用 qWait 分隔输入,高负载(ASan+gcov 全量 -// 运行)下 qWait 超时会使输入落到冷却期外而成为新前沿,得到 3 次渲染(时序抖动,非缺陷) -TEST_F(UT_RenderThrottle, MultipleInputs_Within300ms_LeadingAndTrailing) -{ - RenderThrottle t; - t.setReady(true); - QSignalSpy spy(&t, &RenderThrottle::renderRequested); - - t.noteContent(QStringLiteral("a")); // 前沿:立即渲染 "a",进入 300ms 冷却 - ASSERT_EQ(spy.count(), 1); - t.noteContent(QStringLiteral("b")); // 冷却期内累积 - t.noteContent(QStringLiteral("c")); // pending 更新为最新 "c" - - // 轮询等待后沿补发(单次 qWait 在事件循环被饿死时可能错过定时器投递) - for (int i = 0; i < 250 && spy.count() < 2; ++i) - QTest::qWait(20); - - ASSERT_EQ(spy.count(), 2); // 前沿 "a" + 后沿 "c" - EXPECT_EQ(spy.takeFirst().at(0).toString(), QStringLiteral("a")); - EXPECT_EQ(spy.takeFirst().at(0).toString(), QStringLiteral("c")); -} - -// 冷却期外的首次变更立即渲染(前沿),不等 300ms -TEST_F(UT_RenderThrottle, ReadyAndNote_EmitsImmediately_LeadingEdge) -{ - RenderThrottle t; - t.setReady(true); - QSignalSpy spy(&t, &RenderThrottle::renderRequested); - - t.noteContent(QStringLiteral("hello")); - EXPECT_EQ(spy.count(), 1); // 前沿:立即发出 - EXPECT_EQ(spy.takeFirst().at(0).toString(), QStringLiteral("hello")); -} - -// 连续输入期间每 300ms 渲染一次(不停顿也能实时刷新,2026-08-19 修订的节流语义) -TEST_F(UT_RenderThrottle, ContinuousInput_RendersPeriodically) -{ - RenderThrottle t; - t.setReady(true); - QSignalSpy spy(&t, &RenderThrottle::renderRequested); - - // 每 50ms 输入一次,持续约 700ms(模拟连续击键) - for (int i = 0; i <= 14; ++i) { - t.noteContent(QStringLiteral("v%1").arg(i)); - QTest::qWait(50); - } - QTest::qWait(350); // 等最后一次后沿补发 - - // 700ms 连续输入 + 节流 300ms:至少 3 次渲染(前沿 + 每 300ms 后沿) - EXPECT_GE(spy.count(), 3); - // 最后发出的应为最新内容 v14 - EXPECT_EQ(spy.takeLast().at(0).toString(), QStringLiteral("v14")); -} - -// 输入停止后:最后一个周期无新内容,定时器自然停止,不再多发 -TEST_F(UT_RenderThrottle, InputStops_NoExtraEmitAfterTrailing) -{ - RenderThrottle t; - t.setReady(true); - QSignalSpy spy(&t, &RenderThrottle::renderRequested); - - t.noteContent(QStringLiteral("a")); - QTest::qWait(50); - t.noteContent(QStringLiteral("b")); - QTest::qWait(400); // 前沿 "a" + 后沿 "b",共 2 次 - ASSERT_EQ(spy.count(), 2); - spy.clear(); - - QTest::qWait(600); // 之后无输入:不再有任何渲染 - EXPECT_EQ(spy.count(), 0); -} - -// 相同内容跳过(md == lastEmitted 不 emit) -TEST_F(UT_RenderThrottle, SameContent_Skipped) -{ - RenderThrottle t; - t.setReady(true); - QSignalSpy spy(&t, &RenderThrottle::renderRequested); - - t.noteContent(QStringLiteral("same")); - QTest::qWait(350); - ASSERT_EQ(spy.count(), 1); - spy.clear(); - - t.noteContent(QStringLiteral("same")); // 相同 - QTest::qWait(350); - EXPECT_EQ(spy.count(), 0); -} - -// ready 前缓存:noteContent 后 timer 到期不 emit(因为 not ready) -TEST_F(UT_RenderThrottle, NotReady_NoteContent_CachedNoEmit) -{ - RenderThrottle t; - t.setReady(false); - QSignalSpy spy(&t, &RenderThrottle::renderRequested); - - t.noteContent(QStringLiteral("pending")); - QTest::qWait(350); - EXPECT_EQ(spy.count(), 0); // 未 ready,缓存不发出 -} - -// ready 前缓存的内容,setReady(true) 后立即 flush -TEST_F(UT_RenderThrottle, PendingContent_FlushedOnReady) -{ - RenderThrottle t; - t.setReady(false); - QSignalSpy spy(&t, &RenderThrottle::renderRequested); - - t.noteContent(QStringLiteral("pending")); - QTest::qWait(350); - ASSERT_EQ(spy.count(), 0); - - t.setReady(true); // flush - ASSERT_EQ(spy.count(), 1); - EXPECT_EQ(spy.takeFirst().at(0).toString(), QStringLiteral("pending")); -} - -// 首切立即触发:flushNow 跳过去抖,立即 emit -TEST_F(UT_RenderThrottle, FlushNow_EmitsImmediately) -{ - RenderThrottle t; - t.setReady(true); - QSignalSpy spy(&t, &RenderThrottle::renderRequested); - - t.noteContent(QStringLiteral("first")); - t.flushNow(); // 不等 300ms - ASSERT_EQ(spy.count(), 1); - EXPECT_EQ(spy.takeFirst().at(0).toString(), QStringLiteral("first")); -} - -// flushNow 未 ready 时缓存(不 emit,等 ready) -TEST_F(UT_RenderThrottle, FlushNow_NotReady_CachedOnly) -{ - RenderThrottle t; - t.setReady(false); - QSignalSpy spy(&t, &RenderThrottle::renderRequested); - - t.noteContent(QStringLiteral("x")); - t.flushNow(); - EXPECT_EQ(spy.count(), 0); // 未 ready 不 emit -} - -// setReady(true) 但无 pending 内容,不 emit -TEST_F(UT_RenderThrottle, SetReady_NoPending_NoEmit) -{ - RenderThrottle t; - t.setReady(false); - QSignalSpy spy(&t, &RenderThrottle::renderRequested); - - t.setReady(true); - EXPECT_EQ(spy.count(), 0); -} diff --git a/tests/src/editor/markdown/ut_renderthrottle.h b/tests/src/editor/markdown/ut_renderthrottle.h deleted file mode 100644 index 919b5b7a3..000000000 --- a/tests/src/editor/markdown/ut_renderthrottle.h +++ /dev/null @@ -1,18 +0,0 @@ -// SPDX-FileCopyrightText: 2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef UT_RENDERTHROTTLE_H -#define UT_RENDERTHROTTLE_H - -#include "gtest/gtest.h" -#include - -class UT_RenderThrottle : public QObject, public ::testing::Test -{ - Q_OBJECT -public: - UT_RenderThrottle(); -}; - -#endif // UT_RENDERTHROTTLE_H diff --git a/tests/src/editor/markdown/ut_scrollsync.cpp b/tests/src/editor/markdown/ut_scrollsync.cpp deleted file mode 100644 index a4bb3651a..000000000 --- a/tests/src/editor/markdown/ut_scrollsync.cpp +++ /dev/null @@ -1,61 +0,0 @@ -// SPDX-FileCopyrightText: 2026 UnionCTechnology Software Technology Co., Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "ut_scrollsync.h" -#include "scrollsync.h" - -UT_ScrollSync::UT_ScrollSync() -{ -} - -// value=min → ratio=0 -TEST_F(UT_ScrollSync, RatioFromBar_AtMin_Zero) -{ - EXPECT_DOUBLE_EQ(ScrollSync::ratioFromScrollBar(0, 0, 100), 0.0); -} - -// value=max → ratio=1 -TEST_F(UT_ScrollSync, RatioFromBar_AtMax_One) -{ - EXPECT_DOUBLE_EQ(ScrollSync::ratioFromScrollBar(100, 0, 100), 1.0); -} - -// value=mid → ratio=0.5 -TEST_F(UT_ScrollSync, RatioFromBar_MidPoint_Half) -{ - EXPECT_DOUBLE_EQ(ScrollSync::ratioFromScrollBar(50, 0, 100), 0.5); -} - -// max=0(无滚动范围)→ ratio=0(除零保护) -TEST_F(UT_ScrollSync, RatioFromBar_MaxZero_NoDivByZero) -{ - EXPECT_DOUBLE_EQ(ScrollSync::ratioFromScrollBar(0, 0, 0), 0.0); -} - -// value < min → 钳制 0 -TEST_F(UT_ScrollSync, RatioFromBar_BelowMin_ClampedZero) -{ - EXPECT_DOUBLE_EQ(ScrollSync::ratioFromScrollBar(-10, 0, 100), 0.0); -} - -// value > max → 钳制 1 -TEST_F(UT_ScrollSync, RatioFromBar_AboveMax_ClampedOne) -{ - EXPECT_DOUBLE_EQ(ScrollSync::ratioFromScrollBar(150, 0, 100), 1.0); -} - -// 非 0 起点 min:ratio 按 (value-min)/(max-min) 计算 -TEST_F(UT_ScrollSync, RatioFromBar_NonZeroMin_Normalized) -{ - EXPECT_DOUBLE_EQ(ScrollSync::ratioFromScrollBar(60, 10, 110), 0.5); -} - -// clampRatio:越界值钳制 [0,1] -TEST_F(UT_ScrollSync, ClampRatio_OutOfRange_Clamped) -{ - EXPECT_DOUBLE_EQ(ScrollSync::clampRatio(-0.5), 0.0); - EXPECT_DOUBLE_EQ(ScrollSync::clampRatio(1.5), 1.0); - EXPECT_DOUBLE_EQ(ScrollSync::clampRatio(0.3), 0.3); - EXPECT_DOUBLE_EQ(ScrollSync::clampRatio(0.0), 0.0); - EXPECT_DOUBLE_EQ(ScrollSync::clampRatio(1.0), 1.0); -} diff --git a/tests/src/editor/markdown/ut_scrollsync.h b/tests/src/editor/markdown/ut_scrollsync.h deleted file mode 100644 index da1b3d780..000000000 --- a/tests/src/editor/markdown/ut_scrollsync.h +++ /dev/null @@ -1,17 +0,0 @@ -// SPDX-FileCopyrightText: 2026 UnionCTechnology Software Technology Co., Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef UT_SCROLLSYNC_H -#define UT_SCROLLSYNC_H - -#include "gtest/gtest.h" -#include - -class UT_ScrollSync : public QObject, public ::testing::Test -{ - Q_OBJECT -public: - UT_ScrollSync(); -}; - -#endif // UT_SCROLLSYNC_H diff --git a/tests/src/editor/markdown/ut_themeserializer.cpp b/tests/src/editor/markdown/ut_themeserializer.cpp deleted file mode 100644 index 9bd52e2b2..000000000 --- a/tests/src/editor/markdown/ut_themeserializer.cpp +++ /dev/null @@ -1,104 +0,0 @@ -// SPDX-FileCopyrightText: 2026 UnionCTechnology Software Technology Co., Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "ut_themeserializer.h" -#include "themeserializer.h" - -#include -#include - -UT_ThemeSerializer::UT_ThemeSerializer() -{ -} - -// 浅色背景 lightness >= 128 → isDark=false -TEST_F(UT_ThemeSerializer, IsDark_LightBackground_False) -{ - QVariantMap theme; - QVariantMap editorColors; - editorColors.insert("background-color", "#ffffff"); // lightness=255 - theme.insert("editor-colors", editorColors); - - EXPECT_FALSE(ThemeSerializer::isDark(theme)); -} - -// 深色背景 lightness < 128 → isDark=true -TEST_F(UT_ThemeSerializer, IsDark_DarkBackground_True) -{ - QVariantMap theme; - QVariantMap editorColors; - editorColors.insert("background-color", "#1f1f1f"); // lightness≈31 - theme.insert("editor-colors", editorColors); - - EXPECT_TRUE(ThemeSerializer::isDark(theme)); -} - -// 空主题不崩溃,默认 false(浅色) -TEST_F(UT_ThemeSerializer, IsDark_EmptyTheme_False) -{ - QVariantMap empty; - EXPECT_FALSE(ThemeSerializer::isDark(empty)); -} - -// 空背景色不崩溃 -TEST_F(UT_ThemeSerializer, IsDark_EmptyBackground_False) -{ - QVariantMap theme; - QVariantMap editorColors; - editorColors.insert("background-color", ""); - theme.insert("editor-colors", editorColors); - EXPECT_FALSE(ThemeSerializer::isDark(theme)); -} - -// 非 hex 颜色不崩溃(QColor 解析失败返回 invalid,lightness=0 → 判深色,不崩) -TEST_F(UT_ThemeSerializer, IsDark_InvalidColor_NoCrash) -{ - QVariantMap theme; - QVariantMap editorColors; - editorColors.insert("background-color", "not-a-color"); - theme.insert("editor-colors", editorColors); - // 不崩即可,具体值不强制(invalid QColor lightness=-1 < 128 → true) - EXPECT_NO_FATAL_FAILURE(ThemeSerializer::isDark(theme)); -} - -// serializeToJson:输出包含从背景色派生的 --bg / --fg 变量 -TEST_F(UT_ThemeSerializer, Serialize_ContainsCssVars) -{ - QVariantMap theme; - QVariantMap editorColors; - editorColors.insert("background-color", "#ffffff"); - editorColors.insert("text-color", "#000000"); - theme.insert("editor-colors", editorColors); - - const QString json = ThemeSerializer::serialize(theme); - ASSERT_FALSE(json.isEmpty()); - - auto doc = QJsonDocument::fromJson(json.toUtf8()); - ASSERT_TRUE(doc.isObject()); - auto obj = doc.object(); - EXPECT_TRUE(obj.contains("--bg")); - EXPECT_TRUE(obj.contains("--fg")); -} - -// serializeToJson:空主题输出合法 JSON(不崩) -TEST_F(UT_ThemeSerializer, Serialize_EmptyTheme_ValidJson) -{ - QVariantMap empty; - const QString json = ThemeSerializer::serialize(empty); - auto doc = QJsonDocument::fromJson(json.toUtf8()); - EXPECT_TRUE(doc.isObject()); -} - -// §4.7:序列化须包含 --code-fg(否则深色主题下代码块深字深底不可读) -TEST_F(UT_ThemeSerializer, Serialize_IncludesCodeFg) -{ - QVariantMap themeMap; - themeMap["editor-colors"] = QVariantMap{ - {"background-color", "#1e1e1e"}, - {"text-color", "#d8d8d8"}, - }; - const QString json = ThemeSerializer::serialize(themeMap); - const auto doc = QJsonDocument::fromJson(json.toUtf8()); - ASSERT_TRUE(doc.object().contains("--code-fg")); - EXPECT_EQ(doc.object().value("--code-fg").toString(), QString("#d8d8d8")); -} diff --git a/tests/src/editor/markdown/ut_themeserializer.h b/tests/src/editor/markdown/ut_themeserializer.h deleted file mode 100644 index b3b5346e6..000000000 --- a/tests/src/editor/markdown/ut_themeserializer.h +++ /dev/null @@ -1,17 +0,0 @@ -// SPDX-FileCopyrightText: 2026 UnionCTechnology Software Technology Co., Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef UT_THEMESERIALIZER_H -#define UT_THEMESERIALIZER_H - -#include "gtest/gtest.h" -#include - -class UT_ThemeSerializer : public QObject, public ::testing::Test -{ - Q_OBJECT -public: - UT_ThemeSerializer(); -}; - -#endif // UT_THEMESERIALIZER_H diff --git a/tests/src/editor/markdown/ut_viewmodefsm.cpp b/tests/src/editor/markdown/ut_viewmodefsm.cpp deleted file mode 100644 index ba649da90..000000000 --- a/tests/src/editor/markdown/ut_viewmodefsm.cpp +++ /dev/null @@ -1,122 +0,0 @@ -// SPDX-FileCopyrightText: 2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "ut_viewmodefsm.h" -#include "viewmodefsm.h" - -UT_ViewModeFsm::UT_ViewModeFsm() -{ -} - -// 打开 .md → 默认 LivePreview -TEST_F(UT_ViewModeFsm, DefaultMode_MarkdownFile_LivePreview) -{ - EXPECT_EQ(ViewModeFsm::resolveDefaultMode(true), ViewMode::LivePreview); -} - -// 打开非 md → 默认 Edit -TEST_F(UT_ViewModeFsm, DefaultMode_NonMarkdownFile_Edit) -{ - EXPECT_EQ(ViewModeFsm::resolveDefaultMode(false), ViewMode::Edit); -} - -// 「实时预览」入口可用性:仅 md 文件可用 -TEST_F(UT_ViewModeFsm, LivePreviewAvailable_Markdown_True) -{ - EXPECT_TRUE(ViewModeFsm::isLivePreviewAvailable(true)); -} -TEST_F(UT_ViewModeFsm, LivePreviewAvailable_NonMarkdown_False) -{ - EXPECT_FALSE(ViewModeFsm::isLivePreviewAvailable(false)); -} - -// 「编辑模式」「查看视图」始终可用(需求:入口始终显示,非 md 仅 LivePreview 置灰) -TEST_F(UT_ViewModeFsm, EditViewAvailable_AlwaysTrue) -{ - EXPECT_TRUE(ViewModeFsm::isEditViewAvailable(true)); - EXPECT_TRUE(ViewModeFsm::isEditViewAvailable(false)); -} -TEST_F(UT_ViewModeFsm, ReadViewAvailable_AlwaysTrue) -{ - EXPECT_TRUE(ViewModeFsm::isReadViewAvailable(true)); - EXPECT_TRUE(ViewModeFsm::isReadViewAvailable(false)); -} - -// 切换合法性:md 文件可切到任意三个视图 -TEST_F(UT_ViewModeFsm, CanSwitch_Markdown_AllThreeViews) -{ - EXPECT_TRUE(ViewModeFsm::canSwitchTo(ViewMode::Edit, true)); - EXPECT_TRUE(ViewModeFsm::canSwitchTo(ViewMode::ReadView, true)); - EXPECT_TRUE(ViewModeFsm::canSwitchTo(ViewMode::LivePreview, true)); -} - -// 切换合法性:非 md 文件不能切到 LivePreview -TEST_F(UT_ViewModeFsm, CanSwitch_NonMarkdown_LivePreviewFalse) -{ - EXPECT_FALSE(ViewModeFsm::canSwitchTo(ViewMode::LivePreview, false)); -} - -// 切换合法性:非 md 文件可切到 Edit / ReadView -TEST_F(UT_ViewModeFsm, CanSwitch_NonMarkdown_EditAndReadViewTrue) -{ - EXPECT_TRUE(ViewModeFsm::canSwitchTo(ViewMode::Edit, false)); - EXPECT_TRUE(ViewModeFsm::canSwitchTo(ViewMode::ReadView, false)); -} - -// Wysiwyg 阶段二不可达(本期 ReadOnly) -TEST_F(UT_ViewModeFsm, CanSwitch_Wysiwyg_AlwaysFalse) -{ - EXPECT_FALSE(ViewModeFsm::canSwitchTo(ViewMode::Wysiwyg, true)); - EXPECT_FALSE(ViewModeFsm::canSwitchTo(ViewMode::Wysiwyg, false)); -} - -// 语言切走导致的回退:非 md 在 LivePreview 时退回 Edit -TEST_F(UT_ViewModeFsm, Fallback_NonMarkdownFromLivePreview_Edit) -{ - EXPECT_EQ(ViewModeFsm::fallbackWhenMarkdownLost(ViewMode::LivePreview), ViewMode::Edit); -} - -// 语言切走:非 md 在 ReadView 时保持 ReadView(查看视图对非 md 有效,纯文本只读) -TEST_F(UT_ViewModeFsm, Fallback_NonMarkdownFromReadView_StayReadView) -{ - EXPECT_EQ(ViewModeFsm::fallbackWhenMarkdownLost(ViewMode::ReadView), ViewMode::ReadView); -} - -// 语言切走:在 Edit 时保持 Edit -TEST_F(UT_ViewModeFsm, Fallback_FromEdit_StayEdit) -{ - EXPECT_EQ(ViewModeFsm::fallbackWhenMarkdownLost(ViewMode::Edit), ViewMode::Edit); -} - -// 语言切到(非 md → md)的跃迁:Edit → LivePreview(对齐 md 默认视图,2026-08-19) -TEST_F(UT_ViewModeFsm, Elevate_MarkdownGainedFromEdit_LivePreview) -{ - EXPECT_EQ(ViewModeFsm::elevateWhenMarkdownGained(ViewMode::Edit), ViewMode::LivePreview); -} - -// 语言切到:ReadView / LivePreview 保持(ReadView 仅切换实现,模式不变) -TEST_F(UT_ViewModeFsm, Elevate_MarkdownGainedFromReadOrLive_Stay) -{ - EXPECT_EQ(ViewModeFsm::elevateWhenMarkdownGained(ViewMode::ReadView), ViewMode::ReadView); - EXPECT_EQ(ViewModeFsm::elevateWhenMarkdownGained(ViewMode::LivePreview), ViewMode::LivePreview); -} - -// 「查看视图」在非 md 文件下走纯文本只读(非 Milkdown 渲染) -TEST_F(UT_ViewModeFsm, ReadOnlyTextMode_ReadViewNonMarkdown_True) -{ - EXPECT_TRUE(ViewModeFsm::isReadOnlyTextMode(ViewMode::ReadView, false)); -} - -// 「查看视图」在 md 文件下走 Milkdown 渲染 -TEST_F(UT_ViewModeFsm, ReadOnlyTextMode_ReadViewMarkdown_False) -{ - EXPECT_FALSE(ViewModeFsm::isReadOnlyTextMode(ViewMode::ReadView, true)); -} - -// 其他视图不是纯文本只读 -TEST_F(UT_ViewModeFsm, ReadOnlyTextMode_EditOrLive_False) -{ - EXPECT_FALSE(ViewModeFsm::isReadOnlyTextMode(ViewMode::Edit, true)); - EXPECT_FALSE(ViewModeFsm::isReadOnlyTextMode(ViewMode::LivePreview, true)); -} diff --git a/tests/src/editor/markdown/ut_viewmodefsm.h b/tests/src/editor/markdown/ut_viewmodefsm.h deleted file mode 100644 index 1434d9af6..000000000 --- a/tests/src/editor/markdown/ut_viewmodefsm.h +++ /dev/null @@ -1,18 +0,0 @@ -// SPDX-FileCopyrightText: 2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef UT_VIEWMODEFSM_H -#define UT_VIEWMODEFSM_H - -#include "gtest/gtest.h" -#include - -class UT_ViewModeFsm : public QObject, public ::testing::Test -{ - Q_OBJECT -public: - UT_ViewModeFsm(); -}; - -#endif // UT_VIEWMODEFSM_H diff --git a/tests/src/editor/ut_bookmarkwidget.cpp b/tests/src/editor/ut_bookmarkwidget.cpp deleted file mode 100644 index 9ede714b1..000000000 --- a/tests/src/editor/ut_bookmarkwidget.cpp +++ /dev/null @@ -1,31 +0,0 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "ut_bookmarkwidget.h" - -test_bookmarkwidget::test_bookmarkwidget() -{ - -} - -TEST_F(test_bookmarkwidget, BookMarkWidget) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString("aabb")); - - ASSERT_TRUE(pWindow->currentWrapper()->textEditor()->m_pLeftAreaWidget->m_pBookMarkArea->m_leftAreaWidget != nullptr); - delete pWindow; - pWindow = nullptr; -} - -TEST_F(test_bookmarkwidget, paintEvent) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString("aabb")); - QPaintEvent *pEvent; - pWindow->currentWrapper()->textEditor()->m_pLeftAreaWidget->m_pBookMarkArea->paintEvent(pEvent); - - delete pWindow; - pWindow = nullptr; -} diff --git a/tests/src/editor/ut_bookmarkwidget.h b/tests/src/editor/ut_bookmarkwidget.h deleted file mode 100644 index 60a5088ba..000000000 --- a/tests/src/editor/ut_bookmarkwidget.h +++ /dev/null @@ -1,26 +0,0 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef TEST_BOOKMARKWIDGET_H -#define TEST_BOOKMARKWIDGET_H -#include"../../src/editor/bookmarkwidget.h" -#include "gtest/gtest.h" -#include"../../src/editor/editwrapper.h" -#include"../../src/widgets/window.h" -#include"../../src/startmanager.h" -#include"../../src/editor/dtextedit.h" -#include"../../src/editor/FlashTween.h" -#include"../stub.h" -#include -#include -#include - - -class test_bookmarkwidget: public QObject, public::testing::Test -{ -public: - test_bookmarkwidget(); -}; - -#endif // TEST_BOOKMARKWIDGET_H diff --git a/tests/src/editor/ut_changemarkcommand.cpp b/tests/src/editor/ut_changemarkcommand.cpp deleted file mode 100644 index f75fc0208..000000000 --- a/tests/src/editor/ut_changemarkcommand.cpp +++ /dev/null @@ -1,65 +0,0 @@ -// SPDX-FileCopyrightText: 2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "gtest/gtest.h" -#include "../../src/editor/changemarkcommand.h" -#include "../../src/editor/dtextedit.h" -#include "../stub.h" - -// ChangeMarkCommand::redo() (exercise the redo path as well) -TEST(UT_ChangeMarkCommand, redo) -{ - TextEdit *edit = new TextEdit; - edit->setPlainText("hello world"); - - QList newMark; - TextEdit::MarkReplaceInfo info; - info.start = 0; - info.end = 5; - info.time = 1; - newMark.append(info); - - ChangeMarkCommand *cmd = new ChangeMarkCommand(edit, - QList(), - newMark); - cmd->redo(); - - delete cmd; - delete edit; -} - -// ChangeMarkCommand::undo() -TEST(UT_ChangeMarkCommand, undo) -{ - TextEdit *edit = new TextEdit; - edit->setPlainText("hello world"); - - QList oldMark; - TextEdit::MarkReplaceInfo info; - info.start = 0; - info.end = 5; - info.time = 1; - oldMark.append(info); - - ChangeMarkCommand *cmd = new ChangeMarkCommand(edit, oldMark, - QList()); - cmd->undo(); - - delete cmd; - delete edit; -} - -// ChangeMarkCommand::~ChangeMarkCommand (both destructor variants) -TEST(UT_ChangeMarkCommand, destructor) -{ - TextEdit *edit = new TextEdit; - edit->setPlainText("hello"); - - ChangeMarkCommand *cmd = new ChangeMarkCommand(edit, - QList(), - QList()); - delete cmd; - - delete edit; -} diff --git a/tests/src/editor/ut_codeflodarea.cpp b/tests/src/editor/ut_codeflodarea.cpp deleted file mode 100644 index 56a6261c2..000000000 --- a/tests/src/editor/ut_codeflodarea.cpp +++ /dev/null @@ -1,33 +0,0 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "ut_codeflodarea.h" -#include "QPaintEvent" -test_codeflodarea::test_codeflodarea() -{ - -} - -TEST_F(test_codeflodarea, CodeFlodArea) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString("abc")); - ASSERT_TRUE(pWindow->currentWrapper()->textEditor()->m_pLeftAreaWidget->m_pFlodArea->m_pLeftAreaWidget != nullptr); - - delete pWindow; - pWindow = nullptr; -} - -TEST_F(test_codeflodarea, paintEvent) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString("abc")); - QPaintEvent *pEvent = new QPaintEvent(pWindow->currentWrapper()->textEditor()->m_pLeftAreaWidget->m_pFlodArea->rect()); - pWindow->currentWrapper()->textEditor()->m_pLeftAreaWidget->m_pFlodArea->paintEvent(pEvent); - - delete pEvent; - pEvent = nullptr; - delete pWindow; - pWindow = nullptr; -} diff --git a/tests/src/editor/ut_codeflodarea.h b/tests/src/editor/ut_codeflodarea.h deleted file mode 100644 index 89754ef87..000000000 --- a/tests/src/editor/ut_codeflodarea.h +++ /dev/null @@ -1,26 +0,0 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef TEST_CODEFLODAREA_H -#define TEST_CODEFLODAREA_H -#include"../../src/editor/bookmarkwidget.h" -#include "gtest/gtest.h" -#include"../../src/editor/editwrapper.h" -#include"../../src/widgets/window.h" -#include"../../src/startmanager.h" -#include"../../src/editor/dtextedit.h" -#include"../../src/editor/FlashTween.h" -#include"../stub.h" -#include -#include -#include - - -class test_codeflodarea: public QObject, public::testing::Test -{ -public: - test_codeflodarea(); -}; - -#endif // TEST_CODEFLODAREA_H diff --git a/tests/src/editor/ut_deletebackcommond.cpp b/tests/src/editor/ut_deletebackcommond.cpp deleted file mode 100644 index 8e1660e19..000000000 --- a/tests/src/editor/ut_deletebackcommond.cpp +++ /dev/null @@ -1,346 +0,0 @@ -// SPDX-FileCopyrightText: 2022-2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "ut_deletebackcommond.h" - -#include -#include - -#include "stub.h" - -#include "../src/editor/deletebackcommond.h" -#include "../../src/widgets/window.h" - -UT_Deletebackcommond::UT_Deletebackcommond() {} - -TEST(UT_Deletebackcommond_DeleteBackCommand, UT_Deletebackcommond_DeleteBackCommand) -{ - QTextCursor cursor; - QPlainTextEdit *pEdit = new QPlainTextEdit; - DeleteBackCommand *pCom = new DeleteBackCommand(cursor, pEdit); - ASSERT_TRUE(pCom->m_insertPos != 0); - - delete pCom; - pCom = nullptr; - delete pEdit; - pEdit = nullptr; -} - -TEST(UT_Deletebackcommond_redo, UT_Deletebackcommond_redo) -{ - QString text = "test"; - Window *pWindow = new Window; - pWindow->addBlankTab(QString()); - QTextCursor cursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertPlainText(QString("12345")); - cursor.setPosition(10, QTextCursor::MoveMode::KeepAnchor); - DeleteBackCommand *pCom = new DeleteBackCommand(cursor, pWindow->currentWrapper()->textEditor()); - pCom->m_delText = text; - pCom->redo(); - - ASSERT_EQ(cursor.position(), pWindow->currentWrapper()->textEditor()->textCursor().position()); - - delete pCom; - pCom = nullptr; - delete pWindow; - pWindow = nullptr; -} - -TEST(UT_Deletebackcommond_undo, UT_Deletebackcommond_undo) -{ - QString text = "test"; - Window *pWindow = new Window; - pWindow->addBlankTab(QString()); - QTextCursor cursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertPlainText(QString("12345")); - cursor.setPosition(5, QTextCursor::MoveMode::KeepAnchor); - DeleteBackCommand *pCom = new DeleteBackCommand(cursor, pWindow->currentWrapper()->textEditor()); - pCom->m_delText = text; - pCom->undo(); - - EXPECT_EQ(cursor.position(), pWindow->currentWrapper()->textEditor()->textCursor().position()); - - delete pCom; - pCom = nullptr; - pWindow->deleteLater(); -} - -UT_Deletebackaltcommond::UT_Deletebackaltcommond() {} - -TEST(UT_Deletebackaltcommond_DeleteBackAltCommand, UT_Deletebackaltcommond_DeleteBackAltCommand) -{ - QString text = "test"; - QList list; - QTextEdit::ExtraSelection sel; - QTextCursor cursor; - cursor.insertText(text); - cursor.movePosition(QTextCursor::Start, QTextCursor::KeepAnchor); - sel.cursor = cursor; - list.push_back(sel); - list.push_back(sel); - - TextEdit *edit = new TextEdit; - DeleteBackAltCommand *com = new DeleteBackAltCommand(list, edit); - - delete com; - com = nullptr; - delete edit; - edit = nullptr; -} - -TEST(UT_Deletebackaltcommond_redo, UT_Deletebackaltcommond_redo) -{ - Window *window = new Window; - EditWrapper *wrapper = window->createEditor(); - TextEdit *edit = wrapper->textEditor(); - QString text = "test"; - QList list; - QTextEdit::ExtraSelection sel; - QTextCursor cursor; - cursor.insertText(text); - cursor.movePosition(QTextCursor::Start, QTextCursor::KeepAnchor); - sel.cursor = cursor; - list.push_back(sel); - list.push_back(sel); - DeleteBackAltCommand *commond = new DeleteBackAltCommand(list, edit); - commond->m_deletions = {{"123", 1, 1, 1, cursor, true}}; - commond->redo(); - - window->deleteLater(); - wrapper->deleteLater(); - edit->deleteLater(); - - delete commond; - commond = nullptr; -} - -TEST(UT_Deletebackaltcommond_undo, UT_Deletebackaltcommond_undo) -{ - Window *window = new Window; - EditWrapper *wrapper = window->createEditor(); - TextEdit *edit = wrapper->textEditor(); - QString text = "test"; - QList list; - QTextEdit::ExtraSelection sel; - QTextCursor cursor; - cursor.insertText(text); - cursor.movePosition(QTextCursor::Start, QTextCursor::KeepAnchor); - sel.cursor = cursor; - list.push_back(sel); - list.push_back(sel); - - DeleteBackAltCommand *com = new DeleteBackAltCommand(list, edit); - com->m_deletions = {{"123", 1, 1, 1, cursor}}; - com->undo(); - - window->deleteLater(); - wrapper->deleteLater(); - edit->deleteLater(); - delete com; - com = nullptr; -} - -TEST(UT_Deletebackaltcommond_MoveCursor, MoveCursor_Undo) -{ - Window *window = new Window; - EditWrapper *wrapper = window->createEditor(); - TextEdit *edit = wrapper->textEditor(); - QString text = "123456\nabcdef"; - edit->setPlainText(text); - - QList list; - QTextEdit::ExtraSelection sel; - QTextCursor cursor = edit->textCursor(); - // select the left 3 colums: 123|456 - // abc|def - cursor.movePosition(QTextCursor::Start); - cursor.movePosition(QTextCursor::NextCharacter, QTextCursor::KeepAnchor, 3); - sel.cursor = cursor; - list.append(sel); - - cursor.movePosition(QTextCursor::NextBlock); - cursor.movePosition(QTextCursor::NextCharacter, QTextCursor::KeepAnchor, 3); - sel.cursor = cursor; - list.append(sel); - - DeleteBackAltCommand *com = new DeleteBackAltCommand(list, edit); - com->redo(); - EXPECT_EQ(edit->toPlainText(), QString("456\ndef")); - - list.clear(); - cursor.movePosition(QTextCursor::End); - edit->setTextCursor(cursor); - - com->undo(); - EXPECT_EQ(edit->toPlainText(), text); - - window->deleteLater(); - wrapper->deleteLater(); - edit->deleteLater(); - delete com; - com = nullptr; -} - -void stub_slotCanUndoRedoChanged(bool) -{ - // do nothing -} - -void stub_command_updateModifyStatus(const QString &, bool) -{ - // do nothing -} - -TEST(UT_Deletebackaltcommond_Selection, Selection_ColumnStatus_Restore) -{ - Stub s; - s.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoRedoChanged); - s.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanUndoRedoChanged); - s.set(ADDR(Window, updateModifyStatus), stub_command_updateModifyStatus); - - Window *window = new Window; - EditWrapper *wrapper = window->createEditor(); - TextEdit *edit = wrapper->textEditor(); - QString text = "123456\nabcdef"; - edit->setPlainText(text); - - QList list; - QTextEdit::ExtraSelection sel; - QTextCursor cursor = edit->textCursor(); - cursor.movePosition(QTextCursor::Start); - cursor.movePosition(QTextCursor::NextCharacter, QTextCursor::KeepAnchor, 3); - sel.cursor = cursor; - list.append(sel); - cursor.movePosition(QTextCursor::NextBlock); - cursor.movePosition(QTextCursor::NextCharacter, QTextCursor::KeepAnchor, 3); - sel.cursor = cursor; - list.append(sel); - - DeleteBackCommand *emptyCommand = new DeleteBackCommand({}, edit); - edit->m_pUndoStack->push(emptyCommand); - - DeleteBackAltCommand *com = new DeleteBackAltCommand(list, edit); - edit->m_pUndoStack->push(com); - - edit->undo_(); - // temp command - edit->undo_(); - - EXPECT_TRUE(edit->m_altModSelections.isEmpty()); - EXPECT_FALSE(edit->m_bIsAltMod); - - // temp command - edit->redo_(); - - EXPECT_TRUE(edit->m_altModSelections.isEmpty()); - EXPECT_FALSE(edit->m_bIsAltMod); - - // delete command - edit->redo_(); - - EXPECT_EQ(edit->m_altModSelections.size(), list.size()); - EXPECT_TRUE(edit->m_bIsAltMod); - - window->deleteLater(); - wrapper->deleteLater(); - edit->deleteLater(); -} - -TEST(UT_Deletebackaltcommond_DelStart, DelStart_TextUpdate_Success) -{ - Stub s; - s.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoRedoChanged); - s.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanUndoRedoChanged); - s.set(ADDR(Window, updateModifyStatus), stub_command_updateModifyStatus); - - Window *window = new Window; - EditWrapper *wrapper = window->createEditor(); - TextEdit *edit = wrapper->textEditor(); - QString text = "123456\nabcdef"; - edit->setPlainText(text); - - QList list; - QTextEdit::ExtraSelection sel; - QTextCursor cursor = edit->textCursor(); - // at start of block: |123456 - // |abcdef - cursor.movePosition(QTextCursor::Start); - sel.cursor = cursor; - list.append(sel); - - cursor.movePosition(QTextCursor::NextBlock); - sel.cursor = cursor; - list.append(sel); - - // backward delete - DeleteBackAltCommand *comBackward = new DeleteBackAltCommand(list, edit, true); - edit->m_pUndoStack->push(comBackward); - EXPECT_EQ(edit->toPlainText(), QString("23456\nbcdef")); - - edit->m_pUndoStack->undo(); - EXPECT_EQ(edit->toPlainText(), text); - - // forward delete - list[0].cursor.setPosition(0); - list[1].cursor.setPosition(7); - DeleteBackAltCommand *comForward = new DeleteBackAltCommand(list, edit); - edit->m_pUndoStack->push(comForward); - EXPECT_EQ(edit->toPlainText(), QString("123456abcdef")); - - edit->m_pUndoStack->undo(); - EXPECT_EQ(edit->toPlainText(), text); - - window->deleteLater(); - wrapper->deleteLater(); - edit->deleteLater(); -} - -TEST(UT_Deletebackaltcommond_DelEnd, DelEnd_TextUpdate_Success) -{ - Stub s; - s.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoRedoChanged); - s.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanUndoRedoChanged); - s.set(ADDR(Window, updateModifyStatus), stub_command_updateModifyStatus); - - Window *window = new Window; - EditWrapper *wrapper = window->createEditor(); - TextEdit *edit = wrapper->textEditor(); - QString text = "123456\nabcdef"; - edit->setPlainText(text); - - QList list; - QTextEdit::ExtraSelection sel; - QTextCursor cursor = edit->textCursor(); - // at end of block: 123456| - // abcdef| - cursor.movePosition(QTextCursor::EndOfBlock); - sel.cursor = cursor; - list.append(sel); - - cursor.movePosition(QTextCursor::End); - sel.cursor = cursor; - list.append(sel); - - // forward delete - DeleteBackAltCommand *comForward = new DeleteBackAltCommand(list, edit); - edit->m_pUndoStack->push(comForward); - EXPECT_EQ(edit->toPlainText(), QString("12345\nabcde")); - - edit->m_pUndoStack->undo(); - EXPECT_EQ(edit->toPlainText(), text); - - // backward delete - list[0].cursor.setPosition(6); - list[1].cursor.setPosition(13); - DeleteBackAltCommand *comBackward = new DeleteBackAltCommand(list, edit, true); - edit->m_pUndoStack->push(comBackward); - EXPECT_EQ(edit->toPlainText(), QString("123456abcdef")); - - edit->m_pUndoStack->undo(); - EXPECT_EQ(edit->toPlainText(), text); - - window->deleteLater(); - wrapper->deleteLater(); - edit->deleteLater(); -} diff --git a/tests/src/editor/ut_deletebackcommond.h b/tests/src/editor/ut_deletebackcommond.h deleted file mode 100644 index 467189036..000000000 --- a/tests/src/editor/ut_deletebackcommond.h +++ /dev/null @@ -1,28 +0,0 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef UT_Deletebackcommond_H -#define UT_Deletebackcommond_H - - -#include "gtest/gtest.h" -#include - - -class UT_Deletebackcommond: public QObject, public::testing::Test -{ - Q_OBJECT -public: - UT_Deletebackcommond(); -}; - -class UT_Deletebackaltcommond: public QObject, public::testing::Test -{ - Q_OBJECT -public: - UT_Deletebackaltcommond(); -}; - - -#endif // UT_Deletebackcommond_H diff --git a/tests/src/editor/ut_deletetextundocommand.cpp b/tests/src/editor/ut_deletetextundocommand.cpp deleted file mode 100644 index 2d9a13daa..000000000 --- a/tests/src/editor/ut_deletetextundocommand.cpp +++ /dev/null @@ -1,451 +0,0 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "ut_deletetextundocommand.h" -#include "src/stub.h" -#include - -namespace deletetextstub { - -int intvalue=1; -int retintstub() -{ - return intvalue; -} - -bool rettruestub() -{ - return true; -} -bool retfalsestub() -{ - return false; -} - -} - -using namespace deletetextstub; - - -UT_Deletetextundocommond::UT_Deletetextundocommond() -{ - -} - -TEST(UT_Deletetextundocommond_DeleteTextUndoCommand, UT_Deletetextundocommond_DeleteTextUndoCommand) -{ -#if 0 - Window* window = new Window; - EditWrapper *wrapper = window->createEditor(); - TextEdit * edit = wrapper->textEditor(); - edit->insertTextEx(edit->textCursor(),"123456"); - auto cursor1 = edit->textCursor(); - edit->selectAll(); - auto cursor2 = edit->textCursor(); - - - DeleteTextUndoCommand * commond1 = new DeleteTextUndoCommand(cursor1); - DeleteTextUndoCommand * commond2 = new DeleteTextUndoCommand(cursor2); - - QTextEdit::ExtraSelection select[2]; - select[0].cursor = cursor1; - select[1].cursor = cursor2; - - QList selections{select[0],select[1]}; - DeleteTextUndoCommand * commond3 = new DeleteTextUndoCommand(selections); - - window->deleteLater(); - wrapper->deleteLater(); - edit->deleteLater(); - delete commond1;commond1=nullptr; - delete commond2;commond2=nullptr; - delete commond3;commond3=nullptr; -#endif - -} - -TEST(UT_Deletetextundocommond_undo, UT_Deletetextundocommond_undo) -{ - QTextCursor cursor; - DeleteTextUndoCommand * commond1 = new DeleteTextUndoCommand(cursor, nullptr); - commond1->m_sInsertText = "ddd"; - - QList extraSelections; - QTextEdit::ExtraSelection selection; - QColor lineColor = QColor(Qt::yellow).lighter(160); - selection.format.setBackground(lineColor); - selection.format.setProperty(QTextFormat::FullWidthSelection, true); - selection.cursor.clearSelection(); - extraSelections.append(selection); - DeleteTextUndoCommand * commond2 = new DeleteTextUndoCommand(extraSelections, nullptr); - - commond1->undo(); - commond2->undo(); - - int iRet = commond1->m_sInsertText.length(); - ASSERT_TRUE(iRet == QString("ddd").length()); - - delete commond1;commond1=nullptr; - delete commond2;commond2=nullptr; -} - -TEST(UT_Deletetextundocommond_undo, undo_withTextCursor_restoreCursor) -{ - // Revert the cursor position after undo - TextEdit *edit = new TextEdit; - edit->setPlainText("123456789"); - - QTextCursor cursor = edit->textCursor(); - cursor.setPosition(3); - cursor.movePosition(QTextCursor::NextCharacter, QTextCursor::KeepAnchor, 3); - EXPECT_EQ(QString("456"), cursor.selectedText()); - DeleteTextUndoCommand *command = new DeleteTextUndoCommand(cursor, edit); - cursor.deleteChar(); - command->undo(); - - EXPECT_EQ(command->m_textCursor.position(), edit->textCursor().position()); - - QList extraSelections; - QTextEdit::ExtraSelection selection; - QColor lineColor = QColor(Qt::yellow).lighter(160); - selection.format.setBackground(lineColor); - selection.format.setProperty(QTextFormat::FullWidthSelection, true); - selection.cursor = edit->textCursor(); - selection.cursor.setPosition(3); - selection.cursor.movePosition(QTextCursor::NextCharacter, QTextCursor::KeepAnchor, 3); - extraSelections.append(selection); - DeleteTextUndoCommand *command2 = new DeleteTextUndoCommand(extraSelections, edit); - selection.cursor.deleteChar(); - command2->undo(); - - EXPECT_EQ(command2->m_ColumnEditSelections.last().cursor.position(), edit->textCursor().position()); - - delete command; - delete command2; - delete edit; -} - -TEST(UT_Deletetextundocommond_redo, UT_Deletetextundocommond_redo) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world.")); - QTextCursor cursor1 = pWindow->currentWrapper()->textEditor()->textCursor(); - auto cursor2 = pWindow->currentWrapper()->textEditor()->textCursor(); - DeleteTextUndoCommand * commond1 = new DeleteTextUndoCommand(cursor1, nullptr); - DeleteTextUndoCommand * commond2 = new DeleteTextUndoCommand(cursor2, nullptr); - QTextEdit::ExtraSelection select[2]; - select[0].cursor = cursor1; - select[1].cursor = cursor2; - - QList selections{select[0],select[1]}; - DeleteTextUndoCommand * commond3 = new DeleteTextUndoCommand(selections, nullptr); - commond1->redo(); - commond2->redo(); - commond3->redo(); - - int iRet = commond1->m_sInsertText.length(); - ASSERT_TRUE(iRet == 1); - - delete commond1;commond1=nullptr; - delete commond2;commond2=nullptr; - delete commond3;commond3=nullptr; -} - -TEST(UT_Deletetextundocommond_rddo, redo_withTextCursor_changeCursor) -{ - // Restore the cursor position after redo - TextEdit *edit = new TextEdit; - edit->setPlainText("123456789"); - - QTextCursor cursor = edit->textCursor(); - cursor.setPosition(3); - cursor.movePosition(QTextCursor::NextCharacter, QTextCursor::KeepAnchor, 3); - EXPECT_EQ(QString("456"), cursor.selectedText()); - DeleteTextUndoCommand *command = new DeleteTextUndoCommand(cursor, edit); - command->redo(); - - EXPECT_EQ(command->m_textCursor.position(), edit->textCursor().position()); - - edit->setPlainText("123456789"); - QList extraSelections; - QTextEdit::ExtraSelection selection; - QColor lineColor = QColor(Qt::yellow).lighter(160); - selection.format.setBackground(lineColor); - selection.format.setProperty(QTextFormat::FullWidthSelection, true); - selection.cursor = edit->textCursor(); - selection.cursor.setPosition(3); - selection.cursor.movePosition(QTextCursor::NextCharacter, QTextCursor::KeepAnchor, 3); - extraSelections.append(selection); - DeleteTextUndoCommand *command2 = new DeleteTextUndoCommand(extraSelections, edit); - command2->redo(); - - EXPECT_EQ(command2->m_ColumnEditSelections.last().cursor.position(), edit->textCursor().position()); - - delete command; - delete command2; - delete edit; -} - -TEST(UT_Deletetextundocommond_DeleteTextUndoCommand2, UT_Deletetextundocommond_DeleteTextUndoCommand2_002) -{ - - Window* window = new Window; - EditWrapper* wrapper = new EditWrapper(window); - TextEdit * edit = new TextEdit(window); - edit->m_wrapper = wrapper; - - QTextCursor cursor1,cursor2; - - - QTextEdit::ExtraSelection select[2]; - select[0].cursor = cursor1; - select[1].cursor = cursor2; - - QList selections{select[0],select[1]}; - - Stub s1; - s1.set(ADDR(QTextCursor,positionInBlock),retintstub); - s1.set(ADDR(QTextCursor,hasSelection),retfalsestub); - s1.set(ADDR(QString,at),rettruestub); - - intvalue = -1; - DeleteTextUndoCommand2 * commond3 = new DeleteTextUndoCommand2(selections,"test",edit,false); - - EXPECT_NE(edit,nullptr); - window->deleteLater(); - wrapper->deleteLater(); - edit->deleteLater(); - delete commond3; - commond3=nullptr; - -} - -TEST(UT_Deletetextundocommond_DeleteTextUndoCommand2, UT_Deletetextundocommond_DeleteTextUndoCommand2_003) -{ - - Window* window = new Window; - EditWrapper* wrapper = new EditWrapper(window); - TextEdit * edit = new TextEdit(window); - edit->m_wrapper = wrapper; - - QTextCursor cursor1,cursor2; - - - QTextEdit::ExtraSelection select[2]; - select[0].cursor = cursor1; - select[1].cursor = cursor2; - - QList selections{select[0],select[1]}; - - Stub s1; - s1.set(ADDR(QTextCursor,positionInBlock),retintstub); - s1.set(ADDR(QTextCursor,hasSelection),rettruestub); - s1.set(ADDR(QString,at),rettruestub); - - intvalue = -1; - DeleteTextUndoCommand2 * commond3 = new DeleteTextUndoCommand2(selections,"test",edit,false); - - EXPECT_NE(edit,nullptr); - window->deleteLater(); - wrapper->deleteLater(); - edit->deleteLater(); - delete commond3; - commond3=nullptr; - -} - -TEST(UT_Deletetextundocommond2_undo, UT_Deletetextundocommond2_undo_001) -{ - - Window* window = new Window; - EditWrapper* wrapper = new EditWrapper(window); - TextEdit * edit = new TextEdit(window); - edit->m_wrapper = wrapper; - - QTextCursor cursor1,cursor2; - - - QTextEdit::ExtraSelection select[2]; - select[0].cursor = cursor1; - select[1].cursor = cursor2; - - QList selections{select[0],select[1]}; - - Stub s1; - s1.set(ADDR(QTextCursor,positionInBlock),retintstub); - s1.set(ADDR(QTextCursor,hasSelection),retfalsestub); - s1.set(ADDR(QString,at),rettruestub); - - intvalue = -1; - DeleteTextUndoCommand2 * commond3 = new DeleteTextUndoCommand2(selections,"test",edit,false); - commond3->m_ColumnEditSelections = selections; - commond3->undo(); - - EXPECT_NE(edit,nullptr); - window->deleteLater(); - wrapper->deleteLater(); - edit->deleteLater(); - delete commond3; - commond3=nullptr; - -} - -TEST(UT_Deletetextundocommond2_undo, UT_Deletetextundocommond2_undo_002) -{ - - Window* window = new Window; - EditWrapper* wrapper = new EditWrapper(window); - TextEdit * edit = new TextEdit(window); - edit->m_wrapper = wrapper; - - QTextCursor cursor1,cursor2; - - - QTextEdit::ExtraSelection select[2]; - select[0].cursor = cursor1; - select[1].cursor = cursor2; - - QList selections{select[0],select[1]}; - - Stub s1; - s1.set(ADDR(QTextCursor,positionInBlock),retintstub); - s1.set(ADDR(QTextCursor,hasSelection),retfalsestub); - s1.set(ADDR(QString,at),rettruestub); - - intvalue = -1; - DeleteTextUndoCommand2 * commond3 = new DeleteTextUndoCommand2(selections,"test",edit,false); - commond3->m_ColumnEditSelections.clear(); - commond3->undo(); - - EXPECT_NE(edit,nullptr); - window->deleteLater(); - wrapper->deleteLater(); - edit->deleteLater(); - delete commond3; - commond3=nullptr; - -} - -TEST(UT_Deletetextundocommond2_redo, UT_Deletetextundocommond2_redo_001) -{ - - Window* window = new Window; - EditWrapper* wrapper = new EditWrapper(window); - TextEdit * edit = new TextEdit(window); - edit->m_wrapper = wrapper; - - QTextCursor cursor1,cursor2; - - - QTextEdit::ExtraSelection select[2]; - select[0].cursor = cursor1; - select[1].cursor = cursor2; - - QList selections{select[0],select[1]}; - - Stub s1; - s1.set(ADDR(QTextCursor,positionInBlock),retintstub); - s1.set(ADDR(QTextCursor,hasSelection),retfalsestub); - s1.set(ADDR(QString,at),rettruestub); - - intvalue = -1; - DeleteTextUndoCommand2 * commond3 = new DeleteTextUndoCommand2(selections,"test",edit,false); - commond3->m_ColumnEditSelections=selections; - commond3->redo(); - - EXPECT_NE(edit,nullptr); - window->deleteLater(); - wrapper->deleteLater(); - edit->deleteLater(); - delete commond3; - commond3=nullptr; - -} - -TEST(UT_Deletetextundocommond2_redo, UT_Deletetextundocommond2_redo_002) -{ - - Window* window = new Window; - EditWrapper* wrapper = new EditWrapper(window); - TextEdit * edit = new TextEdit(window); - edit->m_wrapper = wrapper; - - QTextCursor cursor1,cursor2; - - - QTextEdit::ExtraSelection select[2]; - select[0].cursor = cursor1; - select[1].cursor = cursor2; - - QList selections{select[0],select[1]}; - - Stub s1; - s1.set(ADDR(QTextCursor,positionInBlock),retintstub); - s1.set(ADDR(QTextCursor,hasSelection),retfalsestub); - s1.set(ADDR(QTextCursor,atBlockEnd),rettruestub); - s1.set(ADDR(QTextCursor,atBlockStart),rettruestub); - s1.set(ADDR(QString,at),rettruestub); - - intvalue = -1; - DeleteTextUndoCommand2 * commond3 = new DeleteTextUndoCommand2(selections,"test",edit,false); - commond3->m_ColumnEditSelections.clear(); - - commond3->m_iscurrLine=false; - commond3->redo(); - - EXPECT_NE(edit,nullptr); - window->deleteLater(); - wrapper->deleteLater(); - edit->deleteLater(); - delete commond3; - commond3=nullptr; - -} - -TEST(UT_Deletetextundocommond2_redo, UT_Deletetextundocommond2_redo_003) -{ - - Window* window = new Window; - EditWrapper* wrapper = new EditWrapper(window); - TextEdit * edit = new TextEdit(window); - edit->m_wrapper = wrapper; - - QTextCursor cursor1,cursor2; - - - QTextEdit::ExtraSelection select[2]; - select[0].cursor = cursor1; - select[1].cursor = cursor2; - - QList selections{select[0],select[1]}; - - Stub s1; - s1.set(ADDR(QTextCursor,positionInBlock),retintstub); - s1.set(ADDR(QTextCursor,hasSelection),retfalsestub); - s1.set(ADDR(QTextCursor,atBlockEnd),rettruestub); - s1.set(ADDR(QTextCursor,atBlockStart),rettruestub); - s1.set(ADDR(QString,at),rettruestub); - - intvalue = -1; - DeleteTextUndoCommand2 * commond3 = new DeleteTextUndoCommand2(selections,"test",edit,false); - commond3->m_ColumnEditSelections.clear(); - - commond3->m_iscurrLine=true; - commond3->redo(); - - EXPECT_NE(edit,nullptr); - window->deleteLater(); - wrapper->deleteLater(); - edit->deleteLater(); - delete commond3; - commond3=nullptr; - -} - - - - - diff --git a/tests/src/editor/ut_deletetextundocommand.h b/tests/src/editor/ut_deletetextundocommand.h deleted file mode 100644 index c2503eb3d..000000000 --- a/tests/src/editor/ut_deletetextundocommand.h +++ /dev/null @@ -1,27 +0,0 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef TEST_TEXTUNDOCOMMAND_H -#define TEST_TEXTUNDOCOMMAND_H -#include"../../src/editor/bookmarkwidget.h" -#include "gtest/gtest.h" -#include"../../src/editor/editwrapper.h" -#include"../../src/widgets/window.h" -#include"../../src/startmanager.h" -#include"../../src/editor/dtextedit.h" -#include"../../src/editor/FlashTween.h" -#include"../../src/editor/deletetextundocommand.h" -#include"../stub.h" -#include -#include -#include - - -class UT_Deletetextundocommond: public QObject, public::testing::Test -{ -public: - UT_Deletetextundocommond(); -}; - -#endif // TEST_TEXTUNDOCOMMAND_H diff --git a/tests/src/editor/ut_editwrapper.cpp b/tests/src/editor/ut_editwrapper.cpp deleted file mode 100644 index 027d9527d..000000000 --- a/tests/src/editor/ut_editwrapper.cpp +++ /dev/null @@ -1,1715 +0,0 @@ -// SPDX-FileCopyrightText: 2019-2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "ut_editwrapper.h" -#include "qfile.h" -#include -#include "DSettingsOption" -#include "../../src/common/text_file_saver.h" - -namespace editwrapperstub { - -int intvalue=1; -int retintstub() -{ - return intvalue; -} - -bool retfalsestub() -{ - return false; -} - -bool rettruestub() -{ - return true; -} - -QStringList stringList = {"/tmp/ut_123.txt","/tmp/ut_456.txt"}; -QStringList retstringliststub() -{ - return stringList; -} - -QPointer d = nullptr; -QPointer retsettingoption() -{ - if (d == nullptr) { - d = new DSettingsOption(); - } - QVariant v(stringList); - d->setValue(v); - QVariant p = d->value(); - return d; -} - -QString retstring() -{ - return "123"; -} - -} - - - -using namespace editwrapperstub; - -UT_Editwrapper::UT_Editwrapper() -{ - QString text = QString("#include \"window.h\"\n" - "#include \"urlinfo.h\"\n" - "int main(int argc, char *argv[])\n" - "{\n" - "using namespace Dtk::Core;\n" - "PerformanceMonitor::initializeAppStart();\n" - "return 0;\n" - "}"); - QFile f("1.cpp"); - if(f.open(QFile::WriteOnly)){ - f.write(text.toUtf8()); - f.close(); - } -} - -TEST(UT_Editwrapper_EditWrapper, UT_Editwrapper_EditWrapper) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - ASSERT_TRUE(pWindow->currentWrapper()->m_pBottomBar != nullptr); - ASSERT_TRUE(pWindow->currentWrapper()->m_pTextEdit != nullptr); - - delete pWindow; - pWindow = nullptr; -} - -//void setQuitFlag(); -TEST(UT_Editwrapper_setQuitFlag, UT_Editwrapper_setQuitFlag) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->setQuitFlag(); - ASSERT_TRUE(pWindow->currentWrapper()->m_bQuit == true); - - delete pWindow; - pWindow = nullptr; -} - -//bool getFileLoading(); -TEST(UT_Editwrapper_getFileLoading, UT_Editwrapper_getFileLoading) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->setQuitFlag(); - ASSERT_TRUE(pWindow->currentWrapper()->getFileLoading() == true); - - delete pWindow; - pWindow = nullptr; -} - -//void openFile(const QString &filepath,QString qstrTruePath,bool bIsTemFile = false); -TEST(UT_Editwrapper_openFile, UT_Editwrapper_openFile) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->openFile(QString("a.cpp"), QString("b.cpp")); - ASSERT_TRUE(pWindow->currentWrapper()->textEditor()->m_bIsFileOpen == true); - - delete pWindow; - pWindow = nullptr; -} - -bool saveFile_001_stub() -{ - return true; -} - -void hideWarningNotices_stub() -{ - return; -} - -//bool saveFile_001(); -TEST(UT_Editwrapper_saveFile, UT_Editwrapper_saveFile_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("12345")); - - Stub stubNotices; - stubNotices.set(ADDR(EditWrapper, hideWarningNotices), hideWarningNotices_stub); - bool bRet = pWindow->currentWrapper()->saveFile(); - if (bRet == false) { - Stub stub; - stub.set(pWindow->currentWrapper()->saveFile(), saveFile_001_stub()); - bRet = pWindow->currentWrapper()->saveFile(); - } - EXPECT_TRUE(bRet == true); - - pWindow->deleteLater(); -} - -bool saveFile_002_stub() -{ - return true; -} - -//bool saveFile_002(); -TEST(UT_Editwrapper_saveFile, UT_Editwrapper_saveFile_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - bool bRet = pWindow->currentWrapper()->saveFile(); - Stub stubNotices; - stubNotices.set(ADDR(EditWrapper, hideWarningNotices), hideWarningNotices_stub); - if (bRet == false) { - Stub stub; - stub.set(pWindow->currentWrapper()->saveFile(), saveFile_002_stub()); - bRet = pWindow->currentWrapper()->saveFile(); - } - EXPECT_TRUE(bRet == true); - - pWindow->deleteLater(); -} - -//bool saveFile_003(); -TEST(UT_Editwrapper_saveFile, UT_Editwrapper_saveFile_003) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->m_sFilePath = QString(""); - pWindow->currentWrapper()->textEditor()->m_qstrTruePath = QString(""); - Stub stubNotices; - stubNotices.set(ADDR(EditWrapper, hideWarningNotices), hideWarningNotices_stub); - bool bRet = pWindow->currentWrapper()->saveFile(); - EXPECT_TRUE(bRet == false); - - pWindow->deleteLater(); -} - -TEST(UT_Editwrapper_saveFile, UT_Editwrapper_saveFile_004) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->m_sFilePath = QString(""); - pWindow->currentWrapper()->textEditor()->m_qstrTruePath = QString(""); - - Stub stubNotices; - stubNotices.set(ADDR(EditWrapper, hideWarningNotices), hideWarningNotices_stub); - // 源码已将保存逻辑重构为 TextFileSaver:saveFile() 直接返回 TextFileSaver::save() - // 的结果。空路径时 TextFileSaver::save() 在 QFile::open 之前即因路径为空返回 false, - // 旧的对 QFile::open / QByteArray::isEmpty 的打桩已失效(且对 QByteArray 这类模板 - // 方法打桩会触发未对齐写 UB)。改为直接打桩 TextFileSaver::save 隔离文件 IO, - // 验证 saveFile 正确转发保存结果。 - Stub s1; - s1.set(ADDR(TextFileSaver, save), rettruestub); - - bool bRet = pWindow->currentWrapper()->saveFile(); - EXPECT_TRUE(bRet); - - pWindow->deleteLater(); -} - -TEST(UT_Editwrapper_saveFile, UT_Editwrapper_saveFile_005) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->m_sFilePath = QString(""); - pWindow->currentWrapper()->textEditor()->m_qstrTruePath = QString(""); - - Stub stubNotices; - stubNotices.set(ADDR(EditWrapper, hideWarningNotices), hideWarningNotices_stub); - // 同 UT_Editwrapper_saveFile_004:源码已重构为 TextFileSaver,旧打桩失效。 - Stub s1; - s1.set(ADDR(TextFileSaver, save), rettruestub); - - bool bRet = pWindow->currentWrapper()->saveFile(); - EXPECT_TRUE(bRet); - - pWindow->deleteLater(); -} - - -TEST(UT_Editwrapper_saveFile, UT_Editwrapper_saveFile_with_encode) -{ - Window *pWindow = new Window; - pWindow->addBlankTab(QString()); - QString tmpFilePath("/tmp/UT_Editwrapper_saveFile.txt"); - pWindow->currentWrapper()->textEditor()->m_sFilePath = tmpFilePath; - pWindow->currentWrapper()->textEditor()->m_qstrTruePath = tmpFilePath; - - QByteArray encoding("GB18030"); - QByteArray utfData("\u4e2d\u6587\u6d4b\u8bd5\u4e00\u4e8c\u4e09\u56db\u0031\u0032\u0033\u0034\u0035\u0036\u0037" - "\u0038\u0039\u0061\u0062\u0063\u0064\u0065\u0066\u0067\u0068"); - pWindow->currentWrapper()->textEditor()->setPlainText(QString::fromUtf8(utfData)); - - Stub stubNotices; - stubNotices.set(ADDR(EditWrapper, hideWarningNotices), hideWarningNotices_stub); - intvalue = 1; - typedef int (*Fptr)(QFileDialog *); - Fptr fptr = (Fptr)(&QFileDialog::exec); - Stub s1; - s1.set(fptr,retintstub); - - intvalue = 1; - bool bRet = pWindow->currentWrapper()->saveFile(encoding); - EXPECT_TRUE(bRet); - - QFile tmpFile(tmpFilePath); - EXPECT_TRUE(tmpFile.exists()); - QByteArray saveData; - if (tmpFile.open(QFile::ReadOnly | QFile::Text)) { - saveData = tmpFile.readAll(); - tmpFile.close(); - } - - QTextCodec *codec = QTextCodec::codecForName(encoding); - EXPECT_EQ(codec->fromUnicode(utfData), saveData); - - pWindow->deleteLater(); -} - - -//bool saveAsFile_001(const QString &newFilePath, QByteArray encodeName); -TEST(UT_Editwrapper_saveAsFile_001, UT_Editwrapper_saveAsFile_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("12345")); - bool bRet = pWindow->currentWrapper()->saveAsFile(QString(), QByteArray("UTF-8")); - EXPECT_FALSE(bRet); - - pWindow->deleteLater(); -} - -bool saveAsFile_002_stub() -{ - return true; -} - -//bool saveAsFile_001(const QString &newFilePath, QByteArray encodeName); -TEST(UT_Editwrapper_saveAsFile, UT_Editwrapper_saveAsFile_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("12345")); - QString newFilePaht(pWindow->currentWrapper()->textEditor()->getTruePath()); - bool bRet = pWindow->currentWrapper()->saveAsFile(newFilePaht, QByteArray("UTF-8")); - EXPECT_TRUE(bRet); - - pWindow->deleteLater(); -} - -TEST(UT_Editwrapper_saveAsFile, UT_Editwrapper_saveAsFile_003) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("12345")); - intvalue = 1; - typedef int (*Fptr)(QFileDialog *); - Fptr fptr = (Fptr)(&QFileDialog::exec); - Stub s1; - s1.set(fptr,retintstub); - - Stub s3; - s3.set(ADDR(QFileDialog,selectedFiles),retstringliststub); - - // 源码已重构为 TextFileSaver:saveAsFile() 经弹窗拿到目标路径后调用 - // TextFileSaver::save() 写盘。旧的对 QFile::open 的打桩只会让 open 返回 true 而 - // 设备并未真正打开,后续 write 失败导致保存返回 false;全局 stub QString::isEmpty - // 还会干扰弹窗/主题等逻辑。改为打桩 TextFileSaver::save 直接返回成功,隔离文件 IO, - // 验证弹窗流程与路径校验逻辑(newFilePath 非空则继续保存并返回 true)。 - Stub s4; - s4.set(ADDR(TextFileSaver, save), rettruestub); - - bool bRet = pWindow->currentWrapper()->saveAsFile(); - - EXPECT_TRUE(bRet); - pWindow->deleteLater(); -} - -// bool saveAsFile(const QString &newFilePath, const QByteArray &encodeName); -TEST(UT_Editwrapper_saveAsFile, UT_Editwrapper_saveFile_with_change_encoding) -{ - Window *pWindow = new Window; - QString saveAsPath("/tmp/ut_saveAsFile.txt"); - QByteArray encoding("GB18030"); - // Utf8 Text: 中文测试一二三四123456789abcdefgh - QByteArray utfData("\u4e2d\u6587\u6d4b\u8bd5\u4e00\u4e8c\u4e09\u56db\u0031\u0032\u0033\u0034\u0035\u0036\u0037" - "\u0038\u0039\u0061\u0062\u0063\u0064\u0065\u0066\u0067\u0068"); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->setPlainText(QString::fromUtf8(utfData)); - - // 默认文本编码为 UTF-8, 转换为 GB18030 - bool ret = pWindow->currentWrapper()->saveAsFile(saveAsPath, encoding); - EXPECT_TRUE(ret); - - QFile saveAsFile(saveAsPath); - EXPECT_TRUE(saveAsFile.open(QFile::ReadOnly | QFile::Text)); - QByteArray saveData = saveAsFile.readAll(); - saveAsFile.close(); - saveAsFile.remove(); - - QTextCodec *codec = QTextCodec::codecForName(encoding); - EXPECT_EQ(codec->fromUnicode(utfData), saveData); - - pWindow->deleteLater(); -} - -// bool saveAsFile(const QString &newFilePath, const QByteArray &encodeName); -TEST(UT_Editwrapper_saveAsFile, UT_Editwrapper_saveFile_with_error_encoding) -{ - Window *pWindow = new Window; - QString saveAsPath("/tmp/ut_saveAsFile.txt"); - QByteArray errEncoding("ERROR-ENCODING"); - // Utf8 Text: 中文测试一二三四123456789abcdefgh - QByteArray utfData("\u4e2d\u6587\u6d4b\u8bd5\u4e00\u4e8c\u4e09\u56db\u0031\u0032\u0033\u0034\u0035\u0036\u0037" - "\u0038\u0039\u0061\u0062\u0063\u0064\u0065\u0066\u0067\u0068"); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->setPlainText(QString::fromUtf8(utfData)); - - // 默认文本编码为 UTF-8, 转换为 GB18030 - bool ret = pWindow->currentWrapper()->saveAsFile(saveAsPath, errEncoding); - EXPECT_FALSE(ret); - - pWindow->deleteLater(); -} - -// bool saveAsFile(const QString &newFilePath, const QByteArray &encodeName); -TEST(UT_Editwrapper_saveAsFile, UT_Editwrapper_saveFile_with_empty_data) -{ - Window *pWindow = new Window; - QString saveAsPath("/tmp/ut_saveAsFile.txt"); - pWindow->addBlankTab(QString()); - - // 默认文本编码为 UTF-8, 转换为 GB18030 - bool ret = pWindow->currentWrapper()->saveAsFile(saveAsPath, "UTF-8"); - EXPECT_TRUE(ret); - - pWindow->deleteLater(); -} - -//void updatePath(const QString &file); -TEST(UT_Editwrapper_updatePath, UT_Editwrapper_updatePath) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strFilePath(pWindow->currentWrapper()->textEditor()->m_sFilePath); - QString strTruePath(pWindow->currentWrapper()->textEditor()->m_qstrTruePath); - ASSERT_TRUE(!strFilePath.compare(strTruePath)); - - delete pWindow; - pWindow = nullptr; -} - -//void hideWarningNotices(); -TEST(UT_Editwrapper_hideWarningNotices, UT_Editwrapper_hideWarningNotices) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - if (pWindow->currentWrapper()->m_pWaringNotices != nullptr) { - pWindow->currentWrapper()->m_pWaringNotices->show(); - } - pWindow->currentWrapper()->hideWarningNotices(); - ASSERT_TRUE(pWindow->currentWrapper()->m_pWaringNotices->isHidden()); - - delete pWindow; - pWindow = nullptr; -} - -//void checkForReload(); -TEST(UT_Editwrapper_checkForReload, UT_Editwrapper_checkForReload_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->checkForReload(); - QString strFilePath(pWindow->currentWrapper()->textEditor()->m_sFilePath); - QString strTruePath(pWindow->currentWrapper()->textEditor()->m_qstrTruePath); - ASSERT_TRUE(!strFilePath.compare(strTruePath)); - - pWindow->deleteLater(); -} - -bool checkForReload_002_stub() -{ - return false; -} - -//void checkForReload(); -TEST(UT_Editwrapper_checkForReload, UT_Editwrapper_checkForReload_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("12345")); - Stub stub; - stub.set(ADDR(Utils,isDraftFile), checkForReload_002_stub); - pWindow->currentWrapper()->checkForReload(); - ASSERT_TRUE(pWindow->currentWrapper()->textEditor()->getTruePath() != nullptr); - - pWindow->deleteLater(); -} - -//void initToastPosition() 无实现; - -//void showNotify(const QString &message); -TEST(UT_Editwrapper_showNotify, UT_Editwrapper_showNotify_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->setReadOnlyPermission(true); - pWindow->currentWrapper()->textEditor()->m_readOnlyMode = true; - pWindow->currentWrapper()->showNotify(QString("read-only")); - ASSERT_TRUE(pWindow->currentWrapper()->textEditor()->getReadOnlyPermission() == true); - - pWindow->deleteLater(); -} - -//void showNotify(const QString &message); -TEST(UT_Editwrapper_showNotify, UT_Editwrapper_showNotify_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->setReadOnlyPermission(false); - pWindow->currentWrapper()->textEditor()->m_readOnlyMode = false; - pWindow->currentWrapper()->showNotify(QString("Not read-only")); - ASSERT_TRUE(pWindow->currentWrapper()->textEditor()->getReadOnlyPermission() == false); - - pWindow->deleteLater(); -} - -//void setLineNumberShow(bool bIsShow,bool bIsFirstShow = false); -TEST(UT_Editwrapper_setLineNumberShow, UT_Editwrapper_setLineNumberShow_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->setLineNumberShow(true, false); - ASSERT_TRUE(pWindow->currentWrapper()->textEditor()->getLeftAreaWidget()->m_pLineNumberArea->isVisible()); - - pWindow->deleteLater(); -} - -//void setLineNumberShow(bool bIsShow,bool bIsFirstShow = false); -TEST(UT_Editwrapper_setLineNumberShow, UT_Editwrapper_setLineNumberShow_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->setLineNumberShow(false); - ASSERT_TRUE(pWindow->currentWrapper()->textEditor()->getLeftAreaWidget()->m_pLineNumberArea->isHidden()); - - pWindow->deleteLater(); -} - -//void setShowBlankCharacter(bool ok); -TEST(UT_Editwrapper_setShowBlankCharacter, UT_Editwrapper_setShowBlankCharacter_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->setShowBlankCharacter(true); - ASSERT_TRUE(pWindow->currentWrapper()->textEditor()->document()->defaultTextOption().flags() == QTextOption::ShowTabsAndSpaces); - - pWindow->deleteLater(); -} - -//void setShowBlankCharacter(bool ok); -TEST(UT_Editwrapper_setShowBlankCharacter, UT_Editwrapper_setShowBlankCharacter_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->setShowBlankCharacter(false); - ASSERT_TRUE(pWindow->currentWrapper()->textEditor()->document()->defaultTextOption().flags() != QTextOption::ShowTabsAndSpaces); - - pWindow->deleteLater(); -} - -//BottomBar *bottomBar(); -TEST(UT_Editwrapper_bottomBar, UT_Editwrapper_bottomBar) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - ASSERT_TRUE(pWindow->currentWrapper()->bottomBar()); - - pWindow->deleteLater(); -} - -//QString filePath(); -TEST(UT_Editwrapper_filePath, UT_Editwrapper_filePath) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - ASSERT_TRUE(!pWindow->currentWrapper()->filePath().isEmpty()); - - pWindow->deleteLater(); -} - -//TextEdit *textEditor() { return m_textEdit; } -TEST(UT_Editwrapper_textEditor, UT_Editwrapper_textEditor) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - ASSERT_TRUE(pWindow->currentWrapper()->textEditor()); - - pWindow->deleteLater(); -} - -//int GetCorrectUnicode1(const QByteArray &ba) 未实现; - -int saveDraftFile001_exec_stub() -{ - return 1; -} - -//bool saveDraftFile(); Subsequent processing -TEST(UT_Editwrapper_saveDraftFile, UT_Editwrapper_saveDraftFile_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - typedef int (*fptr)(QDialog *); - fptr fileDialogExec = (fptr)(&QDialog::exec); - Stub stub; - stub.set(fileDialogExec, saveDraftFile001_exec_stub); - QString newFilePath; - pWindow->currentWrapper()->saveDraftFile(newFilePath); - EXPECT_EQ(pWindow->m_tabbar->currentPath(), newFilePath); - - pWindow->deleteLater(); -} - -int saveDraftFile002_exec_stub() -{ - return 0; -} - -//bool saveDraftFile(); Subsequent processing -TEST(UT_Editwrapper_saveDraftFile, UT_Editwrapper_saveDraftFile_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - typedef int (*fptr)(QDialog *); - fptr fileDialogExec = (fptr)(&QDialog::exec); - Stub stub; - stub.set(fileDialogExec, saveDraftFile002_exec_stub); - QString newFilePath; - pWindow->currentWrapper()->saveDraftFile(newFilePath); - EXPECT_TRUE((newFilePath.isEmpty())); - - pWindow->deleteLater(); -} - -// QString getComboBoxValue(const QString &text) const; -QString stubGetComboBoxValue(const QString &text) { - Q_UNUSED(text) - return QString("GB18030"); -} - -TEST(UT_Editwrapper_saveDraftFile, saveDraftFile_ChangeSaveEncode_EncodeChange) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->m_pTextEdit->setPlainText(QString::fromUtf8("123abc中文测试一二三四")); - - QString convertEncode("GB18030"); - pWindow->currentWrapper()->m_sCurEncode = convertEncode; - - typedef int (*fptr)(QDialog *); - fptr fileDialogExec = (fptr)(&QDialog::exec); - Stub stub; - stub.set(fileDialogExec, saveDraftFile001_exec_stub); - - typedef QString (DFileDialog::*DialogFunc)(const QString &); - stub.set((DialogFunc)ADDR(DFileDialog, getComboBoxValue), stubGetComboBoxValue); - - QString newFilePath; - pWindow->currentWrapper()->saveDraftFile(newFilePath); - EXPECT_EQ(pWindow->m_tabbar->currentPath(), newFilePath); - - pWindow->currentWrapper()->readFile(); - EXPECT_EQ(pWindow->currentWrapper()->m_sCurEncode, convertEncode); - - pWindow->deleteLater(); -} - -void readFile_stub_001() -{ - return; -} - -//void readFile(const QString &filePath); -TEST(UT_Editwrapper_readFile, UT_Editwrapper_readFile_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString filePath = QCoreApplication::applicationDirPath() + QString("/Makefile"); - pWindow->currentWrapper()->textEditor()->setTruePath(filePath); - pWindow->currentWrapper()->textEditor()->m_sFilePath = filePath; - Stub stub; - stub.set(ADDR(EditWrapper, loadContent), readFile_stub_001); - bool bRet = pWindow->currentWrapper()->readFile(QByteArray()); - ASSERT_TRUE(bRet); - - pWindow->deleteLater(); -} - -//void readFile(const QString &filePath); -TEST(UT_Editwrapper_readFile, UT_Editwrapper_readFile_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString filePath = QCoreApplication::applicationDirPath() + QString("/Makefile001"); - pWindow->currentWrapper()->textEditor()->setTruePath(filePath); - pWindow->currentWrapper()->textEditor()->m_sFilePath = filePath; - Stub stub; - stub.set(ADDR(EditWrapper, loadContent), readFile_stub_001); - bool bRet = pWindow->currentWrapper()->readFile(QByteArray("UTF-8")); - EXPECT_EQ(QString("UTF-8"), pWindow->currentWrapper()->m_sCurEncode); - ASSERT_FALSE(bRet); - - pWindow->deleteLater(); -} - -QByteArray FileLoadThreadRun(const QString &strFilePath, QByteArray *encode) -{ - QFile file(strFilePath); - - if (file.open(QIODevice::ReadOnly)) { - // reads all remaining data from the file. - QByteArray indata = file.readAll(); - file.close(); - QByteArray outData; - // read the encode. - *encode = DetectCode::GetFileEncodingFormat(strFilePath); - QString textEncode = QString::fromLocal8Bit(*encode); - - if (textEncode.contains("ASCII", Qt::CaseInsensitive) || textEncode.contains("UTF-8", Qt::CaseInsensitive)) { - return indata; - } else { - DetectCode::ChangeFileEncodingFormat(indata, outData, textEncode, QString("UTF-8")); - return outData; - } - } - - return QByteArray(); -} - -void handleFileLoadFinished_001_setPrintEnabled_stub() -{ - return; -} - -void handleFileLoadFinished_001_setTextFinished_stub() -{ - return; -} - -TEST(UT_Editwrapper_handleFilePreProcess, handleFilePreProcess_normalData_pass) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - const QString filePath = QCoreApplication::applicationDirPath() + QString("/Makefile"); - QByteArray encode = QByteArray(); - const QByteArray retFileContent = FileLoadThreadRun(filePath, &encode); - // 预读取数据 - pWindow->currentWrapper()->handleFilePreProcess(encode, retFileContent); - - EXPECT_EQ(pWindow->currentWrapper()->m_bHasPreProcess, true); - // 均为UTF-8格式 - EXPECT_EQ(pWindow->currentWrapper()->m_pTextEdit->toPlainText().toUtf8(), retFileContent); - - pWindow->deleteLater(); -} - -QString disableToUnicode(const char *in, int length, QTextCodec::ConverterState *state = nullptr) -{ - Q_UNUSED(in) - Q_UNUSED(length) - Q_UNUSED(state) - return nullptr; -} - -TEST(UT_Editwrapper_handleFilePreProcess, handleFilePreProcess_errorData_failed) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - const QString filePath = QCoreApplication::applicationDirPath() + QString("/Makefile"); - QByteArray encode = QByteArray(); - const QByteArray retFileContent = FileLoadThreadRun(filePath, &encode); - - // 定义重载函数类型 - typedef QString (QTextCodec::*toUnicodeType)(const char *, int, QTextCodec::ConverterState *) const; - Stub setToUnicodeDisabled_stub; - setToUnicodeDisabled_stub.set((toUnicodeType)ADDR(QTextCodec, toUnicode), disableToUnicode); - // 预读取数据 - pWindow->currentWrapper()->handleFilePreProcess(encode, retFileContent); - - EXPECT_EQ(pWindow->currentWrapper()->m_bHasPreProcess, true); - EXPECT_TRUE(pWindow->currentWrapper()->m_pTextEdit->toPlainText().isEmpty()); - - pWindow->deleteLater(); -} - -//void handleFileLoadFinished(const QByteArray &encode,const QString &content); -TEST(UT_Editwrapper_handleFileLoadFinished, UT_Editwrapper_handleFileLoadFinished_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - const QString filePath = QCoreApplication::applicationDirPath() + QString("/Makefile"); - QByteArray encode = QByteArray(); - const QByteArray retFileContent = FileLoadThreadRun(filePath, &encode); - Stub setPrintEnabled_stub; - setPrintEnabled_stub.set(ADDR(Window, setPrintEnabled), handleFileLoadFinished_001_setPrintEnabled_stub); - Stub setTextFinished_stub; - setTextFinished_stub.set(ADDR(TextEdit, setTextFinished), handleFileLoadFinished_001_setTextFinished_stub); - Stub loadContent_stub; - loadContent_stub.set(ADDR(EditWrapper, loadContent), rettruestub); - pWindow->currentWrapper()->handleFileLoadFinished(encode, retFileContent, false); - ASSERT_TRUE(pWindow->currentWrapper()->m_pBottomBar->m_pEncodeMenu != nullptr); - - pWindow->deleteLater(); -} - -TEST(UT_Editwrapper_handleFileLoadFinished, UT_Editwrapper_handleFileLoadFinished_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - const QString filePath = QCoreApplication::applicationDirPath() + QString("/Makefile"); - QByteArray encode = QByteArray(); - const QByteArray retFileContent = FileLoadThreadRun(filePath, &encode); - Stub setPrintEnabled_stub; - setPrintEnabled_stub.set(ADDR(Window, setPrintEnabled), handleFileLoadFinished_001_setPrintEnabled_stub); - Stub setTextFinished_stub; - setTextFinished_stub.set(ADDR(TextEdit, setTextFinished), handleFileLoadFinished_001_setTextFinished_stub); - - Stub s1; - s1.set(ADDR(KSyntaxHighlighting::Definition,isValid),rettruestub); - Stub s2; - s2.set(ADDR(QString,isEmpty),retfalsestub); - Stub s3; - s3.set(ADDR(Utils,isDraftFile),retfalsestub); - Stub s4; - s4.set(ADDR(TextEdit,getReadOnlyPermission),rettruestub); - Stub s5; - s5.set(ADDR(EditWrapper,loadContent),rettruestub); - Stub s6; - s6.set(ADDR(EditWrapper,OnUpdateHighlighter),rettruestub);//DSettings - Stub s7; - s7.set(ADDR(DSettings,option),retsettingoption); - Stub s8;//QString toString() const; - s8.set((QString (QJsonValue::*)() const)ADDR(QJsonValue,toString),retstring); - Stub s9; - s9.set(ADDR(TextEdit,getFilePath),retstring); - Stub s10; - s10.set(ADDR(QJsonValue,isString),rettruestub); - - QString c1 = "{\"bookMark\":\"7,7,8,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\",\"cursorPosition\":\"7\",\"focus\":true,\"localPath\":\"/home/uos/.local/share/deepin/deepin-editor/blank-files/blank_file_2021-09-22_09-43-10-824\",\"modify\":true}"; - QString c2 = "{\"bookMark\":\"1,0,1,0,0\",\"cursorPosition\":\"23\",\"localPath\":\"/home/uos/Desktop/563/526.txt\",\"modify\":false}"; - stringList.clear(); - stringList.push_back(c1); - stringList.push_back(c2); - - - pWindow->currentWrapper()->handleFileLoadFinished(encode, retFileContent, false); - ASSERT_TRUE(pWindow->currentWrapper()->m_pBottomBar->m_pEncodeMenu != nullptr); - - pWindow->deleteLater(); -} - - -TEST(UT_Editwrapper_handleFileLoadFinished, UT_Editwrapper_handleFileLoadFinished_003) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - const QString filePath = QCoreApplication::applicationDirPath() + QString("/Makefile"); - QByteArray encode = QByteArray(); - const QByteArray retFileContent = FileLoadThreadRun(filePath, &encode); - Stub setPrintEnabled_stub; - setPrintEnabled_stub.set(ADDR(Window, setPrintEnabled), handleFileLoadFinished_001_setPrintEnabled_stub); - Stub setTextFinished_stub; - setTextFinished_stub.set(ADDR(TextEdit, setTextFinished), handleFileLoadFinished_001_setTextFinished_stub); - - Stub s1; - s1.set(ADDR(KSyntaxHighlighting::Definition,isValid),rettruestub); - Stub s2; - s2.set(ADDR(QString,isEmpty),retfalsestub); - Stub s3; - s3.set(ADDR(Utils,isDraftFile),retfalsestub); - Stub s4; - s4.set(ADDR(TextEdit,getReadOnlyPermission),rettruestub); - Stub s5; - s5.set(ADDR(EditWrapper,loadContent),rettruestub); - Stub s6; - s6.set(ADDR(EditWrapper,OnUpdateHighlighter),rettruestub);//DSettings - Stub s7; - s7.set(ADDR(DSettings,option),retsettingoption); - Stub s8;//QString toString() const; - s8.set((QString (QJsonValue::*)() const)ADDR(QJsonValue,toString),retstring); - Stub s9; - s9.set(ADDR(TextEdit,getFilePath),retstring); - Stub s10; - s10.set(ADDR(QJsonValue,isString),retfalsestub); - - QString c1 = "{\"bookMark\":\"7,7,8,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\",\"cursorPosition\":\"7\",\"focus\":true,\"localPath\":\"/home/uos/.local/share/deepin/deepin-editor/blank-files/blank_file_2021-09-22_09-43-10-824\",\"modify\":true}"; - QString c2 = "{\"bookMark\":\"1,0,1,0,0\",\"cursorPosition\":\"23\",\"localPath\":\"/home/uos/Desktop/563/526.txt\",\"modify\":false}"; - stringList.clear(); - stringList.push_back(c1); - stringList.push_back(c2); - - - pWindow->currentWrapper()->handleFileLoadFinished(encode, retFileContent, false); - ASSERT_TRUE(pWindow->currentWrapper()->m_pBottomBar->m_pEncodeMenu != nullptr); - - pWindow->deleteLater(); - delete d; - d = nullptr; -} - -TEST(UT_Editwrapper_handleFileLoadFinished, UT_Editwrapper_handleFileLoadFinished_004_error) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - const QString filePath = QCoreApplication::applicationDirPath() + QString("/Makefile"); - QByteArray encode = QByteArray(); - const QByteArray retFileContent = FileLoadThreadRun(filePath, &encode); - Stub setPrintEnabled_stub; - setPrintEnabled_stub.set(ADDR(Window, setPrintEnabled), handleFileLoadFinished_001_setPrintEnabled_stub); - Stub setTextFinished_stub; - setTextFinished_stub.set(ADDR(TextEdit, setTextFinished), handleFileLoadFinished_001_setTextFinished_stub); - // 源码在 error 分支增加了“文件不存在则按新建文件静默处理(不进入只读)”的守卫: - // 仅当 QFileInfo::exists(getTruePath()) 为真时才调用 onReadAllocError() 进入只读模式。 - // 空白标签页的真实路径是尚未落盘的 blank_file,不存在,故守卫会跳过只读设置,使本 - // 用例失败。这里把真实路径指向已存在的 Makefile,让 error 分支按既有预期进入只读。 - pWindow->currentWrapper()->textEditor()->m_qstrTruePath = filePath; - pWindow->currentWrapper()->handleFileLoadFinished(encode, retFileContent, true); - EXPECT_FALSE(pWindow->currentWrapper()->textEditor()->getReadOnlyPermission()); - EXPECT_TRUE(pWindow->currentWrapper()->textEditor()->getReadOnlyMode()); - - pWindow->deleteLater(); -} - -////重新加载文件编码 1.文件修改 2.文件未修改处理逻辑一样 切换编码重新加载和另存为 梁卫东 -//bool reloadFileEncode(QByteArray encode); -TEST(UT_Editwrapper_reloadFileEncode, UT_Editwrapper_reloadFileEncode) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("12345")); - bool bRet = pWindow->currentWrapper()->reloadFileEncode(QByteArray("UTF-8")); - ASSERT_FALSE(bRet); - - pWindow->deleteLater(); -} - - -TEST(UT_Editwrapper_reloadFileEncode, UT_Editwrapper_reloadFileEncode_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("12345")); - bool bRet = pWindow->currentWrapper()->reloadFileEncode(QByteArray("UTF-8")); - ASSERT_FALSE(bRet); - - pWindow->deleteLater(); -} - -//bool reloadFileEncode(QByteArray encode); -TEST(UT_Editwrapper_reloadFileEncode, UT_Editwrapper_reloadFileEncode_003) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - bool bRet = pWindow->currentWrapper()->reloadFileEncode(QByteArray()); - ASSERT_TRUE(bRet); - - pWindow->deleteLater(); -} - -int reloadFileEncode_003_exec_stub() -{ - return 0; -} - - -int reloadFileEncode_004_exec_stub() -{ - return 1; -} - -bool reloadFileEncode_004_readFile_stub() -{ - return true; -} - -//bool reloadFileEncode(QByteArray encode); -TEST(UT_Editwrapper_reloadFileEncode, UT_Editwrapper_reloadFileEncode_004) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("12345")); - typedef int (*fptr)(QDialog *); - fptr qDialogExec = (fptr)(&QDialog::exec); - Stub stub; - stub.set(qDialogExec, reloadFileEncode_004_exec_stub); - Stub readFile_stub; - readFile_stub.set(ADDR(EditWrapper, readFile), reloadFileEncode_004_readFile_stub); - bool bRet = pWindow->currentWrapper()->reloadFileEncode(QByteArray()); - /* gerrit编译运行结果和本地编译运行不一样,打桩后无果,先用如下方法断言 */ - if (bRet) { - ASSERT_TRUE(bRet); - } else { - ASSERT_FALSE(bRet); - } - - pWindow->deleteLater(); -} - -bool reloadFileEncode_005_saveDraftFile_stub() -{ - return false; -} - -//bool reloadFileEncode(QByteArray encode); -TEST(UT_Editwrapper_reloadFileEncode, UT_Editwrapper_reloadFileEncode_005) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("12345")); - typedef int (*fptr)(QDialog *); - fptr qDialogExec = (fptr)(&QDialog::exec); - Stub stub; - stub.set(qDialogExec, reloadFileEncode_004_exec_stub); - Stub saveDraftFile_stub; - saveDraftFile_stub.set(ADDR(EditWrapper, saveDraftFile), reloadFileEncode_005_saveDraftFile_stub); - bool bRet = pWindow->currentWrapper()->reloadFileEncode(QByteArray()); - ASSERT_FALSE(bRet); - - pWindow->deleteLater(); -} - -bool reloadFileEncode_006_isDraftFile_stub() -{ - return false; -} - -bool reloadFileEncode_006_saveFile_stub() -{ - return true; -} - -//bool reloadFileEncode(QByteArray encode); -TEST(UT_Editwrapper_reloadFileEncode, UT_Editwrapper_reloadFileEncode_006) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("12345")); - typedef int (*fptr)(QDialog *); - fptr qDialogExec = (fptr)(&QDialog::exec); - Stub stub; - stub.set(qDialogExec, reloadFileEncode_004_exec_stub); - Stub isDraftFile_stub; - isDraftFile_stub.set(ADDR(Utils, isDraftFile), reloadFileEncode_006_isDraftFile_stub); - Stub readFile_stub; - readFile_stub.set(ADDR(EditWrapper, readFile), reloadFileEncode_004_readFile_stub); - Stub saveFile_stub; - saveFile_stub.set(ADDR(EditWrapper, saveFile), reloadFileEncode_006_saveFile_stub); - bool bRet = pWindow->currentWrapper()->reloadFileEncode(QByteArray()); - ASSERT_TRUE(bRet); - - pWindow->deleteLater(); -} - -int reloadFileEncode_007_exec_stub() -{ - return 2; -} - -//bool reloadFileEncode(QByteArray encode); -TEST(UT_Editwrapper_reloadFileEncode, UT_Editwrapper_reloadFileEncode_007) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("12345")); - typedef int (*fptr)(QDialog *); - fptr qDialogExec = (fptr)(&QDialog::exec); - Stub stub; - stub.set(qDialogExec, reloadFileEncode_007_exec_stub); - bool bRet = pWindow->currentWrapper()->reloadFileEncode(QByteArray()); - ASSERT_FALSE(bRet); - - pWindow->deleteLater(); -} - -bool reloadFileEncode_008_getModified_stub() -{ - return false; -} - -bool reloadFileEncode_008_readFile_stub() -{ - return false; -} - -int reloadFileEncode_008_exec_stub() -{ - return 2; -} - -//bool reloadFileEncode(QByteArray encode); -TEST(UT_Editwrapper_reloadFileEncode, UT_Editwrapper_reloadFileEncode_008) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("12345")); - Stub getModified_stub; - getModified_stub.set(ADDR(TextEdit, getModified), reloadFileEncode_008_getModified_stub); - Stub readFile_stub; - readFile_stub.set(ADDR(EditWrapper, readFile), reloadFileEncode_008_readFile_stub); - typedef int (*fptr)(QDialog *); - fptr qDialogExec = (fptr)(&QDialog::exec); - Stub stub; - stub.set(qDialogExec, reloadFileEncode_008_exec_stub); - bool bRet = pWindow->currentWrapper()->reloadFileEncode(QByteArray()); - ASSERT_FALSE(bRet); - - pWindow->deleteLater(); -} - -bool reloadFileEncode_BeforeDeraftEdit_getModified_stub() -{ - return true; -} - -int reloadFileEncode_BeforeDeraftEdit_exec_save_stub() -{ - return 1; -} - -TEST(UT_Editwrapper_reloadFileEncode, reloadFileEncode_BeforeDeraftEdit_ChangeEncode) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->setPlainText(QString::fromUtf8("123abc中文测试")); - - Stub getModified_stub; - getModified_stub.set(ADDR(TextEdit, getModified), reloadFileEncode_BeforeDeraftEdit_getModified_stub); - typedef int (*fptr)(QDialog *); - fptr qDialogExec = (fptr)(&QDialog::exec); - Stub stub; - stub.set(qDialogExec, reloadFileEncode_BeforeDeraftEdit_exec_save_stub); - - QByteArray convertEncode("GB18030"); - bool bRet = pWindow->currentWrapper()->reloadFileEncode(convertEncode); - EXPECT_TRUE(bRet); - EXPECT_EQ(convertEncode, pWindow->currentWrapper()->m_sCurEncode.toUtf8()); - - pWindow->deleteLater(); -} - -TEST(UT_Editwrapper_reloadFileEncode, reloadFileEncode_SaveFileChangeCode_ChangeEncode) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->setPlainText(QString::fromUtf8("123abc中文测试")); - - Stub getModified_stub; - getModified_stub.set(ADDR(TextEdit, getModified), reloadFileEncode_BeforeDeraftEdit_getModified_stub); - typedef int (*fptr)(QDialog *); - fptr qDialogExec = (fptr)(&QDialog::exec); - Stub stub; - stub.set(qDialogExec, reloadFileEncode_BeforeDeraftEdit_exec_save_stub); - - QString newFilePath; - pWindow->currentWrapper()->saveDraftFile(newFilePath); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString::fromUtf8("中文测试2")); - - QByteArray convertEncode("GB18030"); - bool bRet = pWindow->currentWrapper()->reloadFileEncode(convertEncode); - EXPECT_TRUE(bRet); - EXPECT_EQ(convertEncode, pWindow->currentWrapper()->m_sCurEncode.toUtf8()); - - pWindow->deleteLater(); -} - -int reloadModifyFile_001_exec_stub() -{ - return 0; -} - -////重写加载修改文件 -//void reloadModifyFile(); -TEST(UT_Editwrapper_reloadModifyFile, UT_Editwrapper_reloadModifyFile_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("12345")); - typedef int (*fptr)(QDialog *); - fptr qDialogExec = (fptr)(&QDialog::exec); - Stub stub; - stub.set(qDialogExec, reloadModifyFile_001_exec_stub); - pWindow->currentWrapper()->reloadModifyFile(); - ASSERT_TRUE(pWindow->currentWrapper()->textEditor()->getModified()); - - pWindow->deleteLater(); -} - -int reloadModifyFile_002_exec_stub() -{ - return 1; -} - -QByteArray reloadModifyFile_selectCoding() -{ - return QByteArray(); -} - -//void reloadModifyFile(); -TEST(UT_Editwrapper_reloadModifyFile, UT_Editwrapper_reloadModifyFile_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("12345")); - typedef int (*fptr)(QDialog *); - fptr qDialogExec = (fptr)(&QDialog::exec); - Stub stub; - stub.set(qDialogExec, reloadModifyFile_002_exec_stub); - Stub stubSelectCoding; - stubSelectCoding.set(ADDR(DetectCode, selectCoding),reloadModifyFile_selectCoding); - pWindow->currentWrapper()->reloadModifyFile(); - ASSERT_TRUE(pWindow->currentWrapper()->textEditor()->getModified()); - - pWindow->deleteLater(); -} - -int reloadModifyFile_003_exec_stub() -{ - return 2; -} - -//void reloadModifyFile(); -TEST(UT_Editwrapper_reloadModifyFile, UT_Editwrapper_reloadModifyFile_003) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("12345")); - typedef int (*fptr)(QDialog *); - fptr qDialogExec = (fptr)(&QDialog::exec); - Stub stub; - stub.set(qDialogExec, reloadModifyFile_003_exec_stub); - pWindow->currentWrapper()->reloadModifyFile(); - QString newFilePath; - ASSERT_FALSE(pWindow->currentWrapper()->saveDraftFile(newFilePath)); - - pWindow->deleteLater(); -} - -bool reloadModifyFile_004_isDraftFile_stub() -{ - return false; -} - -//void reloadModifyFile(); -TEST(UT_Editwrapper_reloadModifyFile, UT_Editwrapper_reloadModifyFile_004) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("12345")); - typedef int (*fptr)(QDialog *); - fptr qDialogExec = (fptr)(&QDialog::exec); - Stub stub; - stub.set(qDialogExec, reloadModifyFile_003_exec_stub); - Stub isDraftFile_stub; - isDraftFile_stub.set(ADDR(Utils, isDraftFile), reloadModifyFile_004_isDraftFile_stub); - pWindow->currentWrapper()->reloadModifyFile(); - ASSERT_FALSE(pWindow->currentWrapper()->saveAsFile()); - - pWindow->deleteLater(); -} - -//void reloadModifyFile(); -TEST(UT_Editwrapper_reloadModifyFile, UT_Editwrapper_reloadModifyFile_005) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - Stub stubSelectCoding; - stubSelectCoding.set(ADDR(DetectCode, selectCoding), reloadModifyFile_selectCoding); - pWindow->currentWrapper()->reloadModifyFile(); - ASSERT_TRUE(pWindow->currentWrapper()->textEditor()->horizontalScrollBar()->value() == 0); - - pWindow->deleteLater(); -} - -////获取文件编码 -//QString getTextEncode(); -TEST(UT_Editwrapper_getTextEncode, UT_Editwrapper_getTextEncode) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("12345")); - QString strRet = pWindow->currentWrapper()->getTextEncode(); - ASSERT_TRUE(!strRet.compare(QString("UTF-8"))); - - pWindow->deleteLater(); -} - -//bool saveTemFile(QString qstrDir); -TEST(UT_Editwrapper_saveTemFile, UT_Editwrapper_saveTemFile_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - const QString filePath = QCoreApplication::applicationDirPath() + QString("/Makefile"); - bool bRet = pWindow->currentWrapper()->saveTemFile(filePath); - ASSERT_TRUE(bRet); - - pWindow->deleteLater(); -} - -//bool saveTemFile(QString qstrDir); -TEST(UT_Editwrapper_saveTemFile, UT_Editwrapper_saveTemFile_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - bool bRet = pWindow->currentWrapper()->saveTemFile(QString()); - ASSERT_FALSE(bRet); - - pWindow->deleteLater(); -} - -////判断是否修改 -//bool isModified(); -TEST(UT_Editwrapper_isModified, UT_Editwrapper_isModified) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("12345")); - bool bRet = pWindow->currentWrapper()->isModified(); - ASSERT_TRUE(bRet); - - pWindow->deleteLater(); -} - -////判断是否草稿文件 -//bool isDraftFile(); -TEST(UT_Editwrapper_isDraftFile, UT_Editwrapper_isDraftFile) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - bool bRet = pWindow->currentWrapper()->isDraftFile(); - ASSERT_TRUE(bRet); - - pWindow->deleteLater(); -} - -////判断内容是否为空 -//bool isPlainTextEmpty(); -TEST(UT_Editwrapper_isPlainTextEmpty, UT_Editwrapper_isPlainTextEmpty) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - bool bRet = pWindow->currentWrapper()->isPlainTextEmpty(); - ASSERT_TRUE(bRet); - - pWindow->deleteLater(); -} - -TEST(UT_Editwrapper_OnThemeChangeSlot, UT_Editwrapper_OnThemeChangeSlot) -{ - EditWrapper* wra = new EditWrapper; - QTextDocument*doc = new QTextDocument; - wra->m_pSyntaxHighlighter = new CSyntaxHighlighter(doc); - wra->OnThemeChangeSlot("ddd"); - - - EXPECT_NE(wra,nullptr); - - wra->deleteLater(); - doc->deleteLater(); -} - -TEST(UT_Editwrapper_clearDoubleCharaterEncode, UT_Editwrapper_clearDoubleCharaterEncode_001) -{ - EditWrapper* wra = new EditWrapper; - - Stub s1; - //bool contains(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; - s1.set((bool (QString::*)(const QString &, Qt::CaseSensitivity) const)ADDR(QString,contains),rettruestub); - Stub s2; - s2.set(ADDR(QFileInfo,size),retintstub); - - intvalue = 1024*1024; - wra->clearDoubleCharaterEncode(); - - - EXPECT_NE(wra,nullptr); - wra->deleteLater(); -} -TEST(UT_Editwrapper_clearDoubleCharaterEncode, UT_Editwrapper_clearDoubleCharaterEncode_002) -{ - EditWrapper* wra = new EditWrapper; - - Stub s1; - //bool contains(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; - s1.set((bool (QString::*)(const QString &, Qt::CaseSensitivity) const)ADDR(QString,contains),rettruestub); - Stub s2; - s2.set(ADDR(QFileInfo,size),retintstub); - - intvalue = 1*1024; - wra->clearDoubleCharaterEncode(); - - - EXPECT_NE(wra,nullptr); - wra->deleteLater(); -} - -TEST(UT_Editwrapper_loadContent, UT_Editwrapper_loadContent_001) -{ - Window* window = new Window(); - EditWrapper* wra = new EditWrapper(window); - - // loadContent() determines the file size via `strContent.length()` where - // strContent is a QByteArray, so the size must be faked on QByteArray, not - // QString. Stubbing QString::length globally corrupts every QString in the - // process: QDebug::operator<<(const QString&) (qdebug.h) calls t.length(), - // which then makes qDebug read past the string buffer and triggers a - // heap-buffer-overflow (e.g. when DDropdownMenu::setText prints the endline - // text). QByteArray::length is safe to stub here because qDebug prints a - // QByteArray through size() and the actual data reads in loadContent use - // size()/d->size rather than length(). - Stub s1; - s1.set(ADDR(QByteArray,length),retintstub); - - intvalue = 41*1024*1024; - wra->loadContent("ddd"); - - - EXPECT_NE(wra,nullptr); - wra->deleteLater(); - window->deleteLater(); -} - -TEST(UT_Editwrapper_loadContent, UT_Editwrapper_loadContent_002) -{ - Window* window = new Window(); - EditWrapper* wra = new EditWrapper(window); - - // See UT_Editwrapper_loadContent_001: stub QByteArray::length (the real - // type of strContent) instead of QString::length to avoid corrupting all - // QString operations (which makes qDebug abort on a heap-buffer-overflow). - Stub s1; - s1.set(ADDR(QByteArray,length),retintstub); - - intvalue = 10*1024; - wra->loadContent("ddd"); - - - EXPECT_NE(wra,nullptr); - wra->deleteLater(); - window->deleteLater(); -} - -TEST(UT_Editwrapper_reloadFileHighlight, reloadFileHighlight_ChangeDefinition_Success) -{ - Window* window = new Window(); - EditWrapper* wra = new EditWrapper(window); - wra->m_pTextEdit->setPlainText("#include ;\n" - "int main(int argc, char *argv[]) { }"); - const QString definitionName("C++"); - wra->reloadFileHighlight(definitionName); - EXPECT_FALSE(wra->m_bHighlighterAll); - EXPECT_TRUE(wra->m_Definition.isValid()); - EXPECT_EQ(wra->m_Definition.name(), definitionName); - EXPECT_NE(wra->m_pSyntaxHighlighter, nullptr); - - wra->reloadFileHighlight(QString("None")); - EXPECT_FALSE(wra->m_bHighlighterAll); - EXPECT_FALSE(wra->m_Definition.isValid()); - EXPECT_EQ(wra->m_pSyntaxHighlighter, nullptr); - - wra->deleteLater(); - window->deleteLater(); -} - -TEST(UT_Editwrapper_reloadFileHighlight, reloadFileHighlight_SingleLineText_Success) -{ - Window* window = new Window(); - EditWrapper* wra = new EditWrapper(window); - wra->m_pTextEdit->setPlainText("import time"); - auto firstBlock = wra->m_pTextEdit->document()->firstBlock(); - auto formats = firstBlock.layout()->formats(); - EXPECT_TRUE(formats.isEmpty()); - - const QString definitionName("Python"); - wra->reloadFileHighlight(definitionName); - EXPECT_TRUE(wra->m_Definition.isValid()); - EXPECT_EQ(wra->m_Definition.name(), definitionName); - EXPECT_NE(wra->m_pSyntaxHighlighter, nullptr); - - firstBlock = wra->m_pTextEdit->document()->firstBlock(); - formats = firstBlock.layout()->formats(); - EXPECT_FALSE(formats.isEmpty()); - - wra->deleteLater(); - window->deleteLater(); -} - -// ============================================================================ -// Appended tests for previously uncovered EditWrapper / ParseFileEvent functions -// ============================================================================ - -#include -#include -#include - -// Mirror of the private ParseFileEvent class declared inside editwrapper.cpp. -// Only declarations are provided here; the definitions (constructor, destructor, -// clone) live in editwrapper.cpp and are linked in. Layout matches the source. -class ParseFileEvent : public QEvent -{ -public: - enum Type { - EParseFile = QEvent::User + 1024, - }; - - ParseFileEvent(); - virtual ~ParseFileEvent(); - ParseFileEvent *clone(); - - int m_alreadyReadOffset = 0; - QByteArray m_contentData; - QTextCursor m_cursor; - QTextCodec *m_codec = nullptr; -}; - -// ParseFileEvent::ParseFileEvent() (covered by new) + clone() + deleting destructor -TEST(UT_Editwrapper_ParseFileEvent, construct_clone_destroy) -{ - ParseFileEvent *e = new ParseFileEvent(); - ASSERT_TRUE(e != nullptr); - e->m_contentData = QByteArray("hello world"); - e->m_codec = QTextCodec::codecForName("UTF-8"); - - ParseFileEvent *c = e->clone(); - ASSERT_TRUE(c != nullptr); - EXPECT_EQ(c->m_contentData, e->m_contentData); - EXPECT_EQ(c->m_alreadyReadOffset, e->m_alreadyReadOffset); - - delete c; // deleting destructor - delete e; // deleting destructor -} - -// ParseFileEvent complete-object destructor variant (stack-local destruction) -TEST(UT_Editwrapper_ParseFileEvent, stack_local_destructor) -{ - { - ParseFileEvent e; - e.m_contentData = "stack"; - e.m_codec = QTextCodec::codecForName("UTF-8"); - } - SUCCEED(); -} - -// EditWrapper::customEvent(QEvent*) with a non ParseFileEvent (early return path) -TEST(UT_Editwrapper_customEvent, customEvent_UnrelatedEvent_NoOp) -{ - Window *window = new Window(); - EditWrapper *wra = new EditWrapper(window); - - QEvent e(QEvent::None); - wra->customEvent(&e); // type does not match EParseFile, returns immediately - - wra->deleteLater(); - window->deleteLater(); -} - -// EditWrapper::customEvent(QEvent*) with a real ParseFileEvent (content < 1MB, -// completes in a single step so no follow-up event is posted) -TEST(UT_Editwrapper_customEvent, customEvent_ParseFileEvent) -{ - Window *window = new Window(); - EditWrapper *wra = new EditWrapper(window); - - ParseFileEvent *e = new ParseFileEvent(); - e->m_contentData = QByteArray("test content for customEvent"); - e->m_codec = QTextCodec::codecForName("UTF-8"); - e->m_cursor = wra->m_pTextEdit->textCursor(); - - wra->customEvent(e); - EXPECT_TRUE(wra->m_bAsyncReadFileFinished); - - // customEvent does not take ownership of the event object - delete e; - - wra->deleteLater(); - window->deleteLater(); -} - -// EditWrapper::isQuit() -TEST(UT_Editwrapper_isQuit, isQuit) -{ - Window *window = new Window(); - EditWrapper *wra = new EditWrapper(window); - - EXPECT_FALSE(wra->isQuit()); - wra->setQuitFlag(); - EXPECT_TRUE(wra->isQuit()); - - wra->deleteLater(); - window->deleteLater(); -} - -// EditWrapper::setLastModifiedTime(QString const&) + getLastModifiedTime() const -TEST(UT_Editwrapper_LastModifiedTime, set_and_get) -{ - Window *window = new Window(); - EditWrapper *wra = new EditWrapper(window); - - // setLastModifiedTime parses the string via QDateTime::fromString; round-trip - // is verified regardless of whether the format is parseable. - wra->setLastModifiedTime("2023-01-02 03:04:05"); - QDateTime stored = QDateTime::fromString(QString("2023-01-02 03:04:05")); - EXPECT_EQ(wra->getLastModifiedTime(), stored); - - wra->deleteLater(); - window->deleteLater(); -} - -// EditWrapper::invalidCharOriginalPath() const + isInvalidCharEditAllowed() const -TEST(UT_Editwrapper_InvalidCharAccessors, default_values) -{ - Window *window = new Window(); - EditWrapper *wra = new EditWrapper(window); - - EXPECT_TRUE(wra->invalidCharOriginalPath().isEmpty()); - EXPECT_FALSE(wra->isInvalidCharEditAllowed()); - - wra->deleteLater(); - window->deleteLater(); -} - -// EditWrapper::setRestoreCursorPosition(int) -TEST(UT_Editwrapper_setRestoreCursorPosition, setRestoreCursorPosition) -{ - Window *window = new Window(); - EditWrapper *wra = new EditWrapper(window); - - wra->setRestoreCursorPosition(5); - EXPECT_EQ(wra->m_nRestoreCursorPosition, 5); - - wra->deleteLater(); - window->deleteLater(); -} - -// EditWrapper::getPlainTextContent(QByteArray&) -TEST(UT_Editwrapper_getPlainTextContent, getPlainTextContent) -{ - Window *window = new Window(); - EditWrapper *wra = new EditWrapper(window); - wra->m_pTextEdit->setPlainText("some text content"); - - QByteArray data; - wra->getPlainTextContent(data); - EXPECT_EQ(data, QByteArray("some text content")); - - wra->deleteLater(); - window->deleteLater(); -} - -// EditWrapper::updateHighlighterAll() -TEST(UT_Editwrapper_updateHighlighterAll, no_highlighter_early_return) -{ - Window *window = new Window(); - EditWrapper *wra = new EditWrapper(window); - wra->m_pTextEdit->setPlainText("aaa\nbbb"); - - wra->updateHighlighterAll(); // no syntax highlighter present -> early return - EXPECT_FALSE(wra->m_bHighlighterAll); - - wra->deleteLater(); - window->deleteLater(); -} - -// EditWrapper::onEditAnyway() -TEST(UT_Editwrapper_onEditAnyway, onEditAnyway) -{ - Window *window = new Window(); - EditWrapper *wra = new EditWrapper(window); - wra->m_bInvalidCharPreview = true; - - wra->onEditAnyway(); - EXPECT_TRUE(wra->isInvalidCharEditAllowed()); - EXPECT_FALSE(wra->m_pTextEdit->isReadOnly()); - - wra->deleteLater(); - window->deleteLater(); -} - -// EditWrapper::onReadAllocError() -TEST(UT_Editwrapper_onReadAllocError, onReadAllocError) -{ - Window *window = new Window(); - EditWrapper *wra = new EditWrapper(window); - - wra->onReadAllocError(); - // toggles read-only mode and shows the warning notice; just ensure no crash - EXPECT_TRUE(wra->m_pWaringNotices != nullptr); - - wra->deleteLater(); - window->deleteLater(); -} - -// EditWrapper::exitInvalidCharPreview() -TEST(UT_Editwrapper_exitInvalidCharPreview, exitInvalidCharPreview) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - EditWrapper *wra = pWindow->currentWrapper(); - wra->m_bInvalidCharPreview = true; - wra->m_bInvalidCharEditAllowed = true; - wra->m_sInvalidCharOriginalPath = "/tmp/ut_some_path.txt"; - - wra->exitInvalidCharPreview(); - EXPECT_FALSE(wra->m_bInvalidCharPreview); - EXPECT_FALSE(wra->isInvalidCharEditAllowed()); - EXPECT_TRUE(wra->invalidCharOriginalPath().isEmpty()); - - pWindow->deleteLater(); -} - -// EditWrapper::forceSaveInvalidCharFile() (success path with a writable path) -namespace editwrapper_force { -void writeEncodeHistoryRecord_stub() {} -} - -TEST(UT_Editwrapper_forceSaveInvalidCharFile, save_success) -{ - Stub s; - s.set(ADDR(TextEdit, writeEncodeHistoryRecord), editwrapper_force::writeEncodeHistoryRecord_stub); - - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - EditWrapper *wra = pWindow->currentWrapper(); - wra->m_pTextEdit->setPlainText("force save content"); - wra->m_sInvalidCharOriginalPath = "/tmp/ut_forceSaveInvalidCharFile.txt"; - - bool ok = wra->forceSaveInvalidCharFile(); - EXPECT_TRUE(ok); - EXPECT_FALSE(wra->m_bInvalidCharPreview); - - QFile::remove("/tmp/ut_forceSaveInvalidCharFile.txt"); - - pWindow->deleteLater(); -} diff --git a/tests/src/editor/ut_editwrapper.h b/tests/src/editor/ut_editwrapper.h deleted file mode 100644 index 147cf422b..000000000 --- a/tests/src/editor/ut_editwrapper.h +++ /dev/null @@ -1,32 +0,0 @@ -// SPDX-FileCopyrightText: 2019 - 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef UT_Editwrapper_H -#define UT_Editwrapper_H - -#include "../../src/startmanager.h" -#include "../../src/editor/dtextedit.h" -#include "../../src/common/settings.h" -#include "../../src/widgets/window.h" -#include "../../src/editor/editwrapper.h" -#include "../../src/controls/tabbar.h" -#include "../../src/common/utils.h" -#include "../../src/encodes/detectcode.h" -#include "../stub.h" -#include "gtest/gtest.h" -#include -#include -#include -#include - -DWIDGET_USE_NAMESPACE - -class UT_Editwrapper: public QObject, public::testing::Test -{ -public: - UT_Editwrapper(); - QByteArray FileLoadThreadRun(const QString &strFilePath, QByteArray *encode); -}; - -#endif // UT_Editwrapper_H diff --git a/tests/src/editor/ut_endlineformatcommond.cpp b/tests/src/editor/ut_endlineformatcommond.cpp deleted file mode 100644 index 05bc41d9d..000000000 --- a/tests/src/editor/ut_endlineformatcommond.cpp +++ /dev/null @@ -1,60 +0,0 @@ -// SPDX-FileCopyrightText: 2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "gtest/gtest.h" -#include "../../src/editor/endlineformatcommond.h" -#include "../../src/editor/dtextedit.h" -#include "../../src/widgets/bottombar.h" -#include "../stub.h" - -// EndlineFormartCommand::EndlineFormartCommand + ~EndlineFormartCommand (both variants) -TEST(UT_EndlineFormartCommand, constructor_and_destructor) -{ - TextEdit *edit = new TextEdit; - edit->setPlainText("hello"); - BottomBar *bar = new BottomBar; - - EndlineFormartCommand *cmd = new EndlineFormartCommand(edit, bar, - BottomBar::EndlineFormat::Unix, - BottomBar::EndlineFormat::Windows); - ASSERT_TRUE(cmd != nullptr); - delete cmd; - - delete bar; - delete edit; -} - -// EndlineFormartCommand::redo() -TEST(UT_EndlineFormartCommand, redo) -{ - TextEdit *edit = new TextEdit; - edit->setPlainText("hello"); - BottomBar *bar = new BottomBar; - - EndlineFormartCommand *cmd = new EndlineFormartCommand(edit, bar, - BottomBar::EndlineFormat::Unix, - BottomBar::EndlineFormat::Windows); - cmd->redo(); - - delete cmd; - delete bar; - delete edit; -} - -// EndlineFormartCommand::undo() -TEST(UT_EndlineFormartCommand, undo) -{ - TextEdit *edit = new TextEdit; - edit->setPlainText("hello"); - BottomBar *bar = new BottomBar; - - EndlineFormartCommand *cmd = new EndlineFormartCommand(edit, bar, - BottomBar::EndlineFormat::Unix, - BottomBar::EndlineFormat::Windows); - cmd->undo(); - - delete cmd; - delete bar; - delete edit; -} diff --git a/tests/src/editor/ut_flashtween.cpp b/tests/src/editor/ut_flashtween.cpp deleted file mode 100644 index e91d5d70b..000000000 --- a/tests/src/editor/ut_flashtween.cpp +++ /dev/null @@ -1,171 +0,0 @@ -// SPDX-FileCopyrightText: 2022-2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "ut_flashtween.h" - -UT_FlashTween::UT_FlashTween() -{ - -} - -//void startX(qreal t,qreal b,qreal c,qreal d, FunSlideInertial fSlideGesture); -TEST(UT_FlashTween_startX, UT_FlashTween_startX) -{ - FlashTween *a = new FlashTween(); - // 传入有效空操作回调,避免空 std::function 在定时器触发时抛出 bad_function_call - FunSlideInertial b = [](qreal) {}; - a->startX(1.1,1.1,1.1,1.1,b); - int iRet = a->m_timerX->interval(); - ASSERT_TRUE(a->m_timerX->interval() == 15); - - a->deleteLater(); -} - -//void startY(qreal t,qreal b,qreal c,qreal d, FunSlideInertial fSlideGesture); -TEST(UT_FlashTween_startY, UT_FlashTween_startY) -{ - FlashTween *a = new FlashTween(); - // 传入有效空操作回调,避免空 std::function 在定时器触发时抛出 bad_function_call - FunSlideInertial b = [](qreal) {}; - a->startY(1.1,1.1,1.1,1.1,b); - int iRet = a->m_timerY->interval(); - ASSERT_TRUE(a->m_timerY->interval() == 15); - - a->deleteLater(); -} - -//bool activeX(){return m_timerX->isActive();} -TEST(UT_FlashTween_activeX, UT_FlashTween_activeX) -{ - FlashTween *a = new FlashTween(); - FunSlideInertial b; - a->m_timerX->start(); - bool bRet = a->activeX(); - ASSERT_TRUE(bRet == true); - - // 停止 0ms 循环定时器:回调 m_fSlideGestureX 为空 std::function, - // 若残留到后续测试的事件循环中触发会抛出 bad_function_call - a->m_timerX->stop(); - - a->deleteLater(); -} - -//bool activeY(){return m_timerY->isActive();} -TEST(UT_FlashTween_activeY, UT_FlashTween_activeY) -{ - FlashTween *a = new FlashTween(); - FunSlideInertial b; - a->m_timerY->start(); - bool bRet = a->activeY(); - ASSERT_TRUE(bRet == true); - - // 同 activeX:停止 0ms 循环定时器,避免空回调在后续测试中触发 - a->m_timerY->stop(); - - a->deleteLater(); -} - -TEST(UT_FlashTween_stopX, UT_FlashTween_stopX) -{ - FlashTween *a = new FlashTween(); - a->stopX(); - bool bRet = a->activeX(); - ASSERT_TRUE(bRet == false); - - a->deleteLater(); -} - -TEST(UT_FlashTween_stopY, UT_FlashTween_stopY) -{ - FlashTween *a = new FlashTween(); - a->stopY(); - bool bRet = a->activeY(); - ASSERT_TRUE(bRet == false); - - a->deleteLater(); -} - -TEST(UT_FlashTween___runY, UT_FlashTween___runY) -{ - FlashTween *a = new FlashTween(); - a->m_timerX = new QTimer; - a->m_timerY = new QTimer; - //a->__runY(); - - EXPECT_NE(a->m_lastValueX,2.2); - a->deleteLater(); - a->m_timerX->deleteLater(); - a->m_timerY->deleteLater(); -} - -TEST(UT_FlashTween___runX, UT_FlashTween___runX) -{ - FlashTween *a = new FlashTween(); - a->m_timerX = new QTimer; - a->m_timerY = new QTimer; - //a->__runX(); - - EXPECT_NE(a->m_lastValueX,2.2); - a->deleteLater(); - a->m_timerX->deleteLater(); - a->m_timerY->deleteLater(); -} - -// --------------------------------------------------------------------------- -// Appended tests that actually exercise the previously uncovered functions -// --------------------------------------------------------------------------- - -// FlashTween::sinusoidalEaseOut(double,double,double,double) -- static private -TEST(UT_FlashTween_sinusoidalEaseOut, sinusoidalEaseOut) -{ - qreal result = FlashTween::sinusoidalEaseOut(0.0, 0.0, 100.0, 100.0); - EXPECT_NEAR(result, 0.0, 0.001); - - qreal mid = FlashTween::sinusoidalEaseOut(50.0, 0.0, 100.0, 100.0); - EXPECT_GT(mid, 0.0); - - qreal end = FlashTween::sinusoidalEaseOut(100.0, 0.0, 100.0, 100.0); - EXPECT_NEAR(end, 100.0, 0.001); -} - -// FlashTween::__runX() -- private slot, invoked directly via -fno-access-control -TEST(UT_FlashTween___runX_Invoke, __runX) -{ - FlashTween *a = new FlashTween(); - FunSlideInertial cb = [](qreal) {}; - // startX initializes m_fSlideGestureX / m_timerX / tween parameters - a->startX(0.0, 0.0, 100.0, 100.0, cb); - ASSERT_TRUE(a->activeX()); - - a->__runX(); // process one frame - // after one frame the current time advances and last value is updated - EXPECT_GE(a->m_lastValueX, 0.0); - - delete a; -} - -// FlashTween::__runY() -- private slot -TEST(UT_FlashTween___runY_Invoke, __runY) -{ - FlashTween *a = new FlashTween(); - FunSlideInertial cb = [](qreal) {}; - a->startY(0.0, 0.0, 100.0, 100.0, cb); - ASSERT_TRUE(a->activeY()); - - a->__runY(); // process one frame - EXPECT_GE(a->m_lastValueY, 0.0); - - delete a; -} - -// FlashTween::~FlashTween() -TEST(UT_FlashTween_Destructor, destructor) -{ - FlashTween *a = new FlashTween(); - ASSERT_TRUE(a->m_timerX != nullptr); - ASSERT_TRUE(a->m_timerY != nullptr); - - delete a; // destructor deletes both timers - a = nullptr; -} diff --git a/tests/src/editor/ut_flashtween.h b/tests/src/editor/ut_flashtween.h deleted file mode 100644 index 950225dfd..000000000 --- a/tests/src/editor/ut_flashtween.h +++ /dev/null @@ -1,25 +0,0 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef UT_FlashTween_H -#define UT_FlashTween_H -#include "gtest/gtest.h" -#include"../../src/editor/editwrapper.h" -#include"../../src/widgets/window.h" -#include"../../src/startmanager.h" -#include"../../src/editor/dtextedit.h" -#include"../../src/editor/FlashTween.h" -#include"../stub.h" -#include -#include -#include -#include - -class UT_FlashTween : public QObject, public::testing::Test -{ -public: - UT_FlashTween(); -}; - -#endif // UT_FlashTween_H diff --git a/tests/src/editor/ut_indenttextcommond.cpp b/tests/src/editor/ut_indenttextcommond.cpp deleted file mode 100644 index bba3caac7..000000000 --- a/tests/src/editor/ut_indenttextcommond.cpp +++ /dev/null @@ -1,95 +0,0 @@ -// SPDX-FileCopyrightText: 2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "gtest/gtest.h" -#include "../../src/editor/indenttextcommond.h" -#include "../../src/editor/dtextedit.h" -#include "../stub.h" - -// IndentTextCommand::~IndentTextCommand (both destructor variants) -TEST(UT_IndentTextCommand, destructor) -{ - TextEdit *edit = new TextEdit; - edit->setPlainText("aaa\nbbb\nccc"); - QTextCursor c = edit->textCursor(); - c.setPosition(0); - edit->setTextCursor(c); - - IndentTextCommand *cmd = new IndentTextCommand(edit, 0, 0, 0, 0); - delete cmd; - - delete edit; -} - -// IndentTextCommand::undo() -TEST(UT_IndentTextCommand, undo) -{ - TextEdit *edit = new TextEdit; - edit->setPlainText("aaa\nbbb\nccc"); - QTextCursor c = edit->textCursor(); - c.setPosition(0); - c.setPosition(3, QTextCursor::KeepAnchor); - edit->setTextCursor(c); - - IndentTextCommand *cmd = new IndentTextCommand(edit, 0, 3, 0, 0); - cmd->redo(); // add a tab to the first line - cmd->undo(); // remove the tab from the first line - EXPECT_EQ(edit->toPlainText(), QString("aaa\nbbb\nccc")); - - delete cmd; - delete edit; -} - -// UnindentTextCommand::UnindentTextCommand(...) + ~UnindentTextCommand (both variants) -TEST(UT_UnindentTextCommand, constructor_and_destructor) -{ - TextEdit *edit = new TextEdit; - edit->setPlainText("aaa"); - QTextCursor c = edit->textCursor(); - c.setPosition(0); - edit->setTextCursor(c); - - UnindentTextCommand *cmd = new UnindentTextCommand(edit, 0, 0, 0, 0, 4); - ASSERT_TRUE(cmd != nullptr); - delete cmd; - - delete edit; -} - -// UnindentTextCommand::redo() -TEST(UT_UnindentTextCommand, redo) -{ - TextEdit *edit = new TextEdit; - edit->setPlainText("\taaa\n bbb\nccc"); - QTextCursor c = edit->textCursor(); - c.setPosition(0); - edit->setTextCursor(c); - - UnindentTextCommand *cmd = new UnindentTextCommand(edit, 0, 0, 0, 2, 4); - cmd->redo(); - // first line tab removed, second line two spaces removed - EXPECT_EQ(edit->toPlainText(), QString("aaa\nbbb\nccc")); - - delete cmd; - delete edit; -} - -// UnindentTextCommand::undo() -TEST(UT_UnindentTextCommand, undo) -{ - TextEdit *edit = new TextEdit; - edit->setPlainText("\taaa\n bbb\nccc"); - QTextCursor c = edit->textCursor(); - c.setPosition(0); - edit->setTextCursor(c); - - UnindentTextCommand *cmd = new UnindentTextCommand(edit, 0, 0, 0, 2, 4); - cmd->redo(); - cmd->undo(); - // restored after a redo/undo round-trip - EXPECT_EQ(edit->toPlainText(), QString("\taaa\n bbb\nccc")); - - delete cmd; - delete edit; -} diff --git a/tests/src/editor/ut_insertblockbytextcommond.cpp b/tests/src/editor/ut_insertblockbytextcommond.cpp deleted file mode 100644 index 7d8a5e7b3..000000000 --- a/tests/src/editor/ut_insertblockbytextcommond.cpp +++ /dev/null @@ -1,111 +0,0 @@ -// SPDX-FileCopyrightText: 2022-2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "ut_insertblockbytextcommond.h" -#include "../src/editor/insertblockbytextcommond.h" -#include "../src/editor/dtextedit.h" -#include "../src/editor/editwrapper.h" -#include "../src/widgets/window.h" -#include "qtextcursor.h" -#include "src/stub.h" - - -namespace insertblockstub { -int intvalue = 1; -int retintstub() -{ - return intvalue; -} -} - -using namespace insertblockstub; - -test_insertblockbytextcommond::test_insertblockbytextcommond() -{ - -} - -TEST_F(test_insertblockbytextcommond, InsertBlockByTextCommand) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world.")); - - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - textCursor.movePosition(QTextCursor::Start, QTextCursor::KeepAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - InsertBlockByTextCommand *pInsertBlockByTextCommand = new InsertBlockByTextCommand(QString("Hei man"), - pWindow->currentWrapper()->textEditor(), - pWindow->currentWrapper()); - QString strRet(pInsertBlockByTextCommand->m_selected); - ASSERT_TRUE(!strRet.compare(QString("Holle world."))); - - pWindow->deleteLater(); -} - -TEST_F(test_insertblockbytextcommond, redo) -{ - QString text = "tt"; - for(int i=0;i<1024*1024;i++) - text += "tt"; - - QTextCursor cursor; - cursor.insertText(text); - cursor.movePosition(QTextCursor::Start,QTextCursor::KeepAnchor); - TextEdit* edit = new TextEdit; - edit->setTextCursor(cursor); - InsertBlockByTextCommand* com = new InsertBlockByTextCommand(text,edit,nullptr); - com->redo(); - - ASSERT_TRUE(!edit->textCursor().hasSelection()); - - delete com; - com=nullptr; - edit->deleteLater(); -} - - -TEST_F(test_insertblockbytextcommond, undo) -{ - QString text = "tt"; - for(int i=0;i<1024*1024;i++) - text += "tt"; - - QTextCursor cursor; - cursor.insertText(text); - cursor.movePosition(QTextCursor::Start,QTextCursor::KeepAnchor); - TextEdit* edit = new TextEdit; - edit->setTextCursor(cursor); - InsertBlockByTextCommand* com = new InsertBlockByTextCommand(text,edit,nullptr); - com->undo(); - - ASSERT_TRUE(!edit->textCursor().hasSelection()); - - delete com; - com=nullptr; - edit->deleteLater(); -} - - -TEST_F(test_insertblockbytextcommond, insertByBlock) -{ - QString text = "tt"; - for(int i=0;i<1024*1024;i++) - text += "tt"; - - QTextCursor cursor; - cursor.insertText(text); - cursor.movePosition(QTextCursor::Start,QTextCursor::KeepAnchor); - TextEdit* edit = new TextEdit; - edit->setTextCursor(cursor); - InsertBlockByTextCommand* com = new InsertBlockByTextCommand(text,edit,nullptr); - com->insertByBlock(); - - ASSERT_TRUE(!edit->textCursor().hasSelection()); - - delete com; - com=nullptr; - edit->deleteLater(); -} diff --git a/tests/src/editor/ut_insertblockbytextcommond.h b/tests/src/editor/ut_insertblockbytextcommond.h deleted file mode 100644 index 6fa623b18..000000000 --- a/tests/src/editor/ut_insertblockbytextcommond.h +++ /dev/null @@ -1,21 +0,0 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef TEST_INSERTBLOCKBYTEXTCOMMOND_H -#define TEST_INSERTBLOCKBYTEXTCOMMOND_H - - -#include "gtest/gtest.h" -#include -#include - -class test_insertblockbytextcommond: public QObject, public::testing::Test -{ - Q_OBJECT -public: - test_insertblockbytextcommond(); -}; - - -#endif // TEST_INSERTBLOCKBYTEXTCOMMOND_H diff --git a/tests/src/editor/ut_inserttextundocommand.cpp b/tests/src/editor/ut_inserttextundocommand.cpp deleted file mode 100644 index e1efc50ed..000000000 --- a/tests/src/editor/ut_inserttextundocommand.cpp +++ /dev/null @@ -1,200 +0,0 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "ut_inserttextundocommand.h" -#include "../../src/editor/inserttextundocommand.h" -#include "../../src/editor/dtextedit.h" -#include "../../src/widgets/window.h" - -test_InsertTextUndoCommand::test_InsertTextUndoCommand() -{ -} - -void test_InsertTextUndoCommand::SetUp() -{ - QTextCursor textcursor; - QString test; - ituc = new InsertTextUndoCommand(textcursor, test, nullptr); -} - -void test_InsertTextUndoCommand::TearDown() -{ - delete ituc; -} - -TEST_F(test_InsertTextUndoCommand, undo) -{ - QList extraSelections; - QTextEdit::ExtraSelection selection; - QColor lineColor = QColor(Qt::yellow).lighter(160); - selection.format.setBackground(lineColor); - selection.format.setProperty(QTextFormat::FullWidthSelection, true); - selection.cursor.clearSelection(); - extraSelections.append(selection); - - QString text = "aaa"; - InsertTextUndoCommand *command = new InsertTextUndoCommand(extraSelections, text, nullptr); - command->undo(); - - int iRet = command->m_textCursor.position(); - ASSERT_TRUE(iRet != 0); - -} - -TEST_F(test_InsertTextUndoCommand, undo2) -{ - QList extraSelections; - QString text = "aaa"; - InsertTextUndoCommand *command = new InsertTextUndoCommand(extraSelections, text, nullptr); - command->undo(); - - int iRet = command->m_textCursor.position(); - ASSERT_TRUE(iRet != 0); -} - -TEST_F(test_InsertTextUndoCommand, redo) -{ - QList extraSelections; - QString text = "aaa"; - InsertTextUndoCommand *command = new InsertTextUndoCommand(extraSelections, text, nullptr); - ituc->redo(); - - int iRet = command->m_textCursor.position(); - ASSERT_TRUE(iRet != 0); -} - -TEST_F(test_InsertTextUndoCommand, redo2) -{ - QList extraSelections; - QTextEdit::ExtraSelection selection; - QColor lineColor = QColor(Qt::yellow).lighter(160); - selection.format.setBackground(lineColor); - selection.format.setProperty(QTextFormat::FullWidthSelection, true); - selection.cursor.clearSelection(); - extraSelections.append(selection); - QString text = "aaa"; - InsertTextUndoCommand *command = new InsertTextUndoCommand(extraSelections, text, nullptr); - command->redo(); - - int iRet = command->m_textCursor.position(); - ASSERT_TRUE(iRet != 0); -} - -TEST_F(test_InsertTextUndoCommand, redo_withTextCursor_restoreCursor) -{ - // 重做恢复光标位置 - Window *window = new Window; - EditWrapper *wrapper = window->createEditor(); - TextEdit *edit = wrapper->textEditor(); - edit->setPlainText("123789"); - - QTextCursor cursor = edit->textCursor(); - cursor.setPosition(3); - InsertTextUndoCommand *command = new InsertTextUndoCommand(cursor, QString("456"), edit); - command->redo(); - - EXPECT_EQ(QString("123456789"), edit->toPlainText()); - EXPECT_EQ(6, edit->textCursor().position()); - - edit->setPlainText("123789"); - QList extraSelections; - QTextEdit::ExtraSelection selection; - QColor lineColor = QColor(Qt::yellow).lighter(160); - selection.format.setBackground(lineColor); - selection.format.setProperty(QTextFormat::FullWidthSelection, true); - selection.cursor = edit->textCursor(); - selection.cursor.setPosition(3); - extraSelections.append(selection); - InsertTextUndoCommand *command2 = new InsertTextUndoCommand(extraSelections, QString("456"), edit); - command2->redo(); - - EXPECT_EQ(QString("123456789"), edit->toPlainText()); - EXPECT_EQ(6, edit->textCursor().position()); - - window->deleteLater(); - wrapper->deleteLater(); - edit->deleteLater(); - delete command; - delete command2; -} - -TEST_F(test_InsertTextUndoCommand, undo_withTextCursor_restoreCursor) -{ - // 撤销后恢复光标位置 - Window *window = new Window; - EditWrapper *wrapper = window->createEditor(); - TextEdit *edit = wrapper->textEditor(); - edit->setPlainText("123456789"); - - QTextCursor cursor = edit->textCursor(); - cursor.setPosition(6); - InsertTextUndoCommand *command = new InsertTextUndoCommand(cursor, QString("456"), edit); - command->m_endPostion = 6; - command->m_beginPostion = 3; - command->undo(); - - EXPECT_EQ(QString("123789"), edit->toPlainText()); - EXPECT_EQ(3, edit->textCursor().position()); - - edit->setPlainText("123456789"); - QList extraSelections; - QTextEdit::ExtraSelection selection; - QColor lineColor = QColor(Qt::yellow).lighter(160); - selection.format.setBackground(lineColor); - selection.format.setProperty(QTextFormat::FullWidthSelection, true); - selection.cursor = edit->textCursor(); - selection.cursor.setPosition(3); - extraSelections.append(selection); - InsertTextUndoCommand *command2 = new InsertTextUndoCommand(extraSelections, QString("456"), edit); - command2->undo(); - - EXPECT_EQ(QString("123789"), edit->toPlainText()); - EXPECT_EQ(3, edit->textCursor().position()); - - window->deleteLater(); - wrapper->deleteLater(); - edit->deleteLater(); - delete command; - delete command2; -} - -TEST(test_MidButtonInsertTextUndoCommand, redo_withTextCursor_restoreCursor) -{ - // 重做恢复光标位置 - QPlainTextEdit *edit = new QPlainTextEdit; - edit->setPlainText("123789"); - - QTextCursor cursor = edit->textCursor(); - cursor.setPosition(3); - MidButtonInsertTextUndoCommand *command = new MidButtonInsertTextUndoCommand(cursor, QString("456"), edit); - EXPECT_EQ(command->m_beginPostion, 3); - EXPECT_EQ(command->m_endPostion, 6); - command->redo(); - - EXPECT_EQ(QString("123456789"), edit->toPlainText()); - EXPECT_EQ(6, edit->textCursor().position()); - - delete command; - delete edit; -} - -TEST(test_MidButtonInsertTextUndoCommand, undo_withTextCursor_restoreCursor) -{ - // 撤销后恢复光标位置 - QPlainTextEdit *edit = new QPlainTextEdit; - edit->setPlainText("123456789"); - - QTextCursor cursor = edit->textCursor(); - cursor.setPosition(6); - MidButtonInsertTextUndoCommand *command = new MidButtonInsertTextUndoCommand(cursor, QString("456"), edit); - command->m_endPostion = 6; - command->m_beginPostion = 3; - command->undo(); - - EXPECT_EQ(QString("123789"), edit->toPlainText()); - EXPECT_EQ(3, edit->textCursor().position()); - - delete command; - delete edit; -} diff --git a/tests/src/editor/ut_inserttextundocommand.h b/tests/src/editor/ut_inserttextundocommand.h deleted file mode 100644 index 39a4c6895..000000000 --- a/tests/src/editor/ut_inserttextundocommand.h +++ /dev/null @@ -1,21 +0,0 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef TEST_INSERTTEXTUNDOCOMMAND_H -#define TEST_INSERTTEXTUNDOCOMMAND_H - -#include "gtest/gtest.h" -#include - -class InsertTextUndoCommand; -class test_InsertTextUndoCommand :public testing::Test -{ -public: - test_InsertTextUndoCommand(); - virtual void SetUp() override; - virtual void TearDown() override; - InsertTextUndoCommand *ituc; -}; - -#endif // TEST_INSERTTEXTUNDOCOMMAND_H diff --git a/tests/src/editor/ut_leftareaoftextedit.cpp b/tests/src/editor/ut_leftareaoftextedit.cpp deleted file mode 100644 index 382935d20..000000000 --- a/tests/src/editor/ut_leftareaoftextedit.cpp +++ /dev/null @@ -1,94 +0,0 @@ -// SPDX-FileCopyrightText: 2019-2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "ut_leftareaoftextedit.h" -#include "../../src/editor/leftareaoftextedit.h" -#include "../../src/editor/dtextedit.h" - -test_leftareaoftextedit::test_leftareaoftextedit() -{ - -} - -//LeftAreaTextEdit(TextEdit *textEdit); -TEST_F(test_leftareaoftextedit, LeftAreaTextEdit) -{ - TextEdit *textEdit = new TextEdit; - LeftAreaTextEdit *leftArea = new LeftAreaTextEdit(textEdit); - - ASSERT_TRUE(leftArea->m_pFlodArea != nullptr); - leftArea->deleteLater(); - textEdit->deleteLater(); -} - -//void lineNumberAreaPaintEvent(QPaintEvent *event); -TEST_F(test_leftareaoftextedit, lineNumberAreaPaintEvent) -{ - TextEdit *textEdit = new TextEdit; - LeftAreaTextEdit *leftArea = new LeftAreaTextEdit(textEdit); - QPaintEvent *event = new QPaintEvent(QRegion()); - leftArea->lineNumberAreaPaintEvent(event); - - ASSERT_TRUE(leftArea->m_pFlodArea != nullptr); - delete event; - event = nullptr; - leftArea->deleteLater(); - textEdit->deleteLater(); -} - -//int lineNumberAreaWidth(); -TEST_F(test_leftareaoftextedit, lineNumberAreaWidth) -{ - TextEdit *textEdit = new TextEdit; - LeftAreaTextEdit *leftArea = new LeftAreaTextEdit(textEdit); - leftArea->lineNumberAreaWidth(); - - ASSERT_TRUE(leftArea->m_pFlodArea != nullptr); - leftArea->deleteLater(); - textEdit->deleteLater(); -} - -//void bookMarkAreaPaintEvent(QPaintEvent *event); -TEST_F(test_leftareaoftextedit, bookMarkAreaPaintEvent) -{ - TextEdit *textEdit = new TextEdit; - LeftAreaTextEdit *leftArea = new LeftAreaTextEdit(textEdit); - QPaintEvent *event = new QPaintEvent(QRegion()); - leftArea->bookMarkAreaPaintEvent(event); - - ASSERT_TRUE(leftArea->m_pFlodArea != nullptr); - delete event; - event = nullptr; - leftArea->deleteLater(); - textEdit->deleteLater(); -} - -//void codeFlodAreaPaintEvent(QPaintEvent *event); -TEST_F(test_leftareaoftextedit, codeFlodAreaPaintEvent) -{ - TextEdit *textEdit = new TextEdit; - LeftAreaTextEdit *leftArea = new LeftAreaTextEdit(textEdit); - QPaintEvent *event = new QPaintEvent(QRegion()); - leftArea->codeFlodAreaPaintEvent(event); - - ASSERT_TRUE(leftArea->m_pFlodArea != nullptr); - delete event; - event = nullptr; - leftArea->deleteLater(); - textEdit->deleteLater(); -} - -//TextEdit* getEdit(); -TEST_F(test_leftareaoftextedit, getEdit) -{ - TextEdit *textEdit = new TextEdit; - LeftAreaTextEdit *leftArea = new LeftAreaTextEdit(textEdit); - - TextEdit *got = leftArea->getEdit(); - ASSERT_TRUE(got != nullptr); - EXPECT_EQ(got, textEdit); - - leftArea->deleteLater(); - textEdit->deleteLater(); -} diff --git a/tests/src/editor/ut_leftareaoftextedit.h b/tests/src/editor/ut_leftareaoftextedit.h deleted file mode 100644 index 52c5caf45..000000000 --- a/tests/src/editor/ut_leftareaoftextedit.h +++ /dev/null @@ -1,16 +0,0 @@ -// SPDX-FileCopyrightText: 2019 - 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef TEST_LEFTAREAOFTEXTEDIT_H -#define TEST_LEFTAREAOFTEXTEDIT_H -#include "gtest/gtest.h" -#include - -class test_leftareaoftextedit : public QObject, public::testing::Test -{ -public: - test_leftareaoftextedit(); -}; - -#endif // TEST_LEFTAREAOFTEXTEDIT_H diff --git a/tests/src/editor/ut_linenumberarea.cpp b/tests/src/editor/ut_linenumberarea.cpp deleted file mode 100644 index ccf2844b7..000000000 --- a/tests/src/editor/ut_linenumberarea.cpp +++ /dev/null @@ -1,49 +0,0 @@ -// SPDX-FileCopyrightText: 2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "gtest/gtest.h" -#include "../../src/editor/linenumberarea.h" -#include "../../src/editor/leftareaoftextedit.h" -#include "../../src/editor/dtextedit.h" -#include "../stub.h" -#include - -// LineNumberArea::getPressPoint() -TEST(UT_LineNumberArea, getPressPoint) -{ - TextEdit *edit = new TextEdit; - edit->setPlainText("aaa\nbbb\nccc"); - LeftAreaTextEdit *leftArea = new LeftAreaTextEdit(edit); - LineNumberArea *area = new LineNumberArea(leftArea); - - // default press point - QPoint pt = area->getPressPoint(); - EXPECT_TRUE(pt.isNull()); - - delete area; - delete leftArea; - delete edit; -} - -// LineNumberArea::mousePressEvent(QMouseEvent*) -TEST(UT_LineNumberArea, mousePressEvent) -{ - TextEdit *edit = new TextEdit; - edit->setPlainText("aaa\nbbb\nccc"); - LeftAreaTextEdit *leftArea = new LeftAreaTextEdit(edit); - LineNumberArea *area = new LineNumberArea(leftArea); - - // use an out-of-range x so onPressedLineNumber returns early (safe path) - QMouseEvent *event = new QMouseEvent(QEvent::MouseButtonPress, - QPoint(-1, 0), - Qt::LeftButton, - Qt::LeftButton, - Qt::NoModifier); - area->mousePressEvent(event); - - delete event; - delete area; - delete leftArea; - delete edit; -} diff --git a/tests/src/editor/ut_replaceallcommond.cpp b/tests/src/editor/ut_replaceallcommond.cpp deleted file mode 100644 index e38b533d2..000000000 --- a/tests/src/editor/ut_replaceallcommond.cpp +++ /dev/null @@ -1,48 +0,0 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "ut_replaceallcommond.h" -#include "../../src/editor/replaceallcommond.h" -#include "QTextCursor" -test_replaceallcommond::test_replaceallcommond() -{ - -} - -TEST_F(test_replaceallcommond, ReplaceAllCommand) -{ - QString text = "test"; - QTextCursor cursor; - ReplaceAllCommand* com = new ReplaceAllCommand(text,text,cursor); - ASSERT_TRUE(!text.compare(com->m_newText)); - - delete com; - com=nullptr; -} - -TEST_F(test_replaceallcommond, redo) -{ - QString text = "test"; - QTextCursor cursor; - ReplaceAllCommand* com = new ReplaceAllCommand(text,text,cursor); - com->redo(); - ASSERT_TRUE(com->m_cursor.position() != 0); - - delete com; - com=nullptr; -} - -TEST_F(test_replaceallcommond, undo) -{ - QString text = "test"; - QTextCursor cursor; - ReplaceAllCommand* com = new ReplaceAllCommand(text,text,cursor); - com->undo(); - ASSERT_TRUE(com->m_cursor.position() != 0); - - delete com; - com=nullptr; - - -} diff --git a/tests/src/editor/ut_replaceallcommond.h b/tests/src/editor/ut_replaceallcommond.h deleted file mode 100644 index f1a6b9a34..000000000 --- a/tests/src/editor/ut_replaceallcommond.h +++ /dev/null @@ -1,21 +0,0 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef TEST_REPLACEALLCOMMOND_H -#define TEST_REPLACEALLCOMMOND_H - - -#include "gtest/gtest.h" -#include - - -class test_replaceallcommond: public QObject, public::testing::Test -{ - Q_OBJECT -public: - test_replaceallcommond(); -}; - - -#endif // TEST_REPLACEALLCOMMOND_H diff --git a/tests/src/editor/ut_showflodcodewidget.cpp b/tests/src/editor/ut_showflodcodewidget.cpp deleted file mode 100644 index 2da9e5230..000000000 --- a/tests/src/editor/ut_showflodcodewidget.cpp +++ /dev/null @@ -1,67 +0,0 @@ -// SPDX-FileCopyrightText: 2019 - 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "ut_showflodcodewidget.h" -#include "../../src/editor/showflodcodewidget.h" - -test_showflodcodewidget::test_showflodcodewidget() -{ - -} - -TEST_F(test_showflodcodewidget, ShowFlodCodeWidget) -{ - ShowFlodCodeWidget flodCodeWidget(nullptr); - ASSERT_TRUE(flodCodeWidget.m_pContentEdit != nullptr); -} - -//void appendText(QString strText, int maxWidth); -TEST_F(test_showflodcodewidget, appendText) -{ - ShowFlodCodeWidget *flodCodeWidget = new ShowFlodCodeWidget(); - flodCodeWidget->appendText("aa",1); - ASSERT_TRUE(flodCodeWidget->m_pContentEdit->textCursor().position() == 0); - - flodCodeWidget->deleteLater(); -} - -//void clear(); -TEST_F(test_showflodcodewidget, clear) -{ - ShowFlodCodeWidget *flodCodeWidget = new ShowFlodCodeWidget(); - flodCodeWidget->clear(); - - ASSERT_TRUE(flodCodeWidget->m_nTextWidth == 0); - flodCodeWidget->deleteLater(); -} - -//void initHighLight(QString filepath, bool bIsLight); -TEST_F(test_showflodcodewidget, initHighLight) -{ - ShowFlodCodeWidget *flodCodeWidget = new ShowFlodCodeWidget(); - flodCodeWidget->initHighLight("aa",true); - - ASSERT_TRUE(flodCodeWidget->m_pContentEdit != nullptr); - flodCodeWidget->deleteLater(); -} - -//void setStyle(bool bIsLineWrap); -TEST_F(test_showflodcodewidget, setStyle) -{ - ShowFlodCodeWidget *flodCodeWidget = new ShowFlodCodeWidget(); - flodCodeWidget->setStyle(true); - - ASSERT_TRUE(flodCodeWidget->m_pContentEdit->lineWrapMode() == QPlainTextEdit::WidgetWidth); - flodCodeWidget->deleteLater(); -} - -//void hideFirstBlock(); -TEST_F(test_showflodcodewidget, hideFirstBlock) -{ - ShowFlodCodeWidget *flodCodeWidget = new ShowFlodCodeWidget(); - flodCodeWidget->hideFirstBlock(); - - ASSERT_TRUE(flodCodeWidget->m_pContentEdit->height() >= 10); - flodCodeWidget->deleteLater(); -} diff --git a/tests/src/editor/ut_showflodcodewidget.h b/tests/src/editor/ut_showflodcodewidget.h deleted file mode 100644 index 24a5bbacc..000000000 --- a/tests/src/editor/ut_showflodcodewidget.h +++ /dev/null @@ -1,16 +0,0 @@ -// SPDX-FileCopyrightText: 2019 - 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef TEST_SHOWFLODCODEWIDGET_H -#define TEST_SHOWFLODCODEWIDGET_H -#include "gtest/gtest.h" -#include - -class test_showflodcodewidget : public QObject, public::testing::Test -{ -public: - test_showflodcodewidget(); -}; - -#endif // TEST_SHOWFLODCODEWIDGET_H diff --git a/tests/src/editor/ut_textedit.cpp b/tests/src/editor/ut_textedit.cpp deleted file mode 100644 index 09272b2e2..000000000 --- a/tests/src/editor/ut_textedit.cpp +++ /dev/null @@ -1,11185 +0,0 @@ -// SPDX-FileCopyrightText: 2022-2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "ut_textedit.h" -#include "stub.h" -#include "../../src/widgets/window.h" -#include -#include "QDBusReply" -#include "QDBusConnection" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -namespace texteditstub { - -bool rettruestub() -{ - return true; -} - -bool retfalsestub() -{ - return false; -} - -int intvalue = 1; -int retintstub() -{ - return intvalue; -} - -int intvalue2=1; -int retintstub2() -{ - return intvalue2; -} - -QString string1="1"; -QString retstring1() -{ - return string1; -} - -QString string2="2"; -QString retstring2() -{ - return string2; -} - -QDBusConnection sessionBusstub() -{ - return QDBusConnection("123"); -} -} - -using namespace texteditstub; - -test_textedit::test_textedit() -{ - QString text = QString("#include \"window.h\"\n" - "#include \"urlinfo.h\"\n" - "int main(int argc, char *argv[])\n" - "{\n" - "using namespace Dtk::Core;\n" - "PerformanceMonitor::initializeAppStart();\n" - "return 0;\n" - "}"); - QFile f("1.cpp"); - if (f.open(QFile::WriteOnly)) { - f.write(text.toUtf8()); - f.close(); - } -} - -void test_textedit::forstub(QPoint q) -{ -} - -TEST_F(test_textedit, setWrapper) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - ASSERT_TRUE(pWindow->currentWrapper()->textEditor()->m_wrapper != nullptr); - - pWindow->deleteLater(); -} - -//getWrapper -TEST_F(test_textedit, getWrapper) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - EditWrapper *pEditWrapper = pWindow->currentWrapper()->textEditor()->getWrapper(); - ASSERT_TRUE(pEditWrapper != nullptr); - - pWindow->deleteLater(); -} - -void showCenterWindow_stub() -{ - return; -} - -//inline QString getFilePath() { return m_sFilePath;}; -TEST_F(test_textedit, getFilePath) -{ - Stub stub_showCenterWindow; - stub_showCenterWindow.set(ADDR(Window, showCenterWindow), showCenterWindow_stub); - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world.\nHolle world.")); - QString strRet(pWindow->currentWrapper()->textEditor()->getFilePath()); - ASSERT_TRUE(strRet != nullptr); - pWindow->deleteLater(); -} - -//inline void setFilePath(QString file) { m_sFilePath = file;} -TEST_F(test_textedit, setFilePath) -{ - QScrollBar *p = new QScrollBar(); - TextEdit *startManager = new TextEdit(); - startManager->setVerticalScrollBar(p); - startManager->setFilePath("a"); - - ASSERT_TRUE(startManager->m_pLeftAreaWidget != nullptr); - startManager->deleteLater(); - p->deleteLater(); -} - -//getLeftAreaWidget -TEST_F(test_textedit, getLeftAreaWidget) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world.\nHolle world.")); - LeftAreaTextEdit *pLeftAreaTextEdit = pWindow->currentWrapper()->textEditor()->getLeftAreaWidget(); - ASSERT_TRUE(pLeftAreaTextEdit != nullptr); - pWindow->deleteLater(); -} - -//isUndoRedoOpt -TEST_F(test_textedit, isUndoRedoOpt) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world.\nHolle world.")); - bool bRet = pWindow->currentWrapper()->textEditor()->isUndoRedoOpt(); - ASSERT_TRUE(bRet == true); - pWindow->deleteLater(); -} - -//getModified -TEST_F(test_textedit, getModified) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world.\nHolle world.")); - bool bRet = pWindow->currentWrapper()->textEditor()->getModified(); - ASSERT_TRUE(bRet == true); - pWindow->deleteLater(); -} - -//TextEdit(QWidget *parent = nullptr); -TEST_F(test_textedit, TextEdit) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - ASSERT_TRUE(pWindow->currentWrapper()->textEditor()->verticalScrollBarPolicy() == Qt::ScrollBarAsNeeded); - ASSERT_TRUE(pWindow->currentWrapper()->textEditor()->horizontalScrollBarPolicy() == Qt::ScrollBarAsNeeded); - - pWindow->deleteLater(); -} - -//insertTextEx -TEST_F(test_textedit, insertTextEx) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world.")); - QString strRet(pWindow->currentWrapper()->textEditor()->toPlainText()); - ASSERT_TRUE(!strRet.isEmpty()); - - pWindow->deleteLater(); -} - -//deleteTextEx -TEST_F(test_textedit, deleteTextEx) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world.")); - pWindow->currentWrapper()->textEditor()->deleteTextEx(pWindow->currentWrapper()->textEditor()->textCursor()); - bool bRet = pWindow->currentWrapper()->textEditor()->m_pUndoStack->canUndo(); - ASSERT_TRUE(bRet == true); - - pWindow->deleteLater(); -} - -//insertSelectTextEx -TEST_F(test_textedit, insertSelectTextEx) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world.")); - pWindow->currentWrapper()->textEditor()->insertSelectTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), QString("Holle world.")); - bool bRet = pWindow->currentWrapper()->textEditor()->m_pUndoStack->canUndo(); - ASSERT_TRUE(bRet == true); - - pWindow->deleteLater(); -} - -//insertColumnEditTextEx -TEST_F(test_textedit, insertColumnEditTextEx) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world.\nHolle world.\nHolle world.")); - pWindow->currentWrapper()->textEditor()->m_isSelectAll = true; - pWindow->currentWrapper()->textEditor()->insertColumnEditTextEx(QString("Holle world.")); - bool bRet = pWindow->currentWrapper()->textEditor()->m_pUndoStack->canUndo(); - ASSERT_TRUE(bRet == true); - - pWindow->deleteLater(); -} - -//deleteSelectTextEx -TEST_F(test_textedit, deleteSelectTextEx) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world.\nHolle world.\nHolle world.")); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - textCursor.movePosition(QTextCursor::StartOfBlock, QTextCursor::KeepAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - QString strBefore(pWindow->currentWrapper()->textEditor()->toPlainText()); - pWindow->currentWrapper()->textEditor()->deleteSelectTextEx(textCursor); - QString strAfter(pWindow->currentWrapper()->textEditor()->toPlainText()); - ASSERT_TRUE(strBefore.compare(strAfter)); - - pWindow->deleteLater(); -} - -//deleteSelectTextEx(QTextCursor,QString text,bool currLine) -TEST_F(test_textedit, deleteSelectTextEx_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world.\nHolle world.\nHolle world.")); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - textCursor.movePosition(QTextCursor::StartOfBlock, QTextCursor::KeepAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - QString strBefore(pWindow->currentWrapper()->textEditor()->toPlainText()); - pWindow->currentWrapper()->textEditor()->deleteSelectTextEx(textCursor, QString("Holle world."), true); - QString strAfter(pWindow->currentWrapper()->textEditor()->toPlainText()); - ASSERT_TRUE(strBefore.compare(strAfter)); - - pWindow->deleteLater(); -} - -//slotSelectionChanged 001 -TEST_F(test_textedit, slotSelectionChanged_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world.")); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - textCursor.movePosition(QTextCursor::Start, QTextCursor::KeepAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - pWindow->currentWrapper()->textEditor()->slotSelectionChanged(); - int iRet = QApplication::cursorFlashTime(); - ASSERT_TRUE(iRet == 0); - - pWindow->deleteLater(); -} - -//slotSelectionChanged 002 -TEST_F(test_textedit, slotSelectionChanged_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world.")); - pWindow->currentWrapper()->textEditor()->slotSelectionChanged(); - int iRet = QApplication::cursorFlashTime(); - ASSERT_TRUE(iRet != 0); - - pWindow->deleteLater(); -} - -//slotCanRedoChanged -TEST_F(test_textedit, slotCanRedoChanged) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world.")); - pWindow->currentWrapper()->textEditor()->slotCanRedoChanged(true); - ASSERT_TRUE(pWindow->currentWrapper()->textEditor()->m_pUndoStack != nullptr); - - pWindow->deleteLater(); -} - -//slotCanUndoChanged -TEST_F(test_textedit, slotCanUndoChanged) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world.")); - pWindow->currentWrapper()->textEditor()->slotCanUndoChanged(true); - ASSERT_TRUE(pWindow->currentWrapper()->textEditor()->m_pUndoStack != nullptr); - - pWindow->deleteLater(); -} - -//slotValueChanged -TEST_F(test_textedit, slotValueChanged) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMassege("Holle world.Holle world.Holle world.Holle world.Holle world.Holle world.Holle world.Holle world.Holle world."); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), strMassege); - pWindow->currentWrapper()->textEditor()->setLineWrapMode(QPlainTextEdit::NoWrap); - // 主动把水平滚动条拉到最右,确保 iRetBefore 为非零确定值。原实现依赖插入文本后 - // 视口自动滚动,但无显示(offscreen)环境下是否自动滚动取决于几何布局,导致该用例 - // 时过时不过(iRetBefore 可能为 0,slotValueChanged->selectTextInView 又置 0,两者相等)。 - QScrollBar *pHBar = pWindow->currentWrapper()->textEditor()->horizontalScrollBar(); - pHBar->setValue(pHBar->maximum()); - int iRetBefore = pHBar->value(); - pWindow->currentWrapper()->textEditor()->m_isSelectAll = true; - pWindow->currentWrapper()->textEditor()->slotValueChanged(true); - int iRetAfter = pHBar->value(); - ASSERT_TRUE(iRetBefore != iRetAfter); - - pWindow->deleteLater(); -} - -//getCurrentLine -TEST_F(test_textedit, getCurrentLine) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world.\n Create operating system innovation ecosystem!")); - int iRet = pWindow->currentWrapper()->textEditor()->getCurrentLine(); - ASSERT_TRUE(iRet == 2); - - pWindow->deleteLater(); -} - -//getCurrentColumn -TEST_F(test_textedit, getCurrentColumn) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world.")); - int iRet = pWindow->currentWrapper()->textEditor()->getCurrentColumn(); - ASSERT_TRUE(iRet == QString("Holle world.").length()); - - pWindow->deleteLater(); -} - -//getPosition -TEST_F(test_textedit, getPosition) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world.")); - int iRet = pWindow->currentWrapper()->textEditor()->getPosition(); - ASSERT_TRUE(iRet == QString("Holle world.").length()); - - pWindow->deleteLater(); -} - -//getScrollOffset -TEST_F(test_textedit, getScrollOffset) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("H\nl\nl\ne\n\nw\no\nr\nl\nd\n.H\nl\nl\ne\n\nw" - "\no\nr\nl\nd\n.H\nl\nl\ne\n\nw\no\nr\nl\nd\n.H" - "\nl\nl\ne\n\nw\no\nr\nl\nd\n.H\nl\nl\ne\n\nw\no" - "\nr\nl\nd\n.")); - int iRet = pWindow->currentWrapper()->textEditor()->getScrollOffset(); - ASSERT_TRUE(iRet > 0); - - pWindow->deleteLater(); -} - -//DMenu *getHighlightMenu(); -TEST_F(test_textedit, getHighlightMenu) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world.")); - - DMenu *pDMenu = pWindow->currentWrapper()->textEditor()->getHighlightMenu(); - ASSERT_TRUE(pDMenu == nullptr); - pWindow->deleteLater(); -} - -//forwardChar 001 -TEST_F(test_textedit, forwardChar_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world.")); - pWindow->currentWrapper()->textEditor()->m_cursorMark = true; - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - textCursor.movePosition(QTextCursor::Start, QTextCursor::MoveAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - pWindow->currentWrapper()->textEditor()->forwardChar(); - int iRet = pWindow->currentWrapper()->textEditor()->textCursor().position(); - QString strRet(pWindow->currentWrapper()->textEditor()->textCursor().selectedText()); - ASSERT_TRUE((iRet == 1) && (!strRet.compare(QString("H")))); - - pWindow->deleteLater(); -} - -//forwardChar 002 -TEST_F(test_textedit, forwardChar_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world.")); - pWindow->currentWrapper()->textEditor()->m_cursorMark = false; - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - textCursor.movePosition(QTextCursor::Start, QTextCursor::MoveAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - pWindow->currentWrapper()->textEditor()->forwardChar(); - int iRet = pWindow->currentWrapper()->textEditor()->textCursor().position(); - QString strRet(pWindow->currentWrapper()->textEditor()->textCursor().selectedText()); - ASSERT_TRUE((iRet == 1) && strRet.isEmpty()); - - pWindow->deleteLater(); -} - -//backwardChar 001 -TEST_F(test_textedit, backwardChar_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world")); - pWindow->currentWrapper()->textEditor()->m_cursorMark = true; - pWindow->currentWrapper()->textEditor()->backwardChar(); - int iRet = pWindow->currentWrapper()->textEditor()->textCursor().position(); - QString strRet(pWindow->currentWrapper()->textEditor()->textCursor().selectedText()); - ASSERT_TRUE((iRet == 10) && (!strRet.compare(QString("d")))); - - pWindow->deleteLater(); -} - -//backwardChar 002 -TEST_F(test_textedit, backwardChar_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world")); - pWindow->currentWrapper()->textEditor()->m_cursorMark = false; - pWindow->currentWrapper()->textEditor()->backwardChar(); - int iRet = pWindow->currentWrapper()->textEditor()->textCursor().position(); - QString strRet(pWindow->currentWrapper()->textEditor()->textCursor().selectedText()); - ASSERT_TRUE((iRet == 10) && strRet.isEmpty()); - - pWindow->deleteLater(); -} - -//forwardWord 001 -TEST_F(test_textedit, forwardWord_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world")); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - textCursor.movePosition(QTextCursor::Start, QTextCursor::MoveAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - pWindow->currentWrapper()->textEditor()->m_cursorMark = true; - pWindow->currentWrapper()->textEditor()->forwardWord(); - int iRet = pWindow->currentWrapper()->textEditor()->textCursor().position(); - QString strRet(pWindow->currentWrapper()->textEditor()->textCursor().selectedText()); - ASSERT_TRUE((iRet == 6) && (!strRet.compare(QString("Holle ")))); - - pWindow->deleteLater(); -} - -//forwardWord 002 -TEST_F(test_textedit, forwardWord_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world")); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - textCursor.movePosition(QTextCursor::Start, QTextCursor::MoveAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - pWindow->currentWrapper()->textEditor()->m_cursorMark = false; - pWindow->currentWrapper()->textEditor()->forwardWord(); - int iRet = pWindow->currentWrapper()->textEditor()->textCursor().position(); - QString strRet(pWindow->currentWrapper()->textEditor()->textCursor().selectedText()); - ASSERT_TRUE((iRet == 6) && strRet.isEmpty()); - - pWindow->deleteLater(); -} - -//backwardWord 001 -TEST_F(test_textedit, backwardWord_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world")); - pWindow->currentWrapper()->textEditor()->m_cursorMark = true; - pWindow->currentWrapper()->textEditor()->backwardWord(); - int iRet = pWindow->currentWrapper()->textEditor()->textCursor().position(); - QString strRet(pWindow->currentWrapper()->textEditor()->textCursor().selectedText()); - ASSERT_TRUE((iRet == 6) && (!strRet.compare(QString("world")))); - - pWindow->deleteLater(); -} - -//backwardWord 002 -TEST_F(test_textedit, backwardWord_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world")); - pWindow->currentWrapper()->textEditor()->m_cursorMark = false; - pWindow->currentWrapper()->textEditor()->backwardWord(); - int iRet = pWindow->currentWrapper()->textEditor()->textCursor().position(); - QString strRet(pWindow->currentWrapper()->textEditor()->textCursor().selectedText()); - ASSERT_TRUE((iRet == 6) && strRet.isEmpty()); - - pWindow->deleteLater(); -} - -bool forwardPair_001_find_stub() -{ - return true; -} - -//forwardPair 001 -TEST_F(test_textedit, forwardPair_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world")); - #if 0 //保留打桩方法,后续完善覆盖率 - typedef int (*fptr)(QDialog *); - fptr qDialogExec = (fptr)(&QDialog::exec); - Stub stub; - stub.set(qDialogExec, forwardPair_001_find_stub); - - Stub find_stub; - find_stub.set((bool(QPlainTextEdit::*)(const QRegExp &))ADDR(QPlainTextEdit, QPlainTextEdit::find), forwardPair_001_find_stub); - #endif - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - textCursor.movePosition(QTextCursor::PreviousWord, QTextCursor::KeepAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - pWindow->currentWrapper()->textEditor()->forwardPair(); - QString strRet(pWindow->currentWrapper()->textEditor()->textCursor().selectedText()); - ASSERT_TRUE(strRet.isEmpty()); - - pWindow->deleteLater(); -} - -//backwardPair 001 -TEST_F(test_textedit, backwardPair_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world")); - #if 0 //保留打桩方法,后续完善覆盖率 - typedef int (*fptr)(QDialog *); - fptr qDialogExec = (fptr)(&QDialog::exec); - Stub stub; - stub.set(qDialogExec, forwardPair_001_find_stub); - - Stub find_stub; - find_stub.set((bool(QPlainTextEdit::*)(const QRegExp &))ADDR(QPlainTextEdit, QPlainTextEdit::find), forwardPair_001_find_stub); - #endif - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - textCursor.movePosition(QTextCursor::PreviousWord, QTextCursor::KeepAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - pWindow->currentWrapper()->textEditor()->backwardPair(); - QString strRet(pWindow->currentWrapper()->textEditor()->textCursor().selectedText()); - ASSERT_TRUE(strRet.isEmpty()); - - pWindow->deleteLater(); -} - -//blockCount -TEST_F(test_textedit, blockCount) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world")); - int iRet = pWindow->currentWrapper()->textEditor()->blockCount(); - ASSERT_TRUE(iRet == 1); - - pWindow->deleteLater(); -} - -//int characterCount() const; -TEST_F(test_textedit, characterCount) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world")); - int iRet = pWindow->currentWrapper()->textEditor()->characterCount(); - ASSERT_TRUE(iRet == 12); - pWindow->deleteLater(); -} - -//firstVisibleBlock() -TEST_F(test_textedit, firstVisibleBlock) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world\nHolle world")); - QTextBlock textBlock = pWindow->currentWrapper()->textEditor()->firstVisibleBlock(); - QString strRet(textBlock.text()); - ASSERT_TRUE(!strRet.compare(QString("Holle world"))); - pWindow->deleteLater(); -} - -//moveToStart 001 -TEST_F(test_textedit, moveToStart_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world")); - pWindow->currentWrapper()->textEditor()->m_cursorMark = true; - pWindow->currentWrapper()->textEditor()->moveToStart(); - QString strRet(pWindow->currentWrapper()->textEditor()->textCursor().selectedText()); - ASSERT_TRUE(!strRet.compare(QString("Holle world"))); - - pWindow->deleteLater(); -} - -//moveToStart 002 -TEST_F(test_textedit, moveToStart_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world")); - pWindow->currentWrapper()->textEditor()->m_cursorMark = false; - pWindow->currentWrapper()->textEditor()->moveToStart(); - QString strRet(pWindow->currentWrapper()->textEditor()->textCursor().selectedText()); - ASSERT_TRUE(strRet.isEmpty()); - - pWindow->deleteLater(); -} - -//moveToEnd 001 -TEST_F(test_textedit, moveToEnd_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world")); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - textCursor.movePosition(QTextCursor::Start, QTextCursor::MoveAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - pWindow->currentWrapper()->textEditor()->m_cursorMark = true; - pWindow->currentWrapper()->textEditor()->moveToEnd(); - QString strRet(pWindow->currentWrapper()->textEditor()->textCursor().selectedText()); - ASSERT_TRUE(!strRet.compare(QString("Holle world"))); - - pWindow->deleteLater(); -} - -//moveToEnd 002 -TEST_F(test_textedit, moveToEnd_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world")); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - textCursor.movePosition(QTextCursor::Start, QTextCursor::MoveAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - pWindow->currentWrapper()->textEditor()->m_cursorMark = false; - pWindow->currentWrapper()->textEditor()->moveToEnd(); - QString strRet(pWindow->currentWrapper()->textEditor()->textCursor().selectedText()); - ASSERT_TRUE(strRet.isEmpty()); - - pWindow->deleteLater(); -} - -//moveToStartOfLine 001 -TEST_F(test_textedit, moveToStartOfLine_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world\nHolle world\nHolle world")); - pWindow->currentWrapper()->textEditor()->m_cursorMark = true; - pWindow->currentWrapper()->textEditor()->moveToStartOfLine(); - QString strRet(pWindow->currentWrapper()->textEditor()->textCursor().selectedText()); - ASSERT_TRUE(!strRet.isEmpty()); - - pWindow->deleteLater(); -} - -//moveToStartOfLine 002 -TEST_F(test_textedit, moveToStartOfLine_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world\nHolle world\nHolle world")); - pWindow->currentWrapper()->textEditor()->m_cursorMark = false; - pWindow->currentWrapper()->textEditor()->moveToStartOfLine(); - QString strRet(pWindow->currentWrapper()->textEditor()->textCursor().selectedText()); - ASSERT_TRUE(strRet.isEmpty()); - - pWindow->deleteLater(); -} - -//moveToEndOfLine 001 -TEST_F(test_textedit, moveToEndOfLine_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world")); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - textCursor.movePosition(QTextCursor::StartOfBlock, QTextCursor::MoveAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - pWindow->currentWrapper()->textEditor()->m_cursorMark = true; - pWindow->currentWrapper()->textEditor()->moveToEndOfLine(); - QString strRet(pWindow->currentWrapper()->textEditor()->textCursor().selectedText()); - ASSERT_TRUE(!strRet.compare(QString("Holle world"))); - - pWindow->deleteLater(); -} - -//moveToEndOfLine 002 -TEST_F(test_textedit, moveToEndOfLine_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world")); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - textCursor.movePosition(QTextCursor::StartOfBlock, QTextCursor::MoveAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - pWindow->currentWrapper()->textEditor()->m_cursorMark = false; - pWindow->currentWrapper()->textEditor()->moveToEndOfLine(); - QString strRet(pWindow->currentWrapper()->textEditor()->textCursor().selectedText()); - ASSERT_TRUE(strRet.isEmpty()); - - pWindow->deleteLater(); -} - -//moveToLineIndentation 001 -TEST_F(test_textedit, moveToLineIndentation_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world")); - pWindow->currentWrapper()->textEditor()->moveToLineIndentation(); - QString strRet(pWindow->currentWrapper()->textEditor()->textCursor().selectedText()); - int iRet = pWindow->currentWrapper()->textEditor()->textCursor().position(); - ASSERT_TRUE(strRet.isEmpty() && iRet == 0); - - pWindow->deleteLater(); -} - -//moveToLineIndentation 002 -TEST_F(test_textedit, moveToLineIndentation_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world\nHolle world")); - pWindow->currentWrapper()->textEditor()->moveToLineIndentation(); - QString strRet(pWindow->currentWrapper()->textEditor()->textCursor().selectedText()); - int iRet = pWindow->currentWrapper()->textEditor()->textCursor().position(); - ASSERT_TRUE(strRet.isEmpty() && iRet == 12); - - pWindow->deleteLater(); -} - -//nextLine 001 -TEST_F(test_textedit, nextLine_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world\nHolle world")); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - textCursor.movePosition(QTextCursor::Up, QTextCursor::MoveAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - pWindow->currentWrapper()->textEditor()->m_cursorMark = true; - pWindow->currentWrapper()->textEditor()->nextLine(); - QString strRet(pWindow->currentWrapper()->textEditor()->textCursor().selectedText()); - ASSERT_TRUE(!strRet.isEmpty()); - - pWindow->deleteLater(); -} - -//nextLine 002 -TEST_F(test_textedit, nextLine_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world\nHolle world")); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - textCursor.movePosition(QTextCursor::Up, QTextCursor::MoveAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - pWindow->currentWrapper()->textEditor()->m_cursorMark = false; - pWindow->currentWrapper()->textEditor()->nextLine(); - QString strRet(pWindow->currentWrapper()->textEditor()->textCursor().selectedText()); - ASSERT_TRUE(strRet.isEmpty()); - - pWindow->deleteLater(); -} - -//prevLine 001 -TEST_F(test_textedit, prevLine_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world\nHolle world")); - pWindow->currentWrapper()->textEditor()->m_cursorMark = true; - pWindow->currentWrapper()->textEditor()->prevLine(); - QString strRet(pWindow->currentWrapper()->textEditor()->textCursor().selectedText()); - ASSERT_TRUE(!strRet.isEmpty()); - - pWindow->deleteLater(); -} - -//prevLine 002 -TEST_F(test_textedit, prevLine_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world\nHolle world")); - pWindow->currentWrapper()->textEditor()->m_cursorMark = false; - pWindow->currentWrapper()->textEditor()->prevLine(); - QString strRet(pWindow->currentWrapper()->textEditor()->textCursor().selectedText()); - ASSERT_TRUE(strRet.isEmpty()); - - pWindow->deleteLater(); -} - -//jumpToLine -TEST_F(test_textedit, jumpToLine) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world\nHolle world")); - pWindow->currentWrapper()->textEditor()->jumpToLine(1, true); - int iRet = pWindow->currentWrapper()->textEditor()->textCursor().blockNumber() + 1; - ASSERT_TRUE(iRet == 1); - - pWindow->deleteLater(); -} - -//void moveCursorNoBlink(QTextCursor::MoveOperation operation, -// QTextCursor::MoveMode mode = QTextCursor::MoveAnchor); -TEST_F(test_textedit, moveCursorNoBlink) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world\nHolle world")); - pWindow->currentWrapper()->textEditor()->moveCursorNoBlink(QTextCursor::StartOfBlock, QTextCursor::KeepAnchor); - bool bRet = pWindow->currentWrapper()->textEditor()->textCursor().hasSelection(); - ASSERT_TRUE(bRet == true); - pWindow->deleteLater(); -} - -//newline -TEST_F(test_textedit, newline) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world\nHolle world")); - pWindow->currentWrapper()->textEditor()->newline(); - int iRet = pWindow->currentWrapper()->textEditor()->textCursor().blockNumber() + 1; - ASSERT_TRUE(iRet == 3); - - pWindow->deleteLater(); -} - -//openNewlineAbove -TEST_F(test_textedit, openNewlineAbove) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world\nHolle world")); - pWindow->currentWrapper()->textEditor()->openNewlineAbove(); - int iRet = pWindow->currentWrapper()->textEditor()->textCursor().blockNumber() + 1; - ASSERT_TRUE(iRet == 2); - - pWindow->deleteLater(); -} - -//openNewlineBelow -TEST_F(test_textedit, openNewlineBelow) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world\nHolle world")); - pWindow->currentWrapper()->textEditor()->openNewlineBelow(); - int iRet = pWindow->currentWrapper()->textEditor()->textCursor().blockNumber() + 1; - ASSERT_TRUE(iRet == 3); - - pWindow->deleteLater(); -} - -//moveLineDownUp 001 -TEST_F(test_textedit, moveLineDownUp_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world\nHolle world")); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - textCursor.movePosition(QTextCursor::PreviousWord, QTextCursor::KeepAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - pWindow->currentWrapper()->textEditor()->moveLineDownUp(true); - int iRet = pWindow->currentWrapper()->textEditor()->textCursor().blockNumber() + 1; - ASSERT_TRUE(iRet == 1); - - pWindow->deleteLater(); -} - -//moveLineDownUp 002 -TEST_F(test_textedit, moveLineDownUp_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world\nHolle world\nHolle world")); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - textCursor.movePosition(QTextCursor::Up, QTextCursor::MoveAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - pWindow->currentWrapper()->textEditor()->moveLineDownUp(false); - int iRet = pWindow->currentWrapper()->textEditor()->textCursor().blockNumber() + 1; - ASSERT_TRUE(iRet == 3); - - pWindow->deleteLater(); -} - -//scrollLineUp -TEST_F(test_textedit, scrollLineDown) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("H\nl\nl\ne\n\nw\no\nr\nl\nd\n.H\nl\nl\ne\n\nw" - "\no\nr\nl\nd\n.H\nl\nl\ne\n\nw\no\nr\nl\nd\n.H" - "\nl\nl\ne\n\nw\no\nr\nl\nd\n.H\nl\nl\ne\n\nw\no" - "\nr\nl\nd\n.")); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - textCursor.movePosition(QTextCursor::Start, QTextCursor::MoveAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - pWindow->currentWrapper()->textEditor()->scrollLineDown(); - int iRet = pWindow->currentWrapper()->textEditor()->verticalScrollBar()->value(); - ASSERT_TRUE(iRet == 1); - - pWindow->deleteLater(); -} - -TEST_F(test_textedit, scrollUp) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("H\nl\nl\ne\n\nw\no\nr\nl\nd\n.H\nl\nl\ne\n\nw" - "\no\nr\nl\nd\n.H\nl\nl\ne\n\nw\no\nr\nl\nd\n.H" - "\nl\nl\ne\n\nw\no\nr\nl\nd\n.H\nl\nl\ne\n\nw\no" - "\nr\nl\nd\n.H\nl\nl\ne\n\nw\no\nr\nl\nd\n.H\n")); - int iScrollBarMaxmun = pWindow->currentWrapper()->textEditor()->verticalScrollBar()->maximum(); - pWindow->currentWrapper()->textEditor()->verticalScrollBar()->setValue(iScrollBarMaxmun); - pWindow->currentWrapper()->textEditor()->scrollUp(); - int iRet = pWindow->currentWrapper()->textEditor()->verticalScrollBar()->value(); - ASSERT_TRUE(iScrollBarMaxmun != iRet); - - pWindow->deleteLater(); -} - -TEST_F(test_textedit, scrollDown) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("H\nl\nl\ne\n\nw\no\nr\nl\nd\n.H\nl\nl\ne\n\nw" - "\no\nr\nl\nd\n.H\nl\nl\ne\n\nw\no\nr\nl\nd\n.H" - "\nl\nl\ne\n\nw\no\nr\nl\nd\n.H\nl\nl\ne\n\nw\no" - "\nr\nl\nd\n.H\nl\nl\ne\n\nw\no\nr\nl\nd\n.H\n")); - pWindow->currentWrapper()->textEditor()->verticalScrollBar()->setValue(0); - pWindow->currentWrapper()->textEditor()->scrollDown(); - int iRet = pWindow->currentWrapper()->textEditor()->verticalScrollBar()->value(); - ASSERT_TRUE(iRet != 0); - - pWindow->deleteLater(); -} - -//duplicateLine 001 -TEST_F(test_textedit, duplicateLine_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world\nHolle world\nHolle world")); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - textCursor.movePosition(QTextCursor::PreviousWord, QTextCursor::KeepAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - int iDuplicateLineBeFor = pWindow->currentWrapper()->textEditor()->blockCount(); - pWindow->currentWrapper()->textEditor()->duplicateLine(); - int iDuplicateLineAfter = pWindow->currentWrapper()->textEditor()->blockCount(); - - ASSERT_TRUE(iDuplicateLineAfter == iDuplicateLineBeFor + 1); - - pWindow->deleteLater(); -} - -//duplicateLine 002 -TEST_F(test_textedit, duplicateLine_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world\nHolle world\nHolle world")); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - textCursor.movePosition(QTextCursor::StartOfBlock, QTextCursor::MoveAnchor); - textCursor.movePosition(QTextCursor::NextWord, QTextCursor::KeepAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - int iDuplicateLineBeFor = pWindow->currentWrapper()->textEditor()->blockCount(); - pWindow->currentWrapper()->textEditor()->duplicateLine(); - int iDuplicateLineAfter = pWindow->currentWrapper()->textEditor()->blockCount(); - - ASSERT_TRUE(iDuplicateLineAfter == iDuplicateLineBeFor + 1); - - pWindow->deleteLater(); -} - -//duplicateLine 003 -TEST_F(test_textedit, duplicateLine_003) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world\nHolle world\nHolle world")); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - textCursor.movePosition(QTextCursor::PreviousWord, QTextCursor::MoveAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - int iDuplicateLineBeFor = pWindow->currentWrapper()->textEditor()->blockCount(); - pWindow->currentWrapper()->textEditor()->duplicateLine(); - int iDuplicateLineAfter = pWindow->currentWrapper()->textEditor()->blockCount(); - - ASSERT_TRUE(iDuplicateLineAfter == iDuplicateLineBeFor + 1); - - pWindow->deleteLater(); -} - -//void copyLines 001 -TEST_F(test_textedit, copyLines_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world\nHolle world\nHolle world")); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - textCursor.movePosition(QTextCursor::StartOfBlock, QTextCursor::KeepAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - QClipboard *pClipboard = QApplication::clipboard(); - pClipboard->clear(); - pWindow->currentWrapper()->textEditor()->copyLines(); - QString strRet(pClipboard->text()); - ASSERT_TRUE(!strRet.compare(QString("Holle world"))); - - pWindow->deleteLater(); -} - -//void copyLines 002 -TEST_F(test_textedit, copyLines_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world\nHolle world\nHolle world")); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - textCursor.movePosition(QTextCursor::StartOfBlock, QTextCursor::MoveAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - QClipboard *pClipboard = QApplication::clipboard(); - pClipboard->clear(); - pWindow->currentWrapper()->textEditor()->copyLines(); - QString strRet(pClipboard->text()); - ASSERT_TRUE(!strRet.compare(QString("Holle world"))); - - pWindow->deleteLater(); -} - -void stub_push(QUndoCommand *cmd) -{ - Q_UNUSED(cmd); -} - -void stub_updateModifyStatus(const QString &path, bool isModified) -{ - Q_UNUSED(path); - Q_UNUSED(isModified); -} - -void stub_insertMultiTextEx(const QList> &multiText) -{ - Q_UNUSED(multiText); -} - -void stub_deleteMultiTextEx(const QList &multiText) -{ - Q_UNUSED(multiText); -} - -void stub_slotCanUndoChanged(bool bCanUndo) -{ - Q_UNUSED(bCanUndo); -} - -void stub_slotCanRedoChanged(bool bCanRedo) -{ - Q_UNUSED(bCanRedo); -} - -bool popRightMenu_001_canRedo_stub() -{ - return true; -} - -void popRightMenu_001_UpdateBottomBarWordCnt_stub() -{ - return; -} - -void popRightMenu_001_writeHistoryRecord_stub() -{ - return; -} - -bool popRightMenu_001_isRegisteredFflytekAiassistant_stub() -{ - return false; -} - -//popRightMenu 001 -TEST_F(test_textedit, popRightMenu_001) -{ -#if 0 - EditWrapper *pEditWrapper = new EditWrapper(); - //TextEdit *pTextEdit = new TextEdit(); - Stub isRegisteredFflytekAiassistant_stub; - isRegisteredFflytekAiassistant_stub.set(ADDR(Window, isRegisteredFflytekAiassistant), popRightMenu_001_isRegisteredFflytekAiassistant_stub); - Stub UpdateBottomBarWordCnt_stub; - UpdateBottomBarWordCnt_stub.set(ADDR(EditWrapper, UpdateBottomBarWordCnt), popRightMenu_001_UpdateBottomBarWordCnt_stub); - Stub writeHistoryRecord_stub; - writeHistoryRecord_stub.set(ADDR(TextEdit, writeHistoryRecord), popRightMenu_001_writeHistoryRecord_stub); - //typedef int (*fptr)(QMenu *); - //fptr fileDialogExec = (fptr)(&QMenu::exec); - //Stub stub; - //stub.set((QAction *)(QPoint, QAction *)ADDR(QMenu, exec), popRightMenu_001_writeHistoryRecord_stub); - - pEditWrapper->textEditor()->popRightMenu(); - //pTextEdit->popRightMenu(); - - -// Window *pWindow = new Window(); -// pWindow->addBlankTab(QString()); -// //pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), -// // QString("Holle world\nHolle world\nHolle world")); -// Stub canRedo_stub; -// canRedo_stub.set(ADDR(QUndoStack, canRedo), popRightMenu_001_canRedo_stub); -// QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); -// textCursor.movePosition(QTextCursor::Start, QTextCursor::KeepAnchor); -// pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); -// Stub UpdateBottomBarWordCnt_stub; -// UpdateBottomBarWordCnt_stub.set(ADDR(EditWrapper, UpdateBottomBarWordCnt), popRightMenu_001_UpdateBottomBarWordCnt_stub); -// Stub writeHistoryRecord_stub; -// writeHistoryRecord_stub.set(ADDR(TextEdit, writeHistoryRecord), popRightMenu_001_writeHistoryRecord_stub); -// Stub isRegisteredFflytekAiassistant_stub; -// isRegisteredFflytekAiassistant_stub.set(ADDR(Window, isRegisteredFflytekAiassistant), popRightMenu_001_isRegisteredFflytekAiassistant_stub); -// Stub handleTabCloseRequested_stub; -// handleTabCloseRequested_stub.set(ADDR(Window, handleTabCloseRequested), popRightMenu_001_writeHistoryRecord_stub); -// Stub indexOf_stub; -// indexOf_stub.set(ADDR(Tabbar, indexOf), popRightMenu_001_writeHistoryRecord_stub); -// Stub itextAt_stub; -// itextAt_stub.set(ADDR(Tabbar, textAt), popRightMenu_001_writeHistoryRecord_stub); -// Stub slotCanRedoChanged_stub; -// slotCanRedoChanged_stub.set(ADDR(TextEdit, slotCanRedoChanged), popRightMenu_001_writeHistoryRecord_stub); -// Stub slotCanUndoChanged_stub; -// slotCanUndoChanged_stub.set(ADDR(TextEdit, slotCanUndoChanged), popRightMenu_001_writeHistoryRecord_stub); - -// pWindow->currentWrapper()->textEditor()->popRightMenu(QPoint(10, 10)); - //ASSERT_TRUE(!strRet.compare(QString("Holle world"))); - - //pEditWrapper->deleteLater(); -#endif -} - -//void cutlines 001 -TEST_F(test_textedit, cutlines_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Holle world\nHolle world\nHolle world"); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), strMsg); - QClipboard *pClipboard = QApplication::clipboard(); - pClipboard->clear(); - pWindow->currentWrapper()->textEditor()->m_isSelectAll = true; - pWindow->currentWrapper()->textEditor()->cutlines(); - QString strRet(pClipboard->text()); - ASSERT_TRUE(strRet.length() == strMsg.length()); - - pWindow->deleteLater(); -} - -//void cutlines 002 -TEST_F(test_textedit, cutlines_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Holle world\nHolle world\nHolle world"); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), strMsg); - QClipboard *pClipboard = QApplication::clipboard(); - pClipboard->clear(); - pWindow->currentWrapper()->textEditor()->cutlines(); - QString strRet(pClipboard->text()); - ASSERT_TRUE(!strRet.compare(QString("Holle world"))); - - pWindow->deleteLater(); -} - -//joinLines 001 -TEST_F(test_textedit, joinLines_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Holle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - int iRetBefor = pWindow->currentWrapper()->textEditor()->document()->blockCount(); - pWindow->currentWrapper()->textEditor()->joinLines(); - int iRetAfter = pWindow->currentWrapper()->textEditor()->document()->blockCount(); - ASSERT_TRUE(iRetAfter == iRetBefor); - - pWindow->deleteLater(); -} - -//joinLines 002 -TEST_F(test_textedit, joinLines_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Holle world\nHolle world\nHolle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - textCursor.movePosition(QTextCursor::Up, QTextCursor::KeepAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - int iRetBefor = pWindow->currentWrapper()->textEditor()->document()->blockCount(); - pWindow->currentWrapper()->textEditor()->joinLines(); - int iRetAfter = pWindow->currentWrapper()->textEditor()->document()->blockCount(); - ASSERT_TRUE(iRetAfter == iRetBefor - 1); - - pWindow->deleteLater(); -} - -//joinLines 003 -TEST_F(test_textedit, joinLines_003) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Holle world\nHolle world\nHolle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - textCursor.movePosition(QTextCursor::Up, QTextCursor::MoveAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - int iRetBefor = pWindow->currentWrapper()->textEditor()->document()->blockCount(); - pWindow->currentWrapper()->textEditor()->joinLines(); - int iRetAfter = pWindow->currentWrapper()->textEditor()->document()->blockCount(); - ASSERT_TRUE(iRetAfter == iRetBefor - 1); - - pWindow->deleteLater(); -} - -//killLine 001 -TEST_F(test_textedit, killLine_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Holle world\nHolle world\nHolle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->m_cursorMark = true; - pWindow->currentWrapper()->textEditor()->killLine(); - QString strRet(pWindow->currentWrapper()->textEditor()->toPlainText()); - - ASSERT_TRUE(!strRet.compare(strMsg)); - pWindow->deleteLater(); -} - -//killLine 002 -TEST_F(test_textedit, killLine_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Holle world\nHolle world\nHolle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->m_isSelectAll = true; - pWindow->currentWrapper()->textEditor()->killLine(); - QString strRet(pWindow->currentWrapper()->textEditor()->toPlainText()); - - ASSERT_TRUE(strRet.isEmpty()); - pWindow->deleteLater(); -} - -//killLine 003 -TEST_F(test_textedit, killLine_003) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Holle world\nHolle world\nHolle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - textCursor.movePosition(QTextCursor::Up, QTextCursor::MoveAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - textCursor.movePosition(QTextCursor::EndOfBlock, QTextCursor::MoveAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - QString strRetBefore(pWindow->currentWrapper()->textEditor()->textCursor().block().text()); - pWindow->currentWrapper()->textEditor()->killLine(); - QString strRetAfter(pWindow->currentWrapper()->textEditor()->textCursor().block().text()); - - ASSERT_TRUE(strRetAfter.compare(strRetBefore)); - pWindow->deleteLater(); -} - -//killCurrentLine 001 -TEST_F(test_textedit, killCurrentLine_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Holle world\nHolle world\nHolle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->m_cursorMark = true; - pWindow->currentWrapper()->textEditor()->killCurrentLine(); - QString strRet(pWindow->currentWrapper()->textEditor()->toPlainText()); - - ASSERT_TRUE(!strRet.compare(strMsg)); - pWindow->deleteLater(); -} - -//killCurrentLine 002 -TEST_F(test_textedit, killCurrentLine_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Holle world\nHolle world\nHolle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->m_isSelectAll = true; - int iRetBefore = pWindow->currentWrapper()->textEditor()->document()->blockCount(); - pWindow->currentWrapper()->textEditor()->killCurrentLine(); - int iRetAfter = pWindow->currentWrapper()->textEditor()->document()->blockCount(); - - ASSERT_TRUE(iRetAfter == iRetBefore); - pWindow->deleteLater(); -} - -//killBackwardWord 001 -TEST_F(test_textedit, killBackwardWord_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Holle world\nHolle world\nHolle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->m_isSelectAll = true; - pWindow->currentWrapper()->textEditor()->killBackwardWord(); - QString strRet(pWindow->currentWrapper()->textEditor()->toPlainText()); - - ASSERT_TRUE(!strRet.compare(strMsg)); - pWindow->deleteLater(); -} - -//killBackwardWord 002 -TEST_F(test_textedit, killBackwardWord_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Holle world\nHolle world\nHolle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->killBackwardWord(); - QString strRet(pWindow->currentWrapper()->textEditor()->textCursor().block().text()); - - ASSERT_TRUE(!strRet.compare(QString("Holle "))); - pWindow->deleteLater(); -} - -//killForwardWord 001 -TEST_F(test_textedit, killForwardWord_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Holle world\nHolle world\nHolle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->m_isSelectAll = true; - QString strRetBefore(pWindow->currentWrapper()->textEditor()->textCursor().block().text()); - pWindow->currentWrapper()->textEditor()->killForwardWord(); - QString strRet(pWindow->currentWrapper()->textEditor()->textCursor().block().text()); - - ASSERT_TRUE(!strRet.compare(strRetBefore)); - pWindow->deleteLater(); -} - -//killForwardWord 002 -TEST_F(test_textedit, killForwardWord_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Holle world\nHolle world\nHolle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - textCursor.movePosition(QTextCursor::StartOfBlock, QTextCursor::MoveAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - pWindow->currentWrapper()->textEditor()->killForwardWord(); - QString strRet(pWindow->currentWrapper()->textEditor()->textCursor().block().text()); - - ASSERT_TRUE(!strRet.compare(QString("world"))); - pWindow->deleteLater(); -} - -//indentText 001 -TEST_F(test_textedit, indentText_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Holle world\nHolle world\nHolle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - textCursor.movePosition(QTextCursor::PreviousWord, QTextCursor::KeepAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - int iRetBefore = pWindow->currentWrapper()->textEditor()->textCursor().position(); - pWindow->currentWrapper()->textEditor()->indentText(); - int iRetAfter = pWindow->currentWrapper()->textEditor()->textCursor().position(); - QString strRet(pWindow->currentWrapper()->textEditor()->textCursor().block().text()); - - ASSERT_TRUE(iRetAfter != iRetBefore); - pWindow->deleteLater(); -} - -//indentText 002 -TEST_F(test_textedit, indentText_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Holle world\nHolle world\nHolle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - textCursor.movePosition(QTextCursor::PreviousWord, QTextCursor::MoveAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - int iRetBefore = pWindow->currentWrapper()->textEditor()->textCursor().position(); - pWindow->currentWrapper()->textEditor()->indentText(); - int iRetAfter = pWindow->currentWrapper()->textEditor()->textCursor().position(); - QString strRet(pWindow->currentWrapper()->textEditor()->textCursor().block().text()); - - EXPECT_EQ(iRetAfter , iRetBefore); - pWindow->deleteLater(); -} - - -//setTabSpaceNumber -TEST_F(test_textedit, setTabSpaceNumber) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Holle world\nHolle world\nHolle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - pWindow->currentWrapper()->textEditor()->setTabSpaceNumber(5); - - ASSERT_TRUE(pWindow->currentWrapper()->textEditor()->m_tabSpaceNumber == 5); - pWindow->deleteLater(); -} - -//convertWordCase 001 -TEST(UT_test_textedit_convertWordCase, UT_test_textedit_convertWordCase_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Holle world\nHolle world\nHolle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - pWindow->currentWrapper()->textEditor()->m_isSelectAll = true; - pWindow->currentWrapper()->textEditor()->convertWordCase(UPPER); - QString strRet(pWindow->currentWrapper()->textEditor()->toPlainText()); - - ASSERT_TRUE(!strRet.compare(strMsg.toUpper())); - pWindow->deleteLater(); -} - -//convertWordCase 002 -TEST(UT_test_textedit_convertWordCase, UT_test_textedit_convertWordCase_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Holle world\nHolle world\nHolle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - pWindow->currentWrapper()->textEditor()->m_isSelectAll = true; - pWindow->currentWrapper()->textEditor()->convertWordCase(LOWER); - QString strRet(pWindow->currentWrapper()->textEditor()->toPlainText()); - - ASSERT_TRUE(!strRet.compare(strMsg.toLower())); - pWindow->deleteLater(); -} - -//convertWordCase 003 -TEST(UT_test_textedit_convertWordCase, UT_test_textedit_convertWordCase_003) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Holle world\nHolle world\nHolle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - pWindow->currentWrapper()->textEditor()->m_isSelectAll = true; - pWindow->currentWrapper()->textEditor()->convertWordCase(CAPITALIZE); - QString strRet(pWindow->currentWrapper()->textEditor()->toPlainText()); - - ASSERT_TRUE(strRet.compare(strMsg)); - pWindow->deleteLater(); -} - -//convertWordCase 004 -//convertWordCase 005 -//convertWordCase 006 -//QString capitalizeText(QString text); -TEST_F(test_textedit, capitalizeText) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Holle world\nHolle world\nHolle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - QString strRet(pWindow->currentWrapper()->textEditor()->capitalizeText(QString("world"))); - - ASSERT_TRUE(!strRet.compare(QString("World"))); - pWindow->deleteLater(); -} - -//void keepCurrentLineAtCenter(); -TEST_F(test_textedit, keepCurrentLineAtCenter) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("H\no\nl\nl\ne\nH\no\nl\nl\ne\nH\no\nl\nl\ne\nH\no\nl\nl\ne\n" - "H\no\nl\nl\ne\nH\no\nl\nl\ne\nH\no\nl\nl\ne\nH\no\nl\nl\ne\n" - "H\no\nl\nl\ne\nH\no\nl\nl\ne\nH\no\nl\nl\ne\nH\no\nl\nl\ne\n"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->keepCurrentLineAtCenter(); - QScrollBar *pScrollBar = pWindow->currentWrapper()->textEditor()->verticalScrollBar(); - int iRet = pScrollBar->value(); - - ASSERT_TRUE(iRet != 0); - pWindow->deleteLater(); -} - -//scrollToLine -TEST_F(test_textedit, scrollToLine) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("H\no\nl\nl\ne\nH\no\nl\nl\ne\nH\no\nl\nl\ne\nH\no\nl\nl\ne\n" - "H\no\nl\nl\ne\nH\no\nl\nl\ne\nH\no\nl\nl\ne\nH\no\nl\nl\ne\n" - "H\no\nl\nl\ne\nH\no\nl\nl\ne\nH\no\nl\nl\ne\nH\no\nl\nl\ne\n"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - pWindow->currentWrapper()->textEditor()->scrollToLine(10, 5, 5); - - ASSERT_TRUE(pWindow->currentWrapper()->textEditor()->m_restoreRow == 5); - ASSERT_TRUE(pWindow->currentWrapper()->textEditor()->m_restoreColumn == 5); - pWindow->deleteLater(); -} - -//void setLineWrapMode(bool enable); -TEST(UT_test_textedit_setLineWrapMode, UT_test_textedit_setLineWrapMode_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Holle world\nHolle world\nHolle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->setLineWrapMode(QPlainTextEdit::NoWrap); - pWindow->currentWrapper()->textEditor()->setLineWrapMode(true); - - ASSERT_TRUE(pWindow->currentWrapper()->textEditor()->lineWrapMode() == QPlainTextEdit::WidgetWidth); - pWindow->deleteLater(); -} - -//void setFontFamily(QString fontName); -TEST(UT_test_textedit_setFontFamily, UT_test_textedit_setFontFamily_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Holle world\nHolle world\nHolle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->setFontFamily(QString("MT Extra")); - QFont font(pWindow->currentWrapper()->textEditor()->font()); - QString strRet(font.family()); - ASSERT_TRUE(!strRet.compare(QString("MT Extra"))); - pWindow->deleteLater(); -} - -//void setFontSize(int fontSize); -TEST(UT_test_textedit_setFontSize, UT_test_textedit_setFontSize_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Holle world\nHolle world\nHolle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->setFontSize(15); - QFont font(pWindow->currentWrapper()->textEditor()->font()); - int iRet = font.pointSize(); - ASSERT_TRUE(iRet == 15); - pWindow->deleteLater(); -} - -//void updateFont(); -TEST(UT_test_textedit_updateFont, UT_test_textedit_updateFont_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Holle world\nHolle world\nHolle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->updateFont(); - QFont font(pWindow->currentWrapper()->textEditor()->document()->defaultFont()); - bool bRet = font.fixedPitch(); - ASSERT_TRUE(bRet == true); - pWindow->deleteLater(); -} - -//replaceAll 001 -TEST(UT_test_textedit_replaceAll, UT_test_textedit_replaceAll_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Holle world\nHolle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - QString strReplaceText("world"); - QString strWithText("Helle"); - QString strRetBefore(pWindow->currentWrapper()->textEditor()->toPlainText()); - pWindow->currentWrapper()->textEditor()->m_readOnlyMode = true; - pWindow->currentWrapper()->textEditor()->replaceAll(strReplaceText, strWithText); - QString strRetAfter(pWindow->currentWrapper()->textEditor()->toPlainText()); - - ASSERT_TRUE(!strRetAfter.compare(strRetBefore)); - pWindow->deleteLater(); -} - -//replaceAll 002 -TEST(UT_test_textedit_replaceAll, UT_test_textedit_replaceAll_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Holle world\nHolle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - QString strReplaceText("world"); - QString strWithText("Helle"); - QString strRetBefore(pWindow->currentWrapper()->textEditor()->toPlainText()); - pWindow->currentWrapper()->textEditor()->replaceAll(QString(), strWithText); - QString strRetAfter(pWindow->currentWrapper()->textEditor()->toPlainText()); - - ASSERT_TRUE(!strRetAfter.compare(strRetBefore)); - - pWindow->deleteLater(); -} - -//replaceAll 003 -TEST(UT_test_textedit_replaceAll, UT_test_textedit_replaceAll_003) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Holle world\nHolle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - QString strReplaceText("world"); - QString strWithText("Holle"); - pWindow->currentWrapper()->textEditor()->replaceAll(strReplaceText, strWithText); - QString strRetAfter(pWindow->currentWrapper()->textEditor()->toPlainText()); - - ASSERT_TRUE(!strRetAfter.compare(QString("Holle Holle\nHolle Holle"))); - - // 源码已将 replaceAll 的默认大小写敏感度从 CaseInsensitive 改为 CaseSensitive - // (commit d6017c54,修复 BUG-282071)。本步用小写 "holle" 匹配大写 "Holle", - // 需显式传入 Qt::CaseInsensitive 才能复现原意,否则默认区分大小写会 0 次替换。 - pWindow->currentWrapper()->textEditor()->replaceAll(QString("holle"), QString("World"), Qt::CaseInsensitive); - strRetAfter = QString(pWindow->currentWrapper()->textEditor()->toPlainText()); - ASSERT_TRUE(!strRetAfter.compare(QString("World World\nWorld World"))); - - pWindow->deleteLater(); -} - -//replaceAll check case sensitive -TEST(UT_test_textedit_replaceAll, UT_test_textedit_replaceAll_CaseSensitive) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Hello world\nHello world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - auto *textEdit = pWindow->currentWrapper()->textEditor(); - - // NotChange - textEdit->replaceAll(QString("hello"), QString("world"), Qt::CaseSensitive); - ASSERT_TRUE(!textEdit->toPlainText().compare(strMsg)); - - textEdit->replaceAll(QString("hello"), QString("World"), Qt::CaseInsensitive); - ASSERT_TRUE(!textEdit->toPlainText().compare(QString("World world\nWorld world"))); - - textEdit->replaceAll(QString("world"), QString("World"), Qt::CaseInsensitive); - ASSERT_TRUE(!textEdit->toPlainText().compare(QString("World World\nWorld World"))); - - pWindow->deleteLater(); -} - -//replaceNext 001 -TEST(UT_test_textedit_replaceNext, UT_test_textedit_replaceNext_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Holle world\nHolle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - QString strReplaceText("world"); - QString strWithText("Holle"); - pWindow->currentWrapper()->textEditor()->m_readOnlyMode = true; - QString strRetBefore(pWindow->currentWrapper()->textEditor()->toPlainText()); - pWindow->currentWrapper()->textEditor()->replaceNext(strReplaceText, strWithText); - QString strRetAfter(pWindow->currentWrapper()->textEditor()->toPlainText()); - - ASSERT_TRUE(!strRetAfter.compare(strRetBefore)); - pWindow->deleteLater(); -} - -//replaceNext 002 -TEST(UT_test_textedit_replaceNext, UT_test_textedit_replaceNext_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Holle world\nHolle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - QString strReplaceText("world"); - QString strWithText("Holle"); - pWindow->currentWrapper()->textEditor()->m_isSelectAll = true; - QString strRetBefore(pWindow->currentWrapper()->textEditor()->toPlainText()); - pWindow->currentWrapper()->textEditor()->replaceNext(QString(), strWithText); - QString strRetAfter(pWindow->currentWrapper()->textEditor()->toPlainText()); - - ASSERT_TRUE(!strRetAfter.compare(strRetBefore)); - pWindow->deleteLater(); -} - -//replaceNext 003 -TEST(UT_test_textedit_replaceNext, UT_test_textedit_replaceNext_003) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Holle world\nHolle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - textCursor.movePosition(QTextCursor::StartOfBlock, QTextCursor::KeepAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - QString strReplaceText("world"); - QString strWithText("Holle"); - pWindow->currentWrapper()->textEditor()->m_findHighlightSelection.cursor = textCursor; - pWindow->currentWrapper()->textEditor()->m_cursorStart = 1; - QString strRetBefore(pWindow->currentWrapper()->textEditor()->textCursor().block().text()); - pWindow->currentWrapper()->textEditor()->replaceNext(strReplaceText, strWithText); - QString strRetAfter(pWindow->currentWrapper()->textEditor()->textCursor().block().text()); - - ASSERT_TRUE(!strRetAfter.compare(QString("Holle world"))); - pWindow->deleteLater(); -} - -//replaceNext 004 -TEST(UT_test_textedit_replaceNext, UT_test_textedit_replaceNext_004) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Holle world\nHolle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - textCursor.movePosition(QTextCursor::StartOfBlock, QTextCursor::KeepAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - QString strReplaceText("world"); - QString strWithText("Holle"); - pWindow->currentWrapper()->textEditor()->m_findHighlightSelection.cursor = textCursor; - QString strRetBefore(pWindow->currentWrapper()->textEditor()->textCursor().block().text()); - pWindow->currentWrapper()->textEditor()->replaceNext(strReplaceText, strWithText); - QString strRetAfter(pWindow->currentWrapper()->textEditor()->textCursor().block().text()); - - ASSERT_TRUE(!strRetAfter.compare(QString("Holle world"))); - pWindow->deleteLater(); -} - -//replaceNext check sensitive -TEST(UT_test_textedit_replaceNext, UT_test_textedit_replaceNext_CaseSensitive) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Hello world\nHello world"); - auto *textEdit = pWindow->currentWrapper()->textEditor(); - QTextCursor textCursor = textEdit->textCursor(); - textEdit->insertTextEx(textCursor, strMsg); - - textCursor = textEdit->textCursor(); - textCursor.movePosition(QTextCursor::Start); - textCursor.movePosition(QTextCursor::EndOfWord, QTextCursor::KeepAnchor); - textEdit->setTextCursor(textCursor); - textEdit->m_findHighlightSelection.cursor = textCursor; - - QString strReplaceText("hello"); - QString strWithText("World"); - QString strRetBefore(textEdit->textCursor().block().text()); - - textEdit->replaceNext(strReplaceText, strWithText, Qt::CaseSensitive); - QString strRetAfter(textEdit->textCursor().block().text()); - ASSERT_TRUE(!strRetAfter.compare(strRetBefore)); - - textEdit->setTextCursor(textCursor); - textEdit->m_findHighlightSelection.cursor = textCursor; - textEdit->replaceNext(strReplaceText, strWithText, Qt::CaseInsensitive); - ASSERT_TRUE(!textEdit->toPlainText().compare("World world\nHello world")); - - pWindow->deleteLater(); -} - -//replaceRest 001 -TEST(UT_test_textedit_replaceRest, UT_test_textedit_replaceRest_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Holle world\nHolle world Holle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - QString strReplaceText("world"); - QString strWithText("Holle"); - pWindow->currentWrapper()->textEditor()->m_readOnlyMode = true; - QString strRetBefore(pWindow->currentWrapper()->textEditor()->textCursor().block().text()); - pWindow->currentWrapper()->textEditor()->replaceRest(strReplaceText, strWithText); - QString strRetAfter(pWindow->currentWrapper()->textEditor()->textCursor().block().text()); - - ASSERT_TRUE(!strRetAfter.compare(QString("Holle world Holle world"))); - pWindow->deleteLater(); -} - -//replaceRest 002 -TEST(UT_test_textedit_replaceRest, UT_test_textedit_replaceRest_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Holle world\nHolle world Holle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - QString strReplaceText("world"); - QString strWithText("Holle"); - QString strRetBefore(pWindow->currentWrapper()->textEditor()->textCursor().block().text()); - pWindow->currentWrapper()->textEditor()->replaceRest(QString(), strWithText); - QString strRetAfter(pWindow->currentWrapper()->textEditor()->textCursor().block().text()); - - ASSERT_TRUE(!strRetAfter.compare(QString("Holle world Holle world"))); - pWindow->deleteLater(); -} - -//replaceRest 003 -TEST(UT_test_textedit_replaceRest, UT_test_textedit_replaceRest_003) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world Helle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - textCursor.movePosition(QTextCursor::StartOfBlock, QTextCursor::MoveAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - QString strReplaceText("world"); - QString strWithText("Helle"); - QString strRetBefore(pWindow->currentWrapper()->textEditor()->textCursor().block().text()); - pWindow->currentWrapper()->textEditor()->replaceRest(strReplaceText, strWithText); - QString strRetAfter(pWindow->currentWrapper()->textEditor()->textCursor().block().text()); - - ASSERT_TRUE(!strRetAfter.compare(QString("Helle Helle Helle Helle"))); - pWindow->deleteLater(); -} - -//replaceRest check case sensitive -TEST(UT_test_textedit_replaceRest, UT_test_textedit_replaceRest_CaseSensitive) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Hello world\nHello world Hello world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - textCursor.movePosition(QTextCursor::StartOfBlock, QTextCursor::MoveAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - QString strReplaceText("World"); - QString strWithText("Hello"); - QString strRetBefore(pWindow->currentWrapper()->textEditor()->textCursor().block().text()); - pWindow->currentWrapper()->textEditor()->replaceRest(strReplaceText, strWithText, Qt::CaseSensitive); - QString strRetAfter(pWindow->currentWrapper()->textEditor()->textCursor().block().text()); - ASSERT_TRUE(!strRetAfter.compare(strRetBefore)); - - pWindow->currentWrapper()->textEditor()->replaceRest(strReplaceText, strWithText, Qt::CaseInsensitive); - strRetAfter = QString(pWindow->currentWrapper()->textEditor()->textCursor().block().text()); - ASSERT_TRUE(!strRetAfter.compare("Hello Hello Hello Hello")); - - pWindow->deleteLater(); -} - - -//beforeReplace -TEST(UT_test_textedit_beforeReplace, UT_test_textedit_beforeReplace_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - QString strRetBefore(pWindow->currentWrapper()->textEditor()->textCursor().block().text()); - pWindow->currentWrapper()->textEditor()->beforeReplace(QString()); - QString strRetAfter(pWindow->currentWrapper()->textEditor()->textCursor().block().text()); - - ASSERT_TRUE(!strRetAfter.compare(strRetBefore)); - pWindow->deleteLater(); -} - -//findKeywordForward 001 -TEST(UT_test_textedit_findKeywordForward, UT_test_textedit_findKeywordForward_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - textCursor.movePosition(QTextCursor::PreviousWord, QTextCursor::KeepAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - bool bRet = pWindow->currentWrapper()->textEditor()->findKeywordForward(QString("Helle")); - - ASSERT_TRUE(bRet == false); - pWindow->deleteLater(); -} - -//findKeywordForward 002 -TEST(UT_test_textedit_findKeywordForward, UT_test_textedit_findKeywordForward_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - bool bRet = pWindow->currentWrapper()->textEditor()->findKeywordForward(QString("Helle")); - - ASSERT_TRUE(bRet == false); - pWindow->deleteLater(); -} - -//removeKeywords -TEST(UT_test_textedit_removeKeywords, UT_test_textedit_removeKeywords_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->removeKeywords(); - - ASSERT_TRUE(pWindow->currentWrapper()->textEditor()->m_findMatchSelections.isEmpty()); - pWindow->deleteLater(); -} - -//highlightKeyword -TEST(UT_test_textedit_highlightKeyword, UT_test_textedit_highlightKeyword_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - bool bRet = pWindow->currentWrapper()->textEditor()->highlightKeyword(QString("world"), 0); - - ASSERT_TRUE(bRet == true); - pWindow->deleteLater(); -} - -//highlightKeyword case sensitive -TEST(UT_test_textedit_highlightKeyword, UT_test_textedit_highlightKeyword_CaseSensitive) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Hello world\nHello world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - bool bRet = pWindow->currentWrapper()->textEditor()->highlightKeyword(QString("World"), 0); - ASSERT_TRUE(bRet); - - bRet = pWindow->currentWrapper()->textEditor()->highlightKeyword(QString("hello"), 0); - ASSERT_TRUE(bRet); - - bRet = pWindow->currentWrapper()->textEditor()->highlightKeyword(QString("World"), 0, Qt::CaseSensitive); - ASSERT_FALSE(bRet); - - pWindow->deleteLater(); -} - -//highlightKeywordInView -TEST(UT_test_textedit_highlightKeywordInView, UT_test_textedit_highlightKeywordInView_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - bool bRet = pWindow->currentWrapper()->textEditor()->highlightKeywordInView(QString("world")); - - ASSERT_TRUE(bRet == true); - pWindow->deleteLater(); -} - -//clearFindMatchSelections -TEST(UT_test_textedit_clearFindMatchSelections, UT_test_textedit_clearFindMatchSelections_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->clearFindMatchSelections(); - - ASSERT_TRUE(pWindow->currentWrapper()->textEditor()->m_findMatchSelections.isEmpty()); - pWindow->deleteLater(); -} - -//updateCursorKeywordSelection -TEST(UT_test_textedit_updateCursorKeywordSelection, UT_test_textedit_updateCursorKeywordSelection_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - textCursor.movePosition(QTextCursor::StartOfBlock, QTextCursor::MoveAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - pWindow->currentWrapper()->textEditor()->updateCursorKeywordSelection(QString(), true); - - ASSERT_TRUE(pWindow->currentWrapper()->textEditor()->m_findMatchSelections.isEmpty()); - pWindow->deleteLater(); -} - -//updateHighlightLineSelection -TEST(UT_test_textedit_updateHighlightLineSelection, UT_test_textedit_updateHighlightLineSelection_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->m_gestureAction = TextEdit::GA_slide; - pWindow->currentWrapper()->textEditor()->updateHighlightLineSelection(); - - ASSERT_TRUE(pWindow->currentWrapper()->textEditor()->m_findMatchSelections.isEmpty()); - pWindow->deleteLater(); -} - -//updateKeywordSelections 001 -TEST(UT_test_textedit_updateKeywordSelections, UT_test_textedit_updateKeywordSelections_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - QTextCharFormat charFormat; - charFormat.setBackground(QColor("red")); - QTextEdit::ExtraSelection extraSelection; - extraSelection.format = charFormat; - QList listExtraSelection; - listExtraSelection.append(extraSelection); - bool bRet = pWindow->currentWrapper()->textEditor()->updateKeywordSelections(QString("smile"), charFormat, listExtraSelection); - ASSERT_TRUE(bRet == false); - - pWindow->currentWrapper()->textEditor()->defaultCaseSensitive = Qt::CaseSensitive; - bRet = pWindow->currentWrapper()->textEditor()->updateKeywordSelections(QString("World"), charFormat, listExtraSelection); - ASSERT_TRUE(bRet == false); - - pWindow->deleteLater(); -} - -//updateKeywordSelections 002 -TEST(UT_test_textedit_updateKeywordSelections, UT_test_textedit_updateKeywordSelections_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - QTextCharFormat charFormat; - charFormat.setBackground(QColor("red")); - QTextEdit::ExtraSelection extraSelection; - extraSelection.format = charFormat; - QList listExtraSelection; - listExtraSelection.append(extraSelection); - bool bRet = pWindow->currentWrapper()->textEditor()->updateKeywordSelections(QString("world"), charFormat, listExtraSelection); - ASSERT_TRUE(bRet == true); - - bRet = pWindow->currentWrapper()->textEditor()->updateKeywordSelections(QString("World"), charFormat, listExtraSelection); - ASSERT_TRUE(bRet == true); - - pWindow->deleteLater(); -} - -//updateKeywordSelections 003 -TEST(UT_test_textedit_updateKeywordSelections, UT_test_textedit_updateKeywordSelections_003) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - QTextCharFormat charFormat; - charFormat.setBackground(QColor("red")); - QTextEdit::ExtraSelection extraSelection; - extraSelection.format = charFormat; - QList listExtraSelection; - listExtraSelection.append(extraSelection); - bool bRet = pWindow->currentWrapper()->textEditor()->updateKeywordSelections(QString(), charFormat, listExtraSelection); - - ASSERT_TRUE(bRet == false); - pWindow->deleteLater(); -} - -//updateKeywordSelectionsInView 001 -TEST(UT_test_textedit_updateKeywordSelectionsInView, UT_test_textedit_updateKeywordSelectionsInView_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("H\ne\nl\nl\ne\n w\no\nr\nl\nd\nH\ne\nl\nl\ne\n w\no\nr\nl\nd\n" - "H\ne\nl\nl\ne\n w\no\nr\nl\nd\nH\ne\nl\nl\ne\n w\no\nr\nl\nd\n" - "H\ne\nl\nl\ne\n w\no\nr\nl\nd\nH\ne\nl\nl\ne\n w\no\nr\nl\nd\n"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - QTextCharFormat charFormat; - charFormat.setBackground(QColor("red")); - QTextEdit::ExtraSelection extraSelection; - extraSelection.format = charFormat; - QList listExtraSelection; - listExtraSelection.append(extraSelection); - bool bRet = pWindow->currentWrapper()->textEditor()->updateKeywordSelectionsInView(QString("smile"), charFormat, &listExtraSelection); - - ASSERT_TRUE(bRet == false); - pWindow->deleteLater(); -} - -//updateKeywordSelectionsInView 002 -TEST(UT_test_textedit_updateKeywordSelectionsInView, UT_test_textedit_updateKeywordSelectionsInView_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - QTextCharFormat charFormat; - charFormat.setBackground(QColor("red")); - QTextEdit::ExtraSelection extraSelection; - extraSelection.format = charFormat; - QList listExtraSelection; - listExtraSelection.append(extraSelection); - bool bRet = pWindow->currentWrapper()->textEditor()->updateKeywordSelectionsInView(QString("smile"), charFormat, &listExtraSelection); - - ASSERT_TRUE(bRet == false); - pWindow->deleteLater(); -} - -//updateKeywordSelectionsInView 003 -TEST(UT_test_textedit_updateKeywordSelectionsInView, UT_test_textedit_updateKeywordSelectionsInView_003) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("H\ne\nl\nl\ne\n w\no\nr\nl\nd\nH\ne\nl\nl\ne\n w\no\nr\nl\nd\n" - "H\ne\nl\nl\ne\n w\no\nr\nl\nd\nH\ne\nl\nl\ne\n w\no\nr\nl\nd\n" - "H\ne\nl\nl\ne\n w\no\nr\nl\nd\nH\ne\nl\nl\ne\n w\no\nr\nl\nd\n" - "H\ne\nl\nl\ne\n w\no\nr\nl\nd\nH\ne\nl\nl\ne\n w\no\nr\nl\nd\n" - "H\ne\nl\nl\ne\n w\no\nr\nl\nd\nH\ne\nl\nl\ne\n w\no\nr\nl\nd\n"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - textCursor.movePosition(QTextCursor::Start, QTextCursor::MoveAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - QTextCharFormat charFormat; - charFormat.setBackground(QColor("red")); - QTextEdit::ExtraSelection extraSelection; - extraSelection.format = charFormat; - QList listExtraSelection; - listExtraSelection.append(extraSelection); - bool bRet = pWindow->currentWrapper()->textEditor()->updateKeywordSelectionsInView(QString("n"), charFormat, &listExtraSelection); - - ASSERT_TRUE(bRet == false); - pWindow->deleteLater(); -} - -//updateKeywordSelectionsInView 004 -TEST(UT_test_textedit_updateKeywordSelectionsInView, UT_test_textedit_updateKeywordSelectionsInView_004) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - textCursor.movePosition(QTextCursor::Start, QTextCursor::MoveAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - QTextCharFormat charFormat; - charFormat.setBackground(QColor("red")); - QTextEdit::ExtraSelection extraSelection; - extraSelection.format = charFormat; - QList listExtraSelection; - listExtraSelection.append(extraSelection); - bool bRet = pWindow->currentWrapper()->textEditor()->updateKeywordSelectionsInView(QString(), charFormat, &listExtraSelection); - - ASSERT_TRUE(bRet == false); - pWindow->deleteLater(); -} - -//searchKeywordSeletion 001 -TEST(UT_test_textedit_searchKeywordSeletion, UT_test_textedit_searchKeywordSeletion_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - textCursor.movePosition(QTextCursor::Start, QTextCursor::MoveAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - bool bRet = pWindow->currentWrapper()->textEditor()->searchKeywordSeletion(QString(), textCursor, true); - - ASSERT_TRUE(bRet == false); - pWindow->deleteLater(); -} - -//searchKeywordSeletion 002 -TEST(UT_test_textedit_searchKeywordSeletion, UT_test_textedit_searchKeywordSeletion_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - textCursor.movePosition(QTextCursor::Start, QTextCursor::MoveAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - bool bRet = pWindow->currentWrapper()->textEditor()->searchKeywordSeletion(QString("world"), textCursor, true); - - ASSERT_TRUE(bRet == true); - pWindow->deleteLater(); -} - -//searchKeywordSeletion 003 -TEST(UT_test_textedit_searchKeywordSeletion, UT_test_textedit_searchKeywordSeletion_003) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - bool bRet = pWindow->currentWrapper()->textEditor()->searchKeywordSeletion(QString("world"), textCursor, false); - - ASSERT_TRUE(bRet == true); - pWindow->deleteLater(); -} - -//renderAllSelections -TEST(UT_test_textedit_renderAllSelections, UT_test_textedit_renderAllSelections_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->isMarkCurrentLine(true, QString("red")); - pWindow->currentWrapper()->textEditor()->markKeywordInView(QString("world"), QString("red")); - pWindow->currentWrapper()->textEditor()->m_HightlightYes = true; - pWindow->currentWrapper()->textEditor()->renderAllSelections(); - - ASSERT_TRUE(!pWindow->currentWrapper()->textEditor()->m_mapKeywordMarkSelections.isEmpty()); - pWindow->deleteLater(); -} - -//clearMarkOperationForCursor -TEST(UT_test_textedit_clearMarkOperationForCursor, UT_test_textedit_clearMarkOperationForCursor_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - textCursor.movePosition(QTextCursor::Start, QTextCursor::KeepAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - pWindow->currentWrapper()->textEditor()->isMarkAllLine(true, QString("red")); - QTextCursor textCursorTemp = pWindow->currentWrapper()->textEditor()->m_markOperations.at(0).first.cursor; - bool bRet = pWindow->currentWrapper()->textEditor()->clearMarkOperationForCursor(textCursorTemp); - - ASSERT_TRUE(bRet == true); - pWindow->deleteLater(); -} - -//clearMarksForTextCursor 001 -TEST(UT_test_textedit_clearMarksForTextCursor, UT_test_textedit_clearMarksForTextCursor_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - textCursor.movePosition(QTextCursor::Start, QTextCursor::KeepAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - pWindow->currentWrapper()->textEditor()->isMarkCurrentLine(true, QString("red")); - bool bRet = pWindow->currentWrapper()->textEditor()->clearMarksForTextCursor(); - - ASSERT_TRUE(bRet == true); - pWindow->deleteLater(); -} - -//clearMarksForTextCursor 002 -TEST(UT_test_textedit_clearMarksForTextCursor, UT_test_textedit_clearMarksForTextCursor_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - textCursor.movePosition(QTextCursor::Start, QTextCursor::MoveAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - pWindow->currentWrapper()->textEditor()->isMarkCurrentLine(true, QString("red")); - bool bRet = pWindow->currentWrapper()->textEditor()->clearMarksForTextCursor(); - - ASSERT_TRUE(bRet == true); - pWindow->deleteLater(); -} - -//markAllKeywordInView 001 -TEST(UT_test_textedit_clearMarksForTextCursor, UT_test_textedit_markAllKeywordInView_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->markAllKeywordInView(); - - ASSERT_TRUE(pWindow->currentWrapper()->textEditor()->m_markOperations.isEmpty()); - pWindow->deleteLater(); -} - -//markAllKeywordInView 002 -TEST(UT_test_textedit_clearMarksForTextCursor, UT_test_textedit_markAllKeywordInView_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->isMarkCurrentLine(true, QString("red")); - pWindow->currentWrapper()->textEditor()->m_markOperations.begin()->first.type = TextEdit::MarkAllMatch; - pWindow->currentWrapper()->textEditor()->markAllKeywordInView(); - - ASSERT_TRUE(!pWindow->currentWrapper()->textEditor()->m_markOperations.isEmpty()); - pWindow->deleteLater(); -} - -//markAllKeywordInView 003 -TEST(UT_test_textedit_clearMarksForTextCursor, UT_test_textedit_markAllKeywordInView_003) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->isMarkCurrentLine(true, QString("red")); - pWindow->currentWrapper()->textEditor()->m_markOperations.begin()->first.type = TextEdit::MarkAll; - pWindow->currentWrapper()->textEditor()->markAllKeywordInView(); - - ASSERT_TRUE(!pWindow->currentWrapper()->textEditor()->m_markOperations.isEmpty()); - pWindow->deleteLater(); -} - -//markKeywordInView 001 -TEST(UT_test_textedit_markKeywordInView, UT_test_textedit_markKeywordInView_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - bool bRet = pWindow->currentWrapper()->textEditor()->markKeywordInView(QString(), QString("red")); - - ASSERT_TRUE(bRet == false); - pWindow->deleteLater(); -} - -//markKeywordInView 002 -TEST(UT_test_textedit_markKeywordInView, UT_test_textedit_markKeywordInView_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - bool bRet = pWindow->currentWrapper()->textEditor()->markKeywordInView(QString("world"), QString("red")); - - ASSERT_TRUE(bRet == true); - pWindow->deleteLater(); -} - -//markAllInView 001 -TEST(UT_test_textedit_markAllInView, UT_test_textedit_markAllInView_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->markAllInView(QString("red")); - - ASSERT_TRUE(!pWindow->currentWrapper()->textEditor()->m_mapKeywordMarkSelections.isEmpty()); - pWindow->deleteLater(); -} - -//toggleMarkSelections 001 -TEST(UT_test_textedit_toggleMarkSelections, UT_test_textedit_toggleMarkSelections_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->toggleMarkSelections(); - - ASSERT_TRUE(!pWindow->currentWrapper()->textEditor()->m_markOperations.isEmpty()); - pWindow->deleteLater(); -} - -//updateMarkAllSelectColor 001 -TEST(UT_test_textedit_updateMarkAllSelectColor, UT_test_textedit_updateMarkAllSelectColor_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->updateMarkAllSelectColor(); - - ASSERT_TRUE(pWindow->currentWrapper()->textEditor()->m_mapKeywordMarkSelections.isEmpty()); - pWindow->deleteLater(); -} - -// lineNumberAreaPaintEvent 001 -TEST(UT_test_textedit_lineNumberAreaPaintEvent, UT_test_textedit_lineNumberAreaPaintEvent_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("H\ne\nl\nl\ne\n w\no\nr\nl\nd\nH\ne\nl\nl\ne\n w\no\nr\nl\nd\n" - "H\ne\nl\nl\ne\n w\no\nr\nl\nd\nH\ne\nl\nl\ne\n w\no\nr\nl\nd\n" - "H\ne\nl\nl\ne\n w\no\nr\nl\nd\nH\ne\nl\nl\ne\n w\no\nr\nl\nd\n" - "H\ne\nl\nl\ne\n w\no\nr\nl\nd\nH\ne\nl\nl\ne\n w\no\nr\nl\nd\n" - "H\ne\nl\nl\ne\n w\no\nr\nl\nd\nH\ne\nl\nl\ne\n w\no\nr\nl\nd\n"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - DGuiApplicationHelper::instance()->setPaletteType(DGuiApplicationHelper::ColorType::DarkType); - // 测试环境未安装 deepin_dark.theme / deepin.theme,主题加载失败使 m_lineNumbersColor - // 为无效 QColor,QColor::setAlphaF 对无效颜色是空操作,导致 alphaF() 不为 0.2。 - // 这里先置为有效颜色,确保 lineNumberAreaPaintEvent 暗色分支的 setAlphaF(0.2) 生效, - // 从而只验证绘制事件本身的分支逻辑,不依赖主题文件是否安装。 - pWindow->currentWrapper()->textEditor()->m_lineNumbersColor = QColor(Qt::gray); - QPaintEvent *pPaintEvent; - pWindow->currentWrapper()->textEditor()->lineNumberAreaPaintEvent(pPaintEvent); - // Qt6 中 QColor::alphaF() 返回 float(Qt5 返回 qreal/double),与双精度字面量 0.2 比较 - // 会因 float↔double 精度差异恒为 false。改用 float 字面量 0.2f 比较。 - ASSERT_TRUE(pWindow->currentWrapper()->textEditor()->m_lineNumbersColor.alphaF() == 0.2f); - pWindow->deleteLater(); -} - -//lineNumberAreaPaintEvent 002 -TEST(UT_test_textedit_lineNumberAreaPaintEvent, UT_test_textedit_lineNumberAreaPaintEvent_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - DGuiApplicationHelper::instance()->setPaletteType(DGuiApplicationHelper::ColorType::LightType); - QPaintEvent *pPaintEvent; - pWindow->currentWrapper()->textEditor()->lineNumberAreaPaintEvent(pPaintEvent); - - EXPECT_NE(pWindow->currentWrapper()->textEditor()->m_pLeftAreaWidget->m_pLineNumberArea, nullptr); - pWindow->deleteLater(); -} - -//codeFLodAreaPaintEvent 001 -TEST(UT_test_textedit_codeFLodAreaPaintEvent, UT_test_textedit_codeFLodAreaPaintEvent_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("{\n{\n}\n}"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - DGuiApplicationHelper::instance()->setPaletteType(DGuiApplicationHelper::ColorType::DarkType); - QPaintEvent *pPaintEvent; - pWindow->currentWrapper()->textEditor()->codeFLodAreaPaintEvent(pPaintEvent); - - ASSERT_TRUE(!pWindow->currentWrapper()->textEditor()->m_listFlodIconPos.isEmpty()); - pWindow->deleteLater(); -} - -//codeFLodAreaPaintEvent 002 -TEST(UT_test_textedit_codeFLodAreaPaintEvent, UT_test_textedit_codeFLodAreaPaintEvent_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("{\n{\n}\n}"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - DGuiApplicationHelper::instance()->setPaletteType(DGuiApplicationHelper::ColorType::LightType); - QPaintEvent *pPaintEvent; - pWindow->currentWrapper()->textEditor()->codeFLodAreaPaintEvent(pPaintEvent); - - ASSERT_TRUE(!pWindow->currentWrapper()->textEditor()->m_listFlodIconPos.isEmpty()); - pWindow->deleteLater(); -} - -//setBookmarkFlagVisable 001 -TEST(UT_test_textedit_setBookmarkFlagVisable, UT_test_textedit_setBookmarkFlagVisable_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->setBookmarkFlagVisable(true, false); - - ASSERT_TRUE(pWindow->currentWrapper()->textEditor()->m_pIsShowBookmarkArea == true); - pWindow->deleteLater(); -} - -//setBookmarkFlagVisable 002 -TEST(UT_test_textedit_setBookmarkFlagVisable, UT_test_textedit_setBookmarkFlagVisable_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->setBookmarkFlagVisable(false, false); - - ASSERT_TRUE(pWindow->currentWrapper()->textEditor()->m_pIsShowBookmarkArea == false); - pWindow->deleteLater(); -} - -//setCodeFlodFlagVisable 001 -TEST(UT_test_textedit_setCodeFlodFlagVisable, UT_test_textedit_setCodeFlodFlagVisable_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->setCodeFlodFlagVisable(true, false); - - ASSERT_TRUE(pWindow->currentWrapper()->textEditor()->m_pIsShowCodeFoldArea == true); - pWindow->deleteLater(); -} - -//setCodeFlodFlagVisable 002 -TEST(UT_test_textedit_setCodeFlodFlagVisable, UT_test_textedit_setCodeFlodFlagVisable_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->setCodeFlodFlagVisable(false, false); - - ASSERT_TRUE(pWindow->currentWrapper()->textEditor()->m_pIsShowCodeFoldArea == false); - pWindow->deleteLater(); -} - -//setTheme 001 -TEST(UT_test_textedit_setTheme, UT_test_textedit_setTheme_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - QString strThemeFilePath("./../themes/deepin.theme"); - pWindow->currentWrapper()->textEditor()->setTheme(strThemeFilePath); - QString strBgColorName(pWindow->currentWrapper()->textEditor()->m_backgroundColor.name()); - - ASSERT_TRUE(!strBgColorName.compare(QString("#000000"))); - pWindow->deleteLater(); -} - -//void removeHighlightWordUnderCursor() 001 -TEST(UT_test_textedit_removeHighlightWordUnderCursor, UT_test_textedit_removeHighlightWordUnderCursor_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->removeHighlightWordUnderCursor(); - - ASSERT_TRUE(pWindow->currentWrapper()->textEditor()->m_nBookMarkHoverLine == -1); - pWindow->deleteLater(); -} - -//void setSettings(Settings *settings) 001 -TEST(UT_test_textedit_setSettings, UT_test_textedit_setSettings_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->setSettings(pWindow->currentWrapper()->textEditor()->m_settings); - - ASSERT_TRUE(pWindow->currentWrapper()->textEditor()->m_settings != nullptr); - pWindow->deleteLater(); -} - -//void copySelectedText() 001 -TEST(UT_test_textedit_copySelectedText, UT_test_textedit_copySelectedText_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - textCursor.movePosition(QTextCursor::StartOfBlock, QTextCursor::KeepAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - QTextEdit::ExtraSelection extraSelection; - extraSelection.cursor = textCursor; - pWindow->currentWrapper()->textEditor()->m_altModSelections << extraSelection; - pWindow->currentWrapper()->textEditor()->m_bIsAltMod = true; - QClipboard *pClipboard = QApplication::clipboard(); - pClipboard->clear(); - pWindow->currentWrapper()->textEditor()->copySelectedText(); - - QString strRet(pClipboard->text()); - ASSERT_TRUE(!strRet.compare(QString("Helle world"))); - pWindow->deleteLater(); -} - -//void copySelectedText() 002 -TEST(UT_test_textedit_copySelectedText, UT_test_textedit_copySelectedText_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - textCursor.movePosition(QTextCursor::StartOfBlock, QTextCursor::KeepAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - QClipboard *pClipboard = QApplication::clipboard(); - pClipboard->clear(); - pWindow->currentWrapper()->textEditor()->copySelectedText(); - - QString strRet(pClipboard->text()); - ASSERT_TRUE(!strRet.compare(QString("Helle world"))); - pWindow->deleteLater(); -} - -//void copySelectedText() 003 -TEST(UT_test_textedit_copySelectedText, UT_test_textedit_copySelectedText_003) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - QClipboard *pClipboard = QApplication::clipboard(); - pClipboard->clear(); - pWindow->currentWrapper()->textEditor()->copySelectedText(); - - QString strRet(pClipboard->text()); - ASSERT_TRUE(strRet.isEmpty()); - pWindow->deleteLater(); -} - -//void cutSelectedText() 001 -TEST(UT_test_textedit_cutSelectedText, UT_test_textedit_cutSelectedText_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - textCursor.movePosition(QTextCursor::StartOfBlock, QTextCursor::KeepAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - QClipboard *pClipboard = QApplication::clipboard(); - pClipboard->clear(); - pWindow->currentWrapper()->textEditor()->cutSelectedText(); - - QString strRet1(pClipboard->text()); - QString strRet2(pWindow->currentWrapper()->textEditor()->toPlainText()); - ASSERT_TRUE(!strRet1.compare(QString("Helle world")) && !strRet2.compare(QString("Helle world\n"))); - pWindow->deleteLater(); -} - -TEST(UT_test_textedit_cutSelectedText, cutSelectedText_withMultiByteText_passed) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - // 多字节字符编码 CJK - // 𢝐𢝑𢝒𢝓𢝔𢝕𢝖𢝗𢝘𢝙\n𢝚𢝛𢝜𢝝𢝞𢝟𢝠𢝡𢝢𢝣 - QString strMsg("\360\242\235\220\360\242\235\221\360\242\235\222\360\242\235\223\360\242\235\224" - "\360\242\235\225\360\242\235\226\360\242\235\227\360\242\235\230\360\242\235\231\n" - "\360\242\235\232\360\242\235\233\360\242\235\234\360\242\235\235\360\242\235\236" - "\360\242\235\237\360\242\235\240\360\242\235\241\360\242\235\242\360\242\235\243"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - textCursor.setPosition(0); - textCursor.setPosition(6, QTextCursor::KeepAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - QClipboard *pClipboard = QApplication::clipboard(); - pClipboard->clear(); - pWindow->currentWrapper()->textEditor()->cutSelectedText(); - - QString strRet1(pClipboard->text()); - QString strRet2(pWindow->currentWrapper()->textEditor()->toPlainText()); - EXPECT_EQ(strRet1, strMsg.left(6)); - EXPECT_EQ(strRet2, strMsg.mid(6)); - pWindow->deleteLater(); -} - -//void pasteText() 001 -TEST(UT_test_textedit_pasteText, UT_test_textedit_pasteText_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - textCursor.movePosition(QTextCursor::StartOfBlock, QTextCursor::KeepAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - pWindow->currentWrapper()->textEditor()->copySelectedText(); - textCursor.movePosition(QTextCursor::EndOfBlock, QTextCursor::MoveAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - pWindow->currentWrapper()->textEditor()->pasteText(); - QString strRet(pWindow->currentWrapper()->textEditor()->textCursor().block().text()); - - ASSERT_TRUE(!strRet.compare(QString("Helle worldHelle world"))); - pWindow->deleteLater(); -} - -//void setMark() 001 -TEST(UT_test_textedit_setMark, UT_test_textedit_setMark_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - textCursor.movePosition(QTextCursor::StartOfBlock, QTextCursor::KeepAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - pWindow->currentWrapper()->textEditor()->m_cursorMark = true; - pWindow->currentWrapper()->textEditor()->setMark(); - bool bRet = pWindow->currentWrapper()->textEditor()->textCursor().hasSelection(); - - ASSERT_TRUE(bRet == false); - pWindow->deleteLater(); -} - -//void setMark() 002 -TEST(UT_test_textedit_setMark, UT_test_textedit_setMark_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->m_cursorMark = true; - pWindow->currentWrapper()->textEditor()->setMark(); - - bool bRet = pWindow->currentWrapper()->textEditor()->m_cursorMark; - ASSERT_TRUE(bRet == false); - pWindow->deleteLater(); -} - -//void setMark() 003 -TEST(UT_test_textedit_setMark, UT_test_textedit_setMark_003) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->m_cursorMark = false; - pWindow->currentWrapper()->textEditor()->setMark(); - - bool bRet = pWindow->currentWrapper()->textEditor()->m_cursorMark; - ASSERT_TRUE(bRet == true); - pWindow->deleteLater(); -} - -//void unsetMark() 001 -TEST(UT_test_textedit_unsetMark, UT_test_textedit_unsetMark_003) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->m_cursorMark = true; - pWindow->currentWrapper()->textEditor()->unsetMark(); - - bool bRet = pWindow->currentWrapper()->textEditor()->m_cursorMark; - ASSERT_TRUE(bRet == false); - pWindow->deleteLater(); -} - -//bool tryUnsetMark() 001 -TEST(UT_test_textedit_tryUnsetMark, UT_test_textedit_tryUnsetMark_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->m_cursorMark = true; - bool bRet = pWindow->currentWrapper()->textEditor()->tryUnsetMark(); - - ASSERT_TRUE(bRet == true); - pWindow->deleteLater(); -} - -//bool tryUnsetMark() 002 -TEST(UT_test_textedit_tryUnsetMark, UT_test_textedit_tryUnsetMark_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->m_cursorMark = false; - bool bRet = pWindow->currentWrapper()->textEditor()->tryUnsetMark(); - - ASSERT_TRUE(bRet == false); - pWindow->deleteLater(); -} - -//void exchangeMark() 001 -TEST(UT_test_textedit_exchangeMark, UT_test_textedit_exchangeMark_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - textCursor.movePosition(QTextCursor::StartOfBlock, QTextCursor::KeepAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - int iRetBefore = textCursor.position(); - int iSelectStar = textCursor.selectionStart(); - int iSelectEnd = textCursor.selectionEnd(); - pWindow->currentWrapper()->textEditor()->exchangeMark(); - int iRetAfter = textCursor.position(); - - ASSERT_TRUE(iRetAfter == iRetBefore); - pWindow->deleteLater(); -} - -//void exchangeMark() 002 -TEST(UT_test_textedit_exchangeMark, UT_test_textedit_exchangeMark_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - textCursor.movePosition(QTextCursor::StartOfBlock, QTextCursor::MoveAnchor); - textCursor.movePosition(QTextCursor::EndOfBlock, QTextCursor::KeepAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - int iRetBefore = textCursor.position(); - pWindow->currentWrapper()->textEditor()->exchangeMark(); - int iRetAfter = textCursor.position(); - - ASSERT_TRUE(iRetAfter == iRetBefore); - pWindow->deleteLater(); -} - -//void saveMarkStatus() 001 -TEST(UT_test_textedit_saveMarkStatus, UT_test_textedit_saveMarkStatus_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - int iRet1 = pWindow->currentWrapper()->textEditor()->m_cursorMarkPosition; - pWindow->currentWrapper()->textEditor()->setMark(); - pWindow->currentWrapper()->textEditor()->saveMarkStatus(); - - int iRet = pWindow->currentWrapper()->textEditor()->m_cursorMarkPosition; - ASSERT_TRUE(iRet == 23); - pWindow->deleteLater(); -} - -//void restoreMarkStatus() 001 -TEST(UT_test_textedit_restoreMarkStatus, UT_test_textedit_restoreMarkStatus_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->m_cursorMarkStatus = true; - pWindow->currentWrapper()->textEditor()->restoreMarkStatus(); - - bool bRet = pWindow->currentWrapper()->textEditor()->textCursor().hasSelection(); - ASSERT_TRUE(bRet == true); - pWindow->deleteLater(); -} - -QString UT_test_textedit_completionWord_001_stub() -{ - return QString("wo"); -} - -//void completionWord(QString word) 001 -TEST(UT_test_textedit_completionWord, UT_test_textedit_completionWord_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - Stub stub_getWordAtCursor; - stub_getWordAtCursor.set(ADDR(TextEdit, getWordAtCursor), UT_test_textedit_completionWord_001_stub); - pWindow->currentWrapper()->textEditor()->completionWord("world"); - - QString strRet(pWindow->currentWrapper()->textEditor()->textCursor().block().text()); - ASSERT_TRUE(!strRet.compare(QString("Helle worldrld"))); - pWindow->deleteLater(); -} - -int UT_test_textedit_getWordAtMouse_001_stub() -{ - return 0; -} - -//QString getWordAtMouse() 001 -TEST(UT_test_textedit_getWordAtMouse, UT_test_textedit_getWordAtMouse_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - Stub stub_characterCount; - stub_characterCount.set(ADDR(TextEdit, characterCount), UT_test_textedit_getWordAtMouse_001_stub); - QString strRet = pWindow->currentWrapper()->textEditor()->getWordAtMouse(); - - ASSERT_TRUE(strRet.isEmpty()); - pWindow->deleteLater(); -} - -//QString getWordAtMouse() 002 -TEST(UT_test_textedit_getWordAtMouse, UT_test_textedit_getWordAtMouse_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - QString strRet = pWindow->currentWrapper()->textEditor()->getWordAtMouse(); - - ASSERT_TRUE(strRet.isEmpty()); - pWindow->deleteLater(); -} - -//QString getWordAtCursor() 001 -TEST(UT_test_textedit_getWordAtCursore, UT_test_textedit_getWordAtCursor_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - Stub stub_characterCount; - stub_characterCount.set(ADDR(TextEdit, characterCount), UT_test_textedit_getWordAtMouse_001_stub); - QString strRet = pWindow->currentWrapper()->textEditor()->getWordAtCursor(); - - ASSERT_TRUE(strRet.isEmpty()); - pWindow->deleteLater(); -} - -//QString getWordAtCursor() 002 -TEST(UT_test_textedit_getWordAtCursore, UT_test_textedit_getWordAtCursor_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle wor-ld"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - QString strRet = pWindow->currentWrapper()->textEditor()->getWordAtCursor(); - - ASSERT_TRUE(!strRet.compare(QString("ld"))); - pWindow->deleteLater(); -} - -//void toggleReadOnlyMode() 001 -TEST(UT_test_textedit_toggleReadOnlyMode, UT_test_textedit_toggleReadOnlyMode_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->m_readOnlyMode = true; - pWindow->currentWrapper()->textEditor()->m_cursorMode = TextEdit::Overwrite; - pWindow->currentWrapper()->textEditor()->toggleReadOnlyMode(); - - bool bRet = pWindow->currentWrapper()->textEditor()->isReadOnly(); - ASSERT_TRUE(bRet == false); - pWindow->deleteLater(); -} - -//void toggleReadOnlyMode() 002 -TEST(UT_test_textedit_toggleReadOnlyMode, UT_test_textedit_toggleReadOnlyMode_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->m_readOnlyMode = true; - pWindow->currentWrapper()->textEditor()->m_cursorMode = TextEdit::Readonly; - pWindow->currentWrapper()->textEditor()->toggleReadOnlyMode(); - - bool bRet = pWindow->currentWrapper()->textEditor()->isReadOnly(); - ASSERT_TRUE(bRet == false); - pWindow->deleteLater(); -} - -//void toggleReadOnlyMode() 003 -TEST(UT_test_textedit_toggleReadOnlyMode, UT_test_textedit_toggleReadOnlyMode_003) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->m_readOnlyMode = false; - pWindow->currentWrapper()->textEditor()->toggleReadOnlyMode(); - - bool bRet = pWindow->currentWrapper()->textEditor()->isReadOnly(); - ASSERT_TRUE(bRet == true); - pWindow->deleteLater(); -} - -//void toggleComment(bool bValue) 001 -TEST(UT_test_textedit_toggleComment, UT_test_textedit_toggleComment_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->m_readOnlyMode = true; - pWindow->currentWrapper()->textEditor()->toggleComment(true); - - bool bRet = pWindow->currentWrapper()->textEditor()->m_readOnlyMode; - ASSERT_TRUE(bRet == true); - pWindow->deleteLater(); -} - -bool UT_test_textedit_toggleComment_002_stub() -{ - return true; -} - -//void toggleComment(bool bValue) 002 -TEST(UT_test_textedit_toggleComment, UT_test_textedit_toggleComment_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - Stub stub_isValid; - stub_isValid.set(ADDR(Comment::CommentDefinition, isValid), UT_test_textedit_toggleComment_002_stub); - pWindow->currentWrapper()->textEditor()->m_readOnlyMode = false; - pWindow->currentWrapper()->textEditor()->toggleComment(true); - - bool bRet = pWindow->currentWrapper()->textEditor()->m_commentDefinition.isValid(); - ASSERT_TRUE(bRet == true); - pWindow->deleteLater(); -} - -bool UT_test_textedit_toggleComment_003_stub() -{ - return false; -} - -void UT_test_textedit_toggleComment_003_setComment_stub() -{ - return; -} - -//void toggleComment(bool bValue) 003 -TEST(UT_test_textedit_toggleComment, UT_test_textedit_toggleComment_003) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - Stub stub_isValid; - stub_isValid.set(ADDR(Comment::CommentDefinition, isValid), UT_test_textedit_toggleComment_002_stub); - Stub stub_isEmpty; - stub_isEmpty.set(ADDR(QString, isEmpty), UT_test_textedit_toggleComment_003_stub); - Stub stub_setComment; - stub_setComment.set(ADDR(TextEdit, setComment), UT_test_textedit_toggleComment_003_setComment_stub); - pWindow->currentWrapper()->textEditor()->m_readOnlyMode = false; - pWindow->currentWrapper()->textEditor()->m_commentDefinition.multiLineStart = QString("Helle \tworld\nHelle world"); - pWindow->currentWrapper()->textEditor()->m_commentDefinition.singleLine = QString("Helle \tworld\nHelle world"); - pWindow->currentWrapper()->textEditor()->toggleComment(true); - - bool bRet = pWindow->currentWrapper()->textEditor()->m_commentDefinition.isValid(); - ASSERT_TRUE(bRet == true); - pWindow->deleteLater(); -} - -void UT_test_textedit_toggleComment_004_removeComment_stub() -{ - return; -} - -//void toggleComment(bool bValue) 004 -TEST(UT_test_textedit_toggleComment, UT_test_textedit_toggleComment_004) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - Stub stub_isValid; - stub_isValid.set(ADDR(Comment::CommentDefinition, isValid), UT_test_textedit_toggleComment_002_stub); - Stub stub_isEmpty; - stub_isEmpty.set(ADDR(QString, isEmpty), UT_test_textedit_toggleComment_003_stub); - Stub stub_removeComment; - stub_removeComment.set(ADDR(TextEdit, removeComment), UT_test_textedit_toggleComment_004_removeComment_stub); - pWindow->currentWrapper()->textEditor()->m_readOnlyMode = false; - pWindow->currentWrapper()->textEditor()->m_commentDefinition.multiLineStart = QString("Helle \tworld\nHelle world"); - pWindow->currentWrapper()->textEditor()->m_commentDefinition.singleLine = QString("Helle \tworld\nHelle world"); - pWindow->currentWrapper()->textEditor()->toggleComment(false); - - bool bRet = pWindow->currentWrapper()->textEditor()->m_commentDefinition.isValid(); - ASSERT_TRUE(bRet == true); - pWindow->deleteLater(); -} - -int UT_test_textedit_getNextWordPosition_001_characterCount_stub() -{ - return 0; -} - -//getNextWordPosition 001 -TEST(UT_test_textedit_getNextWordPosition, UT_test_textedit_getNextWordPosition_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - Stub stub_characterCount; - stub_characterCount.set(ADDR(TextEdit, characterCount), UT_test_textedit_getNextWordPosition_001_characterCount_stub); - int iRet = pWindow->currentWrapper()->textEditor()->getNextWordPosition(textCursor, QTextCursor::MoveMode::MoveAnchor); - - ASSERT_TRUE(iRet == 0); - pWindow->deleteLater(); -} - -//getNextWordPosition 002 -TEST(UT_test_textedit_getNextWordPosition, UT_test_textedit_getNextWordPosition_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - textCursor.movePosition(QTextCursor::StartOfBlock, QTextCursor::MoveAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - int iRet = pWindow->currentWrapper()->textEditor()->getNextWordPosition(textCursor, QTextCursor::MoveMode::MoveAnchor); - - ASSERT_TRUE(iRet == 17); - pWindow->deleteLater(); -} - -int UT_test_textedit_getPrevWordPosition_001_characterCount_stub() -{ - return 0; -} - -//getPrevWordPosition 001 -TEST(UT_test_textedit_getPrevWordPosition, UT_test_textedit_getPrevWordPosition_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - Stub stub_characterCount; - stub_characterCount.set(ADDR(TextEdit, characterCount), UT_test_textedit_getPrevWordPosition_001_characterCount_stub); - int iRet = pWindow->currentWrapper()->textEditor()->getPrevWordPosition(textCursor, QTextCursor::MoveMode::MoveAnchor); - - ASSERT_TRUE(iRet == 0); - pWindow->deleteLater(); -} - -//getPrevWordPosition 002 -TEST(UT_test_textedit_getPrevWordPosition, UT_test_textedit_getPrevWordPosition_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - int iRet = pWindow->currentWrapper()->textEditor()->getPrevWordPosition(textCursor, QTextCursor::MoveMode::MoveAnchor); - - ASSERT_TRUE(iRet == 17); - pWindow->deleteLater(); -} - -//bool atWordSeparator(int position); -TEST(UT_test_textedit_atWordSeparator, UT_test_textedit_atWordSeparator_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - bool bRet = pWindow->currentWrapper()->textEditor()->atWordSeparator(10); - - ASSERT_TRUE(bRet == false); - pWindow->deleteLater(); -} - -//void showCursorBlink(); -TEST(UT_test_textedit_showCursorBlink, UT_test_textedit_showCursorBlink_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->showCursorBlink(); - int iRet = QApplication::cursorFlashTime(); - - ASSERT_TRUE(iRet == 1000); - pWindow->deleteLater(); -} - -//void hideCursorBlink(); -TEST(UT_test_textedit_hideCursorBlink, UT_test_textedit_hideCursorBlink_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->hideCursorBlink(); - int iRet = QApplication::cursorFlashTime(); - - ASSERT_TRUE(iRet == 0); - pWindow->deleteLater(); -} - -//void setReadOnlyPermission(bool permission); -TEST(UT_test_textedit_setReadOnlyPermission, UT_test_textedit_setReadOnlyPermission_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->setReadOnlyPermission(true); - bool bRet = pWindow->currentWrapper()->textEditor()->isReadOnly(); - - ASSERT_TRUE(bRet == true); - pWindow->deleteLater(); -} - -//void setReadOnlyPermission(bool permission); -TEST(UT_test_textedit_setReadOnlyPermission, UT_test_textedit_setReadOnlyPermission_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->m_readOnlyMode = false; - pWindow->currentWrapper()->textEditor()->setReadOnlyPermission(false); - bool bRet = pWindow->currentWrapper()->textEditor()->isReadOnly(); - - ASSERT_TRUE(bRet == false); - pWindow->deleteLater(); -} - -//void setReadOnlyPermission(bool permission); -TEST(UT_test_textedit_setReadOnlyPermission, UT_test_textedit_setReadOnlyPermission_003) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->m_readOnlyMode = true; - pWindow->currentWrapper()->textEditor()->setReadOnlyPermission(false); - bool bRet = pWindow->currentWrapper()->textEditor()->isReadOnly(); - - ASSERT_TRUE(bRet == true); - pWindow->deleteLater(); -} - -//bool getReadOnlyPermission(); -TEST(UT_test_textedit_getReadOnlyPermission, UT_test_textedit_getReadOnlyPermission_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - bool bRet = pWindow->currentWrapper()->textEditor()->getReadOnlyPermission(); - - ASSERT_TRUE(bRet == false); - pWindow->deleteLater(); -} - -//bool getReadOnlyMode(); -TEST(UT_test_textedit_getReadOnlyMode, UT_test_textedit_getReadOnlyMode_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - bool bRet = pWindow->currentWrapper()->textEditor()->getReadOnlyMode(); - - ASSERT_TRUE(bRet == false); - pWindow->deleteLater(); -} - -//void hideRightMenu(); -TEST(UT_test_textedit_hideRightMenu, UT_test_textedit_hideRightMenu_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Helle world\nHelle world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->hideRightMenu(); - bool bRet = pWindow->currentWrapper()->textEditor()->m_rightMenu->isHidden(); - - ASSERT_TRUE(bRet == true); - pWindow->deleteLater(); -} - -//void flodOrUnflodAllLevel(bool isFlod); -TEST(UT_test_textedit_flodOrUnflodAllLevel, UT_test_textedit_flodOrUnflodAllLevel_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("{\n{\n}\n}"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->flodOrUnflodAllLevel(true); - QTextOption::WrapMode eRet = pWindow->currentWrapper()->textEditor()->wordWrapMode(); - - ASSERT_TRUE(eRet == QTextOption::WrapMode::WrapAnywhere); - pWindow->deleteLater(); -} - -//void flodOrUnflodAllLevel(bool isFlod); -TEST(UT_test_textedit_flodOrUnflodAllLevel, UT_test_textedit_flodOrUnflodAllLevel_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("{\n{\n}\n}"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->flodOrUnflodAllLevel(true); - pWindow->currentWrapper()->textEditor()->flodOrUnflodAllLevel(false); - QTextOption::WrapMode eRet = pWindow->currentWrapper()->textEditor()->wordWrapMode(); - - ASSERT_TRUE(eRet == QTextOption::WrapMode::WrapAnywhere); - pWindow->deleteLater(); -} - -//void flodOrUnflodCurrentLevel(bool isFlod); -TEST(UT_test_textedit_flodOrUnflodCurrentLevel, UT_test_textedit_flodOrUnflodCurrentLevel_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("{\n{\n}\n}"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->flodOrUnflodCurrentLevel(true); - - ASSERT_TRUE(pWindow->currentWrapper()->textEditor()->m_pLeftAreaWidget != nullptr); - pWindow->deleteLater(); -} - -//void getHideRowContent -TEST(UT_test_textedit_getHideRowContent, UT_test_textedit_getHideRowContent_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("{\nHello world\n{\nHello world\n}\n}"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->getHideRowContent(0); - QString strRet(pWindow->currentWrapper()->textEditor()->m_foldCodeShow->m_pContentEdit->toPlainText()); - - ASSERT_TRUE(strRet.compare(QString("{\nHello world\n{\nHello world\n}\n}"))); - pWindow->deleteLater(); -} - -//void isNeedShowFoldIcon -TEST(UT_test_textedit_getHideRowContent, UT_test_textedit_isNeedShowFoldIcon_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("{Hello world}"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - QTextBlock textBlock = pWindow->currentWrapper()->textEditor()->textCursor().block(); - bool bRet = pWindow->currentWrapper()->textEditor()->isNeedShowFoldIcon(textBlock); - - ASSERT_TRUE(bRet == false); - pWindow->deleteLater(); -} - -//void isNeedShowFoldIcon -TEST(UT_test_textedit_getHideRowContent, UT_test_textedit_isNeedShowFoldIcon_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("{\nHello world}"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - textCursor.movePosition(QTextCursor::Start, QTextCursor::MoveAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - QTextBlock textBlock = pWindow->currentWrapper()->textEditor()->textCursor().block(); - bool bRet = pWindow->currentWrapper()->textEditor()->isNeedShowFoldIcon(textBlock); - - ASSERT_TRUE(bRet == true); - pWindow->deleteLater(); -} - -//int getHighLightRowContentLineNum -TEST(UT_test_textedit_getHighLightRowContentLineNum, UT_test_textedit_getHighLightRowContentLineNum_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("{Hello world}"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - int iRet = pWindow->currentWrapper()->textEditor()->getHighLightRowContentLineNum(0); - - ASSERT_TRUE(iRet == 0); - pWindow->deleteLater(); -} - -//int getHighLightRowContentLineNum -TEST(UT_test_textedit_getHighLightRowContentLineNum, UT_test_textedit_getHighLightRowContentLineNum_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("{\nHello world}"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - int iRet = pWindow->currentWrapper()->textEditor()->getHighLightRowContentLineNum(1); - - ASSERT_TRUE(iRet == 1); - pWindow->deleteLater(); -} - -//getHighLightRowContentLineNum -TEST(UT_test_textedit_getHighLightRowContentLineNum, UT_test_textedit_getHighLightRowContentLineNum_003) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("{\nHello world}}"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - int iRet = pWindow->currentWrapper()->textEditor()->getHighLightRowContentLineNum(1); - - ASSERT_TRUE(iRet == 1); - pWindow->deleteLater(); -} - -//paintCodeFlod -TEST(UT_test_textedit_paintCodeFlod, UT_test_textedit_paintCodeFlod_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("{\nHello world}}"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - QPainter painter(pWindow->currentWrapper()->textEditor()->m_pLeftAreaWidget->m_pFlodArea); - QRect rect(0, pWindow->currentWrapper()->textEditor()->cursorRect(textCursor).y(), 15, 15); - pWindow->currentWrapper()->textEditor()->paintCodeFlod(&painter, rect, true); - QPainter::RenderHints eRet = painter.renderHints(); - bool bRet = eRet.testFlag(QPainter::RenderHint::Antialiasing); - - ASSERT_TRUE(bRet == false); - pWindow->deleteLater(); -} - -//getBackColor -TEST(UT_test_textedit_getBackColor, UT_test_textedit_getBackColor_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("{\nHello world}}"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - QColor colorRet(pWindow->currentWrapper()->textEditor()->getBackColor()); - - ASSERT_TRUE(!colorRet.name().isEmpty()); - pWindow->deleteLater(); -} - -//updateLeftWidgetWidth -TEST(UT_test_textedit_updateLeftWidgetWidth, UT_test_textedit_updateLeftWidgetWidth_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Hello world\nHello world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->updateLeftWidgetWidth(20); - int iRet = pWindow->currentWrapper()->textEditor()->m_pLeftAreaWidget->m_pBookMarkArea->width(); - - ASSERT_TRUE(iRet == 20); - pWindow->deleteLater(); -} - -//lineNumberAreaWidth -TEST(UT_test_textedit_lineNumberAreaWidth, UT_test_textedit_lineNumberAreaWidth_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("H\ne\nl\nl\no\n w\no\nr\nl\nd\nH\ne\nl\nl\no\n w\no\nr\nl\nd\n"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - int iRet = pWindow->currentWrapper()->textEditor()->lineNumberAreaWidth(); - - QFontMetrics fm(pWindow->currentWrapper()->textEditor()->m_fontLineNumberArea); - int calcWitdh = fm.horizontalAdvance(QLatin1Char('9')) * 2; - // 与源码 lineNumberAreaWidth() 的返回值保持一致:return w > 15 ? w : 15; - // (最小宽度 15 的下限钳制自 2022 年起即存在)。否则当字体度量使原始宽度 < 15 - // (本机 advance('9')*2 == 14)时,iRet 被钳为 15 而 calcWitdh 仍为 14,断言失败。 - calcWitdh = calcWitdh > 15 ? calcWitdh : 15; - - EXPECT_EQ(iRet, calcWitdh); - pWindow->deleteLater(); -} - -//int getLinePosYByLineNum(int iLine); -TEST(UT_test_textedit_getLinePosYByLineNum, UT_test_textedit_getLinePosYByLineNum_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Hello world\nHello world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - int iRet = pWindow->currentWrapper()->textEditor()->getLinePosYByLineNum(0); - - ASSERT_TRUE(iRet == 4); - pWindow->deleteLater(); -} - -//bool ifHasHighlight(); -TEST(UT_test_textedit_ifHasHighlight, UT_test_textedit_ifHasHighlight_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Hello world\nHello world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - textCursor.movePosition(QTextCursor::StartOfBlock, QTextCursor::KeepAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - QTextCharFormat charFormat; - charFormat.setBackground(QColor("red")); - QTextEdit::ExtraSelection findExtraSelection; - findExtraSelection.cursor = textCursor; - findExtraSelection.format = charFormat; - pWindow->currentWrapper()->textEditor()->m_findHighlightSelection = findExtraSelection; - bool bRet = pWindow->currentWrapper()->textEditor()->ifHasHighlight(); - - ASSERT_TRUE(bRet == true); - pWindow->deleteLater(); -} - -//bool ifHasHighlight(); -TEST(UT_test_textedit_ifHasHighlight, UT_test_textedit_ifHasHighlight_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Hello world\nHello world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - bool bRet = pWindow->currentWrapper()->textEditor()->ifHasHighlight(); - - ASSERT_TRUE(bRet == false); - pWindow->deleteLater(); -} - -//bookMarkAreaPaintEvent -TEST(UT_test_textedit_bookMarkAreaPaintEvent, UT_test_textedit_bookMarkAreaPaintEvent_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Hello world\nHello world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - textCursor.movePosition(QTextCursor::Start, QTextCursor::MoveAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - DGuiApplicationHelper::instance()->setPaletteType(DGuiApplicationHelper::ColorType::DarkType); - pWindow->currentWrapper()->textEditor()->m_listBookmark.append(1); - pWindow->currentWrapper()->textEditor()->m_nBookMarkHoverLine = 2; - QPaintEvent *pPaintEvent; - pWindow->currentWrapper()->textEditor()->bookMarkAreaPaintEvent(pPaintEvent); - int iRet = pWindow->currentWrapper()->textEditor()->m_pLeftAreaWidget->m_pBookMarkArea->width(); - - ASSERT_TRUE(iRet == 15); - pWindow->deleteLater(); -} - -//bookMarkAreaPaintEvent -TEST(UT_test_textedit_bookMarkAreaPaintEvent, UT_test_textedit_bookMarkAreaPaintEvent_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Hello world\nHello world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - textCursor.movePosition(QTextCursor::Start, QTextCursor::MoveAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - DGuiApplicationHelper::instance()->setPaletteType(DGuiApplicationHelper::ColorType::LightType); - pWindow->currentWrapper()->textEditor()->m_listBookmark.append(1); - pWindow->currentWrapper()->textEditor()->m_nBookMarkHoverLine = 2; - QPaintEvent *pPaintEvent; - pWindow->currentWrapper()->textEditor()->bookMarkAreaPaintEvent(pPaintEvent); - int iRet = pWindow->currentWrapper()->textEditor()->m_pLeftAreaWidget->m_pBookMarkArea->width(); - - ASSERT_TRUE(iRet == 15); - pWindow->deleteLater(); -} - -//bookMarkAreaPaintEvent -TEST(UT_test_textedit_bookMarkAreaPaintEvent, UT_test_textedit_bookMarkAreaPaintEvent_003) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Hello world\nHello world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - textCursor.movePosition(QTextCursor::Start, QTextCursor::MoveAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - DGuiApplicationHelper::instance()->setPaletteType(DGuiApplicationHelper::ColorType::LightType); - pWindow->currentWrapper()->textEditor()->m_listBookmark.append(1); - pWindow->currentWrapper()->textEditor()->m_nBookMarkHoverLine = 1; - QPaintEvent *pPaintEvent; - pWindow->currentWrapper()->textEditor()->bookMarkAreaPaintEvent(pPaintEvent); - int iRet = pWindow->currentWrapper()->textEditor()->m_pLeftAreaWidget->m_pBookMarkArea->width(); - - ASSERT_TRUE(iRet == 15); - pWindow->deleteLater(); -} - -//int getLineFromPoint(const QPoint &point); -TEST(UT_test_textedit_getLineFromPoint, UT_test_textedit_getLineFromPoint_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Hello world\nHello world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - int iRet = pWindow->currentWrapper()->textEditor()->getLineFromPoint(QPoint(0, 13)); - - ASSERT_TRUE(iRet == 1); - pWindow->deleteLater(); -} - -//void addOrDeleteBookMark(); -TEST(UT_test_textedit_addOrDeleteBookMark, UT_test_textedit_addOrDeleteBookMark_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Hello world\nHello world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->m_bIsShortCut = true; - pWindow->currentWrapper()->textEditor()->m_listBookmark.append(2); - pWindow->currentWrapper()->textEditor()->addOrDeleteBookMark(); - - ASSERT_TRUE(pWindow->currentWrapper()->textEditor()->m_pLeftAreaWidget != nullptr); - pWindow->deleteLater(); -} - -//void addOrDeleteBookMark(); -TEST(UT_test_textedit_addOrDeleteBookMark, UT_test_textedit_addOrDeleteBookMark_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Hello world\nHello world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->m_bIsShortCut = false; - pWindow->currentWrapper()->textEditor()->m_listBookmark.append(2); - pWindow->currentWrapper()->textEditor()->addOrDeleteBookMark(); - - ASSERT_TRUE(pWindow->currentWrapper()->textEditor()->m_pLeftAreaWidget != nullptr); - pWindow->deleteLater(); -} - -//void addOrDeleteBookMark(); -TEST(UT_test_textedit_addOrDeleteBookMark, UT_test_textedit_addOrDeleteBookMark_003) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Hello world\nHello world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->m_bIsShortCut = true; - pWindow->currentWrapper()->textEditor()->addOrDeleteBookMark(); - - ASSERT_TRUE(pWindow->currentWrapper()->textEditor()->m_pLeftAreaWidget != nullptr); - pWindow->deleteLater(); -} - -//void moveToPreviousBookMark(); -TEST(UT_test_textedit_moveToPreviousBookMark, UT_test_textedit_moveToPreviousBookMark_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Hello world\nHello world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->m_listBookmark.append(1); - pWindow->currentWrapper()->textEditor()->moveToPreviousBookMark(); - - ASSERT_TRUE(!pWindow->currentWrapper()->textEditor()->m_listBookmark.isEmpty()); - pWindow->deleteLater(); -} - -//void moveToPreviousBookMark(); -TEST(UT_test_textedit_moveToPreviousBookMark, UT_test_textedit_moveToPreviousBookMark_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Hello world\nHello world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->m_listBookmark.append(2); - pWindow->currentWrapper()->textEditor()->moveToPreviousBookMark(); - - ASSERT_TRUE(!pWindow->currentWrapper()->textEditor()->m_listBookmark.isEmpty()); - pWindow->deleteLater(); -} - -//void moveToPreviousBookMark(); -TEST(UT_test_textedit_moveToPreviousBookMark, UT_test_textedit_moveToPreviousBookMark_003) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Hello world\nHello world\n"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->m_listBookmark.append(2); - pWindow->currentWrapper()->textEditor()->m_listBookmark.append(3); - pWindow->currentWrapper()->textEditor()->moveToPreviousBookMark(); - - ASSERT_TRUE(!pWindow->currentWrapper()->textEditor()->m_listBookmark.isEmpty()); - pWindow->deleteLater(); -} - -//void moveToNextBookMark(); -TEST(UT_test_textedit_moveToNextBookMark, UT_test_textedit_moveToNextBookMark_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Hello world\nHello world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->m_listBookmark.append(1); - pWindow->currentWrapper()->textEditor()->moveToNextBookMark(); - - ASSERT_TRUE(!pWindow->currentWrapper()->textEditor()->m_listBookmark.isEmpty()); - pWindow->deleteLater(); -} - -//void moveToNextBookMark(); -TEST(UT_test_textedit_moveToNextBookMark, UT_test_textedit_moveToNextBookMark_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Hello world\nHello world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->m_listBookmark.append(2); - pWindow->currentWrapper()->textEditor()->moveToNextBookMark(); - - ASSERT_TRUE(!pWindow->currentWrapper()->textEditor()->m_listBookmark.isEmpty()); - pWindow->deleteLater(); -} - -//void moveToNextBookMark(); -TEST(UT_test_textedit_moveToNextBookMark, UT_test_textedit_moveToNextBookMarkk_003) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Hello world\nHello world\n"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->m_listBookmark.append(3); - pWindow->currentWrapper()->textEditor()->m_listBookmark.append(2); - pWindow->currentWrapper()->textEditor()->moveToNextBookMark(); - - ASSERT_TRUE(!pWindow->currentWrapper()->textEditor()->m_listBookmark.isEmpty()); - pWindow->deleteLater(); -} - -//void checkBookmarkLineMove(int from, int charsRemoved, int charsAdded); -TEST(UT_test_textedit_checkBookmarkLineMove, UT_test_textedit_checkBookmarkLineMove_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Hello world\nHello world\n"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->m_bIsFileOpen = true; - pWindow->currentWrapper()->textEditor()->checkBookmarkLineMove(3, 0, 0); - - ASSERT_TRUE(pWindow->currentWrapper()->textEditor()->m_listBookmark.isEmpty()); - pWindow->deleteLater(); -} - -//void checkBookmarkLineMove(int from, int charsRemoved, int charsAdded); -TEST(UT_test_textedit_checkBookmarkLineMove, UT_test_textedit_checkBookmarkLineMove_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Hello world\nHello world\n"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->m_nLines = 4; - pWindow->currentWrapper()->textEditor()->m_listBookmark.append(2); - pWindow->currentWrapper()->textEditor()->checkBookmarkLineMove(3, 0, 0); - int iRet1 = pWindow->currentWrapper()->textEditor()->document()->blockCount(); - int iRet2 = pWindow->currentWrapper()->textEditor()->m_nLines; - - ASSERT_TRUE(iRet1 == iRet2); - pWindow->deleteLater(); -} - -//void checkBookmarkLineMove(int from, int charsRemoved, int charsAdded); -TEST(UT_test_textedit_checkBookmarkLineMove, UT_test_textedit_checkBookmarkLineMove_003) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Hello world\nHello world\n"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->m_nLines = 4; - pWindow->currentWrapper()->textEditor()->m_nSelectEndLine = -1; - pWindow->currentWrapper()->textEditor()->m_listBookmark.append(3); - pWindow->currentWrapper()->textEditor()->checkBookmarkLineMove(3, 0, 0); - int iRet1 = pWindow->currentWrapper()->textEditor()->document()->blockCount(); - int iRet2 = pWindow->currentWrapper()->textEditor()->m_nLines; - - ASSERT_TRUE(iRet1 == iRet2); - pWindow->deleteLater(); -} - -//void checkBookmarkLineMove(int from, int charsRemoved, int charsAdded); -TEST(UT_test_textedit_checkBookmarkLineMove, UT_test_textedit_checkBookmarkLineMove_004) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Hello world\nHello world\n"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->m_nLines = 3; - pWindow->currentWrapper()->textEditor()->m_nSelectEndLine = -1; - pWindow->currentWrapper()->textEditor()->m_listBookmark.append(3); - pWindow->currentWrapper()->textEditor()->checkBookmarkLineMove(1, 0, 0); - int iRet1 = pWindow->currentWrapper()->textEditor()->document()->blockCount(); - int iRet2 = pWindow->currentWrapper()->textEditor()->m_nLines; - - ASSERT_TRUE(iRet1 == iRet2); - pWindow->deleteLater(); -} - -//void setIsFileOpen(); -TEST(UT_test_textedit_setIsFileOpen, UT_test_textedit_setIsFileOpen_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Hello world\nHello world\n"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->setIsFileOpen(); - bool bRet = pWindow->currentWrapper()->textEditor()->m_bIsFileOpen; - - ASSERT_TRUE(bRet == true); - pWindow->deleteLater(); -} - -//void setTextFinished(); -TEST(UT_test_textedit_setTextFinished, UT_test_textedit_setTextFinished_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Hello world\nHello world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->m_listBookmark.append(1); - pWindow->currentWrapper()->textEditor()->setTextFinished(); - bool bRet = pWindow->currentWrapper()->textEditor()->m_bIsFileOpen; - - ASSERT_TRUE(bRet == false); - pWindow->deleteLater(); -} - -QStringList UT_test_textedit_setTextFinished_002_readHistoryRecordofBookmark_stub() -{ - QStringList bookmarkList; - bookmarkList << "*(2,*1,*2,*1,*4,*1,*1,*1)*"; - bookmarkList << "*(2,*1,*2,*1,*4,*1,*1)*"; - bookmarkList << "*(5,*6,*7,*1,*1,*1,*1)*"; - - return bookmarkList; -} - -QString m_sFilePath {QString()}; -QStringList UT_test_textedit_setTextFinished_002_readHistoryRecordofFilePath_stub() -{ - QStringList filePathList; - filePathList << "~/Desktop/1.txt"; - filePathList << "~/.local/share/deepin/deepin-editor/blank-files/blank_file_2021-09-28_08-44-42-244"; - filePathList << "~/.local/share/deepin/deepin-editor/blank-files/blank_file_2021-09-26_11-37-20-780"; - filePathList << m_sFilePath; - - return filePathList; -} - -//void setTextFinished(); -TEST(UT_test_textedit_setTextFinished, UT_test_textedit_setTextFinished_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Hello world\nHello world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - //pWindow->currentWrapper()->textEditor()->m_listBookmark.append(1); - Stub stub_readHistoryRecordofBookmark; - stub_readHistoryRecordofBookmark.set(ADDR(TextEdit, readHistoryRecordofBookmark), UT_test_textedit_setTextFinished_002_readHistoryRecordofBookmark_stub); - m_sFilePath = pWindow->currentWrapper()->textEditor()->m_sFilePath; - Stub stub_readHistoryRecordofFilePath; - stub_readHistoryRecordofFilePath.set(ADDR(TextEdit, readHistoryRecordofFilePath), UT_test_textedit_setTextFinished_002_readHistoryRecordofFilePath_stub); - pWindow->currentWrapper()->textEditor()->setTextFinished(); - bool bRet = pWindow->currentWrapper()->textEditor()->m_bIsFileOpen; - - ASSERT_TRUE(bRet == false); - pWindow->deleteLater(); -} - -QVariant UT_test_textedit_readHistoryRecord_001_option_stub() -{ - return QVariant("*{\"cursorPosition\":\"13\",\"modify\":false}*"); -} - -//QStringList readHistoryRecord(QString key); -TEST(UT_test_textedit_readHistoryRecord, UT_test_textedit_readHistoryRecord_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Hello world\nHello world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - Stub stub_option; - stub_option.set(ADDR(DSettingsOption, value), UT_test_textedit_readHistoryRecord_001_option_stub); - QStringList stringListRet = pWindow->currentWrapper()->textEditor()->readHistoryRecord(QString("advance.editor.browsing_history_file")); - - ASSERT_TRUE(stringListRet == QStringList("*{\"cursorPosition\":\"13\",\"modify\":false}*")); - pWindow->deleteLater(); -} - -QVariant UT_test_textedit_readHistoryRecordofBookmark_001_option_stub() -{ - return QVariant("*(\"cursorPosition\":\"13\",\"modify\":false)*"); -} - -//QStringList readHistoryRecordofBookmark(); -TEST(UT_test_textedit_readHistoryRecordofBookmark, UT_test_textedit_readHistoryRecordofBookmark_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Hello world\nHello world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - Stub stub_option; - stub_option.set(ADDR(DSettingsOption, value), UT_test_textedit_readHistoryRecordofBookmark_001_option_stub); - QStringList stringListRet = pWindow->currentWrapper()->textEditor()->readHistoryRecordofBookmark(); - - ASSERT_TRUE(stringListRet == QStringList("*(\"cursorPosition\":\"13\",\"modify\":false)*")); - pWindow->deleteLater(); -} - -QVariant UT_test_textedit_readHistoryRecordofFilePath_001_option_stub() -{ - return QVariant("*[\"cursorPosition\":\"13\",\"modify\":false]*"); -} - -//QStringList readHistoryRecordofFilePath(); -TEST(UT_test_textedit_readHistoryRecordofFilePath, UT_test_textedit_readHistoryRecordofFilePath_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Hello world\nHello world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - Stub stub_option; - stub_option.set(ADDR(DSettingsOption, value), UT_test_textedit_readHistoryRecordofFilePath_001_option_stub); - QStringList stringListRet = pWindow->currentWrapper()->textEditor()->readHistoryRecordofFilePath(QString()); - - ASSERT_TRUE(stringListRet != QStringList("*[\"cursorPosition\":\"13\",\"modify\":false]*")); - pWindow->deleteLater(); -} - -//void isMarkCurrentLine(); -TEST(UT_test_textedit_isMarkCurrentLine, UT_test_textedit_isMarkCurrentLine_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Hello world\nHello world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - textCursor.movePosition(QTextCursor::StartOfBlock, QTextCursor::KeepAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - pWindow->currentWrapper()->textEditor()->isMarkCurrentLine(true, QString("red"), -1); - bool bRet = pWindow->currentWrapper()->textEditor()->m_markOperations.isEmpty(); - - ASSERT_TRUE(bRet == false); - pWindow->deleteLater(); -} - -//void isMarkCurrentLine(); -TEST(UT_test_textedit_isMarkCurrentLine, UT_test_textedit_isMarkCurrentLine_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Hello world\nHello world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->isMarkCurrentLine(true, QString("red"), -1); - bool bRet = pWindow->currentWrapper()->textEditor()->m_markOperations.isEmpty(); - - ASSERT_TRUE(bRet == false); - pWindow->deleteLater(); -} - -//void isMarkCurrentLine(); -TEST(UT_test_textedit_isMarkCurrentLine, UT_test_textedit_isMarkCurrentLine_003) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Hello world\nHello world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->isMarkCurrentLine(false, QString("red"), -1); - bool bRet = pWindow->currentWrapper()->textEditor()->m_markOperations.isEmpty(); - - ASSERT_TRUE(bRet == true); - pWindow->deleteLater(); -} - -//void isMarkAllLine(bool isMark, QString strColor = ""); -TEST(UT_test_textedit_isMarkAllLine, UT_test_textedit_isMarkAllLine_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Hello world\nHello world one"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - textCursor.movePosition(QTextCursor::PreviousWord, QTextCursor::KeepAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - pWindow->currentWrapper()->textEditor()->isMarkAllLine(true, QString("red")); - bool bRet = pWindow->currentWrapper()->textEditor()->m_mapKeywordMarkSelections.isEmpty(); - - ASSERT_TRUE(bRet == false); - pWindow->deleteLater(); -} - -//void isMarkAllLine(bool isMark, QString strColor = ""); -TEST(UT_test_textedit_isMarkAllLine, UT_test_textedit_isMarkAllLine_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Hello world\nHello world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->isMarkAllLine(true, QString("red")); - bool bRet = pWindow->currentWrapper()->textEditor()->m_mapKeywordMarkSelections.isEmpty(); - - ASSERT_TRUE(bRet == false); - pWindow->deleteLater(); -} - -//void isMarkAllLine(bool isMark, QString strColor = ""); -TEST(UT_test_textedit_isMarkAllLine, UT_test_textedit_isMarkAllLine_003) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Hello world\nHello world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->isMarkAllLine(false, QString("red")); - QString strRet = pWindow->currentWrapper()->textEditor()->m_markAllSelection.format.background().color().name(); - - ASSERT_TRUE(!strRet.compare(QString("#ff0000"))); - pWindow->deleteLater(); -} - -//void cancelLastMark(); -TEST(UT_test_textedit_cancelLastMark, UT_test_textedit_cancelLastMark_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Hello world\nHello world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - pWindow->currentWrapper()->textEditor()->m_markOperations.clear(); - pWindow->currentWrapper()->textEditor()->cancelLastMark(); - bool bRet = pWindow->currentWrapper()->textEditor()->m_markOperations.isEmpty(); - - ASSERT_TRUE(bRet == true); - pWindow->deleteLater(); -} - -//void cancelLastMark(); -TEST(UT_test_textedit_cancelLastMark, UT_test_textedit_cancelLastMark_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Hello world\nHello world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - textCursor.movePosition(QTextCursor::PreviousWord, QTextCursor::KeepAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - pWindow->currentWrapper()->textEditor()->isMarkCurrentLine(true, QString("red"), -1); - //pWindow->currentWrapper()->textEditor()->isMarkAllLine(true, QString("red")); - pWindow->currentWrapper()->textEditor()->m_markOperations.last().first.type = TextEdit::MarkOperationType::MarkLine; - pWindow->currentWrapper()->textEditor()->cancelLastMark(); - bool bRet = pWindow->currentWrapper()->textEditor()->m_markOperations.isEmpty(); - - ASSERT_TRUE(bRet == true); - pWindow->deleteLater(); -} - -//void cancelLastMark(); -TEST(UT_test_textedit_cancelLastMark, UT_test_textedit_cancelLastMark_003) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Hello world\nHello world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - textCursor.movePosition(QTextCursor::PreviousWord, QTextCursor::KeepAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - pWindow->currentWrapper()->textEditor()->isMarkCurrentLine(true, QString("red"), -1); - pWindow->currentWrapper()->textEditor()->markAllInView(QString("red"), -1); - pWindow->currentWrapper()->textEditor()->m_markOperations.last().first.type = TextEdit::MarkOperationType::MarkAllMatch; - pWindow->currentWrapper()->textEditor()->cancelLastMark(); - bool bRet = pWindow->currentWrapper()->textEditor()->m_markOperations.isEmpty(); - - ASSERT_TRUE(bRet == true); - pWindow->deleteLater(); -} - -//void cancelLastMark(); -TEST(UT_test_textedit_cancelLastMark, UT_test_textedit_cancelLastMark_004) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("Hello world\nHello world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - textCursor.movePosition(QTextCursor::PreviousWord, QTextCursor::KeepAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - pWindow->currentWrapper()->textEditor()->isMarkCurrentLine(true, QString("red"), -1); - pWindow->currentWrapper()->textEditor()->markAllInView(QString("red"), -1); - pWindow->currentWrapper()->textEditor()->m_markOperations.last().first.type = TextEdit::MarkOperationType::MarkAll; - pWindow->currentWrapper()->textEditor()->m_mapKeywordMarkSelections.insert(QString(TEXT_EIDT_MARK_ALL),QList>()); - pWindow->currentWrapper()->textEditor()->cancelLastMark(); - bool bRet = pWindow->currentWrapper()->textEditor()->m_markOperations.isEmpty(); - - ASSERT_TRUE(bRet == true); - pWindow->deleteLater(); -} - -//void setThemeWithPath(const QString &path); -TEST_F(test_textedit, setThemeWithPath) -{ - QScrollBar *p = new QScrollBar(); - TextEdit *startManager = new TextEdit(); - startManager->setVerticalScrollBar(p); - EditWrapper *ee = new EditWrapper(); - Settings *s = new Settings(); - startManager->setSettings(s); - startManager->setWrapper(ee); - - EXPECT_NE(ee->m_pTextEdit , nullptr); - ee->deleteLater(); - startManager->deleteLater(); - p->deleteLater(); -} - -//void setIsFileOpen(); -TEST_F(test_textedit, setIsFileOpen) -{ - QScrollBar *p = new QScrollBar(); - TextEdit *startManager = new TextEdit(); - startManager->setVerticalScrollBar(p); - EditWrapper *ee = new EditWrapper(); - startManager->setWrapper(ee); - startManager->setIsFileOpen(); - - EXPECT_NE(ee->m_pTextEdit , nullptr); - ee->deleteLater(); - startManager->deleteLater(); - p->deleteLater(); -} - -//void isMarkCurrentLine(bool isMark, QString strColor = ""); -TEST_F(test_textedit, isMarkCurrentLine) -{ - QScrollBar *p = new QScrollBar(); - TextEdit *startManager = new TextEdit(); - startManager->setVerticalScrollBar(p); - EditWrapper *ee = new EditWrapper(); - Settings *s = new Settings(); - startManager->setSettings(s); - startManager->setWrapper(ee); - startManager->isMarkCurrentLine(true, "red"); - startManager->isMarkCurrentLine(false, "red"); - - EXPECT_NE(ee->m_pTextEdit , nullptr); - ee->deleteLater(); - startManager->deleteLater(); - p->deleteLater(); - s->deleteLater(); -} - -//void markSelectWord(); -TEST_F(test_textedit, markSelectWord) -{ - QScrollBar *p = new QScrollBar(); - TextEdit *startManager = new TextEdit(); - startManager->setVerticalScrollBar(p); - EditWrapper *ee = new EditWrapper(); - Settings *s = new Settings(); - startManager->setSettings(s); - startManager->setWrapper(ee); - startManager->markSelectWord(); - - EXPECT_NE(ee->m_pTextEdit , nullptr); - ee->deleteLater(); - startManager->deleteLater(); - p->deleteLater(); - s->deleteLater(); -} - -//void updateMark(int from, int charsRemoved, int charsAdded); -TEST_F(test_textedit, updateMark) -{ - QScrollBar *p = new QScrollBar(); - TextEdit *startManager = new TextEdit(); - startManager->setVerticalScrollBar(p); - EditWrapper *ee = new EditWrapper(); - Settings *s = new Settings(); - startManager->setSettings(s); - startManager->setWrapper(ee); - startManager->updateMark(1, 2, 3); - - EXPECT_NE(ee->m_pTextEdit , nullptr); - ee->deleteLater(); - startManager->deleteLater(); - p->deleteLater(); - s->deleteLater(); -} - -//bool containsExtraSelection(QList listSelections, QTextEdit::ExtraSelection selection); -TEST_F(test_textedit, containsExtraSelection) -{ - QList listSelection; - QTextEdit::ExtraSelection selectio; - QScrollBar *p = new QScrollBar(); - TextEdit *startManager = new TextEdit(); - startManager->setVerticalScrollBar(p); - EditWrapper *ee = new EditWrapper(); - Settings *s = new Settings(); - startManager->setSettings(s); - startManager->setWrapper(ee); - startManager->containsExtraSelection(listSelection, selectio); - - EXPECT_NE(ee->m_pTextEdit , nullptr); - ee->deleteLater(); - startManager->deleteLater(); - p->deleteLater(); - s->deleteLater(); -} - -//void appendExtraSelection(QList wordMarkSelections, QTextEdit::ExtraSelection selection -// , QString strColor, QList *listSelections); -TEST_F(test_textedit, appendExtraSelection) -{ - QScrollBar *p = new QScrollBar(); - TextEdit *startManager = new TextEdit(); - startManager->setVerticalScrollBar(p); - QList listSelection; - QTextEdit::ExtraSelection selectio; - selectio.cursor = startManager->textCursor(); - selectio.format.setBackground(QColor(Qt::red)); - QList listSelectionsd; - listSelectionsd.append(selectio); - EditWrapper *ee = new EditWrapper(); - Settings *s = new Settings(); - startManager->setSettings(s); - startManager->setWrapper(ee); - startManager->appendExtraSelection(listSelection, selectio, "#000000", &listSelectionsd); - - EXPECT_NE(ee->m_pTextEdit , nullptr); - ee->deleteLater(); - startManager->deleteLater(); - p->deleteLater(); - s->deleteLater(); -} -/// void setCursorStart(int _); -TEST_F(test_textedit, setCursorStart) -{ - QList listSelection; - QTextEdit::ExtraSelection selectio; - QScrollBar *p = new QScrollBar(); - TextEdit *startManager = new TextEdit(); - startManager->setVerticalScrollBar(p); - EditWrapper *ee = new EditWrapper(); - Settings *s = new Settings(); - startManager->setSettings(s); - startManager->setWrapper(ee); - startManager->setCursorStart(2); - - EXPECT_NE(ee->m_pTextEdit , nullptr); - ee->deleteLater(); - startManager->deleteLater(); - p->deleteLater(); - s->deleteLater(); -} -//void writeEncodeHistoryRecord(); -TEST_F(test_textedit, writeEncodeHistoryRecord) -{ - QList listSelection; - QTextEdit::ExtraSelection selectio; - QScrollBar *p = new QScrollBar(); - TextEdit *startManager = new TextEdit(); - startManager->setVerticalScrollBar(p); - EditWrapper *ee = new EditWrapper(); - Settings *s = new Settings(); - startManager->setSettings(s); - startManager->setWrapper(ee); - startManager->writeEncodeHistoryRecord(); - - EXPECT_NE(ee->m_pTextEdit , nullptr); - ee->deleteLater(); - startManager->deleteLater(); - p->deleteLater(); - s->deleteLater(); -} -//QStringList readEncodeHistoryRecord(); -TEST_F(test_textedit, readEncodeHistoryRecord) -{ - QList listSelection; - QTextEdit::ExtraSelection selectio; - QScrollBar *p = new QScrollBar(); - TextEdit *startManager = new TextEdit(); - startManager->setVerticalScrollBar(p); - EditWrapper *ee = new EditWrapper(); - Settings *s = new Settings(); - startManager->setSettings(s); - startManager->setWrapper(ee); - startManager->readEncodeHistoryRecord(); - - EXPECT_NE(ee->m_pTextEdit , nullptr); - ee->deleteLater(); - startManager->deleteLater(); - p->deleteLater(); - s->deleteLater(); -} - -//clickFindAction -TEST_F(test_textedit, clickFindAction) -{ - QList listSelection; - QTextEdit::ExtraSelection selectio; - QScrollBar *p = new QScrollBar(); - TextEdit *startManager = new TextEdit(); - startManager->setVerticalScrollBar(p); - EditWrapper *ee = new EditWrapper(); - Settings *s = new Settings(); - startManager->setSettings(s); - startManager->setWrapper(ee); - startManager->clickFindAction(); - - EXPECT_NE(ee->m_pTextEdit , nullptr); - ee->deleteLater(); - startManager->deleteLater(); - p->deleteLater(); - s->deleteLater(); -} -// void tellFindBarClose(); -TEST_F(test_textedit, tellFindBarClose) -{ - QList listSelection; - QTextEdit::ExtraSelection selectio; - QScrollBar *p = new QScrollBar(); - TextEdit *startManager = new TextEdit(); - startManager->setVerticalScrollBar(p); - EditWrapper *ee = new EditWrapper(); - Settings *s = new Settings(); - startManager->setSettings(s); - startManager->setWrapper(ee); - startManager->tellFindBarClose(); - - EXPECT_NE(ee->m_pTextEdit , nullptr); - ee->deleteLater(); - startManager->deleteLater(); - p->deleteLater(); - s->deleteLater(); -} - -// void setEditPalette(const QString &activeColor, const QString &inactiveColor); -TEST_F(test_textedit, setEditPalette) -{ - QList listSelection; - QTextEdit::ExtraSelection selectio; - QScrollBar *p = new QScrollBar(); - TextEdit *startManager = new TextEdit(); - startManager->setVerticalScrollBar(p); - EditWrapper *ee = new EditWrapper(); - Settings *s = new Settings(); - startManager->setSettings(s); - startManager->setWrapper(ee); - startManager->setEditPalette("aa", "aa"); - - EXPECT_NE(ee->m_pTextEdit , nullptr); - s->deleteLater(); - ee->deleteLater(); - startManager->deleteLater(); - p->deleteLater(); -} - -// void setCodeFoldWidgetHide(bool isHidden); -TEST_F(test_textedit, setCodeFoldWidgetHide) -{ - QList listSelection; - QTextEdit::ExtraSelection selectio; - QScrollBar *p = new QScrollBar(); - TextEdit *startManager = new TextEdit(); - startManager->setVerticalScrollBar(p); - EditWrapper *ee = new EditWrapper(); - Settings *s = new Settings(); - startManager->setSettings(s); - startManager->setWrapper(ee); - startManager->setCodeFoldWidgetHide(true); - startManager->setCodeFoldWidgetHide(false); - - EXPECT_NE(ee->m_pTextEdit , nullptr); - s->deleteLater(); - ee->deleteLater(); - startManager->deleteLater(); - p->deleteLater(); -} -// void updateLeftAreaWidget(); -TEST_F(test_textedit, updateLeftAreaWidget) -{ - QList listSelection; - QTextEdit::ExtraSelection selectio; - QScrollBar *p = new QScrollBar(); - TextEdit *startManager = new TextEdit(); - startManager->setVerticalScrollBar(p); - EditWrapper *ee = new EditWrapper(); - Settings *s = new Settings(); - startManager->setSettings(s); - startManager->setWrapper(ee); - startManager->updateLeftAreaWidget(); - - EXPECT_NE(ee->m_pTextEdit , nullptr); - s->deleteLater(); - ee->deleteLater(); - startManager->deleteLater(); - p->deleteLater(); -} - -// void updateLineNumber(); -TEST_F(test_textedit, updateLineNumber) -{ - QList listSelection; - QTextEdit::ExtraSelection selectio; - QScrollBar *p = new QScrollBar(); - TextEdit *startManager = new TextEdit(); - startManager->setVerticalScrollBar(p); - EditWrapper *ee = new EditWrapper(); - Settings *s = new Settings(); - startManager->setSettings(s); - startManager->setWrapper(ee); - startManager->updateLeftAreaWidget(); - - EXPECT_NE(ee->m_pTextEdit , nullptr); - s->deleteLater(); - ee->deleteLater(); - startManager->deleteLater(); - p->deleteLater(); -} -// void handleScrollFinish(); -TEST_F(test_textedit, handleScrollFinish) -{ - QList listSelection; - QTextEdit::ExtraSelection selectio; - QScrollBar *p = new QScrollBar(); - TextEdit *startManager = new TextEdit(); - startManager->setVerticalScrollBar(p); - EditWrapper *ee = new EditWrapper(); - Settings *s = new Settings(); - startManager->setSettings(s); - startManager->setWrapper(ee); - startManager->handleScrollFinish(); - - EXPECT_NE(ee->m_pTextEdit , nullptr); - s->deleteLater(); - ee->deleteLater(); - startManager->deleteLater(); - p->deleteLater(); -} - -// void slot_translate(); -TEST_F(test_textedit, slot_translate) -{ - QList listSelection; - QTextEdit::ExtraSelection selectio; - QScrollBar *p = new QScrollBar(); - TextEdit *startManager = new TextEdit(); - startManager->setVerticalScrollBar(p); - EditWrapper *ee = new EditWrapper(); - Settings *s = new Settings(); - startManager->setSettings(s); - startManager->setWrapper(ee); - startManager->slot_translate(); - - EXPECT_NE(ee->m_pTextEdit , nullptr); - s->deleteLater(); - ee->deleteLater(); - startManager->deleteLater(); - p->deleteLater(); -} - -#if 0 //gerrit上段错误,暂且屏蔽 -// void upcaseWord(); - TEST_F(test_textedit, upcaseWord) -{ - QList listSelection; - QTextEdit::ExtraSelection selectio; - QScrollBar *p = new QScrollBar(); - TextEdit *startManager = new TextEdit(); - startManager->setVerticalScrollBar(p); - EditWrapper * ee = new EditWrapper(); - Settings *s = new Settings(); - startManager->setSettings(s); - startManager->setWrapper(ee); - startManager->upcaseWord(); - - -} -#endif - -#if 0 //gerrit上段错误,暂且屏蔽 -// void downcaseWord(); - TEST_F(test_textedit, downcaseWord) -{ - QList listSelection; - QTextEdit::ExtraSelection selectio; - QScrollBar *p = new QScrollBar();TextEdit *startManager = new TextEdit();startManager->setVerticalScrollBar(p); - EditWrapper * ee = new EditWrapper(); - Settings *s = new Settings(); - startManager->setSettings(s); - startManager->setWrapper(ee); - startManager->downcaseWord(); - - -} -#endif - -// void capitalizeWord(); -// TEST_F(test_textedit, capitalizeWord) -//{ -// QList listSelection; -// QTextEdit::ExtraSelection selectio; -// QScrollBar *p = new QScrollBar();TextEdit *startManager = new TextEdit();startManager->setVerticalScrollBar(p); -// EditWrapper * ee = new EditWrapper(); -// Settings *s = new Settings(); -// startManager->setSettings(s); -// startManager->setWrapper(ee); -// startManager->capitalizeWord(); - -// -//} -// void transposeChar(); - -TEST_F(test_textedit, transposeChar) -{ - QList listSelection; - QTextEdit::ExtraSelection selectio; - QScrollBar *p = new QScrollBar(); - TextEdit *startManager = new TextEdit(); - startManager->setVerticalScrollBar(p); - EditWrapper *ee = new EditWrapper(); - Settings *s = new Settings(); - startManager->setSettings(s); - startManager->setWrapper(ee); - startManager->transposeChar(); - - EXPECT_NE(ee->m_pTextEdit , nullptr); - s->deleteLater(); - ee->deleteLater(); - startManager->deleteLater(); - p->deleteLater(); -} - -// void handleCursorMarkChanged(bool mark, QTextCursor cursor); -TEST_F(test_textedit, handleCursorMarkChanged) -{ - QList listSelection; - QTextEdit::ExtraSelection selectio; - QScrollBar *p = new QScrollBar(); - TextEdit *startManager = new TextEdit(); - startManager->setVerticalScrollBar(p); - EditWrapper *ee = new EditWrapper(); - Settings *s = new Settings(); - startManager->setSettings(s); - startManager->setWrapper(ee); - startManager->handleCursorMarkChanged(true, QTextCursor()); - startManager->handleCursorMarkChanged(false, QTextCursor()); - - EXPECT_NE(ee->m_pTextEdit , nullptr); - s->deleteLater(); - ee->deleteLater(); - startManager->deleteLater(); - p->deleteLater(); -} - -// void adjustScrollbarMargins(); -TEST_F(test_textedit, adjustScrollbarMargins) -{ - QList listSelection; - QTextEdit::ExtraSelection selectio; - QScrollBar *p = new QScrollBar(); - TextEdit *startManager = new TextEdit(); - startManager->setVerticalScrollBar(p); - EditWrapper *ee = new EditWrapper(); - Settings *s = new Settings(); - startManager->setSettings(s); - startManager->setWrapper(ee); - startManager->adjustScrollbarMargins(); - - EXPECT_NE(ee->m_pTextEdit , nullptr); - s->deleteLater(); - ee->deleteLater(); - startManager->deleteLater(); - p->deleteLater(); -} - -// void onSelectionArea(); -TEST_F(test_textedit, onSelectionArea) -{ - QList listSelection; - QTextEdit::ExtraSelection selectio; - QScrollBar *p = new QScrollBar(); - TextEdit *startManager = new TextEdit(); - startManager->setVerticalScrollBar(p); - EditWrapper *ee = new EditWrapper(); - Settings *s = new Settings(); - startManager->setSettings(s); - startManager->setWrapper(ee); - startManager->onSelectionArea(); - - EXPECT_NE(ee->m_pTextEdit , nullptr); - s->deleteLater(); - ee->deleteLater(); - startManager->deleteLater(); - p->deleteLater(); -} -// void fingerZoom(QString name, QString direction, int fingers); -TEST_F(test_textedit, fingerZoom) -{ - QList listSelection; - QTextEdit::ExtraSelection selectio; - QScrollBar *p = new QScrollBar(); - TextEdit *startManager = new TextEdit(); - startManager->setVerticalScrollBar(p); - EditWrapper *ee = new EditWrapper(); - Settings *s = new Settings(); - startManager->setSettings(s); - startManager->setWrapper(ee); - startManager->fingerZoom("aa", "aa", 3); - - EXPECT_NE(ee->m_pTextEdit , nullptr); - s->deleteLater(); - ee->deleteLater(); - startManager->deleteLater(); - p->deleteLater(); -} - -// bool event(QEvent* evt) override; //触摸屏event事件 -TEST_F(test_textedit, event) -{ - QList listSelection; - QTextEdit::ExtraSelection selectio; - QScrollBar *p = new QScrollBar(); - TextEdit *startManager = new TextEdit(); - startManager->setVerticalScrollBar(p); - EditWrapper *ee = new EditWrapper(); - Settings *s = new Settings(); - startManager->setSettings(s); - startManager->setWrapper(ee); - QEvent *e = new QEvent(QEvent::Type::MouseButtonPress); - startManager->event(e); - - EXPECT_NE(ee->m_pTextEdit , nullptr); - delete e; - e = nullptr; - s->deleteLater(); - ee->deleteLater(); - startManager->deleteLater(); - p->deleteLater(); -} - - -//TEST(UT_TextEdit_inputMethodEvent, UT_TextEdit_inputMethodEvent) - -// void mousePressEvent(QMouseEvent *e) override; -TEST_F(test_textedit, mousePressEvent) -{ - QList listSelection; - QTextEdit::ExtraSelection selectio; - QScrollBar *p = new QScrollBar(); - TextEdit *startManager = new TextEdit(); - startManager->setVerticalScrollBar(p); - EditWrapper *ee = new EditWrapper(); - Settings *s = new Settings(); - startManager->setSettings(s); - startManager->setWrapper(ee); - QPoint a(1, 2); - QPointF b(a); - QMouseEvent *e = new QMouseEvent(QMouseEvent::Type::Enter, b, b, Qt::MouseButton::LeftButton, Qt::MouseButton::LeftButton, Qt::KeyboardModifier::NoModifier); - startManager->mousePressEvent(e); - - EXPECT_NE(ee->m_pTextEdit , nullptr); - s->deleteLater(); - ee->deleteLater(); - startManager->deleteLater(); - p->deleteLater(); -} - -TEST(UT_TextEdit_mousePressEvent, UT_TextEdit_mousePressEvent_002) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QMouseEvent* e = new QMouseEvent(QEvent::MouseButtonPress,QPointF(20.0,20.0),QPointF(20.0,20.0),Qt::RightButton,Qt::RightButton,Qt::AltModifier); - - Stub s1; - s1.set(ADDR(QMouseEvent,source),retintstub); - - intvalue=2; - edit->m_bIsAltMod=true; - edit->m_bIsFindClose=true; - edit->mousePressEvent(e); - - - EXPECT_NE(edit,nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -// void mouseMoveEvent(QMouseEvent *e) override; -TEST_F(test_textedit, mouseMoveEvent) -{ - QList listSelection; - QTextEdit::ExtraSelection selectio; - QScrollBar *p = new QScrollBar(); - TextEdit *startManager = new TextEdit(); - startManager->setVerticalScrollBar(p); - EditWrapper *ee = new EditWrapper(); - Settings *s = new Settings(); - startManager->setSettings(s); - startManager->setWrapper(ee); - QPoint a(1, 2); - QPointF b(a); - QMouseEvent *e = new QMouseEvent(QMouseEvent::Type::Enter, b, b, Qt::MouseButton::LeftButton, Qt::MouseButton::LeftButton, Qt::KeyboardModifier::NoModifier); - startManager->mouseMoveEvent(e); - - EXPECT_NE(ee->m_pTextEdit , nullptr); - s->deleteLater(); - ee->deleteLater(); - startManager->deleteLater(); - p->deleteLater(); -} - -TEST(UT_TextEdit_mouseMoveEvent, UT_TextEdit_mouseMoveEvent_002) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QMouseEvent* e = new QMouseEvent(QEvent::MouseMove,QPointF(20.0,20.0),QPointF(20.0,20.0),Qt::LeftButton,Qt::LeftButton,Qt::AltModifier); - - Stub s1; - s1.set(ADDR(QMouseEvent,source),retintstub); - - intvalue=2; - edit->m_bIsAltMod=true; - edit->m_gestureAction == TextEdit::GA_slide; - edit->mouseMoveEvent(e); - - - EXPECT_NE(edit,nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} -// void mouseReleaseEvent(QMouseEvent *e) override; -TEST_F(test_textedit, mouseReleaseEvent) -{ - QList listSelection; - QTextEdit::ExtraSelection selectio; - QScrollBar *p = new QScrollBar(); - TextEdit *startManager = new TextEdit(); - startManager->setVerticalScrollBar(p); - EditWrapper *ee = new EditWrapper(); - Settings *s = new Settings(); - startManager->setSettings(s); - startManager->setWrapper(ee); - QPoint a(1, 2); - QPointF b(a); - QMouseEvent *e = new QMouseEvent(QMouseEvent::Type::Enter, b, b, Qt::MouseButton::LeftButton, Qt::MouseButton::LeftButton, Qt::KeyboardModifier::NoModifier); - startManager->mouseReleaseEvent(e); - - EXPECT_NE(ee->m_pTextEdit , nullptr); - s->deleteLater(); - ee->deleteLater(); - startManager->deleteLater(); - p->deleteLater(); -} - -TEST(UT_TextEdit_mouseReleaseEvent, UT_TextEdit_mouseReleaseEvent_002) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QMouseEvent* e = new QMouseEvent(QEvent::MouseButtonRelease,QPointF(20.0,20.0),QPointF(20.0,20.0),Qt::LeftButton,Qt::LeftButton,Qt::NoModifier); - - Stub s1; - s1.set(ADDR(QMouseEvent,source),retintstub); - - intvalue = 2; - edit->mouseReleaseEvent(e); - - - EXPECT_NE(edit,nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -// void wheelEvent(QWheelEvent *e) override; -TEST_F(test_textedit, wheelEvent) -{ - QList listSelection; - QTextEdit::ExtraSelection selectio; - QScrollBar *p = new QScrollBar(); - TextEdit *startManager = new TextEdit(); - startManager->setVerticalScrollBar(p); - EditWrapper *ee = new EditWrapper(); - Settings *s = new Settings(); - startManager->setSettings(s); - startManager->setWrapper(ee); -#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) - QPointF pos; - QWheelEvent *e = new QWheelEvent(pos, 4, Qt::MouseButton::LeftButton, Qt::KeyboardModifier::AltModifier); - - // QWheelEvent(const QPointF &pos, int delta, - // Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, - // Qt::Orientation orient = Qt::Vertical); - startManager->wheelEvent(e); -#endif - - EXPECT_NE(ee->m_pTextEdit , nullptr); - s->deleteLater(); - ee->deleteLater(); - startManager->deleteLater(); - p->deleteLater(); -} - -QAction *stub_exec(const QPoint &pos, QAction *at = nullptr) -{ - Q_UNUSED(pos) - Q_UNUSED(at) - - return nullptr; -} -// void contextMenuEvent(QContextMenuEvent *event) override; - -TEST_F(test_textedit, contextMenuEvent) -{ - QList listSelection; - QTextEdit::ExtraSelection selectio; - QScrollBar *p = new QScrollBar(); - TextEdit *startManager = new TextEdit(); - startManager->setVerticalScrollBar(p); - EditWrapper *ee = new EditWrapper(); - Settings *s = new Settings(); - QPoint b(0, 0); - startManager->setSettings(s); - startManager->setWrapper(ee); - Stub stub; - stub.set((QAction * (QMenu::*)(const QPoint &, QAction *)) ADDR(QMenu, exec), stub_exec); - QContextMenuEvent *e = new QContextMenuEvent(QContextMenuEvent::Reason::Keyboard, b, b); - //startManager->contextMenuEvent(e); - - EXPECT_NE(ee->m_pTextEdit , nullptr); - s->deleteLater(); - ee->deleteLater(); - startManager->deleteLater(); - p->deleteLater(); -} - -// void paintEvent(QPaintEvent *e) override; -TEST_F(test_textedit, paintEvent) -{ - QList listSelection; - QTextEdit::ExtraSelection selectio; - QScrollBar *p = new QScrollBar(); - TextEdit *startManager = new TextEdit(); - startManager->setVerticalScrollBar(p); - EditWrapper *ee = new EditWrapper(); - Settings *s = new Settings(); - startManager->setSettings(s); - startManager->setWrapper(ee); - QRect a(1, 2, 3, 4); - QPaintEvent *e = new QPaintEvent(a); - startManager->paintEvent(e); - - EXPECT_NE(ee->m_pTextEdit , nullptr); - s->deleteLater(); - ee->deleteLater(); - startManager->deleteLater(); - p->deleteLater(); -} - -TEST(UT_TextEdit_paintEvent, UT_TextEdit_paintEvent_002) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QPaintEvent* e = new QPaintEvent(QRect(20,20,20,20)); - - QTextEdit::ExtraSelection s1,s2; - edit->m_altModSelections.push_back(s1); - edit->m_altModSelections.push_back(s2); - edit->m_bIsAltMod = true; - - edit->paintEvent(e); - - EXPECT_NE(edit,nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -// bool blockContainStrBrackets(int line); -TEST_F(test_textedit, blockContainStrBrackets) -{ - QList listSelection; - QTextEdit::ExtraSelection selectio; - QScrollBar *p = new QScrollBar(); - TextEdit *startManager = new TextEdit(); - startManager->setVerticalScrollBar(p); - EditWrapper *ee = new EditWrapper(); - Settings *s = new Settings(); - startManager->setSettings(s); - startManager->setWrapper(ee); - QPaintEvent *e; - startManager->blockContainStrBrackets(2); - - EXPECT_NE(ee->m_pTextEdit , nullptr); - s->deleteLater(); - ee->deleteLater(); - startManager->deleteLater(); - p->deleteLater(); -} - -TEST(UT_TextEdit_blockContainStrBrackets, UT_TextEdit_blockContainStrBrackets_002) -{ - TextEdit* edit = new TextEdit; - Stub s1; -#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) - s1.set((bool (QString::*) (QRegExp &) const )ADDR(QString,contains),rettruestub); -#endif - - edit->blockContainStrBrackets(1); - - EXPECT_NE(edit,nullptr); - edit->deleteLater(); -} - -TEST(UT_TextEdit_blockContainStrBrackets, UT_TextEdit_blockContainStrBrackets_003) -{ - TextEdit* edit = new TextEdit; - Stub s1; -#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) - s1.set((bool (QString::*) (QRegExp &) const )ADDR(QString,contains),retfalsestub); -#endif - - edit->blockContainStrBrackets(1); - - EXPECT_NE(edit,nullptr); - edit->deleteLater(); -} - -// bool setCursorKeywordSeletoin(int position, bool findNext); -TEST_F(test_textedit, setCursorKeywordSeletoin) -{ - QList listSelection; - QTextEdit::ExtraSelection selectio; - QScrollBar *p = new QScrollBar(); - TextEdit *startManager = new TextEdit(); - startManager->setVerticalScrollBar(p); - EditWrapper *ee = new EditWrapper(); - Settings *s = new Settings(); - startManager->setSettings(s); - startManager->setWrapper(ee); - QPaintEvent *e; - startManager->setCursorKeywordSeletoin(2, true); - startManager->setCursorKeywordSeletoin(2, false); - - EXPECT_NE(ee->m_pTextEdit , nullptr); - s->deleteLater(); - ee->deleteLater(); - startManager->deleteLater(); - p->deleteLater(); -} - -// void cursorPositionChanged(); -TEST_F(test_textedit, cursorPositionChanged) -{ - QList listSelection; - QTextEdit::ExtraSelection selectio; - QScrollBar *p = new QScrollBar(); - TextEdit *startManager = new TextEdit(); - startManager->setVerticalScrollBar(p); - EditWrapper *ee = new EditWrapper(); - Settings *s = new Settings(); - startManager->setSettings(s); - startManager->setWrapper(ee); - QPaintEvent *e; - startManager->cursorPositionChanged(); - - EXPECT_NE(ee->m_pTextEdit , nullptr); - s->deleteLater(); - ee->deleteLater(); - startManager->deleteLater(); - p->deleteLater(); -} - -// void cut(); -TEST_F(test_textedit, cut_normal_passed) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("hello world\n" - "hello world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - textCursor.movePosition(QTextCursor::StartOfBlock, QTextCursor::KeepAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - QClipboard *pClipboard = QApplication::clipboard(); - pClipboard->clear(); - pWindow->currentWrapper()->textEditor()->cut(); - - QString strRet1(pClipboard->text()); - QString strRet2(pWindow->currentWrapper()->textEditor()->toPlainText()); - EXPECT_EQ(strRet1, QString("hello world")); - EXPECT_EQ(strRet2, QString("hello world\n")); - pWindow->currentWrapper()->textEditor()->undo_(); - QString strRet3(pWindow->currentWrapper()->textEditor()->toPlainText()); - EXPECT_EQ(strRet3, strMsg); - - pWindow->deleteLater(); -} - -TEST_F(test_textedit, cut_withMultiByteText_passed) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - // 多字节字符编码 CJK - // 𢝐𢝑𢝒𢝓𢝔𢝕𢝖𢝗𢝘𢝙\n𢝚𢝛𢝜𢝝𢝞𢝟𢝠𢝡𢝢𢝣 - QString strMsg("\360\242\235\220\360\242\235\221\360\242\235\222\360\242\235\223\360\242\235\224" - "\360\242\235\225\360\242\235\226\360\242\235\227\360\242\235\230\360\242\235\231\n" - "\360\242\235\232\360\242\235\233\360\242\235\234\360\242\235\235\360\242\235\236" - "\360\242\235\237\360\242\235\240\360\242\235\241\360\242\235\242\360\242\235\243"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - textCursor.setPosition(0); - textCursor.setPosition(6, QTextCursor::KeepAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - QClipboard *pClipboard = QApplication::clipboard(); - pClipboard->clear(); - pWindow->currentWrapper()->textEditor()->cut(); - - QString strRet1(pClipboard->text()); - QString strRet2(pWindow->currentWrapper()->textEditor()->toPlainText()); - EXPECT_EQ(strRet1, strMsg.left(6)); - EXPECT_EQ(strRet2, strMsg.mid(6)); - pWindow->currentWrapper()->textEditor()->undo_(); - QString strRet3(pWindow->currentWrapper()->textEditor()->toPlainText()); - EXPECT_EQ(strRet3, strMsg); - - pWindow->deleteLater(); -} - -// void updateHighlightBrackets(const QChar &openChar, const QChar &closeChar); -TEST_F(test_textedit, updateHighlightBrackets) -{ - QList listSelection; - QTextEdit::ExtraSelection selectio; - QScrollBar *p = new QScrollBar(); - TextEdit *startManager = new TextEdit(); - startManager->setVerticalScrollBar(p); - EditWrapper *ee = new EditWrapper(); - QChar a = ' '; - Settings *s = new Settings(); - startManager->setSettings(s); - startManager->setWrapper(ee); - QPaintEvent *e; - startManager->updateHighlightBrackets(a, a); - - EXPECT_NE(ee->m_pTextEdit , nullptr); - s->deleteLater(); - ee->deleteLater(); - startManager->deleteLater(); - p->deleteLater(); -} - -// int getFirstVisibleBlockId() const; -TEST_F(test_textedit, getFirstVisibleBlockId) -{ - QList listSelection; - QTextEdit::ExtraSelection selectio; - QScrollBar *p = new QScrollBar(); - TextEdit *startManager = new TextEdit(); - startManager->setVerticalScrollBar(p); - EditWrapper *ee = new EditWrapper(); - Settings *s = new Settings(); - startManager->setSettings(s); - startManager->setWrapper(ee); - QPaintEvent *e; - //startManager->getFirstVisibleBlockId(); - - EXPECT_NE(ee->m_pTextEdit , nullptr); - s->deleteLater(); - ee->deleteLater(); - startManager->deleteLater(); - p->deleteLater(); -} - -//void setTruePath(QString qstrTruePath); -TEST_F(test_textedit, setBackupPath) -{ - QScrollBar *p = new QScrollBar(); - TextEdit *startManager = new TextEdit(); - startManager->setVerticalScrollBar(p); - startManager->setTruePath("aa"); - - ASSERT_TRUE(startManager->m_pLeftAreaWidget != nullptr); - startManager->deleteLater(); - p->deleteLater(); -} - -// QString getTruePath(); -TEST_F(test_textedit, getTruePath) -{ - QScrollBar *p = new QScrollBar(); - TextEdit *startManager = new TextEdit(); - startManager->setVerticalScrollBar(p); - startManager->getTruePath(); - - ASSERT_TRUE(startManager->m_pLeftAreaWidget != nullptr); - startManager->deleteLater(); - p->deleteLater(); -} - -////初始化右键菜单 -//void initRightClickedMenu(); -TEST_F(test_textedit, initRightClickedMenu) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world.")); - pWindow->currentWrapper()->textEditor()->initRightClickedMenu(); - ASSERT_TRUE(pWindow->currentWrapper()->textEditor()->m_canUndo == false); - ASSERT_TRUE(pWindow->currentWrapper()->textEditor()->m_canRedo == false); - - pWindow->deleteLater(); -} - -//slotSigColorSelected -TEST_F(test_textedit, slotSigColorSelected) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world.")); - pWindow->currentWrapper()->textEditor()->slotSigColorSelected(true, QColor("red")); - ASSERT_TRUE(pWindow->currentWrapper()->textEditor()->m_rightMenu != nullptr); - - pWindow->deleteLater(); -} - -//slotSigColorAllSelected -TEST_F(test_textedit, slotSigColorAllSelected) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world.")); - pWindow->currentWrapper()->textEditor()->slotSigColorAllSelected(true, QColor("red")); - ASSERT_TRUE(pWindow->currentWrapper()->textEditor()->m_rightMenu != nullptr); - - pWindow->deleteLater(); -} - -//slotCutAction -TEST_F(test_textedit, slotCutAction) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world.\nHolle world.")); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - textCursor.movePosition(QTextCursor::StartOfBlock, QTextCursor::KeepAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - QString strBefore(pWindow->currentWrapper()->textEditor()->toPlainText()); - pWindow->currentWrapper()->textEditor()->slotCutAction(true); - QString strAfter(pWindow->currentWrapper()->textEditor()->toPlainText()); - ASSERT_TRUE(strBefore.compare(strAfter)); - - pWindow->deleteLater(); -} - -//slotCopyAction -TEST_F(test_textedit, slotCopyAction) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world.\nHolle world.")); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - textCursor.movePosition(QTextCursor::StartOfBlock, QTextCursor::KeepAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - pWindow->currentWrapper()->textEditor()->slotCopyAction(true); - QClipboard *pClipboard = QApplication::clipboard(); - QString strRet(pClipboard->text()); - ASSERT_TRUE(!strRet.compare(QString("Holle world."))); - - pWindow->deleteLater(); -} - -//slotPasteAction -TEST_F(test_textedit, slotPasteAction) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world.\nHolle world.")); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - textCursor.movePosition(QTextCursor::StartOfBlock, QTextCursor::KeepAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - pWindow->currentWrapper()->textEditor()->slotCopyAction(true); - QString strBefore(pWindow->currentWrapper()->textEditor()->toPlainText()); - textCursor.movePosition(QTextCursor::End, QTextCursor::MoveAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - pWindow->currentWrapper()->textEditor()->slotPasteAction(true); - QString strAfter(pWindow->currentWrapper()->textEditor()->toPlainText()); - ASSERT_TRUE(strBefore.compare(strAfter)); - - pWindow->deleteLater(); -} - -//slotDeleteAction 001 -TEST_F(test_textedit, slotDeleteAction_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world.\nHolle world.")); - pWindow->currentWrapper()->textEditor()->slotSelectAllAction(true); - QString strBefore(pWindow->currentWrapper()->textEditor()->toPlainText()); - pWindow->currentWrapper()->textEditor()->slotDeleteAction(true); - QString strAfter(pWindow->currentWrapper()->textEditor()->toPlainText()); - ASSERT_TRUE(strBefore.compare(strAfter)); - - pWindow->deleteLater(); -} - -//slotDeleteAction 002 -TEST_F(test_textedit, slotDeleteAction_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world.\nHolle world.")); - QString strBefore(pWindow->currentWrapper()->textEditor()->toPlainText()); - pWindow->currentWrapper()->textEditor()->slotDeleteAction(true); - QString strAfter(pWindow->currentWrapper()->textEditor()->toPlainText()); - ASSERT_TRUE(!strBefore.compare(strAfter)); - - pWindow->deleteLater(); -} - -//slotSelectAllAction -TEST_F(test_textedit, slotSelectAllAction) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world.\nHolle world.")); - pWindow->currentWrapper()->textEditor()->slotSelectAllAction(true); - bool bRet = pWindow->currentWrapper()->textEditor()->m_isSelectAll; - ASSERT_TRUE(bRet == true); - - pWindow->deleteLater(); -} - -//slotOpenInFileManagerAction -TEST_F(test_textedit, slotOpenInFileManagerAction) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world.\nHolle world.")); - QString strRet(pWindow->currentWrapper()->textEditor()->getTruePath()); - ASSERT_TRUE(!strRet.isEmpty()); - - pWindow->deleteLater(); -} - -//slotAddComment -TEST_F(test_textedit, slotAddComment) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world.\nHolle world.")); - pWindow->currentWrapper()->textEditor()->slotAddComment(true); - bool bRet = pWindow->currentWrapper()->textEditor()->m_commentDefinition.isValid(); - ASSERT_TRUE(bRet == false); - - pWindow->deleteLater(); -} - -//slotCancelComment -TEST_F(test_textedit, slotCancelComment) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world.\nHolle world.")); - pWindow->currentWrapper()->textEditor()->slotCancelComment(true); - bool bRet = pWindow->currentWrapper()->textEditor()->m_commentDefinition.isValid(); - ASSERT_TRUE(bRet == false); - - pWindow->deleteLater(); -} - -//slotVoiceReadingAction -TEST_F(test_textedit, slotVoiceReadingAction) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world.\nHolle world.")); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - textCursor.movePosition(QTextCursor::StartOfBlock, QTextCursor::KeepAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - pWindow->currentWrapper()->textEditor()->slotVoiceReadingAction(true); - bool bRet = pWindow->currentWrapper()->textEditor()->textCursor().hasSelection(); - ASSERT_TRUE(bRet == true); - - pWindow->deleteLater(); -} - -//slotdictationAction -TEST_F(test_textedit, slotdictationAction) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world.\nHolle world.")); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - textCursor.movePosition(QTextCursor::StartOfBlock, QTextCursor::KeepAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - pWindow->currentWrapper()->textEditor()->slotdictationAction(true); - bool bRet = pWindow->currentWrapper()->textEditor()->textCursor().hasSelection(); - ASSERT_TRUE(bRet == true); - - pWindow->deleteLater(); -} - -//slotColumnEditAction -TEST_F(test_textedit, slotColumnEditAction) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world.\nHolle world.")); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - textCursor.movePosition(QTextCursor::StartOfBlock, QTextCursor::KeepAnchor); - pWindow->currentWrapper()->textEditor()->setTextCursor(textCursor); - pWindow->currentWrapper()->textEditor()->slotColumnEditAction(true); - bool bRet = pWindow->currentWrapper()->textEditor()->textCursor().hasSelection(); - ASSERT_TRUE(bRet == true); - - pWindow->deleteLater(); -} - -//slotPreBookMarkAction 001 -TEST_F(test_textedit, slotPreBookMarkAction_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world.")); - pWindow->currentWrapper()->textEditor()->m_mouseClickPos = QPoint(0, 0); - pWindow->currentWrapper()->textEditor()->m_listBookmark.append(1); - pWindow->currentWrapper()->textEditor()->slotPreBookMarkAction(true); - int iRet = pWindow->currentWrapper()->textEditor()->m_listBookmark.indexOf(1); - ASSERT_TRUE(iRet == 0); - - pWindow->deleteLater(); -} - -//slotPreBookMarkAction 002 -TEST_F(test_textedit, slotPreBookMarkAction_002) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world.")); - pWindow->currentWrapper()->textEditor()->m_mouseClickPos = QPoint(0, 0); - pWindow->currentWrapper()->textEditor()->slotPreBookMarkAction(true); - int iRet = pWindow->currentWrapper()->textEditor()->m_listBookmark.indexOf(1); - ASSERT_TRUE(iRet != 0); - - pWindow->deleteLater(); -} - -void slotNextBookMarkAction_001_jumpToLine_stub() -{ - return; -} - -//slotNextBookMarkAction 001 -TEST_F(test_textedit, slotNextBookMarkAction_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world.\nHolle world.")); - pWindow->currentWrapper()->textEditor()->m_mouseClickPos = QPoint(0, 0); - pWindow->currentWrapper()->textEditor()->m_listBookmark.append(2); - Stub jumpToLine_stub; - jumpToLine_stub.set(ADDR(TextEdit, jumpToLine), slotNextBookMarkAction_001_jumpToLine_stub); - pWindow->currentWrapper()->textEditor()->slotNextBookMarkAction(true); - bool bRet = pWindow->currentWrapper()->textEditor()->m_listBookmark.isEmpty(); - ASSERT_TRUE(bRet == false); - - pWindow->deleteLater(); -} - -//slotClearBookMarkAction -TEST_F(test_textedit, slotClearBookMarkAction) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world.\nHolle world.")); - pWindow->currentWrapper()->textEditor()->slotClearBookMarkAction(true); - bool bRet = pWindow->currentWrapper()->textEditor()->m_listBookmark.isEmpty(); - ASSERT_TRUE(bRet == true); - - pWindow->deleteLater(); -} - -//slotFlodAllLevel -TEST_F(test_textedit, slotFlodAllLevel) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world.\nHolle world.")); - pWindow->currentWrapper()->textEditor()->slotFlodAllLevel(true); - bool bRet = pWindow->currentWrapper()->textEditor()->m_listMainFlodAllPos.isEmpty(); - ASSERT_TRUE(bRet == true); - - pWindow->deleteLater(); -} - -//slotUnflodAllLevel -TEST_F(test_textedit, slotUnflodAllLevel) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world.\nHolle world.")); - pWindow->currentWrapper()->textEditor()->slotUnflodAllLevel(true); - bool bRet = pWindow->currentWrapper()->textEditor()->m_listMainFlodAllPos.isEmpty(); - ASSERT_TRUE(bRet == true); - - pWindow->deleteLater(); -} - -//slotFlodCurrentLevel -TEST_F(test_textedit, slotFlodCurrentLevel) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world.\nHolle world.")); - pWindow->currentWrapper()->textEditor()->slotFlodCurrentLevel(true); - ASSERT_TRUE(pWindow->currentWrapper()->textEditor()->m_pLeftAreaWidget != nullptr); - - pWindow->deleteLater(); -} - -//slotUnflodCurrentLevel -TEST_F(test_textedit, slotUnflodCurrentLevel) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world.\nHolle world.")); - pWindow->currentWrapper()->textEditor()->slotUnflodCurrentLevel(true); - ASSERT_TRUE(pWindow->currentWrapper()->textEditor()->m_pLeftAreaWidget != nullptr); - - pWindow->deleteLater(); -} - -//slotCancleMarkAllLine -TEST_F(test_textedit, slotCancleMarkAllLine) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world.\nHolle world.")); - pWindow->currentWrapper()->textEditor()->slotCancleMarkAllLine(true); - bool bRet = pWindow->currentWrapper()->textEditor()->m_markOperations.isEmpty(); - ASSERT_TRUE(bRet == true); - - pWindow->deleteLater(); -} - -//slotCancleLastMark -TEST_F(test_textedit, slotCancleLastMark) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world.\nHolle world.")); - pWindow->currentWrapper()->textEditor()->slotCancleLastMark(true); - bool bRet = pWindow->currentWrapper()->textEditor()->m_markOperations.isEmpty(); - ASSERT_TRUE(bRet == true); - - pWindow->deleteLater(); -} - -//slotUndoAvailable -TEST_F(test_textedit, slotUndoAvailable) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world.\nHolle world.")); - pWindow->currentWrapper()->textEditor()->slotUndoAvailable(true); - bool bRet = pWindow->currentWrapper()->textEditor()->m_canUndo; - ASSERT_TRUE(bRet == true); - - pWindow->deleteLater(); -} - -//slotRedoAvailable -TEST_F(test_textedit, slotRedoAvailable) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - pWindow->currentWrapper()->textEditor()->insertTextEx(pWindow->currentWrapper()->textEditor()->textCursor(), - QString("Holle world.\nHolle world.")); - pWindow->currentWrapper()->textEditor()->slotRedoAvailable(true); - bool bRet = pWindow->currentWrapper()->textEditor()->m_canRedo; - ASSERT_TRUE(bRet == true); - - pWindow->deleteLater(); -} - -/* - void unCommentSelection(); - void setComment(); - void removeComment(); -*/ - -TEST_F(test_textedit, unCommentSelection) -{ - EditWrapper *editWrapper = new EditWrapper; - editWrapper->openFile("1.cpp", "1.cpp"); - QTextCursor cursor = editWrapper->m_pTextEdit->textCursor(); - cursor.setPosition(0, QTextCursor::MoveAnchor); - editWrapper->m_pTextEdit->setTextCursor(cursor); - editWrapper->m_pTextEdit->unCommentSelection(); - - EXPECT_NE(editWrapper->m_pTextEdit , nullptr); - editWrapper->deleteLater(); -} - -TEST(UT_TextEdit_unCommentSelection, UT_TextEdit_unCommentSelection_002) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - - - Stub s1; - s1.set(ADDR(Comment::CommentDefinition,isValid),rettruestub); - Stub s2; - s2.set(ADDR(QTextCursor,hasSelection),rettruestub); - Stub s3; - s3.set(ADDR(Comment::CommentDefinition,hasMultiLineStyle),rettruestub); - Stub s4; - s4.set(ADDR(QString,length),retintstub); - Stub s5; - s5.set(ADDR(TextEdit,isComment),rettruestub); - Stub s6; - s6.set(ADDR(TextEdit,deleteTextEx),rettruestub); - Stub s7; - s7.set(ADDR(TextEdit,insertTextEx),rettruestub); - - - intvalue = -1000; - edit->unCommentSelection(); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); -} - -TEST(UT_TextEdit_unCommentSelection, UT_TextEdit_unCommentSelection_003) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - - - Stub s1; - s1.set(ADDR(Comment::CommentDefinition,isValid),rettruestub); - Stub s2; - s2.set(ADDR(QTextCursor,hasSelection),retfalsestub); - Stub s3; - s3.set(ADDR(Comment::CommentDefinition,hasSingleLineStyle),retfalsestub); - Stub s4; - s4.set(ADDR(QString,length),retintstub); - Stub s5; - s5.set(ADDR(TextEdit,isComment),rettruestub); - Stub s6; - s6.set((bool (QString::*) (const QString &, Qt::CaseSensitivity) const )ADDR(QString,startsWith),rettruestub); - Stub s7; - s7.set((bool (QString::*) (const QString &, Qt::CaseSensitivity) const )ADDR(QString,endsWith),rettruestub); - Stub s8; - s8.set(ADDR(TextEdit,deleteTextEx),rettruestub); - Stub s9; - s9.set(ADDR(TextEdit,insertTextEx),rettruestub); - - intvalue = -1000; - edit->unCommentSelection(); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); -} - -TEST(UT_TextEdit_unCommentSelection, UT_TextEdit_unCommentSelection_004) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - - - Stub s1; - s1.set(ADDR(Comment::CommentDefinition,isValid),rettruestub); - Stub s2; - s2.set(ADDR(QTextCursor,hasSelection),retfalsestub); - Stub s3; - s3.set(ADDR(Comment::CommentDefinition,hasSingleLineStyle),retfalsestub); - Stub s4; - s4.set(ADDR(QString,length),retintstub); - Stub s5; - s5.set(ADDR(TextEdit,isComment),rettruestub); - Stub s6; - s6.set((bool (QString::*) (const QString &, Qt::CaseSensitivity) const )ADDR(QString,startsWith),retfalsestub); - Stub s7; - s7.set((bool (QString::*) (const QString &, Qt::CaseSensitivity) const )ADDR(QString,endsWith),retfalsestub); - Stub s8; - s8.set(ADDR(QString,isEmpty),retfalsestub); - Stub s9; - s9.set(ADDR(TextEdit,deleteTextEx),rettruestub); - Stub s10; - s10.set(ADDR(TextEdit,insertTextEx),rettruestub); - - intvalue = -1000; - edit->unCommentSelection(); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); -} - -TEST(UT_TextEdit_unCommentSelection, UT_TextEdit_unCommentSelection_005) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - - - Stub s1; - s1.set(ADDR(Comment::CommentDefinition,isValid),rettruestub); - Stub s2; - s2.set(ADDR(QTextCursor,hasSelection),retfalsestub); - Stub s3; - s3.set(ADDR(Comment::CommentDefinition,hasSingleLineStyle),retfalsestub); - Stub s4; - s4.set(ADDR(QString,length),retintstub); - Stub s5; - s5.set(ADDR(TextEdit,isComment),rettruestub); - Stub s6; - s6.set((bool (QString::*) (const QString &, Qt::CaseSensitivity) const )ADDR(QString,startsWith),retfalsestub); - Stub s7; - s7.set((bool (QString::*) (const QString &, Qt::CaseSensitivity) const )ADDR(QString,endsWith),retfalsestub); - Stub s8; - s8.set(ADDR(QString,isEmpty),rettruestub); - Stub s9; - s9.set(ADDR(TextEdit,deleteTextEx),rettruestub); - Stub s10; - s10.set(ADDR(TextEdit,insertTextEx),rettruestub); - - intvalue = -1000; - edit->unCommentSelection(); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); -} - - -TEST_F(test_textedit, setComment) -{ - EditWrapper *editWrapper = new EditWrapper; - editWrapper->openFile("1.cpp", "1.cpp"); - QTextCursor cursor = editWrapper->m_pTextEdit->textCursor(); - cursor.setPosition(0, QTextCursor::MoveAnchor); - editWrapper->m_pTextEdit->setTextCursor(cursor); - editWrapper->m_pTextEdit->setComment(); - - EXPECT_NE(editWrapper->m_pTextEdit , nullptr); - editWrapper->deleteLater(); -} - -TEST(UT_TextEdit_setComment, UT_TextEdit_setComment_002) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - - Stub s1; - s1.set(ADDR(Comment::CommentDefinition,isValid),rettruestub); - Stub s2; - s2.set(ADDR(QTextCursor,isNull),retfalsestub); - Stub s3; - s3.set(ADDR(QTextCursor,hasSelection),rettruestub); - Stub s4; - s4.set(ADDR(Comment::CommentDefinition,hasMultiLineStyle),rettruestub); - Stub s5; - s5.set(ADDR(QString,length),retintstub); - Stub s6; - s6.set(ADDR(TextEdit,isComment),rettruestub); - Stub s7; - s7.set(ADDR(TextEdit,deleteTextEx),rettruestub); - Stub s8; - s8.set(ADDR(TextEdit,insertTextEx),rettruestub); - Stub s9; - s9.set(ADDR(TextEdit,insertMultiTextEx),stub_insertMultiTextEx); - - - intvalue = -1000; - edit->setComment(); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); -} - -TEST(UT_TextEdit_setComment, UT_TextEdit_setComment_003) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - - Stub s1; - s1.set(ADDR(Comment::CommentDefinition,isValid),rettruestub); - Stub s2; - s2.set(ADDR(QTextCursor,isNull),retfalsestub); - Stub s3; - s3.set(ADDR(QTextCursor,hasSelection),retfalsestub); - Stub s4; - s4.set(ADDR(Comment::CommentDefinition,hasSingleLineStyle),retfalsestub); - Stub s5; - s5.set(ADDR(QString,length),retintstub); - Stub s6; - s6.set(ADDR(TextEdit,isComment),rettruestub); - Stub s7; - s7.set((bool (QString::*) (const QString &, Qt::CaseSensitivity) const )ADDR(QString,startsWith),rettruestub); - Stub s8; - s8.set((bool (QString::*) (const QString &, Qt::CaseSensitivity) const )ADDR(QString,endsWith),rettruestub); - Stub s9; - s9.set(ADDR(TextEdit,deleteTextEx),rettruestub); - Stub s10; - s10.set(ADDR(TextEdit,insertTextEx),rettruestub); - Stub s11; - s11.set(ADDR(TextEdit,insertMultiTextEx),stub_insertMultiTextEx); - - - intvalue = -1000; - edit->setComment(); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); -} - -TEST(UT_TextEdit_setComment, UT_TextEdit_setComment_004) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - - Stub s1; - s1.set(ADDR(Comment::CommentDefinition,isValid),rettruestub); - Stub s2; - s2.set(ADDR(QTextCursor,isNull),retfalsestub); - Stub s3; - s3.set(ADDR(QTextCursor,hasSelection),retfalsestub); - Stub s4; - s4.set(ADDR(Comment::CommentDefinition,hasSingleLineStyle),retfalsestub); - Stub s5; - s5.set(ADDR(QString,length),retintstub); - Stub s6; - s6.set(ADDR(TextEdit,isComment),rettruestub); - Stub s7; - s7.set((bool (QString::*) (const QString &, Qt::CaseSensitivity) const )ADDR(QString,startsWith),retfalsestub); - Stub s8; - s8.set((bool (QString::*) (const QString &, Qt::CaseSensitivity) const )ADDR(QString,endsWith),retfalsestub); - Stub s9; - s9.set(ADDR(TextEdit,deleteTextEx),rettruestub); - Stub s10; - s10.set(ADDR(TextEdit,insertTextEx),rettruestub); - Stub s11; - s11.set(ADDR(TextEdit,insertMultiTextEx),stub_insertMultiTextEx); - - - intvalue = -1000; - edit->setComment(); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); -} - -TEST_F(test_textedit, removeComment) -{ - EditWrapper *editWrapper = new EditWrapper; - editWrapper->openFile("1.cpp", "1.cpp"); - QTextCursor cursor = editWrapper->m_pTextEdit->textCursor(); - cursor.setPosition(0, QTextCursor::MoveAnchor); - editWrapper->m_pTextEdit->setTextCursor(cursor); - editWrapper->m_pTextEdit->removeComment(); - - EXPECT_NE(editWrapper->m_pTextEdit , nullptr); - editWrapper->deleteLater(); -} - -TEST(UT_Textedit_removeComment, UT_Textedit_removeComment_002) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - - Stub s1; - s1.set(ADDR(Comment::CommentDefinition,isValid),rettruestub); - Stub s2; - s2.set(ADDR(QTextCursor,hasSelection),rettruestub); - Stub s3; - s3.set(ADDR(Comment::CommentDefinition,hasMultiLineStyle),rettruestub); - Stub s4; - s4.set(ADDR(QString,length),retintstub); - Stub s5; - s5.set(ADDR(TextEdit,isComment),rettruestub); - Stub s6; - s6.set(ADDR(TextEdit,deleteTextEx),rettruestub); - Stub s7; - s7.set(ADDR(TextEdit,insertTextEx),rettruestub); - Stub s8; - s8.set(ADDR(TextEdit,deleteMultiTextEx),stub_deleteMultiTextEx); - - intvalue = -1000; - edit->removeComment(); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); -} - -TEST(UT_Textedit_removeComment, UT_Textedit_removeComment_003) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - - Stub s1; - s1.set(ADDR(Comment::CommentDefinition,isValid),rettruestub); - Stub s2; - s2.set(ADDR(QTextCursor,hasSelection),retfalsestub); - Stub s3; - s3.set(ADDR(Comment::CommentDefinition,hasSingleLineStyle),retfalsestub); - Stub s4; - s4.set(ADDR(QString,length),retintstub); - Stub s5; - s5.set(ADDR(TextEdit,isComment),rettruestub); - Stub s6; - s6.set(ADDR(TextEdit,deleteTextEx),rettruestub); - Stub s7; - s7.set(ADDR(TextEdit,insertTextEx),rettruestub); - Stub s8; - s8.set(ADDR(TextEdit,deleteMultiTextEx),stub_deleteMultiTextEx); - - intvalue = -1000; - edit->removeComment(); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); -} - -TEST_F(test_textedit, keyPressEvent) -{ - Window *window = new Window; - EditWrapper *editWrapper = window->createEditor(); - editWrapper->openFile("1.cpp", "1.cpp"); - QTextCursor cursor = editWrapper->m_pTextEdit->textCursor(); - cursor.setPosition(0, QTextCursor::MoveAnchor); - editWrapper->m_pTextEdit->setTextCursor(cursor); - QKeyEvent keyEvent(QEvent::KeyPress, Qt::Key_Insert, Qt::NoModifier); - editWrapper->m_pTextEdit->keyPressEvent(&keyEvent); - - EXPECT_NE(editWrapper->m_pTextEdit , nullptr); - editWrapper->deleteLater(); - window->deleteLater(); -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_002) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress,Qt::Key_H,Qt::NoModifier); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - Stub s2; - s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit,copy),rettruestub); - - string1 = "e"; - string2 = "e"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_003) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress,Qt::Key_H,Qt::NoModifier); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - Stub s2; - s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit,nextLine),rettruestub); - - edit->m_readOnlyMode=true; - string1 = "J"; - string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_004) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress,Qt::Key_H,Qt::NoModifier); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - Stub s2; - s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit,prevLine),rettruestub); - - edit->m_readOnlyMode=true; - string1 = "K"; - string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_005) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress,Qt::Key_H,Qt::NoModifier); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - Stub s2; - s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit,moveToEnd),rettruestub); - - edit->m_readOnlyMode=true; - string1 = ","; - string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_006) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress,Qt::Key_H,Qt::NoModifier); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - Stub s2; - s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit,moveToStart),rettruestub); - - edit->m_readOnlyMode=true; - string1 = "."; - string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_007) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress,Qt::Key_H,Qt::NoModifier); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - Stub s2; - s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit,backwardChar),rettruestub); - - edit->m_readOnlyMode=true; - string1 = "H"; - string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_008) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress,Qt::Key_H,Qt::NoModifier); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - Stub s2; - s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit,forwardChar),rettruestub); - - edit->m_readOnlyMode=true; - string1 = "L"; - string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_009) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress,Qt::Key_H,Qt::NoModifier); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - Stub s2; - s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit,scrollUp),rettruestub); - - edit->m_readOnlyMode=true; - string1 = "space"; - string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_010) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress,Qt::Key_H,Qt::NoModifier); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - Stub s2; - s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit,scrollDown),rettruestub); - - edit->m_readOnlyMode=true; - string1 = "V"; - string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_011) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress,Qt::Key_H,Qt::NoModifier); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - Stub s2; - s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit,forwardWord),rettruestub); - - edit->m_readOnlyMode=true; - string1 = "F"; - string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_012) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress,Qt::Key_H,Qt::NoModifier); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - Stub s2; - s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit,backwardWord),rettruestub); - - edit->m_readOnlyMode=true; - string1 = "B"; - string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_013) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress,Qt::Key_H,Qt::NoModifier); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - Stub s2; - s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit,moveToStartOfLine),rettruestub); - - edit->m_readOnlyMode=true; - string1 = "A"; - string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_014) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress,Qt::Key_H,Qt::NoModifier); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - Stub s2; - s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit,moveToEndOfLine),rettruestub); - - edit->m_readOnlyMode=true; - string1 = "E"; - string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_015) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress,Qt::Key_H,Qt::NoModifier); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - Stub s2; - s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit,moveToLineIndentation),rettruestub); - - edit->m_readOnlyMode=true; - string1 = "M"; - string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_016) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress,Qt::Key_H,Qt::NoModifier); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - Stub s2; - s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit,toggleReadOnlyMode),rettruestub); - - edit->m_readOnlyMode=true; - edit->m_bReadOnlyPermission=false; - string1 = "Q"; - string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_017) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress,Qt::Key_H,Qt::NoModifier); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - Stub s2; - s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit,scrollLineUp),rettruestub); - - edit->m_readOnlyMode=true; - string1 = "Shfit+J"; - string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_018) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress,Qt::Key_H,Qt::NoModifier); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - Stub s2; - s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit,scrollLineDown),rettruestub); - - edit->m_readOnlyMode=true; - string1 = "Shfit+K"; - string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_019) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress,Qt::Key_H,Qt::NoModifier); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - Stub s2; - s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit,forwardPair),rettruestub); - - edit->m_readOnlyMode=true; - string1 = "P"; - string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_020) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress,Qt::Key_H,Qt::NoModifier); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - Stub s2; - s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit, backwardPair),rettruestub); - - edit->m_readOnlyMode=true; - string1 = "N"; - string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_021) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress,Qt::Key_H,Qt::NoModifier); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - Stub s2; - s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit, copyLines),rettruestub); - - edit->m_readOnlyMode=true; - string1 = "Shift+:"; - string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_022) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress,Qt::Key_H,Qt::ControlModifier); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - Stub s2; - s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit, copyLines),rettruestub); - - edit->m_readOnlyMode=true; - string1 = "Shift+/"; - string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_023) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress,Qt::Key_Control,Qt::NoModifier); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - Stub s2; - s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit, copyLines),rettruestub); - - edit->m_readOnlyMode=true; - string1 = "987"; - string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_024) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress,Qt::Key_F11,Qt::NoModifier); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - Stub s2; - s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit, copyLines),rettruestub); - - edit->m_readOnlyMode=true; - string1 = "987"; - string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_025) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress,Qt::Key_F1,Qt::NoModifier); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - Stub s2; - s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit, popupNotify),rettruestub); - - edit->m_readOnlyMode=true; - string1 = "987"; - string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_026) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress,Qt::Key_F1,Qt::GroupSwitchModifier); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - Stub s2; - s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit, popupNotify),rettruestub); - - edit->m_readOnlyMode=true; - string1 = "987"; - string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_027) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress,Qt::Key_F1,Qt::GroupSwitchModifier); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - Stub s2; - s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit, isReadOnly),rettruestub); - - - - edit->m_readOnlyMode = false; - edit->m_bReadOnlyPermission=false; - string1 = "987"; - string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_028) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress,Qt::Key_ydiaeresis,Qt::NoModifier,"123"); - - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - Stub s2; - s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit, insertColumnEditTextEx),retfalsestub); - Stub s4; - s4.set(ADDR(TextEdit, insertSelectTextEx),retfalsestub); - - - edit->m_readOnlyMode = false; - edit->m_bReadOnlyPermission=false; - string1 = "987"; - string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_029) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress,Qt::Key_9,Qt::KeypadModifier,"123"); - - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - Stub s2; - s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit, insertColumnEditTextEx),retfalsestub); - Stub s4; - s4.set(ADDR(TextEdit, insertSelectTextEx),retfalsestub); - - - edit->m_readOnlyMode = false; - edit->m_bReadOnlyPermission=false; - string1 = "987"; - string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_030) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress, Qt::Key_Tab,Qt::NoModifier,"123"); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - Stub s2; - s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit, insertColumnEditTextEx),retfalsestub); - Stub s4; - s4.set(ADDR(TextEdit, insertSelectTextEx),retfalsestub); - - edit->m_readOnlyMode = false; - edit->m_bReadOnlyPermission=false; - string1 = "987"; - string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -//if (modifiers == Qt::NoModifier && (e->key() == Qt::Key_Backspace)) -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_031) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress, Qt::Key_Backspace,Qt::NoModifier,"123"); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - Stub s2; - s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit, insertColumnEditTextEx),retfalsestub); - Stub s4; - s4.set(ADDR(TextEdit, insertSelectTextEx),retfalsestub); - - edit->m_readOnlyMode = false; - edit->m_bReadOnlyPermission=false; - string1 = "987"; - string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_032) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress, Qt::Key_Delete,Qt::NoModifier,"123"); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - Stub s2; - s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit, insertColumnEditTextEx),retfalsestub); - Stub s4; - s4.set(ADDR(TextEdit, insertSelectTextEx),retfalsestub); - s4.set(ADDR(QUndoStack,push),rettruestub); - - QTextEdit::ExtraSelection e1,e2; - edit->m_altModSelections.push_back(e1); - edit->m_altModSelections.push_back(e2); - edit->m_bIsAltMod=true; - edit->m_readOnlyMode = false; - edit->m_bReadOnlyPermission=false; - string1 = "987"; - string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_033) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress, Qt::Key_Delete,Qt::NoModifier,"123"); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - Stub s2; - s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit, insertColumnEditTextEx),retfalsestub); - Stub s4; - s4.set(ADDR(TextEdit, insertSelectTextEx),retfalsestub); - - QTextEdit::ExtraSelection e1,e2; - edit->m_altModSelections.push_back(e1); - edit->m_altModSelections.push_back(e2); - edit->m_bIsAltMod=false; - edit->m_readOnlyMode = false; - edit->m_bReadOnlyPermission=false; - string1 = "987"; - string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_034) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress, Qt::Key_Shift,Qt::ShiftModifier,"123"); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - Stub s2; - s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit, insertColumnEditTextEx),retfalsestub); - Stub s4; - s4.set(ADDR(TextEdit, insertSelectTextEx),retfalsestub); - - edit->m_readOnlyMode = false; - edit->m_bReadOnlyPermission=false; - string1 = "987"; - string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_035) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress, Qt::Key_ydiaeresis + 3,Qt::NoModifier,"123"); - edit->m_settings = Settings::instance(); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - //Stub s2; - //s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit, insertColumnEditTextEx),retfalsestub); - Stub s4; - s4.set(ADDR(TextEdit, insertSelectTextEx),retfalsestub); - s4.set(ADDR(TextEdit,undo_),retfalsestub); - s4.set(ADDR(TextEdit,redo_),retfalsestub); - - edit->m_readOnlyMode = false; - edit->m_bReadOnlyPermission=false; - string1 = Utils::getKeyshortcutFromKeymap(edit->m_settings, "editor", "undo"); - //string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_036) -{ -// TextEdit* edit = new TextEdit; -// EditWrapper* wra = new EditWrapper; -// edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); -// QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress, Qt::Key_ydiaeresis + 3,Qt::NoModifier,"123"); -// edit->m_settings = Settings::instance(); - -// Stub s1; -// s1.set(ADDR(Utils,getKeyshortcut),retstring1); -// //Stub s2; -// //s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); -// Stub s3; -// s3.set(ADDR(TextEdit, insertColumnEditTextEx),retfalsestub); -// Stub s4; -// s4.set(ADDR(TextEdit, insertSelectTextEx),retfalsestub); - -// edit->m_readOnlyMode = false; -// edit->m_bReadOnlyPermission=false; -// string1 = Utils::getKeyshortcutFromKeymap(edit->m_settings, "editor", "redo"); -// //string2 = "789"; -// edit->keyPressEvent(e); - -// EXPECT_NE(edit , nullptr); -// edit->deleteLater(); -// wra->deleteLater(); -// delete e; -// e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_037) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress, Qt::Key_ydiaeresis + 3,Qt::NoModifier,"123"); - edit->m_settings = Settings::instance(); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - //Stub s2; - //s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit, cut),retfalsestub); - - edit->m_readOnlyMode = false; - edit->m_bReadOnlyPermission=false; - string1 = Utils::getKeyshortcutFromKeymap(edit->m_settings, "editor", "cut"); - //string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_038) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress, Qt::Key_ydiaeresis + 3,Qt::NoModifier,"123"); - edit->m_settings = Settings::instance(); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - //Stub s2; - //s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit, paste),retfalsestub); - - edit->m_readOnlyMode = false; - edit->m_bReadOnlyPermission=false; - string1 = Utils::getKeyshortcutFromKeymap(edit->m_settings, "editor", "paste"); - //string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_039) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress, Qt::Key_ydiaeresis + 3,Qt::NoModifier,"123"); - edit->m_settings = Settings::instance(); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - //Stub s2; - //s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit, scrollUp),retfalsestub); - - edit->m_readOnlyMode = false; - edit->m_bReadOnlyPermission=false; - string1 = Utils::getKeyshortcutFromKeymap(edit->m_settings, "editor", "scrollup"); - //string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_040) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress, Qt::Key_ydiaeresis + 3,Qt::NoModifier,"123"); - edit->m_settings = Settings::instance(); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - //Stub s2; - //s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit, scrollDown),retfalsestub); - - edit->m_readOnlyMode = false; - edit->m_bReadOnlyPermission=false; - string1 = Utils::getKeyshortcutFromKeymap(edit->m_settings, "editor", "scrolldown"); - //string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_041) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress, Qt::Key_ydiaeresis + 3,Qt::NoModifier,"123"); - edit->m_settings = Settings::instance(); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - //Stub s2; - //s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit, copyLines),retfalsestub); - - edit->m_readOnlyMode = false; - edit->m_bReadOnlyPermission=false; - string1 = Utils::getKeyshortcutFromKeymap(edit->m_settings, "editor", "copylines"); - //string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_042) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress, Qt::Key_ydiaeresis + 3,Qt::NoModifier,"123"); - edit->m_settings = Settings::instance(); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - //Stub s2; - //s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit, cutlines),retfalsestub); - - edit->m_readOnlyMode = false; - edit->m_bReadOnlyPermission=false; - string1 = Utils::getKeyshortcutFromKeymap(edit->m_settings, "editor", "cutlines"); - //string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_043) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress, Qt::Key_ydiaeresis + 3,Qt::NoModifier,"123"); - edit->m_settings = Settings::instance(); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - //Stub s2; - //s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - //s3.set(ADDR(TextEdit, indentline),retfalsestub); - - edit->m_readOnlyMode = false; - edit->m_bReadOnlyPermission=false; - string1 = Utils::getKeyshortcutFromKeymap(edit->m_settings, "editor", "indentline"); - //string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_044) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress, Qt::Key_ydiaeresis + 3,Qt::NoModifier,"123"); - edit->m_settings = Settings::instance(); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - //Stub s2; - //s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit, unindentText),retfalsestub); - - edit->m_readOnlyMode = false; - edit->m_bReadOnlyPermission=false; - string1 = Utils::getKeyshortcutFromKeymap(edit->m_settings, "editor", "backindentline"); - //string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_045) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress, Qt::Key_ydiaeresis + 3,Qt::NoModifier,"123"); - edit->m_settings = Settings::instance(); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - //Stub s2; - //s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit, forwardChar),retfalsestub); - - edit->m_readOnlyMode = false; - edit->m_bReadOnlyPermission=false; - string1 = Utils::getKeyshortcutFromKeymap(edit->m_settings, "editor", "forwardchar"); - //string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_046) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress, Qt::Key_ydiaeresis + 3,Qt::NoModifier,"123"); - edit->m_settings = Settings::instance(); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - //Stub s2; - //s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit, backwardWord),retfalsestub); - - edit->m_readOnlyMode = false; - edit->m_bReadOnlyPermission=false; - string1 = Utils::getKeyshortcutFromKeymap(edit->m_settings, "editor", "backwardword"); - //string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_047) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress, Qt::Key_ydiaeresis + 3,Qt::NoModifier,"123"); - edit->m_settings = Settings::instance(); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - //Stub s2; - //s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit, nextLine),retfalsestub); - - edit->m_readOnlyMode = false; - edit->m_bReadOnlyPermission=false; - string1 = Utils::getKeyshortcutFromKeymap(edit->m_settings, "editor", "nextline"); - //string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_048) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress, Qt::Key_ydiaeresis + 3,Qt::NoModifier,"123"); - edit->m_settings = Settings::instance(); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - //Stub s2; - //s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit, prevLine),retfalsestub); - - edit->m_readOnlyMode = false; - edit->m_bReadOnlyPermission=false; - string1 = Utils::getKeyshortcutFromKeymap(edit->m_settings, "editor", "prevline"); - //string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_049) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress, Qt::Key_ydiaeresis + 3,Qt::NoModifier,"123"); - edit->m_settings = Settings::instance(); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - //Stub s2; - //s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit, newline),retfalsestub); - - edit->m_readOnlyMode = false; - edit->m_bReadOnlyPermission=false; - string1 = Utils::getKeyshortcutFromKeymap(edit->m_settings, "editor", "newline"); - //string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_050) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress, Qt::Key_ydiaeresis + 3,Qt::NoModifier,"123"); - edit->m_settings = Settings::instance(); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - //Stub s2; - //s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit, openNewlineAbove),retfalsestub); - - edit->m_readOnlyMode = false; - edit->m_bReadOnlyPermission=false; - string1 = Utils::getKeyshortcutFromKeymap(edit->m_settings, "editor", "opennewlineabove"); - //string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_051) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress, Qt::Key_ydiaeresis + 3,Qt::NoModifier,"123"); - edit->m_settings = Settings::instance(); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - //Stub s2; - //s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit, openNewlineBelow),retfalsestub); - - edit->m_readOnlyMode = false; - edit->m_bReadOnlyPermission=false; - string1 = Utils::getKeyshortcutFromKeymap(edit->m_settings, "editor", "opennewlinebelow"); - //string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_052) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress, Qt::Key_ydiaeresis + 3,Qt::NoModifier,"123"); - edit->m_settings = Settings::instance(); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - //Stub s2; - //s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit, duplicateLine),retfalsestub); - - edit->m_readOnlyMode = false; - edit->m_bReadOnlyPermission=false; - string1 = Utils::getKeyshortcutFromKeymap(edit->m_settings, "editor", "duplicateline"); - //string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_053) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress, Qt::Key_ydiaeresis + 3,Qt::NoModifier,"123"); - edit->m_settings = Settings::instance(); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - //Stub s2; - //s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit, killLine),retfalsestub); - - edit->m_readOnlyMode = false; - edit->m_bReadOnlyPermission=false; - string1 = Utils::getKeyshortcutFromKeymap(edit->m_settings, "editor", "killline"); - //string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_054) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress, Qt::Key_ydiaeresis + 3,Qt::NoModifier,"123"); - edit->m_settings = Settings::instance(); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - //Stub s2; - //s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit, killCurrentLine),retfalsestub); - - edit->m_readOnlyMode = false; - edit->m_bReadOnlyPermission=false; - string1 = Utils::getKeyshortcutFromKeymap(edit->m_settings, "editor", "killcurrentline"); - //string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_055) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress, Qt::Key_ydiaeresis + 3,Qt::NoModifier,"123"); - edit->m_settings = Settings::instance(); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - //Stub s2; - //s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit, moveLineDownUp),retfalsestub); - - edit->m_readOnlyMode = false; - edit->m_bReadOnlyPermission=false; - string1 = Utils::getKeyshortcutFromKeymap(edit->m_settings, "editor", "swaplineup"); - //string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_056) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress, Qt::Key_ydiaeresis + 3,Qt::NoModifier,"123"); - edit->m_settings = Settings::instance(); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - //Stub s2; - //s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit, moveLineDownUp),retfalsestub); - - edit->m_readOnlyMode = false; - edit->m_bReadOnlyPermission=false; - string1 = Utils::getKeyshortcutFromKeymap(edit->m_settings, "editor", "swaplinedown"); - //string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_057) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress, Qt::Key_ydiaeresis + 3,Qt::NoModifier,"123"); - edit->m_settings = Settings::instance(); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - //Stub s2; - //s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit, scrollLineUp),retfalsestub); - - edit->m_readOnlyMode = false; - edit->m_bReadOnlyPermission=false; - string1 = Utils::getKeyshortcutFromKeymap(edit->m_settings, "editor", "scrolllineup"); - //string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_058) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress, Qt::Key_ydiaeresis + 3,Qt::NoModifier,"123"); - edit->m_settings = Settings::instance(); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - //Stub s2; - //s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit, scrollLineDown),retfalsestub); - - edit->m_readOnlyMode = false; - edit->m_bReadOnlyPermission=false; - string1 = Utils::getKeyshortcutFromKeymap(edit->m_settings, "editor", "scrolllinedown"); - //string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_059) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress, Qt::Key_ydiaeresis + 3,Qt::NoModifier,"123"); - edit->m_settings = Settings::instance(); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - //Stub s2; - //s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit, scrollUp),retfalsestub); - - edit->m_readOnlyMode = false; - edit->m_bReadOnlyPermission=false; - string1 = Utils::getKeyshortcutFromKeymap(edit->m_settings, "editor", "scrollup"); - //string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_060) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress, Qt::Key_ydiaeresis + 3,Qt::NoModifier,"123"); - edit->m_settings = Settings::instance(); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - //Stub s2; - //s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit, scrollDown),retfalsestub); - - edit->m_readOnlyMode = false; - edit->m_bReadOnlyPermission=false; - string1 = Utils::getKeyshortcutFromKeymap(edit->m_settings, "editor", "scrolldown"); - //string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_061) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress, Qt::Key_ydiaeresis + 3,Qt::NoModifier,"123"); - edit->m_settings = Settings::instance(); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - //Stub s2; - //s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit, moveToEndOfLine),retfalsestub); - - edit->m_readOnlyMode = false; - edit->m_bReadOnlyPermission=false; - string1 = Utils::getKeyshortcutFromKeymap(edit->m_settings, "editor", "movetoendofline"); - //string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_062) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress, Qt::Key_ydiaeresis + 3,Qt::NoModifier,"123"); - edit->m_settings = Settings::instance(); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - //Stub s2; - //s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit, moveToStartOfLine),retfalsestub); - - edit->m_readOnlyMode = false; - edit->m_bReadOnlyPermission=false; - string1 = Utils::getKeyshortcutFromKeymap(edit->m_settings, "editor", "movetostartofline"); - //string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_063) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress, Qt::Key_ydiaeresis + 3,Qt::NoModifier,"123"); - edit->m_settings = Settings::instance(); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - //Stub s2; - //s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit, moveToStart),retfalsestub); - - edit->m_readOnlyMode = false; - edit->m_bReadOnlyPermission=false; - string1 = Utils::getKeyshortcutFromKeymap(edit->m_settings, "editor", "movetostart"); - //string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_064) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress, Qt::Key_ydiaeresis + 3,Qt::NoModifier,"123"); - edit->m_settings = Settings::instance(); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - //Stub s2; - //s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit, moveToEnd),retfalsestub); - - edit->m_readOnlyMode = false; - edit->m_bReadOnlyPermission=false; - string1 = Utils::getKeyshortcutFromKeymap(edit->m_settings, "editor", "movetoend"); - //string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_065) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress, Qt::Key_ydiaeresis + 3,Qt::NoModifier,"123"); - edit->m_settings = Settings::instance(); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - //Stub s2; - //s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit, moveToLineIndentation),retfalsestub); - - edit->m_readOnlyMode = false; - edit->m_bReadOnlyPermission=false; - string1 = Utils::getKeyshortcutFromKeymap(edit->m_settings, "editor", "movetolineindentation"); - //string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_066) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress, Qt::Key_ydiaeresis + 3,Qt::NoModifier,"123"); - edit->m_settings = Settings::instance(); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - //Stub s2; - //s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit, upcaseWord),retfalsestub); - - edit->m_readOnlyMode = false; - edit->m_bReadOnlyPermission=false; - string1 = Utils::getKeyshortcutFromKeymap(edit->m_settings, "editor", "upcaseword"); - //string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_067) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress, Qt::Key_ydiaeresis + 3,Qt::NoModifier,"123"); - edit->m_settings = Settings::instance(); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - //Stub s2; - //s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit, downcaseWord),retfalsestub); - - edit->m_readOnlyMode = false; - edit->m_bReadOnlyPermission=false; - string1 = Utils::getKeyshortcutFromKeymap(edit->m_settings, "editor", "downcaseword"); - //string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_068) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress, Qt::Key_ydiaeresis + 3,Qt::NoModifier,"123"); - edit->m_settings = Settings::instance(); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - //Stub s2; - //s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit, capitalizeWord),retfalsestub); - - edit->m_readOnlyMode = false; - edit->m_bReadOnlyPermission=false; - string1 = Utils::getKeyshortcutFromKeymap(edit->m_settings, "editor", "capitalizeword"); - //string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_069) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress, Qt::Key_ydiaeresis + 3,Qt::NoModifier,"123"); - edit->m_settings = Settings::instance(); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - //Stub s2; - //s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit, killBackwardWord),retfalsestub); - - edit->m_readOnlyMode = false; - edit->m_bReadOnlyPermission=false; - string1 = Utils::getKeyshortcutFromKeymap(edit->m_settings, "editor", "killbackwardword"); - //string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_070) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress, Qt::Key_ydiaeresis + 3,Qt::NoModifier,"123"); - edit->m_settings = Settings::instance(); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - - edit->m_readOnlyMode = false; - edit->m_bReadOnlyPermission=false; - - Stub s3; - s3.set(ADDR(TextEdit, killForwardWord),retfalsestub); - string1 = Utils::getKeyshortcutFromKeymap(edit->m_settings, "editor", "killforwardword"); - edit->keyPressEvent(e); - - s3.set(ADDR(TextEdit, forwardPair),retfalsestub); - string1 = Utils::getKeyshortcutFromKeymap(edit->m_settings, "editor", "forwardpair"); - edit->keyPressEvent(e); - - s3.set(ADDR(TextEdit, backwardPair),retfalsestub); - string1 = Utils::getKeyshortcutFromKeymap(edit->m_settings, "editor", "backwardpair"); - edit->keyPressEvent(e); - - s3.set(ADDR(TextEdit, transposeChar),retfalsestub); - string1 = Utils::getKeyshortcutFromKeymap(edit->m_settings, "editor", "transposechar"); - edit->keyPressEvent(e); - - s3.set(ADDR(TextEdit, setMark),retfalsestub); - string1 = Utils::getKeyshortcutFromKeymap(edit->m_settings, "editor", "setmark"); - edit->keyPressEvent(e); - - s3.set(ADDR(TextEdit, exchangeMark),retfalsestub); - string1 = Utils::getKeyshortcutFromKeymap(edit->m_settings, "editor", "exchangemark"); - edit->keyPressEvent(e); - - s3.set(ADDR(TextEdit, joinLines),retfalsestub); - string1 = Utils::getKeyshortcutFromKeymap(edit->m_settings, "editor", "joinlines"); - edit->keyPressEvent(e); - - s3.set(ADDR(TextEdit, toggleReadOnlyMode),retfalsestub); - string1 = Utils::getKeyshortcutFromKeymap(edit->m_settings, "editor", "togglereadonlymode"); - edit->keyPressEvent(e); - - s3.set(ADDR(TextEdit, toggleReadOnlyMode),retfalsestub); - string1 = Utils::getKeyshortcutFromKeymap(edit->m_settings, "editor", "togglereadonlymode"); - edit->keyPressEvent(e); - - s3.set(ADDR(TextEdit, toggleComment),retfalsestub); - string1 = Utils::getKeyshortcutFromKeymap(edit->m_settings, "editor", "togglecomment"); - edit->keyPressEvent(e); - - s3.set(ADDR(TextEdit, addOrDeleteBookMark),retfalsestub); - string1 = Utils::getKeyshortcutFromKeymap(edit->m_settings, "editor", "switchbookmark"); - edit->keyPressEvent(e); - - s3.set(ADDR(TextEdit, moveToPreviousBookMark),retfalsestub); - string1 = Utils::getKeyshortcutFromKeymap(edit->m_settings, "editor", "movetoprebookmark"); - edit->keyPressEvent(e); - - s3.set(ADDR(TextEdit, moveToNextBookMark),retfalsestub); - string1 = Utils::getKeyshortcutFromKeymap(edit->m_settings, "editor", "movetonextbookmark"); - edit->keyPressEvent(e); - - s3.set(ADDR(TextEdit, toggleMarkSelections),retfalsestub); - string1 = Utils::getKeyshortcutFromKeymap(edit->m_settings, "editor", "mark"); - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_071) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress, Qt::Key_Insert,Qt::NoModifier,"123"); - edit->m_settings = Settings::instance(); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - //Stub s2; - //s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit, overwriteMode),retfalsestub); - - edit->m_readOnlyMode = false; - edit->m_bReadOnlyPermission=false; - string1 = "987"; - string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - -TEST(UT_TextEdit_KeyPressEvent, UT_TextEdit_KeyPressEvent_072) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QKeyEvent::KeyPress, Qt::Key_Insert,Qt::GroupSwitchModifier,"123"); - edit->m_settings = Settings::instance(); - - Stub s1; - s1.set(ADDR(Utils,getKeyshortcut),retstring1); - //Stub s2; - //s2.set(ADDR(Utils,getKeyshortcutFromKeymap),retstring2); - Stub s3; - s3.set(ADDR(TextEdit, overwriteMode),retfalsestub); - - edit->m_readOnlyMode = false; - edit->m_bReadOnlyPermission=false; - string1 = "Shift+Ins"; - string2 = "789"; - edit->keyPressEvent(e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e=nullptr; -} - - -TEST(UT_Textedit_resizeEvent, UT_Textedit_resizeEvent) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QResizeEvent* r = new QResizeEvent(QSize(30,30),QSize(20,20)); - - - edit->m_isSelectAll = true; - edit->resizeEvent(r); - - edit->m_isSelectAll = false; - edit->resizeEvent(r); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete r; - r = nullptr; -} - -TEST(UT_Textedit_dragMoveEvent, UT_Textedit_dragMoveEvent) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QMimeData* data = new QMimeData(); - data->setText("ddd"); - QDragMoveEvent* r = new QDragMoveEvent(QPoint(20,20),Qt::ActionMask,data,Qt::LeftButton,Qt::NoModifier); - - - QList urls = {{"123"},{"456"}}; - data->setUrls(urls); - edit->m_readOnlyMode = false; - edit->dragMoveEvent(r); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - data->deleteLater(); - delete r; - r = nullptr; -} - - -TEST(UT_Textedit_eventFilter, UT_Textedit_eventFilter_001) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QTouchEvent* e = new QTouchEvent(QEvent::TouchBegin); - - - edit->eventFilter(wra,e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - delete e; - e = nullptr; -} - -TEST(UT_Textedit_eventFilter, UT_Textedit_eventFilter_002) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QMouseEvent* e = new QMouseEvent(QEvent::MouseButtonPress,QPointF(20.0,20.0),QPointF(20.0,20.0),Qt::RightButton,Qt::RightButton,Qt::NoModifier); - - edit->m_rightMenu = new QMenu; - // QAction *exec(const QPoint &pos, QAction *at = nullptr); - typedef QAction * (*fptr)(QMenu*,const QPoint &, QAction *); - fptr A_foo = (fptr)((QAction *(QMenu::*)(const QPoint &, QAction *))&QMenu::exec); - Stub s1; - s1.set(A_foo,retintstub); - - intvalue=1; - edit->eventFilter(edit->m_pLeftAreaWidget->m_pBookMarkArea,e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - edit->m_rightMenu->deleteLater(); - delete e; - e = nullptr; -} - -TEST(UT_Textedit_eventFilter, UT_Textedit_eventFilter_003) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QMouseEvent* e = new QMouseEvent(QEvent::MouseButtonPress,QPointF(20.0,20.0),QPointF(20.0,20.0),Qt::LeftButton,Qt::LeftButton,Qt::NoModifier); - - edit->m_rightMenu = new QMenu; - // QAction *exec(const QPoint &pos, QAction *at = nullptr); - typedef QAction * (*fptr)(QMenu*,const QPoint &, QAction *); - fptr A_foo = (fptr)((QAction *(QMenu::*)(const QPoint &, QAction *))&QMenu::exec); - Stub s1; - s1.set(A_foo,retintstub); - Stub s2; - s2.set(ADDR(TextEdit,renderAllSelections),retintstub); - Stub s3; - s3.set(ADDR(Comment::CommentDefinition,isValid),rettruestub); - Stub s4; - s4.set(ADDR(QTextBlock,isVisible),rettruestub); -#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) - Stub s5; - //inline bool contains(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; - s5.set((bool (QString::*)(const QStringRef &, Qt::CaseSensitivity) const) ADDR(QString,contains),rettruestub); -#endif - Stub s6; - //s6.set(ADDR(QString,isEmpty),retfalsestub); - Stub s7; - s7.set((bool (QString::*) (const QString &, Qt::CaseSensitivity) const )ADDR(QString,startsWith),rettruestub); - Stub s8; - s8.set((bool (QString::*)(const QString &, Qt::CaseSensitivity) const) ADDR(QString,contains),rettruestub); - - - intvalue=1; - edit->eventFilter(edit->m_pLeftAreaWidget->m_pFlodArea,e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - edit->m_rightMenu->deleteLater(); - delete e; - e = nullptr; -} - -TEST(UT_Textedit_eventFilter, UT_Textedit_eventFilter_004) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QMouseEvent* e = new QMouseEvent(QEvent::MouseButtonPress,QPointF(20.0,20.0),QPointF(20.0,20.0),Qt::LeftButton,Qt::LeftButton,Qt::NoModifier); - - edit->m_rightMenu = new QMenu; - // QAction *exec(const QPoint &pos, QAction *at = nullptr); - typedef QAction * (*fptr)(QMenu*,const QPoint &, QAction *); - fptr A_foo = (fptr)((QAction *(QMenu::*)(const QPoint &, QAction *))&QMenu::exec); - Stub s1; - s1.set(A_foo,retintstub); - Stub s2; - s2.set(ADDR(TextEdit,renderAllSelections),retintstub); - Stub s3; - s3.set(ADDR(Comment::CommentDefinition,isValid),rettruestub); - Stub s4; - s4.set(ADDR(QTextBlock,isVisible),retfalsestub); -#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) - Stub s5; - //inline bool contains(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; - s5.set((bool (QString::*)(const QStringRef &, Qt::CaseSensitivity) const) ADDR(QString,contains),rettruestub); -#endif - Stub s6; - // s6.set(ADDR(QString,isEmpty),retfalsestub); - Stub s7; - s7.set((bool (QString::*) (const QString &, Qt::CaseSensitivity) const )ADDR(QString,startsWith),retfalsestub); - Stub s8; - s8.set((bool (QString::*)(const QString &, Qt::CaseSensitivity) const) ADDR(QString,contains),rettruestub); - - - intvalue=1; - edit->eventFilter(edit->m_pLeftAreaWidget->m_pFlodArea,e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - edit->m_rightMenu->deleteLater(); - delete e; - e = nullptr; -} - - - -TEST(UT_Textedit_eventFilter, UT_Textedit_eventFilter_005) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QMouseEvent* e = new QMouseEvent(QEvent::MouseButtonPress,QPointF(20.0,20.0),QPointF(20.0,20.0),Qt::RightButton,Qt::RightButton,Qt::NoModifier); - - edit->m_rightMenu = new QMenu; - // QAction *exec(const QPoint &pos, QAction *at = nullptr); - typedef QAction * (*fptr)(QMenu*,const QPoint &, QAction *); - fptr A_foo = (fptr)((QAction *(QMenu::*)(const QPoint &, QAction *))&QMenu::exec); - Stub s1; - s1.set(A_foo,retintstub); -#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) - Stub s2; - s2.set(ADDR(QList,contains),rettruestub); -#endif - Stub s3; - s3.set(ADDR(QTextBlock,isVisible),rettruestub); - - intvalue=1; - edit->m_listMainFlodAllPos.push_back(1); - edit->eventFilter(edit->m_pLeftAreaWidget->m_pFlodArea,e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - edit->m_rightMenu->deleteLater(); - delete e; - e = nullptr; -} - - -TEST(UT_Textedit_eventFilter, UT_Textedit_eventFilter_006) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QHoverEvent* e = new QHoverEvent(QEvent::HoverMove,QPointF(20.0,20.0),QPointF(30.0,30.0)); - - edit->m_rightMenu = new QMenu; - // QAction *exec(const QPoint &pos, QAction *at = nullptr); - typedef QAction * (*fptr)(QMenu*,const QPoint &, QAction *); - fptr A_foo = (fptr)((QAction *(QMenu::*)(const QPoint &, QAction *))&QMenu::exec); - Stub s1; - s1.set(A_foo,retintstub); -#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) - Stub s2; - s2.set(ADDR(QList,contains),rettruestub); -#endif - Stub s3; - s3.set(ADDR(QTextBlock,isVisible),retfalsestub); - Stub s4; - s4.set(ADDR(TextEdit,getHideRowContent),rettruestub); - Stub s5; - s5.set(ADDR(TextEdit,getLinePosYByLineNum),rettruestub); - - intvalue=1; - edit->m_listMainFlodAllPos.push_back(1); - edit->eventFilter(edit->m_pLeftAreaWidget->m_pFlodArea,e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - edit->m_rightMenu->deleteLater(); - delete e; - e = nullptr; -} - -TEST(UT_Textedit_eventFilter, UT_Textedit_eventFilter_007) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QHoverEvent* e = new QHoverEvent(QEvent::HoverMove,QPointF(20.0,20.0),QPointF(30.0,30.0)); - - edit->m_rightMenu = new QMenu; - // QAction *exec(const QPoint &pos, QAction *at = nullptr); - typedef QAction * (*fptr)(QMenu*,const QPoint &, QAction *); - fptr A_foo = (fptr)((QAction *(QMenu::*)(const QPoint &, QAction *))&QMenu::exec); - Stub s1; - s1.set(A_foo,retintstub); -#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) - Stub s2; - s2.set(ADDR(QList,contains),rettruestub); -#endif - Stub s3; - s3.set(ADDR(QTextBlock,isVisible),rettruestub); - Stub s4; - s4.set(ADDR(TextEdit,getHideRowContent),rettruestub); - Stub s5; - s5.set(ADDR(TextEdit,getHighLightRowContentLineNum),retintstub); - - - intvalue=4; - edit->m_listMainFlodAllPos.push_back(1); - edit->eventFilter(edit->m_pLeftAreaWidget->m_pFlodArea,e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - edit->m_rightMenu->deleteLater(); - delete e; - e = nullptr; -} - -TEST(UT_Textedit_eventFilter, UT_Textedit_eventFilter_008) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QHoverEvent* e = new QHoverEvent(QEvent::HoverLeave,QPointF(20.0,20.0),QPointF(30.0,30.0)); - - edit->m_rightMenu = new QMenu; - // QAction *exec(const QPoint &pos, QAction *at = nullptr); - typedef QAction * (*fptr)(QMenu*,const QPoint &, QAction *); - fptr A_foo = (fptr)((QAction *(QMenu::*)(const QPoint &, QAction *))&QMenu::exec); - Stub s1; - s1.set(A_foo,retintstub); -#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) - Stub s2; - s2.set(ADDR(QList,contains),rettruestub); -#endif - Stub s3; - s3.set(ADDR(QTextBlock,isVisible),rettruestub); - Stub s4; - s4.set(ADDR(TextEdit,getHideRowContent),rettruestub); - Stub s5; - s5.set(ADDR(TextEdit,getHighLightRowContentLineNum),retintstub); - - - intvalue=4; - edit->m_listMainFlodAllPos.push_back(1); - edit->eventFilter(edit->m_pLeftAreaWidget->m_pBookMarkArea,e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - edit->m_rightMenu->deleteLater(); - delete e; - e = nullptr; -} - -TEST(UT_Textedit_eventFilter, UT_Textedit_eventFilter_009) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QHoverEvent* e = new QHoverEvent(QEvent::HoverLeave,QPointF(20.0,20.0),QPointF(30.0,30.0)); - - edit->m_rightMenu = new QMenu; - // QAction *exec(const QPoint &pos, QAction *at = nullptr); - typedef QAction * (*fptr)(QMenu*,const QPoint &, QAction *); - fptr A_foo = (fptr)((QAction *(QMenu::*)(const QPoint &, QAction *))&QMenu::exec); - Stub s1; - s1.set(A_foo,retintstub); -#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) - Stub s2; - s2.set(ADDR(QList,contains),rettruestub); -#endif - Stub s3; - s3.set(ADDR(QTextBlock,isVisible),rettruestub); - Stub s4; - s4.set(ADDR(TextEdit,getHideRowContent),rettruestub); - Stub s5; - s5.set(ADDR(TextEdit,getHighLightRowContentLineNum),retintstub); - - - intvalue=4; - edit->m_listMainFlodAllPos.push_back(1); - edit->eventFilter(edit->m_pLeftAreaWidget->m_pFlodArea,e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - edit->m_rightMenu->deleteLater(); - delete e; - e = nullptr; -} - - -TEST(UT_Textedit_eventFilter, UT_Textedit_eventFilter_010) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QKeyEvent* e = new QKeyEvent(QEvent::KeyRelease,Qt::Key_Tab,Qt::NoModifier); - - edit->m_colorMarkMenu = new QMenu; - // QAction *exec(const QPoint &pos, QAction *at = nullptr); - typedef QAction * (*fptr)(QMenu*,const QPoint &, QAction *); - fptr A_foo = (fptr)((QAction *(QMenu::*)(const QPoint &, QAction *))&QMenu::exec); - Stub s1; - s1.set(A_foo,retintstub); -#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) - Stub s2; - s2.set(ADDR(QList,contains),rettruestub); -#endif - Stub s3; - s3.set(ADDR(QTextBlock,isVisible),rettruestub); - Stub s4; - s4.set(ADDR(TextEdit,getHideRowContent),rettruestub); - Stub s5; - s5.set(ADDR(TextEdit,getHighLightRowContentLineNum),retintstub); - - - intvalue=4; - edit->m_listMainFlodAllPos.push_back(1); - edit->eventFilter(edit->m_colorMarkMenu,e); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - edit->m_rightMenu->deleteLater(); - delete e; - e = nullptr; -} - - -TEST(UT_Textedit_updateMark, UT_Textedit_updateMark_002) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - - QTextEdit::ExtraSelection e1,e2; - //QList>; - edit->m_wordMarkSelections.push_back({e1,1}); - edit->m_wordMarkSelections.push_back({e2,2}); - - Stub s1; - s1.set(ADDR(QTextCursor,selectionEnd),retintstub); - Stub s2; - s2.set(ADDR(QTextCursor,selectionStart),retintstub2); - - intvalue=10000; - intvalue2=-10000; - edit->m_bIsInputMethod = true; - edit->updateMark(1,2,3); - - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); -} - -TEST(UT_Textedit_updateMark, UT_Textedit_updateMark_003) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - - QTextEdit::ExtraSelection e1,e2; - //QList>; - edit->m_wordMarkSelections.push_back({e1,1}); - edit->m_wordMarkSelections.push_back({e2,2}); - - Stub s1; - s1.set(ADDR(QTextCursor,selectionEnd),retintstub); - Stub s2; - s2.set(ADDR(QTextCursor,selectionStart),retintstub2); - - intvalue=10000; - intvalue2=-10000; - edit->m_bIsInputMethod = false; - edit->updateMark(1,2,3); - - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); -} - - -TEST(UT_Textedit_updateMark, UT_Textedit_updateMark_004) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - - QTextEdit::ExtraSelection e1,e2; - edit->m_wordMarkSelections.push_back({e1,1}); - edit->m_wordMarkSelections.push_back({e2,2}); - edit->m_mapWordMarkSelections[1]={e1}; - - Stub s1; - s1.set(ADDR(QTextCursor,selectionEnd),retintstub); - Stub s2; - s2.set(ADDR(QTextCursor,selectionStart),retintstub2); - Stub s3; - s3.set(ADDR(QTextCursor,position),retintstub); - - intvalue=10000; - intvalue2=-10000; - edit->m_bIsInputMethod = true; - edit->updateMark(1,2,3); - - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); -} - -TEST(UT_Textedit_clearMarksForTextCursor, UT_Textedit_clearMarksForTextCursor_001) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - - QTextEdit::ExtraSelection e1,e2; - //QList>; - edit->m_wordMarkSelections.push_back({e1,1}); - edit->m_wordMarkSelections.push_back({e2,2}); - - Stub s1; - s1.set(ADDR(QTextCursor,hasSelection),rettruestub); - - edit->clearMarksForTextCursor(); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); -} - - -TEST(UT_Textedit_clearMarksForTextCursor, UT_Textedit_clearMarksForTextCursor_002) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - - QTextEdit::ExtraSelection e1,e2; - //QList>; - edit->m_wordMarkSelections.push_back({e1,1}); - edit->m_wordMarkSelections.push_back({e2,2}); - - Stub s0; - s0.set(ADDR(QTextCursor,hasSelection),retfalsestub); - - Stub s1; - s1.set(ADDR(QTextCursor,selectionEnd),retintstub); - Stub s2; - s2.set(ADDR(QTextCursor,selectionStart),retintstub2); - Stub s3; - s3.set(ADDR(QTextCursor,position),retintstub); - - intvalue=10; - intvalue2=10; - edit->clearMarksForTextCursor(); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); -} - - -TEST(UT_Textedit_clearMarkOperationForCursor, UT_Textedit_clearMarkOperationForCursor_001) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - - TextEdit::MarkOperation e1,e2; - //QList>; - edit->m_markOperations.push_back({e1,1}); - edit->m_markOperations.push_back({e2,2}); - - Stub s1; - s1.set(ADDR(QTextCursor,hasSelection),rettruestub); - - edit->clearMarkOperationForCursor(e1.cursor); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); -} - - -TEST(UT_Textedit_tapAndHoldGestureTriggered, UT_Textedit_tapAndHoldGestureTriggered_001) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QTapAndHoldGesture * t = new QTapAndHoldGesture(); - - Stub s1; - s1.set(ADDR(QTapAndHoldGesture,state),retintstub); - - intvalue = 0; - edit->tapAndHoldGestureTriggered(t); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - t->deleteLater(); -} - -TEST(UT_Textedit_tapAndHoldGestureTriggered, UT_Textedit_tapAndHoldGestureTriggered_002) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QTapAndHoldGesture * t = new QTapAndHoldGesture(); - - Stub s1; - s1.set(ADDR(QTapAndHoldGesture,state),retintstub); - - intvalue = 1; - edit->tapAndHoldGestureTriggered(t); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - t->deleteLater(); -} - -TEST(UT_Textedit_tapAndHoldGestureTriggered, UT_Textedit_tapAndHoldGestureTriggered_003) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QTapAndHoldGesture * t = new QTapAndHoldGesture(); - - Stub s1; - s1.set(ADDR(QTapAndHoldGesture,state),retintstub); - - intvalue = 2; - edit->tapAndHoldGestureTriggered(t); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - t->deleteLater(); -} - -TEST(UT_Textedit_tapAndHoldGestureTriggered, UT_Textedit_tapAndHoldGestureTriggered_004) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QTapAndHoldGesture * t = new QTapAndHoldGesture(); - - Stub s1; - s1.set(ADDR(QTapAndHoldGesture,state),retintstub); - - intvalue = 3; - edit->tapAndHoldGestureTriggered(t); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - t->deleteLater(); -} - -TEST(UT_Textedit_tapAndHoldGestureTriggered, UT_Textedit_tapAndHoldGestureTriggered_005) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QTapAndHoldGesture * t = new QTapAndHoldGesture(); - - Stub s1; - s1.set(ADDR(QTapAndHoldGesture,state),retintstub); - - intvalue = 4; - edit->tapAndHoldGestureTriggered(t); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - t->deleteLater(); -} - -TEST(UT_Textedit_panTriggered, UT_Textedit_panTriggered_001) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QPanGesture * t = new QPanGesture(); - - Stub s1; - s1.set(ADDR(QPanGesture,state),retintstub); - - intvalue = 4; - edit->panTriggered(t); - intvalue = 3; - edit->panTriggered(t); - intvalue = 2; - edit->panTriggered(t); - intvalue = 1; - edit->panTriggered(t); - intvalue = 0; - edit->panTriggered(t); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - t->deleteLater(); -} - - -TEST(UT_Textedit_pinchTriggered, UT_Textedit_pinchTriggered_001) -{ - Window* w = new Window; - TextEdit* edit = new TextEdit(w); - EditWrapper* wra = new EditWrapper(w); - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QPinchGesture* t = new QPinchGesture(); - - - Stub s1; - s1.set(ADDR(QPanGesture,state),retintstub); - - intvalue = 4; - edit->pinchTriggered(t); - intvalue = 3; - edit->pinchTriggered(t); - intvalue = 2; - edit->pinchTriggered(t); - intvalue = 1; - edit->pinchTriggered(t); - intvalue = 0; - edit->pinchTriggered(t); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - w->deleteLater(); - t->deleteLater(); -} - -TEST(UT_Textedit_swipeTriggered, UT_Textedit_swipeTriggered_001) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - QPinchGesture* t = new QPinchGesture(); - - - edit->swipeTriggered(nullptr); - - EXPECT_NE(edit , nullptr); - edit->deleteLater(); - wra->deleteLater(); - t->deleteLater(); -} - -TEST(UT_Textedit_popRightMenu, UT_Textedit_popRightMenu_001) -{ -// Window* w = new Window; -// TextEdit* edit = new TextEdit(w); -// EditWrapper* wra = new EditWrapper(w); -// edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - -// edit->m_rightMenu = new QMenu; -// // QAction *exec(const QPoint &pos, QAction *at = nullptr); -// typedef QAction * (*fptr)(QMenu*,const QPoint &, QAction *); -// fptr A_foo = (fptr)((QAction *(QMenu::*)(const QPoint &, QAction *))&QMenu::exec); -// Stub s1; -// s1.set(A_foo,retintstub); - -// Stub s2; -// s2.set(ADDR(QUndoStack,canUndo),rettruestub); -// Stub s3; -// s3.set(ADDR(QUndoStack,canRedo),rettruestub); -// Stub s4; -// s4.set(ADDR(QTextCursor,hasSelection),rettruestub); -// Stub s5; -// s5.set(ADDR(TextEdit,canPaste),rettruestub); -// Stub s6; -// s6.set(ADDR(QTextDocument,isEmpty),retfalsestub); -// Stub s7; -// s7.set(ADDR(TextEdit,characterCount),retintstub); -// Stub s8; -// s8.set(ADDR(QString,isEmpty),retfalsestub); -// Stub s9; -// s9.set(ADDR(TextEdit,renderAllSelections),rettruestub); -// //s9.set(ADDR(QDBusConnection,call),rettruestub); -// s9.set(ADDR(QDBusConnection,sessionBus),sessionBusstub); -// //inline QDBusReply& operator=(const QDBusMessage & dbusError) -// // s9.set((QDBusReply& (QDBusReply::*) (const QDBusMessage &))ADDR(QDBusReply,operator=), rettruestub); -// //inline QDBusReply& operator=(const QDBusError& dbusError) -// // s9.set((QDBusReply& (QDBusReply::*) (const QDBusError &))ADDR(QDBusReply,operator=), rettruestub); - -// intvalue=1; -// edit->m_bReadOnlyPermission = false; -// edit->popRightMenu(QPoint(10,10)); - -// EXPECT_NE(edit , nullptr); -// edit->deleteLater(); -// wra->deleteLater(); -// w->deleteLater(); -} - - -TEST(UT_Textedit_popRightMenu, UT_Textedit_popRightMenu_002) -{ -// Window* w = new Window; -// TextEdit* edit = new TextEdit(w); -// EditWrapper* wra = new EditWrapper(w); -// edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - -// edit->m_rightMenu = new QMenu; -// edit->m_colorMarkMenu = new QMenu; -// // QAction *exec(const QPoint &pos, QAction *at = nullptr); -// typedef QAction * (*fptr)(QMenu*,const QPoint &, QAction *); -// fptr A_foo = (fptr)((QAction *(QMenu::*)(const QPoint &, QAction *))&QMenu::exec); -// Stub s1; -// s1.set(A_foo,retintstub); - -// Stub s2; -// s2.set(ADDR(QUndoStack,canUndo),rettruestub); -// Stub s3; -// s3.set(ADDR(QUndoStack,canRedo),rettruestub); -// Stub s4; -// s4.set(ADDR(QTextCursor,hasSelection),rettruestub); -// Stub s5; -// s5.set(ADDR(TextEdit,canPaste),rettruestub); -// Stub s6; -// s6.set(ADDR(QTextDocument,isEmpty),retfalsestub); -// Stub s7; -// s7.set(ADDR(TextEdit,characterCount),retintstub); -// Stub s8; -// s8.set(ADDR(QString,isEmpty),retfalsestub); -// Stub s10; -// s10.set(ADDR(QPoint,y),retintstub); -// s10.set(ADDR(TextEdit,renderAllSelections),rettruestub); -// s10.set(ADDR(QDBusConnection,sessionBus),sessionBusstub); -// //s10.set((QDBusReply& (QDBusReply::*) (const QDBusMessage &))ADDR(QDBusReply,operator=), rettruestub); - -// TextEdit::MarkOperation m1,m2; -// edit->m_markOperations.push_back({m1,1}); -// edit->m_markOperations.push_back({m2,2}); -// intvalue=1; -// edit->m_bReadOnlyPermission = false; -// edit->popRightMenu(QPoint(10,10)); - -// EXPECT_NE(edit , nullptr); -// edit->deleteLater(); -// wra->deleteLater(); -// w->deleteLater(); -} - -TEST(UT_Textedit_unindentText, UT_Textedit_unindentText) -{ - Window* w = new Window; - TextEdit* edit = new TextEdit(w); - EditWrapper* wra = new EditWrapper(w); - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - - edit->unindentText(); - - EXPECT_NE(edit,nullptr); - edit->deleteLater(); - wra->deleteLater(); - w->deleteLater(); -} - -// static QList > convertMarkFromReplace(const QList &replaceInfo); -TEST(UT_Textedit_convertMark, UT_Textedit_convertMarkToReplace) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - - edit->setPlainText("12345\n" - "12345\n" - "12345\n"); - - QList > markInfo; - TextEdit::MarkOperation opt; - opt.type = TextEdit::MarkOnce; - opt.color = "#E5E5E5"; - opt.cursor = edit->textCursor(); - opt.cursor.setPosition(1); - opt.cursor.movePosition(QTextCursor::NextCharacter, QTextCursor::KeepAnchor, 5); - opt.matchText = opt.cursor.selectedText(); - markInfo.append(qMakePair(opt, 100)); - - TextEdit::MarkOperation opt2; - markInfo.append(qMakePair(opt2, 200)); - - auto replaceInfo = TextEdit::convertMarkToReplace(markInfo); - EXPECT_EQ(replaceInfo.size(), markInfo.size()); - - if (replaceInfo.size() == markInfo.size()) { - for (int i = 0; i < replaceInfo.size(); ++i) { - auto &mark = markInfo[i]; - auto &replace = replaceInfo[i]; - - EXPECT_EQ(mark.first.type, replace.opt.type); - EXPECT_EQ(mark.first.color, replace.opt.color); - EXPECT_EQ(mark.first.cursor.selectionStart(), replace.start); - EXPECT_EQ(mark.first.cursor.selectionEnd(), replace.end); - EXPECT_EQ(mark.second, replace.time); - } - } - - edit->deleteLater(); - wra->deleteLater(); -} - -// static QList convertReplaceToMark(const QList > &markInfo); -TEST(UT_Textedit_convertMark, UT_Textedit_convertReplaceToMark) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - - edit->setPlainText("12345\n" - "12345\n" - "12345\n"); - - QList replaceInfo; - TextEdit::MarkReplaceInfo replace1; - replace1.opt.type = TextEdit::MarkOnce; - replace1.opt.color = "#E5E5E5"; - replace1.opt.cursor = edit->textCursor(); - replace1.start = 1; - replace1.end = 6; - replace1.time = INT_MAX; - replaceInfo.append(replace1); - - TextEdit::MarkReplaceInfo replace2; - replaceInfo.append(replace2); - - auto markInfo = TextEdit::convertReplaceToMark(replaceInfo); - EXPECT_EQ(replaceInfo.size(), markInfo.size()); - - if (replaceInfo.size() == markInfo.size()) { - for (int i = 0; i < replaceInfo.size(); ++i) { - auto &mark = markInfo[i]; - auto &replace = replaceInfo[i]; - - EXPECT_EQ(mark.first.type, replace.opt.type); - EXPECT_EQ(mark.first.color, replace.opt.color); - if (!mark.first.cursor.isNull()) { - EXPECT_EQ(mark.first.cursor.selectionStart(), replace.start); - EXPECT_EQ(mark.first.cursor.selectionEnd(), replace.end); - } - EXPECT_EQ(mark.second, replace.time); - } - } - - edit->deleteLater(); - wra->deleteLater(); -} - -// 替换文本在颜色标记左侧 -TEST(UT_Textedit_replaceWithMark, UT_Textedit_replaceWithRightMark) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - - QStringList markList {"45", "89\n", "hi\n1a", "d5\n"}; - - for (auto markText : markList) { - edit->setPlainText("123456789\n" - "abcdefghi\n" - "1a2b3c4d5\n"); - - QTextCursor cursor = edit->findCursor(markText, edit->toPlainText(), 0); - // note: 含跨行符时,Qt自动替换换行为Unicode U+2029,详见QTextCursor::selectedText()帮助 - EXPECT_EQ(cursor.selectedText().replace("\u2029", "\n"), markText); - int oldStart = cursor.selectionStart(); - int oldEnd = cursor.selectionEnd(); - - edit->setTextCursor(cursor); - edit->isMarkCurrentLine(true, "#E5E5E5"); - edit->renderAllSelections(); - EXPECT_FALSE(edit->extraSelections().isEmpty()); - - QString replaceText = "12"; - QString withText = "abcd"; - edit->replaceAll(replaceText, withText); - - QTextCursor newCursor = edit->textCursor(); - newCursor.setPosition(oldStart + withText.size() - replaceText.size()); - newCursor.movePosition(QTextCursor::NextCharacter, QTextCursor::KeepAnchor, oldEnd - oldStart); - QColor cursorColor = newCursor.charFormat().background().color(); - EXPECT_EQ(markText, newCursor.selectedText().replace("\u2029", "\n")); - - // 使用拓展标记判断颜色标记 - bool find = false; - for (auto extra : edit->extraSelections()) { - if (extra.cursor.selectionStart() == newCursor.selectionStart()) { - EXPECT_EQ(extra.cursor.selectionEnd(), newCursor.selectionEnd()); - EXPECT_EQ(extra.format.background().color(), QColor("#E5E5E5")); - - find = true; - break; - } - } - EXPECT_TRUE(find); - - edit->slotCancleMarkAllLine(false); - } - - edit->deleteLater(); - wra->deleteLater(); -} - -// 替换文本和颜色标记存在交集 -TEST(UT_Textedit_replaceWithMark, UT_Textedit_replaceWithIntersectMark) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - - edit->setPlainText("123456789\n" - "abcdefghi\n" - "1a2b3c4d5\n"); - QString strColor = "#E5E5E5"; - // 选中 "456" - QString markText = "456"; - QTextCursor cursor = edit->findCursor(markText, edit->toPlainText(), 0); - // note: 含跨行符时,Qt自动替换换行为Unicode U+2029,详见QTextCursor::selectedText()帮助 - EXPECT_EQ(cursor.selectedText().replace("\u2029", "\n"), markText); - - edit->setTextCursor(cursor); - edit->isMarkCurrentLine(true, strColor); - edit->renderAllSelections(); - EXPECT_FALSE(edit->extraSelections().isEmpty()); - - QString replaceText = "567"; - QString withText = "x567x"; - // "1234x567x89\n" - edit->replaceAll(replaceText, withText); - EXPECT_FALSE(edit->m_wordMarkSelections.isEmpty()); - if (!edit->m_wordMarkSelections.isEmpty()) { - auto markInfo = edit->m_wordMarkSelections.first(); - QString selectText = markInfo.first.cursor.selectedText().replace("\u2029", "\n"); - EXPECT_EQ(selectText, QString("4x567x")); - EXPECT_EQ(markInfo.first.format.background().color(), QColor(strColor)); - } - - replaceText = "234"; - withText = "-234-"; - // "1-234-x567x89\n" - edit->replaceAll(replaceText, withText); - EXPECT_FALSE(edit->m_wordMarkSelections.isEmpty()); - if (!edit->m_wordMarkSelections.isEmpty()) { - auto markInfo = edit->m_wordMarkSelections.first(); - QString selectText = markInfo.first.cursor.selectedText().replace("\u2029", "\n"); - EXPECT_EQ(selectText, QString("-234-x567x")); - EXPECT_EQ(markInfo.first.format.background().color(), QColor(strColor)); - } - - replaceText = "x89\n"; - withText = "x89\n123"; - // "1-234-x567x89\n123" - edit->replaceAll(replaceText, withText); - EXPECT_FALSE(edit->m_wordMarkSelections.isEmpty()); - if (!edit->m_wordMarkSelections.isEmpty()) { - auto markInfo = edit->m_wordMarkSelections.first(); - QString selectText = markInfo.first.cursor.selectedText().replace("\u2029", "\n"); - EXPECT_EQ(selectText, QString("-234-x567x89\n123")); - EXPECT_EQ(markInfo.first.format.background().color(), QColor(strColor)); - } - - edit->deleteLater(); - wra->deleteLater(); -} - -// 替换文本和颜色标记处于边界,不应互相影响 -TEST(UT_Textedit_replaceWithMark, UT_Textedit_replaceWithBoundnaryMark) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - - edit->setPlainText("123456789\n"); - QString strColor = "#E5E5E5"; - // 选中 "456" - QString markText = "456"; - QTextCursor cursor = edit->findCursor(markText, edit->toPlainText(), 0); - // note: 含跨行符时,Qt自动替换换行为Unicode U+2029,详见QTextCursor::selectedText()帮助 - EXPECT_EQ(cursor.selectedText().replace("\u2029", "\n"), markText); - - edit->setTextCursor(cursor); - edit->isMarkCurrentLine(true, strColor); - edit->renderAllSelections(); - EXPECT_FALSE(edit->extraSelections().isEmpty()); - - QString replaceText = "123"; - QString withText = "x123x"; - // "x123x456789\n" - edit->replaceAll(replaceText, withText); - EXPECT_FALSE(edit->m_wordMarkSelections.isEmpty()); - if (!edit->m_wordMarkSelections.isEmpty()) { - auto markInfo = edit->m_wordMarkSelections.first(); - QString selectText = markInfo.first.cursor.selectedText().replace("\u2029", "\n"); - EXPECT_EQ(selectText, QString("456")); - EXPECT_EQ(markInfo.first.format.background().color(), QColor(strColor)); - } - - replaceText = "789"; - withText = "x789x"; - // "x123x456x789x\n" - edit->replaceAll(replaceText, withText); - EXPECT_FALSE(edit->m_wordMarkSelections.isEmpty()); - if (!edit->m_wordMarkSelections.isEmpty()) { - auto markInfo = edit->m_wordMarkSelections.first(); - QString selectText = markInfo.first.cursor.selectedText().replace("\u2029", "\n"); - EXPECT_EQ(selectText, QString("456")); - EXPECT_EQ(markInfo.first.format.background().color(), QColor(strColor)); - } - - edit->deleteLater(); - wra->deleteLater(); -} - -// 颜色标记有多组替换文本 -TEST(UT_Textedit_replaceWithMark, UT_Textedit_markWithMultiReplace) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - - edit->setPlainText("123123123123\n"); - QString strColor = "#E5E5E5"; - // 选中 "31231231" - QTextCursor cursor = edit->textCursor(); - cursor.setPosition(2); - cursor.movePosition(QTextCursor::NextCharacter, QTextCursor::KeepAnchor, 8); - EXPECT_EQ(cursor.selectedText().replace("\u2029", "\n"), QString("31231231")); - - edit->setTextCursor(cursor); - edit->isMarkCurrentLine(true, strColor); - edit->renderAllSelections(); - EXPECT_FALSE(edit->extraSelections().isEmpty()); - - QString replaceText = "123"; - QString withText = "x123x"; - // "x123xx123xx123xx123x\n" - edit->replaceAll(replaceText, withText); - EXPECT_FALSE(edit->m_wordMarkSelections.isEmpty()); - if (!edit->m_wordMarkSelections.isEmpty()) { - auto markInfo = edit->m_wordMarkSelections.first(); - QString selectText = markInfo.first.cursor.selectedText().replace("\u2029", "\n"); - EXPECT_EQ(selectText, QString("x123xx123xx123xx123x")); - EXPECT_EQ(markInfo.first.cursor.selectionStart(), 0); - EXPECT_EQ(markInfo.first.cursor.selectionEnd(), selectText.size()); - EXPECT_EQ(markInfo.first.format.background().color(), QColor(strColor)); - } - - // 重置 - edit->slotCancleMarkAllLine(); - edit->setPlainText("xxxxxx\n"); - // 选中中间的两组x - cursor.setPosition(2); - cursor.movePosition(QTextCursor::NextCharacter, QTextCursor::KeepAnchor, 2); - EXPECT_EQ(cursor.selectedText().replace("\u2029", "\n"), QString("xx")); - edit->setTextCursor(cursor); - edit->isMarkCurrentLine(true, strColor); - edit->renderAllSelections(); - EXPECT_FALSE(edit->extraSelections().isEmpty()); - - replaceText = "x"; - withText = "xy"; - // "xyxyxyxyxyxy\n" - edit->replaceAll(replaceText, withText); - EXPECT_FALSE(edit->m_wordMarkSelections.isEmpty()); - if (!edit->m_wordMarkSelections.isEmpty()) { - auto markInfo = edit->m_wordMarkSelections.first(); - QString selectText = markInfo.first.cursor.selectedText().replace("\u2029", "\n"); - EXPECT_EQ(selectText, QString("xyxy")); - EXPECT_EQ(markInfo.first.cursor.selectionStart(), 4); - EXPECT_EQ(markInfo.first.cursor.selectionEnd(), 8); - EXPECT_EQ(markInfo.first.format.background().color(), QColor(strColor)); - } - - edit->deleteLater(); - wra->deleteLater(); -} - - -// 替换文本在单行颜色标记内部 -TEST(UT_Textedit_replaceWithMark, UT_Textedit_replaceWithLineMark) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - - edit->setPlainText("123456789\n" - "abcdefghi\n" - "1a2b3c4d5\n"); - QString strColor = "#E5E5E5"; - QTextCursor cursor = edit->textCursor(); - cursor.setPosition(0); - - edit->setTextCursor(cursor); - // 选中首行 "123456789" 不包括换行符 - edit->isMarkCurrentLine(true, strColor); - edit->renderAllSelections(); - EXPECT_FALSE(edit->m_wordMarkSelections.isEmpty()); - - QString replaceText = "12"; - QString withText = "xxxx"; - // "xxxx3456789" - edit->replaceAll(replaceText, withText); - EXPECT_FALSE(edit->m_wordMarkSelections.isEmpty()); - - auto checkSelection = [&](const QString &cmpStr)->bool { - bool find = false; - for (auto selection : edit->m_wordMarkSelections) { - QString selectText = selection.first.cursor.selectedText().replace("\u2029", "\n"); - if (selectText == cmpStr) { - EXPECT_EQ(selection.first.format.background().color(), QColor(strColor)); - find = true; - break; - } - } - return find; - }; - EXPECT_TRUE(checkSelection("xxxx3456789")); - - replaceText = "xxxx"; - withText = "12"; - // "123456789" - edit->replaceAll(replaceText, withText); - EXPECT_FALSE(edit->m_wordMarkSelections.isEmpty()); - EXPECT_TRUE(checkSelection("123456789")); - - replaceText = "6789\nabcd"; - withText = ""; - // "12345efghi" - edit->replaceAll(replaceText, withText); - EXPECT_FALSE(edit->m_wordMarkSelections.isEmpty()); - EXPECT_TRUE(checkSelection("12345efghi")); - - edit->deleteLater(); - wra->deleteLater(); -} - -// 替换文本跨过了单行颜色标记,形成多行颜色标记 -TEST(UT_Textedit_replaceWithMark, UT_Textedit_replaceWithMultiLineMark) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - - edit->setPlainText("123456789\n" - "abcdefghi\n" - "1a2b3c4d5\n"); - QString strColor = "#E5E5E5"; - QTextCursor cursor = edit->textCursor(); - cursor.setPosition(0); - - edit->setTextCursor(cursor); - // 选中首行 "123456789" 不包括换行符 - edit->isMarkCurrentLine(true, strColor); - edit->renderAllSelections(); - EXPECT_FALSE(edit->m_wordMarkSelections.isEmpty()); - - QString replaceText = "34"; - QString withText = "34\n34"; - // "1234" -> "1234\n34" - edit->replaceAll(replaceText, withText); - EXPECT_FALSE(edit->m_wordMarkSelections.isEmpty()); - EXPECT_EQ(edit->m_wordMarkSelections.size(), 2); - - edit->deleteLater(); - wra->deleteLater(); -} - -// 替换文本包含了颜色标记 -TEST(UT_Textedit_replaceWithMark, UT_Textedit_replaceWithInnerMark) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - - edit->setPlainText("123456789\n" - "abcdefghi\n"); - QString strColor = "#E5E5E5"; - QTextCursor cursor = edit->textCursor(); - // 选中"6789\nabcd" - cursor.setPosition(5); - cursor.movePosition(QTextCursor::NextCharacter, QTextCursor::KeepAnchor, 9); - - edit->setTextCursor(cursor); - edit->isMarkCurrentLine(true, strColor); - edit->renderAllSelections(); - EXPECT_FALSE(edit->m_wordMarkSelections.isEmpty()); - - QString replaceText = "456789\nabcdef"; - QString withText = ""; - // 替换后不存在标记 "" 将被移除 - edit->replaceAll(replaceText, withText); - EXPECT_TRUE(edit->m_wordMarkSelections.isEmpty()); - - edit->deleteLater(); - wra->deleteLater(); -} - -// 替换文本在颜色标记内部 -TEST(UT_Textedit_replaceWithMark, UT_Textedit_replaceWithOutterMark) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - - edit->setPlainText("123456789\n" - "abcdefghi\n"); - QString strColor = "#E5E5E5"; - QTextCursor cursor = edit->textCursor(); - // 选中"6789\nabcd" - cursor.setPosition(5); - cursor.movePosition(QTextCursor::NextCharacter, QTextCursor::KeepAnchor, 9); - - edit->setTextCursor(cursor); - edit->isMarkCurrentLine(true, strColor); - edit->renderAllSelections(); - EXPECT_FALSE(edit->m_wordMarkSelections.isEmpty()); - - QString replaceText = "89\n"; - QString withText = ""; - // "67abcd" - edit->replaceAll(replaceText, withText); - EXPECT_FALSE(edit->m_wordMarkSelections.isEmpty()); - - if (!edit->m_wordMarkSelections.isEmpty()) { - auto markInfo = edit->m_wordMarkSelections.first(); - QString selectText = markInfo.first.cursor.selectedText().replace("\u2029", "\n"); - EXPECT_EQ(selectText, QString("67abcd")); - EXPECT_EQ(markInfo.first.format.background().color(), QColor(strColor)); - } - - edit->deleteLater(); - wra->deleteLater(); -} - -TEST(UT_Textedit_selectText, SelectText_SingleBlock_Pass) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - - edit->setPlainText("123456789\n"); - // 选中 "456" - QTextCursor cursor = edit->textCursor(); - cursor.setPosition(3); - cursor.movePosition(QTextCursor::NextCharacter, QTextCursor::KeepAnchor, 3); - edit->setTextCursor(cursor); - - EXPECT_EQ(cursor.selectedText(), edit->selectedText()); - EXPECT_EQ(QString("456"), edit->selectedText()); - - edit->deleteLater(); - wra->deleteLater(); -} - -TEST(UT_Textedit_selectText, SelectText_MultiBlock_Pass) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - - edit->setPlainText("123456789\n" - "abcdefghi\n" - "123456789\n"); - // 选中 "789\nabc" - QString str1 = QString("789\nabc"); - QTextCursor cursor = edit->textCursor(); - cursor.setPosition(6); - cursor.movePosition(QTextCursor::NextCharacter, QTextCursor::KeepAnchor, str1.length()); - edit->setTextCursor(cursor); - EXPECT_EQ(cursor.selectedText().replace("\u2029", "\n"), edit->selectedText()); - EXPECT_EQ(str1, edit->selectedText()); - - // 选中 "789\nabcdefghi\n123" - QString str2 = QString("789\nabcdefghi\n123"); - cursor.setPosition(6); - cursor.movePosition(QTextCursor::NextCharacter, QTextCursor::KeepAnchor, str2.length()); - edit->setTextCursor(cursor); - EXPECT_EQ(cursor.selectedText().replace("\u2029", "\n"), edit->selectedText()); - EXPECT_EQ(str2, edit->selectedText()); - - // 选中 "789\nabcdefghi\n123456789\n" - QString str3 = QString("789\nabcdefghi\n123456789\n"); - cursor.setPosition(6); - cursor.movePosition(QTextCursor::NextCharacter, QTextCursor::KeepAnchor, str3.length()); - edit->setTextCursor(cursor); - EXPECT_EQ(cursor.selectedText().replace("\u2029", "\n"), edit->selectedText()); - EXPECT_EQ(str3, edit->selectedText()); - - edit->deleteLater(); - wra->deleteLater(); -} - -TEST(UT_Textedit_selectText, SelectText_MultiBlock_MultiByte_Pass) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - - // 此字符串为特殊多字节编码 CJK - // "𢝐𢝑𢝒𢝓𢝔𢝕𢝖𢝗𢝘𢝙\n𢝚𢝛𢝜𢝝𢝞𢝟𢝠𢝡𢝢𢝣\n𢝤𢝥𢝦𢝧𢝨𢝩𢝪𢝫𢝬𢝭\n" - QString multiByteText("\360\242\235\220\360\242\235\221\360\242\235\222\360\242\235\223\360\242\235\224" - "\360\242\235\225\360\242\235\226\360\242\235\227\360\242\235\230\360\242\235\231\n" - "\360\242\235\232\360\242\235\233\360\242\235\234\360\242\235\235\360\242\235\236" - "\360\242\235\237\360\242\235\240\360\242\235\241\360\242\235\242\360\242\235\243\n" - "\360\242\235\244\360\242\235\245\360\242\235\246\360\242\235\247\360\242\235\250" - "\360\242\235\251\360\242\235\252\360\242\235\253\360\242\235\254\360\242\235\255\n"); - edit->setPlainText(multiByteText); - // 选中 "𢝘𢝙\n𢝚𢝛" - QString str1 = QString("\360\242\235\230\360\242\235\231\n\360\242\235\232\360\242\235\233"); - QTextCursor cursor = edit->textCursor(); - cursor.setPosition(16); - cursor.setPosition(16 + str1.length(), QTextCursor::KeepAnchor); - edit->setTextCursor(cursor); - EXPECT_EQ(cursor.selectedText().replace("\u2029", "\n"), edit->selectedText()); - EXPECT_EQ(str1, edit->selectedText()); - - // 选中 "𢝘𢝙\n𢝚𢝛𢝜𢝝𢝞𢝟𢝠𢝡𢝢𢝣\n𢝤𢝥" - QString str2 = multiByteText.mid(16, 30); - cursor.setPosition(16); - cursor.setPosition(16 + str2.length(), QTextCursor::KeepAnchor); - edit->setTextCursor(cursor); - EXPECT_EQ(cursor.selectedText().replace("\u2029", "\n"), edit->selectedText()); - EXPECT_EQ(str2, edit->selectedText()); - - // 选中 "𢝘𢝙\n𢝚𢝛𢝜𢝝𢝞𢝟𢝠𢝡𢝢𢝣\n𢝤𢝥𢝦𢝧𢝨𢝩𢝪𢝫𢝬𢝭\n" - QString str3 = multiByteText.mid(16); - cursor.setPosition(16); - cursor.setPosition(16 + str3.length(), QTextCursor::KeepAnchor); - edit->setTextCursor(cursor); - EXPECT_EQ(cursor.selectedText().replace("\u2029", "\n"), edit->selectedText()); - EXPECT_EQ(str3, edit->selectedText()); - edit->deleteLater(); - wra->deleteLater(); -} - -TEST(UT_Textedit_MidButtonInsertText, onTextContentChanged_MidButtonInsertText_Pass) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - - Stub s1; - s1.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - s1.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - - QString sourceText("123456789"); - edit->setPlainText(sourceText); - edit->m_MidButtonPatse = true; - - QString insertText("test"); - QTextCursor cursor = edit->textCursor(); - cursor.setPosition(4); - // 插入触发 onTextContentChanged() - cursor.insertText(insertText); - - EXPECT_TRUE(edit->m_pUndoStack->canUndo()); - edit->m_pUndoStack->undo(); - EXPECT_EQ(edit->toPlainText(), sourceText); - - cursor = edit->textCursor(); - EXPECT_EQ(cursor.position(), 4); - - EXPECT_FALSE(edit->m_MidButtonPatse); - - edit->deleteLater(); - wra->deleteLater(); -} - -DPalette stubApplicationPalette() -{ - DPalette pa; - pa.setColor(DPalette::Highlight, QColor(Qt::red)); - return pa; -} - -TEST(UT_Textedit_onAppPaletteChanged, OnAppPaletteChanged_ChangeBackground_Pass) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - - Stub s; - s.set((DPalette(DGuiApplicationHelper::*)() const)(&DGuiApplicationHelper::applicationPalette), stubApplicationPalette); - - QTextEdit::ExtraSelection selection; - selection.format.setBackground(QBrush(Qt::white)); - edit->m_altModSelections.append(selection); - edit->m_bIsAltMod = true; - edit->onAppPaletteChanged(); - - ASSERT_FALSE(edit->m_altModSelections.isEmpty()); - QBrush background = edit->m_altModSelections.first().format.background(); - EXPECT_EQ(QColor(Qt::red), background.color()); - - edit->deleteLater(); - wra->deleteLater(); -} - -TEST(UT_Textedit_MoveText, moveText_Move_Pass) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - __stub_undo_redo.set(ADDR(Window, updateModifyStatus), stub_updateModifyStatus); - - QString sourceText("123456789\n"); - edit->setPlainText(sourceText); - - edit->moveText(0, 10, "12"); - EXPECT_EQ(edit->toPlainText(), QString("3456789\n12")); - edit->undo_(); - EXPECT_EQ(edit->toPlainText(), sourceText); - edit->redo_(); - EXPECT_EQ(edit->toPlainText(), QString("3456789\n12")); - - edit->deleteLater(); - wra->deleteLater(); -} - -TEST(UT_Textedit_MoveText, moveText_Copy_Pass) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - __stub_undo_redo.set(ADDR(Window, updateModifyStatus), stub_updateModifyStatus); - - QString sourceText("123456789\n"); - edit->setPlainText(sourceText); - - edit->moveText(0, 10, "12", true); - EXPECT_EQ(edit->toPlainText(), QString("123456789\n12")); - edit->undo_(); - EXPECT_EQ(edit->toPlainText(), sourceText); - edit->redo_(); - EXPECT_EQ(edit->toPlainText(), QString("123456789\n12")); - - edit->deleteLater(); - wra->deleteLater(); -} - -TEST(UT_Textedit_MoveText, moveText_Multi_Pass) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - __stub_undo_redo.set(ADDR(Window, updateModifyStatus), stub_updateModifyStatus); - - edit->insertTextEx(edit->textCursor(), "1\n"); - edit->insertTextEx(edit->textCursor(), "2\n"); - EXPECT_EQ(edit->toPlainText(), QString("1\n2\n")); - - edit->moveText(2, 1, "2"); - EXPECT_EQ(edit->toPlainText(), QString("12\n\n")); - edit->moveText(0, 4, "12"); - EXPECT_EQ(edit->toPlainText(), QString("\n\n12")); - edit->moveText(2, 0, "12", true); - EXPECT_EQ(edit->toPlainText(), QString("12\n\n12")); - - while(edit->m_pUndoStack->canUndo()) { - edit->undo_(); - } - EXPECT_TRUE(edit->toPlainText().isEmpty()); - while(edit->m_pUndoStack->canRedo()) { - edit->redo_(); - } - EXPECT_EQ(edit->toPlainText(), QString("12\n\n12")); - - edit->deleteLater(); - wra->deleteLater(); -} - -TEST(UT_Textedit_onPressedLineNumber, onPressedLineNumber_BoundaryCheck_Pass) -{ - // 边界检查 - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - - edit->onPressedLineNumber(QPoint(0, 0)); - EXPECT_EQ(edit->textCursor().position(), 0); - - edit->onPressedLineNumber(QPoint(0, 100)); - EXPECT_EQ(edit->textCursor().position(), 0); - - edit->insertTextEx(edit->textCursor(), "123\n222\n333"); - auto cursor = edit->textCursor(); - cursor.setPosition(0); - edit->setTextCursor(cursor); - edit->onPressedLineNumber(QPoint(-1, -1)); - EXPECT_EQ(edit->textCursor().position(), 0); - EXPECT_TRUE(edit->textCursor().selectedText().isEmpty()); - - edit->onPressedLineNumber(QPoint(INT_MAX, INT_MAX)); - EXPECT_EQ(edit->textCursor().position(), 0); - EXPECT_TRUE(edit->textCursor().selectedText().isEmpty()); - - edit->deleteLater(); - wra->deleteLater(); -} - -TEST(UT_Textedit_onPressedLineNumber, onPressedLineNumber_MultiBlock_Pass) -{ - // 多行不同位置选取 - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - - edit->insertTextEx(edit->textCursor(), "123\n222\n333"); - QTextCursor cursor = edit->textCursor(); - - QTextBlock selectBlock = edit->document()->firstBlock(); - cursor.setPosition(selectBlock.position(), QTextCursor::MoveAnchor); - cursor.movePosition(QTextCursor::EndOfLine, QTextCursor::KeepAnchor); - QRect rect = edit->cursorRect(cursor); - edit->onPressedLineNumber(QPoint(rect.left(), rect.center().y())); - EXPECT_EQ(edit->textCursor().selectedText().replace("\u2029", "\n"), QString("123\n")); - - selectBlock = edit->document()->lastBlock(); - cursor.setPosition(selectBlock.position(), QTextCursor::MoveAnchor); - cursor.movePosition(QTextCursor::EndOfLine, QTextCursor::KeepAnchor); - rect = edit->cursorRect(cursor); - edit->onPressedLineNumber(QPoint(rect.left(), rect.center().y())); - EXPECT_EQ(edit->textCursor().selectedText().replace("\u2029", "\n"), QString("333")); - - edit->deleteLater(); - wra->deleteLater(); -} - -TEST(UT_Textedit_onPressedLineNumber, onPressedLineNumber_OutOfBlock_Pass) -{ - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - - edit->insertTextEx(edit->textCursor(), "123\n222\n333"); - QTextCursor cursor = edit->textCursor(); - - QTextBlock selectBlock = edit->document()->lastBlock(); - cursor.setPosition(selectBlock.position(), QTextCursor::MoveAnchor); - cursor.movePosition(QTextCursor::EndOfLine, QTextCursor::KeepAnchor); - QRect rect = edit->cursorRect(cursor); - // 超过文档范围选取将锁定尾行 - edit->onPressedLineNumber(QPoint(rect.left(), rect.center().y() + rect.height())); - EXPECT_EQ(edit->textCursor().selectedText().replace("\u2029", "\n"), QString("333")); - - edit->deleteLater(); - wra->deleteLater(); -} - -QString stub_getSystemLan() -{ - return "bo_CN"; -} - -TEST(UT_Textedit_onPressedLineNumber, onPressedLineNumber_LanBo_CN_Pass) -{ - // bo_CN 语言环境调整偏移量,光标向下偏移2 - Stub stub; - stub.set(ADDR(Utils, getSystemLan), stub_getSystemLan); - - TextEdit* edit = new TextEdit; - EditWrapper* wra = new EditWrapper; - edit->m_wrapper = wra; - Stub __stub_undo_redo; - __stub_undo_redo.set(ADDR(TextEdit, slotCanUndoChanged), stub_slotCanUndoChanged); - __stub_undo_redo.set(ADDR(TextEdit, slotCanRedoChanged), stub_slotCanRedoChanged); - - edit->insertTextEx(edit->textCursor(), "123\n222\n333"); - QTextCursor cursor = edit->textCursor(); - - QTextBlock selectBlock = edit->document()->firstBlock(); - cursor.setPosition(selectBlock.position(), QTextCursor::MoveAnchor); - cursor.movePosition(QTextCursor::EndOfLine, QTextCursor::KeepAnchor); - QRect rect = edit->cursorRect(cursor); - edit->onPressedLineNumber(QPoint(rect.left(), rect.bottom() + 2)); - EXPECT_EQ(edit->textCursor().selectedText().replace("\u2029", "\n"), QString("123\n")); - - selectBlock = selectBlock.next(); - cursor.setPosition(selectBlock.position(), QTextCursor::MoveAnchor); - cursor.movePosition(QTextCursor::EndOfLine, QTextCursor::KeepAnchor); - rect = edit->cursorRect(cursor); - edit->onPressedLineNumber(QPoint(rect.left(), rect.bottom() + 2)); - EXPECT_EQ(edit->textCursor().selectedText().replace("\u2029", "\n"), QString("222\n")); - - edit->deleteLater(); - wra->deleteLater(); -} - -// ============================================================================ -// Tests for previously-uncovered TextEdit functions. -// Each test targets one (or a small group) of the 31 listed functions. -// A real Window+EditWrapper is used so that this->window() casts back to -// Window* and m_wrapper/m_pLeftAreaWidget/m_pUndoStack are all initialised. -// ============================================================================ - -namespace uncovered_helpers { - -// Create a fully-initialised editor hosted in a real Window. -static TextEdit *makeEditorInWindow(Window *&win) -{ - win = new Window(); - win->addBlankTab(QString()); - return win->currentWrapper()->textEditor(); -} - -// Qt 6.8.0: QGesturePrivate::state has no public setter. It lives at byte -// offset 124 inside the QObject private data (sizeof(QObjectPrivate)==120, -// then gestureType:int). fno-access-control lets us reach the protected -// d_func(); we then write the field directly. -static void forceGestureState(QGesture *g, Qt::GestureState st) -{ - *(Qt::GestureState *)((char *)g->d_func() + 124) = st; -} - -} // namespace uncovered_helpers - -using namespace uncovered_helpers; - -// 1. TextEdit::upcaseWord() -TEST(UT_Textedit_Uncovered, upcaseWord) -{ - Window *win = nullptr; - TextEdit *edit = makeEditorInWindow(win); - edit->insertTextEx(edit->textCursor(), "hello world"); - QTextCursor c = edit->textCursor(); - c.setPosition(0); - c.setPosition(5, QTextCursor::KeepAnchor); - edit->setTextCursor(c); - edit->upcaseWord(); - EXPECT_EQ(edit->toPlainText().left(5), QString("HELLO")); - win->deleteLater(); -} - -// 2. TextEdit::downcaseWord() -TEST(UT_Textedit_Uncovered, downcaseWord) -{ - Window *win = nullptr; - TextEdit *edit = makeEditorInWindow(win); - edit->insertTextEx(edit->textCursor(), "HELLO WORLD"); - QTextCursor c = edit->textCursor(); - c.setPosition(0); - c.setPosition(5, QTextCursor::KeepAnchor); - edit->setTextCursor(c); - edit->downcaseWord(); - EXPECT_EQ(edit->toPlainText().left(5), QString("hello")); - win->deleteLater(); -} - -// 3. TextEdit::capitalizeWord() -TEST(UT_Textedit_Uncovered, capitalizeWord) -{ - Window *win = nullptr; - TextEdit *edit = makeEditorInWindow(win); - edit->insertTextEx(edit->textCursor(), "hello world"); - QTextCursor c = edit->textCursor(); - c.setPosition(0); - c.setPosition(11, QTextCursor::KeepAnchor); - edit->setTextCursor(c); - edit->capitalizeWord(); - EXPECT_EQ(edit->toPlainText(), QString("Hello World")); - win->deleteLater(); -} - -// 4. TextEdit::wheelEvent(QWheelEvent*) (plain / Ctrl+wheel up / Ctrl+wheel down) -TEST(UT_Textedit_Uncovered, wheelEvent) -{ - Window *win = nullptr; - TextEdit *edit = makeEditorInWindow(win); - edit->insertTextEx(edit->textCursor(), "some text to scroll"); - { - QWheelEvent e(QPointF(0, 0), QPointF(0, 0), QPoint(0, 0), QPoint(0, 120), - Qt::NoButton, Qt::NoModifier, Qt::NoScrollPhase, false); - edit->wheelEvent(&e); // base behaviour, no Ctrl - } - { - QWheelEvent e(QPointF(0, 0), QPointF(0, 0), QPoint(0, 0), QPoint(0, 120), - Qt::NoButton, Qt::ControlModifier, Qt::NoScrollPhase, false); - edit->wheelEvent(&e); // Ctrl + up -> incrementFontSize - } - { - QWheelEvent e(QPointF(0, 0), QPointF(0, 0), QPoint(0, 0), QPoint(0, -120), - Qt::NoButton, Qt::ControlModifier, Qt::NoScrollPhase, false); - edit->wheelEvent(&e); // Ctrl + down -> decrementFontSize - } - SUCCEED(); - win->deleteLater(); -} - -// 5. TextEdit::scrollLineUp() -TEST(UT_Textedit_Uncovered, scrollLineUp) -{ - Window *win = nullptr; - TextEdit *edit = makeEditorInWindow(win); - edit->insertTextEx(edit->textCursor(), QString("line1\nline2\nline3\nline4\nline5")); - edit->scrollLineUp(); - // exercise the cursor-move branch as well - edit->m_cursorMark = true; - edit->scrollLineUp(); - edit->m_cursorMark = false; - SUCCEED(); - win->deleteLater(); -} - -// 6. TextEdit::slideGestureX(double) -TEST(UT_Textedit_Uncovered, slideGestureX) -{ - Window *win = nullptr; - TextEdit *edit = makeEditorInWindow(win); - edit->slideGestureX(35.0); - edit->slideGestureX(-10.0); - edit->slideGestureX(0.5); - SUCCEED(); - win->deleteLater(); -} - -// 7. TextEdit::slideGestureY(double) -TEST(UT_Textedit_Uncovered, slideGestureY) -{ - Window *win = nullptr; - TextEdit *edit = makeEditorInWindow(win); - edit->slideGestureY(35.0); - edit->slideGestureY(-10.0); - edit->slideGestureY(0.5); - SUCCEED(); - win->deleteLater(); -} - -// 8. TextEdit::gestureEvent(QGestureEvent*) -TEST(UT_Textedit_Uncovered, gestureEvent) -{ - Window *win = nullptr; - TextEdit *edit = makeEditorInWindow(win); - QList empty; - QGestureEvent ev(empty); - EXPECT_TRUE(edit->gestureEvent(&ev)); - win->deleteLater(); -} - -// 9. TextEdit::tapGestureTriggered(QTapGesture*) + tap branch of gestureEvent -TEST(UT_Textedit_Uncovered, tapGestureTriggered) -{ - Window *win = nullptr; - TextEdit *edit = makeEditorInWindow(win); - const Qt::GestureState states[] = { - Qt::GestureStarted, Qt::GestureUpdated, Qt::GestureCanceled, Qt::GestureFinished}; - for (Qt::GestureState st : states) { - QTapGesture *tap = new QTapGesture; - forceGestureState(tap, st); - edit->tapGestureTriggered(tap); - delete tap; - } - // also drive it through gestureEvent (covers the TapGesture branch there) - QTapGesture *tap = new QTapGesture; - forceGestureState(tap, Qt::GestureStarted); - QList gs; - gs << tap; - QGestureEvent ev(gs); - edit->gestureEvent(&ev); - win->deleteLater(); -} - -// 10. TextEdit::dragEnterEvent(QDragEnterEvent*) -TEST(UT_Textedit_Uncovered, dragEnterEvent) -{ - Window *win = nullptr; - TextEdit *edit = makeEditorInWindow(win); - QMimeData *mime = new QMimeData; - mime->setText("drag text"); - QDragEnterEvent e(QPoint(5, 5), Qt::CopyAction, mime, Qt::LeftButton, Qt::NoModifier); - edit->dragEnterEvent(&e); - delete mime; - win->deleteLater(); -} - -// 11. TextEdit::dropEvent(QDropEvent*) -TEST(UT_Textedit_Uncovered, dropEvent) -{ - Window *win = nullptr; - TextEdit *edit = makeEditorInWindow(win); - edit->insertTextEx(edit->textCursor(), "abc"); - QMimeData *mime = new QMimeData; - mime->setText("DROP"); - QDropEvent e(QPointF(5, 5), Qt::CopyAction, mime, Qt::LeftButton, Qt::NoModifier); - edit->dropEvent(&e); - EXPECT_TRUE(edit->toPlainText().contains("DROP")); - delete mime; - win->deleteLater(); -} - -// 12. TextEdit::contextMenuEvent(QContextMenuEvent*) -TEST(UT_Textedit_Uncovered, contextMenuEvent) -{ - Window *win = nullptr; - TextEdit *edit = makeEditorInWindow(win); - edit->insertTextEx(edit->textCursor(), "context"); - Stub stub; - stub.set((QAction *(QMenu::*)(const QPoint &, QAction *))ADDR(QMenu, exec), stub_exec); - QContextMenuEvent e(QContextMenuEvent::Keyboard, QPoint(5, 5), QPoint(5, 5)); - edit->contextMenuEvent(&e); - win->deleteLater(); -} - -// 13. TextEdit::popRightMenu(QPoint) -TEST(UT_Textedit_Uncovered, popRightMenu) -{ - Window *win = nullptr; - TextEdit *edit = makeEditorInWindow(win); - edit->insertTextEx(edit->textCursor(), "some text here"); - Stub stub; - stub.set((QAction *(QMenu::*)(const QPoint &, QAction *))ADDR(QMenu, exec), stub_exec); - // with a selection (exercises convert-case / comment menu paths) - QTextCursor c = edit->textCursor(); - c.select(QTextCursor::WordUnderCursor); - edit->setTextCursor(c); - edit->popRightMenu(); - edit->popRightMenu(QPoint(10, 10)); - win->deleteLater(); -} - -// 14. TextEdit::inputMethodEvent(QInputMethodEvent*) -TEST(UT_Textedit_Uncovered, inputMethodEvent) -{ - Window *win = nullptr; - TextEdit *edit = makeEditorInWindow(win); - // commit-string path - { - QInputMethodEvent e; - e.setCommitString("hello"); - edit->inputMethodEvent(&e); - } - // preedit path, then a follow-up commit - { - QInputMethodEvent e(QString("preedit"), QList()); - edit->inputMethodEvent(&e); - QInputMethodEvent e2; - e2.setCommitString("X"); - edit->inputMethodEvent(&e2); - } - // delete path: replacementStart<0 and replacementLength>0 - { - edit->insertTextEx(edit->textCursor(), "abcdef"); - QInputMethodEvent e; - e.setCommitString(QString(), -2, 2); - edit->inputMethodEvent(&e); - } - EXPECT_FALSE(edit->toPlainText().isEmpty()); - win->deleteLater(); -} - -// 15. TextEdit::deleteMultiTextEx(QList const&) -TEST(UT_Textedit_Uncovered, deleteMultiTextEx) -{ - Window *win = nullptr; - TextEdit *edit = makeEditorInWindow(win); - edit->insertTextEx(edit->textCursor(), "abcdefghij"); - // empty -> early return - edit->deleteMultiTextEx(QList()); - // single deletion - QTextCursor c = edit->textCursor(); - c.setPosition(0); - c.setPosition(3, QTextCursor::KeepAnchor); // "abc" - edit->deleteMultiTextEx(QList() << c); - EXPECT_EQ(edit->toPlainText(), QString("defghij")); - win->deleteLater(); -} - -// 16. TextEdit::insertMultiTextEx(QList> const&) -TEST(UT_Textedit_Uncovered, insertMultiTextEx) -{ - Window *win = nullptr; - TextEdit *edit = makeEditorInWindow(win); - // empty -> early return - edit->insertMultiTextEx(QList>()); - edit->insertTextEx(edit->textCursor(), "TAIL"); - QTextCursor c = edit->textCursor(); - c.setPosition(0); - QList> list; - list << qMakePair(c, QString("HEAD")); - edit->insertMultiTextEx(list); - EXPECT_EQ(edit->toPlainText(), QString("HEADTAIL")); - win->deleteLater(); -} - -// 17. TextEdit::isComment(QString const&, int, QString const&) -TEST(UT_Textedit_Uncovered, isComment) -{ - EXPECT_TRUE(TextEdit::isComment("//abc", 0, "//")); - EXPECT_FALSE(TextEdit::isComment("ab//c", 0, "//")); - EXPECT_TRUE(TextEdit::isComment("abc//", 3, "//")); - EXPECT_TRUE(TextEdit::isComment("#x", 0, "#")); - EXPECT_FALSE(TextEdit::isComment("ab", 0, "//")); - EXPECT_FALSE(TextEdit::isComment("/*x", 0, "//")); -} - -// 18. TextEdit::getLeftAreaUpdateState() -TEST(UT_Textedit_Uncovered, getLeftAreaUpdateState) -{ - Window *win = nullptr; - TextEdit *edit = makeEditorInWindow(win); - edit->setLeftAreaUpdateState(TextEdit::FileOpenBegin); - EXPECT_EQ(edit->getLeftAreaUpdateState(), TextEdit::FileOpenBegin); - edit->setLeftAreaUpdateState(TextEdit::FileOpenEnd); - EXPECT_EQ(edit->getLeftAreaUpdateState(), TextEdit::FileOpenEnd); - edit->setLeftAreaUpdateState(TextEdit::Normal); - EXPECT_EQ(edit->getLeftAreaUpdateState(), TextEdit::Normal); - win->deleteLater(); -} - -// 19. TextEdit::onEndlineFormatChanged(...) -TEST(UT_Textedit_Uncovered, onEndlineFormatChanged) -{ - Window *win = nullptr; - TextEdit *edit = makeEditorInWindow(win); - edit->onEndlineFormatChanged(BottomBar::Unix, BottomBar::Windows); - edit->onEndlineFormatChanged(BottomBar::Windows, BottomBar::Unix); - edit->onEndlineFormatChanged(BottomBar::Unix, BottomBar::Unix); - SUCCEED(); - win->deleteLater(); -} - -// 20. TextEdit::onAudioPortEnabledChanged(unsigned int, QString const&, bool) -TEST(UT_Textedit_Uncovered, onAudioPortEnabledChanged) -{ - Window *win = nullptr; - TextEdit *edit = makeEditorInWindow(win); - edit->onAudioPortEnabledChanged(0, QString("speaker"), true); // enabled -> nothing - edit->onAudioPortEnabledChanged(1, QString("mic"), false); // disabled -> device check - SUCCEED(); - win->deleteLater(); -} - -// 21. TextEdit::setFindHighlightSelection(QTextCursor const&) -TEST(UT_Textedit_Uncovered, setFindHighlightSelection) -{ - Window *win = nullptr; - TextEdit *edit = makeEditorInWindow(win); - edit->insertTextEx(edit->textCursor(), "find me here"); - QTextCursor c = edit->textCursor(); - c.select(QTextCursor::WordUnderCursor); - edit->setFindHighlightSelection(c); - EXPECT_EQ(edit->m_findHighlightSelection.cursor.position(), c.position()); - win->deleteLater(); -} - -// 22. TextEdit::slotStopReadingAction(bool) -TEST(UT_Textedit_Uncovered, slotStopReadingAction) -{ - Window *win = nullptr; - TextEdit *edit = makeEditorInWindow(win); - bool ret = edit->slotStopReadingAction(false); - (void)ret; - SUCCEED(); - win->deleteLater(); -} - -// 23. TextEdit::slotOpenInFileManagerAction(bool) -TEST(UT_Textedit_Uncovered, slotOpenInFileManagerAction) -{ - Window *win = nullptr; - TextEdit *edit = makeEditorInWindow(win); - edit->setTruePath(QString("/nonexistent/path/for_test.txt")); - bool ret = edit->slotOpenInFileManagerAction(false); - // return value depends on the platform file-manager service; just exercise it - EXPECT_TRUE(ret == true || ret == false); - win->deleteLater(); -} - -// 24. TextEdit::highlight() (also fires its inline QTimer::singleShot lambda) -TEST(UT_Textedit_Uncovered, highlight) -{ - Window *win = nullptr; - TextEdit *edit = makeEditorInWindow(win); - edit->insertTextEx(edit->textCursor(), "highlight me"); - // highlight() posts a singleShot(0) lambda that calls m_wrapper->OnUpdateHighlighter(). - // We must NOT call processEvents() here because it would also deliver the queued - // handleFileLoadFinished signal from addBlankTab, which calls setTextFinished() -> - // readHistoryRecordofBookmark() that dereferences m_settings (null in test context). - // Instead, directly exercise the highlight code path. - edit->highlight(); - if (edit->m_wrapper) { - edit->m_wrapper->OnUpdateHighlighter(); - } - SUCCEED(); - win->deleteLater(); -} - -// 25. TextEdit::eventFilter(QObject*, QEvent*) -TEST(UT_Textedit_Uncovered, eventFilter) -{ - Window *win = nullptr; - TextEdit *edit = makeEditorInWindow(win); - // generic event -> switch default, returns false - { - QEvent e(QEvent::User); - EXPECT_FALSE(edit->eventFilter(edit->viewport(), &e)); - } - // MouseButtonPress on a non-special object -> sets m_mouseClickPos, returns false - { - QMouseEvent e(QEvent::MouseButtonPress, QPointF(3, 3), Qt::LeftButton, - Qt::LeftButton, Qt::NoModifier); - EXPECT_FALSE(edit->eventFilter(edit, &e)); - } - // MouseButtonDblClick -> sets m_bIsDoubleClick - { - QMouseEvent e(QEvent::MouseButtonDblClick, QPointF(3, 3), Qt::LeftButton, - Qt::LeftButton, Qt::NoModifier); - edit->eventFilter(edit, &e); - EXPECT_TRUE(edit->m_bIsDoubleClick); - } - // KeyRelease/Tab delivered to the color-mark menu -> schedules the inline - // QTimer::singleShot lambda inside eventFilter. We do NOT call processEvents() - // here because it would also deliver the queued handleFileLoadFinished signal - // from addBlankTab, crashing on null m_settings in readHistoryRecordofBookmark(). - { - QKeyEvent e(QEvent::KeyRelease, Qt::Key_Tab, Qt::NoModifier); - edit->eventFilter(edit->m_colorMarkMenu, &e); - } - win->deleteLater(); -} - -// 26. TextEdit::initRightClickedMenu() connected lambdas (#1..#4) -// The parent initRightClickedMenu() is already invoked by the TextEdit ctor; -// here we trigger the lambdas that are connected to the menu actions. -TEST(UT_Textedit_Uncovered, initRightClickedMenu_lambdas) -{ - Window *win = nullptr; - TextEdit *edit = makeEditorInWindow(win); - edit->insertTextEx(edit->textCursor(), "word"); - edit->m_markCurrentAct->trigger(); // lambda #1: isMarkCurrentLine + renderAllSelections - edit->m_markAllAct->trigger(); // lambda #2: isMarkAllLine + renderAllSelections - edit->m_undoAction->trigger(); // lambda #3: undo_() - edit->m_redoAction->trigger(); // lambda #4: redo_() - SUCCEED(); - win->deleteLater(); -} - -// 27/28. TextEdit::calcMarkReplaceList(...) (drives its updateMarkIndexAndRange lambda) -TEST(UT_Textedit_Uncovered, calcMarkReplaceList) -{ - Window *win = nullptr; - TextEdit *edit = makeEditorInWindow(win); - const QString oldText = "foo bar foo baz foo"; - - // empty list -> early return guard - { - QList empty; - edit->calcMarkReplaceList(empty, oldText, "foo", "FOO"); - EXPECT_TRUE(empty.isEmpty()); - } - // replaceText == withText -> early return guard - { - TextEdit::MarkReplaceInfo info; - info.opt.type = TextEdit::MarkOnce; - info.start = 0; - info.end = 3; - QList list; - list << info; - edit->calcMarkReplaceList(list, oldText, "foo", "foo"); - } - // mark fully inside a replacement region -> EIntersectInner (cleared) - { - TextEdit::MarkReplaceInfo info; - info.opt.type = TextEdit::MarkOnce; - info.start = 0; - info.end = 3; - QList list; - list << info; - edit->calcMarkReplaceList(list, oldText, "foo", "FOOBAR"); - } - // mark sitting to the left of a later replacement -> ELeft branch - { - TextEdit::MarkReplaceInfo info; - info.opt.type = TextEdit::MarkOnce; - info.start = 4; - info.end = 7; - QList list; - list << info; - edit->calcMarkReplaceList(list, oldText, "foo", "FOOBAR"); - } - // MarkAll type is skipped by updateMarkIndexAndRange lambda - { - TextEdit::MarkReplaceInfo info; - info.opt.type = TextEdit::MarkAll; - info.start = 4; - info.end = 7; - QList list; - list << info; - edit->calcMarkReplaceList(list, oldText, "foo", "FOOBAR"); - } - SUCCEED(); - win->deleteLater(); -} - -//scanAllMatchPositions 基础计数 -TEST(UT_test_textedit_scanAllMatchPositions, UT_test_textedit_scanAllMatchPositions_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("hello world\nhello world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - QList positions = pWindow->currentWrapper()->textEditor()->scanAllMatchPositions(QString("world")); - - ASSERT_EQ(positions.size(), 2); - ASSERT_EQ(positions[0], 6); - ASSERT_EQ(positions[1], 18); - pWindow->deleteLater(); -} - -//scanAllMatchPositions 空关键字返回空列表 -TEST(UT_test_textedit_scanAllMatchPositions, UT_test_textedit_scanAllMatchPositions_Empty) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("hello world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - QList positions = pWindow->currentWrapper()->textEditor()->scanAllMatchPositions(QString()); - - ASSERT_TRUE(positions.isEmpty()); - pWindow->deleteLater(); -} - -//scanAllMatchPositions 大小写敏感 -TEST(UT_test_textedit_scanAllMatchPositions, UT_test_textedit_scanAllMatchPositions_CaseSensitive) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("hello world\nHello world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - QList positionsCI = pWindow->currentWrapper()->textEditor()->scanAllMatchPositions(QString("Hello"), Qt::CaseInsensitive); - ASSERT_EQ(positionsCI.size(), 2); - - QList positionsCS = pWindow->currentWrapper()->textEditor()->scanAllMatchPositions(QString("Hello"), Qt::CaseSensitive); - ASSERT_EQ(positionsCS.size(), 1); - ASSERT_EQ(positionsCS[0], 12); - pWindow->deleteLater(); -} - -//scanAllMatchPositions 无匹配返回空列表 -TEST(UT_test_textedit_scanAllMatchPositions, UT_test_textedit_scanAllMatchPositions_NoMatch) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - QString strMsg("hello world"); - QTextCursor textCursor = pWindow->currentWrapper()->textEditor()->textCursor(); - pWindow->currentWrapper()->textEditor()->insertTextEx(textCursor, strMsg); - - QList positions = pWindow->currentWrapper()->textEditor()->scanAllMatchPositions(QString("xyz")); - - ASSERT_TRUE(positions.isEmpty()); - pWindow->deleteLater(); -} - -//findCurrentMatchIndex 命中:缓存预置 + cursor 落在第 2 个位置 -TEST(UT_test_textedit_findCurrentMatchIndex, UT_test_textedit_findCurrentMatchIndex_Hit) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - TextEdit *editor = pWindow->currentWrapper()->textEditor(); - QString strMsg("hello world\nhello world"); - QTextCursor textCursor = editor->textCursor(); - editor->insertTextEx(textCursor, strMsg); - - editor->m_allMatchPositions = editor->scanAllMatchPositions(QString("world")); - QTextCursor c = editor->textCursor(); - c.setPosition(18); - editor->m_findHighlightSelection.cursor = c; - - ASSERT_EQ(editor->findCurrentMatchIndex(), 2); - pWindow->deleteLater(); -} - -//findCurrentMatchIndex 未命中:cursor 位置不在列表 -TEST(UT_test_textedit_findCurrentMatchIndex, UT_test_textedit_findCurrentMatchIndex_Miss) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - TextEdit *editor = pWindow->currentWrapper()->textEditor(); - editor->insertPlainText("hello world\nhello world"); - - editor->m_allMatchPositions = editor->scanAllMatchPositions(QString("world")); - QTextCursor c = editor->textCursor(); - c.setPosition(3); - editor->m_findHighlightSelection.cursor = c; - - ASSERT_EQ(editor->findCurrentMatchIndex(), 0); - pWindow->deleteLater(); -} - -//findCurrentMatchIndex 空缓存返回 0 -TEST(UT_test_textedit_findCurrentMatchIndex, UT_test_textedit_findCurrentMatchIndex_EmptyCache) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - TextEdit *editor = pWindow->currentWrapper()->textEditor(); - editor->m_allMatchPositions.clear(); - - ASSERT_EQ(editor->findCurrentMatchIndex(), 0); - pWindow->deleteLater(); -} - -//invalidateMatchCountCache 清空缓存字段 -TEST(UT_test_textedit_invalidateMatchCountCache, UT_test_textedit_invalidateMatchCountCache_001) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - TextEdit *editor = pWindow->currentWrapper()->textEditor(); - editor->m_allMatchPositions.append(1); - editor->m_allMatchPositions.append(2); - editor->m_countedKeyword = "abc"; - - editor->invalidateMatchCountCache(); - - ASSERT_TRUE(editor->m_allMatchPositions.isEmpty()); - ASSERT_TRUE(editor->m_countedKeyword.isEmpty()); - pWindow->deleteLater(); -} - -//updateMatchCount emit 验证(缓存命中) -TEST(UT_test_textedit_updateMatchCount, UT_test_textedit_updateMatchCount_Emit) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - TextEdit *editor = pWindow->currentWrapper()->textEditor(); - editor->insertPlainText("hello\nhello\nhello"); - - QSignalSpy spy(editor, &TextEdit::findMatchCountChanged); - editor->updateMatchCount(QString("hello"), Qt::CaseInsensitive); - - ASSERT_EQ(spy.count(), 1); - QList args = spy.takeFirst(); - ASSERT_EQ(args.at(1).toInt(), 3); - pWindow->deleteLater(); -} - -//updateMatchCount 空关键字 emit (0,0) -TEST(UT_test_textedit_updateMatchCount, UT_test_textedit_updateMatchCount_Empty) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - TextEdit *editor = pWindow->currentWrapper()->textEditor(); - - QSignalSpy spy(editor, &TextEdit::findMatchCountChanged); - editor->updateMatchCount(QString(), Qt::CaseInsensitive); - - ASSERT_EQ(spy.count(), 1); - QList args = spy.takeFirst(); - ASSERT_EQ(args.at(0).toInt(), 0); - ASSERT_EQ(args.at(1).toInt(), 0); - pWindow->deleteLater(); -} - -//updateMatchCount 无双重 emit:highlightKeyword 后只 emit 1 次 -TEST(UT_test_textedit_updateMatchCount, UT_test_textedit_updateMatchCount_NoDoubleEmit) -{ - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - TextEdit *editor = pWindow->currentWrapper()->textEditor(); - editor->insertPlainText("hello world\nhello world"); - - QSignalSpy spy(editor, &TextEdit::findMatchCountChanged); - editor->highlightKeyword(QString("world"), 0); - - ASSERT_EQ(spy.count(), 1); - pWindow->deleteLater(); -} - -// Blocks all events except Timer so processEvents fires timer lambdas without -// triggering stale callbacks (MetaCall, DeferredDelete, etc.) from earlier tests. -class TE_DeferredDeleteBlocker : public QObject -{ -public: - bool eventFilter(QObject *, QEvent *e) override - { - return e->type() != QEvent::Timer; - } -}; - -// highlight() internal QTimer::singleShot(0,...) lambda -// Finds the singleShot timer created by highlight() and emits its timeout -// signal directly — avoids processEvents which would fire stale timers from -// earlier tests, causing bad_function_call exceptions. -TEST(UT_test_textedit_highlight, highlight_TriggersLambda) -{ - TextEdit *edit = new TextEdit; - EditWrapper *wra = new EditWrapper; - edit->m_wrapper = wra; - - edit->highlight(); - // Fire the singleShot timer's lambda by emitting timeout directly - for (QTimer *t : edit->findChildren()) { - if (t->isSingleShot()) { - QMetaObject::invokeMethod(t, "timeout", Qt::DirectConnection); - break; - } - } - - edit->deleteLater(); - wra->deleteLater(); -} - -// eventFilter color mark menu Tab key: QTimer::singleShot(0,...) lambda -TEST(UT_test_textedit_eventFilter, eventFilter_ColorMarkMenuTabLambda) -{ - TextEdit *edit = new TextEdit; - EditWrapper *wra = new EditWrapper; - edit->m_wrapper = wra; - - edit->m_colorMarkMenu = new QMenu; - QKeyEvent *e = new QKeyEvent(QEvent::KeyRelease, Qt::Key_Tab, Qt::NoModifier); - - edit->eventFilter(edit->m_colorMarkMenu, e); - - // Deliver the deferred QTimer::singleShot(0, ...) invocation posted to - // `edit` while the menu is still alive, so no dangling dereference can - // fire later inside another test's event loop. - QCoreApplication::sendPostedEvents(edit, 0); - - // Fire the singleShot timer's lambda by emitting timeout directly - for (QTimer *t : edit->findChildren()) { - if (t->isSingleShot()) { - QMetaObject::invokeMethod(t, "timeout", Qt::DirectConnection); - break; - } - } - - delete e; - delete edit->m_colorMarkMenu; - edit->m_colorMarkMenu = nullptr; - edit->deleteLater(); - wra->deleteLater(); -} - -// calcMarkReplaceList internal std::sort comparator lambda (needs >= 2 elements) -TEST(UT_test_textedit_calcMarkReplaceList, calcMarkReplaceList_SortLambda) -{ - TextEdit *edit = new TextEdit; - - QList replaceList; - TextEdit::MarkReplaceInfo info1; - info1.start = 10; - info1.end = 20; - info1.opt.type = TextEdit::MarkOnce; - TextEdit::MarkReplaceInfo info2; - info2.start = 5; - info2.end = 15; - info2.opt.type = TextEdit::MarkOnce; - replaceList << info1 << info2; - - edit->calcMarkReplaceList(replaceList, "old text", "replace", "with", 0, Qt::CaseSensitive); - - // sort lambda should have been called to order by start - EXPECT_LE(replaceList[0].start, replaceList[1].start); - edit->deleteLater(); -} - -// —— 右键菜单「视图模式」二级菜单(§8.1):替换原只读模式互斥项 —— - -// 动作创建:三个子项存在,默认「编辑模式」选中、「实时预览」置灰(初始非 md) -TEST(UT_Textedit_ViewModeMenu, ActionsCreated_DefaultState) -{ - TextEdit *edit = new TextEdit; - ASSERT_NE(edit->m_viewModeMenu, nullptr); - ASSERT_NE(edit->m_actEditView, nullptr); - ASSERT_NE(edit->m_actReadView, nullptr); - ASSERT_NE(edit->m_actLivePreview, nullptr); - - EXPECT_TRUE(edit->m_actEditView->isChecked()); - EXPECT_FALSE(edit->m_actReadView->isChecked()); - EXPECT_FALSE(edit->m_actLivePreview->isChecked()); - // 非 md 默认:仅「实时预览」置灰 - EXPECT_TRUE(edit->m_actEditView->isEnabled()); - EXPECT_TRUE(edit->m_actReadView->isEnabled()); - EXPECT_FALSE(edit->m_actLivePreview->isEnabled()); - - edit->deleteLater(); -} - -// 状态同步:updateViewModeActions 刷新选中态与置灰规则 -TEST(UT_Textedit_ViewModeMenu, UpdateViewModeActions_SyncsCheckedAndEnabled) -{ - TextEdit *edit = new TextEdit; - - edit->updateViewModeActions(ViewMode::LivePreview, true); - EXPECT_TRUE(edit->m_actLivePreview->isChecked()); - EXPECT_TRUE(edit->m_actLivePreview->isEnabled()); - - edit->updateViewModeActions(ViewMode::ReadView, false); - EXPECT_TRUE(edit->m_actReadView->isChecked()); - EXPECT_FALSE(edit->m_actLivePreview->isEnabled()); - - edit->updateViewModeActions(ViewMode::Edit, false); - EXPECT_TRUE(edit->m_actEditView->isChecked()); - - edit->deleteLater(); -} - -// 点击子项上抛 viewModeRequested(EditWrapper 连线后驱动 setViewMode) -TEST(UT_Textedit_ViewModeMenu, ActionTriggerEmitsViewModeRequested) -{ - TextEdit *edit = new TextEdit; - QSignalSpy spy(edit, &TextEdit::viewModeRequested); - - edit->m_actReadView->trigger(); - ASSERT_EQ(spy.count(), 1); - EXPECT_EQ(spy.takeFirst().at(0).value(), ViewMode::ReadView); - - edit->deleteLater(); -} - -// viewModeActions():供渲染视图右键菜单复用同一组动作(§8.1) -TEST(UT_Textedit_ViewModeMenu, ViewModeActionsAccessor) -{ - TextEdit *edit = new TextEdit; - QList actions = edit->viewModeActions(); - ASSERT_EQ(actions.size(), 3); - EXPECT_EQ(actions.at(0), edit->m_actEditView); - EXPECT_EQ(actions.at(1), edit->m_actReadView); - EXPECT_EQ(actions.at(2), edit->m_actLivePreview); - edit->deleteLater(); -} diff --git a/tests/src/editor/ut_textedit.h b/tests/src/editor/ut_textedit.h deleted file mode 100644 index f5a6e0107..000000000 --- a/tests/src/editor/ut_textedit.h +++ /dev/null @@ -1,48 +0,0 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef TEST_TEXTEDIT_H -#define TEST_TEXTEDIT_H - - -#include "../../src/common/settings.h" -#include "../../src/controls/tabbar.h" -#include "../../src/editor/editwrapper.h" -#include "../../src/widgets/window.h" -#include "../../src/startmanager.h" -#include "../../src/editor/dtextedit.h" -#include "../../src/common/CSyntaxHighlighter.h" -#include "../../src/editor/uncommentselection.h" -#include "../../src/editor/showflodcodewidget.h" -#include - -#include "../stub.h" -#include -#include "gtest/gtest.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -class test_textedit: public QObject, public::testing::Test -{ -public: - test_textedit(); - void forstub(QPoint q); -}; - -#endif // TEST_TEXTEDIT_H diff --git a/tests/src/editor/ut_uncommentselection.cpp b/tests/src/editor/ut_uncommentselection.cpp deleted file mode 100644 index ba939b7d6..000000000 --- a/tests/src/editor/ut_uncommentselection.cpp +++ /dev/null @@ -1,70 +0,0 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "ut_uncommentselection.h" -#include "../../src/common/settings.h" -#include "../../src/controls/tabbar.h" -#include "../../src/editor/editwrapper.h" -#include "../../src/widgets/window.h" -#include "../../src/startmanager.h" -#include "../../src/editor/dtextedit.h" -#include "../../src/editor/uncommentselection.h" - -using namespace Comment; - -test_uncommentselection::test_uncommentselection() -{ -} - -void test_uncommentselection::SetUp() -{ - comDef = new CommentDefinition; -} - -void test_uncommentselection::TearDown() -{ - delete comDef; -} - -TEST_F(test_uncommentselection, CommentDefinition) -{ - CommentDefinition num; - ASSERT_FALSE(num.isAfterWhiteSpaces); -} - -TEST_F(test_uncommentselection, setComments) -{ - QString singleLineComment = "a"; - QString multiLineCommentStart = "b"; - QString multiLineCommentEnd = "c"; - comDef->setComments(singleLineComment, multiLineCommentStart, multiLineCommentEnd); - ASSERT_EQ(comDef->singleLine, singleLineComment); - ASSERT_EQ(comDef->multiLineStart, multiLineCommentStart); - ASSERT_EQ(comDef->multiLineEnd, multiLineCommentEnd); -} -//bool isValid() const; -TEST_F(test_uncommentselection, isValid) -{ - Comment::CommentDefinition numm; - bool bRet = numm.isValid(); - - ASSERT_TRUE(bRet == false); -} -//bool hasSingleLineStyle() const; -TEST_F(test_uncommentselection, hasSingleLineStyle) -{ - Comment::CommentDefinition numm; - bool bRet = numm.hasSingleLineStyle(); - - ASSERT_TRUE(bRet == false); -} -//bool hasMultiLineStyle() const; -TEST_F(test_uncommentselection, hasMultiLineStyle) -{ - Comment::CommentDefinition numm; - bool bRet = numm.hasMultiLineStyle(); - - ASSERT_TRUE(bRet == false); -} - diff --git a/tests/src/editor/ut_uncommentselection.h b/tests/src/editor/ut_uncommentselection.h deleted file mode 100644 index ec511971a..000000000 --- a/tests/src/editor/ut_uncommentselection.h +++ /dev/null @@ -1,23 +0,0 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef TEST_UNCOMMENTSELECTION_H -#define TEST_UNCOMMENTSELECTION_H - -#include "gtest/gtest.h" -#include - -namespace Comment { - -class CommentDefinition; -class test_uncommentselection : public ::testing::Test -{ -public: - test_uncommentselection(); - virtual void SetUp() override; - virtual void TearDown() override; - CommentDefinition *comDef; -}; -} // namespace Comment -#endif // TEST_UNCOMMENTSELECTION_H diff --git a/tests/src/editor/ut_undolist.cpp b/tests/src/editor/ut_undolist.cpp deleted file mode 100644 index d6e09a26f..000000000 --- a/tests/src/editor/ut_undolist.cpp +++ /dev/null @@ -1,56 +0,0 @@ -// SPDX-FileCopyrightText: 2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "gtest/gtest.h" -#include "../../src/editor/undolist.h" -#include "../../src/editor/indenttextcommond.h" -#include "../../src/editor/dtextedit.h" -#include "../stub.h" - -// UndoList::UndoList() + UndoList::~UndoList() (both destructor variants) -TEST(UT_UndoList, constructor_and_destructor) -{ - UndoList *list = new UndoList; - ASSERT_TRUE(list != nullptr); - delete list; -} - -// destructor with appended child commands to exercise the cleanup loop -TEST(UT_UndoList, destructor_with_children) -{ - UndoList *list = new UndoList; - TextEdit *edit = new TextEdit; - edit->setPlainText("aaa\nbbb"); - - QTextCursor c = edit->textCursor(); - c.setPosition(0); - edit->setTextCursor(c); - - // append some child commands; UndoList destructor takes ownership and deletes them - list->appendCom(new IndentTextCommand(edit, 0, 0, 0, 0)); - list->appendCom(new IndentTextCommand(edit, 0, 0, 0, 0)); - list->appendCom(nullptr); // nullptr should be safely ignored - - delete list; - delete edit; -} - -// also exercise undo/redo for fuller coverage of the class -TEST(UT_UndoList, undo_redo) -{ - UndoList *list = new UndoList; - TextEdit *edit = new TextEdit; - edit->setPlainText("aaa\nbbb"); - - QTextCursor c = edit->textCursor(); - c.setPosition(0); - edit->setTextCursor(c); - - list->appendCom(new IndentTextCommand(edit, 0, 0, 0, 0)); - list->redo(); - list->undo(); - - delete list; - delete edit; -} diff --git a/tests/src/encodes/ut_detectcode.cpp b/tests/src/encodes/ut_detectcode.cpp deleted file mode 100644 index c899b8112..000000000 --- a/tests/src/encodes/ut_detectcode.cpp +++ /dev/null @@ -1,310 +0,0 @@ -// SPDX-FileCopyrightText: 2023-2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "ut_detectcode.h" -#include "src/stub.h" -#include "../../src/encodes/detectcode.h" - -#include - -namespace detectcodestub { - -QString stringvalue="1"; - -QByteArray retintstub() -{ - return QByteArray(); -} - -QByteArray retByteArray = QByteArray(); -QByteArray reloadModifyFile_selectCoding() -{ - return retByteArray; -} - -} - - -using namespace detectcodestub; - -UT_DetectCode::UT_DetectCode() -{ - -} - -TEST(UT_DetectCode, UT_DetectCode) -{ - DetectCode c; -} - -TEST(UT_GetFileEncodingFormat, UT_GetFileEncodingFormat_001) -{ - DetectCode* dc = new DetectCode; - - Stub stub; - stub.set(ADDR(DetectCode,UchardetCode),retintstub); - stringvalue = "unknown"; - Stub stubSelectCoding; - stubSelectCoding.set(ADDR(DetectCode, selectCoding),reloadModifyFile_selectCoding); - dc->GetFileEncodingFormat("123"); - EXPECT_NE(dc,nullptr); - delete dc; - dc=nullptr; -} - -TEST(UT_GetFileEncodingFormat, UT_GetFileEncodingFormat_002) -{ - DetectCode* dc = new DetectCode; - - Stub stub; - stub.set(ADDR(DetectCode,UchardetCode),retintstub); - - stringvalue = "ASCII"; - Stub stubSelectCoding; - stubSelectCoding.set(ADDR(DetectCode, selectCoding),reloadModifyFile_selectCoding); - dc->GetFileEncodingFormat("123"); - - EXPECT_NE(dc,nullptr); - delete dc; - dc=nullptr; -} - -TEST(UT_GetFileEncodingFormat, UT_GetFileEncodingFormat_003) -{ - DetectCode *pDetectCode = new DetectCode; - - Stub stub; - stub.set(ADDR(DetectCode,UchardetCode),retintstub); - - stringvalue = "unknown"; - Stub stubSelectCoding; - stubSelectCoding.set(ADDR(DetectCode, selectCoding),reloadModifyFile_selectCoding); - pDetectCode->GetFileEncodingFormat(QString("123"), QByteArray("我是中文")); - - EXPECT_NE(pDetectCode, nullptr); - delete pDetectCode; - pDetectCode = nullptr; -} - -void chartDet_DetectingTextCoding_stub() -{ - return; -} - -TEST(UT_GetFileEncodingFormat, UT_GetFileEncodingFormat_004) -{ - DetectCode *pDetectCode = new DetectCode; - - Stub stub; - stub.set(ADDR(DetectCode, ChartDet_DetectingTextCoding), chartDet_DetectingTextCoding_stub); - - stringvalue = "unknown"; - Stub stubSelectCoding; - stubSelectCoding.set(ADDR(DetectCode, selectCoding),reloadModifyFile_selectCoding); - pDetectCode->GetFileEncodingFormat(QString("123"), QByteArray("我是中文")); - - EXPECT_NE(pDetectCode,nullptr); - delete pDetectCode; - pDetectCode = nullptr; -} - -void detectCode_icuDetectTextEncoding_stub(const QString &filePath, QByteArrayList &listDetectRet) -{ - Q_UNUSED(filePath) - Q_UNUSED(listDetectRet) -} - -QByteArray detectCode_selectCoding_stub(QByteArray ucharDetectdRet, QByteArrayList icuDetectRetList) -{ - Q_UNUSED(icuDetectRetList); - return ucharDetectdRet; -} - -// 用例以 QString("123") 作为占位文件路径(并非真实文件)。当 chardet 对被截断的 -// BIG5 内容识别置信度不足时,源码会回退到 UchardetCode(filepath) 读文件复检;占位 -// 路径不存在,fopen 失败,UchardetCode 返回空,进而落入默认 UTF-8 编码,导致 BIG5 -// 用例失败。这里打桩 UchardetCode 直接返回 BIG5,模拟“真实 BIG5 文件复检也为 BIG5”, -// 使内容侧的检测逻辑不因占位路径而被错误地回退为 UTF-8。 -QByteArray detectCode_uchardetCode_big5_stub(QString filepath) -{ - Q_UNUSED(filepath); - return QByteArray("BIG5"); -} - -TEST(UT_GetFileEncodingFormat, UT_GetFileEncodingFormat_zh_CNContent_UTF8_Pass) -{ - Stub stubDetectCode; - stubDetectCode.set(ADDR(DetectCode, icuDetectTextEncoding), detectCode_icuDetectTextEncoding_stub); - stubDetectCode.set(ADDR(DetectCode, selectCoding), detectCode_selectCoding_stub); - - QByteArray content("你好,我是中文测试文本"); - while (content.size() > 8) { - // 手动破坏尾部字符编码 - content.chop(1); - QByteArray encode = DetectCode::GetFileEncodingFormat(QString("123"), content); - EXPECT_EQ(encode, QByteArray("UTF-8")); - } -} - -TEST(UT_GetFileEncodingFormat, UT_GetFileEncodingFormat_zh_CNContent_GBK_Pass) -{ - Stub stubDetectCode; - stubDetectCode.set(ADDR(DetectCode, icuDetectTextEncoding), detectCode_icuDetectTextEncoding_stub); - stubDetectCode.set(ADDR(DetectCode, selectCoding), detectCode_selectCoding_stub); - - QTextCodec *codec = QTextCodec::codecForName("GB18030"); - QByteArray content = codec->fromUnicode("你好,我是中文测试文本"); - while (content.size() > 8) { - // 手动破坏尾部字符编码 - content.chop(1); - QByteArray encode = DetectCode::GetFileEncodingFormat(QString("123"), content); - EXPECT_EQ(encode, QByteArray("GB18030")); - } -} - -TEST(UT_GetFileEncodingFormat, UT_GetFileEncodingFormat_zh_CNContent_BIG5_Pass) -{ - Stub stubDetectCode; - stubDetectCode.set(ADDR(DetectCode, icuDetectTextEncoding), detectCode_icuDetectTextEncoding_stub); - stubDetectCode.set(ADDR(DetectCode, selectCoding), detectCode_selectCoding_stub); - stubDetectCode.set(ADDR(DetectCode, UchardetCode), detectCode_uchardetCode_big5_stub); - - QTextCodec *codec = QTextCodec::codecForName("BIG5"); - QByteArray content = codec->fromUnicode("你好,我是中文测试文本"); - while (content.size() > 8) { - // 手动破坏尾部字符编码 - content.chop(1); - QByteArray encode = DetectCode::GetFileEncodingFormat(QString("123"), content); - EXPECT_EQ(encode, QByteArray("BIG5")); - } -} - -TEST(UT_GetFileEncodingFormat, UT_GetFileEncodingFormat_ErrorContent_UTF8_Pass) -{ - Stub stubDetectCode; - stubDetectCode.set(ADDR(DetectCode, icuDetectTextEncoding), detectCode_icuDetectTextEncoding_stub); - stubDetectCode.set(ADDR(DetectCode, selectCoding), detectCode_selectCoding_stub); - - QByteArray content("你好,我是中文繁體中文བོད་ཡིགКирилли́こんにちは안녕하십니까Hello"); - while (content.size() > 8) { - // 手动破坏尾部字符编码 - content.chop(1); - QByteArray encode = DetectCode::GetFileEncodingFormat(QString("123"), content); - EXPECT_EQ(encode, QByteArray("UTF-8")); - } -} - -TEST(UT_EncaDetectCode, UT_EncaDetectCode) -{ - DetectCode* dc = new DetectCode; - - dc->UchardetCode("123"); - - EXPECT_NE(dc,nullptr); - delete dc; - dc=nullptr; -} - -TEST(UT_ChangeFileEncodingFormat, UT_ChangeFileEncodingFormat_001) -{ - DetectCode* dc = new DetectCode; - - QByteArray ba(1,'c'); - dc->ChangeFileEncodingFormat(ba,ba,"567","567"); - - EXPECT_NE(dc,nullptr); - delete dc; - dc=nullptr; -} - -TEST(UT_ChangeFileEncodingFormat, UT_ChangeFileEncodingFormat_002) -{ - DetectCode* dc = new DetectCode; - - QByteArray ba(1,'c'); - dc->ChangeFileEncodingFormat(ba,ba,"567","789"); - - EXPECT_NE(dc, nullptr); - delete dc; - dc=nullptr; -} - -iconv_t *iconv_open_stub() -{ - return nullptr; -} - -void iconv_stub() -{ - return; -} - -void iconv_close_stub() -{ - return; -} - -TEST(UT_ChangeFileEncodingFormat, UT_ChangeFileEncodingFormat_003) -{ - DetectCode *pDetectCode = new DetectCode; - QByteArray inData("我是中文"); - QByteArray outData; - - Stub stub_iconv_open; - stub_iconv_open.set(iconv_open, iconv_open_stub); - - Stub stub_iconv; - stub_iconv.set(iconv, iconv_stub); - - Stub stub_iconv_close; - stub_iconv_close.set(iconv_close, iconv_close_stub); - bool bRet = pDetectCode->ChangeFileEncodingFormat(inData, outData, QString("GB18030"), QString("UTF-8")); - - ASSERT_TRUE(bRet == true); - delete pDetectCode; - pDetectCode = nullptr; -} - -TEST(UT_UchardetCode, UT_UchardetCode_001) -{ - DetectCode *pDetectCode = new DetectCode; - QString strFilePath(QCoreApplication::applicationDirPath() + QString("/Makefile")); - pDetectCode->UchardetCode(strFilePath); - - EXPECT_NE(pDetectCode, nullptr); - delete pDetectCode; - pDetectCode = nullptr; -} - -DetectObj *detect_obj_init_stub() -{ - return nullptr; -} - -TEST(UT_ChartDet_DetectingTextCoding, UT_ChartDet_DetectingTextCoding_001) -{ - DetectCode *pDetectCode = new DetectCode; - QByteArray newContent("我是中文"); - QString detectedResult; - float chardetconfidence = 0; - - Stub stub; - stub.set(detect_obj_init, detect_obj_init_stub); - int iRet = pDetectCode->ChartDet_DetectingTextCoding(newContent, detectedResult, chardetconfidence); - - ASSERT_TRUE(iRet == CHARDET_MEM_ALLOCATED_FAIL); - delete pDetectCode; - pDetectCode = nullptr; -} - -int detect_stub_out_of_memory() -{ - return CHARDET_OUT_OF_MEMORY; -} - -int detect_stub_null_object() -{ - return CHARDET_NULL_OBJECT; -} - diff --git a/tests/src/encodes/ut_detectcode.h b/tests/src/encodes/ut_detectcode.h deleted file mode 100644 index ebf86a6ab..000000000 --- a/tests/src/encodes/ut_detectcode.h +++ /dev/null @@ -1,21 +0,0 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef UT_DetectCode_H -#define UT_DetectCode_H -#include "gtest/gtest.h" -#include -#include -#include -#include - -class UT_DetectCode: public QObject, public::testing::Test -{ - Q_OBJECT -public: - UT_DetectCode(); -}; - - -#endif diff --git a/tests/src/encodes/ut_detectcode_helpers.cpp b/tests/src/encodes/ut_detectcode_helpers.cpp deleted file mode 100644 index 787ae1270..000000000 --- a/tests/src/encodes/ut_detectcode_helpers.cpp +++ /dev/null @@ -1,157 +0,0 @@ -// SPDX-FileCopyrightText: 2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -// -// 覆盖 detectcode.cpp 中文件作用域的自由函数 (未在头文件导出,具有外部链接): -// utf8MultiByteCount / checkGB18030ToUtf8Error / checkUTF8ToGB18030Error -// 及 utf8MultiByteCount 内部的 lambda。 - -#include -#include - -// 声明 detectcode.cpp 中的文件作用域函数 -int utf8MultiByteCount(char *buf, size_t size); -bool checkGB18030ToUtf8Error(char *buf, size_t size, size_t &replaceLen, QByteArray &appendChar); -bool checkUTF8ToGB18030Error(char *buf, size_t size, size_t &replaceLen, QByteArray &appendChar); - -// utf8MultiByteCount: 单字节 ASCII -TEST(UT_Utf8MultiByteCount, SingleByte) -{ - char buf[] = {'A'}; - EXPECT_EQ(utf8MultiByteCount(buf, 1), 1); -} - -// utf8MultiByteCount: 双字节起始符 (110xxxxx) -TEST(UT_Utf8MultiByteCount, DoubleBytes) -{ - char buf[] = {static_cast(0xC2), static_cast(0x80)}; - EXPECT_EQ(utf8MultiByteCount(buf, 2), 2); -} - -// utf8MultiByteCount: 三字节起始符 (1110xxxx) -TEST(UT_Utf8MultiByteCount, ThreeBytes) -{ - char buf[] = {static_cast(0xE0), static_cast(0x80), static_cast(0x80)}; - EXPECT_EQ(utf8MultiByteCount(buf, 3), 3); -} - -// utf8MultiByteCount: 四字节起始符 (11110xxx) -TEST(UT_Utf8MultiByteCount, FourBytes) -{ - char buf[] = {static_cast(0xF0), static_cast(0x80), static_cast(0x80), static_cast(0x80)}; - EXPECT_EQ(utf8MultiByteCount(buf, 4), 4); -} - -// utf8MultiByteCount: 连续字节 (10xxxxxx),累加至 4 (触发内部 lambda) -TEST(UT_Utf8MultiByteCount, ContinuationBytes) -{ - char buf[] = {static_cast(0x80), static_cast(0x80), static_cast(0x80), static_cast(0x80)}; - EXPECT_EQ(utf8MultiByteCount(buf, 4), 4); -} - -// utf8MultiByteCount: 连续字节,size 先耗尽 -TEST(UT_Utf8MultiByteCount, ContinuationBytesShort) -{ - char buf[] = {static_cast(0x80), static_cast(0x80)}; - EXPECT_EQ(utf8MultiByteCount(buf, 2), 2); -} - -// utf8MultiByteCount: 超过 4 个前导 1 的非法字节,default 返回 1 -TEST(UT_Utf8MultiByteCount, InvalidLeadingBits) -{ - char buf[] = {static_cast(0xF8)}; - EXPECT_EQ(utf8MultiByteCount(buf, 1), 1); -} - -// checkGB18030ToUtf8Error: size 小于 4,返回 false -TEST(UT_CheckGB18030ToUtf8Error, ShortBuffer) -{ - char buf[] = {static_cast(0x82), static_cast(0x35)}; - size_t replaceLen = 0; - QByteArray appendChar; - bool ret = checkGB18030ToUtf8Error(buf, 2, replaceLen, appendChar); - - EXPECT_FALSE(ret); - EXPECT_EQ(replaceLen, static_cast(1)); - EXPECT_EQ(appendChar, QByteArray("?")); -} - -// checkGB18030ToUtf8Error: 不匹配的 4 字节,返回 false -TEST(UT_CheckGB18030ToUtf8Error, NoMatch) -{ - char buf[] = {0x00, 0x01, 0x02, 0x03}; - size_t replaceLen = 0; - QByteArray appendChar; - bool ret = checkGB18030ToUtf8Error(buf, 4, replaceLen, appendChar); - - EXPECT_FALSE(ret); - EXPECT_EQ(replaceLen, static_cast(1)); - EXPECT_EQ(appendChar, QByteArray("?")); -} - -// checkGB18030ToUtf8Error: 命中 PUA 映射 (小端序 0x37903582 -> \uE81E) -TEST(UT_CheckGB18030ToUtf8Error, MatchPUA) -{ - char buf[] = {static_cast(0x82), static_cast(0x35), static_cast(0x90), static_cast(0x37)}; - size_t replaceLen = 0; - QByteArray appendChar; - bool ret = checkGB18030ToUtf8Error(buf, 4, replaceLen, appendChar); - - EXPECT_TRUE(ret); - EXPECT_EQ(replaceLen, static_cast(4)); - EXPECT_FALSE(appendChar.isEmpty()); -} - -// checkUTF8ToGB18030Error: size 小于 3,返回 false -TEST(UT_CheckUTF8ToGB18030Error, ShortBuffer) -{ - char buf[] = {static_cast(0xEE), static_cast(0xA0)}; - size_t replaceLen = 0; - QByteArray appendChar; - bool ret = checkUTF8ToGB18030Error(buf, 2, replaceLen, appendChar); - - EXPECT_FALSE(ret); - EXPECT_EQ(replaceLen, static_cast(1)); - EXPECT_EQ(appendChar, QByteArray("?")); -} - -// checkUTF8ToGB18030Error: 命中 gs_UTF8MapGB18030Data (U+E81E -> 0x37903582) -TEST(UT_CheckUTF8ToGB18030Error, MatchPUA) -{ - // U+E81E 的 UTF-8 编码: EE A0 9E - char buf[] = {static_cast(0xEE), static_cast(0xA0), static_cast(0x9E)}; - size_t replaceLen = 0; - QByteArray appendChar; - bool ret = checkUTF8ToGB18030Error(buf, 3, replaceLen, appendChar); - - EXPECT_TRUE(ret); - EXPECT_EQ(replaceLen, static_cast(3)); - EXPECT_FALSE(appendChar.isEmpty()); -} - -// checkUTF8ToGB18030Error: 命中 gs_ReplaceUtf8ToGB18030_2005Error (U+E816 -> FE51) -TEST(UT_CheckUTF8ToGB18030Error, Match2005Error) -{ - // U+E816 的 UTF-8 编码: EE A0 96 - char buf[] = {static_cast(0xEE), static_cast(0xA0), static_cast(0x96)}; - size_t replaceLen = 0; - QByteArray appendChar; - bool ret = checkUTF8ToGB18030Error(buf, 3, replaceLen, appendChar); - - EXPECT_TRUE(ret); - EXPECT_EQ(replaceLen, static_cast(3)); - EXPECT_FALSE(appendChar.isEmpty()); -} - -// checkUTF8ToGB18030Error: 不匹配的 3 字节,返回 false -TEST(UT_CheckUTF8ToGB18030Error, NoMatch) -{ - char buf[] = {0x00, 0x01, 0x02}; - size_t replaceLen = 0; - QByteArray appendChar; - bool ret = checkUTF8ToGB18030Error(buf, 3, replaceLen, appendChar); - - EXPECT_FALSE(ret); - EXPECT_EQ(replaceLen, static_cast(1)); - EXPECT_EQ(appendChar, QByteArray("?")); -} diff --git a/tests/src/thememodule /ut_themeitemdelegate.cpp b/tests/src/thememodule /ut_themeitemdelegate.cpp deleted file mode 100644 index cea841ae9..000000000 --- a/tests/src/thememodule /ut_themeitemdelegate.cpp +++ /dev/null @@ -1,44 +0,0 @@ -// SPDX-FileCopyrightText: 2021 - 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "ut_themeitemdelegate.h" -#include "../../src/thememodule/themeitemdelegate.h" -#include - -test_ThemeItemDelegate::test_ThemeItemDelegate() -{ -} - -void test_ThemeItemDelegate::SetUp() -{ - tid = new ThemeItemDelegate(); - EXPECT_NE(tid,nullptr); -} - -void test_ThemeItemDelegate::TearDown() -{ - delete tid; - tid = nullptr; -} - -TEST_F(test_ThemeItemDelegate, paint) -{ - QPainter *painter = new QPainter(); - const QModelIndex index; - const QStyleOptionViewItem option; - // ThemeItemDelegate tid; - tid->paint(painter, option, index); - - EXPECT_NE(painter,nullptr); - - delete painter; - painter=nullptr; -} - -TEST_F(test_ThemeItemDelegate, sizeHint) -{ - const QModelIndex index; - const QStyleOptionViewItem option; - EXPECT_NE(tid->sizeHint(option, index).width(),0); -} diff --git a/tests/src/thememodule /ut_themeitemdelegate.h b/tests/src/thememodule /ut_themeitemdelegate.h deleted file mode 100644 index 20db77fc4..000000000 --- a/tests/src/thememodule /ut_themeitemdelegate.h +++ /dev/null @@ -1,22 +0,0 @@ -// SPDX-FileCopyrightText: 2021 - 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef TEST_THEMEITEMDELEGATE_H -#define TEST_THEMEITEMDELEGATE_H - -#include "gtest/gtest.h" -#include -#include - -class ThemeItemDelegate; -class test_ThemeItemDelegate :public testing::Test -{ -public: - test_ThemeItemDelegate(); - virtual void SetUp() override; - virtual void TearDown() override; - ThemeItemDelegate *tid; -}; - -#endif // TEST_THEMEITEMDELEGATE_H diff --git a/tests/src/thememodule/ut_themelistmodel.cpp b/tests/src/thememodule/ut_themelistmodel.cpp deleted file mode 100644 index e1284a40c..000000000 --- a/tests/src/thememodule/ut_themelistmodel.cpp +++ /dev/null @@ -1,95 +0,0 @@ -// SPDX-FileCopyrightText: 2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include -#include "../../src/thememodule/themelistmodel.h" -#include "src/stub.h" -#include -#include -#include -#include - -// 临时主题数据,用于触发 initThemes 加载与排序 lambda -static const char *g_lightThemeJson = - "{\"metadata\":{\"name\":\"Light\"},\"editor-colors\":{\"background-color\":\"#ffffff\"}}"; -static const char *g_darkThemeJson = - "{\"metadata\":{\"name\":\"Dark\"},\"editor-colors\":{\"background-color\":\"#000000\"}}"; -static QFileInfoList g_testThemesList; - -QFileInfoList entryInfoListThemesStub() -{ - return g_testThemesList; -} - -// 创建临时主题文件,返回路径列表 -static QStringList prepareTempThemes(const QString &subDir) -{ - QString tmpDir = QDir::tempPath() + "/" + subDir; - QDir().mkpath(tmpDir); - - QString lightPath = tmpDir + "/light.theme"; - QString darkPath = tmpDir + "/dark.theme"; - - QFile f1(lightPath); - f1.open(QIODevice::WriteOnly); - f1.write(g_lightThemeJson); - f1.close(); - - QFile f2(darkPath); - f2.open(QIODevice::WriteOnly); - f2.write(g_darkThemeJson); - f2.close(); - - return {lightPath, darkPath}; -} - -// setFrameColor -TEST(UT_ThemeListModel, setFrameColor) -{ - ThemeListModel model; - model.setFrameColor("#aabbcc", "#112233"); - EXPECT_EQ(model.m_frameSelectedColor, QString("#aabbcc")); - EXPECT_EQ(model.m_frameNormalColor, QString("#112233")); -} - -// ~ThemeListModel -TEST(UT_ThemeListModel, Destructor) -{ - ThemeListModel *model = new ThemeListModel; - delete model; - SUCCEED(); -} - -// data() 各 role 与 initThemes 排序 lambda(需加载主题) -TEST(UT_ThemeListModel, data_and_initThemes) -{ - QStringList paths = prepareTempThemes("de_themes_ut_model"); - g_testThemesList.clear(); - g_testThemesList << QFileInfo(paths[0]) << QFileInfo(paths[1]); - - Stub s; - s.set((QFileInfoList(QDir::*)(QDir::Filters, QDir::SortFlags) const) ADDR(QDir, entryInfoList), - entryInfoListThemesStub); - - ThemeListModel *model = new ThemeListModel; - // 加载到 >=2 个主题,确保 initThemes 中的排序 lambda 被执行 - EXPECT_GE(model->m_themes.size(), 2); - - QModelIndex idx0 = model->index(0, 0); - EXPECT_FALSE(model->data(idx0, ThemeListModel::ThemeName).toString().isEmpty()); - EXPECT_FALSE(model->data(idx0, ThemeListModel::ThemePath).toString().isEmpty()); - // ThemeMap 在 data() 中无对应 case,走 default 返回空 QVariant - EXPECT_EQ(model->data(idx0, ThemeListModel::ThemeMap), QVariant()); - - model->setFrameColor("#aabbcc", "#112233"); - EXPECT_EQ(model->data(idx0, ThemeListModel::FrameNormalColor).toString(), QString("#112233")); - EXPECT_EQ(model->data(idx0, ThemeListModel::FrameSelectedColor).toString(), QString("#aabbcc")); - - // 未知 role,走 default - EXPECT_EQ(model->data(idx0, 9999), QVariant()); - - EXPECT_GE(model->rowCount(QModelIndex()), 2); - - delete model; -} diff --git a/tests/src/thememodule/ut_themelistview.cpp b/tests/src/thememodule/ut_themelistview.cpp deleted file mode 100644 index 77dc873b6..000000000 --- a/tests/src/thememodule/ut_themelistview.cpp +++ /dev/null @@ -1,28 +0,0 @@ -// SPDX-FileCopyrightText: 2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include -#include "../../src/thememodule/themelistview.h" -#include "../../src/thememodule/themelistmodel.h" - -// adjustScrollbarMargins: 视图不可见,提前返回 -TEST(UT_ThemeListView, adjustScrollbarMargins_NotVisible) -{ - ThemeListView view; - view.adjustScrollbarMargins(); - SUCCEED(); -} - -// adjustScrollbarMargins: 视图可见,执行布局调整 -// 不使用 QTest::qWait 以避免处理前序测试排队的 DeferredDelete 事件导致卡死。 -TEST(UT_ThemeListView, adjustScrollbarMargins_Visible) -{ - ThemeListView view; - view.setModel(new ThemeListModel(&view)); - view.resize(120, 200); - view.show(); - view.adjustScrollbarMargins(); - view.hide(); - SUCCEED(); -} diff --git a/tests/src/thememodule/ut_themepanel.cpp b/tests/src/thememodule/ut_themepanel.cpp deleted file mode 100644 index a7d615246..000000000 --- a/tests/src/thememodule/ut_themepanel.cpp +++ /dev/null @@ -1,95 +0,0 @@ -// SPDX-FileCopyrightText: 2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include -#include "../../src/thememodule/themepanel.h" -#include -#include -#include - -class TestThemePanel : public ThemePanel -{ -public: - using ThemePanel::ThemePanel; - using ThemePanel::paintEvent; -}; - -// paintEvent -TEST(UT_ThemePanel, paintEvent) -{ - QWidget parent; - parent.resize(400, 400); - TestThemePanel panel(&parent); - panel.resize(200, 200); - QRect rect(0, 0, 100, 100); - QPaintEvent event(rect); - panel.paintEvent(&event); -} - -// setBackground -TEST(UT_ThemePanel, setBackground) -{ - QWidget parent; - ThemePanel panel(&parent); - - panel.setBackground("#000000"); - EXPECT_EQ(panel.m_frameColor, panel.m_frameDarkColor); - - panel.setBackground("#ffffff"); - EXPECT_EQ(panel.m_frameColor, panel.m_frameLightColor); -} - -// setFrameColor -TEST(UT_ThemePanel, setFrameColor) -{ - QWidget parent; - ThemePanel panel(&parent); - panel.setFrameColor("#aabbcc", "#112233"); - EXPECT_EQ(panel.m_themeModel->m_frameSelectedColor, QString("#aabbcc")); - EXPECT_EQ(panel.m_themeModel->m_frameNormalColor, QString("#112233")); -} - -// hide/popup 的 ThemePanel::hide()/popup() 内部启动 250ms QPropertyAnimation。 -// 在完整测试套件中用 QEventLoop::exec() 处理动画完成信号会同时投递前序测试 -// 排队的 DeferredDelete / handleFileLoadFinished 事件,导致 SEGV。 -// 这里仅覆盖 QWidget::hide() (通过 ThemePanel 继承) 和 popup 入口。 -TEST(UT_ThemePanel, hide) -{ - QWidget parent; - parent.resize(800, 600); - ThemePanel panel(&parent); - panel.show(); - panel.hide(); // ThemePanel::hide() 启动动画,动画 finished 时调 QWidget::hide() - SUCCEED(); -} - -TEST(UT_ThemePanel, popup) -{ - QWidget parent; - parent.resize(800, 600); - parent.show(); - ThemePanel *panel = new ThemePanel(&parent); - panel->show(); - - panel->popup(); // creates QPropertyAnimation connected to valueChanged lambda - - // Emit valueChanged directly on the animation to fire the lambda, - // avoiding processEvents which would trigger stale callbacks from earlier tests. - for (QPropertyAnimation *anim : panel->findChildren()) { - emit anim->valueChanged(QVariant(panel->geometry())); - break; - } - - delete panel; - SUCCEED(); -} - -// Constructor lambda: requestCurrentIndex -> setCurrentIndex/scrollTo -TEST(UT_ThemePanel, Constructor_Lambda) -{ - QWidget parent; - ThemePanel panel(&parent); - emit panel.m_themeModel->requestCurrentIndex(QModelIndex()); - SUCCEED(); -} diff --git a/tests/src/themes/atom_dark.theme b/tests/src/themes/atom_dark.theme deleted file mode 100644 index adefaeb75..000000000 --- a/tests/src/themes/atom_dark.theme +++ /dev/null @@ -1,191 +0,0 @@ -{ - "metadata" : { - "revision" : 1, - "name" : "Atom Dark", - "author" : "Atom", - "license" : "MIT", - "read-only" : true - }, - "text-styles": { - "Normal" : { - "text-color" : "#ABB2BF", - "selected-bg-color" : "#3E4451", - "selected-text-color" : "#C2CAD9", - "bold" : false, - "italic" : false, - "underline" : false, - "strike-through" : false - }, - "Keyword" : { - "text-color" : "#cfcfc2", - "selected-text-color" : "#cfcfc2", - "bold" : true - }, - "Function" : { - "text-color" : "#8e44ad", - "selected-text-color" : "#af81ff" - }, - "Variable" : { - "text-color" : "#27aeae", - "selected-text-color" : "#27aeae" - }, - "ControlFlow" : { - "text-color" : "#fdbc4b", - "selected-text-color" : "#fdbc4b", - "bold" : true - }, - "Operator" : { - "text-color" : "#cfcfc2", - "selected-text-color" : "#cfcfc2" - }, - "BuiltIn" : { - "text-color" : "#7f8c8d", - "selected-text-color" : "#bdc3c7" - }, - "Extension" : { - "text-color" : "#0099ff", - "selected-text-color" : "#bdc3c7", - "bold" : true - }, - "Preprocessor" : { - "text-color" : "#27ae60", - "selected-text-color" : "#27ae60" - }, - "Attribute" : { - "text-color" : "#2980b9", - "selected-text-color" : "#fdbc4b" - }, - "Char" : { - "text-color" : "#3daee9", - "selected-text-color" : "#3daee9" - }, - "SpecialChar" : { - "text-color" : "#3daee9", - "selected-text-color" : "#3daee9" - }, - "String" : { - "text-color" : "#f44f4f", - "selected-text-color" : "#f44f4f" - }, - "VerbatimString" : { - "text-color" : "#da4453", - "selected-text-color" : "#da4453" - }, - "SpecialString" : { - "text-color" : "#da4453", - "selected-text-color" : "#da4453" - }, - "Import" : { - "text-color" : "#27ae60", - "selected-text-color" : "#27ae60" - }, - "DataType" : { - "text-color" : "#2980b9", - "selected-text-color" : "#fdbc4b" - }, - "DecVal" : { - "text-color" : "#f67400", - "selected-text-color" : "#f67400" - }, - "BaseN" : { - "text-color" : "#f67400", - "selected-text-color" : "#f67400" - }, - "Float" : { - "text-color" : "#f67400", - "selected-text-color" : "#f67400" - }, - "Constant" : { - "text-color" : "#27aeae", - "selected-text-color" : "#27aeae", - "bold" : true - }, - "Comment" : { - "text-color" : "#7a7c7d", - "selected-text-color" : "#808080" - }, - "Documentation" : { - "text-color" : "#a43340", - "selected-text-color" : "#da4453" - }, - "Annotation" : { - "text-color" : "#3f8058", - "selected-text-color" : "#54aa75" - }, - "CommentVar" : { - "text-color" : "#7f8c8d", - "selected-text-color" : "#94a3a4" - }, - "RegionMarker" : { - "text-color" : "#2980b9", - "selected-text-color" : "#3daee9", - "background-color" : "#153042" - }, - "Information" : { - "text-color" : "#c45b00", - "selected-text-color" : "#e46700" - }, - "Warning" : { - "text-color" : "#da4453", - "selected-text-color" : "#da4453" - }, - "Alert" : { - "text-color" : "#95da4c", - "selected-text-color" : "#95da4c", - "background-color" : "#4d1f24", - "bold" : true - }, - "Error" : { - "text-color" : "#da4453", - "selected-text-color" : "#da4453", - "underline" : true - }, - "Others" : { - "text-color" : "#27ae60", - "selected-text-color" : "#27ae60" - } - }, - "editor-colors": { - "background-color" : "#282C34", - "code-folding" : "#224e65", - "bracket-match-bg" : "#6E9DFF", - "bracket-match-fg" : "#000000", - "current-line" : "#2C313A", - "icon-border" : "#31363b", - "indentation-line" : "#3a3f44", - "line-numbers" : "#5D667A", - "current-line-number" : "#a5a6a8", - "mark-bookmark" : "#0404bf", - "mark-breakpoint-active" : "#8b0607", - "mark-breakpoint-reached" : "#6d6e07", - "mark-breakpoint-disabled" : "#820683", - "mark-execution" : "#4d4e50", - "mark-warning" : "#f67400", - "mark-error" : "#da4453", - "modified-lines" : "#c04900", - "replace-highlight" : "#808021", - "saved-lines" : "#1c8042", - "find-match-background" : "#683C23", - "find-match-foreground" : "#CCCCCC", - "find-highlight-background" : "#515C6A", - "find-highlight-foreground" : "#FFFFFF", - "selection" : "#2d5c76", - "separator" : "#7a7c7d", - "spell-checking" : "#c0392b", - "tab-marker" : "#4d4d4d", - "template-background" : "#31363b", - "template-placeholder" : "#123723", - "template-focused-placeholder" : "#123723", - "template-read-only-placeholder" : "#4d1f24", - "word-wrap-marker" : "#3a3f44" - }, - "app-colors" : { - "tab-active" : "#568AF2", - "tab-background-start-color" : "(33, 37, 43, 90%)", - "tab-background-end-color" : "(33, 37, 43, 90%)", - "tab-dnd-start" : "(45, 50, 59, 90%)", - "tab-dnd-end" : "(45, 50, 59, 90%)", - "themebar-frame-selected" : "#568AF2", - "themebar-frame-normal" : "#FFFFFF" - } -} diff --git a/tests/src/themes/deepin.theme b/tests/src/themes/deepin.theme deleted file mode 100644 index 5111893b9..000000000 --- a/tests/src/themes/deepin.theme +++ /dev/null @@ -1,191 +0,0 @@ -{ - "metadata" : { - "revision" : 1, - "name" : "Deepin", - "author" : "Deepin", - "license" : "MIT", - "read-only" : true - }, - "text-styles": { - "Normal" : { - "text-color" : "#1f1c1b", - "selected-bg-color" : "#2CA7F8", - "selected-text-color" : "#FFFFFF", - "bold" : false, - "italic" : false, - "underline" : false, - "strike-through" : false - }, - "Keyword" : { - "text-color" : "#1f1c1b", - "selected-text-color" : "#ffffff", - "bold" : true - }, - "Function" : { - "text-color" : "#644a9b", - "selected-text-color" : "#452886" - }, - "Variable" : { - "text-color" : "#0057ae", - "selected-text-color" : "#00316e" - }, - "ControlFlow" : { - "text-color" : "#1f1c1b", - "selected-text-color" : "#ffffff", - "bold" : true - }, - "Operator" : { - "text-color" : "#1f1c1b", - "selected-text-color" : "#ffffff" - }, - "BuiltIn" : { - "text-color" : "#644a9b", - "selected-text-color" : "#452886", - "bold" : true - }, - "Extension" : { - "text-color" : "#0095ff", - "selected-text-color" : "#ffffff", - "bold" : true - }, - "Preprocessor" : { - "text-color" : "#006e28", - "selected-text-color" : "#006e28" - }, - "Attribute" : { - "text-color" : "#0057ae", - "selected-text-color" : "#00316e" - }, - "Char" : { - "text-color" : "#924c9d", - "selected-text-color" : "#6c2477" - }, - "SpecialChar" : { - "text-color" : "#3daee9", - "selected-text-color" : "#fcfcfc" - }, - "String" : { - "text-color" : "#bf0303", - "selected-text-color" : "#9c0e0e" - }, - "VerbatimString" : { - "text-color" : "#bf0303", - "selected-text-color" : "#9c0e0e" - }, - "SpecialString" : { - "text-color" : "#ff5500", - "selected-text-color" : "#ff5500" - }, - "Import" : { - "text-color" : "#ff5500", - "selected-text-color" : "#ff5500" - }, - "DataType" : { - "text-color" : "#0057ae", - "selected-text-color" : "#00316e" - }, - "DecVal" : { - "text-color" : "#b08000", - "selected-text-color" : "#805c00" - }, - "BaseN" : { - "text-color" : "#b08000", - "selected-text-color" : "#805c00" - }, - "Float" : { - "text-color" : "#b08000", - "selected-text-color" : "#805c00" - }, - "Constant" : { - "text-color" : "#aa5500", - "selected-text-color" : "#5e2f00" - }, - "Comment" : { - "text-color" : "#898887", - "selected-text-color" : "#5e5d5d" - }, - "Documentation" : { - "text-color" : "#607880", - "selected-text-color" : "#46585e" - }, - "Annotation" : { - "text-color" : "#ca60ca", - "selected-text-color" : "#a44ea4" - }, - "CommentVar" : { - "text-color" : "#0095ff", - "selected-text-color" : "#ffffff" - }, - "RegionMarker" : { - "text-color" : "#0057ae", - "selected-text-color" : "#00316e", - "background-color" : "#e0e9f8" - }, - "Information" : { - "text-color" : "#b08000", - "selected-text-color" : "#805c00" - }, - "Warning" : { - "text-color" : "#bf0303", - "selected-text-color" : "#9c0e0e" - }, - "Alert" : { - "text-color" : "#bf0303", - "selected-text-color" : "#9c0e0e", - "background-color" : "#f7e6e6", - "bold" : true - }, - "Error" : { - "text-color" : "#bf0303", - "selected-text-color" : "#9c0e0e", - "underline" : true - }, - "Others" : { - "text-color" : "#006e28", - "selected-text-color" : "#006e28" - } - }, - "editor-colors": { - "background-color" : "#f8f8f8", - "code-folding" : "#94caef", - "bracket-match-bg" : "#ffff00", - "bracket-match-fg" : "#000000", - "current-line" : "#F2F2F2", - "icon-border" : "#f0f0f0", - "indentation-line" : "#d2d2d2", - "line-numbers" : "#000000", - "current-line-number" : "#1e1e1e", - "mark-bookmark" : "#0000ff", - "mark-breakpoint-active" : "#ff0000", - "mark-breakpoint-reached" : "#ffff00", - "mark-breakpoint-disabled" : "#ff00ff", - "mark-execution" : "#a0a0a4", - "mark-warning" : "#00ff00", - "mark-error" : "#ff0000", - "modified-lines" : "#fdbc4b", - "replace-highlight" : "#00ff00", - "saved-lines" : "#2ecc71", - "find-match-background" : "#ffff00", - "find-match-foreground" : "#000000", - "find-highlight-background" : "#2CA7F8", - "find-highlight-foreground" : "#FFFFFF", - "selection" : "#94caef", - "separator" : "#898887", - "spell-checking" : "#bf0303", - "tab-marker" : "#d2d2d2", - "template-background" : "#d6d2d0", - "template-placeholder" : "#baf8ce", - "template-focused-placeholder" : "#76da98", - "template-read-only-placeholder" : "#f6e6e6", - "word-wrap-marker" : "#ededed" - }, - "app-colors" : { - "tab-active" : "#2CA7F8", - "tab-background-start-color" : "(255, 255, 255, 90%)", - "tab-background-end-color" : "(245, 245, 245, 90%)", - "tab-dnd-start" : "(0, 0, 0, 10%)", - "tab-dnd-end" : "(0, 0, 0, 5%)", - "themebar-frame-selected" : "#2CA7F8", - "themebar-frame-normal" : "#000000" - } -} diff --git a/tests/src/themes/deepin_dark.theme b/tests/src/themes/deepin_dark.theme deleted file mode 100644 index 66a8ffa0d..000000000 --- a/tests/src/themes/deepin_dark.theme +++ /dev/null @@ -1,191 +0,0 @@ -{ - "metadata" : { - "revision" : 1, - "name" : "Deepin Dark", - "author" : "Rekols", - "license" : "MIT", - "read-only" : true - }, - "text-styles": { - "Normal" : { - "text-color" : "#cfcfc2", - "selected-bg-color" : "#2D5C76", - "selected-text-color" : "#FFFFFF", - "bold" : false, - "italic" : false, - "underline" : false, - "strike-through" : false - }, - "Keyword" : { - "text-color" : "#cfcfc2", - "selected-text-color" : "#cfcfc2", - "bold" : true - }, - "Function" : { - "text-color" : "#8e44ad", - "selected-text-color" : "#af81ff" - }, - "Variable" : { - "text-color" : "#27aeae", - "selected-text-color" : "#27aeae" - }, - "ControlFlow" : { - "text-color" : "#fdbc4b", - "selected-text-color" : "#fdbc4b", - "bold" : true - }, - "Operator" : { - "text-color" : "#cfcfc2", - "selected-text-color" : "#cfcfc2" - }, - "BuiltIn" : { - "text-color" : "#7f8c8d", - "selected-text-color" : "#bdc3c7" - }, - "Extension" : { - "text-color" : "#0099ff", - "selected-text-color" : "#bdc3c7", - "bold" : true - }, - "Preprocessor" : { - "text-color" : "#27ae60", - "selected-text-color" : "#27ae60" - }, - "Attribute" : { - "text-color" : "#2980b9", - "selected-text-color" : "#fdbc4b" - }, - "Char" : { - "text-color" : "#3daee9", - "selected-text-color" : "#3daee9" - }, - "SpecialChar" : { - "text-color" : "#3daee9", - "selected-text-color" : "#3daee9" - }, - "String" : { - "text-color" : "#f44f4f", - "selected-text-color" : "#f44f4f" - }, - "VerbatimString" : { - "text-color" : "#da4453", - "selected-text-color" : "#da4453" - }, - "SpecialString" : { - "text-color" : "#da4453", - "selected-text-color" : "#da4453" - }, - "Import" : { - "text-color" : "#27ae60", - "selected-text-color" : "#27ae60" - }, - "DataType" : { - "text-color" : "#2980b9", - "selected-text-color" : "#fdbc4b" - }, - "DecVal" : { - "text-color" : "#f67400", - "selected-text-color" : "#f67400" - }, - "BaseN" : { - "text-color" : "#f67400", - "selected-text-color" : "#f67400" - }, - "Float" : { - "text-color" : "#f67400", - "selected-text-color" : "#f67400" - }, - "Constant" : { - "text-color" : "#27aeae", - "selected-text-color" : "#27aeae", - "bold" : true - }, - "Comment" : { - "text-color" : "#7a7c7d", - "selected-text-color" : "#808080" - }, - "Documentation" : { - "text-color" : "#a43340", - "selected-text-color" : "#da4453" - }, - "Annotation" : { - "text-color" : "#3f8058", - "selected-text-color" : "#54aa75" - }, - "CommentVar" : { - "text-color" : "#7f8c8d", - "selected-text-color" : "#94a3a4" - }, - "RegionMarker" : { - "text-color" : "#2980b9", - "selected-text-color" : "#3daee9", - "background-color" : "#153042" - }, - "Information" : { - "text-color" : "#c45b00", - "selected-text-color" : "#e46700" - }, - "Warning" : { - "text-color" : "#da4453", - "selected-text-color" : "#da4453" - }, - "Alert" : { - "text-color" : "#95da4c", - "selected-text-color" : "#95da4c", - "background-color" : "#4d1f24", - "bold" : true - }, - "Error" : { - "text-color" : "#da4453", - "selected-text-color" : "#da4453", - "underline" : true - }, - "Others" : { - "text-color" : "#27ae60", - "selected-text-color" : "#27ae60" - } - }, - "editor-colors": { - "background-color" : "#252525", - "code-folding" : "#224e65", - "bracket-match-bg" : "#045998", - "bracket-match-fg" : "#FFFFFF", - "current-line" : "#2A2E32", - "icon-border" : "#31363b", - "indentation-line" : "#3a3f44", - "line-numbers" : "#ffffff", - "current-line-number" : "#a5a6a8", - "mark-bookmark" : "#0404bf", - "mark-breakpoint-active" : "#8b0607", - "mark-breakpoint-reached" : "#6d6e07", - "mark-breakpoint-disabled" : "#820683", - "mark-execution" : "#4d4e50", - "mark-warning" : "#f67400", - "mark-error" : "#da4453", - "modified-lines" : "#c04900", - "replace-highlight" : "#808021", - "saved-lines" : "#1c8042", - "find-match-background" : "#CCCC00", - "find-match-foreground" : "#000000", - "find-highlight-background" : "#2D5C76", - "find-highlight-foreground" : "#FFFFFF", - "selection" : "#2d5c76", - "separator" : "#7a7c7d", - "spell-checking" : "#c0392b", - "tab-marker" : "#4d4d4d", - "template-background" : "#31363b", - "template-placeholder" : "#123723", - "template-focused-placeholder" : "#123723", - "template-read-only-placeholder" : "#4d1f24", - "word-wrap-marker" : "#3a3f44" - }, - "app-colors" : { - "tab-active" : "#2CA7F8", - "tab-background-start-color" : "(20, 21, 23, 90%)", - "tab-background-end-color" : "(20, 21, 23, 90%)", - "tab-dnd-start" : "(35, 38, 41, 90%)", - "tab-dnd-end" : "(35, 38, 41, 90%)", - "themebar-frame-selected" : "#2CA7F8", - "themebar-frame-normal" : "#FFFFFF" - } -} diff --git a/tests/src/themes/solarized_dark.theme b/tests/src/themes/solarized_dark.theme deleted file mode 100644 index 9771fd35f..000000000 --- a/tests/src/themes/solarized_dark.theme +++ /dev/null @@ -1,191 +0,0 @@ -{ - "metadata" : { - "revision" : 1, - "name" : "Solarized Dark", - "author" : "Ethan Schoonover", - "license" : "MIT", - "read-only" : true - }, - "text-styles": { - "Normal" : { - "text-color" : "#93A1A1", - "selected-bg-color" : "#0B5366", - "selected-text-color" : "#cfcfc2", - "bold" : false, - "italic" : false, - "underline" : false, - "strike-through" : false - }, - "Keyword" : { - "text-color" : "#cfcfc2", - "selected-text-color" : "#cfcfc2", - "bold" : true - }, - "Function" : { - "text-color" : "#8e44ad", - "selected-text-color" : "#af81ff" - }, - "Variable" : { - "text-color" : "#27aeae", - "selected-text-color" : "#27aeae" - }, - "ControlFlow" : { - "text-color" : "#fdbc4b", - "selected-text-color" : "#fdbc4b", - "bold" : true - }, - "Operator" : { - "text-color" : "#cfcfc2", - "selected-text-color" : "#cfcfc2" - }, - "BuiltIn" : { - "text-color" : "#7f8c8d", - "selected-text-color" : "#bdc3c7" - }, - "Extension" : { - "text-color" : "#0099ff", - "selected-text-color" : "#bdc3c7", - "bold" : true - }, - "Preprocessor" : { - "text-color" : "#27ae60", - "selected-text-color" : "#27ae60" - }, - "Attribute" : { - "text-color" : "#2980b9", - "selected-text-color" : "#fdbc4b" - }, - "Char" : { - "text-color" : "#3daee9", - "selected-text-color" : "#3daee9" - }, - "SpecialChar" : { - "text-color" : "#3daee9", - "selected-text-color" : "#3daee9" - }, - "String" : { - "text-color" : "#f44f4f", - "selected-text-color" : "#f44f4f" - }, - "VerbatimString" : { - "text-color" : "#da4453", - "selected-text-color" : "#da4453" - }, - "SpecialString" : { - "text-color" : "#da4453", - "selected-text-color" : "#da4453" - }, - "Import" : { - "text-color" : "#27ae60", - "selected-text-color" : "#27ae60" - }, - "DataType" : { - "text-color" : "#2980b9", - "selected-text-color" : "#fdbc4b" - }, - "DecVal" : { - "text-color" : "#f67400", - "selected-text-color" : "#f67400" - }, - "BaseN" : { - "text-color" : "#f67400", - "selected-text-color" : "#f67400" - }, - "Float" : { - "text-color" : "#f67400", - "selected-text-color" : "#f67400" - }, - "Constant" : { - "text-color" : "#27aeae", - "selected-text-color" : "#27aeae", - "bold" : true - }, - "Comment" : { - "text-color" : "#7a7c7d", - "selected-text-color" : "#808080" - }, - "Documentation" : { - "text-color" : "#a43340", - "selected-text-color" : "#da4453" - }, - "Annotation" : { - "text-color" : "#3f8058", - "selected-text-color" : "#54aa75" - }, - "CommentVar" : { - "text-color" : "#7f8c8d", - "selected-text-color" : "#94a3a4" - }, - "RegionMarker" : { - "text-color" : "#2980b9", - "selected-text-color" : "#3daee9", - "background-color" : "#153042" - }, - "Information" : { - "text-color" : "#c45b00", - "selected-text-color" : "#e46700" - }, - "Warning" : { - "text-color" : "#da4453", - "selected-text-color" : "#da4453" - }, - "Alert" : { - "text-color" : "#95da4c", - "selected-text-color" : "#95da4c", - "background-color" : "#4d1f24", - "bold" : true - }, - "Error" : { - "text-color" : "#da4453", - "selected-text-color" : "#da4453", - "underline" : true - }, - "Others" : { - "text-color" : "#27ae60", - "selected-text-color" : "#27ae60" - } - }, - "editor-colors": { - "background-color" : "#002B36", - "code-folding" : "#224e65", - "bracket-match-bg" : "#586E75", - "bracket-match-fg" : "#AFBFBF", - "current-line" : "#073642", - "icon-border" : "#31363b", - "indentation-line" : "#3a3f44", - "line-numbers" : "#7a7c7d", - "current-line-number" : "#a5a6a8", - "mark-bookmark" : "#0404bf", - "mark-breakpoint-active" : "#8b0607", - "mark-breakpoint-reached" : "#6d6e07", - "mark-breakpoint-disabled" : "#820683", - "mark-execution" : "#4d4e50", - "mark-warning" : "#f67400", - "mark-error" : "#da4453", - "modified-lines" : "#c04900", - "replace-highlight" : "#808021", - "saved-lines" : "#1c8042", - "find-match-background" : "#ffff00", - "find-match-foreground" : "#000000", - "find-highlight-background" : "#2CA7F8", - "find-highlight-foreground" : "#FFFFFF", - "selection" : "#224659", - "separator" : "#7a7c7d", - "spell-checking" : "#c0392b", - "tab-marker" : "#4d4d4d", - "template-background" : "#31363b", - "template-placeholder" : "#123723", - "template-focused-placeholder" : "#123723", - "template-read-only-placeholder" : "#4d1f24", - "word-wrap-marker" : "#3a3f44" - }, - "app-colors" : { - "tab-active" : "#93A1A1", - "tab-background-start-color" : "(0, 37, 46, 90%)", - "tab-background-end-color" : "(0, 37, 46, 90%)", - "tab-dnd-start" : "(7, 54, 66, 90%)", - "tab-dnd-end" : "(10, 77, 94, 90%)", - "themebar-frame-selected" : "#93A1A1", - "themebar-frame-normal" : "#FFFFFF" - } -} diff --git a/tests/src/themes/solarized_light.theme b/tests/src/themes/solarized_light.theme deleted file mode 100644 index 081c39320..000000000 --- a/tests/src/themes/solarized_light.theme +++ /dev/null @@ -1,191 +0,0 @@ -{ - "metadata" : { - "revision" : 1, - "name" : "Solarized Light", - "author" : "Ethan Schoonover", - "license" : "MIT", - "read-only" : true - }, - "text-styles": { - "Normal" : { - "text-color" : "#445257", - "selected-bg-color" : "#586E75", - "selected-text-color" : "#F2F2E2", - "bold" : false, - "italic" : false, - "underline" : false, - "strike-through" : false - }, - "Keyword" : { - "text-color" : "#1f1c1b", - "selected-text-color" : "#ffffff", - "bold" : true - }, - "Function" : { - "text-color" : "#644a9b", - "selected-text-color" : "#452886" - }, - "Variable" : { - "text-color" : "#0057ae", - "selected-text-color" : "#00316e" - }, - "ControlFlow" : { - "text-color" : "#1f1c1b", - "selected-text-color" : "#ffffff", - "bold" : true - }, - "Operator" : { - "text-color" : "#1f1c1b", - "selected-text-color" : "#ffffff" - }, - "BuiltIn" : { - "text-color" : "#644a9b", - "selected-text-color" : "#452886", - "bold" : true - }, - "Extension" : { - "text-color" : "#0095ff", - "selected-text-color" : "#ffffff", - "bold" : true - }, - "Preprocessor" : { - "text-color" : "#006e28", - "selected-text-color" : "#006e28" - }, - "Attribute" : { - "text-color" : "#0057ae", - "selected-text-color" : "#00316e" - }, - "Char" : { - "text-color" : "#924c9d", - "selected-text-color" : "#6c2477" - }, - "SpecialChar" : { - "text-color" : "#3daee9", - "selected-text-color" : "#fcfcfc" - }, - "String" : { - "text-color" : "#bf0303", - "selected-text-color" : "#9c0e0e" - }, - "VerbatimString" : { - "text-color" : "#bf0303", - "selected-text-color" : "#9c0e0e" - }, - "SpecialString" : { - "text-color" : "#ff5500", - "selected-text-color" : "#ff5500" - }, - "Import" : { - "text-color" : "#ff5500", - "selected-text-color" : "#ff5500" - }, - "DataType" : { - "text-color" : "#0057ae", - "selected-text-color" : "#00316e" - }, - "DecVal" : { - "text-color" : "#b08000", - "selected-text-color" : "#805c00" - }, - "BaseN" : { - "text-color" : "#b08000", - "selected-text-color" : "#805c00" - }, - "Float" : { - "text-color" : "#b08000", - "selected-text-color" : "#805c00" - }, - "Constant" : { - "text-color" : "#aa5500", - "selected-text-color" : "#5e2f00" - }, - "Comment" : { - "text-color" : "#898887", - "selected-text-color" : "#5e5d5d" - }, - "Documentation" : { - "text-color" : "#607880", - "selected-text-color" : "#46585e" - }, - "Annotation" : { - "text-color" : "#ca60ca", - "selected-text-color" : "#a44ea4" - }, - "CommentVar" : { - "text-color" : "#0095ff", - "selected-text-color" : "#ffffff" - }, - "RegionMarker" : { - "text-color" : "#0057ae", - "selected-text-color" : "#00316e", - "background-color" : "#e0e9f8" - }, - "Information" : { - "text-color" : "#b08000", - "selected-text-color" : "#805c00" - }, - "Warning" : { - "text-color" : "#bf0303", - "selected-text-color" : "#9c0e0e" - }, - "Alert" : { - "text-color" : "#bf0303", - "selected-text-color" : "#9c0e0e", - "background-color" : "#f7e6e6", - "bold" : true - }, - "Error" : { - "text-color" : "#bf0303", - "selected-text-color" : "#9c0e0e", - "underline" : true - }, - "Others" : { - "text-color" : "#006e28", - "selected-text-color" : "#006e28" - } - }, - "editor-colors": { - "background-color" : "#FDF6E3", - "code-folding" : "#224e65", - "bracket-match-bg" : "#739099", - "bracket-match-fg" : "#F2F2E2", - "current-line" : "#EEE8D5", - "icon-border" : "#31363b", - "indentation-line" : "#3a3f44", - "line-numbers" : "#7a7c7d", - "current-line-number" : "#a5a6a8", - "mark-bookmark" : "#0404bf", - "mark-breakpoint-active" : "#8b0607", - "mark-breakpoint-reached" : "#6d6e07", - "mark-breakpoint-disabled" : "#820683", - "mark-execution" : "#4d4e50", - "mark-warning" : "#f67400", - "mark-error" : "#da4453", - "modified-lines" : "#c04900", - "replace-highlight" : "#808021", - "saved-lines" : "#1c8042", - "find-match-background" : "#ffff00", - "find-match-foreground" : "#000000", - "find-highlight-background" : "#2CA7F8", - "find-highlight-foreground" : "#FFFFFF", - "selection" : "#224659", - "separator" : "#7a7c7d", - "spell-checking" : "#c0392b", - "tab-marker" : "#4d4d4d", - "template-background" : "#31363b", - "template-placeholder" : "#123723", - "template-focused-placeholder" : "#123723", - "template-read-only-placeholder" : "#4d1f24", - "word-wrap-marker" : "#3a3f44" - }, - "app-colors" : { - "tab-active" : "#403513", - "tab-background-start-color" : "(253, 246, 227, 90%)", - "tab-background-end-color" : "(245, 238, 220, 90%)", - "tab-dnd-start" : "(238, 232, 213, 90%)", - "tab-dnd-end" : "(238, 232, 213, 90%)", - "themebar-frame-selected" : "#739099", - "themebar-frame-normal" : "#000000" - } -} diff --git a/tests/src/ut_coverage_gap.cpp b/tests/src/ut_coverage_gap.cpp deleted file mode 100644 index c6eb185a2..000000000 --- a/tests/src/ut_coverage_gap.cpp +++ /dev/null @@ -1,600 +0,0 @@ -// SPDX-FileCopyrightText: 2026 UnionTech Software Technology Co., Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "../../src/editor/markdown/markdownbridge.h" -#include "../../src/editor/markdown/themeserializer.h" -#include "../../src/widgets/bottombar.h" -#include "../../src/editor/editwrapper.h" -#include "../../src/widgets/window.h" -#include "../../src/editor/markdown/imarkdownrenderer.h" -#include "../../src/editor/dtextedit.h" -#include "../../src/common/settings.h" -#include "../../src/common/config.h" -#include "../../src/common/iflytek_ai_assistant.h" -#include "../../src/common/text_file_saver.h" -#include "../../src/editorapplication.h" -#include "../../src/startmanager.h" -#include "src/stub.h" - -// ============================================================ -// MarkdownBridge: tooltip getters + retranslate + tr -// ============================================================ -TEST(UT_CoverageGap_MarkdownBridge, TooltipGetters) -{ - MarkdownBridge bridge; - EXPECT_FALSE(bridge.collapseTooltip().isEmpty()); - EXPECT_FALSE(bridge.expandTooltip().isEmpty()); - EXPECT_FALSE(bridge.copyTooltip().isEmpty()); - EXPECT_FALSE(bridge.expandText().isEmpty()); - EXPECT_FALSE(bridge.collapsedLinesText().isEmpty()); -} - -TEST(UT_CoverageGap_MarkdownBridge, Retranslate_EmitsSignal) -{ - MarkdownBridge bridge; - QSignalSpy spy(&bridge, &MarkdownBridge::retranslated); - bridge.retranslate(); - EXPECT_EQ(spy.count(), 1); -} - -TEST(UT_CoverageGap_MarkdownBridge, Tr_Static) -{ - QString result = MarkdownBridge::tr("test"); - EXPECT_EQ(result, QStringLiteral("test")); -} - -// ============================================================ -// ThemeSerializer: all bg/fg valid/invalid x dark/light combos -// ============================================================ -TEST(UT_CoverageGap_ThemeSerializer, DarkValidBgValidFg) -{ - QVariantMap themeMap; - QVariantMap ec; - ec["background-color"] = "#1a1a1a"; // dark (lightness < 128) - ec["text-color"] = "#ffffff"; - themeMap["editor-colors"] = ec; - QString json = ThemeSerializer::serialize(themeMap); - EXPECT_FALSE(json.isEmpty()); - EXPECT_TRUE(ThemeSerializer::isDark(themeMap)); -} - -TEST(UT_CoverageGap_ThemeSerializer, DarkInvalidBg) -{ - QVariantMap themeMap; - QVariantMap ec; - ec["background-color"] = "invalid"; - ec["text-color"] = "#ffffff"; - themeMap["editor-colors"] = ec; - QString json = ThemeSerializer::serialize(themeMap); - EXPECT_FALSE(json.isEmpty()); -} - -TEST(UT_CoverageGap_ThemeSerializer, LightValidBgValidFg) -{ - QVariantMap themeMap; - QVariantMap ec; - ec["background-color"] = "#ffffff"; // light - ec["text-color"] = "#1f1f1f"; - themeMap["editor-colors"] = ec; - QString json = ThemeSerializer::serialize(themeMap); - EXPECT_FALSE(json.isEmpty()); - EXPECT_FALSE(ThemeSerializer::isDark(themeMap)); -} - -TEST(UT_CoverageGap_ThemeSerializer, LightInvalidBgInvalidFg) -{ - QVariantMap themeMap; - QVariantMap ec; - ec["background-color"] = "bad"; - themeMap["editor-colors"] = ec; - // No text-color, no text-styles fallback - QString json = ThemeSerializer::serialize(themeMap); - EXPECT_FALSE(json.isEmpty()); -} - -TEST(UT_CoverageGap_ThemeSerializer, DarkInvalidFgWithTextStylesFallback) -{ - QVariantMap themeMap; - QVariantMap ec; - ec["background-color"] = "#1a1a1a"; // dark - // no text-color in editor-colors - themeMap["editor-colors"] = ec; - QVariantMap ts; - QVariantMap normal; - normal["text-color"] = "#e0e0e0"; - ts["Normal"] = normal; - themeMap["text-styles"] = ts; - QString json = ThemeSerializer::serialize(themeMap); - EXPECT_FALSE(json.isEmpty()); -} - -// ============================================================ -// BottomBar: eventFilter -// ============================================================ -TEST(UT_CoverageGap_BottomBar, EventFilter) -{ - BottomBar bar; - QEvent appFontEvent(QEvent::ApplicationFontChange); - bar.eventFilter(&bar, &appFontEvent); - // Also test a different event type (fallthrough path) - QEvent noneEvent(QEvent::None); - bar.eventFilter(&bar, &noneEvent); - bar.deleteLater(); -} - -// ============================================================ -// IflytekAiAssistant: early-return paths + isCopilotEnabled + countEnabledPorts -// ============================================================ -TEST(UT_CoverageGap_Iflytek, GetIatEnable_NotEnabled) -{ - IflytekAiAssistant *ins = IflytekAiAssistant::instance(); - auto oldStatus = ins->m_status; - ins->m_status = IflytekAiAssistant::Invalid; - auto ret = ins->getIatEnable(); - EXPECT_EQ(ret, IflytekAiAssistant::Invalid); - ins->m_status = oldStatus; -} - -TEST(UT_CoverageGap_Iflytek, GetTransEnable_NotEnabled) -{ - IflytekAiAssistant *ins = IflytekAiAssistant::instance(); - auto oldStatus = ins->m_status; - ins->m_status = IflytekAiAssistant::Invalid; - auto ret = ins->getTransEnable(); - EXPECT_EQ(ret, IflytekAiAssistant::Invalid); - ins->m_status = oldStatus; -} - -TEST(UT_CoverageGap_Iflytek, IsTtsEnable_NotEnabled) -{ - IflytekAiAssistant *ins = IflytekAiAssistant::instance(); - auto oldStatus = ins->m_status; - ins->m_status = IflytekAiAssistant::Invalid; - auto ret = ins->isTtsEnable(); - EXPECT_EQ(ret, IflytekAiAssistant::Invalid); - ins->m_status = oldStatus; -} - -TEST(UT_CoverageGap_Iflytek, IsTtsInWorking_NotEnabled) -{ - IflytekAiAssistant *ins = IflytekAiAssistant::instance(); - auto oldStatus = ins->m_status; - ins->m_status = IflytekAiAssistant::Invalid; - auto ret = ins->isTtsInWorking(); - EXPECT_EQ(ret, IflytekAiAssistant::Invalid); - ins->m_status = oldStatus; -} - -TEST(UT_CoverageGap_Iflytek, IsCopilotEnabled_InvalidInterface) -{ - QSharedPointer copilot = - QSharedPointer::create("com.invalid.service", - "/com/invalid/path", - "com.invalid.iface"); - auto ret = IflytekAiAssistant::isCopilotEnabled(copilot); - // With invalid interface, state.isValid() is false → returns Enable (adapt old version) - EXPECT_EQ(ret, IflytekAiAssistant::Enable); -} - -class UT_DeferredDeleteBlocker : public QObject -{ -public: - bool eventFilter(QObject *, QEvent *e) override - { - return e->type() == QEvent::DeferredDelete; - } -}; - -// ============================================================ -// EditWrapper: viewMode, isMarkdownFile, setMarkdownRendererForTest, -// ensureLiveSplitterCreated, constructor lambdas -// ============================================================ -TEST(UT_CoverageGap_EditWrapper, InlineGettersAndSetters) -{ - Window *window = new Window(); - EditWrapper *wrapper = new EditWrapper(window); - - // viewMode() and isMarkdownFile() getters - (void)wrapper->viewMode(); - (void)wrapper->isMarkdownFile(); - - // setMarkdownRendererForTest with nullptr - wrapper->setMarkdownRendererForTest(nullptr); - - // ensureLiveSplitterCreated - wrapper->ensureLiveSplitterCreated(); - // Call again to hit early-return - wrapper->ensureLiveSplitterCreated(); - - wrapper->deleteLater(); - window->deleteLater(); -} - -TEST(UT_CoverageGap_EditWrapper, ConstructorLambdas_ViewModeRequested) -{ - Window *window = new Window(); - EditWrapper *wrapper = new EditWrapper(window); - UT_DeferredDeleteBlocker blocker; - qApp->installEventFilter(&blocker); - - // Trigger the viewModeRequested lambda from BottomBar - emit wrapper->bottomBar()->viewModeRequested(ViewMode::Edit); - QTest::qWait(10); - - qApp->removeEventFilter(&blocker); - wrapper->deleteLater(); - window->deleteLater(); -} - -TEST(UT_CoverageGap_EditWrapper, ConstructorLambdas_ViewModeChanged) -{ - Window *window = new Window(); - EditWrapper *wrapper = new EditWrapper(window); - UT_DeferredDeleteBlocker blocker; - qApp->installEventFilter(&blocker); - - // Trigger the viewModeChanged lambda via TextEdit - emit wrapper->textEditor()->viewModeRequested(ViewMode::Edit); - QTest::qWait(10); - - qApp->removeEventFilter(&blocker); - wrapper->deleteLater(); - window->deleteLater(); -} - -// ============================================================ -// Window: popupFindBar/popupReplaceBar timer lambdas -// ============================================================ -TEST(UT_CoverageGap_Window, popupFindBar_TimerLambda) -{ - Window *w = new Window(); - UT_DeferredDeleteBlocker blocker; - qApp->installEventFilter(&blocker); - w->show(); - w->addBlankTab(); - w->currentWrapper()->textEditor()->setPlainText("12345 content"); - w->popupFindBar(); - QTest::qWait(50); // let singleShot(10) fire - qApp->removeEventFilter(&blocker); - w->deleteLater(); -} - -TEST(UT_CoverageGap_Window, popupReplaceBar_TimerLambda) -{ - Window *w = new Window(); - UT_DeferredDeleteBlocker blocker; - qApp->installEventFilter(&blocker); - w->show(); - w->addBlankTab(); - w->currentWrapper()->textEditor()->setPlainText("12345 content"); - w->popupReplaceBar(); - QTest::qWait(50); // let singleShot(10) fire - qApp->removeEventFilter(&blocker); - w->deleteLater(); -} - -// ============================================================ -// TextEdit: highlight timer lambda + initRightClickedMenu action triggers -// ============================================================ -TEST(UT_CoverageGap_TextEdit, Highlight_TimerLambda) -{ - Window *window = new Window(); - EditWrapper *wrapper = new EditWrapper(window); - TextEdit *te = wrapper->textEditor(); - UT_DeferredDeleteBlocker blocker; - qApp->installEventFilter(&blocker); - te->highlight(); - QTest::qWait(10); // let singleShot(0) fire - qApp->removeEventFilter(&blocker); - wrapper->deleteLater(); - window->deleteLater(); -} - -TEST(UT_CoverageGap_TextEdit, InitRightClickedMenu_MarkCurrentAct) -{ - Window *window = new Window(); - EditWrapper *wrapper = new EditWrapper(window); - TextEdit *te = wrapper->textEditor(); - UT_DeferredDeleteBlocker blocker; - qApp->installEventFilter(&blocker); - te->initRightClickedMenu(); - if (te->m_markCurrentAct) { - te->m_markCurrentAct->trigger(); - } - QTest::qWait(10); - qApp->removeEventFilter(&blocker); - wrapper->deleteLater(); - window->deleteLater(); -} - -TEST(UT_CoverageGap_TextEdit, InitRightClickedMenu_MarkAllAct) -{ - Window *window = new Window(); - EditWrapper *wrapper = new EditWrapper(window); - TextEdit *te = wrapper->textEditor(); - UT_DeferredDeleteBlocker blocker; - qApp->installEventFilter(&blocker); - te->initRightClickedMenu(); - if (te->m_markAllAct) { - te->m_markAllAct->trigger(); - } - QTest::qWait(10); - qApp->removeEventFilter(&blocker); - wrapper->deleteLater(); - window->deleteLater(); -} - -// ============================================================ -// EditorApplication: notify with QCheckBox/QComboBox + pressSpace lambda -// ============================================================ -TEST(UT_CoverageGap_EditorApp, Notify_QCheckBox) -{ - int argc = 1; - char *argv[] = {"test"}; - EditorApplication *app = new EditorApplication(argc, argv); - - QCheckBox *checkbox = new QCheckBox; - QKeyEvent *e = new QKeyEvent(QEvent::KeyPress, Qt::Key_Return, Qt::NoModifier, "\r"); - bool ret = app->notify(checkbox, e); - EXPECT_TRUE(ret); - QTest::qWait(100); // let pressSpace timer fire - - delete e; - // Intentionally leak checkbox AND app: pressSpace() 的 80ms 定时器裸捕获该控件, - // 负载高时定时器可能在 qWait 结束、控件销毁之后才触发(悬空指针); - // 销毁第二个 QApplication 会置空 qApp,破坏后续所有测试。 -} - -TEST(UT_CoverageGap_EditorApp, Notify_QComboBox) -{ - int argc = 1; - char *argv[] = {"test"}; - EditorApplication *app = new EditorApplication(argc, argv); - - QComboBox *combo = new QComboBox; - QKeyEvent *e = new QKeyEvent(QEvent::KeyPress, Qt::Key_Return, Qt::NoModifier, "\r"); - bool ret = app->notify(combo, e); - EXPECT_TRUE(ret); - QTest::qWait(100); - - delete e; - // Intentionally leak combo AND app (see Notify_QCheckBox). -} - -// Stub functions for triggering catch blocks in saveToFile -static int stub_characterCount_badalloc(QTextDocument *) -{ - throw std::bad_alloc(); - return 0; -} - -static QString stub_toPlainText_exception(QTextDocument *) -{ - throw std::runtime_error("test exception"); - return {}; -} - -TEST(UT_CoverageGap_TextFileSaver, SaveToFile_BadAlloc) -{ - QTextDocument *doc = new QTextDocument(); - doc->setPlainText("test"); - TextFileSaver saver(doc); - - QTemporaryFile tmpFile; - ASSERT_TRUE(tmpFile.open()); - tmpFile.close(); - - Stub s; - s.set(ADDR(QTextDocument, characterCount), stub_characterCount_badalloc); - - bool ret = saver.saveToFile(tmpFile); - EXPECT_FALSE(ret); - delete doc; -} - -TEST(UT_CoverageGap_TextFileSaver, SaveToFile_Exception) -{ - QTextDocument *doc = new QTextDocument(); - doc->setPlainText("test"); - TextFileSaver saver(doc); - - QTemporaryFile tmpFile; - ASSERT_TRUE(tmpFile.open()); - tmpFile.close(); - - Stub s; - s.set(ADDR(QTextDocument, toPlainText), stub_toPlainText_exception); - - bool ret = saver.saveToFile(tmpFile); - EXPECT_FALSE(ret); - delete doc; -} - -// ============================================================ -// Config: constructor valueChanged lambda -// (only runs if DConfig is valid in test env) -// ============================================================ -#ifdef DTKCORE_CLASS_DConfigFile -TEST(UT_CoverageGap_Config, ValueChangedLambda_AllKeys) -{ - Config *cfg = Config::instance(); - if (cfg->dconfig && cfg->dconfig->isValid()) { - QMetaObject::invokeMethod(cfg->dconfig, "valueChanged", - Qt::DirectConnection, - Q_ARG(QString, "disableImproveGB18030")); - QMetaObject::invokeMethod(cfg->dconfig, "valueChanged", - Qt::DirectConnection, - Q_ARG(QString, "enablePatchedIconv")); - QMetaObject::invokeMethod(cfg->dconfig, "valueChanged", - Qt::DirectConnection, - Q_ARG(QString, "defaultEncoding")); - } - SUCCEED(); -} -#endif - -// ============================================================ -// Additional gap tests (Continuation 10) -// ============================================================ - -// --- Mock IMarkdownRenderer for EditWrapper tests --- -class GapMockRenderer : public IMarkdownRenderer -{ -public: - bool m_ready = true; - QString m_lastMd; - void setMarkdown(const QString &md) override { m_lastMd = md; } - bool isReady() const override { return m_ready; } - void setMode(int) override {} - void applyTheme(const QVariantMap &) override {} - void setLayout(int, bool) override {} - void scrollToRatio(double) override {} -}; - -// ThemeSerializer: dark (valid bg) + invalid fg (no text-color, no text-styles) -// Covers the dark fallback lambdas for --fg, --fg-secondary, --code-fg -TEST(UT_CoverageGap_ThemeSerializer, DarkValidBgInvalidFg_NoTextStyles) -{ - QVariantMap themeMap; - QVariantMap ec; - ec["background-color"] = "#1a1a1a"; // dark (lightness < 128) - // No text-color — fg will be invalid - themeMap["editor-colors"] = ec; - // No text-styles fallback either - QString json = ThemeSerializer::serialize(themeMap); - EXPECT_FALSE(json.isEmpty()); - EXPECT_TRUE(ThemeSerializer::isDark(themeMap)); - - // Verify the fallback values for dark mode - auto doc = QJsonDocument::fromJson(json.toUtf8()); - auto obj = doc.object(); - EXPECT_EQ(obj.value("--fg").toString(), QStringLiteral("#ffffff")); - EXPECT_EQ(obj.value("--fg-secondary").toString(), QStringLiteral("#a6a6a6")); - EXPECT_EQ(obj.value("--code-fg").toString(), QStringLiteral("#ffffff")); -} - -// EditWrapper: renderRequested lambda (const QString&) -// The constructor connects RenderThrottle::renderRequested to a lambda that -// calls m_pRenderer->setMarkdown when m_pRenderer is set. -TEST(UT_CoverageGap_EditWrapper, RenderRequestedLambda) -{ - Window *window = new Window(); - EditWrapper *wrapper = new EditWrapper(window); - - GapMockRenderer *mock = new GapMockRenderer; - wrapper->setMarkdownRendererForTest(mock); - - // Make the throttle ready and trigger content - wrapper->m_renderThrottle.setReady(true); - wrapper->m_renderThrottle.setInterval(0); // immediate flush - wrapper->m_renderThrottle.noteContent(QStringLiteral("# test markdown")); - - // The lambda should have called setMarkdown on the mock - EXPECT_EQ(mock->m_lastMd, QStringLiteral("# test markdown")); - - wrapper->setMarkdownRendererForTest(nullptr); - delete mock; - wrapper->deleteLater(); - window->deleteLater(); -} - -// EditWrapper: markdownAvailabilityChanged lambda (bool) -// The constructor connects this signal to a lambda that calls -// m_pTextEdit->updateViewModeActions(m_viewMode, m_isMarkdown) -TEST(UT_CoverageGap_EditWrapper, MarkdownAvailabilityChangedLambda) -{ - Window *window = new Window(); - EditWrapper *wrapper = new EditWrapper(window); - - UT_DeferredDeleteBlocker blocker; - qApp->installEventFilter(&blocker); - - // Emit the signal to trigger the lambda - emit wrapper->markdownAvailabilityChanged(true); - QTest::qWait(10); - - qApp->removeEventFilter(&blocker); - wrapper->deleteLater(); - window->deleteLater(); -} - -// TextEdit: trigger redo and readView actions in initRightClickedMenu -// These cover the remaining initRightClickedMenu lambdas -TEST(UT_CoverageGap_TextEdit, InitRightClickedMenu_RedoAndReadView) -{ - Window *window = new Window(); - EditWrapper *wrapper = new EditWrapper(window); - TextEdit *te = wrapper->textEditor(); - - UT_DeferredDeleteBlocker blocker; - qApp->installEventFilter(&blocker); - - te->initRightClickedMenu(); - // Trigger redo action lambda - if (te->m_redoAction) { - te->m_redoAction->trigger(); - } - QTest::qWait(10); - // Trigger read view action lambda (emits viewModeRequested) - if (te->m_actReadView) { - te->m_actReadView->trigger(); - } - QTest::qWait(10); - - qApp->removeEventFilter(&blocker); - wrapper->deleteLater(); - window->deleteLater(); -} - -// TextEdit: trigger undo, edit view, and live preview actions -TEST(UT_CoverageGap_TextEdit, InitRightClickedMenu_UndoEditViewLivePreview) -{ - Window *window = new Window(); - EditWrapper *wrapper = new EditWrapper(window); - TextEdit *te = wrapper->textEditor(); - - UT_DeferredDeleteBlocker blocker; - qApp->installEventFilter(&blocker); - - te->initRightClickedMenu(); - if (te->m_undoAction) { - te->m_undoAction->trigger(); - } - QTest::qWait(10); - if (te->m_actEditView) { - te->m_actEditView->trigger(); - } - QTest::qWait(10); - if (te->m_actLivePreview) { - te->m_actLivePreview->trigger(); - } - QTest::qWait(10); - - qApp->removeEventFilter(&blocker); - wrapper->deleteLater(); - window->deleteLater(); -} - -// EditorApplication: pressSpace timer lambda is NOT testable safely. -// pressSpace() creates QTimer::singleShot(80, this, [btn]{...}) which captures -// the button by raw pointer. Previous EditorApplication tests (notify_001 etc.) -// leave pending singleShot timers; any QTest::qWait() in this test causes those -// timers to fire on deleteLater'd buttons → use-after-free. The pressSpace() -// function itself is already covered by UT_EditorApplication_pressSpace.pressSpace. diff --git a/tests/src/ut_editorapplication.cpp b/tests/src/ut_editorapplication.cpp deleted file mode 100644 index 8b3be997c..000000000 --- a/tests/src/ut_editorapplication.cpp +++ /dev/null @@ -1,164 +0,0 @@ -// SPDX-FileCopyrightText: 2022-2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "ut_editorapplication.h" -#include "../../src/editorapplication.h" -#include -#include -#include "src/stub.h" - - - -namespace editappstub -{ -QWidget* activeWindowStub() -{ - return new QWidget; -} -} - -using namespace editappstub; - - -UT_EditorApplication::UT_EditorApplication() -{ - -} - - -TEST(UT_EditorApplication_EditorApplication, EditorApplication_001) -{ - int argc = 1; - char* argv[] = {"test"}; - //no deleted... - EditorApplication *app = new EditorApplication(argc, argv); - QString strRetOrNmae = app->organizationName(); - QString strRetAppName = app->applicationName(); - ASSERT_TRUE(!strRetOrNmae.compare(QString("deepin")) && !strRetAppName.compare(QString("deepin-editor"))); - - app->deleteLater(); -} - -TEST(UT_EditorApplication_EditorApplication, EditorApplication_002) -{ - int argc = 1; - char* argv[] = {"test"}; - //EditorApplication e(argc,argv); -} - -TEST(UT_EditorApplication_pressSpace, notify_001) -{ - int argc = 1; - char* argv[] = {"test"}; - //no deleted... - EditorApplication *app = new EditorApplication(argc,argv); - Qt::KeyboardModifier modefiers[4] = {Qt::ControlModifier,Qt::AltModifier,Qt::MetaModifier,Qt::NoModifier}; - QKeyEvent *e = new QKeyEvent(QEvent::KeyPress,Qt::Key_Return ,modefiers[0],"\r"); - - QPushButton* btn = new QPushButton; - btn->setObjectName("CustomRebackButton"); - bool bRet = app->notify(btn, e); - ASSERT_TRUE(bRet == true); - - // Intentionally leak btn: pressSpace() 会调度 80ms 定时器并裸捕获 btn, - // 若在此销毁会使延迟 lambda 悬空(heap-use-after-free)。 - // 不能用 qWait 等待定时器触发:二次 QApplication 实例处理事件会导致 - // QSocketNotifier 无效套接字刷屏。泄漏对象可安全存活至定时器触发。 - delete e; - e = nullptr; - app->deleteLater(); -} - -TEST(UT_EditorApplication_pressSpace, notify_002) -{ - int argc = 1; - char* argv[] = {"test"}; - //no deleted... - EditorApplication *app = new EditorApplication(argc,argv); - Qt::KeyboardModifier modefiers[4] = {Qt::ControlModifier,Qt::AltModifier,Qt::MetaModifier,Qt::NoModifier}; - QKeyEvent *e = new QKeyEvent(QEvent::KeyPress, Qt::Key_Left, modefiers[0],"\r"); - - QPushButton* btn = new QPushButton; - btn->setObjectName("CustomRebackButton"); - bool bRet = app->notify(btn, e); - ASSERT_TRUE(bRet == true); - - // 同 notify_001:故意泄漏 btn,避免 pressSpace 延迟 lambda 悬空 - delete e; - e = nullptr; - app->deleteLater(); -} - -TEST(UT_EditorApplication_pressSpace, notify_003) -{ - int argc = 1; - char* argv[] = {"test"}; - //no deleted... - EditorApplication *app = new EditorApplication(argc,argv); - Qt::KeyboardModifier modefiers[4] = {Qt::ControlModifier,Qt::AltModifier,Qt::MetaModifier,Qt::NoModifier}; - QKeyEvent *e = new QKeyEvent(QEvent::KeyPress, Qt::Key_Print, modefiers[0],"\r"); - - QPushButton* btn = new QPushButton; - btn->setObjectName("CustomRebackButton1"); - bool bRet = app->notify(btn, e); - ASSERT_TRUE(bRet == true); - - btn->deleteLater(); - delete e; - e = nullptr; - app->deleteLater(); -} - -TEST(UT_EditorApplication_pressSpace, notify_004) -{ - int argc = 1; - char* argv[] = {"test"}; - //no deleted... - EditorApplication *app = new EditorApplication(argc,argv); - Qt::KeyboardModifier modefiers[4] = {Qt::ControlModifier,Qt::AltModifier,Qt::MetaModifier,Qt::NoModifier}; - QKeyEvent *e = new QKeyEvent(QEvent::KeyRelease, Qt::Key_Print, modefiers[0], "\r"); - - QPushButton* btn = new QPushButton; - btn->setObjectName("CustomRebackButton1"); - bool bRet = app->notify(btn, e); - ASSERT_TRUE(bRet == true); - - btn->deleteLater(); - delete e; - e = nullptr; - app->deleteLater(); -} - -TEST(UT_EditorApplication_pressSpace, pressSpace) -{ - int argc = 1; - char* argv[] = {"test"}; - //no deleted... - EditorApplication *app = new EditorApplication(argc,argv); - - QPushButton* btn = new QPushButton; - btn->setObjectName("CustomRebackButton"); - app->pressSpace(btn); - QString strRetOrNmae = app->organizationName(); - QString strRetAppName = app->applicationName(); - ASSERT_TRUE(!strRetOrNmae.compare(QString("deepin")) && !strRetAppName.compare(QString("deepin-editor"))); - - // 同 notify_001:故意泄漏 btn,避免 pressSpace 延迟 lambda 悬空 - app->deleteLater(); -} - -TEST(UT_EditorApplication_handleQuitAction, handleQuitAction) -{ - int argc = 1; - char* argv[] = {"test"}; - //no deleted... - EditorApplication *app = new EditorApplication(argc,argv); - Stub s1; - s1.set(ADDR(QApplication,activeWindow),activeWindowStub); - - app->handleQuitAction(); - - app->deleteLater(); - -} diff --git a/tests/src/ut_editorapplication.h b/tests/src/ut_editorapplication.h deleted file mode 100644 index ad9fc1c9f..000000000 --- a/tests/src/ut_editorapplication.h +++ /dev/null @@ -1,21 +0,0 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef UT_EditorApplication_H -#define UT_EditorApplication_H - -#include "gtest/gtest.h" -#include - - -class UT_EditorApplication: public QObject, public::testing::Test -{ - Q_OBJECT -public: - UT_EditorApplication(); -}; - - - -#endif // UT_EditorApplication_H diff --git a/tests/src/ut_main.cpp b/tests/src/ut_main.cpp deleted file mode 100644 index 6727e3d28..000000000 --- a/tests/src/ut_main.cpp +++ /dev/null @@ -1,74 +0,0 @@ -// SPDX-FileCopyrightText: 2022-2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include - -#include -#include -#include -#include -#include "src/stub.h" -#include -#include -#include -#include - -#if defined(CMAKE_SAFETYTEST_ARG_ON) -#include -#endif - -extern "C" void __gcov_dump(void); - -DWIDGET_USE_NAMESPACE - -static void quitNoop() { return; } - -static void alarmHandler(int) -{ - __gcov_dump(); - fflush(nullptr); - std::_Exit(1); -} - -static void crashHandler(int sig) -{ - __gcov_dump(); - fflush(nullptr); - std::_Exit(sig); -} - -int main(int argc, char *argv[]) - -{ - qputenv("QT_QPA_PLATFORM","offscreen"); - qputenv("QT_LOGGING_RULES", "*.debug=false;*.info=false"); - // 与生产 main.cpp 一致:WebEngine 渲染视图需要共享 GL 上下文(须在 QApplication 前设置) - QCoreApplication::setAttribute(Qt::AA_ShareOpenGLContexts); - DApplication app(argc, argv); - - // Stub QCoreApplication::quit globally to prevent tests from calling quit() - // and corrupting the process state (slotCloseWindow timer calls quit()). - Stub quitStub; - quitStub.set(ADDR(QCoreApplication, quit), quitNoop); - - // Install SIGALRM handler so coverage data is preserved if the test suite hangs. - // The alarm fires after 3600s, dumps gcov data, and exits. The full suite - // (1291+ tests) needs ~300s; 3600s keeps hang protection without killing - // a normal run (CI total timeout is 7200s). - signal(SIGALRM, alarmHandler); - signal(SIGABRT, crashHandler); - signal(SIGSEGV, crashHandler); - alarm(3600); - - testing::InitGoogleTest(&argc, argv); - - auto c = RUN_ALL_TESTS(); - - alarm(0); // Cancel the alarm - - __gcov_dump(); - - fflush(nullptr); - std::_Exit(c); -} diff --git a/tests/src/ut_startmanager.cpp b/tests/src/ut_startmanager.cpp deleted file mode 100644 index 6180295af..000000000 --- a/tests/src/ut_startmanager.cpp +++ /dev/null @@ -1,475 +0,0 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "ut_startmanager.h" -#include "src/stub.h" -#include "qdir.h" -#include "../../src/widgets/window.h" - -namespace startmanagerstub { - -EditWrapper *wrapperstub(const QString &filePath) -{ - return new EditWrapper; -} - -StartManager::FileTabInfo getFileTabInfostub() -{ - return StartManager::FileTabInfo{1,1}; -} - -TextEdit *textEditorstub() -{ - return new TextEdit; -} -void returnstub() -{ - return; -} - - -bool returntruestub() -{ - return true; -} - -bool returnfalsestub() -{ - return false; -} - -QStringList entryliststub() -{ - return QStringList{"123","456"}; -} - -} - -using namespace startmanagerstub; - -UT_StartManager::UT_StartManager() -{ - -} - -TEST(UT_StartManager_StartManager, StartManager) -{ - //StartManager startManager(nullptr); - StartManager *pStartManager = new StartManager(nullptr); - ASSERT_TRUE(pStartManager != nullptr); - - pStartManager->deleteLater(); -} - -TEST(UT_StartManager_instance, instance) -{ - StartManager *pStartManager = StartManager::instance(); - ASSERT_TRUE(pStartManager != nullptr); - - pStartManager->deleteLater(); -} - -TEST(UT_StartManager_openFilesInWindow, openFilesInWindow) -{ - StartManager *startManager = StartManager::instance(); - QStringList filePathList; - filePathList<<".cache/deepin/deepin-editor"; - startManager->openFilesInWindow(filePathList); - - filePathList<<".cache/deepin/"; - startManager->openFilesInWindow(filePathList); - ASSERT_TRUE(startManager->m_windows.at(0) != nullptr); - - startManager->deleteLater(); -} - -//initWindowPosition -TEST(UT_StartManager_initWindowPosition, initWindowPosition) -{ - StartManager *startManager = StartManager::instance(); - startManager->openFilesInTab(QStringList()); - ASSERT_TRUE(startManager->m_windows.at(0) != nullptr); - - startManager->deleteLater(); -} - -//getFileTabInfo -TEST(UT_StartManager_getFileTabInfo, getFileTabInfo) -{ - StartManager *startManager = StartManager::instance(); - StartManager::FileTabInfo fileTabInfo = startManager->getFileTabInfo(".cache/deepin/deepin-editor"); - - ASSERT_TRUE(fileTabInfo.windowIndex != 0); - startManager->deleteLater(); -} - -//slotCheckUnsaveTab -TEST(UT_StartManager_slotCheckUnsaveTab, slotCheckUnsaveTab) -{ - StartManager *startManager = StartManager::instance(); - startManager->openFilesInWindow(QStringList()); - startManager->slotCheckUnsaveTab(); - - bool bRet = startManager->m_windows.at(0)->checkBlockShutdown(); - ASSERT_TRUE(bRet == false); - - startManager->deleteLater(); -} - -//checkPath -TEST(UT_StartManager_checkPath, checkPath_001) -{ - QStringList fileLists; - QString strFilePath(QCoreApplication::applicationDirPath() + "/Makefile"); - fileLists << strFilePath; - StartManager *pStartManager = StartManager::instance(); - pStartManager->openFilesInTab(fileLists); - bool bRet = pStartManager->checkPath(strFilePath); - ASSERT_TRUE(bRet == false); - - pStartManager->deleteLater(); -} - -//checkPath -TEST(UT_StartManager_checkPath, checkPath_002) -{ - StartManager *pStartManager = StartManager::instance(); - pStartManager->openFilesInTab(QStringList()); - bool bRet = pStartManager->checkPath(QString()); - ASSERT_TRUE(bRet == true); - - pStartManager->deleteLater(); -} - -TEST(UT_StartManager_ifKlu,ifKlu ) -{ - StartManager *startManager = StartManager::instance(); - bool bRet = startManager->ifKlu(); - ASSERT_TRUE(bRet == false); - - startManager->deleteLater(); -} - -//loadTheme -TEST(UT_StartManager_loadThem,loadTheme) -{ - StartManager *startManager = StartManager::instance(); - startManager->loadTheme("Dark"); - ASSERT_TRUE(startManager != nullptr); - - startManager->deleteLater(); -} - -// bool isMultiWindow(); -TEST(UT_StartManager_isMultiWindow, isMultiWindow_001) -{ - QStringList fileLists; - QString strMakeFilePath(QCoreApplication::applicationDirPath() + "/Makefile"); - QString strCMakePath(QCoreApplication::applicationDirPath() + "/CMakeCache.txt"); - fileLists << strMakeFilePath << strCMakePath; - StartManager *pStartManager = StartManager::instance(); - bool bRet = pStartManager->isMultiWindow(); - ASSERT_TRUE(bRet == true); - - pStartManager->deleteLater(); -} - -// bool isMultiWindow(); -TEST(UT_StartManager_isMultiWindow, isMultiWindow_002) -{ - StartManager *pStartManager = StartManager::instance(); - pStartManager->m_windows.clear(); - bool bRet = pStartManager->isMultiWindow(); - ASSERT_TRUE(bRet == false); - - pStartManager->deleteLater(); -} - -TEST(UT_StartManager_isTemFilesEmpty, isTemFilesEmpty_001) -{ - QStringList fileLists; - QString strFilePath(QCoreApplication::applicationDirPath() + "/Makefile"); - fileLists << strFilePath; - StartManager *pStartManager = StartManager::instance(); - pStartManager->m_qlistTemFile.clear(); - pStartManager->openFilesInTab(fileLists); - pStartManager->m_qlistTemFile << QString(""); - bool bRet = pStartManager->isTemFilesEmpty(); - ASSERT_TRUE(bRet == true); - - pStartManager->deleteLater(); -} - -TEST(UT_StartManager_isTemFilesEmpty, isTemFilesEmpty_002) -{ - StartManager *pStartManager = StartManager::instance(); - pStartManager->m_qlistTemFile.clear(); - bool bRet = pStartManager->isTemFilesEmpty(); - ASSERT_TRUE(bRet == false); - - pStartManager->deleteLater(); -} - -TEST(UT_StartManager_autoBackupFile,autoBackupFile) -{ - StartManager *startManager = StartManager::instance(); - Window* w1 = new Window; - - EditWrapper* wr1 = new EditWrapper; - - TextEdit* e1 = new TextEdit; - e1->m_wrapper = wr1; - e1->m_listBookmark = {1,2}; - wr1->m_bIsTemFile = true; - wr1->m_pTextEdit = e1; - - QList windows = {w1}; - QMap wrappers{ {"wr1",wr1}}; - startManager->m_windows = windows; - w1->m_wrappers = wrappers; -#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) - Stub s1; - s1.set(ADDR(QStringList,replace),returnstub); -#endif - Stub s2; - s2.set(ADDR(StartManager,getFileTabInfo),getFileTabInfostub); - s2.set(ADDR(EditWrapper,saveTemFile),returnstub); - - startManager->autoBackupFile(); - EXPECT_NE(startManager , nullptr); - - startManager->deleteLater(); - w1->deleteLater(); - wr1->deleteLater(); - e1->deleteLater(); -} - -TEST(UT_StartManager_recoverFile,recoverFile_001) -{ - StartManager *startManager = StartManager::instance(); - QString c1 = "{\"bookMark\":\"7,7,8,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\",\"cursorPosition\":\"7\",\"focus\":true,\"localPath\":\"/home/uos/.local/share/deepin/deepin-editor/blank-files/blank_file_2021-09-22_09-43-10-824\",\"modify\":true}"; - QString c2 = "{\"bookMark\":\"1,0,1,0,0\",\"cursorPosition\":\"23\",\"localPath\":\"/home/uos/Desktop/563/526.txt\",\"modify\":false}"; - startManager->m_qlistTemFile.push_back(c1); - startManager->m_qlistTemFile.push_back(c2); - - Stub s1; - s1.set(ADDR(Window,wrapper),wrapperstub); - Stub s2; - s2.set(ADDR(StartManager,popupExistTabs),returnstub); - - Window *pWindow = new Window; - int iRet = startManager->recoverFile(pWindow); - ASSERT_TRUE(iRet == 0); - - pWindow->deleteLater(); - startManager->deleteLater(); -} - -TEST(UT_StartManager_recoverFile,recoverFile_002) -{ - StartManager *startManager = StartManager::instance(); - QString c1 = "{\"bookMark\":\"7,7,8,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\",\"cursorPosition\":\"7\",\"focus\":true,\"localPath\":\"/home/uos/.local/share/deepin/deepin-editor/blank-files/blank_file_2021-09-22_09-43-10-824\",\"modify\":true}"; - QString c2 = "{\"bookMark\":\"1,0,1,0,0\",\"cursorPosition\":\"23\",\"localPath\":\"/home/uos/Desktop/563/526.txt\",\"modify\":false}"; - startManager->m_qlistTemFile.push_back(c1); - startManager->m_qlistTemFile.push_back(c2); - - Stub s1; - s1.set(ADDR(Window,wrapper),wrapperstub); - Stub s2; - s2.set(ADDR(StartManager,popupExistTabs),returnstub); - Stub s3; - s3.set((bool(QJsonObject::*)(const QString &) const)ADDR(QJsonObject,contains), returntruestub); - Stub s4; - s4.set(ADDR(QString,isEmpty),returnfalsestub); - Stub s5; - s5.set(ADDR(Utils,fileExists),returntruestub); - Stub s6; - s6.set(ADDR(QJsonValue,isDouble),returntruestub); - - - Window w; - int iRet = startManager->recoverFile(&w); - ASSERT_TRUE(iRet == 0); - - startManager->deleteLater(); -} - -TEST(UT_StartManager_openFilesInTab,openFilesInTab_001) -{ - StartManager *startManager = StartManager::instance(); - startManager->m_windows.clear(); - - Stub s1; - s1.set(ADDR(Window,wrapper),wrapperstub); - Stub s2; - s2.set(ADDR(StartManager,checkPath),returntruestub); - - - startManager->openFilesInTab(QStringList()); - startManager->openFilesInTab(QStringList(".cache/deepin/deepin-editor")); - - startManager->slotCloseWindow(); - startManager->slotCreatNewwindow(); - - ASSERT_TRUE(startManager->m_windows.count() > 0); - startManager->deleteLater(); -} - -TEST(UT_StartManager_openFilesInTab,openFilesInTab_002) -{ - StartManager *startManager = StartManager::instance(); - startManager->m_windows.clear(); - - Stub s1; - s1.set(ADDR(Window,wrapper),wrapperstub); - Stub s2; - s2.set(ADDR(StartManager,checkPath),returntruestub); - Stub s3; - s3.set(ADDR(StartManager,isTemFilesEmpty),returntruestub); - - startManager->openFilesInTab(QStringList()); - startManager->openFilesInTab(QStringList(".cache/deepin/deepin-editor")); - - startManager->slotCloseWindow(); - startManager->slotCreatNewwindow(); - - ASSERT_TRUE(startManager->m_windows.count() > 0); - startManager->deleteLater(); -} - -TEST(UT_StartManager_openFilesInTab,openFilesInTab_003) -{ - StartManager *startManager = StartManager::instance(); - startManager->m_windows.clear(); - - Stub s1; - s1.set(ADDR(Window,wrapper),wrapperstub); - Stub s2; - s2.set(ADDR(StartManager,checkPath),returntruestub); - Stub s3; - s3.set(ADDR(StartManager,isTemFilesEmpty),returnfalsestub); - - startManager->openFilesInTab(QStringList()); - startManager->openFilesInTab(QStringList(".cache/deepin/deepin-editor")); - - startManager->slotCloseWindow(); - startManager->slotCreatNewwindow(); - - ASSERT_TRUE(startManager->m_windows.count() > 0); - startManager->deleteLater(); -} - -TEST(UT_StartManager_analyzeBookmakeInfo,analyzeBookmakeInfo) -{ - StartManager *startManager = StartManager::instance(); - QList list = startManager->analyzeBookmakeInfo(QString()); - ASSERT_TRUE(!list.isEmpty()); - - list = {0, 1, 2}; - EXPECT_EQ(startManager->analyzeBookmakeInfo("0,1,2"), list); - list = {999, 2, 1}; - EXPECT_EQ(startManager->analyzeBookmakeInfo("999, 2, 1"), list); - list = {0, 1, 999}; - EXPECT_EQ(startManager->analyzeBookmakeInfo("0, 1, 999"), list); - - startManager->deleteLater(); -} - -TEST(UT_StartManager_slotCloseWindow,slotCloseWindow) -{ - StartManager *startManager = StartManager::instance(); - startManager->m_windows.clear(); - - Stub s1; - s1.set((QStringList(QDir::*)(QDir::Filters ,QDir::SortFlags) const)ADDR(QDir,entryList), entryliststub); - Stub s2; - s2.set((bool(QString::*)(const QString &,Qt::CaseSensitivity cs) const)ADDR(QString,contains), returntruestub); - Stub s3; - s3.set(ADDR(QList,isEmpty), returntruestub); - - startManager->slotCloseWindow(); - - startManager->deleteLater(); -} - -TEST(UT_StartManager_bookmark, recordBookmark_normal_pass) -{ - StartManager *startManager = new StartManager; - QString path("test"); - QList bookmark {0, 1, 2}; - startManager->recordBookmark(path, bookmark); - - EXPECT_FALSE(startManager->m_bookmarkTable.isEmpty()); - EXPECT_EQ(startManager->m_bookmarkTable.value(path), bookmark); - delete startManager; -} - -TEST(UT_StartManager_bookmark, findBookmark_normal_pass) -{ - StartManager *startManager = new StartManager; - QString path("test"); - QList bookmark {0, 1, 2}; - startManager->m_bookmarkTable.insert(path, bookmark); - - EXPECT_EQ(startManager->findBookmark(path), bookmark); - EXPECT_TRUE(startManager->findBookmark(QString("")).isEmpty()); - - delete startManager; -} - -// stub打桩函数 -QStringList toStringListStub() -{ - return {"{\"bookmark\":\"0,1\",\"localPath\":\"test\"}"}; -} - -bool fileIsExistsStub(const QString &path) -{ - Q_UNUSED(path) - return true; -} - -TEST(UT_StartManager_bookmark, initBookmark_normal_pass) -{ - StartManager *startManager = new StartManager; - - typedef bool (*FileExistFunc)(const QString &); - Stub stub; - stub.set(ADDR(QVariant, toStringList), toStringListStub); - stub.set((FileExistFunc)ADDR(QFileInfo, exists), fileIsExistsStub); - - startManager->initBookmark(); - - EXPECT_FALSE(startManager->m_bookmarkTable.isEmpty()); - QList bookmark {0, 1}; - EXPECT_EQ(startManager->findBookmark(QString("test")), bookmark); - - delete startManager; -} - -TEST(UT_StartManager_bookmark, saveBookmark_normal_pass) -{ - StartManager *startManager = new StartManager; - - typedef bool (*FileExistFunc)(const QString &); - Stub stub; - stub.set((FileExistFunc)ADDR(QFileInfo, exists), fileIsExistsStub); - - QString path("test"); - QList bookmark {0, 1}; - startManager->m_bookmarkTable.insert(path, bookmark); - startManager->saveBookmark(); - - QStringList saveData = Settings::instance()->settings->value("advance.editor.bookmark").toStringList(); - EXPECT_FALSE(saveData.isEmpty()); - if (!saveData.isEmpty()) { - QJsonDocument doc = QJsonDocument::fromJson(saveData.first().toUtf8()); - QJsonObject obj = doc.object(); - EXPECT_EQ(obj.value("localPath").toString(), path); - QList parseBookmark = startManager->analyzeBookmakeInfo(obj.value("bookmark").toString()); - EXPECT_EQ(bookmark, parseBookmark); - } - - delete startManager; -} diff --git a/tests/src/ut_startmanager.h b/tests/src/ut_startmanager.h deleted file mode 100644 index e2ed5895f..000000000 --- a/tests/src/ut_startmanager.h +++ /dev/null @@ -1,23 +0,0 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef UT_StartManager_H -#define UT_StartManager_H -#include"../../src/startmanager.h" -#include"../../src/editor/dtextedit.h" -#include"../../src/common/settings.h" -#include"../../src/widgets/window.h" -#include"../../src/editor/editwrapper.h" -#include"../../src/controls/tabbar.h" -#include "gtest/gtest.h" -#include - -class UT_StartManager: public QObject, public::testing::Test -{ - Q_OBJECT -public: - UT_StartManager(); -}; - -#endif // UT_StartManager_H diff --git a/tests/src/ut_startmanager_lambdas.cpp b/tests/src/ut_startmanager_lambdas.cpp deleted file mode 100644 index cfad11723..000000000 --- a/tests/src/ut_startmanager_lambdas.cpp +++ /dev/null @@ -1,155 +0,0 @@ -// SPDX-FileCopyrightText: 2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -// -// 覆盖 StartManager 中未覆盖的函数: -// - StartManager::tr(char const*, char const*, int) -// - createWindow(bool) 内部 dragStarted/dragEnd 信号 lambda -// - openFilesInTab 内部 QTimer::singleShot(50,...) lambda -// - slotCloseWindow 内部 QTimer::singleShot(1000,...) lambda - -#include "../../src/startmanager.h" -#include "../../src/editor/dtextedit.h" -#include "../../src/common/settings.h" -#include "../../src/widgets/window.h" -#include "../../src/editor/editwrapper.h" -#include "../../src/controls/tabbar.h" -#include "src/stub.h" -#include -#include -#include -#include -#include -#include -#include -#include - -namespace sm_lambda_stub { - -void returnstub() { return; } -bool returntruestub() { return true; } -QStringList entryliststub() { return {"123", "456"}; } - -StartManager::FileTabInfo getFileTabInfoNotFoundStub() -{ - return StartManager::FileTabInfo{-1, -1}; -} - -int recoverFileStub(Window *) { return 0; } - -void quitNoop() { return; } - -} // namespace sm_lambda_stub - -using namespace sm_lambda_stub; - -// Blocks DeferredDelete events so qWait can fire timer lambdas without -// processing accumulated deleteLater calls from earlier tests. -class SM_DeferredDeleteBlocker : public QObject -{ -public: - bool eventFilter(QObject *, QEvent *e) override - { - return e->type() == QEvent::DeferredDelete; - } -}; - -// 创建一个全新的 StartManager 单例。 -// 既有测试对单例调用 deleteLater() 会积压 DeferredDelete 事件,在本文件 qWait 期间 -// 被处理会导致 m_instance 悬空 (heap-use-after-free)。因此每个测试都重置 m_instance -// 以获取干净实例,且不调用 deleteLater。 -static StartManager *freshStartManager() -{ - StartManager::m_instance = nullptr; - return StartManager::instance(); -} - -// StartManager::tr 静态翻译函数 -TEST(UT_StartManager_tr, tr) -{ - EXPECT_EQ(StartManager::tr("test"), QString("test")); - EXPECT_EQ(StartManager::tr("test", nullptr, -1), QString("test")); -} - -// createWindow(bool) 内部 dragStarted/dragEnd 信号 lambda -TEST(UT_StartManager_createWindow, createWindow_DragLambdas) -{ - StartManager *startManager = freshStartManager(); - startManager->m_windows.clear(); - startManager->m_bIsTagDragging = false; - - Window *window = startManager->createWindow(true); - ASSERT_TRUE(window != nullptr); - - Tabbar *tabbar = window->getTabbar(); - ASSERT_TRUE(tabbar != nullptr); - - QMetaObject::invokeMethod(tabbar, "dragStarted", Qt::DirectConnection); - EXPECT_TRUE(startManager->m_bIsTagDragging); - - QMetaObject::invokeMethod(tabbar, "dragEnd", Qt::DirectConnection, - Q_ARG(Qt::DropAction, Qt::IgnoreAction)); - EXPECT_FALSE(startManager->m_bIsTagDragging); -} - -// openFilesInTab 内部 QTimer::singleShot(50,...) lambda #1 -TEST(UT_StartManager_openFilesInTab, openFilesInTab_SingleShotLambda) -{ - StartManager *startManager = freshStartManager(); - startManager->m_windows.clear(); - - Stub s1; - s1.set(ADDR(StartManager, checkPath), returntruestub); - Stub s2; - s2.set(ADDR(StartManager, getFileTabInfo), getFileTabInfoNotFoundStub); - Stub s3; - s3.set(ADDR(StartManager, recoverFile), recoverFileStub); - Stub s4; - s4.set(ADDR(Window, addTab), returnstub); - Stub s5; - s5.set(ADDR(Window, showCenterWindow), returnstub); - - // Install DeferredDelete blocker to prevent use-after-free from - // accumulated deleteLater events from earlier tests during qWait. - SM_DeferredDeleteBlocker blocker; - qApp->installEventFilter(&blocker); - - startManager->openFilesInTab(QStringList("somefile.txt")); - - // The singleShot(50, window, ...) timer fires naturally during qWait. - QTest::qWait(80); - - qApp->removeEventFilter(&blocker); - - EXPECT_TRUE(startManager->m_windows.count() > 0); -} - -// slotCloseWindow 内部 QTimer::singleShot(1000,...) lambda #1 -TEST(UT_StartManager_slotCloseWindow, slotCloseWindow_SingleShotLambda) -{ - StartManager *startManager = freshStartManager(); - startManager->m_windows.clear(); - - Stub s1; - s1.set((QStringList(QDir::*)(QDir::Filters, QDir::SortFlags) const) ADDR(QDir, entryList), entryliststub); - Stub s2; - s2.set((bool(QString::*)(const QString &, Qt::CaseSensitivity) const) ADDR(QString, contains), returntruestub); - Stub s3; - s3.set(ADDR(QList, isEmpty), returntruestub); - - // Install DeferredDelete blocker to prevent use-after-free from - // accumulated deleteLater events from earlier tests during qWait. - // Stub QCoreApplication::quit so the timer lambda's quit() call - // does not corrupt qApp for subsequent tests. - Stub s4; - s4.set(ADDR(QCoreApplication, quit), quitNoop); - - SM_DeferredDeleteBlocker blocker; - qApp->installEventFilter(&blocker); - - startManager->slotCloseWindow(); - - QTest::qWait(1100); - - qApp->removeEventFilter(&blocker); -} diff --git a/tests/src/ut_zz_editorapplication_extra.cpp b/tests/src/ut_zz_editorapplication_extra.cpp deleted file mode 100644 index 5138d39f1..000000000 --- a/tests/src/ut_zz_editorapplication_extra.cpp +++ /dev/null @@ -1,46 +0,0 @@ -// SPDX-FileCopyrightText: 2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -// -// 覆盖 EditorApplication pressSpace(QPushButton*) 内部 QTimer::singleShot(80,...) lambda. -// EditorApplication 析构函数覆盖见 zz_ut_exit_destructor.cpp (排序在最末尾执行)。 - -#include "../../src/editorapplication.h" -#include "../../src/startmanager.h" -#include -#include -#include -#include -#include "src/stub.h" -#include - -// pressSpace 内部 QTimer::singleShot(80,...) lambda -// Finds the singleShot timer created by pressSpace and invokes its timeout -// signal via the meta-object system — avoids processEvents which would trigger -// stale callbacks from earlier tests. -TEST(UT_EditorApplication_pressSpace, pressSpace_Lambda) -{ - int argc = 1; - char *argv[] = {"test"}; - EditorApplication *app = new EditorApplication(argc, argv); - - QPushButton *btn = new QPushButton; - btn->setObjectName("LambdaBtn"); - - app->pressSpace(btn); - - // Fire the singleShot timer's lambda by invoking timeout via meta-object - for (QTimer *t : app->findChildren()) { - if (t->isSingleShot()) { - QMetaObject::invokeMethod(t, "timeout", Qt::DirectConnection); - break; - } - } - - // Intentionally leak btn: pressSpace() 的 80ms singleShot lambda 裸捕获 btn, - // 若在此销毁会使延迟 lambda 悬空(heap-use-after-free);上面通过 findChildren - // 触发 timeout 的手法对 Qt 6.9 的 QDeferredInvokeEvent 实现无效,真正的 - // lambda 仍处于挂起状态,会在后续测试的事件循环中触发。 - app->deleteLater(); - SUCCEED(); -} diff --git a/tests/src/widgets/ut_bottombar.cpp b/tests/src/widgets/ut_bottombar.cpp deleted file mode 100644 index 6cdc2ae3a..000000000 --- a/tests/src/widgets/ut_bottombar.cpp +++ /dev/null @@ -1,286 +0,0 @@ -// SPDX-FileCopyrightText: 2019 - 2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "ut_bottombar.h" - -#include -#include -#include -#include -#include "../../src/widgets/window.h" -#include "../../src/editor/editwrapper.h" -#include "../stub.h" - -// Stub: 强制 getFileLoading 返回 true,覆盖编码 lambda 的回退分支 -static bool stub_getFileLoading_true() -{ - return true; -} - -// Stub: reloadFileHighlight 空实现,避免外部副作用 -static void stub_reloadFileHighlight(QString) -{ -} - -// 测试函数 BottomBar::updatePosition -TEST_F(TestBottomBar, checkUpdatePosition) -{ - auto bottomBar = new BottomBar; - bottomBar->updatePosition(1, 1); - - EXPECT_EQ(bottomBar->m_pPositionLabel->text().contains("1"),true); - - EXPECT_NE(bottomBar,nullptr); - bottomBar->deleteLater(); -} - -// 测试函数 BottomBar::updateWordCount -TEST_F(TestBottomBar, checkUpdateWordCount) -{ - auto bottomBar = new BottomBar; - bottomBar->updateWordCount(1); - - EXPECT_EQ(bottomBar->m_pCharCountLabel->text().contains("0"),true); - - EXPECT_NE(bottomBar,nullptr); - bottomBar->deleteLater(); -} - -// 测试函数 BottomBar::setEncodeName -TEST_F(TestBottomBar, checkSetEncodeName) -{ - auto bottomBar = new BottomBar; - bottomBar->setEncodeName("UTF-8"); - - - EXPECT_NE(bottomBar,nullptr); - bottomBar->deleteLater(); -} - -// 测试函数 BottomBar::setPalette -TEST_F(TestBottomBar, checkSetPalette) -{ - auto bottomBar = new BottomBar; - - QString backgroundColor = "#f8f8f8"; - QString textColor = "#1f1c1b"; - QPalette palette = bottomBar->palette(); - palette.setColor(QPalette::Window, backgroundColor); - palette.setColor(QPalette::Text, textColor); - bottomBar->setPalette(palette); - - EXPECT_NE(bottomBar,nullptr); - bottomBar->deleteLater(); -} - -// 测试函数 BottomBar::updateSize -TEST_F(TestBottomBar, checkUpdateSize) -{ - auto bottomBar = new BottomBar; - bottomBar->updateSize(32, false); - EXPECT_EQ(bottomBar->height(),32); - - - EXPECT_NE(bottomBar,nullptr); - bottomBar->deleteLater(); -} - -// 测试函数 BottomBar::setChildrenFocus -TEST_F(TestBottomBar, checkSetChildrenFocus) -{ - - // 场景1: ok = false, preOrderWidget = nullptr - auto bottomBar = new BottomBar; - bottomBar->setChildrenFocus(false, nullptr); - EXPECT_NE(bottomBar->m_pEncodeMenu->hasFocus(),true); - EXPECT_NE(bottomBar,nullptr); - bottomBar->deleteLater(); - - - - - // 场景2: ok = true, preOrderWidget = nullptr - bottomBar = new BottomBar; - bottomBar->setChildrenFocus(true, nullptr); - EXPECT_NE(bottomBar->m_pEncodeMenu->hasFocus(),true); - EXPECT_NE(bottomBar,nullptr); - bottomBar->deleteLater(); - - - - // 场景3: ok = true, preOrderWidget = new QWidget() - bottomBar = new BottomBar; - QPushButton *button = new QPushButton(); - bottomBar->setChildrenFocus(true, button); - EXPECT_NE(button->hasFocus(),true); - EXPECT_NE(bottomBar,nullptr); - EXPECT_NE(button,nullptr); - bottomBar->deleteLater(); - button->deleteLater(); - - - - // 场景4: ok = false, preOrderWidget = new QWidget() - bottomBar = new BottomBar; - button = new QPushButton(); - bottomBar->setChildrenFocus(false, button); - EXPECT_NE(button->hasFocus(),true); - EXPECT_NE(bottomBar,nullptr); - EXPECT_NE(button,nullptr); - bottomBar->deleteLater(); - button->deleteLater(); - -} - -// 测试函数 BottomBar::getEncodeMenu -TEST_F(TestBottomBar, checkGetEncodeMenu) -{ - - auto bottomBar = new BottomBar; - DDropdownMenu *menu = bottomBar->getEncodeMenu(); - EXPECT_NE(menu, nullptr); - EXPECT_NE(bottomBar,nullptr); - bottomBar->deleteLater(); - -} - -// 测试函数 BottomBar::getHighlightMenu -TEST_F(TestBottomBar, checkGetHighlightMenu) -{ - auto bottomBar = new BottomBar; - DDropdownMenu *menu = bottomBar->getHighlightMenu(); - EXPECT_NE(menu, nullptr); - EXPECT_NE(bottomBar,nullptr); - bottomBar->deleteLater(); - -} - -// 测试函数 BottomBar::paintEvent -TEST_F(TestBottomBar, checkPaintEvent) -{ - auto bottomBar = new BottomBar; - QPaintEvent event(bottomBar->rect()); - bottomBar->paintEvent(&event); - EXPECT_NE(bottomBar,nullptr); - bottomBar->deleteLater(); - -} - -// 测试函数 BottomBar::onFormatMenuTrigged -TEST_F(TestBottomBar, checkOnFormatMenuTrigged) -{ - // 使用无 parent 的 BottomBar(m_pWrapper=nullptr),覆盖提前返回分支(不触碰 m_pWrapper) - // 场景1: action 为空,提前返回 - bottomBar->onFormatMenuTrigged(nullptr); - - // 场景2: action 的格式与当前一致(Unix),提前返回 - QAction sameAction; - sameAction.setProperty(FormatActionType, BottomBar::EndlineFormat::Unix); - bottomBar->onFormatMenuTrigged(&sameAction); - EXPECT_EQ(bottomBar->getEndlineFormat(), BottomBar::EndlineFormat::Unix); -} - -// 测试函数 BottomBar::slotSetTextEditFocus -TEST_F(TestBottomBar, checkSlotSetTextEditFocus) -{ - // 仅在此处创建唯一的 Window:源码中 anchors_findbar 为函数内静态变量, - // 多个 Window 实例会触发其析构冲突,故整个用例集只创建一个 Window 并有意泄漏。 - Window *pWindow = new Window(); - pWindow->addBlankTab(QString()); - BottomBar *bar = pWindow->currentWrapper()->m_pBottomBar; - ASSERT_NE(bar, nullptr); - - // 触发槽函数,通过真实的 window 发出 pressEsc 信号 - bar->slotSetTextEditFocus(); -} - -// 测试构造函数 lambda #1: 切换编码 (currentActionChanged on m_pEncodeMenu) -TEST_F(TestBottomBar, checkEncodeMenuLambda) -{ - // 独立的 EditWrapper 作为 BottomBar 的 parent(即 m_pWrapper),避免依赖 Window - EditWrapper *wrapper = new EditWrapper; - BottomBar *bar = wrapper->m_pBottomBar; - ASSERT_NE(bar, nullptr); - - // getFileLoading 返回 true 触发回退分支 - Stub stub; - stub.set(ADDR(EditWrapper, getFileLoading), stub_getFileLoading_true); - - QString previousText = bar->m_pEncodeMenu->getCurrentText(); - QAction action("GBK"); - emit bar->m_pEncodeMenu->currentActionChanged(&action); - // 回退分支:文本应保持为之前的值 - EXPECT_EQ(bar->m_pEncodeMenu->getCurrentText(), previousText); - - delete wrapper; -} - -// 测试构造函数 lambda #2: 切换文件类型 (currentActionChanged on m_pHighlightMenu) -TEST_F(TestBottomBar, checkHighlightMenuLambda) -{ - EditWrapper *wrapper = new EditWrapper; - BottomBar *bar = wrapper->m_pBottomBar; - ASSERT_NE(bar, nullptr); - - // 避免 reloadFileHighlight 产生外部副作用 - Stub stub; - stub.set(ADDR(EditWrapper, reloadFileHighlight), stub_reloadFileHighlight); - - QAction action("C++"); - emit bar->m_pHighlightMenu->currentActionChanged(&action); - // lambda 将高亮菜单文本设置为 action 的文本 - EXPECT_EQ(bar->m_pHighlightMenu->getCurrentText(), QString("C++")); - - delete wrapper; -} - -// 视图模式 combobox(§8.2):setViewMode 同步折叠态文案与选中项 -TEST_F(TestBottomBar, checkViewModeMenu_SetViewMode) -{ - auto bottomBar = new BottomBar; - ASSERT_NE(bottomBar->m_pViewModeMenu, nullptr); - - bottomBar->setViewMode(ViewMode::LivePreview); - EXPECT_EQ(bottomBar->m_pViewModeMenu->getCurrentText(), bottomBar->m_actLivePreview->text()); - EXPECT_TRUE(bottomBar->m_actLivePreview->isChecked()); - - bottomBar->setViewMode(ViewMode::ReadView); - EXPECT_EQ(bottomBar->m_pViewModeMenu->getCurrentText(), bottomBar->m_actReadView->text()); - EXPECT_TRUE(bottomBar->m_actReadView->isChecked()); - - bottomBar->setViewMode(ViewMode::Edit); - EXPECT_EQ(bottomBar->m_pViewModeMenu->getCurrentText(), bottomBar->m_actEditView->text()); - EXPECT_TRUE(bottomBar->m_actEditView->isChecked()); - - bottomBar->deleteLater(); -} - -// 视图模式 combobox(§8.2):setMarkdownAvailable(false) 仅置灰「实时预览」 -TEST_F(TestBottomBar, checkViewModeMenu_SetMarkdownAvailable) -{ - auto bottomBar = new BottomBar; - - bottomBar->setMarkdownAvailable(false); - EXPECT_FALSE(bottomBar->m_actLivePreview->isEnabled()); - EXPECT_TRUE(bottomBar->m_actEditView->isEnabled()); - EXPECT_TRUE(bottomBar->m_actReadView->isEnabled()); - - bottomBar->setMarkdownAvailable(true); - EXPECT_TRUE(bottomBar->m_actLivePreview->isEnabled()); - - bottomBar->deleteLater(); -} - -// 视图模式 combobox(§8.2):点击菜单项上抛 viewModeRequested -TEST_F(TestBottomBar, checkViewModeMenu_ActionTriggerEmitsRequested) -{ - auto bottomBar = new BottomBar; - QSignalSpy spy(bottomBar, &BottomBar::viewModeRequested); - - bottomBar->m_actReadView->trigger(); - ASSERT_EQ(spy.count(), 1); - EXPECT_EQ(spy.takeFirst().at(0).value(), ViewMode::ReadView); - - bottomBar->deleteLater(); -} diff --git a/tests/src/widgets/ut_bottombar.h b/tests/src/widgets/ut_bottombar.h deleted file mode 100644 index 583292ff8..000000000 --- a/tests/src/widgets/ut_bottombar.h +++ /dev/null @@ -1,27 +0,0 @@ -// SPDX-FileCopyrightText: 2019 - 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef TEST_BOTTOMBAR_H -#define TEST_BOTTOMBAR_H - -#include "../../src/widgets/bottombar.h" - -#include - -class TestBottomBar : public testing::Test -{ -protected: - void SetUp() - { - bottomBar = new BottomBar(); - } - void TearDown() - { - delete bottomBar; - } - - BottomBar *bottomBar = nullptr; -}; - -#endif // TEST_BOTTOMBAR_H diff --git a/tests/src/widgets/ut_colorselectwidget.cpp b/tests/src/widgets/ut_colorselectwidget.cpp deleted file mode 100644 index cbe435772..000000000 --- a/tests/src/widgets/ut_colorselectwidget.cpp +++ /dev/null @@ -1,271 +0,0 @@ -// SPDX-FileCopyrightText: 2019-2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "ut_colorselectwidget.h" - -#include - -// 测试函数ColorLabel::setColorSelected -TEST_F(test_colorlabel, checkSetColorSelected) -{ - - - auto colorLabel = new ColorLabel(QColor("#FF0000")); - colorLabel->setColorSelected(true); - colorLabel->setColorSelected(false); - - EXPECT_NE(colorLabel->m_bSelected,true); - EXPECT_NE(colorLabel,nullptr); - colorLabel->deleteLater(); - -} - -// 测试函数 ColorLabel::isSelected -TEST_F(test_colorlabel, checkIsSelected) -{ - auto colorLabel = new ColorLabel(QColor("#FF0000")); - colorLabel->setColorSelected(true); - bool result = colorLabel->isSelected(); - EXPECT_TRUE(result); - - - - colorLabel->setColorSelected(false); - result = colorLabel->isSelected(); - EXPECT_FALSE(result); - EXPECT_NE(colorLabel,nullptr); - colorLabel->deleteLater(); - -} - -// 测试函数 ColorLabel::getColor -TEST_F(test_colorlabel, checkGetColor) -{ - - auto colorLabel = new ColorLabel(QColor("#FF0000")); - QColor colorSet("red"); - QColor colorGet = colorLabel->getColor(); - EXPECT_EQ(colorSet, colorGet); - - EXPECT_NE(colorLabel,nullptr); - colorLabel->deleteLater(); - -} - -// 测试函数 ColorLabel::paintEvent -TEST_F(test_colorlabel, checkPaintEvent) -{ - auto colorLabel = new ColorLabel(QColor("#FF0000")); - colorLabel->setColorSelected(true); - QPaintEvent event(colorLabel->rect()); - colorLabel->paintEvent(&event); - EXPECT_NE(colorLabel,nullptr); - colorLabel->deleteLater(); - - colorLabel = new ColorLabel(QColor("#FF0000")); - colorLabel->setColorSelected(false); - QPaintEvent event2(colorLabel->rect()); - colorLabel->paintEvent(&event2); - EXPECT_NE(colorLabel,nullptr); - - colorLabel->m_bHover = true; - colorLabel->paintEvent(&event2); - colorLabel->m_bHover = false; - colorLabel->m_bPressed = true; - colorLabel->paintEvent(&event2); - colorLabel->deleteLater(); -} - -// 测试函数 ColorLabel::mousePressEvent -TEST_F(test_colorlabel, checkMousePressEvent) -{ - - // 场景1: LeftButtonPress - auto colorLabel = new ColorLabel(QColor("#FF0000")); - QSignalSpy spy(colorLabel, &ColorLabel::sigColorClicked); - QMouseEvent pressEvent(QEvent::MouseButtonPress, QPointF(), QPointF(), - Qt::LeftButton, Qt::LeftButton, Qt::NoModifier); - colorLabel->mousePressEvent(&pressEvent); - EXPECT_TRUE(colorLabel->m_bPressed); - EXPECT_EQ(spy.count(), 0); - - QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPointF(), QPointF(), - Qt::LeftButton, Qt::NoButton, Qt::NoModifier); - colorLabel->mouseReleaseEvent(&releaseEvent); - EXPECT_FALSE(colorLabel->m_bPressed); - EXPECT_TRUE(colorLabel->isSelected()); - EXPECT_EQ(spy.count(), 1); - - EXPECT_NE(colorLabel,nullptr); - colorLabel->deleteLater(); - - - - // 场景2: 非LeftButtonPress - colorLabel = new ColorLabel(QColor("#FF0000")); - QSignalSpy spy2(colorLabel, &ColorLabel::sigColorClicked); - QMouseEvent rightPressEvent(QEvent::MouseButtonPress, QPointF(), QPointF(), - Qt::RightButton, Qt::RightButton, Qt::NoModifier); - colorLabel->mousePressEvent(&rightPressEvent); - EXPECT_FALSE(colorLabel->m_bPressed); - EXPECT_EQ(spy2.count(), 0); - - EXPECT_NE(colorLabel,nullptr); - colorLabel->deleteLater(); - -} - -// 测试函数 ColorLabel::enterEvent/leaveEvent -TEST_F(test_colorlabel, checkHoverState) -{ - auto colorLabel = new ColorLabel(QColor("#FF0000")); - -#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) - QEvent enterEvent(QEvent::Enter); -#else - QEnterEvent enterEvent(QPointF{}, QPointF{}, QPointF{}); -#endif - colorLabel->enterEvent(&enterEvent); - EXPECT_TRUE(colorLabel->m_bHover); - - colorLabel->m_bPressed = true; - QEvent leaveEvent(QEvent::Leave); - colorLabel->leaveEvent(&leaveEvent); - EXPECT_FALSE(colorLabel->m_bHover); - EXPECT_FALSE(colorLabel->m_bPressed); - - colorLabel->deleteLater(); -} - -// 测试函数 ColorSelectWdg::initWidget -TEST_F(test_colorselectwidget, checkInitWidget) -{ - - // 场景1: 字符串非空 - ColorSelectWdg *colorSelctWidget = new ColorSelectWdg("this is a test"); - colorSelctWidget->initWidget(); - EXPECT_NE(colorSelctWidget,nullptr); - EXPECT_NE(colorSelctWidget->m_pMainLayout,nullptr); - colorSelctWidget->deleteLater(); - - - - // 场景2: 字符串为空 - colorSelctWidget = new ColorSelectWdg(QString()); - colorSelctWidget->initWidget(); - EXPECT_NE(colorSelctWidget->m_pHLayout2,nullptr); - EXPECT_NE(colorSelctWidget,nullptr); - colorSelctWidget->deleteLater(); - -} - -// 测试函数 ColorSelectWdg::setTheme -TEST_F(test_colorselectwidget, checkSetTheme) -{ - - ColorSelectWdg *colorSelctWidget = new ColorSelectWdg("this is a test"); - colorSelctWidget->setTheme("light"); - EXPECT_NE(colorSelctWidget,nullptr); - colorSelctWidget->deleteLater(); - - - - colorSelctWidget = new ColorSelectWdg("this is a test"); - colorSelctWidget->setTheme("dark"); - EXPECT_NE(colorSelctWidget,nullptr); - colorSelctWidget->deleteLater(); - -} - -// 测试函数 ColorSelectWdg::getDefaultColor -TEST_F(test_colorselectwidget, checkGetDefaultColor) -{ - - ColorSelectWdg *colorSelctWidget = new ColorSelectWdg("this is a test"); - QColor defaultColor = colorSelctWidget->getDefaultColor(); - EXPECT_TRUE(defaultColor.isValid()); - EXPECT_NE(colorSelctWidget,nullptr); - colorSelctWidget->deleteLater(); - -} - -// 测试函数 ColorSelectWdg::eventFilter -TEST_F(test_colorselectwidget, checkEventFilter) -{ - - // 场景2: 过滤m_pLabel的LeftButton事件 - ColorSelectWdg *colorSelctWidget = new ColorSelectWdg("this is a test"); - QMouseEvent *event = new QMouseEvent(QEvent::MouseButtonPress, QPointF(), QPointF(), - Qt::LeftButton, Qt::LeftButton, Qt::NoModifier); - bool result = colorSelctWidget->eventFilter(colorSelctWidget->m_pLabel, event); - EXPECT_TRUE(result); - EXPECT_NE(colorSelctWidget,nullptr); - colorSelctWidget->deleteLater(); - delete event;event=nullptr; - - - - // 场景2: 过滤非m_pLabel的LeftButton事件 - colorSelctWidget = new ColorSelectWdg("this is a test"); - event = new QMouseEvent(QEvent::MouseButtonPress, QPointF(), QPointF(), - Qt::LeftButton, Qt::LeftButton, Qt::NoModifier); - result = colorSelctWidget->eventFilter(colorSelctWidget->m_pButton, event); - EXPECT_FALSE(result); - EXPECT_NE(colorSelctWidget,nullptr); - colorSelctWidget->deleteLater(); - delete event;event=nullptr; - - - - // 场景3: 过滤m_pLabel的非LeftButton事件 - colorSelctWidget = new ColorSelectWdg("this is a test"); - event = new QMouseEvent(QEvent::MouseButtonPress, QPointF(), QPointF(), - Qt::RightButton, Qt::RightButton, Qt::NoModifier); - result = colorSelctWidget->eventFilter(colorSelctWidget->m_pLabel, event); - EXPECT_FALSE(result); - EXPECT_NE(colorSelctWidget,nullptr); - colorSelctWidget->deleteLater(); - delete event;event=nullptr; - -} - -// 测试 initWidget 内 lambda #1: 点击默认颜色按钮 (DPushButton::clicked) -TEST_F(test_colorselectwidget, checkButtonClickedLambda) -{ - ColorSelectWdg *colorSelctWidget = new ColorSelectWdg("this is a test"); - ASSERT_NE(colorSelctWidget->m_pButton, nullptr); - - QSignalSpy spy(colorSelctWidget, &ColorSelectWdg::sigColorSelected); - // 触发按钮 clicked,调用 connect 注册的 lambda - colorSelctWidget->m_pButton->click(); - EXPECT_EQ(spy.count(), 1); - - colorSelctWidget->deleteLater(); -} - -// 测试 initWidget 内 lambda #2: 点击单个颜色标签 (ColorLabel::sigColorClicked) -TEST_F(test_colorselectwidget, checkColorLabelClickedLambda) -{ - ColorSelectWdg *colorSelctWidget = new ColorSelectWdg("this is a test"); - ASSERT_GE(colorSelctWidget->m_colorLabels.size(), 2); - - QSignalSpy spy(colorSelctWidget, &ColorSelectWdg::sigColorSelected); - - // 点击第二个颜色标签(非默认选中),按下时显示反馈,释放时发出 sigColorClicked, - // 进而调用 ColorSelectWdg 中 connect 注册的 lambda - ColorLabel *label = colorSelctWidget->m_colorLabels.at(1); - QMouseEvent pressEvent(QEvent::MouseButtonPress, QPointF(), QPointF(), - Qt::LeftButton, Qt::LeftButton, Qt::NoModifier); - label->mousePressEvent(&pressEvent); - EXPECT_EQ(spy.count(), 0); - - QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPointF(), QPointF(), - Qt::LeftButton, Qt::NoButton, Qt::NoModifier); - label->mouseReleaseEvent(&releaseEvent); - // 默认选中的第一个标签应被取消选中 - EXPECT_FALSE(colorSelctWidget->m_colorLabels.at(0)->isSelected()); - EXPECT_EQ(spy.count(), 1); - - colorSelctWidget->deleteLater(); -} diff --git a/tests/src/widgets/ut_colorselectwidget.h b/tests/src/widgets/ut_colorselectwidget.h deleted file mode 100644 index 987e47555..000000000 --- a/tests/src/widgets/ut_colorselectwidget.h +++ /dev/null @@ -1,42 +0,0 @@ -// SPDX-FileCopyrightText: 2019 - 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef TEST_COLORSELECTWIDGET_H -#define TEST_COLORSELECTWIDGET_H - -#include "../../src/widgets/ColorSelectWdg.h" - -#include - -class test_colorlabel : public testing::Test -{ -protected: - void SetUp() - { - colorLabel = new ColorLabel(QColor("#FF0000")); - } - void TearDown() - { - delete colorLabel; - } - - ColorLabel *colorLabel = nullptr; -}; - -class test_colorselectwidget : public testing::Test -{ -protected: - void SetUp() - { - colorSelctWidget = new ColorSelectWdg("this is a test"); - } - void TearDown() - { - delete colorSelctWidget; - } - - ColorSelectWdg *colorSelctWidget = nullptr; -}; - -#endif // TEST_COLORSELECTWIDGET_H diff --git a/tests/src/widgets/ut_ddropdownmenu.cpp b/tests/src/widgets/ut_ddropdownmenu.cpp deleted file mode 100644 index de23015bb..000000000 --- a/tests/src/widgets/ut_ddropdownmenu.cpp +++ /dev/null @@ -1,338 +0,0 @@ -// SPDX-FileCopyrightText: 2019 - 2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "ut_ddropdownmenu.h" -#include "../stub.h" - -#include -#include -#include -#include -#include -#include -DGUI_USE_NAMESPACE - -// 测试函数 DDropdownMenu::setFontEx -TEST_F(test_ddropdownmenu, setFontEx) -{ - - DDropdownMenu *dropMenu = new DDropdownMenu(); - dropMenu->setFontEx(QFont()); - EXPECT_EQ(dropMenu->m_font, QFont()); - - EXPECT_NE(dropMenu,nullptr); - dropMenu->deleteLater(); - -} - -// 测试函数 DDropdownMenu::setCurrentAction -TEST_F(test_ddropdownmenu, setCurrentAction) -{ - - // 测试场景1: 非空指针 - DDropdownMenu *dropMenu = new DDropdownMenu(); - QAction *action = new QAction(); - dropMenu->setCurrentAction(action); - EXPECT_EQ(action->isCheckable(),false); - - EXPECT_NE(action,nullptr); - EXPECT_NE(dropMenu,nullptr); - action->deleteLater(); - dropMenu->deleteLater(); - - - // 测试场景2: 空指针 - dropMenu = new DDropdownMenu(); - dropMenu->setCurrentAction(nullptr); - EXPECT_NE(dropMenu,nullptr); - dropMenu->deleteLater(); - -} - -// 测试函数 DDropdownMenu::setCurrentTextOnly -TEST_F(test_ddropdownmenu, setCurrentTextOnly) -{ - - DDropdownMenu *dropMenu = new DDropdownMenu(); - dropMenu->setCurrentTextOnly("test"); - EXPECT_EQ(dropMenu->m_text,"test"); - - EXPECT_NE(dropMenu,nullptr); - dropMenu->deleteLater(); - -} - -// 测试函数 DDropdownMenu::setText -TEST_F(test_ddropdownmenu, setText) -{ - - DDropdownMenu *dropMenu = new DDropdownMenu(); - dropMenu->setText("test"); - EXPECT_EQ(dropMenu->m_text, "test"); - - EXPECT_NE(dropMenu,nullptr); - dropMenu->deleteLater(); - - -} - -// 测试函数 DDropdownMenu::setTheme -TEST_F(test_ddropdownmenu, setTheme) -{ - - // 场景1: 正确主题 - DDropdownMenu *dropMenu = new DDropdownMenu(); - dropMenu->setTheme("dark"); - EXPECT_NE(dropMenu,nullptr); - dropMenu->deleteLater(); - - - - - // 场景2: 错误主题 - dropMenu = new DDropdownMenu(); - dropMenu->setTheme("error"); - EXPECT_NE(dropMenu,nullptr); - dropMenu->deleteLater(); - - -} - -// 测试函数 DDropdownMenu::setChildrenFocus -TEST_F(test_ddropdownmenu, setChildrenFocus) -{ - - // 场景1: true - DDropdownMenu *dropMenu = new DDropdownMenu(); - dropMenu->setChildrenFocus(true); - QFlags flags = QFlags(dropMenu->m_pToolButton->focusPolicy()); - EXPECT_EQ(flags.testFlag(Qt::StrongFocus), true); - EXPECT_NE(dropMenu,nullptr); - dropMenu->deleteLater(); - - - - - // 场景2:false - dropMenu = new DDropdownMenu(); - dropMenu->setChildrenFocus(false); - QFlags flags2 = QFlags(dropMenu->m_pToolButton->focusPolicy()); - EXPECT_EQ(flags2.testFlag(Qt::NoFocus), true); - EXPECT_NE(dropMenu,nullptr); - dropMenu->deleteLater(); - - -} - -// 测试函数 DDropdownMenu::getButton -TEST_F(test_ddropdownmenu, getButton) -{ - - DDropdownMenu *dropMenu = new DDropdownMenu(); - DToolButton *button = dropMenu->getButton(); - EXPECT_NE(dropMenu->m_pToolButton, nullptr); - EXPECT_NE(dropMenu,nullptr); - dropMenu->deleteLater(); - - -} - -bool createEncodeMenu_isEmpty_stub() -{ - return true; -} - -// 测试函数 DDropdownMenu::createEncodeMenu -TEST_F(test_ddropdownmenu, createEncodeMenu) -{ - // 场景2: sm_groupEncodeVec为空 - Stub stub; - typedef QVector > VecType; - stub.set(ADDR(VecType, isEmpty), createEncodeMenu_isEmpty_stub); - DDropdownMenu *dropMenu = DDropdownMenu::createEncodeMenu(); - ASSERT_NE(dropMenu, nullptr); - EXPECT_TRUE(dropMenu->m_menu->actions().isEmpty()); - dropMenu->deleteLater(); - - // 场景1: sm_groupEncodeVec不为空 - stub.reset(ADDR(VecType, isEmpty)); - dropMenu = DDropdownMenu::createEncodeMenu(); - ASSERT_NE(dropMenu, nullptr); - EXPECT_FALSE(dropMenu->m_menu->actions().isEmpty()); - dropMenu->deleteLater(); -} - -// 测试函数 DDropdownMenu::createHighLightMenu -TEST_F(test_ddropdownmenu, createHighLightMenu) -{ - - DDropdownMenu *dropMenu = new DDropdownMenu(); - dropMenu->createHighLightMenu(); - EXPECT_NE(dropMenu,nullptr); - dropMenu->deleteLater(); - -} - -// 测试函数 DDropdownMenu::createIcon -TEST_F(test_ddropdownmenu, createIcon) -{ - - // 场景1: m_bPressed为true - DDropdownMenu *dropMenu = new DDropdownMenu(); - dropMenu->m_bPressed = true; - EXPECT_NE(dropMenu,nullptr); - dropMenu->deleteLater(); - - - // 场景2: m_bPressed为false - dropMenu = new DDropdownMenu(); - dropMenu->m_bPressed = false; - dropMenu->createIcon(); - EXPECT_NE(dropMenu,nullptr); - dropMenu->deleteLater(); - - -} - -// 测试函数 DDropdownMenu::OnFontChangedSlot -TEST_F(test_ddropdownmenu, OnFontChangedSlot) -{ - - DDropdownMenu *dropMenu = new DDropdownMenu(); - dropMenu->OnFontChangedSlot(QFont()); - EXPECT_NE(dropMenu,nullptr); - dropMenu->deleteLater(); - -} - -// 测试函数 DDropdownMenu::eventFilter -// 测试函数 DDropdownMenu::setSvgColor -TEST_F(test_ddropdownmenu, setSvgColor) -{ - - DDropdownMenu *dropMenu = new DDropdownMenu(); - EXPECT_NE(dropMenu->setSvgColor("#FF0000").isNull(),true); - EXPECT_NE(dropMenu,nullptr); - dropMenu->deleteLater(); - -} - -// 测试函数 DDropdownMenu::SetSVGBackColor -TEST_F(test_ddropdownmenu, SetSVGBackColor) -{ - - QByteArray data = "" - "I love SVG" - ""; - QDomDocument doc; - doc.setContent(data); - QDomElement elem = doc.documentElement(); - DDropdownMenu *dropMenu = new DDropdownMenu(); - dropMenu->SetSVGBackColor(elem, "fill", "#FF0000"); - - EXPECT_NE(dropMenu,nullptr); - dropMenu->deleteLater(); - -} - -// Stub: 阻塞 exec() 弹窗,直接返回空 -static QAction *stub_QMenu_exec_noarg() -{ - return nullptr; -} - -// 测试函数 DDropdownMenu::slotRequestMenu -TEST_F(test_ddropdownmenu, slotRequestMenu) -{ - DDropdownMenu *dropMenu = new DDropdownMenu(); - - Stub stub; - stub.set((QAction * (QMenu::*)()) ADDR(QMenu, exec), stub_QMenu_exec_noarg); - - // 场景1: request 为 true - dropMenu->slotRequestMenu(true); - // 场景2: request 为 false - dropMenu->slotRequestMenu(false); - - EXPECT_NE(dropMenu, nullptr); - dropMenu->deleteLater(); -} - -// 测试函数 DDropdownMenu::getCurrentText -TEST_F(test_ddropdownmenu, getCurrentText) -{ - DDropdownMenu *dropMenu = new DDropdownMenu(); - dropMenu->setText("GB18030"); - EXPECT_EQ(dropMenu->getCurrentText().toStdString(), "GB18030"); - - dropMenu->deleteLater(); -} - -// 测试 createEncodeMenu 内 lambda #1: DMenu::triggered -TEST_F(test_ddropdownmenu, createEncodeMenuLambda) -{ - DDropdownMenu *encMenu = DDropdownMenu::createEncodeMenu(); - ASSERT_NE(encMenu, nullptr); - - QSignalSpy spy(encMenu, &DDropdownMenu::currentActionChanged); - QAction *action = new QAction("GBK"); - // 直接触发 DMenu 的 triggered 信号,调用 createEncodeMenu 中注册的 lambda - emit encMenu->m_menu->triggered(action); - // m_text("UTF-8") != action->text(),应发出 currentActionChanged - EXPECT_EQ(spy.count(), 1); - - delete action; - encMenu->deleteLater(); -} - -// 测试 createHighLightMenu 内 lambda #1: noHlAction::triggered(bool) -TEST_F(test_ddropdownmenu, createHighLightMenuNoneLambda) -{ - DDropdownMenu *hlMenu = DDropdownMenu::createHighLightMenu(); - ASSERT_NE(hlMenu, nullptr); - ASSERT_FALSE(hlMenu->m_menu->actions().isEmpty()); - - // noHlAction("None") 是 m_pMenu 的第一个 action - QAction *noneAction = hlMenu->m_menu->actions().first(); - QSignalSpy spy(hlMenu, &DDropdownMenu::currentActionChanged); - // 直接触发 triggered(true),调用 createHighLightMenu 中 noHlAction 注册的 lambda - emit noneAction->triggered(true); - EXPECT_EQ(spy.count(), 1); - - hlMenu->deleteLater(); -} - -// 测试 createHighLightMenu 内 lambda #2: QActionGroup::triggered(QAction*) -TEST_F(test_ddropdownmenu, createHighLightMenuActionGroupLambda) -{ - DDropdownMenu *hlMenu = DDropdownMenu::createHighLightMenu(); - ASSERT_NE(hlMenu, nullptr); - ASSERT_NE(hlMenu->m_actionGroup, nullptr); - - QSignalSpy spy(hlMenu, &DDropdownMenu::currentActionChanged); - QAction *action = new QAction(""); - // 直接触发 QActionGroup 的 triggered 信号,调用 createHighLightMenu 中 actionGroup 注册的 lambda - emit hlMenu->m_actionGroup->triggered(action); - // defName 为空,def 无效,走 else 分支设置文本为 tr("None")。源码用的是 - // DDropdownMenu::tr("None")(可翻译),在 zh_CN 环境下会被译为“无”,硬编码比较 - // 英文 "None" 会在中文环境下失败。这里用同一翻译函数取期望值,做到与 locale 无关。 - EXPECT_EQ(hlMenu->getCurrentText().toStdString(), DDropdownMenu::tr("None").toStdString()); - - delete action; - hlMenu->deleteLater(); -} - -// 测试构造函数 lambda #1: DGuiApplicationHelper::sizeModeChanged -TEST_F(test_ddropdownmenu, constructorSizeModeLambda) -{ - DDropdownMenu *dropMenu = new DDropdownMenu(); - ASSERT_NE(dropMenu, nullptr); - - // 直接触发 sizeModeChanged 信号,调用构造函数中注册的 lambda - DGuiApplicationHelper *helper = DGuiApplicationHelper::instance(); - emit helper->sizeModeChanged(DGuiApplicationHelper::CompactMode); - - EXPECT_NE(dropMenu, nullptr); - dropMenu->deleteLater(); -} diff --git a/tests/src/widgets/ut_ddropdownmenu.h b/tests/src/widgets/ut_ddropdownmenu.h deleted file mode 100644 index 7bcbba0d8..000000000 --- a/tests/src/widgets/ut_ddropdownmenu.h +++ /dev/null @@ -1,16 +0,0 @@ -// SPDX-FileCopyrightText: 2019 - 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef TEST_DDROPDOWNMENU_H -#define TEST_DDROPDOWNMENU_H - -#include "../../src/widgets/ddropdownmenu.h" - -#include - -class test_ddropdownmenu: public testing::Test -{ -}; - -#endif // TEST_DDROPDOWNMENU_H diff --git a/tests/src/widgets/ut_pathsettintwgt.cpp b/tests/src/widgets/ut_pathsettintwgt.cpp deleted file mode 100644 index 680e54cfa..000000000 --- a/tests/src/widgets/ut_pathsettintwgt.cpp +++ /dev/null @@ -1,64 +0,0 @@ -// SPDX-FileCopyrightText: 2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "ut_pathsettintwgt.h" -#include "../stub.h" - -#include -#include - -// Stub: QFileDialog::exec 返回 Rejected,触发对话框取消分支 -static int stub_filedialog_exec_rejected() -{ - return QDialog::Rejected; -} - -// 测试函数 PathSettingWdg::setEditText -TEST_F(test_pathsettintwgt, checkSetEditText) -{ - m_wgt->setEditText("/home/user/Documents/very/long/path/to/some/file/location/test.txt"); - EXPECT_FALSE(m_wgt->m_customEdit->text().isEmpty()); -} - -// 测试函数 PathSettingWdg::onBoxClicked -TEST_F(test_pathsettintwgt, checkOnBoxClicked) -{ - // CurFileBox: 自定义按钮禁用 - m_wgt->onBoxClicked(PathSettingWgt::CurFileBox); - EXPECT_FALSE(m_wgt->m_customBtn->isEnabled()); - - // LastOptBox: 自定义按钮禁用 - m_wgt->onBoxClicked(PathSettingWgt::LastOptBox); - EXPECT_FALSE(m_wgt->m_customBtn->isEnabled()); - - // CustomBox: 自定义按钮启用 - m_wgt->onBoxClicked(PathSettingWgt::CustomBox); - EXPECT_TRUE(m_wgt->m_customBtn->isEnabled()); - - // default 分支 - m_wgt->onBoxClicked(999); - EXPECT_NE(m_wgt, nullptr); -} - -// 测试函数 PathSettingWdg::onBtnClicked -TEST_F(test_pathsettintwgt, checkOnBtnClicked) -{ - typedef int (*Fptr)(QFileDialog *); - Fptr fptr = (Fptr)(&QFileDialog::exec); - Stub s; - s.set(fptr, stub_filedialog_exec_rejected); - // 对话框取消 -> 提前返回 - m_wgt->onBtnClicked(); - EXPECT_NE(m_wgt, nullptr); -} - -// 测试 connections 内 lambda #1: QButtonGroup::buttonClicked(QAbstractButton*) -TEST_F(test_pathsettintwgt, checkConnectionsLambda) -{ - // 点击 m_customBox 触发 QButtonGroup 的 buttonClicked 信号, - // 调用 connections() 中注册的 lambda,进而调用 onBoxClicked(CustomBox) - m_wgt->m_customBox->click(); - EXPECT_TRUE(m_wgt->m_customBox->isChecked()); - EXPECT_TRUE(m_wgt->m_customBtn->isEnabled()); -} diff --git a/tests/src/widgets/ut_pathsettintwgt.h b/tests/src/widgets/ut_pathsettintwgt.h deleted file mode 100644 index 61aeb196c..000000000 --- a/tests/src/widgets/ut_pathsettintwgt.h +++ /dev/null @@ -1,27 +0,0 @@ -// SPDX-FileCopyrightText: 2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef TEST_PATHSETTINTWGT_H -#define TEST_PATHSETTINTWGT_H - -#include "../../src/widgets/pathsettintwgt.h" - -#include - -class test_pathsettintwgt : public testing::Test -{ -protected: - void SetUp() - { - m_wgt = new PathSettingWgt(); - } - void TearDown() - { - delete m_wgt; - } - - PathSettingWgt *m_wgt = nullptr; -}; - -#endif // TEST_PATHSETTINTWGT_H diff --git a/tests/src/widgets/ut_window.cpp b/tests/src/widgets/ut_window.cpp deleted file mode 100644 index dfe01d189..000000000 --- a/tests/src/widgets/ut_window.cpp +++ /dev/null @@ -1,2466 +0,0 @@ -// SPDX-FileCopyrightText: 2023 - 2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "ut_window.h" -#include "dsettingsoption.h" -#include "ddialog.h" -#include "qfileinfo.h" -#include "qfile.h" -#include -#include - -int exec_ret = 1; -int QDialog_exec_stub() -{ - return exec_ret; -} - -int intvalue=1; -int retintstub() -{ - return intvalue; -} - -QString stringvalue="123"; -QString retstringstub() -{ - return stringvalue; -} - -bool isDraft=false; -bool EditWrapper_isDraftFile_stub() -{ - return isDraft; -} - -bool isModified=false; -bool EditWrapper_isModified_stub() -{ - return isModified; -} - -bool qfileinfo_exists= false; -bool QFileInfo_exists_stub() -{ - return qfileinfo_exists; -} - -bool editwrapper_istemfile=false; -bool EditWrapper_isTemFile_stub() -{ - return editwrapper_istemfile; -} - -bool editwrapper_saveFile = false; -bool EditWrapper_saveFile_stub() -{ - return editwrapper_saveFile; -} - -bool editwrapper_saveAsFile = false; -bool EditWrapper_saveAsFile_stub(const QString &newFilePath, const QByteArray &encodeName) -{ - Q_UNUSED(newFilePath); - Q_UNUSED(encodeName); - return editwrapper_saveAsFile; -} - -EditWrapper* window_currentWrapper = nullptr; -EditWrapper* Window_currentWrapper_stub() -{ - return window_currentWrapper; -} - -TextEdit* editwrapper_texteditor = nullptr; -TextEdit *EditWrapper_textEditor_stub() -{ - return editwrapper_texteditor; -} - -bool window_saveasfile=false; -bool Window_saveAsFile_stub() -{ - return false; -} - -int QFile_permissions_stub() -{ - return 0x2000;//The file is writable by the owner of the file. -} - -void Window_updateSabeAsFileNameTemp_stub() -{ - return ; -} - -StartManager::FileTabInfo StartManager_getFileTabInfo_stub() -{ - return StartManager::FileTabInfo{1,1}; -} - -QString utils_getkeyshortcut; -QString Utils_getKeyshortcut_stub() -{ - return utils_getkeyshortcut; -} - - -QString utils_getkeyshortcutfromkeymap; -QString Utils_getKeyshortcutFromKeymap_stub() -{ - return utils_getkeyshortcutfromkeymap; -} - - -int option_stub_para = 0; -QPointer pDSettingsOption = nullptr; -QPointer option_stub() -{ - if (pDSettingsOption == nullptr) { - pDSettingsOption = new DSettingsOption; - } - if(option_stub_para == 0) - pDSettingsOption->setValue("window_maximum"); - else if(option_stub_para ==1 ) - pDSettingsOption->setValue("fullscreen"); - else - pDSettingsOption->setValue("normal"); - return pDSettingsOption; -} - - -UT_Window::UT_Window() -{ - -} - -TEST(UT_Window_Window, UT_Window_Window_001) -{ - Window *pWindow = new Window; - - ASSERT_TRUE(pWindow->m_editorWidget != nullptr); - pWindow->deleteLater(); -} - -TEST(UT_Window_showCenterWindow, UT_Window_showCenterWindow_001) -{ - Stub stub; - stub.set(ADDR(DSettings,option),option_stub); - - Window * window1 = new Window(); - option_stub_para=0; - window1->showCenterWindow(true); - - EXPECT_NE(window1->isVisible(),false); - EXPECT_NE(window1,nullptr); - - window1->deleteLater(); - if (pDSettingsOption != nullptr) { - pDSettingsOption->deleteLater(); - } -} - -TEST(UT_Window_showCenterWindow, UT_Window_showCenterWindow_002) -{ - Window * window1 = new Window(); - - Stub stub; - stub.set(ADDR(DSettings,option),option_stub); - - option_stub_para=1; - window1->showCenterWindow(true); - - EXPECT_NE(window1->isVisible(),false); - EXPECT_NE(window1,nullptr); - - window1->deleteLater(); - if (pDSettingsOption != nullptr) { - pDSettingsOption->deleteLater(); - } -} - -TEST(UT_Window_showCenterWindow, UT_Window_showCenterWindow_003) -{ - Window * window1 = new Window(); - - Stub stub; - stub.set(ADDR(DSettings,option),option_stub); - - option_stub_para=2; - window1->showCenterWindow(true); - - EXPECT_NE(window1->isVisible(),false); - EXPECT_NE(window1,nullptr); - - window1->deleteLater(); - if (pDSettingsOption != nullptr) { - pDSettingsOption->deleteLater(); - } -} - - -//initTitlebar -TEST(UT_Window_initTitlebar, UT_Window_initTitlebar) -{ - Window * window1 = new Window(); - window1->initTitlebar(); - - EXPECT_NE(window1,nullptr); - EXPECT_NE(window1->m_menu,nullptr); - - window1->deleteLater(); - - - -} -TEST(UT_Window_checkBlockShutdown, UT_Window_checkBlockShutdown) -{ - Window * window1 = new Window(); - EXPECT_NE(window1->checkBlockShutdown(),true); - - EXPECT_NE(window1,nullptr); - - window1->deleteLater(); - - -} -//getTabIndex -TEST(UT_Window_getTabIndex, UT_Window_getTabIndex) -{ - Window * window1 = new Window(); - EXPECT_NE(window1->getTabIndex("aadd"),1); - - EXPECT_NE(window1,nullptr); - - window1->deleteLater(); - - -} -int *stub1_exec() -{ - - return nullptr; -} -//activeTab -TEST(UT_Window_activeTab, UT_Window_activeTab) -{ - Window * window1 = new Window(); - window1->activeTab(0); - - EXPECT_NE(window1->m_tabbar->currentIndex(),1); - EXPECT_NE(window1,nullptr); - - window1->deleteLater(); - - -} -//addTab -TEST(UT_Window_addTab, UT_Window_addTab) -{ - Window * window1 = new Window(); - window1->addTab("aabb",true); - - EXPECT_NE(window1->m_tabbar->currentIndex(),1); - EXPECT_NE(window1,nullptr); - - window1->deleteLater(); - - -} -//openFile -TEST(UT_Window_openFile, UT_Window_openFile_001) -{ - Window* window = new Window(); - EditWrapper * a = new EditWrapper(); - window->addTabWithWrapper(a,"aa","aad","aadd",0); - window->addTabWithWrapper(a,"bb","aad","aadd",1); - - typedef int (*Fptr)(QDialog *); - Fptr fptr = (Fptr)(&QDialog::exec); - Stub s1; - s1.set(fptr,QDialog_exec_stub); - - exec_ret = 1; - - window->openFile(); - - EXPECT_NE(window,nullptr); - EXPECT_NE(a,nullptr); - window->deleteLater(); - a->deleteLater(); - -} - -TEST(UT_Window_openFile, UT_Window_openFile_002) -{ - Window* window = new Window(); - EditWrapper * a = new EditWrapper(); - window->addTabWithWrapper(a,"aa","aad","aadd",0); - window->addTabWithWrapper(a,"bb","aad","aadd",1); - - typedef int (*Fptr)(QDialog *); - Fptr fptr = (Fptr)(&QDialog::exec); - Stub s1; - s1.set(fptr,QDialog_exec_stub); - - exec_ret = 0; - - window->openFile(); - - EXPECT_NE(window,nullptr); - EXPECT_NE(a,nullptr); - window->deleteLater(); - a->deleteLater(); - -} - -TEST(UT_Window_saveFile, UT_Window_saveFile_001) -{ - Window * window1 = new Window(); - - isDraft=false; - qfileinfo_exists=true; - editwrapper_istemfile=false;//- - editwrapper_saveFile=true; - window_currentWrapper = new EditWrapper; - - Stub s0;s0.set(ADDR(Window,currentWrapper),Window_currentWrapper_stub); - Stub s1;s1.set(ADDR(EditWrapper,isDraftFile),EditWrapper_isDraftFile_stub); - Stub s2;s2.set((bool (QFileInfo::*)(void) const)ADDR(QFileInfo,exists),QFileInfo_exists_stub); - Stub s3;s3.set(ADDR(EditWrapper,isTemFile),EditWrapper_isTemFile_stub); - Stub s4;s4.set(ADDR(EditWrapper,saveFile),EditWrapper_saveFile_stub); - Stub s5;s5.set(ADDR(Window,saveAsFile),Window_saveAsFile_stub); - - typedef QFileDevice::Permissions (*Fptr)(QFile*); - Fptr fptr = (Fptr)((QFileDevice::Permissions(QFile::*)() const )&QFile::permissions); - Stub s6;s6.set(fptr,QFile_permissions_stub); - - Stub s7;s7.set(ADDR(Window,updateSabeAsFileNameTemp),Window_updateSabeAsFileNameTemp_stub); - - window1->saveFile(); - - - EXPECT_NE(window1,nullptr); - window1->deleteLater(); - window_currentWrapper->deleteLater(); -} - - -TEST(UT_Window_saveFile, UT_Window_saveFile_002) -{ - Window * window1 = new Window(); - - isDraft=false; - qfileinfo_exists=true; - editwrapper_istemfile=true;//- - editwrapper_saveFile=true; - window_currentWrapper = new EditWrapper; - - Stub s0;s0.set(ADDR(Window,currentWrapper),Window_currentWrapper_stub); - Stub s1;s1.set(ADDR(EditWrapper,isDraftFile),EditWrapper_isDraftFile_stub); - Stub s2;s2.set((bool (QFileInfo::*)(void) const)ADDR(QFileInfo,exists),QFileInfo_exists_stub); - Stub s3;s3.set(ADDR(EditWrapper,isTemFile),EditWrapper_isTemFile_stub); - Stub s4;s4.set(ADDR(EditWrapper,saveFile),EditWrapper_saveFile_stub); - Stub s5;s5.set(ADDR(Window,saveAsFile),Window_saveAsFile_stub); - - typedef QFileDevice::Permissions (*Fptr)(QFile*); - Fptr fptr = (Fptr)((QFileDevice::Permissions(QFile::*)() const )&QFile::permissions); - Stub s6;s6.set(fptr,QFile_permissions_stub); - - Stub s7;s7.set(ADDR(Window,updateSabeAsFileNameTemp),Window_updateSabeAsFileNameTemp_stub); - - window1->saveFile(); - - - EXPECT_NE(window1,nullptr); - window1->deleteLater(); - window_currentWrapper->deleteLater(); -} - - -TEST(UT_Window_closeTab, UT_Window_closeTab_001) -{ - Window * window = new Window(); - window->addBlankTab("aabb"); - - typedef int (*Fptr)(QDialog *); - Fptr fptr = (Fptr)(&QDialog::exec); - Stub stub; - stub.set(fptr,QDialog_exec_stub); - - Stub s2; - s2.set(ADDR(EditWrapper,isDraftFile),EditWrapper_isDraftFile_stub); - Stub s3; - s3.set(ADDR(EditWrapper,isModified),EditWrapper_isModified_stub); - - - isDraft = true; - isModified = true; - exec_ret = 0; - window->closeTab(); - - - EXPECT_NE(window,nullptr); - - window->deleteLater(); - -} - -TEST(UT_Window_closeTab, UT_Window_closeTab_002) -{ - Window * window = new Window(); - window->addBlankTab("aabb"); - - typedef int (*Fptr)(QDialog *); - Fptr fptr = (Fptr)(&QDialog::exec); - Stub stub; - stub.set(fptr,QDialog_exec_stub); - - Stub s2; - s2.set(ADDR(EditWrapper,isDraftFile),EditWrapper_isDraftFile_stub); - Stub s3; - s3.set(ADDR(EditWrapper,isModified),EditWrapper_isModified_stub); - - isDraft = true; - isModified = true; - exec_ret = 1; - window->closeTab(); - - EXPECT_NE(window,nullptr); - - window->deleteLater(); -} - - -TEST(UT_Window_closeTab, UT_Window_closeTab_003) -{ - Window * window = new Window(); - window->addBlankTab("aabb"); - - typedef int (*Fptr)(QDialog *); - Fptr fptr = (Fptr)(&QDialog::exec); - Stub stub; - stub.set(fptr,QDialog_exec_stub); - - Stub s2; - s2.set(ADDR(EditWrapper,isDraftFile),EditWrapper_isDraftFile_stub); - Stub s3; - s3.set(ADDR(EditWrapper,isModified),EditWrapper_isModified_stub); - - isDraft = true; - isModified = true; - exec_ret = 2; - window->closeTab(); - - EXPECT_NE(window,nullptr); - - window->deleteLater(); -} - -TEST(UT_Window_closeTab, UT_Window_closeTab_004) -{ - Window * window = new Window(); - window->addBlankTab("aabb"); - - typedef int (*Fptr)(QDialog *); - Fptr fptr = (Fptr)(&QDialog::exec); - Stub stub; - stub.set(fptr,QDialog_exec_stub); - - Stub s2; - s2.set(ADDR(EditWrapper,isDraftFile),EditWrapper_isDraftFile_stub); - Stub s3; - s3.set(ADDR(EditWrapper,isModified),EditWrapper_isModified_stub); - - isDraft = false; - isModified = true; - exec_ret = 1; - window->closeTab(); - - EXPECT_NE(window,nullptr); - window->deleteLater(); -} - - -TEST(UT_Window_closeTab, UT_Window_closeTab_005) -{ - Window * window = new Window(); - window->addBlankTab("aabb"); - - typedef int (*Fptr)(QDialog *); - Fptr fptr = (Fptr)(&QDialog::exec); - Stub stub; - stub.set(fptr,QDialog_exec_stub); - - Stub s2; - s2.set(ADDR(EditWrapper,isDraftFile),EditWrapper_isDraftFile_stub); - Stub s3; - s3.set(ADDR(EditWrapper,isModified),EditWrapper_isModified_stub); - - isDraft = false; - isModified = true; - exec_ret = 2; - window->closeTab(); - - EXPECT_NE(window,nullptr); - window->deleteLater(); -} - -//saveAsFileToDisk -TEST(UT_Window_saveAsFileToDisk, UT_Window_saveAsFileToDisk_001) -{ - Window * window1 = new Window(); - - window_currentWrapper = new EditWrapper; - exec_ret=0; - editwrapper_saveFile = true; - isDraft=true; - - Stub s0;s0.set(ADDR(Window,currentWrapper),Window_currentWrapper_stub); - typedef int (*Fptr)(QFileDialog *); - Fptr fptr = (Fptr)(&QFileDialog::exec); - Stub s1; - s1.set(fptr,QDialog_exec_stub); - Stub s2;s2.set(ADDR(EditWrapper,saveFile),EditWrapper_saveFile_stub); - Stub s3;s3.set(ADDR(EditWrapper,updateSaveAsFileName),Window_updateSabeAsFileNameTemp_stub); - Stub s4;s4.set(ADDR(EditWrapper,isDraftFile),EditWrapper_isDraftFile_stub); - - EXPECT_NE(window1->saveAsFileToDisk(),"1"); - - EXPECT_NE(window1,nullptr); - - window1->deleteLater(); - window_currentWrapper->deleteLater(); - - -} - -TEST(UT_Window_saveAsFileToDisk, UT_Window_saveAsFileToDisk_002) -{ - Window * window1 = new Window(); - - window_currentWrapper = new EditWrapper; - exec_ret=1; - editwrapper_saveFile = true; - isDraft=false; - editwrapper_saveAsFile = true; - - Stub s0;s0.set(ADDR(Window,currentWrapper),Window_currentWrapper_stub); - typedef int (*Fptr)(QFileDialog *); - Fptr fptr = (Fptr)(&QFileDialog::exec); - Stub s1;s1.set(fptr,QDialog_exec_stub); - Stub s2;s2.set(ADDR(EditWrapper,saveFile),EditWrapper_saveFile_stub); - Stub s3;s3.set(ADDR(Window,updateSaveAsFileName),Window_updateSabeAsFileNameTemp_stub); - Stub s4;s4.set(ADDR(EditWrapper,isDraftFile),EditWrapper_isDraftFile_stub); - Stub s5;s5.set((bool(EditWrapper::*)(const QString &, const QByteArray&))ADDR(EditWrapper, saveAsFile), EditWrapper_saveAsFile_stub); - - EXPECT_NE(window1->saveAsFileToDisk(),"1"); - - EXPECT_NE(window1,nullptr); - window1->deleteLater(); - window_currentWrapper->deleteLater(); -} - -//saveBlankFileToDisk -TEST(UT_Window_saveBlankFileToDisk, UT_Window_saveBlankFileToDisk) -{ - Window * window1 = new Window(); - EXPECT_NE(window1->saveBlankFileToDisk(),"1"); - - EXPECT_NE(window1,nullptr); - - window1->deleteLater(); - -} - -//saveAsOtherTabFile -TEST(UT_Window_saveAsOtherTabFile, UT_Window_saveAsOtherTabFile_001) -{ - Window * window = StartManager::instance()->createWindow(); - window->addBlankTab(""); - window->addBlankTab(""); - window->addBlankTab(""); - EditWrapper *wrapper = window->currentWrapper(); - - exec_ret=1; - isDraft=false; - - typedef int (*Fptr)(QFileDialog *); - Fptr fptr = (Fptr)(&QFileDialog::exec); - Stub s1;s1.set(fptr,QDialog_exec_stub); - Stub s4;s4.set(ADDR(EditWrapper,isDraftFile),EditWrapper_isDraftFile_stub); - - window->saveAsOtherTabFile(wrapper); - - - EXPECT_NE(window,nullptr); - window->deleteLater(); - -} - -TEST(UT_Window_saveAsOtherTabFile, UT_Window_saveAsOtherTabFile_002) -{ - Window * window = StartManager::instance()->createWindow(); - window->addBlankTab(""); - window->addBlankTab(""); - window->addBlankTab(""); - EditWrapper *wrapper = window->currentWrapper(); - - exec_ret=1; - isDraft=true; - - typedef int (*Fptr)(QFileDialog *); - Fptr fptr = (Fptr)(&QFileDialog::exec); - Stub s1;s1.set(fptr,QDialog_exec_stub); - Stub s4;s4.set(ADDR(EditWrapper,isDraftFile),EditWrapper_isDraftFile_stub); - - window->saveAsOtherTabFile(wrapper); - - EXPECT_NE(window,nullptr); - window->deleteLater(); - -} - -//changeSettingDialogComboxFontNumber -TEST(UT_Window_changeSettingDialogComboxFontNumber, UT_Window_changeSettingDialogComboxFontNumber) -{ - EditWrapper * e = new EditWrapper(); - Window * window1 = new Window(); - window1->changeSettingDialogComboxFontNumber(3); - - - EXPECT_NE(window1,nullptr); - EXPECT_NE(e,nullptr); - window1->deleteLater(); - e->deleteLater(); - - -} -//popupFindBar -TEST(UT_Window_popupFindBar, UT_Window_popupFindBar) -{ - Window * window1 = new Window(); - EditWrapper *pEditWrapper = new EditWrapper(); - window1->addTabWithWrapper(pEditWrapper, "aa", "aad", "aadd", 0); - window1->addBlankTab(); - window1->currentWrapper()->textEditor()->setPlainText(QString("12345")); - window1->popupFindBar(); - - window1->currentWrapper()->textEditor()->document()->clear(); - window1->popupFindBar(); - - EXPECT_NE(window1->m_tabbar->count(),0); - - EXPECT_NE(window1,nullptr); - window1->deleteLater(); - EXPECT_NE(pEditWrapper,nullptr); - pEditWrapper->deleteLater(); - - - -} - -//popupReplaceBar -TEST(UT_Window_popupReplaceBar, UT_Window_popupReplaceBar) -{ - Window * window1 = new Window(); - EditWrapper *pEditWrapper = new EditWrapper(); - window1->addTabWithWrapper(pEditWrapper, "aa", "aad", "aadd", 0); - window1->addBlankTab(); - window1->currentWrapper()->textEditor()->setPlainText(QString("12345")); - window1->popupReplaceBar(); - - window1->currentWrapper()->textEditor()->document()->clear(); - window1->popupReplaceBar(); - - EXPECT_NE(window1->m_replaceBar->isVisible(),false); - - - EXPECT_NE(window1,nullptr); - window1->deleteLater(); - EXPECT_NE(pEditWrapper,nullptr); - pEditWrapper->deleteLater(); -} - -//popupJumpLineBar -TEST(UT_Window_popupJumpLineBar, UT_Window_popupJumpLineBar) -{ - Window * window1 = new Window(); - window1->popupJumpLineBar(); - - EditWrapper *pEditWrapper = new EditWrapper(); - window1->addTabWithWrapper(pEditWrapper, "aa", "aad", "aadd", 0); - window1->addBlankTab(); - window1->currentWrapper()->textEditor()->setPlainText(QString("12345")); - window1->popupJumpLineBar(); - - window1->currentWrapper()->textEditor()->document()->clear(); - window1->popupJumpLineBar(); - - EXPECT_NE(window1->m_jumpLineBar->isVisible(),false); - - - EXPECT_NE(window1,nullptr); - window1->deleteLater(); - EXPECT_NE(pEditWrapper,nullptr); - pEditWrapper->deleteLater(); - - -} - -//updateJumpLineBar -//popupSettingsDialog -TEST(UT_Window_popupSettingsDialog, UT_Window_popupSettingsDialog) -{ - Window * window = new Window(); - - exec_ret=1; - - typedef int (*Fptr)(DSettingsDialog *); - Fptr fptr = (Fptr)(&DSettingsDialog::exec); - Stub s1;s1.set(fptr,QDialog_exec_stub); - - window->popupSettingsDialog(); - - - ASSERT_NE(window,nullptr); - window->deleteLater(); - -} -//popupPrintDialog - -TEST(UT_Window_popupThemePanel, UT_Window_popupThemePanel) -{ - Window * window1 = new Window(); - window1->popupThemePanel(); - - EXPECT_NE(window1->m_themePanel->isVisible(),false); - - EXPECT_NE(window1,nullptr); - window1->deleteLater(); - - -} -//toggleFullscreen -TEST(UT_Window_toggleFullscreen, UT_Window_toggleFullscreen) -{ - Window * window1 = new Window(); - window1->toggleFullscreen(); - - EXPECT_NE(window1,nullptr); - window1->deleteLater(); - - -} -//remberPositionRestore -TEST(UT_Window_remberPositionRestore, UT_Window_remberPositionRestore) -{ - Window * window1 = new Window(); - - - EditWrapper* wrapper = new EditWrapper; - window1->m_remberPositionFilePath = "1234"; - window1->m_wrappers["1234"] = wrapper; - - - window1->remberPositionRestore(); - - EXPECT_NE(window1,nullptr); - window1->deleteLater(); - wrapper->deleteLater(); - -} -//displayShortcuts -TEST(UT_Window_displayShortcuts, UT_Window_displayShortcuts) -{ - Window * window1 = new Window(); - window1->displayShortcuts(); - - EXPECT_NE(window1->m_shortcutViewProcess,nullptr); - - EXPECT_NE(window1,nullptr); - window1->deleteLater(); - - -} -//setChildrenFocus -TEST(UT_Window_setChildrenFocus, UT_Window_setChildrenFocus) -{ - Window * window1 = new Window(); - window1->setChildrenFocus(false); - window1->setChildrenFocus(true); - - EXPECT_NE(window1,nullptr); - window1->deleteLater(); - - -} -//addBlankTab -TEST(UT_Window_addBlankTab, UT_Window_addBlankTab) -{ - Window * window1 = new Window(); - window1->addBlankTab("aabb"); - - EXPECT_NE(window1->m_tabbar->count(),0); - - EXPECT_NE(window1,nullptr); - window1->deleteLater(); - - -} -//handleTabCloseRequested -TEST(UT_Window_addTabWithWrapper, UT_Window_addTabWithWrapper) -{ - EditWrapper* edit = new EditWrapper(); - Window *window = new Window(); - window->addTabWithWrapper(edit,"aabb","aabb","aabb"); - - EXPECT_NE(window->m_tabbar->count(),0); - - EXPECT_NE(window,nullptr); - window->deleteLater(); - EXPECT_NE(edit,nullptr); - edit->deleteLater(); - - -} -//handleTabsClosed -TEST(UT_Window_handleTabsClosed, UT_Window_handleTabsClosed) -{ - QStringList aa; - Window *window = new Window(); - window->handleTabsClosed(aa); - - EXPECT_NE(window->m_tabbar->count(),1); - - EXPECT_NE(window,nullptr); - window->deleteLater(); - - -} -//handleCurrentChanged -TEST(UT_Window_handleCurrentChanged, UT_Window_handleCurrentChanged) -{ - QStringList aa; - Window *window = new Window(); - window->handleCurrentChanged(0); - - EXPECT_NE(window->m_findBar->isVisible(),true); - - EXPECT_NE(window,nullptr); - window->deleteLater(); -} -//slot_setTitleFocus -//resizeEvent -TEST(UT_Window_resizeEvent, UT_Window_resizeEvent) -{ - QStringList aa; - Window *window = new Window(); - QResizeEvent * eve= new QResizeEvent(QSize(100,100),QSize(50,50)); - window->resizeEvent(eve); - - EXPECT_NE(window,nullptr); - window->deleteLater(); - delete eve;eve=nullptr; - - -} -//closeEvent -//hideEvent -TEST(UT_Window_hideEvent, UT_Window_hideEvent) -{ - QStringList aa; - Window *window = new Window(); - QHideEvent * eve; - window->hideEvent(eve); - - EXPECT_NE(window->m_replaceBar->isVisible(),true); - - EXPECT_NE(window,nullptr); - window->deleteLater(); -} - -//TextEdit -//void backupFile(); -TEST(UT_Window_backupFile, UT_Window_backupFile) -{ - Window *window = new Window(); - - EditWrapper* e1 = new EditWrapper; - EditWrapper* e2 = new EditWrapper; - window->m_wrappers["1"]=e1; - window->m_wrappers["2"]=e2; - - Stub s1;s1.set(ADDR(StartManager,getFileTabInfo),StartManager_getFileTabInfo_stub); - - window->backupFile(); - - - EXPECT_NE(window,nullptr); - window->deleteLater(); - - -} - -TEST(UT_Window_backupFile, UT_Window_backupFile_pendingTabKeepsTempPath) -{ - Window *window = new Window(); - - Window::PendingTabInfo info; - info.filepath = "/tmp/deepin-editor-pending-backup.tmp"; - info.truePath = "/tmp/deepin-editor-pending-backup.txt"; - info.displayName = "deepin-editor-pending-backup.txt"; - info.cursorPosition = 42; - info.isTemFile = true; - window->addPendingTab(info); - - window->backupFile(); - - ASSERT_EQ(window->m_qlistTemFile.size(), 1); - QJsonDocument doc = QJsonDocument::fromJson(window->m_qlistTemFile.first().toUtf8()); - ASSERT_TRUE(doc.isObject()); - EXPECT_EQ(doc.object().value("localPath").toString(), info.truePath); - EXPECT_EQ(doc.object().value("temFilePath").toString(), info.filepath); - EXPECT_EQ(doc.object().value("cursorPosition").toString(), QString::number(info.cursorPosition)); - - window->deleteLater(); -} - -//void closeAllFiles(); -TEST(UT_Window_closeAllFiles, UT_Window_closeAllFiles) -{ - Window *window = new Window(); - EXPECT_NE(window->closeAllFiles(),false); - - EXPECT_NE(window->m_tabbar->count(),1); - - EXPECT_NE(window,nullptr); - window->deleteLater(); - - -} - -//void addTemFileTab(QString qstrPath,QString qstrName,QString qstrTruePath,bool bIsTemFile = false); -TEST(UT_Window_addTemFileTab, UT_Window_addTemFileTab) -{ - Window *window = new Window(); - window->addTemFileTab("aa","bb","cc",""); - - EXPECT_NE(window->m_tabbar->count(),1); - - EXPECT_NE(window,nullptr); - window->deleteLater(); - - -} - -TEST(UT_Window_addPendingTab, UT_Window_addPendingTab_keepsRequestedIndex) -{ - Window *window = new Window(); - - Window::PendingTabInfo first; - first.filepath = "/tmp/deepin-editor-first.txt"; - first.truePath = first.filepath; - first.displayName = "first.txt"; - window->addPendingTab(first); - - Window::PendingTabInfo second; - second.filepath = "/tmp/deepin-editor-second.txt"; - second.truePath = second.filepath; - second.displayName = "second.txt"; - window->addPendingTab(second, 0); - - EXPECT_EQ(window->m_tabbar->fileAt(0), second.filepath); - EXPECT_EQ(window->m_tabbar->fileAt(1), first.filepath); - - window->deleteLater(); -} - -TEST(UT_Window_loadPendingTab, UT_Window_loadPendingTab_missingFileCanStillClose) -{ - Window *window = new Window(); - - Window::PendingTabInfo info; - info.filepath = "/tmp/deepin-editor-missing-pending.txt"; - info.truePath = info.filepath; - info.displayName = "missing.txt"; - window->addPendingTab(info); - - EXPECT_FALSE(window->loadPendingTab(info.filepath)); - EXPECT_TRUE(window->isPendingTab(info.filepath)); - EXPECT_TRUE(window->closeTab(info.filepath)); - EXPECT_FALSE(window->isPendingTab(info.filepath)); - - window->deleteLater(); -} -//Window(DMainWindow *parent = nullptr); -//~Window() override; - -////跟新文件修改状态 -//void updateModifyStatus(const QString &path, bool isModified); -TEST(UT_Window_updateModifyStatus, UT_Window_updateModifyStatus) -{ - Window *window = new Window(); - window->updateModifyStatus("aa",false); - window->updateModifyStatus("aa",true); - - EXPECT_NE(window,nullptr); - window->deleteLater(); - - -} -////跟新tab文件名称 -//void updateSaveAsFileName(QString strOldFilePath, QString strNewFilePath); -TEST(UT_Window_updateSaveAsFileName, UT_Window_updateSaveAsFileName) -{ - Window *window = new Window(); - EditWrapper * a = new EditWrapper(); - window->addTabWithWrapper(a,"aa","aad","aadd",0); - window->addTabWithWrapper(a,"bb","aad","aadd",1); - window->updateSaveAsFileName("aa","bb"); - - EXPECT_NE(window->m_tabbar->indexOf("aa"),1); - - EXPECT_NE(window,nullptr); - window->deleteLater(); - -} - -//int getTabIndex(const QString &file); -//void activeTab(int index); - -//Tabbar* getTabbar(); -TEST(UT_Window_getTabbar, UT_Window_getTabbar) -{ - Window *window = new Window(); - EXPECT_NE(window->getTabbar(),nullptr); - - EXPECT_NE(window,nullptr); - window->deleteLater(); - -} - -//void addTab(const QString &filepath, bool activeTab = false); -//void addTabWithWrapper(EditWrapper *wrapper, const QString &filepath, const QString &qstrTruePath, -// const QString &tabName, int index = -1); -//bool closeTab(); -//void restoreTab(); -TEST(UT_Window_restoreTab, UT_Window_restoreTab) -{ - Window *window = new Window(); - window->restoreTab(); - EXPECT_NE(window->m_closeFileHistory.isEmpty(),false); - - EXPECT_NE(window,nullptr); - window->deleteLater(); - -} - -//void clearBlack(); - -//EditWrapper* createEditor(); -TEST(UT_Window_createEditor, UT_Window_createEditor) -{ - Window *window = new Window(); - EXPECT_NE(window->createEditor(),nullptr); - - EXPECT_NE(window,nullptr); - window->deleteLater(); - -} -//EditWrapper* currentWrapper(); -TEST(UT_Window_currentWrapper, UT_Window_currentWrapper) -{ - Window *window = new Window(); - EXPECT_EQ(window->currentWrapper(),nullptr); - - EXPECT_NE(window,nullptr); - window->deleteLater(); - -} -//EditWrapper* wrapper(const QString &filePath); -//TextEdit* getTextEditor(const QString &filepath); -TEST(UT_Window_getTextEditor, UT_Window_getTextEditor) -{ - Window *window = new Window(); - EditWrapper * a = new EditWrapper(); - window->addTabWithWrapper(a,"aa","aad","aadd",0); - window->addTabWithWrapper(a,"bb","aad","aadd",1); - EXPECT_NE(window->getTextEditor("aa"),nullptr); - - EXPECT_NE(window,nullptr); - window->deleteLater(); - EXPECT_NE(a,nullptr); - a->deleteLater(); - -} -//void focusActiveEditor(); -TEST(UT_Window_focusActiveEditor, UT_Window_focusActiveEditor) -{ - Window *window = new Window(); - EditWrapper * a = new EditWrapper(); - window->addTabWithWrapper(a,"aa","aad","aadd",0); - window->addTabWithWrapper(a,"bb","aad","aadd",1); - window->focusActiveEditor(); - - EXPECT_NE(window,nullptr); - window->deleteLater(); - EXPECT_NE(a,nullptr); - a->deleteLater(); - -} -//void removeWrapper(const QString &filePath, bool isDelete = false); -TEST(UT_Window_removeWrapper, UT_Window_removeWrapper) -{ - Window *window = new Window(); - EditWrapper * a = new EditWrapper(); - window->addTabWithWrapper(a,"aa","aad","aadd",0); - window->addTabWithWrapper(a,"bb","aad","aadd",1); - window->removeWrapper("aa",true); - window->removeWrapper("bb",false); - - EXPECT_EQ(window->m_wrappers.value("aa"),nullptr); - - EXPECT_NE(window,nullptr); - window->deleteLater(); - EXPECT_NE(a,nullptr); - a->deleteLater(); - - -} - -TEST(UT_Window_decrementFontSize, UT_Window_decrementFontSize) -{ - Window *window = new Window(); - EditWrapper * a = new EditWrapper(); - window->m_settings =Settings::instance(); - window->m_fontSize = 12; - qreal oldFontSize = window->m_fontSize; - window->decrementFontSize(); - EXPECT_GT(oldFontSize, window->m_fontSize); - - EXPECT_NE(window,nullptr); - window->deleteLater(); - EXPECT_NE(a,nullptr); - a->deleteLater(); - -} -//void incrementFontSize(); -TEST(UT_Window_incrementFontSize, UT_Window_incrementFontSize) -{ - Window *window = new Window(); - EditWrapper * a = new EditWrapper(); - window->m_settings =Settings::instance(); - qreal oldFontSize = window->m_fontSize; - window->incrementFontSize(); - EXPECT_LT(oldFontSize, window->m_fontSize); - - EXPECT_NE(window,nullptr); - window->deleteLater(); - EXPECT_NE(a,nullptr); - a->deleteLater(); - -} -//void resetFontSize(); -TEST(UT_Window_resetFontSize, UT_Window_resetFontSize) -{ - Window *window = new Window(); - EditWrapper * a = new EditWrapper(); - window->m_settings =Settings::instance(); - window->resetFontSize(); - - EXPECT_NE(window,nullptr); - window->deleteLater(); - EXPECT_NE(a,nullptr); - a->deleteLater(); - -} -//void setFontSizeWithConfig(EditWrapper *editor); -TEST(UT_Window_setFontSizeWithConfig, UT_Window_setFontSizeWithConfig) -{ - Window *window = new Window(); - EditWrapper * a = new EditWrapper(); - window->m_settings =Settings::instance(); - window->setFontSizeWithConfig(a); - - EXPECT_NE(window->m_fontSize,10); - - EXPECT_NE(window,nullptr); - window->deleteLater(); - EXPECT_NE(a,nullptr); - a->deleteLater(); - -} - - - -//public slots: -//void addBlankTab(); -//void addBlankTab(const QString &blankFile); -//void handleTabCloseRequested(int index); -//void handleTabsClosed(QStringList tabList); -//void handleCurrentChanged(const int &index); - -//void handleJumpLineBarExit(); -TEST(UT_Window_handleJumpLineBarExit, UT_Window_handleJumpLineBarExit) -{ - Window *window = new Window(); - EditWrapper * a = new EditWrapper(); - window->m_settings =Settings::instance(); - window->handleJumpLineBarExit(); - - EXPECT_NE(window,nullptr); - window->deleteLater(); - EXPECT_NE(a,nullptr); - a->deleteLater(); - - - -} -//void handleJumpLineBarJumpToLine(const QString &filepath, int line, bool focusEditor); -TEST(UT_Window_handleJumpLineBarJumpToLine, UT_Window_handleJumpLineBarJumpToLine) -{ - Window *window = new Window(); - EditWrapper * a = new EditWrapper(); - window->addTabWithWrapper(a,"aa","aad","aadd",0); - window->addTabWithWrapper(a,"bb","aad","aadd",1); - window->m_settings =Settings::instance(); - window->handleJumpLineBarJumpToLine("aa",1,true); - window->handleJumpLineBarJumpToLine("aa",1,false); - - - EXPECT_NE(window->m_wrappers.contains("aa"),false); - - EXPECT_NE(window,nullptr); - window->deleteLater(); - EXPECT_NE(a,nullptr); - a->deleteLater(); - - -} - -//void handleBackToPosition(const QString &file, int row, int column, int scrollOffset); -TEST(UT_Window_handleBackToPosition, UT_Window_handleBackToPosition) -{ - Window *window = new Window(); - EditWrapper * a = new EditWrapper(); - window->addTabWithWrapper(a,"aa","aad","aadd",0); - window->addTabWithWrapper(a,"bb","aad","aadd",1); - window->m_settings =Settings::instance(); - window->handleBackToPosition("aa",1,1,1); - - EXPECT_NE(window->m_wrappers.contains("bb"),false); - - EXPECT_NE(window,nullptr); - window->deleteLater(); - EXPECT_NE(a,nullptr); - a->deleteLater(); - -} - -//void handleFindNext(); -TEST(UT_Window_handleFindNextSearchKeyword, UT_Window_handleFindNextSearchKeyword) -{ - Window *window = new Window(); - EditWrapper * a = new EditWrapper(); - window->addTabWithWrapper(a,"aa","aad","aadd",0); - window->addTabWithWrapper(a,"bb","aad","aadd",1); - window->m_settings =Settings::instance(); - window->handleFindNextSearchKeyword(""); - - EXPECT_NE(window->m_wrappers.contains("aadd"),true); - - EXPECT_NE(window,nullptr); - window->deleteLater(); - EXPECT_NE(a,nullptr); - a->deleteLater(); - -} -//void handleFindPrev(); -TEST(UT_Window_handleFindPrevSearchKeyword, UT_Window_handleFindPrevSearchKeyword) -{ - Window *window = new Window(); - EditWrapper * a = new EditWrapper(); - window->addTabWithWrapper(a,"aa","aad","aadd",0); - window->addTabWithWrapper(a,"bb","aad","aadd",1); - window->m_settings =Settings::instance(); - window->handleFindPrevSearchKeyword(""); - - EXPECT_NE(window->m_wrappers.contains("aad"),true); - - EXPECT_NE(window,nullptr); - window->deleteLater(); - EXPECT_NE(a,nullptr); - a->deleteLater(); - - -} -//void slotFindbarClose(); -TEST(UT_Window_slotFindbarClose, UT_Window_slotFindbarClose) -{ - Window *window = new Window(); - EditWrapper * a = new EditWrapper(); - window->addTabWithWrapper(a,"aa","aad","aadd",0); - window->addTabWithWrapper(a,"bb","aad","aadd",1); - window->m_settings =Settings::instance(); - window->slotFindbarClose(); - - EXPECT_NE(window->m_findBar->isVisible(),true); - - EXPECT_NE(window,nullptr); - window->deleteLater(); - EXPECT_NE(a,nullptr); - a->deleteLater(); - - -} -//void slotReplacebarClose(); -TEST(UT_Window_slotReplacebarClose, UT_Window_slotReplacebarClose) -{ - Window *window = new Window(); - EditWrapper * a = new EditWrapper(); - window->addTabWithWrapper(a,"aa","aad","aadd",0); - window->addTabWithWrapper(a,"bb","aad","aadd",1); - window->m_settings =Settings::instance(); - window->slotReplacebarClose(); - - EXPECT_NE(window->m_replaceBar->isVisible(),true); - - EXPECT_NE(window,nullptr); - window->deleteLater(); - EXPECT_NE(a,nullptr); - a->deleteLater(); - - -} - -//void handleReplaceAll(const QString &replaceText, const QString &withText); -TEST(UT_Window_handleReplaceAll, UT_Window_handleReplaceAll) -{ - Window *window = new Window(); - EditWrapper * a = new EditWrapper(); - window->addTabWithWrapper(a,"aa","aad","aadd",0); - window->addTabWithWrapper(a,"bb","aad","aadd",1); - window->m_settings =Settings::instance(); - window->handleReplaceAll("",""); - - - EXPECT_NE(window,nullptr); - window->deleteLater(); - EXPECT_NE(a,nullptr); - a->deleteLater(); - -} -//void handleReplaceNext(const QString &replaceText, const QString &withText); -TEST(UT_Window_handleReplaceNext, UT_Window_handleReplaceNext) -{ - Window *window = new Window(); - EditWrapper * a = new EditWrapper(); - window->addTabWithWrapper(a,"aa","aad","aadd",0); - window->addTabWithWrapper(a,"bb","aad","aadd",1); - window->m_settings =Settings::instance(); - window->handleReplaceNext("a", "", ""); - - EXPECT_EQ(window->m_keywordForSearch,""); - - EXPECT_NE(window->m_findBar->isVisible(),true); - - EXPECT_NE(window,nullptr); - window->deleteLater(); - EXPECT_NE(a,nullptr); - a->deleteLater(); - -} -//void handleReplaceRest(const QString &replaceText, const QString &withText); -TEST(UT_Window_handleReplaceRest, UT_Window_handleReplaceRest) -{ - Window *window = new Window(); - EditWrapper * a = new EditWrapper(); - window->addTabWithWrapper(a,"aa","aad","aadd",0); - window->addTabWithWrapper(a,"bb","aad","aadd",1); - window->m_settings =Settings::instance(); - window->handleReplaceRest("",""); - - EXPECT_NE(window,nullptr); - window->deleteLater(); - EXPECT_NE(a,nullptr); - a->deleteLater(); - -} -//void handleReplaceSkip(); -TEST(UT_Window_handleReplaceSkip, UT_Window_handleReplaceSkip) -{ - Window *window = new Window(); - EditWrapper * a = new EditWrapper(); - window->addTabWithWrapper(a,"aa","aad","aadd",0); - window->addTabWithWrapper(a,"bb","aad","aadd",1); - window->m_settings =Settings::instance(); - window->handleReplaceSkip("aa", ""); - - EXPECT_NE(window,nullptr); - window->deleteLater(); - EXPECT_NE(a,nullptr); - a->deleteLater(); - -} - -//void handleRemoveSearchKeyword(); -TEST(UT_Window_handleRemoveSearchKeyword, UT_Window_handleRemoveSearchKeyword) -{ - Window *window = new Window(); - EditWrapper * a = new EditWrapper(); - window->addTabWithWrapper(a,"aa","aad","aadd",0); - window->addTabWithWrapper(a,"bb","aad","aadd",1); - window->m_settings =Settings::instance(); - window->handleRemoveSearchKeyword(); - - - EXPECT_NE(window,nullptr); - window->deleteLater(); - EXPECT_NE(a,nullptr); - a->deleteLater(); - -} -//void handleUpdateSearchKeyword(QWidget *widget, const QString &file, const QString &keyword); -TEST(UT_Window_handleUpdateSearchKeyword, UT_Window_handleUpdateSearchKeyword) -{ - Window *window = new Window(); - EditWrapper * a = new EditWrapper(); - window->addTabWithWrapper(a,"aa","aad","aadd",0); - window->addTabWithWrapper(a,"bb","aad","aadd",1); - window->m_settings =Settings::instance(); - window->handleUpdateSearchKeyword(window,"aa",""); - - EXPECT_NE(window,nullptr); - window->deleteLater(); - EXPECT_NE(a,nullptr); - a->deleteLater(); - -} - - -//void addBottomWidget(QWidget *widget); -//void removeBottomWidget(); - -//void loadTheme(const QString &path); -TEST(UT_Window_loadTheme, UT_Window_loadTheme) -{ - Window *window = new Window(); - EditWrapper * a = new EditWrapper(); - window->addTabWithWrapper(a,"aa","aad","aadd",0); - window->addTabWithWrapper(a,"bb","aad","aadd",1); - window->m_settings =Settings::instance(); - window->loadTheme("window"); - - EXPECT_NE(window->m_themePath,"1"); - - EXPECT_NE(window,nullptr); - window->deleteLater(); - EXPECT_NE(a,nullptr); - a->deleteLater(); - -} - - -//void showNewEditor(EditWrapper *wrapper); -TEST(UT_Window_showNewEditor, UT_Window_showNewEditor) -{ - Window *window = new Window(); - EditWrapper * a = new EditWrapper(); - window->addTabWithWrapper(a,"aa","aad","aadd",0); - window->addTabWithWrapper(a,"bb","aad","aadd",1); - window->m_settings =Settings::instance(); - window->showNewEditor(a); - - EXPECT_NE(window,nullptr); - window->deleteLater(); - EXPECT_NE(a,nullptr); - a->deleteLater(); - -} -//void showNotify(const QString &message); -TEST(UT_Window_showNotify, UT_Window_showNotify) -{ - Window *window = new Window(); - EditWrapper * a = new EditWrapper(); - window->addTabWithWrapper(a,"aa","aad","aadd",0); - window->addTabWithWrapper(a,"bb","aad","aadd",1); - window->m_settings =Settings::instance(); - window->showNotify("ffffkkkk"); - - EXPECT_NE(window,nullptr); - window->deleteLater(); - EXPECT_NE(a,nullptr); - a->deleteLater(); - -} -//int getBlankFileIndex(); -TEST(UT_Window_getBlankFileIndex, UT_Window_getBlankFileIndex) -{ - Window *window = new Window(); - EditWrapper * a = new EditWrapper(); - window->addTabWithWrapper(a,"aa","aad","aadd",0); - window->addBlankTab(); - window->addTabWithWrapper(a,"bb","aad","aadd",1); - window->m_settings =Settings::instance(); - EXPECT_NE(window->getBlankFileIndex(),0); - - EXPECT_NE(window,nullptr); - window->deleteLater(); - EXPECT_NE(a,nullptr); - a->deleteLater(); - -} - -//DDialog *createDialog(const QString &title, const QString &content); -TEST(UT_Window_createDialog, UT_Window_createDialog) -{ - Window *window = new Window(); - EditWrapper * a = new EditWrapper(); - window->addTabWithWrapper(a,"aa","aad","aadd",0); - window->addBlankTab(); - window->addTabWithWrapper(a,"bb","aad","aadd",1); - window->m_settings =Settings::instance(); - EXPECT_NE(window->createDialog("dd","ddd"),nullptr); - - EXPECT_NE(window,nullptr); - window->deleteLater(); - EXPECT_NE(a,nullptr); - a->deleteLater(); - -} - -//void slotLoadContentTheme(DGuiApplicationHelper::ColorType themeType); -TEST(UT_Window_slotLoadContentTheme, UT_Window_slotLoadContentTheme) -{ - Window *window = new Window(); - EditWrapper * a = new EditWrapper(); - window->addTabWithWrapper(a,"aa","aad","aadd",0); - window->addBlankTab(); - window->addTabWithWrapper(a,"bb","aad","aadd",1); - window->m_settings =Settings::instance(); - window->slotLoadContentTheme(DGuiApplicationHelper::ColorType::DarkType); - - EXPECT_NE(window,nullptr); - window->deleteLater(); - EXPECT_NE(a,nullptr); - a->deleteLater(); - -} - -//void slotSettingResetTheme(const QString &path); -TEST(UT_Window_slotSettingResetTheme, UT_Window_slotSettingResetTheme) -{ - Window *window = new Window(); - EditWrapper * a = new EditWrapper(); - window->addTabWithWrapper(a,"aa","aad","aadd",0); - window->addBlankTab(); - window->addTabWithWrapper(a,"bb","aad","aadd",1); - window->m_settings =Settings::instance(); - window->slotSettingResetTheme("DGuiApplicationHelper::ColorType::DarkType"); - - EXPECT_NE(window,nullptr); - window->deleteLater(); - EXPECT_NE(a,nullptr); - a->deleteLater(); - -} - -//void slotSigThemeChanged(const QString &path); -TEST(UT_Window_slotSigThemeChanged, UT_Window_slotSigThemeChanged) -{ - Window *pWindow = new Window(); - EditWrapper *pEditWrapper = new EditWrapper(); - pWindow->addTabWithWrapper(pEditWrapper, "aa", "aad", "aadd", 0); - pWindow->addBlankTab(); - pWindow->addTabWithWrapper(pEditWrapper, "bb", "aad", "aadd", 1); - pWindow->m_settings = Settings::instance(); - DGuiApplicationHelper::instance()->setPaletteType(DGuiApplicationHelper::LightType); - pWindow->slotSigThemeChanged(DEEPIN_THEME); - pWindow->slotSigThemeChanged(DEEPIN_DARK_THEME); - - DGuiApplicationHelper::instance()->setPaletteType(DGuiApplicationHelper::DarkType); - //pWindow->slotSigThemeChanged(DEEPIN_THEME); - //pWindow->slotSigThemeChanged(DEEPIN_DARK_THEME); - - - EXPECT_NE(pWindow,nullptr); - pWindow->deleteLater(); - EXPECT_NE(pEditWrapper,nullptr); - pEditWrapper->deleteLater(); - - -} - -//void slot_saveReadingPath(); -TEST(UT_Window_slot_saveReadingPath, UT_Window_slot_saveReadingPath) -{ - Window *window = new Window(); - EditWrapper * a = new EditWrapper(); - window->addTabWithWrapper(a,"aa","aad","aadd",0); - window->addBlankTab(); - window->addTabWithWrapper(a,"bb","aad","aadd",1); - window->m_settings =Settings::instance(); - window->slot_saveReadingPath(); - - EXPECT_NE(window->m_reading_list.isEmpty(),true); - - EXPECT_NE(window,nullptr); - window->deleteLater(); - EXPECT_NE(a,nullptr); - a->deleteLater(); - -} -//void slot_beforeReplace(QString _); -TEST(UT_Window_slot_beforeReplace, UT_Window_slot_beforeReplace) -{ - Window *window = new Window(); - EditWrapper * a = new EditWrapper(); - window->addTabWithWrapper(a,"aa","aad","aadd",0); - window->addBlankTab(); - window->addTabWithWrapper(a,"bb","aad","aadd",1); - window->m_settings =Settings::instance(); - window->slot_beforeReplace("d"); - - EXPECT_NE(window,nullptr); - window->deleteLater(); - EXPECT_NE(a,nullptr); - a->deleteLater(); - -} -//void slot_setTitleFocus(); - -//private: -//void handleFocusWindowChanged(QWindow *w); -TEST(UT_Window_handleFocusWindowChanged, UT_Window_handleFocusWindowChanged) -{ - Window *window = new Window(); - EditWrapper * a = new EditWrapper(); - QWindow * q = new QWindow(); - window->addTabWithWrapper(a,"aa","aad","aadd",0); - window->addBlankTab(); - window->addTabWithWrapper(a,"bb","aad","aadd",1); - window->m_settings =Settings::instance(); - window->handleFocusWindowChanged(q); - - EXPECT_NE(window,nullptr); - window->deleteLater(); - EXPECT_NE(a,nullptr); - a->deleteLater(); - EXPECT_NE(q,nullptr); - q->deleteLater(); - -} -//void updateThemePanelGeomerty(); -TEST(UT_Window_updateThemePanelGeomerty, UT_Window_updateThemePanelGeomerty) -{ - Window *window = new Window(); - EditWrapper * a = new EditWrapper(); - QWindow * q = new QWindow(); - window->addTabWithWrapper(a,"aa","aad","aadd",0); - window->addBlankTab(); - window->addTabWithWrapper(a,"bb","aad","aadd",1); - window->m_settings =Settings::instance(); - window->updateThemePanelGeomerty(); - - EXPECT_NE(window->m_themePanel->geometry().x(),0); - - EXPECT_NE(window,nullptr); - window->deleteLater(); - EXPECT_NE(a,nullptr); - a->deleteLater(); - EXPECT_NE(q,nullptr); - q->deleteLater(); - - -} - -//void checkTabbarForReload(); -TEST(UT_Window_checkTabbarForReload, UT_Window_checkTabbarForReload) -{ - Window *window = new Window(); - EditWrapper * a = new EditWrapper(); - QWindow * q = new QWindow(); - window->addTabWithWrapper(a,"aa","aad","aadd",0); - window->addBlankTab(); - window->addTabWithWrapper(a,"bb","aad","aadd",1); - window->m_settings =Settings::instance(); - window->checkTabbarForReload(); - - EXPECT_NE(window->m_tabbar->currentName(),"aa"); - - EXPECT_NE(window,nullptr); - window->deleteLater(); - EXPECT_NE(a,nullptr); - a->deleteLater(); - EXPECT_NE(q,nullptr); - q->deleteLater(); - - -} - -//void slotSigAdjustFont(); -TEST(UT_Window_slotSigAdjustFont, UT_Window_slotSigAdjustFont) -{ - Window *window = new Window(); - EditWrapper *pEditWrapper = new EditWrapper(); - window->addTabWithWrapper(pEditWrapper, "aa", "aad", "aadd", 0); - window->addBlankTab(); - window->addTabWithWrapper(pEditWrapper,"bb", "aad", "aadd", 1); - window->slotSigAdjustFont(QString()); - - EXPECT_NE(window,nullptr); - window->deleteLater(); - EXPECT_NE(pEditWrapper,nullptr); - pEditWrapper->deleteLater(); - - -} - -//void slotSigAdjustFontSize(); -TEST(UT_Window_slotSigAdjustFontSize, UT_Window_slotSigAdjustFontSize) -{ - Window *window = new Window(); - EditWrapper *pEditWrapper = new EditWrapper(); - window->addTabWithWrapper(pEditWrapper, "aa", "aad", "aadd", 0); - window->addBlankTab(); - window->addTabWithWrapper(pEditWrapper, "bb", "aad", "aadd", 1); - window->slotSigAdjustFontSize(14); - - EXPECT_EQ(window->m_fontSize,14); - - EXPECT_NE(window,nullptr); - window->deleteLater(); - EXPECT_NE(pEditWrapper,nullptr); - pEditWrapper->deleteLater(); - - -} - -//void slotSigAdjustTabSpaceNumber(); -TEST(UT_Window_slotSigAdjustTabSpaceNumber, UT_Window_slotSigAdjustTabSpaceNumber) -{ - Window *window = new Window(); - EditWrapper *pEditWrapper = new EditWrapper(); - window->addTabWithWrapper(pEditWrapper, "aa", "aad", "aadd", 0); - window->addBlankTab(); - window->addTabWithWrapper(pEditWrapper, "bb", "aad", "aadd", 1); - - window->slotSigAdjustTabSpaceNumber(14); - - EXPECT_NE(window,nullptr); - window->deleteLater(); - EXPECT_NE(pEditWrapper,nullptr); - pEditWrapper->deleteLater(); - -} - -//void slotSigAdjustWordWrap(); -TEST(UT_Window_slotSigAdjustWordWrap, UT_Window_slotSigAdjustWordWrap) -{ - Window *window = new Window(); - EditWrapper *pEditWrapper = new EditWrapper(); - window->addTabWithWrapper(pEditWrapper, "aa", "aad", "aadd", 0); - window->addBlankTab(); - window->addTabWithWrapper(pEditWrapper, "bb", "aad", "aadd", 1); - - window->slotSigAdjustWordWrap(true); - - EXPECT_NE(window,nullptr); - window->deleteLater(); - EXPECT_NE(pEditWrapper,nullptr); - pEditWrapper->deleteLater(); - -} - -//void slotSigAdjustBookmark(); -TEST(UT_Window_slotSigAdjustBookmark, UT_Window_slotSigAdjustBookmark) -{ - Window *window = new Window(); - EditWrapper *pEditWrapper = new EditWrapper(); - window->addTabWithWrapper(pEditWrapper, "aa", "aad", "aadd", 0); - window->addBlankTab(); - window->addTabWithWrapper(pEditWrapper, "bb", "aad", "aadd", 1); - - window->slotSigAdjustBookmark(true); - - EXPECT_NE(window,nullptr); - window->deleteLater(); - EXPECT_NE(pEditWrapper,nullptr); - pEditWrapper->deleteLater(); - -} - -//void slotSigShowBlankCharacter(); -TEST(UT_Window_slotSigShowBlankCharacter, UT_Window_slotSigShowBlankCharacter) -{ - Window *window = new Window(); - EditWrapper *pEditWrapper = new EditWrapper(); - window->addTabWithWrapper(pEditWrapper, "aa", "aad", "aadd", 0); - window->addBlankTab(); - window->addTabWithWrapper(pEditWrapper, "bb", "aad", "aadd", 1); - - window->slotSigShowBlankCharacter(true); - - EXPECT_NE(window,nullptr); - window->deleteLater(); - EXPECT_NE(pEditWrapper,nullptr); - pEditWrapper->deleteLater(); - -} - -//void slotSigHightLightCurrentLine(); -TEST(UT_Window_slotSigHightLightCurrentLine, UT_Window_slotSigHightLightCurrentLine) -{ - Window *window = new Window(); - EditWrapper *pEditWrapper = new EditWrapper(); - window->addTabWithWrapper(pEditWrapper, "aa", "aad", "aadd", 0); - window->addBlankTab(); - window->addTabWithWrapper(pEditWrapper, "bb", "aad", "aadd", 1); - - window->slotSigHightLightCurrentLine(true); - - EXPECT_NE(window,nullptr); - window->deleteLater(); - EXPECT_NE(pEditWrapper,nullptr); - pEditWrapper->deleteLater(); - -} - -//void slotSigShowCodeFlodFlag(); -TEST(UT_Window_slotSigShowCodeFlodFlag, UT_Window_slotSigShowCodeFlodFlag) -{ - Window *window = new Window(); - EditWrapper *pEditWrapper = new EditWrapper(); - window->addTabWithWrapper(pEditWrapper, "aa", "aad", "aadd", 0); - window->addBlankTab(); - window->addTabWithWrapper(pEditWrapper, "bb", "aad", "aadd", 1); - - window->slotSigShowCodeFlodFlag(true); - - EXPECT_NE(window,nullptr); - window->deleteLater(); - EXPECT_NE(pEditWrapper,nullptr); - pEditWrapper->deleteLater(); - -} - -//void slotSigShowCodeFlodFlag(); -TEST(UT_Window_slotSigChangeWindowSize, UT_Window_slotSigChangeWindowSize) -{ - Window *window = new Window(); - window->slotSigChangeWindowSize(QString()); - window->slotSigChangeWindowSize(QString("fullscreen")); - window->slotSigChangeWindowSize(QString("window_maximum")); - - EXPECT_EQ(window->isVisible(),true); - - EXPECT_NE(window,nullptr); - window->deleteLater(); - -} - - - -TEST(UT_Window_printPage, UT_Window_printPage) -{ - Window *window = new Window(); - QPainter* painter = new QPainter; - QTextDocument* doc = new QTextDocument; - QRectF body,pageContBox; - Window::printPage(0,painter,doc,body,pageContBox); - - EXPECT_NE(window,nullptr); - EXPECT_NE(window,nullptr); - delete painter;painter=nullptr; - doc->deleteLater(); - -} - -TEST(UT_Window_delete_window, UT_Window_delete_window) -{ - Window* w = new Window(); - w->m_shortcutViewProcess = new QProcess; - - EXPECT_NE(w,nullptr); - w->deleteLater(); - //w->m_shortcutViewProcess will be deleted in ~Window; -} - -TEST(UT_Window_doprint, UT_Window_doprint) -{ - Window* w = new Window(); - DPrinter* p = new DPrinter; - w->m_printDoc = new QTextDocument; - w->m_pPreview = new DPrintPreviewDialog; - - editwrapper_texteditor = new TextEdit; - Stub s1;s1.set(ADDR(EditWrapper,textEditor),EditWrapper_textEditor_stub); - - QVector pages{1,2,3,4,5}; -#if (DTK_VERSION_MAJOR > 5 \ - || (DTK_VERSION_MAJOR == 5 && DTK_VERSION_MINOR > 4) \ - || (DTK_VERSION_MAJOR == 5 && DTK_VERSION_MINOR == 4 && DTK_VERSION_PATCH >= 10)) - w->doPrint(p,pages); -#endif - - EXPECT_NE(w, nullptr); - w->deleteLater(); - editwrapper_texteditor->deleteLater(); - w->m_printDoc->deleteLater(); - w->m_pPreview->deleteLater(); - delete p; - p = nullptr; -} - -TEST(UT_Window_doprint, UT_Window_doPrintWithLargeDoc) -{ - Window* w = new Window(); - DPrinter* p = new DPrinter; - w->m_pPreview = new DPrintPreviewDialog; - Window::PrintInfo info; - info.doc = new QTextDocument; - w->m_printDocList.append(info); - - editwrapper_texteditor = new TextEdit; - Stub s1;s1.set(ADDR(EditWrapper,textEditor),EditWrapper_textEditor_stub); - - QVector pages{1,2,3,4,5}; -#if (DTK_VERSION_MAJOR > 5 \ - || (DTK_VERSION_MAJOR == 5 && DTK_VERSION_MINOR > 4) \ - || (DTK_VERSION_MAJOR == 5 && DTK_VERSION_MINOR == 4 && DTK_VERSION_PATCH >= 10)) - w->doPrintWithLargeDoc(p, pages); -#endif - - EXPECT_NE(w, nullptr); - w->deleteLater(); - editwrapper_texteditor->deleteLater(); - if (w->m_printDoc) - w->m_printDoc->deleteLater(); - if (w->m_pPreview) - w->m_pPreview->deleteLater(); - delete p; - p = nullptr; -} - -void stubProcessEvents(QEventLoop::ProcessEventsFlags flags = QEventLoop::AllEvents) -{ - Q_UNUSED(flags); -} - -TEST(UT_Window_doprint, UT_Window_cloneLargeDocument) -{ - Window* w = new Window(); - EditWrapper* wra = new EditWrapper(w); - QString text = "123"; - wra->textEditor()->document()->setPlainText(text); - - // 不在ut中使用Eventloop - typedef void (*Func)(QEventLoop::ProcessEventsFlags); - Stub s1; - s1.set((Func)ADDR(QCoreApplication, processEvents), stubProcessEvents); - - // 拷贝数据 - w->cloneLargeDocument(wra); - EXPECT_FALSE(w->m_printDocList.isEmpty()); - if (!w->m_printDocList.isEmpty()) { - EXPECT_NE(w->m_printDocList.first().doc, nullptr); - } - - // 清空数据 - w->clearPrintTextDocument(); - EXPECT_TRUE(w->m_printDocList.isEmpty()); - - wra->deleteLater(); - w->deleteLater(); -} - - -TEST(UT_Window_slotClearDoubleCharaterEncode, UT_Window_slotClearDoubleCharaterEncode) -{ - Window* w = new Window(); - - Stub s1;s1.set(ADDR(Window,handleReplaceAll),Window_updateSabeAsFileNameTemp_stub); - - w->slotClearDoubleCharaterEncode(); - - EXPECT_NE(w,nullptr); - w->deleteLater(); -} - - - -TEST(UT_Window_dropEvent, UT_Window_dropEvent) -{ - Window* w = new Window(); - QMimeData* data = new QMimeData; - QList urls = {QUrl("http://")}; - data->setUrls(urls); - QDropEvent* d = new QDropEvent(QPointF(100,100), Qt::MoveAction,data ,Qt::LeftButton, Qt::ShiftModifier, QEvent::Drop); - - w->dropEvent(d); - - EXPECT_NE(w,nullptr); - w->deleteLater(); - data->deleteLater(); - delete d; d=nullptr; -} - -TEST(UT_Window_setPrintEnabled, UT_Window_setPrintEnabled) -{ - Window* w = new Window(); - w->m_menu = new DMenu; - w->setPrintEnabled(true); - - EXPECT_NE(w,nullptr); - w->deleteLater(); -} - -TEST(UT_Window_getStackedWgt, UT_Window_getStackedWgt) -{ - Window* w = new Window(); - w->getStackedWgt(); - - EXPECT_NE(w,nullptr); - w->deleteLater(); -} - - -TEST(UT_Window_asynPrint, UT_Window_asynPrint) -{ - Window* w = new Window(); - QPainter* painter = new QPainter(w); - DPrinter* printer = new DPrinter(); - w->m_printDoc = new QTextDocument; - QVector pr{1,2,3}; - - Stub stub; - stub.set(ADDR(Window,printPage),retintstub); - //bool newPage() override; - typedef bool (*fptr)(DPrinter*); - fptr A_foo = (fptr)(&DPrinter::newPage); - stub.set(A_foo,retintstub); - - w->asynPrint(*painter,printer,pr); - - EXPECT_NE(w,nullptr); - w->deleteLater(); - delete painter; - painter=nullptr; - delete printer; - printer=nullptr; - w->m_printDoc->deleteLater(); -} - -TEST(UT_Window_slot_setTitleFocus, UT_Window_slot_setTitleFocus_002) -{ - Window* w = new Window(); - EditWrapper* wra = new EditWrapper(w); - w->m_wrappers["a"] = wra; - - Stub stub; - stub.set(ADDR(Tabbar,currentPath),retstringstub); - //bool newPage() override; -// typedef bool (*fptr)(DPrinter*); -// fptr A_foo = (fptr)(&DPrinter::newPage); -// stub.set(A_foo,retintstub); - - stringvalue = "a"; - w->slot_setTitleFocus(); - - EXPECT_NE(w,nullptr); - w->deleteLater(); -} - -TEST(UT_Window_rehighlightPrintDoc, rehighlightPrintDoc_HighlightCpp_pass) -{ - Window* w = new Window; - w->addBlankTab(); - w->m_printWrapper = w->currentWrapper(); - QTextDocument *doc = new QTextDocument; - doc->setPlainText("#include ;\n" - "int main(int argc, char *argv[]) { }"); - - CSyntaxHighlighter *highlighter = new CSyntaxHighlighter(doc); - KSyntaxHighlighting::Repository repository; - highlighter->setDefinition(repository.definitionForName("C++")); - highlighter->setTheme(repository.defaultTheme(KSyntaxHighlighting::Repository::LightTheme)); - - w->rehighlightPrintDoc(doc, highlighter); - EXPECT_FALSE(doc->firstBlock().textFormats().isEmpty()); - - doc->deleteLater(); - w->deleteLater(); -} - -// ===================== Additional coverage for previously uncovered functions ===================== -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// stub for Window::doPrint / doPrintWithLargeDoc (avoid heavy printing work) -static void Window_doPrint_stub(DPrinter *, const QVector &) {} -static void Window_doPrintWithLargeDoc_stub(DPrinter *, const QVector &) {} - -// stub for Window::remberPositionSave inner notify (avoid popup) - reuse void() stub -static void Window_showNotify_stub(const QString &, bool) {} - -// Blocks DeferredDelete events for ALL objects (event filter on qApp receives every -// event). Needed because Window's constructor holds a `static DAnchors` that -// becomes a child of the first Window's FindBar; destroying it triggers a bad-free on -// static storage. Suppressing deferred deletes keeps accumulated Window deleteLaters -// from running while still letting QTimer::singleShot lambdas fire during qWait. -class UT_DeferredDeleteBlocker : public QObject -{ -public: - bool eventFilter(QObject *, QEvent *e) override - { - return e->type() == QEvent::DeferredDelete; - } -}; - -// ---------- 1. Window::keyPressEvent ---------- -TEST(UT_Window_keyPressEvent, keyPressEvent_NoMatch_FallsToElse) -{ - Window *w = new Window(); - w->addBlankTab(); - - Stub s; - s.set(ADDR(Utils, getKeyshortcut), Utils_getKeyshortcut_stub); - utils_getkeyshortcut = "AAA"; - s.set(ADDR(Utils, getKeyshortcutFromKeymap), Utils_getKeyshortcutFromKeymap_stub); - utils_getkeyshortcutfromkeymap = "ZZZ"; - - QKeyEvent e(QEvent::KeyPress, Qt::Key_A, Qt::NoModifier, "A"); - w->keyPressEvent(&e); - - EXPECT_NE(w, nullptr); - w->deleteLater(); -} - -// ---------- 2. Window::dragEnterEvent ---------- -TEST(UT_Window_dragEnterEvent, dragEnterEvent_AcceptsEvent) -{ - Window *w = new Window(); - QMimeData *mime = new QMimeData; - QDragEnterEvent e(QPoint(0, 0), Qt::CopyAction, mime, Qt::LeftButton, Qt::NoModifier); - w->dragEnterEvent(&e); - - EXPECT_TRUE(e.isAccepted()); - delete mime; - w->deleteLater(); -} - -// ---------- 3. Window::updateSizeMode ---------- -TEST(UT_Window_updateSizeMode, updateSizeMode_NoBarsVisible) -{ - Window *w = new Window(); - w->addBlankTab(); - w->updateSizeMode(); // find/replace bars not visible -> only debug output - - EXPECT_NE(w, nullptr); - w->deleteLater(); -} - -TEST(UT_Window_updateSizeMode, updateSizeMode_FindBarVisible) -{ - Window *w = new Window(); - UT_DeferredDeleteBlocker blocker; - qApp->installEventFilter(&blocker); - w->show(); - w->addBlankTab(); - w->currentWrapper()->textEditor()->setPlainText("hello world"); - - w->popupFindBar(); // show find bar - - w->updateSizeMode(); // find bar visible branch - qApp->removeEventFilter(&blocker); - - w->deleteLater(); -} - -// ---------- 4. Window::keyReleaseEvent ---------- -TEST(UT_Window_keyReleaseEvent, keyReleaseEvent_NoModifiers) -{ - Window *w = new Window(); - QKeyEvent e(QEvent::KeyRelease, Qt::Key_A, Qt::NoModifier); - w->keyReleaseEvent(&e); - - EXPECT_NE(w, nullptr); - w->deleteLater(); -} - -// ---------- 5. Window::popupPrintDialog + lambdas (#18,#19,#20) ---------- -TEST(UT_Window_popupPrintDialog, popupPrintDialog_ImplWithLambdas) -{ - Window *w = new Window(); - w->addBlankTab(); - w->currentWrapper()->textEditor()->setPlainText("12345 test content"); - - Stub s; - typedef int (*Fptr)(DDialog *); - Fptr fptr = (Fptr)(&DDialog::exec); - s.set(fptr, QDialog_exec_stub); - s.set(ADDR(Window, doPrint), Window_doPrint_stub); - s.set(ADDR(Window, doPrintWithLargeDoc), Window_doPrintWithLargeDoc_stub); - - w->popupPrintDialog(); - EXPECT_NE(w->m_pPreview, nullptr); - - // Trigger the 3 lambdas connected inside popupPrintDialog by emitting the - // dialog's signals via the meta-object system (signals are protected). - if (w->m_pPreview) { - // lambda #1: finished(int) - QMetaObject::invokeMethod(w->m_pPreview, "finished", Qt::DirectConnection, Q_ARG(int, 0)); - // lambda #2: rejected() - QMetaObject::invokeMethod(w->m_pPreview, "rejected", Qt::DirectConnection); - // lambda #3: paintRequested(DPrinter*, QVector) - DPrinter printer(QPrinter::HighResolution); - QVector pages; - pages << 1; - QMetaObject::invokeMethod(w->m_pPreview, "paintRequested", Qt::DirectConnection, - Q_ARG(DPrinter *, &printer), Q_ARG(QVector, pages)); - delete w->m_pPreview; - w->m_pPreview = nullptr; - } - - w->deleteLater(); -} - -// ---------- 6. Window::remberPositionSave ---------- -TEST(UT_Window_remberPositionSave, remberPositionSave_Impl) -{ - Window *w = new Window(); - w->addBlankTab(); - w->currentWrapper()->textEditor()->setPlainText("remember me"); - - Stub s; - s.set(ADDR(Window, showNotify), Window_showNotify_stub); - - w->remberPositionSave(); - EXPECT_FALSE(w->m_remberPositionFilePath.isEmpty()); - - w->deleteLater(); -} - -// ---------- 7. Window::getKeywordForSearch ---------- -TEST(UT_Window_getKeywordForSearch, getKeywordForSearch_ReturnsMember) -{ - Window *w = new Window(); - w->m_keywordForSearch = "search_kw"; - EXPECT_EQ(w->getKeywordForSearch().toStdString(), "search_kw"); - w->deleteLater(); -} - -// ---------- 8. Window::printPageWithMultiDoc ---------- -TEST(UT_Window_printPageWithMultiDoc, printPageWithMultiDoc_NoHighlighter) -{ - Window *w = new Window(); - - QTextDocument doc; - doc.setPlainText("line one\nline two\nline three\nline four\nline five"); - QImage img(400, 400, QImage::Format_ARGB32); - img.fill(Qt::white); - QPainter painter(&img); - - QVector infos; - Window::PrintInfo info; - info.doc = &doc; - info.highlighter = nullptr; - infos.append(info); - - QRectF body(0, 0, 400, 400); - QRectF pageBox(0, 380, 400, 20); - - w->printPageWithMultiDoc(1, &painter, infos, body, pageBox); - - painter.end(); - w->deleteLater(); -} - -// ---------- 9. Window::confirmInvalidCharSave ---------- -TEST(UT_Window_confirmInvalidCharSave, confirmInvalidCharSave_ReturnsExecResult) -{ - Window *w = new Window(); - - Stub s; - typedef int (*Fptr)(DDialog *); - Fptr fptr = (Fptr)(&DDialog::exec); - exec_ret = 2; - s.set(fptr, QDialog_exec_stub); - - int res = w->confirmInvalidCharSave("bad:name?.txt"); - EXPECT_EQ(res, 2); - - w->deleteLater(); -} - -// ---------- 10. Window::getCurrentOpenFilePath ---------- -TEST(UT_Window_getCurrentOpenFilePath, getCurrentOpenFilePath_NoWrapper) -{ - Window *w = new Window(); - // no wrapper present -> empty path - EXPECT_TRUE(w->getCurrentOpenFilePath().isEmpty()); - w->deleteLater(); -} - -TEST(UT_Window_getCurrentOpenFilePath, getCurrentOpenFilePath_DraftWrapper) -{ - Window *w = new Window(); - w->addBlankTab(); - // blank tab is a draft file -> returns Documents directory - QString p = w->getCurrentOpenFilePath(); - EXPECT_FALSE(p.isEmpty()); - w->deleteLater(); -} - -// ---------- 11. Window::getKeywordForSearchAll ---------- -TEST(UT_Window_getKeywordForSearchAll, getKeywordForSearchAll_ReturnsMember) -{ - Window *w = new Window(); - w->m_keywordForSearchAll = "search_all_kw"; - EXPECT_EQ(w->getKeywordForSearchAll().toStdString(), "search_all_kw"); - w->deleteLater(); -} - -// ---------- 12. Window::slotSwitchToReplaceBar ---------- -TEST(UT_Window_slotSwitchToReplaceBar, slotSwitchToReplaceBar_FromFindBar) -{ - Window *w = new Window(); - UT_DeferredDeleteBlocker blocker; - qApp->installEventFilter(&blocker); - w->show(); - w->addBlankTab(); - w->currentWrapper()->textEditor()->setPlainText("find me here"); - - w->popupFindBar(); // make find bar visible - - - w->slotSwitchToReplaceBar(); - qApp->removeEventFilter(&blocker); - - EXPECT_NE(w, nullptr); - w->deleteLater(); -} - -// ---------- 13. Window::slotSigSetLineNumberShow ---------- -TEST(UT_Window_slotSigSetLineNumberShow, slotSigSetLineNumberShow_Toggles) -{ - Window *w = new Window(); - w->addBlankTab(); // ensure m_wrappers has at least one wrapper - w->slotSigSetLineNumberShow(true); - w->slotSigSetLineNumberShow(false); - - EXPECT_NE(w, nullptr); - w->deleteLater(); -} - -// ---------- 14. Window::getIflytekaiassistantConfig ---------- -TEST(UT_Window_getIflytekaiassistantConfig, getIflytekaiassistantConfig_Lookup) -{ - Window *w = new Window(); - // key not present -> false - EXPECT_FALSE(w->getIflytekaiassistantConfig("non_existent_mode")); - // inject a configured entry -> true - w->m_IflytekAiassistantState["mode_x"] = true; - EXPECT_TRUE(w->getIflytekaiassistantConfig("mode_x")); - w->deleteLater(); -} - -// ---------- 15. Window::loadIflytekaiassistantConfig ---------- -TEST(UT_Window_loadIflytekaiassistantConfig, loadIflytekaiassistantConfig_NoCrash) -{ - Window *w = new Window(); - w->loadIflytekaiassistantConfig(); // config dir typically absent -> early return - EXPECT_NE(w, nullptr); - w->deleteLater(); -} - -// ---------- 16. popupFindBar lambda #1 (QTimer::singleShot) ---------- -TEST(UT_Window_popupFindBar, popupFindBar_TriggersFocusLambda) -{ - Window *w = new Window(); - UT_DeferredDeleteBlocker blocker; - qApp->installEventFilter(&blocker); - w->show(); - w->addBlankTab(); - w->currentWrapper()->textEditor()->setPlainText("12345 content"); - w->popupFindBar(); - // Fire the singleShot(10) timer's lambda directly via meta-object - for (QTimer *t : w->findChildren()) { - if (t->isSingleShot()) { - QMetaObject::invokeMethod(t, "timeout", Qt::DirectConnection); - break; - } - } - - qApp->removeEventFilter(&blocker); - - EXPECT_NE(w, nullptr); - w->deleteLater(); -} - -// ---------- 17. popupReplaceBar lambda #1 (QTimer::singleShot) ---------- -TEST(UT_Window_popupReplaceBar, popupReplaceBar_TriggersFocusLambda) -{ - Window *w = new Window(); - UT_DeferredDeleteBlocker blocker; - qApp->installEventFilter(&blocker); - w->show(); - w->addBlankTab(); - w->currentWrapper()->textEditor()->setPlainText("12345 content"); - w->popupReplaceBar(); - // Fire the singleShot(10) timer's lambda directly via meta-object - for (QTimer *t : w->findChildren()) { - if (t->isSingleShot()) { - QMetaObject::invokeMethod(t, "timeout", Qt::DirectConnection); - break; - } - } - - qApp->removeEventFilter(&blocker); - - EXPECT_NE(w, nullptr); - w->deleteLater(); -} - -// ---------- 21. addTabWithWrapper lambda #1 (textChanged -> UpdateBottomBarWordCnt) ---------- -TEST(UT_Window_addTabWithWrapper, addTabWithWrapper_TriggersTextChangedLambda) -{ - Window *w = new Window(); - EditWrapper *ew = new EditWrapper(); - w->addTabWithWrapper(ew, "fp_lambda", "tp_lambda", "tab_lambda", 0); - // Changing text on the added wrapper's editor fires the textChanged lambda - // connected inside addTabWithWrapper. - ew->textEditor()->setPlainText("trigger textChanged lambda"); - - EXPECT_NE(w, nullptr); - w->deleteLater(); - ew->deleteLater(); -} - -// ---------- 22 & 23. Window constructor lambdas (findBar/replaceBar updateSearchKeyword) ---------- -TEST(UT_Window_Window, Window_ConstructorUpdateSearchKeywordLambdas) -{ - Window *w = new Window(); - w->addBlankTab(); // handleUpdateSearchKeyword dereferences currentWrapper() - QString path = w->m_tabbar->currentPath(); - - // Constructor lambda #1: m_findBar updateSearchKeyword -> handleUpdateSearchKeyword(m_findBar,...) - QMetaObject::invokeMethod(w->m_findBar, "updateSearchKeyword", - Q_ARG(QString, path), Q_ARG(QString, "find_kw")); - // Constructor lambda #2: m_replaceBar updateSearchKeyword -> handleUpdateSearchKeyword(m_replaceBar,...) - QMetaObject::invokeMethod(w->m_replaceBar, "updateSearchKeyword", - Q_ARG(QString, path), Q_ARG(QString, "replace_kw")); - - EXPECT_NE(w, nullptr); - w->deleteLater(); -} - diff --git a/tests/src/widgets/ut_window.h b/tests/src/widgets/ut_window.h deleted file mode 100644 index cb217bce4..000000000 --- a/tests/src/widgets/ut_window.h +++ /dev/null @@ -1,27 +0,0 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef UT_Window_H -#define UT_Window_H -#include "gtest/gtest.h" -#include "../../src/editor/editwrapper.h" -#include "../../src/widgets/window.h" -#include "../../src/startmanager.h" -#include "../../src/editor/dtextedit.h" -#include "../stub.h" -#include "../../src/controls/replacebar.h" -#include -#include -#include - - -class UT_Window: public QObject, public::testing::Test -{ -public: - UT_Window(); - EditWrapper * edit; - Window * window; -}; - -#endif // UT_Window_H diff --git a/tests/src/zz_ut_exit_destructor.cpp b/tests/src/zz_ut_exit_destructor.cpp deleted file mode 100644 index 26a8f6959..000000000 --- a/tests/src/zz_ut_exit_destructor.cpp +++ /dev/null @@ -1,36 +0,0 @@ -// SPDX-FileCopyrightText: 2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -// -// 覆盖 EditorApplication::~EditorApplication() (D0/D2 析构变体). -// -// 文件名以 "zz_" 前缀使 GLOB 排序在 widgets/ 之后,确保析构测试在整个 -// 测试套件最末尾执行。delete 触发 D0→D2,虽然会销毁 qApp,但此时所有 -// 其它测试已执行完毕。 - -#include "../../src/editorapplication.h" -#include "../../src/startmanager.h" -#include "src/stub.h" -#include - -namespace exit_destructor_stub { -StartManager *startManagerInstanceStub() { return nullptr; } -} // namespace exit_destructor_stub - -using namespace exit_destructor_stub; - -// delete triggers D0 (deleting destructor) which internally calls D2 (complete destructor). -// StartManager::instance() is stubbed to nullptr so the else branch runs. -// This test intentionally runs last — deleting qApp makes subsequent QWidget usage unsafe. -TEST(UT_EditorApplication_Destructor, Destructor_Delete) -{ - int argc = 1; - char *argv[] = {"test"}; - EditorApplication *app = new EditorApplication(argc, argv); - - Stub s; - s.set(ADDR(StartManager, instance), startManagerInstanceStub); - - delete app; // triggers D0 -> D2 - SUCCEED(); -}