Improve tst_QStringConverter::encodingForName_data()
Add more tests and DRY the code using the usual row() lambda trick. Pick-to: 6.5 Change-Id: I810fba0ab2a96e740e67392155f9507675fe57ae Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Ivan Solovev <ivan.solovev@qt.io> (cherry picked from commit ddce99989fcc956cb59df722eea0e788a867bd7a) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
8d4807da5c
commit
319089dd7f
@ -14,6 +14,21 @@
|
|||||||
|
|
||||||
using namespace Qt::StringLiterals;
|
using namespace Qt::StringLiterals;
|
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE
|
||||||
|
namespace QTest {
|
||||||
|
template <typename T>
|
||||||
|
char *toString(const std::optional<T> &opt)
|
||||||
|
{
|
||||||
|
if (opt)
|
||||||
|
return QTest::toString(*opt);
|
||||||
|
else
|
||||||
|
return qstrdup("std::nullopt");
|
||||||
|
}
|
||||||
|
} // namespace QTest
|
||||||
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
|
using QTest::toString;
|
||||||
|
|
||||||
static constexpr bool IsBigEndian = QSysInfo::ByteOrder == QSysInfo::BigEndian;
|
static constexpr bool IsBigEndian = QSysInfo::ByteOrder == QSysInfo::BigEndian;
|
||||||
enum CodecLimitation {
|
enum CodecLimitation {
|
||||||
AsciiOnly,
|
AsciiOnly,
|
||||||
@ -2209,19 +2224,30 @@ void tst_QStringConverter::encodingForName_data()
|
|||||||
QTest::addColumn<QByteArray>("name");
|
QTest::addColumn<QByteArray>("name");
|
||||||
QTest::addColumn<std::optional<QStringConverter::Encoding>>("encoding");
|
QTest::addColumn<std::optional<QStringConverter::Encoding>>("encoding");
|
||||||
|
|
||||||
QTest::newRow("UTF-8") << QByteArray("UTF-8") << std::optional<QStringConverter::Encoding>(QStringConverter::Utf8);
|
auto row = [](const char *name, std::optional<QStringConverter::Encoding> expected = std::nullopt) {
|
||||||
QTest::newRow("utf8") << QByteArray("utf8") << std::optional<QStringConverter::Encoding>(QStringConverter::Utf8);
|
auto protect = [](auto p) { return p ? *p ? p : "<empty>" : "<nullptr>"; };
|
||||||
QTest::newRow("Utf-8") << QByteArray("Utf-8") << std::optional<QStringConverter::Encoding>(QStringConverter::Utf8);
|
QTest::addRow("%s", protect(name)) << QByteArray(name) << expected;
|
||||||
QTest::newRow("UTF-16") << QByteArray("UTF-16") << std::optional<QStringConverter::Encoding>(QStringConverter::Utf16);
|
};
|
||||||
QTest::newRow("UTF-16le") << QByteArray("UTF-16le") << std::optional<QStringConverter::Encoding>(QStringConverter::Utf16LE);
|
|
||||||
QTest::newRow("ISO-8859-1") << QByteArray("ISO-8859-1") << std::optional<QStringConverter::Encoding>(QStringConverter::Latin1);
|
row("UTF-8", QStringConverter::Utf8);
|
||||||
QTest::newRow("ISO8859-1") << QByteArray("ISO8859-1") << std::optional<QStringConverter::Encoding>(QStringConverter::Latin1);
|
row("utf8", QStringConverter::Utf8);
|
||||||
QTest::newRow("iso8859-1") << QByteArray("iso8859-1") << std::optional<QStringConverter::Encoding>(QStringConverter::Latin1);
|
row("Utf-8", QStringConverter::Utf8);
|
||||||
QTest::newRow("latin1") << QByteArray("latin1") << std::optional<QStringConverter::Encoding>(QStringConverter::Latin1);
|
row("UTF-16", QStringConverter::Utf16);
|
||||||
QTest::newRow("latin2") << QByteArray("latin2") << std::optional<QStringConverter::Encoding>();
|
row("UTF-16le", QStringConverter::Utf16LE);
|
||||||
QTest::newRow("latin15") << QByteArray("latin15") << std::optional<QStringConverter::Encoding>();
|
row("ISO-8859-1", QStringConverter::Latin1);
|
||||||
QTest::newRow("<empty>") << QByteArray("") << std::optional<QStringConverter::Encoding>();
|
row("ISO8859-1", QStringConverter::Latin1);
|
||||||
QTest::newRow("<nullptr>") << QByteArray(nullptr) << std::optional<QStringConverter::Encoding>();
|
row("iso8859-1", QStringConverter::Latin1);
|
||||||
|
row("latin1", QStringConverter::Latin1);
|
||||||
|
row("-_latin-1", QStringConverter::Latin1);
|
||||||
|
row("_-latin_1", QStringConverter::Latin1);
|
||||||
|
|
||||||
|
// failures:
|
||||||
|
row(nullptr);
|
||||||
|
row("");
|
||||||
|
row("latin2");
|
||||||
|
row("latin42");
|
||||||
|
row(" latin1"); // spaces are significant
|
||||||
|
row("\tlatin1"); // HTs are significant
|
||||||
}
|
}
|
||||||
|
|
||||||
void tst_QStringConverter::encodingForName()
|
void tst_QStringConverter::encodingForName()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user