File: ut_dsettingswidgetfactory.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 (98 lines) | stat: -rw-r--r-- 3,092 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
// SPDX-FileCopyrightText: 2021 - 2022 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later

#include <gtest/gtest.h>
#include <DSettingsOption>
#include <QJsonObject>
#include <QWidget>

#include "dsettingswidgetfactory.h"
DWIDGET_USE_NAMESPACE
class ut_DSettingsWidgetFactory : public testing::Test
{
protected:
    void SetUp() override
    {
        target = new DSettingsWidgetFactory();
        target->registerWidget("registerWidget", std::bind(&ut_DSettingsWidgetFactory::widgetCreateHandler, this, std::placeholders::_1));
        QJsonObject opt;
        opt["key"] = "register";
        opt["type"] = "registerWidget";
        registerOption = DTK_CORE_NAMESPACE::DSettingsOption::fromJson("register", opt);
    }
    void TearDown() override
    {
        if (target) {
            delete target;
            target = nullptr;
        }
        if (registerOption) {
            registerOption->deleteLater();
        }
    }
    DSettingsWidgetFactory *target = nullptr;
    QWidget *widgetCreateHandler(QObject *)
    {
        createdWidget = new QWidget();
        return createdWidget;
    }
    QWidget *createdWidget = nullptr;
    DTK_CORE_NAMESPACE::DSettingsOption *registerOption = nullptr;

};

TEST_F(ut_DSettingsWidgetFactory, createStandardItem)
{
    QWidget *rightWidget = new QWidget();
    auto result = target->createStandardItem(QByteArray(), registerOption, rightWidget);
    ASSERT_EQ(result.first, nullptr);
    ASSERT_EQ(result.second, rightWidget);
};

TEST_F(ut_DSettingsWidgetFactory, createWidget)
{
    auto widget = target->createWidget(registerOption);
    ASSERT_EQ(widget, createdWidget);
};

TEST_F(ut_DSettingsWidgetFactory, createWidget2)
{
    QByteArray translateContext("translateContext");
    target->createWidget(translateContext, registerOption);
    ASSERT_EQ(registerOption->property("_d_DSettingsWidgetFactory_translateContext").toByteArray(), translateContext);
};

TEST_F(ut_DSettingsWidgetFactory, registerWidget)
{
    QWidget *parent = new QWidget();
    auto widgetCreateHandler = [parent](QObject *){
        return new QWidget(parent);
    };
    target->registerWidget("registerWidget2", widgetCreateHandler);
    QJsonObject opt;
    opt["key"] = "register2";
    opt["type"] = "registerWidget2";
    auto option = DTK_CORE_NAMESPACE::DSettingsOption::fromJson("register", opt);;
    auto result = target->createWidget(option);

    ASSERT_EQ(result->parent(), parent);
};

TEST_F(ut_DSettingsWidgetFactory, registerWidget2)
{
    QWidget *parent = new QWidget();
    auto itemCreateHandler = [parent](QObject *){
        return QPair<QWidget*, QWidget*>(new QWidget(parent), new QWidget(parent));
    };
    target->registerWidget("registerWidget2", itemCreateHandler);

    QJsonObject opt;
    opt["key"] = "register2";
    opt["type"] = "registerWidget2";
    auto option = DTK_CORE_NAMESPACE::DSettingsOption::fromJson("register", opt);
    auto result = target->createItem(option);
    ASSERT_EQ(result.first->parent(), parent);
    ASSERT_EQ(result.second->parent(), parent);

};