--- a/tests/auto/qtextcodec/tst_qtextcodec.cpp Wed Jun 23 19:07:03 2010 +0300
+++ b/tests/auto/qtextcodec/tst_qtextcodec.cpp Tue Jul 06 15:10:48 2010 +0300
@@ -431,9 +431,12 @@
Q_ASSERT(codec);
const QByteArray asDecoded(codec->fromUnicode(input));
+ QCOMPARE(asDecoded, QByteArray("?"));
+
+ QByteArray ffff("\357\277\277");
QTextCodec::ConverterState state(QTextCodec::ConvertInvalidToNull);
- QVERIFY(codec->toUnicode(asDecoded.constData(), asDecoded.length(), &state) == QChar(0));
- QVERIFY(codec->toUnicode(asDecoded) == QChar(0xfffd));
+ QVERIFY(codec->toUnicode(ffff.constData(), ffff.length(), &state) == QChar(0));
+ QVERIFY(codec->toUnicode(ffff) == QChar(0xfffd));
}
void tst_QTextCodec::flagF7808080() const
@@ -494,12 +497,11 @@
/* When 0xEFBFBF is preceeded by what seems to be an arbitrary character,
* QTextCodec fails to flag it. */
{
- QEXPECT_FAIL("", "This is a bug and needs to be fixed.", Continue);
QByteArray start("B");
start.append(invalidInput);
QTextCodec::ConverterState state(QTextCodec::ConvertInvalidToNull);
- QVERIFY(codec->toUnicode(start.constData(), start.length(), &state) == QChar(0));
+ QVERIFY(codec->toUnicode(start.constData(), start.length(), &state) == QString::fromLatin1("B\0", 2));
}
}
@@ -744,15 +746,15 @@
str = QChar(QChar::ReplacementCharacter);
QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 2.3.3") << utf8 << str << -1;
- // 2.3.4 U+0010FFFF
+ // 2.3.4 U+0010FFFD
utf8.clear();
utf8 += char(0xf4);
utf8 += char(0x8f);
utf8 += char(0xbf);
- utf8 += char(0xbf);
+ utf8 += char(0xbd);
str.clear();
str += QChar(0xdbff);
- str += QChar(0xdfff);
+ str += QChar(0xdffd);
QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 2.3.4") << utf8 << str << -1;
// 2.3.5 U+00110000
@@ -1987,6 +1989,8 @@
void tst_QTextCodec::threadSafety()
{
+ QList<QByteArray> codecList = QTextCodec::availableCodecs();
+ QList<int> mibList = QTextCodec::availableMibs();
#ifndef QT_NO_CONCURRENT
QThreadPool::globalInstance()->setMaxThreadCount(12);
@@ -1997,8 +2001,6 @@
QCOMPARE(res.results(), codecList);
QCOMPARE(res2.results(), mibList);
-#else
- QSKIP("This function is not yet supported with QT_NO_CONCURRENT defined.", SkipAll);
#endif
}
@@ -2176,6 +2178,45 @@
koi8_u_ba.append(x);
}
QTest::newRow("KOI8-U") << QByteArray("KOI8-U") << koi8_u_ba;
+
+
+ QByteArray big5_ba;
+ for (unsigned char u=0xa1; u<=0xf9; u++) {
+ if (u==0xc8) {
+ continue;
+ }
+ for (unsigned char v=0x40; v<=0x7e; v++) {
+ big5_ba.append(u);
+ big5_ba.append(v);
+ }
+ unsigned char v_up;
+ switch (u) {
+ case 0xa3: v_up=0xbf; break;
+ case 0xc7: v_up=0xfc; break;
+ case 0xf9: v_up=0xd5; break;
+ default: v_up=0xfe;
+ }
+
+ for (unsigned char v=0xa1; v<=v_up; v++) {
+ if (u==0xa2 && (v==0xcc || v==0xce)) {
+ continue;
+ }
+ big5_ba.append(u);
+ big5_ba.append(v);
+ }
+ }
+
+ QTest::newRow("BIG5") << QByteArray("BIG5") << big5_ba;
+
+ QByteArray gb2312_ba;
+ for (unsigned char u=0xa1; u<=0xf7; u++) {
+ for (unsigned char v=0xa1; v<=0xfe; v++) {
+ gb2312_ba.append(u);
+ gb2312_ba.append(v);
+ }
+ }
+
+ QTest::newRow("GB2312") << QByteArray("GB2312") << gb2312_ba;
}
void tst_QTextCodec::moreToFromUnicode()