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 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153
|
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include <QtTest/QtTest>
#include <QtCore/QFileInfo>
#include "../../../src/assistant/qhelpgenerator/qhelpprojectdata_p.h"
class tst_QHelpProjectData : public QObject
{
Q_OBJECT
private slots:
void initTestCase();
void readData();
void namespaceName();
void virtualFolder();
void customFilters();
void filterSections();
void metaData();
void rootPath();
private:
QString m_inputFile;
};
void tst_QHelpProjectData::initTestCase()
{
const QString path = QLatin1String(SRCDIR);
m_inputFile = path + QLatin1String("/data/test.qhp");
}
void tst_QHelpProjectData::readData()
{
QHelpProjectData data;
if (!data.readData(m_inputFile))
QFAIL("Cannot parse qhp file!");
}
void tst_QHelpProjectData::namespaceName()
{
QHelpProjectData data;
if (!data.readData(m_inputFile))
QFAIL("Cannot read qhp file!");
QCOMPARE(data.namespaceName(), QString("trolltech.com.1.0.0.test"));
}
void tst_QHelpProjectData::virtualFolder()
{
QHelpProjectData data;
if (!data.readData(m_inputFile))
QFAIL("Cannot read qhp file!");
QCOMPARE(data.virtualFolder(), QString("testFolder"));
}
void tst_QHelpProjectData::customFilters()
{
QHelpProjectData data;
if (!data.readData(m_inputFile))
QFAIL("Cannot read qhp file!");
const QList<QHelpDataCustomFilter> filters = data.customFilters();
QCOMPARE(filters.size(), 2);
for (const QHelpDataCustomFilter &f : filters) {
if (f.name == QLatin1String("Custom Filter 1")) {
for (const QString &id : f.filterAttributes) {
if (id != QLatin1String("test")
&& id != QLatin1String("filter1"))
QFAIL("Wrong filter attribute!");
}
} else if (f.name == QLatin1String("Custom Filter 2")) {
for (const QString &id : f.filterAttributes) {
if (id != QLatin1String("test")
&& id != QLatin1String("filter2"))
QFAIL("Wrong filter attribute!");
}
} else {
QFAIL("Unexpected filter name!");
}
}
}
void tst_QHelpProjectData::filterSections()
{
QHelpProjectData data;
if (!data.readData(m_inputFile))
QFAIL("Cannot read qhp file!");
const QList<QHelpDataFilterSection> sections = data.filterSections();
QCOMPARE(sections.size(), 2);
for (const QHelpDataFilterSection &s : sections) {
if (s.filterAttributes().contains("filter1")) {
const auto indices = s.indices();
QCOMPARE(indices.size(), 5);
for (const QHelpDataIndexItem &idx : indices) {
if (idx.name == QLatin1String("foo")) {
QCOMPARE(idx.identifier, QString("Test::foo"));
} else if (idx.name == QLatin1String("bar")) {
QCOMPARE(idx.reference, QString("test.html#bar"));
} else if (idx.name == QLatin1String("bla")) {
QCOMPARE(idx.identifier, QString("Test::bla"));
} else if (idx.name == QLatin1String("einstein")) {
QCOMPARE(idx.reference, QString("people.html#einstein"));
} else if (idx.name == QLatin1String("newton")) {
QCOMPARE(idx.identifier, QString("People::newton"));
} else {
QFAIL("Unexpected index!");
}
}
QCOMPARE(s.contents().size(), 1);
QCOMPARE(s.contents().first()->children().size(), 5);
} else if (s.filterAttributes().contains("filter2")) {
QCOMPARE(s.contents().size(), 1);
const QStringList lst = {
"cars.html",
"classic.css",
"fancy.html",
};
auto files = s.files();
std::sort(files.begin(), files.end());
QCOMPARE(files, lst);
} else {
QFAIL("Unexpected filter attribute!");
}
}
}
void tst_QHelpProjectData::metaData()
{
QHelpProjectData data;
if (!data.readData(m_inputFile))
QFAIL("Cannot read qhp file!");
QCOMPARE(data.metaData().size(), 2);
QCOMPARE(data.metaData().value("author").toString(),
QString("Digia Plc and/or its subsidiary(-ies)"));
}
void tst_QHelpProjectData::rootPath()
{
QHelpProjectData data;
if (!data.readData(m_inputFile))
QFAIL("Cannot read qhp file!");
QFileInfo fi(m_inputFile);
QCOMPARE(data.rootPath(), fi.absolutePath());
}
QTEST_MAIN(tst_QHelpProjectData)
#include "tst_qhelpprojectdata.moc"
|