File indexing completed on 2024-05-05 04:41:09

0001 /*
0002     SPDX-FileCopyrightText: 2023 Stefan BrĂ¼ns <stefan.bruens@rwth-aachen.de>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "filemetadatamergedatatest.h"
0008 #include "filemetadatautil_p.h"
0009 
0010 #include <QTest>
0011 
0012 #include <tuple>
0013 
0014 QTEST_MAIN(FileMetadataMergeDataTest)
0015 
0016 void FileMetadataMergeDataTest::testMergeData()
0017 {
0018     QFETCH(QList<QVariantMap>, filesData);
0019     QFETCH(QVariantMap, expected);
0020 
0021     QVariantMap data;
0022 
0023     Baloo::Private::mergeCommonData(data, filesData);
0024 
0025     QCOMPARE(data.keys(), expected.keys());
0026     QCOMPARE(data, expected);
0027 }
0028 
0029 void FileMetadataMergeDataTest::testMergeData_data()
0030 {
0031     QTest::addColumn<QList<QVariantMap>>("filesData");
0032     QTest::addColumn<QVariantMap>("expected");
0033 
0034     // Wrapper to allow initialization without explicit types
0035     auto addRow = [](const char* name, const QList<QVariantMap>& data, const QVariantMap& result) {
0036         QTest::addRow("%s", name) << data << result;
0037     };
0038 
0039     auto sDuration = QStringLiteral("duration");
0040     auto sCCount = QStringLiteral("characterCount");
0041     auto sWCount = QStringLiteral("wordCount");
0042     auto sLCount = QStringLiteral("lineCount");
0043 
0044     auto sWidth = QStringLiteral("width");
0045     auto sHeight = QStringLiteral("height");
0046 
0047     // Trivial
0048     addRow("nodata", {{}}, {});
0049 
0050     // Various check for totalizing props like duration, character count
0051     addRow("totalizing", { {{sDuration, 100}} }, {{sDuration, 100}} );
0052 
0053     addRow("totalizing media", { {{sDuration, 100}},   // file1
0054                                  {{sDuration, 200}} }, // file2
0055            {{sDuration, 300}} );  // sum
0056 
0057     addRow("totalizing mixed", { {{sDuration, 100}},   // file1
0058                                  {{sDuration, 200}},   // file2
0059                                  {} },                 // file3 without duration
0060            {} );
0061 
0062 
0063     addRow("totalizing text allcommon", { {{sCCount, 100}, {sWCount, 20}},    // file1
0064                                           {{sCCount, 200}, {sWCount, 30}} },  // file2
0065            {{sCCount, 300}, {sWCount, 50}} );
0066     addRow("totalizing text only chars", { {{sCCount, 100}, {sWCount, 20}, {sLCount, 5}},    // file1
0067                                            {{sCCount, 200},                {sLCount, 7}},    // file2
0068                                            {{sCCount, 300}, {sWCount, 30}}               },  // file3
0069            {{sCCount, 600}} );
0070 
0071     // Various check props requiring same values
0072     addRow("same size", { {{sWidth, 100}, {sHeight, 60}},    // file1
0073                           {{sWidth, 100}, {sHeight, 60}},    // file2
0074                           {{sWidth, 100}, {sHeight, 60}} },  // file3
0075            {{sWidth, 100}, {sHeight, 60}} );
0076 
0077     addRow("same width", { {{sWidth, 100}, {sHeight, 10}},    // file1
0078                            {{sWidth, 100}, {sHeight, 10}},    // file2
0079                            {{sWidth, 100}, {sHeight,  1}} },  // file3
0080            {{sWidth, 100}} );
0081 }
0082 
0083 #include "moc_filemetadatamergedatatest.cpp"