File indexing completed on 2023-12-03 10:46:23

0001 /* GCompris - DownloadManagerTest.cpp
0002  *
0003  * SPDX-FileCopyrightText: 2018 Alex Kovrigin <a.kovrigin0@gmail.com>
0004  * GCompris  (C) 2018 GCompris Developers <gcompris-devel@kde.org>
0005  *
0006  * Authors:
0007  *   Alex Kovrigin <a.kovrigin0@gmail.com>
0008  *
0009  *   SPDX-License-Identifier: GPL-3.0-or-later
0010  */
0011 
0012 #include <QObject>
0013 #include <QTest>
0014 #include <QString>
0015 
0016 #include "src/core/DownloadManager.h"
0017 #include "src/core/ApplicationInfo.h"
0018 #include "ApplicationSettingsMock.h"
0019 /**
0020  * @brief The DownloadManagerTest class Unit tests class for DownloadManager testing
0021  * @sa DownloadManager
0022  */
0023 class DownloadManagerTest : public QObject
0024 {
0025     Q_OBJECT
0026 
0027 private Q_SLOTS:
0028     /**
0029      * @brief initTestCase Case for basic functionality of DownloadManager
0030      */
0031     void initTestCase()
0032     {
0033         ApplicationSettingsMock::getInstance()->setIsAutomaticDownloadsEnabled(false);
0034         downloadManager = DownloadManager::getInstance();
0035     }
0036 
0037     void test_getVoicesResourceForLocale_data()
0038     {
0039         QTest::addColumn<QString>("locale");
0040         QTest::addColumn<QString>("language");
0041 
0042         QTest::newRow("en_US") << "en_US" << "en_US";
0043         QTest::newRow("en_UK") << "en_UK" << "en";
0044         QTest::newRow("ru_RU") << "ru_RU" << "ru";
0045         QTest::newRow("de_DE") << "de_DE" << "de";
0046         QTest::newRow("fr_FR") << "fr_FR" << "fr";
0047     }
0048     void test_getVoicesResourceForLocale()
0049     {
0050         QFETCH(QString, locale);
0051         QFETCH(QString, language);
0052 
0053         QCOMPARE(downloadManager->getVoicesResourceForLocale(locale),
0054                  QString("data2/voices-%1/voices-%2.rcc").arg(COMPRESSED_AUDIO, language));
0055     }
0056 
0057     void test_haveLocalResource_data()
0058     {
0059         QTest::addColumn<QString>("resource");
0060         QTest::addColumn<bool>("expected_success");
0061 
0062         QTest::newRow("invalid.invalid") << "invalid.invalid" << false;
0063         QTest::newRow("no.no") << "no.no" << false;
0064         QTest::newRow("money.rcc") << "money.rcc" << true;
0065         QTest::newRow("penalty.rcc") << "penalty.rcc" << true;
0066     }
0067     void test_haveLocalResource()
0068     {
0069         QFETCH(QString, resource);
0070         QFETCH(bool, expected_success);
0071 
0072         QVERIFY(expected_success == downloadManager->haveLocalResource(resource));
0073     }
0074 
0075     void test_downloadResource_data()
0076     {
0077         QTest::addColumn<QString>("resource");
0078 
0079         QTest::newRow("invalid.blabla") << "invalid.blabla";
0080         QTest::newRow("algorithm.rcc") << "algorithm.rcc";
0081     }
0082     void test_downloadResource()
0083     {
0084         QFETCH(QString, resource);
0085 
0086         QVERIFY(downloadManager->downloadResource(resource));
0087         QVERIFY(!downloadManager->downloadResource(resource));
0088         downloadManager->abortDownloads();
0089     }
0090 
0091     void test_updateResource_data()
0092     {
0093         QTest::addColumn<QString>("resource");
0094         QTest::addColumn<bool>("expected_success");
0095 
0096         QTest::newRow("invalid.haha") << "invalid.haha" << false;
0097         QTest::newRow("money.rcc") << "money.rcc" << true;
0098     }
0099     void test_updateResource()
0100     {
0101         QFETCH(QString, resource);
0102         QFETCH(bool, expected_success);
0103 
0104         QVERIFY(expected_success == downloadManager->updateResource(resource));
0105     }
0106 
0107     void test_downloadIsRunning_data()
0108     {
0109         QTest::addColumn<QString>("resource");
0110 
0111         QTest::newRow("colors.rcc") << "colors.rcc";
0112     }
0113     void test_downloadIsRunning()
0114     {
0115         QFETCH(QString, resource);
0116 
0117         downloadManager->abortDownloads();
0118         QVERIFY(!downloadManager->downloadIsRunning());
0119         QVERIFY(downloadManager->downloadResource(resource));
0120         QVERIFY(downloadManager->downloadIsRunning());
0121         downloadManager->abortDownloads();
0122     }
0123 
0124     void test_registerResource_data()
0125     {
0126         QTest::addColumn<QString>("resource");
0127         QTest::addColumn<bool>("expected_success");
0128 
0129         QTest::newRow("invalid.rcc") << "invalid.rcc" << false;
0130         QTest::newRow("money.rcc") << "money.rcc" << true;
0131     }
0132     void test_registerResource()
0133     {
0134         QFETCH(QString, resource);
0135         QFETCH(bool, expected_success);
0136 
0137         QVERIFY(expected_success == downloadManager->registerResource(resource));
0138     }
0139 
0140     void test_isDataRegistered_data()
0141     {
0142         QTest::addColumn<QString>("resource");
0143         QTest::addColumn<QString>("register_mode");
0144 
0145         QTest::newRow("invalid.rcc") << "invalid.rcc" << "invalid";
0146         QTest::newRow("mosaic.rcc") << "mosaic.rcc" << "not_registered";
0147     }
0148     void test_isDataRegistered()
0149     {
0150         QFETCH(QString, resource);
0151         QFETCH(QString, register_mode);
0152 
0153         if(register_mode == "not_registered") {
0154             QVERIFY(!downloadManager->isDataRegistered(resource));
0155         }
0156         else if(register_mode == "invalid") {
0157             QVERIFY(!downloadManager->registerResource(resource));
0158             QVERIFY(!downloadManager->isDataRegistered(resource));
0159         }
0160         else {
0161             QVERIFY(false);
0162         }
0163     }
0164     
0165 private:
0166     /**
0167      * @brief downloadManager The DownloadManager object, that is the test downloadManager
0168      */
0169     DownloadManager *downloadManager;
0170 };
0171 
0172 QTEST_MAIN(DownloadManagerTest);
0173 #include "DownloadManagerTest.moc"