summaryrefslogtreecommitdiffstats
path: root/tests/qmime/tst_qmimetest.cpp
blob: fa6dcb6503f2908507d9e4af39482bffbbe7e0ce (plain)
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
#include <QtCore/QString>
#include <QFile>
#include <QtTest/QtTest>
#include <QMimeDatabase>

class QmimeTest : public QObject
{
    Q_OBJECT

public:
    QmimeTest();

private Q_SLOTS:
    void testFindByName();
    void testFindByFile();
};

QmimeTest::QmimeTest()
{
}

void QmimeTest::testFindByName()
{
    QMimeDatabase database;
    QVERIFY(database.addMimeTypes(SRCDIR"../../freedesktop.org.xml", 0));

    QFile testList(SRCDIR"testfiles/list");
    QVERIFY(testList.open(QIODevice::ReadOnly));

    while (!testList.atEnd()) {
        QString string = testList.readLine();
        string = string.trimmed();
        if (string.startsWith("#") || string.isEmpty())
            continue;

        QStringList list = string.split(" ", QString::SkipEmptyParts);
        QVERIFY(list.size() >= 2);
        bool failByFileName = false;
        if (list.size() == 3) {
            QString xxx = list.at(2);
            if (xxx.length() >= 1) {
                failByFileName = xxx.at(0) == 'x';
            }
        }
        QString file = list.at(0);
        QString mimetype = list.at(1);
        file.prepend(SRCDIR"testfiles/");

//        qDebug() << database.findByName(file).type() << database.findByType(mimetype).type() << failByFileName;
        if (failByFileName) {
            QEXPECT_FAIL("", "Should fail", Continue);
            QCOMPARE(database.findByName(file).type(), database.findByType(mimetype).type());
        } else
            QCOMPARE(database.findByName(file).type(), database.findByType(mimetype).type());

    }
}

void QmimeTest::testFindByFile()
{
    QMimeDatabase database;
    QVERIFY(database.addMimeTypes(SRCDIR"../../freedesktop.org.xml", 0));

    QFile testList(SRCDIR"testfiles/list");
    QVERIFY(testList.open(QIODevice::ReadOnly));

    while (!testList.atEnd()) {
        QString string = testList.readLine();
        string = string.trimmed();
        if (string.startsWith("#") || string.isEmpty())
            continue;

        QStringList list = string.split(" ", QString::SkipEmptyParts);
        QVERIFY(list.size() >= 2);
        bool failByFileData = false;
        if (list.size() == 3) {
            QString xxx = list.at(2);
            if (xxx.length() == 3) {
                failByFileData = xxx.at(2) == 'x';
            }
        }
        QString file = list.at(0);
        QString mimetype = list.at(1);
        file.prepend(SRCDIR"testfiles/");

        qDebug() << file << database.findByFile(QFileInfo(file)).type() << database.findByType(mimetype).type();

        if (failByFileData) {
            QEXPECT_FAIL("", "Should fail", Continue);
            QCOMPARE(database.findByFile(QFileInfo(file)).type(), database.findByType(mimetype).type());
        } else
            QCOMPARE(database.findByFile(QFileInfo(file)).type(), database.findByType(mimetype).type());

    }
}

QTEST_APPLESS_MAIN(QmimeTest)

#include "tst_qmimetest.moc"