File: ut_dslider.cpp

package info (click to toggle)
dtkwidget 5.7.12-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 36,540 kB
  • sloc: cpp: 63,257; ansic: 132; python: 88; sh: 42; makefile: 13
file content (135 lines) | stat: -rw-r--r-- 3,564 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
// SPDX-FileCopyrightText: 2021 - 2022 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later

#include <gtest/gtest.h>
#include <QTest>
#include <QDebug>

#include "dslider.h"
#include "private/dslider_p.h"

DWIDGET_USE_NAMESPACE

class ut_DSlider : public testing::Test
{
protected:
    void SetUp() override;
    void TearDown() override;
    QWidget *widget = nullptr;
    DSlider *dslider = nullptr;
};

void ut_DSlider::SetUp()
{
    widget = new QWidget;
    dslider = new DSlider(Qt::Horizontal, widget);
    widget->resize(300, 100);
}

void ut_DSlider::TearDown()
{
    if (widget) {
        delete widget;
        widget = nullptr;
    }
}

TEST_F(ut_DSlider, testDSliderValue)
{
    // 测试 pagestep 的设置
    dslider->resize(widget->width(), dslider->height());
    dslider->setPageStep(10);
    ASSERT_TRUE(dslider->pageStep() == 10);

    // 测试最大最小值的设置
    dslider->setValue(50);
    ASSERT_TRUE(dslider->value() == 50);

    dslider->setMaximum(90);
    dslider->setMinimum(10);
    ASSERT_TRUE(dslider->maximum() == 90);
    ASSERT_TRUE(dslider->minimum() == 10);

    dslider->setValue(95);
    ASSERT_TRUE(dslider->value() == 90);

    dslider->setValue(5);
    ASSERT_TRUE(dslider->value() == 10);
}

TEST_F(ut_DSlider, testDSliderIcon)
{
    // 测试 Icon 的设置
    const QIcon icon(QIcon::fromTheme("preferences-system"));
    const QSize iconSize(30, 30);
    dslider->setLeftIcon(icon);
    dslider->setRightIcon(icon);
    dslider->setIconSize(iconSize);
    ASSERT_TRUE(dslider->d_func()->leftIcon->iconSize() == iconSize);
    ASSERT_TRUE(dslider->d_func()->rightIcon->iconSize() == iconSize);
}

TEST_F(ut_DSlider, testDSliderSignal)
{
    dslider->setMouseWheelEnabled(true);
    ASSERT_TRUE(dslider->d_func()->mouseWheelEnabled == true);

    int v = 0;
    QObject::connect(dslider, &DSlider::valueChanged, [&v](int value){
        ASSERT_EQ(value, v);
    });

    for (int i = dslider->minimum(); i <= dslider->maximum(); ++i) {
        v = i;
        dslider->setValue(i);
    }
}

TEST_F(ut_DSlider, testDSliderTips)
{
    const QString tips("tips");
    dslider->setTipValue(tips);
    ASSERT_EQ(dslider->d_func()->label->text(), tips);
}

TEST_F(ut_DSlider, testDSliderss)
{
    QStringList leftTicks, rightTicks, aboveTicks, belowTicks;
    leftTicks  << "left tick 1"  <<  "left tick 2";
    rightTicks << "right tick 1" <<  "right tick 2";
    aboveTicks << "above tick 1" <<  "above tick 2";
    belowTicks << "below tick 1" <<  "below tick 2";

    dslider->setLeftTicks(qAsConst(leftTicks));
    dslider->setRightTicks(qAsConst(rightTicks));
    dslider->setAboveTicks(qAsConst(aboveTicks));
    dslider->setBelowTicks(qAsConst(belowTicks));

    // TODO 是否考虑预留接口以获取 leftTicks、rightTicks、aboveTicks、belowTicks
}

TEST_F(ut_DSlider, testDSliderHandle)
{
    dslider->setHandleVisible(true);
    ASSERT_TRUE(dslider->handleVisible());

    dslider->setHandleVisible(false);
    ASSERT_FALSE(dslider->handleVisible());
}

TEST_F(ut_DSlider, testDSliderPositions)
{
    QList <int> list;
    list << 0 << 25 << 50 << 75 << 100;
    dslider->setMarkPositions(list);
    // TODO 是否考虑预留接口以获取 markPositions

    bool res;
    dslider->setEnabledAcrossStyle(false);
    res = dslider->d_func()->slider->property("_d_dtk_sldier_across").toBool();
    ASSERT_FALSE(res);
    dslider->setEnabledAcrossStyle(true);
    res = dslider->d_func()->slider->property("_d_dtk_sldier_across").toBool();
    ASSERT_TRUE(res);
}