aboutsummaryrefslogtreecommitdiff
path: root/autotests/kconfigtest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'autotests/kconfigtest.cpp')
-rw-r--r--autotests/kconfigtest.cpp54
1 files changed, 52 insertions, 2 deletions
diff --git a/autotests/kconfigtest.cpp b/autotests/kconfigtest.cpp
index 64c6223d..2ad3b312 100644
--- a/autotests/kconfigtest.cpp
+++ b/autotests/kconfigtest.cpp
@@ -1736,10 +1736,11 @@ void KConfigTest::testQByteArrayUtf8()
QFile readFile(file.fileName());
QVERIFY(readFile.open(QFile::ReadOnly));
#define VALUE "Utf8=\\x00\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x08\\t\\n\\x0b\\x0c\\r\\x0e\\x0f\\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\\x7f\\x80\\x81\\x82\\x83\\x84\\x85\\x86\\x87\\x88\\x89\\x8a\\x8b\\x8c\\x8d\\x8e\\x8f\\x90\\x91\\x92\\x93\\x94\\x95\\x96\\x97\\x98\\x99\\x9a\\x9b\\x9c\\x9d\\x9e\\x9f\\xa0\\xa1\\xa2\\xa3\\xa4\\xa5\\xa6\\xa7\\xa8\\xa9\\xaa\\xab\\xac\\xad\\xae\\xaf\\xb0\\xb1\\xb2\\xb3\\xb4\\xb5\\xb6\\xb7\\xb8\\xb9\\xba\\xbb\\xbc\\xbd\\xbe\\xbf\\xc0\\xc1\\xc2\\xc3\\xc4\\xc5\\xc6\\xc7\\xc8\\xc9\\xca\\xcb\\xcc\\xcd\\xce\\xcf\\xd0\\xd1\\xd2\\xd3\\xd4\\xd5\\xd6\\xd7\\xd8\\xd9\\xda\\xdb\\xdc\\xdd\\xde\\xdf\\xe0\\xe1\\xe2\\xe3\\xe4\\xe5\\xe6\\xe7\\xe8\\xe9\\xea\\xeb\\xec\\xed\\xee\\xef\\xf0\\xf1\\xf2\\xf3\\xf4\\xf5\\xf6\\xf7\\xf8\\xf9\\xfa\\xfb\\xfc\\xfd\\xfe\\xff"
+ const QByteArray fileBytes = readFile.readAll();
#ifndef Q_OS_WIN
- QCOMPARE(readFile.readAll(), QByteArrayLiteral("[General]\n" VALUE "\n"));
+ QCOMPARE(fileBytes, QByteArrayLiteral("[General]\n" VALUE "\n"));
#else
- QCOMPARE(readFile.readAll(), QByteArrayLiteral("[General]\r\n" VALUE "\r\n"));
+ QCOMPARE(fileBytes, QByteArrayLiteral("[General]\r\n" VALUE "\r\n"));
#endif
#undef VALUE
@@ -1749,6 +1750,55 @@ void KConfigTest::testQByteArrayUtf8()
QCOMPARE(bytes, general2.readEntry("Utf8", QByteArray()));
}
+void KConfigTest::testQStringUtf8_data()
+{
+ QTest::addColumn<QByteArray>("data");
+ QTest::newRow("1") << QByteArray("Téléchargements\tTéléchargements");
+ QTest::newRow("2") << QByteArray("$¢ह€𐍈\t$¢ह€𐍈");
+ QTest::newRow("3") << QByteArray("\xc2\xe0\xa4\xf0\x90\x8d\t\\xc2\\xe0\\xa4\\xf0\\x90\\x8d");
+ // 2 byte overlong
+ QTest::newRow("4") << QByteArray("\xc1\xbf\t\\xc1\\xbf");
+ // 3 byte overlong
+ QTest::newRow("5") << QByteArray("\xe0\x9f\xbf\t\\xe0\\x9f\\xbf");
+ // 4 byte overlong
+ QTest::newRow("6") << QByteArray("\xf0\x8f\xbf\xbf\t\\xf0\\x8f\\xbf\\xbf");
+ // outside unicode range
+ QTest::newRow("7") << QByteArray("\xf4\x90\x80\x80\t\\xf4\\x90\\x80\\x80");
+ // just within range
+ QTest::newRow("8") << QByteArray("\xc2\x80\t\xc2\x80");
+ QTest::newRow("9") << QByteArray("\xe0\xa0\x80\t\xe0\xa0\x80");
+ QTest::newRow("10") << QByteArray("\xf0\x90\x80\x80\t\xf0\x90\x80\x80");
+ QTest::newRow("11") << QByteArray("\xf4\x8f\xbf\xbf\t\xf4\x8f\xbf\xbf");
+}
+
+void KConfigTest::testQStringUtf8()
+{
+ QFETCH(QByteArray, data);
+ const QList<QByteArray> d = data.split('\t');
+ const QByteArray value = d[0];
+ const QByteArray serialized = d[1];
+ QTemporaryFile file;
+ QVERIFY(file.open());
+ KConfig config(file.fileName(), KConfig::SimpleConfig);
+ KConfigGroup general(&config, "General");
+ general.writeEntry("key", value);
+ config.sync();
+ file.flush();
+ file.close();
+ QFile readFile(file.fileName());
+ QVERIFY(readFile.open(QFile::ReadOnly));
+ QByteArray fileBytes = readFile.readAll();
+#ifdef Q_OS_WIN
+ fileBytes.replace("\r\n", "\n");
+#endif
+ QCOMPARE(fileBytes, QByteArrayLiteral("[General]\nkey=") + serialized + QByteArrayLiteral("\n"));
+
+ // check that reading works
+ KConfig config2(file.fileName(), KConfig::SimpleConfig);
+ KConfigGroup general2(&config2, "General");
+ QCOMPARE(value, general2.readEntry("key", QByteArray()));
+}
+
void KConfigTest::testNewlines()
{
// test that kconfig always uses the native line endings