diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 9429d080d..2156dde7b 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -112,6 +112,7 @@ set(WIDGET_TEST testcases/widgets/ut_dwindowoptionbutton.cpp testcases/widgets/ut_dwindowquitfullbutton.cpp testcases/widgets/ut_dcombobox.cpp + testcases/widgets/ut_dwatermarkwidget.cpp ) include(${PROJECT_SOURCE_DIR}/src/util/util.cmake) diff --git a/tests/data.qrc b/tests/data.qrc index 25973af34..eeefdf10d 100644 --- a/tests/data.qrc +++ b/tests/data.qrc @@ -3,5 +3,7 @@ data/titlebar-settings.json data/example-license.json data/test.png + data/watermarks/text.png + data/watermarks/image.png diff --git a/tests/data/watermarks/image.png b/tests/data/watermarks/image.png new file mode 100644 index 000000000..eaf576d87 Binary files /dev/null and b/tests/data/watermarks/image.png differ diff --git a/tests/data/watermarks/text.png b/tests/data/watermarks/text.png new file mode 100644 index 000000000..ae7967397 Binary files /dev/null and b/tests/data/watermarks/text.png differ diff --git a/tests/testcases/widgets/ut_dwatermarkwidget.cpp b/tests/testcases/widgets/ut_dwatermarkwidget.cpp new file mode 100644 index 000000000..9c70be884 --- /dev/null +++ b/tests/testcases/widgets/ut_dwatermarkwidget.cpp @@ -0,0 +1,68 @@ +// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: LGPL-3.0-or-later + +#include +#include +#include + +#include "dwatermarkwidget.h" +DWIDGET_USE_NAMESPACE +class ut_DWaterMarkWidget : public testing::Test +{ +protected: + void SetUp() override + { + root = new QLabel(); + target = new DWaterMarkWidget(root); + root->resize(600, 600); + + QImage img(":/data/test.png"); + QPixmap pixmap = QPixmap::fromImage(img.scaled(root->size())); + root->setPixmap(pixmap); + } + void TearDown() override + { + if (root) + delete root; + } + inline bool equalImage(const QImage &source) + { + QPixmap result = root->grab(); + return result.toImage() == source; + } + + DWaterMarkWidget *target = nullptr; + QLabel *root = nullptr; +}; + +TEST_F(ut_DWaterMarkWidget, paintText) +{ + WaterMarkData data = target->data(); + data.setType(WaterMarkData::Text); + data.setText("deepin water mark"); + data.setLineSpacing(200); + data.setScaleFactor(1.5); + auto font = data.font(); + font.setBold(true); + font.setPointSize(20); + data.setFont(font); + data.setColor(Qt::red); + data.setOpacity(0.5); + target->setData(data); + + EXPECT_TRUE(equalImage(QImage(":/data/watermarks/text.png"))); +} + +TEST_F(ut_DWaterMarkWidget, paintImage) +{ + WaterMarkData data = target->data(); + data.setType(WaterMarkData::Image); + QImage img(":/assets/images/uos.svg"); + data.setImage(img); + data.setLineSpacing(200); + data.setGrayScale(true); + target->setData(data); + + EXPECT_TRUE(equalImage(QImage(":/data/watermarks/image.png"))); +}