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"