diff options
Diffstat (limited to 'tests/auto/gui')
-rw-r--r-- | tests/auto/gui/text/qglyphrun/test.ttf | bin | 3712 -> 2008 bytes | |||
-rw-r--r-- | tests/auto/gui/text/qglyphrun/tst_qglyphrun.cpp | 20 | ||||
-rw-r--r-- | tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp | 23 | ||||
-rw-r--r-- | tests/auto/gui/text/qtextscriptengine/tst_qtextscriptengine.cpp | 22 |
4 files changed, 57 insertions, 8 deletions
diff --git a/tests/auto/gui/text/qglyphrun/test.ttf b/tests/auto/gui/text/qglyphrun/test.ttf Binary files differindex 9043a576ef..382b2547b0 100644 --- a/tests/auto/gui/text/qglyphrun/test.ttf +++ b/tests/auto/gui/text/qglyphrun/test.ttf diff --git a/tests/auto/gui/text/qglyphrun/tst_qglyphrun.cpp b/tests/auto/gui/text/qglyphrun/tst_qglyphrun.cpp index f576627745..8d1ec51c26 100644 --- a/tests/auto/gui/text/qglyphrun/tst_qglyphrun.cpp +++ b/tests/auto/gui/text/qglyphrun/tst_qglyphrun.cpp @@ -77,6 +77,7 @@ private slots: void setRawData(); void setRawDataAndGetAsVector(); void boundingRect(); + void mixedScripts(); private: int m_testFontId; @@ -399,7 +400,7 @@ void tst_QGlyphRun::setRawDataAndGetAsVector() void tst_QGlyphRun::drawNonExistentGlyphs() { QVector<quint32> glyphIndexes; - glyphIndexes.append(3); + glyphIndexes.append(4); QVector<QPointF> glyphPositions; glyphPositions.append(QPointF(0, 0)); @@ -725,6 +726,23 @@ void tst_QGlyphRun::boundingRect() QCOMPARE(glyphs.boundingRect(), boundingRect); } +void tst_QGlyphRun::mixedScripts() +{ + QString s; + s += QChar(0x31); // The character '1' + s += QChar(0xbc14); // Hangul character + + QTextLayout layout; + layout.setFont(m_testFont); + layout.setText(s); + layout.beginLayout(); + layout.createLine(); + layout.endLayout(); + + QList<QGlyphRun> glyphRuns = layout.glyphRuns(); + QCOMPARE(glyphRuns.size(), 2); +} + #endif // QT_NO_RAWFONT QTEST_MAIN(tst_QGlyphRun) diff --git a/tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp b/tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp index ec698e5db4..e49d8c3b07 100644 --- a/tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp +++ b/tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp @@ -86,6 +86,7 @@ private slots: void cursorToXForSetColumns(); void cursorToXForTrailingSpaces_data(); void cursorToXForTrailingSpaces(); + void cursorToXInvalidInput(); void horizontalAlignment_data(); void horizontalAlignment(); void horizontalAlignmentMultiline_data(); @@ -674,6 +675,28 @@ void tst_QTextLayout::cursorToXForTrailingSpaces() QCOMPARE(line.cursorToX(6), cursorAt6); } +void tst_QTextLayout::cursorToXInvalidInput() +{ + QTextLayout layout("aaa", testFont); + + layout.beginLayout(); + QTextLine line = layout.createLine(); + line.setLineWidth(5); + layout.endLayout(); + + int cursorPos; + + cursorPos = 0; + layout.lineAt(0).cursorToX(&cursorPos); + QCOMPARE(cursorPos, 0); + cursorPos = -300; + layout.lineAt(0).cursorToX(&cursorPos); + QCOMPARE(cursorPos, 0); + cursorPos = 300; + layout.lineAt(0).cursorToX(&cursorPos); + QCOMPARE(cursorPos, 3); +} + void tst_QTextLayout::horizontalAlignment_data() { qreal width = TESTFONT_SIZE * 4; diff --git a/tests/auto/gui/text/qtextscriptengine/tst_qtextscriptengine.cpp b/tests/auto/gui/text/qtextscriptengine/tst_qtextscriptengine.cpp index 40c6087882..b4d826836c 100644 --- a/tests/auto/gui/text/qtextscriptengine/tst_qtextscriptengine.cpp +++ b/tests/auto/gui/text/qtextscriptengine/tst_qtextscriptengine.cpp @@ -1255,21 +1255,29 @@ void tst_QTextScriptEngine::thaiWithZWJ() QTextLayout layout(s, font); QTextEngine *e = layout.engine(); e->itemize(); - QCOMPARE(e->layoutData->items.size(), 3); + QCOMPARE(e->layoutData->items.size(), 11); for (int item = 0; item < e->layoutData->items.size(); ++item) e->shape(item); - QCOMPARE(e->layoutData->items[0].num_glyphs, ushort(15)); // Thai: The ZWJ and ZWNJ characters are inherited, so should be part of the thai script - QCOMPARE(e->layoutData->items[1].num_glyphs, ushort(1)); // Han: Kanji for tree - QCOMPARE(e->layoutData->items[2].num_glyphs, ushort(2)); // Thai: Thai character followed by superscript "a" which is of inherited type + QCOMPARE(e->layoutData->items[0].num_glyphs, ushort(7)); // Thai: The ZWJ and ZWNJ characters are inherited, so should be part of the thai script + QCOMPARE(e->layoutData->items[1].num_glyphs, ushort(1)); // Common: The smart quotes cannot be handled by thai, so should be a separate item + QCOMPARE(e->layoutData->items[2].num_glyphs, ushort(1)); // Thai: Thai character + QCOMPARE(e->layoutData->items[3].num_glyphs, ushort(1)); // Common: Ellipsis + QCOMPARE(e->layoutData->items[4].num_glyphs, ushort(1)); // Thai: Thai character + QCOMPARE(e->layoutData->items[5].num_glyphs, ushort(1)); // Common: Smart quote + QCOMPARE(e->layoutData->items[6].num_glyphs, ushort(1)); // Thai: Thai character + QCOMPARE(e->layoutData->items[7].num_glyphs, ushort(1)); // Common: \xA0 = non-breaking space. Could be useful to have in thai, but not currently implemented + QCOMPARE(e->layoutData->items[8].num_glyphs, ushort(1)); // Thai: Thai character + QCOMPARE(e->layoutData->items[9].num_glyphs, ushort(1)); // Japanese: Kanji for tree + QCOMPARE(e->layoutData->items[10].num_glyphs, ushort(2)); // Thai: Thai character followed by superscript "a" which is of inherited type //A quick sanity check - check all the characters are individual clusters unsigned short *logClusters = e->layoutData->logClustersPtr; - for (int i = 0; i <= 14; i++) + for (int i = 0; i < 7; i++) QCOMPARE(logClusters[i], ushort(i)); - QCOMPARE(logClusters[15], ushort(0)); - QCOMPARE(logClusters[16], ushort(0)); + for (int i = 0; i < 10; i++) + QCOMPARE(logClusters[i+7], ushort(0)); // A thai implementation could either remove the ZWJ and ZWNJ characters, or hide them. // The current implementation hides them, so we test for that. |