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
|
// Copyright (C) 2017 Lorenz Haas
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include <QtCore/QHash>
#include <QtCore/QList>
#include <QtCore/QMap>
#include <QtMqtt/QMqttTopicName>
#include <QtTest/QtTest>
class Tst_QMqttTopicName : public QObject
{
Q_OBJECT
private Q_SLOTS:
void checkValidity();
void checkLevelCount();
void checkLevels_data();
void checkLevels();
void usableWithQList();
void usableWithQMap();
void usableWithQHash();
};
void Tst_QMqttTopicName::checkValidity()
{
QVERIFY(QMqttTopicName("a").isValid());
QVERIFY(QMqttTopicName("/").isValid());
QVERIFY(QMqttTopicName("a b").isValid());
QVERIFY(!QMqttTopicName("").isValid());
QVERIFY(!QMqttTopicName("/a/#").isValid());
QVERIFY(!QMqttTopicName("/+/a").isValid());
QVERIFY(!QMqttTopicName(QString(3, QChar(QChar::Null))).isValid());
}
void Tst_QMqttTopicName::checkLevelCount()
{
QCOMPARE(QMqttTopicName("a").levelCount(), 1);
QCOMPARE(QMqttTopicName("/").levelCount(), 2);
QCOMPARE(QMqttTopicName("/a").levelCount(), 2);
QCOMPARE(QMqttTopicName("a/").levelCount(), 2);
QCOMPARE(QMqttTopicName("a/b").levelCount(), 2);
QCOMPARE(QMqttTopicName("a/b/").levelCount(), 3);
}
void Tst_QMqttTopicName::checkLevels_data()
{
QTest::addColumn<QMqttTopicName>("name");
QTest::addColumn<QStringList>("levels");
QTest::newRow("1") << QMqttTopicName("a") << QStringList{"a"};
QTest::newRow("2") << QMqttTopicName("/") << QStringList{"", ""};
QTest::newRow("3") << QMqttTopicName("//") << QStringList{"", "", ""};
QTest::newRow("4") << QMqttTopicName("a/") << QStringList{"a", ""};
QTest::newRow("5") << QMqttTopicName("/a") << QStringList{"", "a"};
QTest::newRow("6") << QMqttTopicName("a/b") << QStringList{"a", "b"};
QTest::newRow("7") << QMqttTopicName("a/b/") << QStringList{"a", "b", ""};
QTest::newRow("8") << QMqttTopicName("/a/b") << QStringList{"", "a", "b"};
}
void Tst_QMqttTopicName::checkLevels()
{
QFETCH(QMqttTopicName, name);
QFETCH(QStringList, levels);
QCOMPARE(name.levels(), levels);
}
void Tst_QMqttTopicName::usableWithQList()
{
const QMqttTopicName topic{"a/b"};
QList<QMqttTopicName> names;
names.append(topic);
QCOMPARE(topic, names.constFirst());
}
void Tst_QMqttTopicName::usableWithQMap()
{
const QMqttTopicName topic{"a/b"};
QMap<QMqttTopicName, int> names;
names.insert(topic, 42);
QCOMPARE(names[topic], 42);
}
void Tst_QMqttTopicName::usableWithQHash()
{
const QMqttTopicName topic{"a/b"};
QHash<QMqttTopicName, int> names;
names.insert(topic, 42);
QCOMPARE(names[topic], 42);
}
QTEST_MAIN(Tst_QMqttTopicName)
#include "tst_qmqtttopicname.moc"
|