diff options
Diffstat (limited to 'tests/auto/corelib/codecs')
-rw-r--r-- | tests/auto/corelib/codecs/qtextcodec/echo/echo.pro | 4 | ||||
-rw-r--r-- | tests/auto/corelib/codecs/qtextcodec/qtextcodec.pro | 3 | ||||
-rw-r--r-- | tests/auto/corelib/codecs/qtextcodec/test.pro | 6 | ||||
-rw-r--r-- | tests/auto/corelib/codecs/qtextcodec/test/test.pro | 13 | ||||
-rw-r--r-- | tests/auto/corelib/codecs/qtextcodec/tst_qtextcodec.cpp | 9 | ||||
-rw-r--r-- | tests/auto/corelib/codecs/utf8/tst_utf8.cpp | 15 | ||||
-rw-r--r-- | tests/auto/corelib/codecs/utf8/utf8data.cpp | 30 |
7 files changed, 48 insertions, 32 deletions
diff --git a/tests/auto/corelib/codecs/qtextcodec/echo/echo.pro b/tests/auto/corelib/codecs/qtextcodec/echo/echo.pro index bf791ffc61..512da8939b 100644 --- a/tests/auto/corelib/codecs/qtextcodec/echo/echo.pro +++ b/tests/auto/corelib/codecs/qtextcodec/echo/echo.pro @@ -1,6 +1,4 @@ SOURCES += main.cpp QT = core -CONFIG -= app_bundle debug_and_release_target -CONFIG += console - +load(qt_test_helper) diff --git a/tests/auto/corelib/codecs/qtextcodec/qtextcodec.pro b/tests/auto/corelib/codecs/qtextcodec/qtextcodec.pro index 302d887fc7..15de02a42d 100644 --- a/tests/auto/corelib/codecs/qtextcodec/qtextcodec.pro +++ b/tests/auto/corelib/codecs/qtextcodec/qtextcodec.pro @@ -1,2 +1,3 @@ TEMPLATE = subdirs -SUBDIRS = test echo +SUBDIRS = test.pro +unix: SUBDIRS += echo diff --git a/tests/auto/corelib/codecs/qtextcodec/test.pro b/tests/auto/corelib/codecs/qtextcodec/test.pro new file mode 100644 index 0000000000..7505c5ad51 --- /dev/null +++ b/tests/auto/corelib/codecs/qtextcodec/test.pro @@ -0,0 +1,6 @@ +CONFIG += testcase +QT = core testlib +SOURCES = tst_qtextcodec.cpp + +TARGET = tst_qtextcodec +TESTDATA += *.txt diff --git a/tests/auto/corelib/codecs/qtextcodec/test/test.pro b/tests/auto/corelib/codecs/qtextcodec/test/test.pro deleted file mode 100644 index e0a1bbd88e..0000000000 --- a/tests/auto/corelib/codecs/qtextcodec/test/test.pro +++ /dev/null @@ -1,13 +0,0 @@ -CONFIG += testcase -QT = core testlib -SOURCES = ../tst_qtextcodec.cpp - -TARGET = ../tst_qtextcodec -win32 { - CONFIG(debug, debug|release) { - TARGET = ../../debug/tst_qtextcodec - } else { - TARGET = ../../release/tst_qtextcodec - } -} -TESTDATA += ../*.txt diff --git a/tests/auto/corelib/codecs/qtextcodec/tst_qtextcodec.cpp b/tests/auto/corelib/codecs/qtextcodec/tst_qtextcodec.cpp index f8f9387abb..6cadebfd7f 100644 --- a/tests/auto/corelib/codecs/qtextcodec/tst_qtextcodec.cpp +++ b/tests/auto/corelib/codecs/qtextcodec/tst_qtextcodec.cpp @@ -2092,7 +2092,7 @@ void tst_QTextCodec::toLocal8Bit() QSKIP("No qprocess support", SkipAll); #else QProcess process; - process.start("echo/echo"); + process.start("echo_helper"); QString string(QChar(0x410)); process.write((const char*)string.utf16(), string.length()*2); @@ -2429,7 +2429,7 @@ void tst_QTextCodec::userCodec() QVERIFY(!QTextCodec::availableCodecs().contains("UserCodec")); QVERIFY(!QTextCodec::codecForName("UserCodec")); - QTextCodec *codec = new UserCodec; + UserCodec *codec = new UserCodec; executedOnce = true; QList<QByteArray> availableCodecs = QTextCodec::availableCodecs(); @@ -2448,6 +2448,11 @@ void tst_QTextCodec::userCodec() pcodec = QTextCodec::codecForMib(5000); QCOMPARE(pcodec, codec); + + delete codec; + + pcodec = QTextCodec::codecForName("UserCodec"); + QCOMPARE(pcodec, nullptr); } struct DontCrashAtExit { diff --git a/tests/auto/corelib/codecs/utf8/tst_utf8.cpp b/tests/auto/corelib/codecs/utf8/tst_utf8.cpp index 8f78aa937c..9ce1748e72 100644 --- a/tests/auto/corelib/codecs/utf8/tst_utf8.cpp +++ b/tests/auto/corelib/codecs/utf8/tst_utf8.cpp @@ -1,7 +1,7 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. -** Copyright (C) 2016 Intel Corporation. +** Copyright (C) 2018 The Qt Company Ltd. +** Copyright (C) 2018 Intel Corporation. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the test suite of the Qt Toolkit. @@ -71,7 +71,7 @@ void tst_Utf8::initTestCase() // is the locale UTF-8? if (QString(QChar(QChar::ReplacementCharacter)).toLocal8Bit() == "\xEF\xBF\xBD") { QTest::newRow("localecodec") << true; - qDebug() << "locale is utf8"; + qInfo() << "locale is utf8"; } } @@ -227,6 +227,15 @@ void tst_Utf8::invalidUtf8() // GNU libc's iconv is known to accept U+FFFF and U+FFFE encoded as UTF-8 // OS X's iconv is known to accept those, plus surrogates and codepoints above U+10FFFF if (!useLocale) + QVERIFY(decoder->hasFailure() || decoder->needsMoreData()); + else if (!decoder->hasFailure() && !decoder->needsMoreData()) + qWarning("System codec does not report failure when it should. Should report bug upstream."); + + // add a continuation character and test that we don't accidentally use it + // (buffer overrun) + utf8 += char(0x80 | 0x3f); + decoder->toUnicode(utf8.constData(), utf8.size() - 1); + if (!useLocale) QVERIFY(decoder->hasFailure()); else if (!decoder->hasFailure()) qWarning("System codec does not report failure when it should. Should report bug upstream."); diff --git a/tests/auto/corelib/codecs/utf8/utf8data.cpp b/tests/auto/corelib/codecs/utf8/utf8data.cpp index 2267dc8514..221e1d5579 100644 --- a/tests/auto/corelib/codecs/utf8/utf8data.cpp +++ b/tests/auto/corelib/codecs/utf8/utf8data.cpp @@ -1,6 +1,7 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2018 The Qt Company Ltd. +** Copyright (C) 2018 Intel Corporation. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the test suite of the Qt Toolkit. @@ -29,15 +30,24 @@ void loadInvalidUtf8Rows() { - QTest::newRow("1char") << QByteArray("\x80"); - QTest::newRow("2chars-1") << QByteArray("\xC2\xC0"); - QTest::newRow("2chars-2") << QByteArray("\xC3\xDF"); - QTest::newRow("2chars-3") << QByteArray("\xC7\xF0"); - QTest::newRow("3chars-1") << QByteArray("\xE0\xA0\xC0"); - QTest::newRow("3chars-2") << QByteArray("\xE0\xC0\xA0"); - QTest::newRow("4chars-1") << QByteArray("\xF0\x90\x80\xC0"); - QTest::newRow("4chars-2") << QByteArray("\xF0\x90\xC0\x80"); - QTest::newRow("4chars-3") << QByteArray("\xF0\xC0\x80\x80"); + // Wrong continuations + QTest::newRow("bad-continuation-1char") << QByteArray("\x80"); + QTest::newRow("bad-continuation-2chars-1") << QByteArray("\xC2\xC0"); + QTest::newRow("bad-continuation-2chars-2") << QByteArray("\xC3\xDF"); + QTest::newRow("bad-continuation-2chars-3") << QByteArray("\xC7\xF0"); + QTest::newRow("bad-continuation-3chars-1") << QByteArray("\xE0\xA0\xC0"); + QTest::newRow("bad-continuation-3chars-2") << QByteArray("\xE0\xC0\xA0"); + QTest::newRow("bad-continuation-4chars-1") << QByteArray("\xF0\x90\x80\xC0"); + QTest::newRow("bad-continuation-4chars-2") << QByteArray("\xF0\x90\xC0\x80"); + QTest::newRow("bad-continuation-4chars-3") << QByteArray("\xF0\xC0\x80\x80"); + + // Too short + QTest::newRow("too-short-2chars") << QByteArray("\xC2"); + QTest::newRow("too-short-3chars-1") << QByteArray("\xE0"); + QTest::newRow("too-short-3chars-2") << QByteArray("\xE0\xA0"); + QTest::newRow("too-short-4chars-1") << QByteArray("\xF0"); + QTest::newRow("too-short-4chars-2") << QByteArray("\xF0\x90"); + QTest::newRow("too-short-4chars-3") << QByteArray("\xF0\x90\x80"); // Surrogate pairs must now be present either // U+D800: 1101 10 0000 00 0000 |