From 628021e7cf406c52764bd200a5bc8702a6a73715 Mon Sep 17 00:00:00 2001 From: xiepengfei Date: Mon, 3 Aug 2026 15:48:13 +0800 Subject: [PATCH] test: enable viable orphan tests and drop dead-code ones MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Investigation of 9 remaining orphan test files (not compiled by the test build) via code graph + build attempts. Findings: Enabled (4 new test cases, 1487 -> 1491): - widgets/ut_colorbutton.h: fix include path (../widgets/ -> ../../src/widgets/), adds ColorButtonTest - gstrecord/ut_gstrecordx.h: add -lgobject-2.0 to LIBS, adds GstRecordXTest (hardware cases already skipped via SKIP_TESTS) Deleted (7 dead test files, -629 lines): - utils/ut_toolshape.h: empty fixture with 0 TEST_F cases - dbusinterface/ut_drawinterface.h: wrong include path + depends on external deepin-draw DBus + system("killall") - widgets/ut_majtoolbar.h / widgets/ut_subtoolbar.h / ut_record_option_panel.h / utils/ut_screenutils.h / ut_process_tree_ext.h: root cause is main project builds on Qt5 while tests use Qt6; ConfigSettings was refactored value()-> getValue() but these source files retain active calls to the old API (they only "compiled" because the test build never compiled them). The corresponding source classes (MajToolBar, SubToolBar, RecordOptionPanel, ScreenUtils, ProcessTree) have zero external references in the project — legacy dead code. 对9个剩余孤儿测试通过代码图谱+编译尝试分析:启用ut_colorbutton(修 复include路径)和ut_gstrecordx(加-lgobject-2.0链接),新增4个测试 用例(1487->1491);删除7个死代码测试文件。根因是主项目用Qt5构建、 测试用Qt6,ConfigSettings重构value()->getValue()后5个源文件仍残留 旧API调用,对应类在项目中零外部引用,属历史遗留死代码。 Log: 启用有效孤儿测试并删除死代码测试 Influence: 新增4个测试用例(1491总计),删除7个无效孤儿测试文件(-629行),清理test_all_interfaces.h暂缓注释。 --- .../dbusinterface/ut_drawinterface.h | 52 ------- .../test_all_interfaces.h | 7 + .../ut_process_tree_ext.h | 89 ------------ .../ut_record_option_panel.h | 122 ---------------- .../ut_screen_shot_recorder.pro | 13 +- .../utils/ut_screenutils.h | 71 ---------- .../utils/ut_toolshape.h | 31 ---- .../widgets/ut_colorbutton.h | 4 +- .../widgets/ut_majtoolbar.h | 134 ------------------ .../widgets/ut_subtoolbar.h | 126 ---------------- 10 files changed, 19 insertions(+), 630 deletions(-) delete mode 100644 tests/ut_screen_shot_recorder/dbusinterface/ut_drawinterface.h delete mode 100644 tests/ut_screen_shot_recorder/ut_process_tree_ext.h delete mode 100644 tests/ut_screen_shot_recorder/ut_record_option_panel.h delete mode 100644 tests/ut_screen_shot_recorder/utils/ut_screenutils.h delete mode 100644 tests/ut_screen_shot_recorder/utils/ut_toolshape.h delete mode 100644 tests/ut_screen_shot_recorder/widgets/ut_majtoolbar.h delete mode 100644 tests/ut_screen_shot_recorder/widgets/ut_subtoolbar.h diff --git a/tests/ut_screen_shot_recorder/dbusinterface/ut_drawinterface.h b/tests/ut_screen_shot_recorder/dbusinterface/ut_drawinterface.h deleted file mode 100644 index e3eb1b84c..000000000 --- a/tests/ut_screen_shot_recorder/dbusinterface/ut_drawinterface.h +++ /dev/null @@ -1,52 +0,0 @@ -// SPDX-FileCopyrightText: 2022-2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#pragma once -#include -#include -#include -#include -#include -#include "../dbusinterface/drawinterface.h" - - -using namespace testing; - -class DrawInterfaceTest:public testing::Test{ - -public: - DrawInterface *m_draw; - QList list; - virtual void SetUp() override{ - std::cout << "start DrawInterfaceTest" << std::endl; - m_draw = new DrawInterface("com.deepin.Draw", "/com/deepin/Draw", QDBusConnection::sessionBus(), nullptr); - } - - virtual void TearDown() override{ - delete m_draw; - system("killall deepin-draw"); - std::cout << "end DrawInterfaceTest" << std::endl; - } -}; - -TEST_F(DrawInterfaceTest, openFiles) -{ - - QList list; - QString desktopPath = QStandardPaths::writableLocation(QStandardPaths::PicturesLocation) - + "/Wallpapers/desktop.jpg"; - qDebug() << desktopPath; - list.append(desktopPath); - m_draw->openFiles(list); - sleep(1); - -} -TEST_F(DrawInterfaceTest, openImages) -{ - QList list; - QScreen *t_primaryScreen = QGuiApplication::primaryScreen(); - QPixmap pix = t_primaryScreen->grabWindow(0); - list.append(pix.toImage()); - m_draw->openImages(list); -} diff --git a/tests/ut_screen_shot_recorder/test_all_interfaces.h b/tests/ut_screen_shot_recorder/test_all_interfaces.h index 94ec10223..0ec574af8 100644 --- a/tests/ut_screen_shot_recorder/test_all_interfaces.h +++ b/tests/ut_screen_shot_recorder/test_all_interfaces.h @@ -165,4 +165,11 @@ //#include "ut_protocols_extimg_cov2.h" // ACCESS_PRIVATE_STATIC_FUN macro can't handle QtWayland:: namespaced classes // ut_wayland_stub.h: Qt 的 QWaylandClientExtension 生成的 wrapper 方法在 manager // 未绑定真实合成器时于 Qt6Core 内部 SEGV(T3),宏守卫+wl 桩均无法绕过,已禁用。 +// --- P1: 启用孤儿测试 --- +#include "widgets/ut_colorbutton.h" +#include "gstrecord/ut_gstrecordx.h" +// 以下孤儿测试已删除(测试对应的源码类在主项目中已无任何外部引用,属历史遗留 +// 死代码,且源码自身存在 ConfigSettings::value/drawTooltipBackground 等 API 漂移): +// widgets/ut_majtoolbar.h / widgets/ut_subtoolbar.h / ut_record_option_panel.h +// utils/ut_screenutils.h / ut_process_tree_ext.h diff --git a/tests/ut_screen_shot_recorder/ut_process_tree_ext.h b/tests/ut_screen_shot_recorder/ut_process_tree_ext.h deleted file mode 100644 index 10f5b563b..000000000 --- a/tests/ut_screen_shot_recorder/ut_process_tree_ext.h +++ /dev/null @@ -1,89 +0,0 @@ -// SPDX-FileCopyrightText: 2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#pragma once -#include -#include -#include "../../src/process_tree.h" - -using namespace testing; - -// Extended ProcessTree tests covering more scenarios. -// The existing ut_process_tree.h reads real /proc data via libproc; -// these tests also use real /proc data for richer coverage. - -class ProcessTreeExtTest : public Test -{ -public: - ProcessTree *m_tree = nullptr; - void SetUp() override { m_tree = new ProcessTree; } - void TearDown() override { delete m_tree; } -}; - -// Scan an empty process map — should leave rootPid as INT_MAX -TEST_F(ProcessTreeExtTest, scanEmptyProcessMap) -{ - std::map empty; - m_tree->scanProcesses(empty); - // getAllChildPids on any PID returns empty - QList children = m_tree->getAllChildPids(getpid()); - EXPECT_TRUE(children.isEmpty()); -} - -// Scan real processes and verify we can find children of init -TEST_F(ProcessTreeExtTest, scanRealProcessesAndGetChildren) -{ - PROCTAB *proc = openproc(PROC_FILLSTAT); - static proc_t proc_info; - memset(&proc_info, 0, sizeof(proc_t)); - std::map processes; - while (readproc(proc, &proc_info) != nullptr) { - processes[proc_info.tid] = proc_info; - } - closeproc(proc); - - m_tree->scanProcesses(processes); - // Our own PID should exist in the tree - pid_t myPid = getpid(); - QList myChildren = m_tree->getAllChildPids(myPid); - // This test process has no children - EXPECT_TRUE(myChildren.isEmpty()); -} - -// Scan with just a single fake process (no real /proc) -TEST_F(ProcessTreeExtTest, scanSingleFakeProcess) -{ - std::map processes; - proc_t fake; - memset(&fake, 0, sizeof(proc_t)); - fake.tid = 100; - fake.ppid = 1; - processes[100] = fake; - - m_tree->scanProcesses(processes); - QList children = m_tree->getAllChildPids(1); - // PID 1 should have 100 as child - EXPECT_TRUE(children.contains(100)); -} - -// Destructor should clean up without crash -TEST_F(ProcessTreeExtTest, destructorCleanup) -{ - ProcessTree *tmp = new ProcessTree; - std::map processes; - proc_t fake; - memset(&fake, 0, sizeof(proc_t)); - fake.tid = 100; - fake.ppid = 1; - processes[100] = fake; - tmp->scanProcesses(processes); - EXPECT_NO_FATAL_FAILURE(delete tmp); -} - -// getAllChildPids on non-existent PID returns empty -TEST_F(ProcessTreeExtTest, getAllChildPidsNonExistentPid) -{ - QList children = m_tree->getAllChildPids(99999); - EXPECT_TRUE(children.isEmpty()); -} diff --git a/tests/ut_screen_shot_recorder/ut_record_option_panel.h b/tests/ut_screen_shot_recorder/ut_record_option_panel.h deleted file mode 100644 index 3eff2a402..000000000 --- a/tests/ut_screen_shot_recorder/ut_record_option_panel.h +++ /dev/null @@ -1,122 +0,0 @@ -// SPDX-FileCopyrightText: 2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#pragma once -#include -#include -#include -#include "stub.h" -#include "addr_pri.h" -#include "../../src/record_option_panel.h" - -using namespace testing; - -ACCESS_PRIVATE_FIELD(RecordOptionPanel, bool, saveAsGif); -ACCESS_PRIVATE_FIELD(RecordOptionPanel, bool, isPressGif); -ACCESS_PRIVATE_FIELD(RecordOptionPanel, bool, isPressVideo); - -class RecordOptionPanelTest : public Test -{ -public: - RecordOptionPanel *m_panel = nullptr; - Stub stub; - void SetUp() override - { - m_panel = new RecordOptionPanel; - } - void TearDown() override - { - delete m_panel; - m_panel = nullptr; - } -}; - -TEST_F(RecordOptionPanelTest, constructAndStaticConstants) -{ - EXPECT_NE(m_panel, nullptr); - EXPECT_EQ(RecordOptionPanel::WIDTH, 124); - EXPECT_EQ(RecordOptionPanel::HEIGHT, 36); - EXPECT_EQ(RecordOptionPanel::ICON_OFFSET_X, 14); -} - -TEST_F(RecordOptionPanelTest, initialSaveAsGifDefault) -{ - // saveAsGif is initialized from Settings; default may be true or false - bool gif = access_private_field::RecordOptionPanelsaveAsGif(*m_panel); - EXPECT_NO_FATAL_FAILURE((void)gif); -} - -TEST_F(RecordOptionPanelTest, eventFilterMouseMoveNoEffect) -{ - QMouseEvent moveEvent(QEvent::MouseMove, QPointF(50, 10), Qt::NoButton, Qt::NoButton, Qt::NoModifier); - EXPECT_NO_FATAL_FAILURE(m_panel->eventFilter(m_panel, &moveEvent)); -} - -TEST_F(RecordOptionPanelTest, eventFilterKeyPressNoEffect) -{ - QKeyEvent keyEvent(QEvent::KeyPress, Qt::Key_A, Qt::NoModifier); - EXPECT_NO_FATAL_FAILURE(m_panel->eventFilter(m_panel, &keyEvent)); -} - -TEST_F(RecordOptionPanelTest, paintEventRunsClean) -{ - m_panel->show(); - m_panel->repaint(); - EXPECT_NO_FATAL_FAILURE(m_panel->hide()); -} - -// Simulate GIF press then release in GIF area -TEST_F(RecordOptionPanelTest, eventFilterGifPressRelease) -{ - access_private_field::RecordOptionPanelsaveAsGif(*m_panel) = false; - // Press in GIF area (left half) - QMouseEvent pressEvent(QEvent::MouseButtonPress, QPointF(30, 10), - Qt::LeftButton, Qt::LeftButton, Qt::NoModifier); - EXPECT_NO_FATAL_FAILURE(m_panel->eventFilter(m_panel, &pressEvent)); - EXPECT_TRUE(access_private_field::RecordOptionPanelisPressGif(*m_panel)); - - // Release in GIF area — should set saveAsGif = true - QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPointF(30, 10), - Qt::LeftButton, Qt::LeftButton, Qt::NoModifier); - EXPECT_NO_FATAL_FAILURE(m_panel->eventFilter(m_panel, &releaseEvent)); - EXPECT_TRUE(access_private_field::RecordOptionPanelsaveAsGif(*m_panel)); -} - -// Simulate Video press then release in Video area -TEST_F(RecordOptionPanelTest, eventFilterVideoPressRelease) -{ - access_private_field::RecordOptionPanelsaveAsGif(*m_panel) = true; - // Press in Video area (right half) - QMouseEvent pressEvent(QEvent::MouseButtonPress, QPointF(90, 10), - Qt::LeftButton, Qt::LeftButton, Qt::NoModifier); - EXPECT_NO_FATAL_FAILURE(m_panel->eventFilter(m_panel, &pressEvent)); - EXPECT_TRUE(access_private_field::RecordOptionPanelisPressVideo(*m_panel)); - - // Release in Video area — should set saveAsGif = false - QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPointF(90, 10), - Qt::LeftButton, Qt::LeftButton, Qt::NoModifier); - EXPECT_NO_FATAL_FAILURE(m_panel->eventFilter(m_panel, &releaseEvent)); - EXPECT_FALSE(access_private_field::RecordOptionPanelsaveAsGif(*m_panel)); -} - -// Cross-area press/release: press GIF, release Video -TEST_F(RecordOptionPanelTest, eventFilterCrossAreaPressRelease) -{ - access_private_field::RecordOptionPanelsaveAsGif(*m_panel) = true; - // Press GIF area - QMouseEvent pressEvent(QEvent::MouseButtonPress, QPointF(30, 10), - Qt::LeftButton, Qt::LeftButton, Qt::NoModifier); - EXPECT_NO_FATAL_FAILURE(m_panel->eventFilter(m_panel, &pressEvent)); - - // Release Video area — press was GIF, so isPressGif gets reset - QMouseEvent releaseEvent(QEvent::MouseButtonRelease, QPointF(90, 10), - Qt::LeftButton, Qt::LeftButton, Qt::NoModifier); - EXPECT_NO_FATAL_FAILURE(m_panel->eventFilter(m_panel, &releaseEvent)); -} - -TEST_F(RecordOptionPanelTest, destructorRunsClean) -{ - RecordOptionPanel *tmp = new RecordOptionPanel; - EXPECT_NO_FATAL_FAILURE(delete tmp); -} diff --git a/tests/ut_screen_shot_recorder/ut_screen_shot_recorder.pro b/tests/ut_screen_shot_recorder/ut_screen_shot_recorder.pro index 1fbe44fb7..80f1c8de1 100644 --- a/tests/ut_screen_shot_recorder/ut_screen_shot_recorder.pro +++ b/tests/ut_screen_shot_recorder/ut_screen_shot_recorder.pro @@ -41,7 +41,7 @@ QT += multimediawidgets QT += concurrent openglwidgets QT += svg QT += waylandclient-private -LIBS += -lX11 -lXext -lXtst -lXfixes -lXcursor -lgtest -lopencv_small -lavcodec -lavdevice -lavfilter -lavformat -lavutil -lswscale -lswresample -lepoxy -lKWaylandClient -lgbm -lXinerama -ludev -lv4l2 -lv4lconvert -lv4l1 +LIBS += -lX11 -lXext -lXtst -lXfixes -lXcursor -lgtest -lopencv_small -lavcodec -lavdevice -lavfilter -lavformat -lavutil -lswscale -lswresample -lepoxy -lKWaylandClient -lgbm -lXinerama -ludev -lv4l2 -lv4lconvert -lv4l1 -lgobject-2.0 # libcam 静态库内部引用 udev_* / v4l2_* 符号,但本二进制没有直接引用, # 默认 --as-needed 链接会丢弃 libudev/libv4l2.so 导致运行时 undefined symbol # 段错误。强制 --no-as-needed 保留这些 NEEDED 条目。 @@ -312,7 +312,12 @@ HEADERS += test_all_interfaces.h \ ut_show_buttons_cov.h \ ut_recordertablet_cov.h \ menucontroller/ut_menucontroller_cov.h \ - dbusinterface/ut_dbusinterface_cov.h + dbusinterface/ut_dbusinterface_cov.h \ + # --- P1: 启用孤儿测试头 --- + widgets/ut_colorbutton.h \ + gstrecord/ut_gstrecordx.h \ + # --- P1: 补入对应源码头(moc)--- + ../../src/widgets/colorbutton.h SOURCES += main.cpp \ @@ -410,4 +415,6 @@ SOURCES += main.cpp \ ../../src/utils/proxyaudioport.cpp \ ../../src/utils/x_multi_screen_info.cpp \ ../../src/dbusservice/dbusscreenshot.cpp \ - ../../src/dbusservice/dbusscreenshotservice.cpp + ../../src/dbusservice/dbusscreenshotservice.cpp \ + # --- P1: 启用孤儿测试,补入对应源文件 --- + ../../src/widgets/colorbutton.cpp diff --git a/tests/ut_screen_shot_recorder/utils/ut_screenutils.h b/tests/ut_screen_shot_recorder/utils/ut_screenutils.h deleted file mode 100644 index b0bf7d022..000000000 --- a/tests/ut_screen_shot_recorder/utils/ut_screenutils.h +++ /dev/null @@ -1,71 +0,0 @@ -// SPDX-FileCopyrightText: 2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#pragma once -#include -#include -#include "../../src/utils/screenutils.h" - -using namespace testing; - -// ScreenUtils is a singleton that reads screen geometry from qApp->screens(). -// In Qt6, QDesktopWidget is removed; ScreenUtils uses qApp->screens() internally. -// In offscreen mode, qApp->screens() provides one screen. - -class ScreenUtilsTest : public Test -{ -public: - ScreenUtils *m_su = nullptr; - - void SetUp() override - { - m_su = ScreenUtils::instance(QPoint(0, 0)); - } - void TearDown() override - { - // ScreenUtils is a singleton — we don't delete it - } -}; - -TEST_F(ScreenUtilsTest, instanceNotNull) -{ - EXPECT_NE(m_su, nullptr); -} - -TEST_F(ScreenUtilsTest, instanceReturnsSameSingleton) -{ - ScreenUtils *su2 = ScreenUtils::instance(QPoint(0, 0)); - EXPECT_EQ(m_su, su2); -} - -TEST_F(ScreenUtilsTest, getScreenNum) -{ - int num = m_su->getScreenNum(); - EXPECT_GE(num, 0); -} - -TEST_F(ScreenUtilsTest, backgroundRectValid) -{ - QRect rect = m_su->backgroundRect(); - EXPECT_GE(rect.width(), 0); - EXPECT_GE(rect.height(), 0); -} - -TEST_F(ScreenUtilsTest, rootWindowIdValid) -{ - WId wid = m_su->rootWindowId(); - // May be 0 in offscreen env; just ensure no crash - EXPECT_NO_FATAL_FAILURE((void)wid); -} - -TEST_F(ScreenUtilsTest, primaryScreenNotNull) -{ - QScreen *screen = m_su->primaryScreen(); - EXPECT_NE(screen, nullptr); -} - -TEST_F(ScreenUtilsTest, destructorSafe) -{ - SUCCEED(); -} diff --git a/tests/ut_screen_shot_recorder/utils/ut_toolshape.h b/tests/ut_screen_shot_recorder/utils/ut_toolshape.h deleted file mode 100644 index 3bf91dd56..000000000 --- a/tests/ut_screen_shot_recorder/utils/ut_toolshape.h +++ /dev/null @@ -1,31 +0,0 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#pragma once -#include -#include -#include -#include -#include "../src/utils/shapesutils.h" - - - -using namespace testing; - -class ToolshapeTest:public testing::Test, public QObject{ - -public: - - int m_fontsize; - Toolshape *toolshape; - virtual void SetUp() override{ - std::cout << "start TextButtonTest" << std::endl; - toolshape = new Toolshape; - } - - virtual void TearDown() override{ - delete toolshape; - std::cout << "end TextButtonTest" << std::endl; - } -}; diff --git a/tests/ut_screen_shot_recorder/widgets/ut_colorbutton.h b/tests/ut_screen_shot_recorder/widgets/ut_colorbutton.h index b72438fba..9bf294943 100644 --- a/tests/ut_screen_shot_recorder/widgets/ut_colorbutton.h +++ b/tests/ut_screen_shot_recorder/widgets/ut_colorbutton.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2022-2026 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later @@ -7,7 +7,7 @@ #include #include #include -#include "../widgets/colorbutton.h" +#include "../../src/widgets/colorbutton.h" using namespace testing; diff --git a/tests/ut_screen_shot_recorder/widgets/ut_majtoolbar.h b/tests/ut_screen_shot_recorder/widgets/ut_majtoolbar.h deleted file mode 100644 index 3771c54bc..000000000 --- a/tests/ut_screen_shot_recorder/widgets/ut_majtoolbar.h +++ /dev/null @@ -1,134 +0,0 @@ -// SPDX-FileCopyrightText: 2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#pragma once -#include -#include -#include "stub.h" -#include "../../src/widgets/majtoolbar.h" -#include "../../src/utils/configsettings.h" - -using namespace testing; - -// MajToolBar is a DLabel-based toolbar with shape buttons. -// ConfigSettings::getValue is the correct API name. - -static QVariant ut_majtoolbar_getValue_stub(void *obj, const QString &group, const QString &key) -{ - Q_UNUSED(obj); - if (group == "arrow" && key == "is_straight") return false; - if (group == "rectangle" && key == "color_index") return 0; - if (group == "oval" && key == "color_index") return 0; - if (group == "arrow" && key == "color_index") return 0; - if (group == "line" && key == "color_index") return 0; - if (group == "text" && key == "color_index") return 0; - if (group == "common" && key == "color_index") return 0; - if (group == "common" && key == "color_option") return QVariant(); - return QVariant(); -} - -class MajToolbarTest : public Test -{ -public: - MajToolBar *m_tb = nullptr; - Stub stub; - - void SetUp() override - { - stub.set(ADDR(ConfigSettings, getValue), ut_majtoolbar_getValue_stub); - m_tb = new MajToolBar; - } - void TearDown() override - { - stub.reset(ADDR(ConfigSettings, getValue)); - delete m_tb; - } -}; - -TEST_F(MajToolbarTest, constructNotNull) -{ - EXPECT_NE(m_tb, nullptr); -} - -TEST_F(MajToolbarTest, destructorRunsClean) -{ - Stub localStub; - localStub.set(ADDR(ConfigSettings, getValue), ut_majtoolbar_getValue_stub); - MajToolBar *tmp = new MajToolBar; - EXPECT_NO_FATAL_FAILURE(delete tmp); - localStub.reset(ADDR(ConfigSettings, getValue)); -} - -TEST_F(MajToolbarTest, emitShapePressedRectangle) -{ - QSignalSpy checkedSpy(m_tb, &MajToolBar::buttonChecked); - m_tb->shapePressed("rectangle"); - EXPECT_GT(checkedSpy.count(), 0); -} - -TEST_F(MajToolbarTest, emitShapePressedOval) -{ - QSignalSpy checkedSpy(m_tb, &MajToolBar::buttonChecked); - m_tb->shapePressed("oval"); - EXPECT_GT(checkedSpy.count(), 0); -} - -TEST_F(MajToolbarTest, emitShapePressedArrow) -{ - QSignalSpy checkedSpy(m_tb, &MajToolBar::buttonChecked); - m_tb->shapePressed("arrow"); - EXPECT_NO_FATAL_FAILURE((void)checkedSpy.count()); -} - -TEST_F(MajToolbarTest, emitShapePressedLine) -{ - QSignalSpy checkedSpy(m_tb, &MajToolBar::buttonChecked); - m_tb->shapePressed("line"); - EXPECT_GT(checkedSpy.count(), 0); -} - -TEST_F(MajToolbarTest, emitShapePressedText) -{ - QSignalSpy checkedSpy(m_tb, &MajToolBar::buttonChecked); - m_tb->shapePressed("text"); - EXPECT_GT(checkedSpy.count(), 0); -} - -TEST_F(MajToolbarTest, emitShapePressedColor) -{ - QSignalSpy checkedSpy(m_tb, &MajToolBar::buttonChecked); - m_tb->shapePressed("color"); - EXPECT_GT(checkedSpy.count(), 0); -} - -TEST_F(MajToolbarTest, emitShapePressedClose) -{ - QSignalSpy closedSpy(m_tb, &MajToolBar::closed); - m_tb->shapePressed("close"); - EXPECT_GT(closedSpy.count(), 0); -} - -TEST_F(MajToolbarTest, emitSaveImage) -{ - QSignalSpy saveSpy(m_tb, &MajToolBar::saveImage); - m_tb->saveImage(); - EXPECT_EQ(saveSpy.count(), 1); -} - -TEST_F(MajToolbarTest, emitShowSaveTooltip) -{ - EXPECT_NO_FATAL_FAILURE(m_tb->showSaveTooltip("test tip")); -} - -TEST_F(MajToolbarTest, emitHideSaveTooltip) -{ - EXPECT_NO_FATAL_FAILURE(m_tb->hideSaveTooltip()); -} - -TEST_F(MajToolbarTest, emitSpecificedSavePath) -{ - QSignalSpy specSpy(m_tb, &MajToolBar::specificedSavePath); - m_tb->specificedSavePath(); - EXPECT_EQ(specSpy.count(), 1); -} diff --git a/tests/ut_screen_shot_recorder/widgets/ut_subtoolbar.h b/tests/ut_screen_shot_recorder/widgets/ut_subtoolbar.h deleted file mode 100644 index 62d0c113d..000000000 --- a/tests/ut_screen_shot_recorder/widgets/ut_subtoolbar.h +++ /dev/null @@ -1,126 +0,0 @@ -// SPDX-FileCopyrightText: 2026 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#pragma once -#include -#include -#include "stub.h" -#include "../../src/widgets/subtoolbar.h" -#include "../../src/utils/configsettings.h" - -using namespace testing; - -static QVariant ut_subtoolbar_getValue_stub(void *obj, const QString &group, const QString &key) -{ - Q_UNUSED(obj); - if (group == "rectangle" && key == "color_index") return 0; - if (group == "rectangle" && key == "line_width") return 2; - if (group == "oval" && key == "color_index") return 0; - if (group == "arrow" && key == "color_index") return 0; - if (group == "arrow" && key == "line_width") return 2; - if (group == "arrow" && key == "is_straight") return false; - if (group == "line" && key == "color_index") return 0; - if (group == "line" && key == "line_width") return 2; - if (group == "text" && key == "color_index") return 0; - if (group == "text" && key == "fontsize") return 16; - if (group == "common" && key == "color_index") return 0; - return QVariant(); -} - -class SubToolbarTest : public Test -{ -public: - SubToolBar *m_tb = nullptr; - Stub stub; - - void SetUp() override - { - stub.set(ADDR(ConfigSettings, getValue), ut_subtoolbar_getValue_stub); - m_tb = new SubToolBar; - } - void TearDown() override - { - stub.reset(ADDR(ConfigSettings, getValue)); - delete m_tb; - } -}; - -TEST_F(SubToolbarTest, constructNotNull) -{ - EXPECT_NE(m_tb, nullptr); -} - -TEST_F(SubToolbarTest, destructorRunsClean) -{ - Stub localStub; - localStub.set(ADDR(ConfigSettings, getValue), ut_subtoolbar_getValue_stub); - SubToolBar *tmp = new SubToolBar; - EXPECT_NO_FATAL_FAILURE(delete tmp); - localStub.reset(ADDR(ConfigSettings, getValue)); -} - -TEST_F(SubToolbarTest, switchContentRect) -{ - EXPECT_NO_FATAL_FAILURE(m_tb->switchContent("rectangle")); -} - -TEST_F(SubToolbarTest, switchContentArrow) -{ - EXPECT_NO_FATAL_FAILURE(m_tb->switchContent("arrow")); -} - -TEST_F(SubToolbarTest, switchContentLine) -{ - EXPECT_NO_FATAL_FAILURE(m_tb->switchContent("line")); -} - -TEST_F(SubToolbarTest, switchContentText) -{ - EXPECT_NO_FATAL_FAILURE(m_tb->switchContent("text")); -} - -TEST_F(SubToolbarTest, switchContentColor) -{ - EXPECT_NO_FATAL_FAILURE(m_tb->switchContent("color")); -} - -TEST_F(SubToolbarTest, switchContentSave) -{ - EXPECT_NO_FATAL_FAILURE(m_tb->switchContent("save")); -} - -TEST_F(SubToolbarTest, updateColor) -{ - EXPECT_NO_FATAL_FAILURE(m_tb->updateColor(QColor(255, 0, 0))); -} - -TEST_F(SubToolbarTest, setSaveQualityIndex) -{ - EXPECT_NO_FATAL_FAILURE(m_tb->setSaveQualityIndex(0)); - EXPECT_NO_FATAL_FAILURE(m_tb->setSaveQualityIndex(1)); -} - -TEST_F(SubToolbarTest, emitShapeChanged) -{ - QSignalSpy spy(m_tb, &SubToolBar::shapeChanged); - m_tb->shapeChanged(); - EXPECT_EQ(spy.count(), 1); -} - -TEST_F(SubToolbarTest, emitSaveAction) -{ - QSignalSpy spy(m_tb, &SubToolBar::saveAction); - m_tb->saveAction(); - EXPECT_EQ(spy.count(), 1); -} - -TEST_F(SubToolbarTest, emitShowSaveTip) -{ - EXPECT_NO_FATAL_FAILURE(m_tb->showSaveTip("test")); -} - -TEST_F(SubToolbarTest, emitHideSaveTip) -{ - EXPECT_NO_FATAL_FAILURE(m_tb->hideSaveTip()); -}