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")));
+}