File: cpptest.cpp

package info (click to toggle)
gsettings-qt 1.0.0-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 280 kB
  • sloc: cpp: 591; makefile: 45; xml: 31
file content (91 lines) | stat: -rw-r--r-- 2,573 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
#include <QtTest/QtTest>

#include <QGSettings>

class TestGSettingQt: public QObject
{
    Q_OBJECT
private slots:
    void initTestCase();
    void test_deferredDelete();
    void test_get_set_reset();
    void test_keys();
    void test_changed();
private:
    QGSettings * settings;
    QPointer<QObject> dummy;
};

void TestGSettingQt::initTestCase()
{
    settings = new QGSettings("com.ubports.gsettings.Test", QByteArray(), this);
    dummy = new QObject;
    connect(settings, &QGSettings::changed, dummy.data(), &QObject::deleteLater); // delete the dummy object upon any gsettings change
}

void TestGSettingQt::test_deferredDelete()
{
    QSignalSpy spy(dummy.data(), &QObject::destroyed); // watch the dummy object get destroyed
    settings->set(QStringLiteral("testString"), "bar");

    QVERIFY(spy.wait(500)); // extend time from 1ms to 500ms for slower machines
    QVERIFY(dummy.isNull()); // verify dummy got destroyed for real
    QCOMPARE(settings->get("testString").toString(), QStringLiteral("bar")); // also verify the setting got written by reading it back

    // reset to default
    settings->reset(QStringLiteral("testString"));
}

void TestGSettingQt::test_get_set_reset()
{
    // Test default value
    QCOMPARE(settings->get("testInteger").toInt(), 42);

    // Set value
    settings->set(QStringLiteral("testInteger"), 1);
    QCOMPARE(settings->get("testInteger").toInt(), 1);

    // Reset the value
    settings->reset(QStringLiteral("testInteger"));
    QCOMPARE(settings->get("testInteger").toInt(), 42);
}

void TestGSettingQt::test_keys()
{
    auto keys = settings->keys();
    QStringList expectedKeys = {"testString", "testDouble", "testEnum",
                                "testBoolean", "testInteger",
                                "testMap", "testStringList"};
    keys.sort();
    expectedKeys.sort();

    QCOMPARE(keys, expectedKeys);
}

void TestGSettingQt::test_changed()
{
    QSignalSpy spy(settings, &QGSettings::changed);

    // Flush pending changed signals
    QVERIFY(spy.wait(1));
    spy.clear();

    settings->set(QStringLiteral("testBoolean"), true);

    // Verify change
    QVERIFY(spy.wait(1));
    QCOMPARE(spy.count(), 1);
    QCOMPARE(spy.takeFirst().at(0).toString(), QStringLiteral("testBoolean"));

    spy.clear();

    // Test signal on reset event
    settings->reset(QStringLiteral("testBoolean"));
    QVERIFY(spy.wait(1));
    QCOMPARE(spy.count(), 1);
    QCOMPARE(spy.takeFirst().at(0).toString(), QStringLiteral("testBoolean"));
}

QTEST_MAIN(TestGSettingQt)

#include "cpptest.moc"