summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorMichael Nosov <Michael.Nosov@harman.com>2018-06-25 18:49:37 +0300
committerMichael Nosov <Michael.Nosov@harman.com>2018-08-03 09:59:57 +0000
commitee43c6fcc9a1014c1e0f8c98634385a246991b36 (patch)
tree240e1895c520d0194be5b2c856f554412eceb4aa /tests
parent4e6eabe6120d69ff0c615f26344cdeea231611c9 (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.cpp34
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());
+}
+