summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib/io/qsettings/tst_qsettings.cpp
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2016-10-22 11:08:32 +0200
committerLiang Qi <liang.qi@qt.io>2016-10-22 21:19:57 +0200
commit28628a5d5e6c55512759ceafc644aa31e444b781 (patch)
tree221d1ab0995afe0d441f1ddb433aee985f6d41ea /tests/auto/corelib/io/qsettings/tst_qsettings.cpp
parentcbb2ba23e203374132e4b134b1c8f1a3626d2378 (diff)
parent686c44a69b13f6e884dd2b6d9991f4cd94597c5a (diff)
Merge remote-tracking branch 'origin/5.6' into 5.7
Conflicts: src/plugins/platforms/eglfs/qeglfshooks.cpp Change-Id: I483f0dbd876943b184803f0fe65a0c686ad75db2
Diffstat (limited to 'tests/auto/corelib/io/qsettings/tst_qsettings.cpp')
-rw-r--r--tests/auto/corelib/io/qsettings/tst_qsettings.cpp50
1 files changed, 49 insertions, 1 deletions
diff --git a/tests/auto/corelib/io/qsettings/tst_qsettings.cpp b/tests/auto/corelib/io/qsettings/tst_qsettings.cpp
index 87a801c9dd..ed298bfafa 100644
--- a/tests/auto/corelib/io/qsettings/tst_qsettings.cpp
+++ b/tests/auto/corelib/io/qsettings/tst_qsettings.cpp
@@ -158,6 +158,8 @@ private slots:
void testByteArray();
void iniCodec();
void bom();
+ void embeddedZeroByte_data();
+ void embeddedZeroByte();
private:
void cleanupTestFiles();
@@ -627,7 +629,6 @@ void tst_QSettings::testByteArray_data()
#ifndef QT_NO_COMPRESS
QTest::newRow("compressed") << qCompress(bytes);
#endif
- QTest::newRow("with \\0") << bytes + '\0' + bytes;
}
void tst_QSettings::testByteArray()
@@ -678,6 +679,53 @@ void tst_QSettings::bom()
QVERIFY(allkeys.contains("section2/foo2"));
}
+void tst_QSettings::embeddedZeroByte_data()
+{
+ QTest::addColumn<QVariant>("value");
+
+ QByteArray bytes("hello\0world", 11);
+
+ QTest::newRow("bytearray\\0") << QVariant(bytes);
+ QTest::newRow("string\\0") << QVariant(QString::fromLatin1(bytes.data(), bytes.size()));
+
+ bytes = QByteArray("@String(");
+
+ QTest::newRow("@bytearray") << QVariant(bytes);
+ QTest::newRow("@string") << QVariant(QString(bytes));
+
+ bytes = QByteArray("@String(\0test", 13);
+
+ QTest::newRow("@bytearray\\0") << QVariant(bytes);
+ QTest::newRow("@string\\0") << QVariant(QString::fromLatin1(bytes.data(), bytes.size()));
+}
+
+void tst_QSettings::embeddedZeroByte()
+{
+ QFETCH(QVariant, value);
+ {
+ QSettings settings("QtProject", "tst_qsettings");
+ settings.setValue(QTest::currentDataTag(), value);
+ }
+ {
+ QSettings settings("QtProject", "tst_qsettings");
+ QVariant outValue = settings.value(QTest::currentDataTag());
+
+ switch (value.type()) {
+ case QVariant::ByteArray:
+ QCOMPARE(outValue.toByteArray(), value.toByteArray());
+ break;
+ case QVariant::String:
+ QCOMPARE(outValue.toString(), value.toString());
+ break;
+ default:
+ Q_UNREACHABLE();
+ }
+
+ if (value.toByteArray().contains(QChar::Null))
+ QVERIFY(outValue.toByteArray().contains(QChar::Null));
+ }
+}
+
void tst_QSettings::testErrorHandling_data()
{
QTest::addColumn<int>("filePerms"); // -1 means file should not exist