diff options
Diffstat (limited to 'tests/auto/corelib/text/qtextboundaryfinder/tst_qtextboundaryfinder.cpp')
-rw-r--r-- | tests/auto/corelib/text/qtextboundaryfinder/tst_qtextboundaryfinder.cpp | 38 |
1 files changed, 27 insertions, 11 deletions
diff --git a/tests/auto/corelib/text/qtextboundaryfinder/tst_qtextboundaryfinder.cpp b/tests/auto/corelib/text/qtextboundaryfinder/tst_qtextboundaryfinder.cpp index d196d4e13b..560b4a47dd 100644 --- a/tests/auto/corelib/text/qtextboundaryfinder/tst_qtextboundaryfinder.cpp +++ b/tests/auto/corelib/text/qtextboundaryfinder/tst_qtextboundaryfinder.cpp @@ -1,5 +1,5 @@ // Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only #include <QTest> #include <QScopedValueRollback> @@ -8,9 +8,12 @@ #include <qfile.h> #include <qdebug.h> #include <qlist.h> +#include <qset.h> #include <algorithm> +using namespace Qt::Literals::StringLiterals; + class tst_QTextBoundaryFinder : public QObject { Q_OBJECT @@ -71,7 +74,7 @@ inline char *toString(const QList<int> &list) QT_END_NAMESPACE #ifdef QT_BUILD_INTERNAL -static void generateDataFromFile(const QString &fname) +static void generateDataFromFile(const QString &fname, const QSet<QString> &skipSet = {}) { QTest::addColumn<QString>("testString"); QTest::addColumn<QList<int> >("expectedBreakPositions"); @@ -79,9 +82,7 @@ static void generateDataFromFile(const QString &fname) QString testFile = QFINDTESTDATA(fname); QVERIFY2(!testFile.isEmpty(), (fname.toLatin1() + QByteArray(" not found!"))); QFile f(testFile); - QVERIFY(f.exists()); - - f.open(QIODevice::ReadOnly); + QVERIFY(f.open(QIODevice::ReadOnly)); int linenum = 0; while (!f.atEnd()) { @@ -101,7 +102,8 @@ static void generateDataFromFile(const QString &fname) QString testString; QList<int> expectedBreakPositions; - foreach (const QString &part, test.simplified().split(QLatin1Char(' '), Qt::SkipEmptyParts)) { + const QStringList parts = test.simplified().split(QLatin1Char(' '), Qt::SkipEmptyParts); + for (const QString &part : parts) { if (part.size() == 1) { if (part.at(0).unicode() == 0xf7) expectedBreakPositions.append(testString.size()); @@ -122,10 +124,12 @@ static void generateDataFromFile(const QString &fname) QVERIFY(!testString.isEmpty()); QVERIFY(!expectedBreakPositions.isEmpty()); + bool skip = false; + if (!comments.isEmpty()) { const QStringList lst = comments.simplified().split(QLatin1Char(' '), Qt::SkipEmptyParts); comments.clear(); - foreach (const QString &part, lst) { + for (const QString &part : lst) { if (part.size() == 1) { if (part.at(0).unicode() == 0xf7) comments += QLatin1Char('+'); @@ -133,13 +137,19 @@ static void generateDataFromFile(const QString &fname) comments += QLatin1Char('x'); continue; } - if (part.startsWith(QLatin1Char('(')) && part.endsWith(QLatin1Char(')'))) + if (part.startsWith(QLatin1Char('(')) && part.endsWith(QLatin1Char(')'))) { + skip |= skipSet.contains(part.sliced(1, part.length() - 2)); comments += part; + } } } const QByteArray nm = "line #" + QByteArray::number(linenum) + ": " + comments.toLatin1(); - QTest::newRow(nm.constData()) << testString << expectedBreakPositions; + + if (skip) + qDebug() << "Skipping" << nm; + else + QTest::newRow(nm.constData()) << testString << expectedBreakPositions; } } #endif @@ -199,7 +209,10 @@ QT_END_NAMESPACE void tst_QTextBoundaryFinder::graphemeBoundariesDefault_data() { - generateDataFromFile("data/GraphemeBreakTest.txt"); + + // QTBUG-121907: We are not using Unicode grapheme segmentation for Indic scripts. + QSet<QString> skipSet = {u"ConjunctLinkingScripts_LinkingConsonant"_s}; + generateDataFromFile("data/GraphemeBreakTest.txt", skipSet); } void tst_QTextBoundaryFinder::graphemeBoundariesDefault() @@ -247,7 +260,10 @@ void tst_QTextBoundaryFinder::sentenceBoundariesDefault() void tst_QTextBoundaryFinder::lineBoundariesDefault_data() { - generateDataFromFile("data/LineBreakTest.txt"); + // QTBUG-121907: Indic line breaking is not supported + QSet<QString> skipSet = {u"AK"_s, u"AP"_s, u"AS"_s, u"VI"_s, u"VF"_s}; + + generateDataFromFile("data/LineBreakTest.txt", skipSet); } void tst_QTextBoundaryFinder::lineBoundariesDefault() |