diff options
author | Michael Nosov <Michael.Nosov@harman.com> | 2018-06-25 18:49:37 +0300 |
---|---|---|
committer | Michael Nosov <Michael.Nosov@harman.com> | 2018-08-03 09:59:57 +0000 |
commit | ee43c6fcc9a1014c1e0f8c98634385a246991b36 (patch) | |
tree | 240e1895c520d0194be5b2c856f554412eceb4aa /tests | |
parent | 4e6eabe6120d69ff0c615f26344cdeea231611c9 (diff) |
[qmf] IMAP: encode folder name with non-US characters
Part 1: Encode folder name on create/rename according to RFC 3501, section 5.1.3.
Part 2: Move decode/encode implementation in separate files,
because decodeFolderName also needs to be used in ImapRenameFolderStrategy::folderRenamed
Testing (Gmail):
-------
- Create folder with non-English chars (e.g. "Папка") using onlineCreateFolder API
- In web interface - verify that folder name is correct
- Rename folder to some another non-English name using onlineRenameFolder API
- Verify that folder is renamed correctly (Web interface and local device)
Change-Id: Ifb93cacb8832992d796037eb3fb47c4253e08d14
Reviewed-by: Matthew Vogt <matthew.vogt@qinetic.com.au>
Reviewed-by: Christopher Adams <chris.adams@jollamobile.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/tst_qmailcodec/tst_qmailcodec.cpp | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/tests/tst_qmailcodec/tst_qmailcodec.cpp b/tests/tst_qmailcodec/tst_qmailcodec.cpp index c522b28b..5212f9e7 100644 --- a/tests/tst_qmailcodec/tst_qmailcodec.cpp +++ b/tests/tst_qmailcodec/tst_qmailcodec.cpp @@ -66,6 +66,7 @@ private slots: void buffer_sizes(); void embedded_newlines_data(); void embedded_newlines(); + void encodeDecodeModifiedUtf7(); }; QTEST_MAIN(tst_QMailCodec) @@ -676,3 +677,36 @@ void tst_QMailCodec::embedded_newlines() QuotedPrintableMaxLineLength = originalQuotedPrintableMaxLineLength; } +void tst_QMailCodec::encodeDecodeModifiedUtf7() +{ + // Test with some arabic characters, as per http://en.wikipedia.org/wiki/List_of_Unicode_characters + const QChar arabicChars[] = { 0x0636, 0x0669, 0x06a5, 0x06b4, 0x06a5, 0x0669, 0x0636}; + QStringList arabicEncoded = QStringList() + << QString::fromLatin1("&BjY-") + << QString::fromLatin1("&BjYGaQ-") + << QString::fromLatin1("&BjYGaQal-") + << QString::fromLatin1("&BjYGaQalBrQ-") + << QString::fromLatin1("&BjYGaQalBrQGpQ-") + << QString::fromLatin1("&BjYGaQalBrQGpQZp-") + << QString::fromLatin1("&BjYGaQalBrQGpQZpBjY-"); + int i; + for (i = 0; i < arabicEncoded.length(); i++) { + QCOMPARE(QMailCodec::encodeModifiedUtf7(QString(arabicChars, i+1)), arabicEncoded[i]); + QCOMPARE(QMailCodec::decodeModifiedUtf7(arabicEncoded[i]), QString(arabicChars, i+1)); + } + + // Test '&' symbols + QCOMPARE(QMailCodec::decodeModifiedUtf7(QString::fromLatin1("&-")), QString::fromLatin1("&")); + QCOMPARE(QMailCodec::encodeModifiedUtf7(QString::fromLatin1("&")), QString::fromLatin1("&-")); + + // Test mixed arabic, '&' and Latin1 + QString testString = QString::fromLatin1("abc") + QChar(0x0636) + QString::fromLatin1("& && &&&"); + QString testEncodedString = QString::fromLatin1("abc&BjY-&- &-&- &-&-&-"); + QCOMPARE(QMailCodec::decodeModifiedUtf7(testEncodedString), testString); + QCOMPARE(QMailCodec::encodeModifiedUtf7(testString), testEncodedString); + + //Test empty string + QCOMPARE(QMailCodec::decodeModifiedUtf7(QString()), QString()); + QCOMPARE(QMailCodec::encodeModifiedUtf7(QString()), QString()); +} + |