File indexing completed on 2024-12-08 09:27:01
0001 /* GCompris - ActivityInfoTest.cpp 0002 * 0003 * SPDX-FileCopyrightText: 2018 Himanshu Vishwakarma <himvish997@gmail.com> 0004 * 0005 * Authors: 0006 * Himanshu Vishwakarma <himvish997@gmail.com> 0007 * 0008 * SPDX-License-Identifier: GPL-3.0-or-later 0009 */ 0010 0011 #include <QTest> 0012 #include <QObject> 0013 #include <QSignalSpy> 0014 0015 #include "ApplicationSettingsMock.h" 0016 #include "src/core/ActivityInfo.h" 0017 0018 #define ACTIVITY_INFO_TEST_ATTRIBUTE(attributeName, accessorName, attributeType) \ 0019 { \ 0020 QFETCH(attributeType, attributeName); \ 0021 QSignalSpy spy(&activityinfo, &ActivityInfo::attributeName ## Changed); \ 0022 QVERIFY(spy.isValid()); \ 0023 QVERIFY(spy.count() == 0); \ 0024 activityinfo.set ## accessorName(attributeName); \ 0025 QVERIFY(spy.count() == 1); \ 0026 QCOMPARE(activityinfo.attributeName(), attributeName); \ 0027 } 0028 0029 class CoreActivityInfoTest : public QObject 0030 { 0031 Q_OBJECT 0032 private Q_SLOTS: 0033 void ActivityInfoTest(); 0034 void ActivityInfoTest_data(); 0035 void levelsTest(); 0036 }; 0037 0038 void CoreActivityInfoTest::ActivityInfoTest_data() 0039 { 0040 QTest::addColumn<QString>("name"); 0041 QTest::addColumn<QString>("section"); 0042 QTest::addColumn<quint32>("difficulty"); 0043 QTest::addColumn<quint32>("minimalDifficulty"); 0044 QTest::addColumn<quint32>("maximalDifficulty"); 0045 QTest::addColumn<QString>("icon"); 0046 QTest::addColumn<QString>("author"); 0047 QTest::addColumn<QString>("title"); 0048 QTest::addColumn<QString>("description"); 0049 QTest::addColumn<QString>("goal"); 0050 QTest::addColumn<QString>("prerequisite"); 0051 QTest::addColumn<QString>("manual"); 0052 QTest::addColumn<QString>("credit"); 0053 QTest::addColumn<bool>("favorite"); 0054 QTest::addColumn<bool>("enabled"); 0055 QTest::addColumn<int>("createdInVersion"); 0056 0057 QTest::newRow("ActivityInfo") << "Name" << "section" << (quint32)3 << (quint32)2 << (quint32)4 << "icon" << "author" << "title" << "description" << "goal" << "prerequisite" << "manual" << "credit" << false << false << 2; 0058 QTest::newRow("UnknownInfo") << "Unknown" << "Unknown" << (quint32)5 << (quint32)1 << (quint32)6 << "Unknown" << "Unknown" << "Unknown" << "Unknown" << "Unknown" << "Unknown" << "Unknown" << "Unknown" << true << true << 10; 0059 QTest::newRow("Empty") << "" << "" << (quint32)0 << (quint32)1 << (quint32)2 << "" << "" << "" << "" << "" << "" << "" << "" << true << true << 0; 0060 } 0061 0062 void CoreActivityInfoTest::ActivityInfoTest() 0063 { 0064 ActivityInfo activityinfo; 0065 0066 // called here to set the static instance object to the mock one 0067 ApplicationSettingsMock::getInstance(); 0068 0069 QVERIFY(activityinfo.name().isEmpty()); 0070 QVERIFY(activityinfo.section().isEmpty()); 0071 QVERIFY(activityinfo.icon().isEmpty()); 0072 QVERIFY(activityinfo.author().isEmpty()); 0073 QVERIFY(activityinfo.title().isEmpty()); 0074 QVERIFY(activityinfo.description().isEmpty()); 0075 QVERIFY(activityinfo.goal().isEmpty()); 0076 QVERIFY(activityinfo.prerequisite().isEmpty()); 0077 QVERIFY(activityinfo.manual().isEmpty()); 0078 QVERIFY(activityinfo.credit().isEmpty()); 0079 QVERIFY(!activityinfo.favorite()); 0080 QVERIFY(activityinfo.enabled()); 0081 QCOMPARE(activityinfo.createdInVersion(), 0); 0082 0083 ACTIVITY_INFO_TEST_ATTRIBUTE(name, Name, QString); 0084 ACTIVITY_INFO_TEST_ATTRIBUTE(section, Section, QString); 0085 ACTIVITY_INFO_TEST_ATTRIBUTE(difficulty, Difficulty, quint32); 0086 ACTIVITY_INFO_TEST_ATTRIBUTE(minimalDifficulty, MinimalDifficulty, quint32); 0087 ACTIVITY_INFO_TEST_ATTRIBUTE(maximalDifficulty, MaximalDifficulty, quint32); 0088 ACTIVITY_INFO_TEST_ATTRIBUTE(icon, Icon, QString); 0089 ACTIVITY_INFO_TEST_ATTRIBUTE(author, Author, QString); 0090 ACTIVITY_INFO_TEST_ATTRIBUTE(title, Title, QString); 0091 ACTIVITY_INFO_TEST_ATTRIBUTE(description, Description, QString); 0092 ACTIVITY_INFO_TEST_ATTRIBUTE(goal, Goal, QString); 0093 ACTIVITY_INFO_TEST_ATTRIBUTE(prerequisite, Prerequisite, QString); 0094 ACTIVITY_INFO_TEST_ATTRIBUTE(manual, Manual, QString); 0095 ACTIVITY_INFO_TEST_ATTRIBUTE(credit, Credit, QString); 0096 ACTIVITY_INFO_TEST_ATTRIBUTE(favorite, Favorite, bool); 0097 ACTIVITY_INFO_TEST_ATTRIBUTE(enabled, Enabled, bool); 0098 ACTIVITY_INFO_TEST_ATTRIBUTE(createdInVersion, CreatedInVersion, int); 0099 0100 delete ApplicationSettingsMock::getInstance(); 0101 } 0102 0103 void CoreActivityInfoTest::levelsTest() 0104 { 0105 // called here to set the static instance object to the mock one 0106 ApplicationSettingsMock::getInstance(); 0107 0108 ActivityInfo activityinfo; 0109 activityinfo.setName(QStringLiteral("activityTest")); 0110 QVERIFY(!activityinfo.hasDataset()); 0111 activityinfo.setLevels({QStringLiteral("1,2,3,4,5,6")}); 0112 QStringList expected; 0113 expected << "1" << "2" << "3" << "4" << "5" << "6"; 0114 QCOMPARE(activityinfo.levels(), expected); 0115 QCOMPARE(activityinfo.currentLevels(), expected); 0116 0117 for(int i = 1 ; i < 7 ; ++ i) { 0118 Dataset *d = new Dataset(); 0119 d->setDifficulty(i); 0120 activityinfo.addDataset(QString::number(i), d); 0121 } 0122 0123 activityinfo.enableDatasetsBetweenDifficulties(3, 4); 0124 QCOMPARE(activityinfo.minimalDifficulty(), 3); 0125 QCOMPARE(activityinfo.maximalDifficulty(), 4); 0126 0127 QVERIFY(activityinfo.hasDataset()); 0128 0129 for(int i = 1 ; i < 7 ; ++ i) { 0130 QVERIFY(activityinfo.getDataset(QString::number(i))->enabled() == (i == 3 || i == 4)); 0131 delete activityinfo.getDataset(QString::number(i)); 0132 } 0133 } 0134 0135 QTEST_MAIN(CoreActivityInfoTest) 0136 #include "ActivityInfoTest.moc"