From 215d009167073578fc811c128a994174c3f9354d Mon Sep 17 00:00:00 2001 From: YeShanShan Date: Mon, 24 Jul 2023 17:10:50 +0800 Subject: [PATCH] feat: Add ut for WaterProgressBar Add ut. --- tests/CMakeLists.txt | 1 + tests/data.qrc | 1 + tests/qml/WaterProgressBar.qml | 12 +++++ tests/ut_waterprogressbar.cpp | 83 ++++++++++++++++++++++++++++++++++ 4 files changed, 97 insertions(+) create mode 100644 tests/qml/WaterProgressBar.qml create mode 100644 tests/ut_waterprogressbar.cpp diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index ab4fa954..63dd8cfe 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -14,6 +14,7 @@ file(GLOB TEST_SOURCES ut_windowbuttongroup.cpp ut_dquickrectangle.cpp ut_dquickwindow.cpp + ut_waterprogressbar.cpp ) if (EnableDtk5) list(APPEND TEST_SOURCES diff --git a/tests/data.qrc b/tests/data.qrc index 6c2fdc55..769077ed 100644 --- a/tests/data.qrc +++ b/tests/data.qrc @@ -7,5 +7,6 @@ qml/DQuickRectangle.qml qml/DQuickWindow.qml qml/QmlGlobalObject.qml + qml/WaterProgressBar.qml diff --git a/tests/qml/WaterProgressBar.qml b/tests/qml/WaterProgressBar.qml new file mode 100644 index 00000000..54b86f40 --- /dev/null +++ b/tests/qml/WaterProgressBar.qml @@ -0,0 +1,12 @@ +// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: LGPL-3.0-or-later + +import QtQuick.Controls 2.11 +import org.deepin.dtk 1.0 as D + +D.WaterProgressBar { + width: 100; height: 100 + value: 20 + running: true +} diff --git a/tests/ut_waterprogressbar.cpp b/tests/ut_waterprogressbar.cpp new file mode 100644 index 00000000..096975b8 --- /dev/null +++ b/tests/ut_waterprogressbar.cpp @@ -0,0 +1,83 @@ +// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: LGPL-3.0-or-later + +#include + +#include "test_helper.hpp" + +#include +#include + +#include "dquickwaterprogressattribute_p.h" +DQUICK_USE_NAMESPACE + +TEST(ut_DQuickWaterProgressAttribute, properties) +{ + QQuickItem *water = new QQuickItem; + water->setSize(QSize(100, 100)); + water->setProperty("value", 10); + + DQuickWaterProgressAttribute attr; + auto attrPops = attr.pops(); + EXPECT_GE(attrPops.count(&attrPops), 3); + + attr.setWaterProgress(water); + ASSERT_EQ(attr.waterProgress(), water); + + attr.setFrontXOffset(10); + ASSERT_EQ(attr.frontXOffset(), 10); + + attr.setImageWidth(100); + ASSERT_EQ(attr.imageWidth(), 100); + + attr.setImageHeight(100); + ASSERT_EQ(attr.imageHeight(), 100); + + WaterPopAttribute *pop = attrPops.at(&attrPops, 0); + ASSERT_TRUE(pop); + EXPECT_LT(pop->sizeRatio(), 1.0); + EXPECT_LT(pop->width(), water->width()); + EXPECT_LT(pop->height(), water->height()); + + const auto popX = pop->x(); + const auto popY = pop->y(); + const auto popYOffset = pop->yOffset(); + + attr.setRunning(true); + ASSERT_EQ(attr.running(), true); + + // trigger and process `timeout` for DQuickWaterProgressAttribute's timer. + QTest::qWait(50); + + EXPECT_NE(popX, pop->x()); + EXPECT_NE(popY, pop->y()); + EXPECT_NE(popYOffset, pop->yOffset()); + + attr.setRunning(false); + ASSERT_EQ(attr.running(), false); +} + +TEST(ut_DQuickWaterProgressBar, waterProgressBar) +{ + ControlHeler<> root("qrc:/qml/WaterProgressBar.qml"); + ASSERT_TRUE(root.object); + + EXPECT_EQ(root.object->property("value"), 20); + EXPECT_EQ(root.object->property("running"), true); + + auto attr = root.object->findChild(); + ASSERT_TRUE(attr); + auto attrPops = attr->pops(); + ASSERT_GE(attrPops.count(&attrPops), 1); + + WaterPopAttribute *pop = attrPops.at(&attrPops, 0); + const auto popX = pop->x(); + + root.object->setProperty("running", false); + + // stop update + QTest::qWait(50); + + ASSERT_EQ(popX, pop->x()); +}