File: ut_dfloatingmessage.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 (82 lines) | stat: -rw-r--r-- 2,119 bytes parent folder | download | duplicates (2)
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
// 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 "dfloatingmessage.h"
#include "dlabel.h"
#include "qlabel.h"
#include "qtimer.h"
#include "private/dfloatingmessage_p.h"

DWIDGET_USE_NAMESPACE

// for test setMessage
class MessageLabel : public QLabel
{
public:
    QSize sizeHint() const override
    {
        return fontMetrics().size(Qt::TextSingleLine, text());
    }
};

class ut_DFloatingMessage : public testing::Test
{
protected:
    void SetUp() override;
    void TearDown() override;
    DFloatingMessage *message = nullptr;
    QWidget *widget = nullptr;
};

void ut_DFloatingMessage::SetUp()
{
    widget = new QWidget;
    widget->resize(300, 200);
    message = new DFloatingMessage(DFloatingMessage::TransientType, widget);
}

void ut_DFloatingMessage::TearDown()
{
    widget->deleteLater();
}

TEST_F(ut_DFloatingMessage, testDFloatingMessageFrontEnd)
{
    // 测试消息是否设置成功
    QString msg("Hello DTK~");
    message->setMessage(msg);
    ASSERT_TRUE(message->d_func()->labMessage->text() == msg);

    // 测试 Icon 是否正确设置
    QIcon icon(QIcon::fromTheme("preferences-system"));
    message->setIcon(icon);
    QIcon tmp(message->d_func()->iconButton->icon());
    ASSERT_TRUE(message->d_func()->iconButton->icon().data_ptr() == tmp.data_ptr());

    // 测试 widget 是否设置成功
    QWidget w;
    message->setWidget(&w);
    ASSERT_TRUE(message->d_func()->content == &w);
}

TEST_F(ut_DFloatingMessage, testDFloatingMessageBackEnd)
{
    // 测试设置的持续时间
    int duration = 3 * 1000;
    message->setDuration(duration);
    ASSERT_TRUE(message->d_func()->timer->interval() == duration);

    // 测试边距设置
    QMargins contentsMargins(1, 2, 3, 4);
    message->setContentsMargins(contentsMargins);
    ASSERT_TRUE(message->contentsMargins() == contentsMargins);

    // 测试自动填充背景
    message->setAutoFillBackground(true);
    ASSERT_TRUE(message->autoFillBackground());
}