File: filefiltertest.cpp

package info (click to toggle)
kio 5.116.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 41,496 kB
  • sloc: cpp: 123,468; xml: 528; ansic: 466; ruby: 60; sh: 21; makefile: 13
file content (89 lines) | stat: -rw-r--r-- 4,024 bytes parent folder | download | duplicates (3)
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
/*
    This file is part of the KIO framework tests
    SPDX-FileCopyrightText: 2022 Nicolas Fella <nicolas.fella@gmx.de>

    SPDX-License-Identifier: LGPL-2.0-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/

#include "kfilefilter.h"

#include <QMimeDatabase>
#include <QTest>
#include <qtestcase.h>
#include <qvariant.h>

class KFileFilterTest : public QObject
{
    Q_OBJECT

private Q_SLOTS:
    void testFromFilterString_data()
    {
        QTest::addColumn<QString>("filterString");
        QTest::addColumn<QVariantList>("expectedFilters");

        QVariantList cppFilters = {QVariant::fromValue(KFileFilter("C++ Source Files", {"*.cpp", "*.cc", "*.C"}, {})),
                                   QVariant::fromValue(KFileFilter("Header files", {"*.h", "*.H"}, {}))};

        QMimeDatabase mdb;

        QTest::addRow("empty") << "" << QVariantList{};
        QTest::addRow("cpp") << "*.cpp|Sources (*.cpp)" << QVariantList{QVariant::fromValue(KFileFilter("Sources (*.cpp)", {"*.cpp"}, {}))};
        QTest::addRow("cpp_headers") << "*.cpp *.cc *.C|C++ Source Files\n*.h *.H|Header files" << cppFilters;
        QTest::addRow("no_label") << "*.cpp" << QVariantList{QVariant::fromValue(KFileFilter("*.cpp", {"*.cpp"}, {}))};
        QTest::addRow("escaped_slash") << "*.cue|CUE\\/BIN Files (*.cue)"
                                       << QVariantList{QVariant::fromValue(KFileFilter("CUE/BIN Files (*.cue)", {"*.cue"}, {}))};
        QTest::addRow("single_mimetype") << "text/plain"
                                         << QVariantList{QVariant::fromValue(KFileFilter(mdb.mimeTypeForName("text/plain").comment(), {}, {"text/plain"}))};

        QVariantList multipleMimeFilters = {QVariant::fromValue(KFileFilter(mdb.mimeTypeForName("image/png").comment(), {}, {"image/png"})),
                                            QVariant::fromValue(KFileFilter(mdb.mimeTypeForName("image/jpeg").comment(), {}, {"image/jpeg"}))};

        QTest::addRow("multiple_mimetypes") << "image/png image/jpeg" << multipleMimeFilters;
        QTest::addRow("mimeglob") << "audio/*" << QVariantList{QVariant::fromValue(KFileFilter(QString(), {}, {"audio/*"}))};
    }

    void testFromFilterString()
    {
        QFETCH(QString, filterString);
        QFETCH(QVariantList, expectedFilters);

        const QVector<KFileFilter> filters = KFileFilter::fromFilterString(filterString);

        QCOMPARE(filters.size(), expectedFilters.size());

        for (int i = 0; i < filters.size(); ++i) {
            KFileFilter expectedFilter = expectedFilters[i].value<KFileFilter>();
            KFileFilter filter = filters[i];

            QCOMPARE(expectedFilter, filter);
        }
    }

    void testToFilterString_data()
    {
        QTest::addColumn<QVariant>("input");
        QTest::addColumn<QString>("expectedFilterString");

        QTest::addRow("single_mime") << QVariant::fromValue(KFileFilter("", {}, {"text/plain"})) << "text/plain";
        QTest::addRow("double_mime") << QVariant::fromValue(KFileFilter("", {}, {"text/plain", "image/png"})) << "text/plain image/png";
        QTest::addRow("cpp") << QVariant::fromValue(KFileFilter("C++ source files", {"*.cpp"}, {})) << "*.cpp|C++ source files";
        QTest::addRow("cpp_with_header") << QVariant::fromValue(KFileFilter("C++ files", {"*.cpp", "*.h"}, {})) << "*.cpp *.h|C++ files";
        QTest::addRow("no_label") << QVariant::fromValue(KFileFilter("", {"*.png"}, {})) << "*.png";
        QTest::addRow("duplicate_label") << QVariant::fromValue(KFileFilter("*.cpp", {"*.cpp"}, {})) << "*.cpp";
        QTest::addRow("slash_to_escape") << QVariant::fromValue(KFileFilter("VCS/ICS calendar", {"*.ical"}, {})) << "*.ical|VCS\\/ICS calendar";
    }

    void testToFilterString()
    {
        QFETCH(QVariant, input);
        QFETCH(QString, expectedFilterString);

        QCOMPARE(input.value<KFileFilter>().toFilterString(), expectedFilterString);
    }
};
Q_DECLARE_METATYPE(KFileFilter);

QTEST_MAIN(KFileFilterTest)

#include "filefiltertest.moc"