File indexing completed on 2024-05-26 04:46:54
0001 /* 0002 SPDX-FileCopyrightText: 2019-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "grammalectegrammarerrortest.h" 0008 #include "grammalecte/grammalectegrammarerror.h" 0009 #include <QJsonDocument> 0010 #include <QStandardPaths> 0011 #include <QTest> 0012 QTEST_MAIN(GrammalecteGrammarErrorTest) 0013 0014 GrammalecteGrammarErrorTest::GrammalecteGrammarErrorTest(QObject *parent) 0015 : QObject(parent) 0016 { 0017 QStandardPaths::setTestModeEnabled(true); 0018 } 0019 0020 void GrammalecteGrammarErrorTest::shouldHaveDefaultValue() 0021 { 0022 TextGrammarCheck::GrammalecteGrammarError info; 0023 QCOMPARE(info.length(), -1); 0024 QCOMPARE(info.start(), -1); 0025 QCOMPARE(info.blockId(), -1); 0026 QVERIFY(info.error().isEmpty()); 0027 QVERIFY(info.suggestions().isEmpty()); 0028 QVERIFY(!info.color().isValid()); 0029 QVERIFY(!info.isValid()); 0030 } 0031 0032 void GrammalecteGrammarErrorTest::shouldParseJson_data() 0033 { 0034 QTest::addColumn<QString>("fileName"); 0035 QTest::addColumn<int>("nbBlock"); 0036 QTest::addColumn<TextGrammarCheck::GrammalecteGrammarError>("error"); 0037 QTest::newRow("empty-error") << QStringLiteral("empty-error") << 1 << TextGrammarCheck::GrammalecteGrammarError(); 0038 TextGrammarCheck::GrammalecteGrammarError err; 0039 err.setBlockId(1); 0040 err.setStart(15); 0041 err.setLength(5); 0042 err.setColor(QColor(217, 128, 38)); 0043 err.setSuggestions(QStringList() << QStringLiteral("Alors")); 0044 err.setError(QStringLiteral("Après un point, une majuscule est généralement requise.")); 0045 err.setOption(QStringLiteral("maj")); 0046 err.setRule(QStringLiteral("majuscule_après_point")); 0047 QTest::newRow("error1") << QStringLiteral("error1") << 1 << err; 0048 err.setColor(QColor()); 0049 QTest::newRow("empty-color") << QStringLiteral("empty-color") << 1 << err; 0050 } 0051 0052 void GrammalecteGrammarErrorTest::shouldParseJson() 0053 { 0054 QFETCH(QString, fileName); 0055 QFETCH(int, nbBlock); 0056 QFETCH(TextGrammarCheck::GrammalecteGrammarError, error); 0057 const QString originalJsonFile = QLatin1String(GRAMMALECTE_DATA_DIR) + QLatin1Char('/') + fileName + QStringLiteral(".json"); 0058 QFile f(originalJsonFile); 0059 QVERIFY(f.open(QIODevice::ReadOnly)); 0060 const QByteArray content = f.readAll(); 0061 f.close(); 0062 const QJsonDocument doc = QJsonDocument::fromJson(content); 0063 const QJsonObject fields = doc.object(); 0064 TextGrammarCheck::GrammalecteGrammarError parser; 0065 parser.parse(fields, nbBlock); 0066 const bool compare = (parser == error); 0067 if (!compare) { 0068 qDebug() << " Parser " << parser; 0069 qDebug() << " error " << error; 0070 } 0071 QVERIFY(compare); 0072 } 0073 0074 #include "moc_grammalectegrammarerrortest.cpp"