Warning, file /frameworks/sonnet/autotests/test_settings.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 /** 0002 * test_settings.cpp 0003 * 0004 * SPDX-FileCopyrightText: 2015 Kåre Särs <kare.sars@iki.fi> 0005 * 0006 * SPDX-License-Identifier: LGPL-2.1-or-later 0007 */ 0008 0009 #include "test_settings.h" 0010 0011 #include "settingsimpl_p.h" 0012 #include "speller.h" 0013 0014 #include <QDateTime> 0015 #include <QDebug> 0016 #include <QFileInfo> 0017 #include <QSettings> 0018 #include <QStandardPaths> 0019 #include <QTest> 0020 0021 QTEST_GUILESS_MAIN(SonnetSettingsTest) 0022 0023 using namespace Sonnet; 0024 0025 void SonnetSettingsTest::initTestCase() 0026 { 0027 QStandardPaths::setTestModeEnabled(true); 0028 } 0029 0030 void SonnetSettingsTest::testRestoreDoesNotSave() 0031 { 0032 QSettings settings(QStringLiteral("KDE"), QStringLiteral("Sonnet")); 0033 QString fileName = settings.fileName(); 0034 0035 QDateTime startTime = QFileInfo(fileName).lastModified(); 0036 0037 // NOTE: We use new/delete to be able to test that the settings are not 0038 // needlessly saved on deletion of Speller 0039 Speller *speller = new Speller(); 0040 // NOTE: This test works on Unix, but should _not_ fail on Windows as 0041 // QFileInfo::lastModified() always returns invalid QDateTime 0042 QCOMPARE(QFileInfo(fileName).lastModified(), startTime); 0043 0044 speller->language(); 0045 QCOMPARE(QFileInfo(fileName).lastModified(), startTime); 0046 0047 QStringList langs = speller->availableLanguages(); 0048 for (int i = 0; i < langs.count(); ++i) { 0049 speller->setLanguage(langs[i]); 0050 } 0051 QCOMPARE(QFileInfo(fileName).lastModified(), startTime); 0052 0053 speller->availableLanguages(); 0054 QCOMPARE(QFileInfo(fileName).lastModified(), startTime); 0055 0056 speller->restore(); 0057 QCOMPARE(QFileInfo(fileName).lastModified(), startTime); 0058 0059 // Test that the settings are not saved needlessly on delete 0060 delete speller; 0061 QCOMPARE(QFileInfo(fileName).lastModified(), startTime); 0062 } 0063 0064 void SonnetSettingsTest::testSpellerAPIChangeSaves() 0065 { 0066 QSettings settings(QStringLiteral("KDE"), QStringLiteral("Sonnet")); 0067 Speller speller; 0068 0069 // Default Language 0070 QString defLang = speller.defaultLanguage(); 0071 QString settingsLang = settings.value(QStringLiteral("defaultLanguage"), QLocale::system().name()).toString(); 0072 QCOMPARE(defLang, settingsLang); 0073 0074 QStringList langs = speller.availableLanguages(); 0075 for (int i = 0; i < langs.count(); ++i) { 0076 if (langs[i] != defLang) { 0077 speller.setDefaultLanguage(langs[i]); 0078 settingsLang = settings.value(QStringLiteral("defaultLanguage"), QLocale::system().name()).toString(); 0079 QCOMPARE(settingsLang, langs[i]); 0080 QCOMPARE(speller.defaultLanguage(), langs[i]); 0081 break; 0082 } 0083 } 0084 // set the original value 0085 speller.setDefaultLanguage(defLang); 0086 settingsLang = settings.value(QStringLiteral("defaultLanguage"), QLocale::system().name()).toString(); 0087 QCOMPARE(settingsLang, defLang); 0088 QCOMPARE(speller.defaultLanguage(), defLang); 0089 0090 // Default Client 0091 QString defClient = speller.defaultClient(); 0092 QString settingsClient = settings.value(QStringLiteral("defaultClient"), QString()).toString(); 0093 QCOMPARE(defClient, settingsClient); 0094 0095 QStringList clients = speller.availableBackends(); 0096 qDebug() << clients; 0097 for (int i = 0; i < clients.count(); ++i) { 0098 if (clients[i] != defLang) { 0099 speller.setDefaultClient(clients[i]); 0100 settingsClient = settings.value(QStringLiteral("defaultClient"), QString()).toString(); 0101 QCOMPARE(settingsClient, clients[i]); 0102 QCOMPARE(speller.defaultClient(), clients[i]); 0103 break; 0104 } 0105 } 0106 // set the original value 0107 if (defClient.isEmpty()) { 0108 // setting default to "" does not work. 0109 settings.remove(QStringLiteral("defaultClient")); 0110 } else { 0111 speller.setDefaultClient(defClient); 0112 } 0113 settingsClient = settings.value(QStringLiteral("defaultClient"), QString()).toString(); 0114 QCOMPARE(settingsClient, defClient); 0115 if (!defClient.isEmpty()) { 0116 QCOMPARE(speller.defaultClient(), defClient); 0117 } 0118 0119 // Check uppercase 0120 bool checkUppercase = speller.testAttribute(Speller::CheckUppercase); 0121 bool settingsUppercase = settings.value(QStringLiteral("checkUppercase"), true).toBool(); 0122 QCOMPARE(checkUppercase, settingsUppercase); 0123 // Change the attribute 0124 speller.setAttribute(Speller::CheckUppercase, !checkUppercase); 0125 settingsUppercase = settings.value(QStringLiteral("checkUppercase"), true).toBool(); 0126 QCOMPARE(!checkUppercase, settingsUppercase); 0127 QCOMPARE(!checkUppercase, speller.testAttribute(Speller::CheckUppercase)); 0128 // now set it back to what it was 0129 speller.setAttribute(Speller::CheckUppercase, checkUppercase); 0130 settingsUppercase = settings.value(QStringLiteral("checkUppercase"), true).toBool(); 0131 QCOMPARE(checkUppercase, settingsUppercase); 0132 QCOMPARE(checkUppercase, speller.testAttribute(Speller::CheckUppercase)); 0133 0134 // Skip Run Together 0135 bool skipRunTogether = speller.testAttribute(Speller::SkipRunTogether); 0136 bool settingsSkipRunTogether = settings.value(QStringLiteral("skipRunTogether"), true).toBool(); 0137 QCOMPARE(skipRunTogether, settingsSkipRunTogether); 0138 // Change the attribute 0139 speller.setAttribute(Speller::SkipRunTogether, !skipRunTogether); 0140 settingsSkipRunTogether = settings.value(QStringLiteral("skipRunTogether"), true).toBool(); 0141 QCOMPARE(!skipRunTogether, settingsSkipRunTogether); 0142 QCOMPARE(!skipRunTogether, speller.testAttribute(Speller::SkipRunTogether)); 0143 // now set it back to what it was 0144 speller.setAttribute(Speller::SkipRunTogether, skipRunTogether); 0145 settingsSkipRunTogether = settings.value(QStringLiteral("skipRunTogether"), true).toBool(); 0146 QCOMPARE(skipRunTogether, settingsSkipRunTogether); 0147 QCOMPARE(skipRunTogether, speller.testAttribute(Speller::SkipRunTogether)); 0148 0149 // Auto Detect Language 0150 bool autodetectLanguage = speller.testAttribute(Speller::AutoDetectLanguage); 0151 bool settingsAutoDetectLanguage = settings.value(QStringLiteral("autodetectLanguage"), true).toBool(); 0152 QCOMPARE(autodetectLanguage, settingsAutoDetectLanguage); 0153 // Change the attribute 0154 speller.setAttribute(Speller::AutoDetectLanguage, !autodetectLanguage); 0155 settingsAutoDetectLanguage = settings.value(QStringLiteral("autodetectLanguage"), true).toBool(); 0156 QCOMPARE(!autodetectLanguage, settingsAutoDetectLanguage); 0157 QCOMPARE(!autodetectLanguage, speller.testAttribute(Speller::AutoDetectLanguage)); 0158 // now set it back to what it was 0159 speller.setAttribute(Speller::AutoDetectLanguage, autodetectLanguage); 0160 settingsAutoDetectLanguage = settings.value(QStringLiteral("autodetectLanguage"), true).toBool(); 0161 QCOMPARE(autodetectLanguage, settingsAutoDetectLanguage); 0162 QCOMPARE(autodetectLanguage, speller.testAttribute(Speller::AutoDetectLanguage)); 0163 }