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()); -}