File indexing completed on 2024-06-23 04:40:14

0001 /*
0002   SPDX-FileCopyrightText: 2014-2024 Laurent Montel <montel@kde.org>
0003 
0004   SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "autocorrectiontextedittest.h"
0008 #include "autocorrection.h"
0009 #include "autocorrectionsettings.h"
0010 #include <QStandardPaths>
0011 #include <QTest>
0012 #include <TextAutoCorrection/AutoCorrectionTextEdit>
0013 #include <qtestkeyboard.h>
0014 
0015 AutoCorrectionTextEditTest::AutoCorrectionTextEditTest()
0016 {
0017     QStandardPaths::setTestModeEnabled(true);
0018 }
0019 
0020 void AutoCorrectionTextEditTest::shouldNotAutocorrectWhenDisabled()
0021 {
0022     TextAutoCorrection::AutoCorrectionTextEdit richtext(nullptr);
0023     QHash<QString, QString> entries;
0024     const QString originalWord = QStringLiteral("FOOFOO");
0025     const QString replaceWord = QStringLiteral("BLABLA");
0026     entries.insert(originalWord, replaceWord);
0027     auto settings = new TextAutoCorrection::AutoCorrectionSettings;
0028     settings->setAutocorrectEntries(entries);
0029     richtext.autocorrection()->setAutoCorrectionSettings(settings);
0030     richtext.show();
0031     QVERIFY(QTest::qWaitForWindowExposed(&richtext));
0032     QTest::keyClicks(&richtext, originalWord);
0033     QTest::keyClick(&richtext, ' ');
0034     QCOMPARE(richtext.toPlainText(), QString(originalWord + QLatin1Char(' ')));
0035 }
0036 
0037 void AutoCorrectionTextEditTest::shouldReplaceWordWhenExactText()
0038 {
0039     TextAutoCorrection::AutoCorrectionTextEdit richtext(nullptr);
0040     const QString originalWord = QStringLiteral("FOOFOO");
0041     const QString replaceWord = QStringLiteral("BLABLA");
0042     QHash<QString, QString> entries;
0043     entries.insert(originalWord, replaceWord);
0044     auto settings = new TextAutoCorrection::AutoCorrectionSettings;
0045     settings->setAutocorrectEntries(entries);
0046     settings->setEnabledAutoCorrection(true);
0047     settings->setAdvancedAutocorrect(true);
0048     richtext.autocorrection()->setAutoCorrectionSettings(settings);
0049     richtext.show();
0050     QVERIFY(QTest::qWaitForWindowExposed(&richtext));
0051     QTest::keyClicks(&richtext, originalWord);
0052     QTest::keyClick(&richtext, ' ');
0053     QCOMPARE(richtext.toPlainText(), QString(replaceWord + QLatin1Char(' ')));
0054 }
0055 
0056 void AutoCorrectionTextEditTest::shouldNotReplaceWordWhenInexactText()
0057 {
0058     TextAutoCorrection::AutoCorrectionTextEdit richtext(nullptr);
0059     const QString originalWord = QStringLiteral("FOOFOO");
0060     const QString replaceWord = QStringLiteral("BLABLA");
0061     QHash<QString, QString> entries;
0062     entries.insert(originalWord, replaceWord);
0063     auto settings = new TextAutoCorrection::AutoCorrectionSettings;
0064     settings->setAutocorrectEntries(entries);
0065     settings->setEnabledAutoCorrection(true);
0066     settings->setAdvancedAutocorrect(true);
0067     richtext.autocorrection()->setAutoCorrectionSettings(settings);
0068 
0069     richtext.show();
0070     const QString nonExactText = QStringLiteral("BLIBLI");
0071     QVERIFY(QTest::qWaitForWindowExposed(&richtext));
0072     QTest::keyClicks(&richtext, nonExactText);
0073     QTest::keyClick(&richtext, ' ');
0074     QCOMPARE(richtext.toPlainText(), QString(nonExactText + QLatin1Char(' ')));
0075 }
0076 
0077 void AutoCorrectionTextEditTest::shouldReplaceWhenPressEnter()
0078 {
0079     TextAutoCorrection::AutoCorrectionTextEdit richtext(nullptr);
0080     const QString originalWord = QStringLiteral("FOOFOO");
0081     const QString replaceWord = QStringLiteral("BLABLA");
0082     QHash<QString, QString> entries;
0083     entries.insert(originalWord, replaceWord);
0084 
0085     auto settings = new TextAutoCorrection::AutoCorrectionSettings;
0086     settings->setAutocorrectEntries(entries);
0087     settings->setEnabledAutoCorrection(true);
0088     settings->setAdvancedAutocorrect(true);
0089     richtext.autocorrection()->setAutoCorrectionSettings(settings);
0090 
0091     richtext.show();
0092     QVERIFY(QTest::qWaitForWindowExposed(&richtext));
0093     QTest::keyClicks(&richtext, originalWord);
0094     QTest::keyPress(&richtext, Qt::Key_Enter);
0095     QCOMPARE(richtext.toPlainText(), QString(replaceWord + QLatin1Char('\n')));
0096 }
0097 
0098 void AutoCorrectionTextEditTest::shouldReplaceWhenPressReturn()
0099 {
0100     TextAutoCorrection::AutoCorrectionTextEdit richtext(nullptr);
0101     const QString originalWord = QStringLiteral("FOOFOO");
0102     const QString replaceWord = QStringLiteral("BLABLA");
0103     QHash<QString, QString> entries;
0104     entries.insert(originalWord, replaceWord);
0105     auto settings = new TextAutoCorrection::AutoCorrectionSettings;
0106     settings->setAutocorrectEntries(entries);
0107     settings->setEnabledAutoCorrection(true);
0108     settings->setAdvancedAutocorrect(true);
0109     richtext.autocorrection()->setAutoCorrectionSettings(settings);
0110     richtext.show();
0111     QVERIFY(QTest::qWaitForWindowExposed(&richtext));
0112     QTest::keyClicks(&richtext, originalWord);
0113     QTest::keyPress(&richtext, Qt::Key_Return);
0114     QCOMPARE(richtext.toPlainText(), QString(replaceWord + QLatin1Char('\n')));
0115 }
0116 
0117 QTEST_MAIN(AutoCorrectionTextEditTest)
0118 
0119 #include "moc_autocorrectiontextedittest.cpp"