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()20 TestLanguageFiles::TestLanguageFiles()
21 {
22 }
23 
init()24 void TestLanguageFiles::init()
25 {
26     // TODO initialization of test case
27 }
28 
cleanup()29 void TestLanguageFiles::cleanup()
30 {
31     // TODO cleanup after test run
32 }
33 
loadGerman()34 void 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()67 void 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