diff --git a/autotests/CMakeLists.txt b/autotests/CMakeLists.txt --- a/autotests/CMakeLists.txt +++ b/autotests/CMakeLists.txt @@ -186,3 +186,12 @@ target_include_directories(elisaqmltests PRIVATE ${CMAKE_SOURCE_DIR}/src) endif() + +set(filescannerTest_SOURCES + filescannertest.cpp +) + +ecm_add_test(${filescannerTest_SOURCES} + TEST_NAME "filescannerTest" + LINK_LIBRARIES Qt5::Test elisaLib +) diff --git a/autotests/data/cover_art/artist1/album1/cover.jpg b/autotests/data/cover_art/artist1/album1/cover.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc$@ + * + * This program is free software: you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ + +#include "musicaudiotrack.h" +#include "filescanner.h" +#include "config-upnp-qt.h" + +#include +#include +#include +#include +#include + +#include + +#include + +class FileScannerTest: public QObject +{ + Q_OBJECT + +public: + + QString createTrackUrl(QString subpath) { + return QStringLiteral(LOCAL_FILE_TESTS_SAMPLE_FILES_PATH) + QStringLiteral("/cover_art") + subpath; + } + + QList mTestTracksForDirectory = { + createTrackUrl(QStringLiteral("/artist1/album1/not_existing.ogg")), + createTrackUrl(QStringLiteral("/artist1/album2/not_existing.ogg")), + createTrackUrl(QStringLiteral("/artist1/album3/not_existing.ogg")), + createTrackUrl(QStringLiteral("/artist2/album1/not_existing.ogg")), + createTrackUrl(QStringLiteral("/artist2/album2/not_existing.ogg")), + createTrackUrl(QStringLiteral("/artist2/album3/not_existing.ogg")), + createTrackUrl(QStringLiteral("/artist3/album1/not_existing.ogg")), + createTrackUrl(QStringLiteral("/artist3/album2/not_existing.ogg")), + createTrackUrl(QStringLiteral("/artist3/album3/not_existing.ogg")), + }; + + QList mTestTracksForMetaData = { + createTrackUrl(QStringLiteral("/artist4/test.ogg")), + createTrackUrl(QStringLiteral("/artist4/test.flac")), + createTrackUrl(QStringLiteral("/artist4/test.mp3")), + }; + +private Q_SLOTS: + + void initTestCase() + { + + } + + void testFindCoverInDirectory() + { + FileScanner fileScanner; + QVERIFY(!fileScanner.searchForCoverFile(mTestTracksForDirectory.at(0)).isEmpty()); + QVERIFY(!fileScanner.searchForCoverFile(mTestTracksForDirectory.at(1)).isEmpty()); + QVERIFY(!fileScanner.searchForCoverFile(mTestTracksForDirectory.at(2)).isEmpty()); + QVERIFY(!fileScanner.searchForCoverFile(mTestTracksForDirectory.at(3)).isEmpty()); + QVERIFY(!fileScanner.searchForCoverFile(mTestTracksForDirectory.at(4)).isEmpty()); + QVERIFY(!fileScanner.searchForCoverFile(mTestTracksForDirectory.at(5)).isEmpty()); + QVERIFY(!fileScanner.searchForCoverFile(mTestTracksForDirectory.at(6)).isEmpty()); + QVERIFY(!fileScanner.searchForCoverFile(mTestTracksForDirectory.at(7)).isEmpty()); + QVERIFY(!fileScanner.searchForCoverFile(mTestTracksForDirectory.at(8)).isEmpty()); + } + + void loadCoverFromMetaData() + { + FileScanner fileScanner; + QVERIFY(fileScanner.checkEmbeddedCoverImage(mTestTracksForMetaData.at(0))); + QVERIFY(fileScanner.checkEmbeddedCoverImage(mTestTracksForMetaData.at(1))); + QVERIFY(fileScanner.checkEmbeddedCoverImage(mTestTracksForMetaData.at(2))); + } + + void benchmarkCoverInDirectory() + { + FileScanner fileScanner; + QBENCHMARK { + fileScanner.searchForCoverFile(mTestTracksForDirectory.at(0)); + fileScanner.searchForCoverFile(mTestTracksForDirectory.at(1)); + fileScanner.searchForCoverFile(mTestTracksForDirectory.at(2)); + fileScanner.searchForCoverFile(mTestTracksForDirectory.at(3)); + fileScanner.searchForCoverFile(mTestTracksForDirectory.at(4)); + fileScanner.searchForCoverFile(mTestTracksForDirectory.at(5)); + fileScanner.searchForCoverFile(mTestTracksForDirectory.at(6)); + fileScanner.searchForCoverFile(mTestTracksForDirectory.at(7)); + fileScanner.searchForCoverFile(mTestTracksForDirectory.at(8)); + } + } + void benchmarkCoverFromMetadata() + { + FileScanner fileScanner; + QBENCHMARK { + fileScanner.checkEmbeddedCoverImage(mTestTracksForMetaData.at(0)); + fileScanner.checkEmbeddedCoverImage(mTestTracksForMetaData.at(1)); + fileScanner.checkEmbeddedCoverImage(mTestTracksForMetaData.at(2)); + } + } + +}; + +QTEST_GUILESS_MAIN(FileScannerTest) + + +#include "filescannertest.moc"