1 /* 2 SPDX-FileCopyrightText: 2013 Oindrila Gupta <oindrila.gupta92@gmail.com> 3 4 SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 5 */ 6 7 #include "testlanguagefiles.h" 8 #include "core/language.h" 9 #include "core/phoneme.h" 10 #include "core/phonemegroup.h" 11 #include "core/phrase.h" 12 #include "core/resources/courseparser.h" 13 #include "core/unit.h" 14 15 #include <QDebug> 16 #include <QDirIterator> 17 #include <QTest> 18 #include <QUrl> 19 TestLanguageFiles()20TestLanguageFiles::TestLanguageFiles() 21 { 22 } 23 init()24void TestLanguageFiles::init() 25 { 26 // TODO initialization of test case 27 } 28 cleanup()29void TestLanguageFiles::cleanup() 30 { 31 // TODO cleanup after test run 32 } 33 loadGerman()34void TestLanguageFiles::loadGerman() 35 { 36 QUrl file = QUrl::fromLocalFile(":/artikulate/languages/de.xml"); 37 auto language = Language::create(file); 38 39 QCOMPARE(language->id(), "de"); 40 QCOMPARE(language->title(), "Deutsch"); 41 QCOMPARE(language->i18nTitle(), "German"); 42 43 std::shared_ptr<PhonemeGroup> group; 44 for (auto iter : language->phonemeGroups()) { 45 if (iter->id() == "monophthonge") { 46 group = iter; 47 break; 48 } 49 } 50 QVERIFY(group); 51 QCOMPARE(group->id(), "monophthonge"); 52 QCOMPARE(group->title(), "Vokalsystem Monophthonge"); 53 QCOMPARE(group->description(), "Monophthonge"); 54 55 std::shared_ptr<Phoneme> phoneme; 56 for (auto iter : language->phonemes()) { 57 if (iter->id() == "a") { 58 phoneme = iter; 59 break; 60 } 61 } 62 QVERIFY(phoneme); 63 QCOMPARE(phoneme->id(), "a"); 64 QCOMPARE(phoneme->title(), "[a] Kamm"); 65 } 66 checkIdUniqueness()67void TestLanguageFiles::checkIdUniqueness() 68 { 69 QDirIterator iter(QDir(":/artikulate/languages/")); 70 while (iter.hasNext()) { 71 const QString &file = iter.next(); 72 qDebug() << "File being parsed: " << file; 73 QStringList idList; 74 75 auto language = Language::create(QUrl::fromLocalFile(file)); 76 for (auto phoneme : language->phonemes()) { 77 QVERIFY2(!idList.contains(phoneme->id()), "Phoneme ID used more than once in the tested file"); 78 idList.append(phoneme->id()); 79 } 80 } 81 } 82 83 QTEST_GUILESS_MAIN(TestLanguageFiles) 84