summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp58
1 files changed, 58 insertions, 0 deletions
diff --git a/tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp b/tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp
index a4c848c1ec..32a0374fcd 100644
--- a/tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp
+++ b/tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp
@@ -74,6 +74,8 @@ private slots:
void cursorToXForTrailingSpaces_data();
void cursorToXForTrailingSpaces();
void cursorToXInvalidInput();
+ void cursorToXForBidiBoundaries_data();
+ void cursorToXForBidiBoundaries();
void horizontalAlignment_data();
void horizontalAlignment();
@@ -738,6 +740,58 @@ void tst_QTextLayout::cursorToXInvalidInput()
QCOMPARE(cursorPos, 3);
}
+void tst_QTextLayout::cursorToXForBidiBoundaries_data()
+{
+ QTest::addColumn<Qt::LayoutDirection>("textDirection");
+ QTest::addColumn<QString>("text");
+ QTest::addColumn<int>("cursorPosition");
+ QTest::addColumn<int>("expectedX");
+
+ QTest::addRow("LTR, abcشزذabc, 0") << Qt::LeftToRight << "abcشزذabc"
+ << 0 << 0;
+ QTest::addRow("RTL, abcشزذabc, 9") << Qt::RightToLeft << "abcشزذabc"
+ << 9 << TESTFONT_SIZE * 3;
+ QTest::addRow("LTR, abcشزذabc, 3") << Qt::LeftToRight << "abcشزذabc"
+ << 0 << 0;
+ QTest::addRow("RTL, abcشزذabc, 6") << Qt::RightToLeft << "abcشزذabc"
+ << 9 << TESTFONT_SIZE * 3;
+
+ QTest::addRow("LTR, شزذabcشزذ, 0") << Qt::LeftToRight << "شزذabcشزذ"
+ << 0 << TESTFONT_SIZE * 2;
+ QTest::addRow("RTL, شزذabcشزذ, 9") << Qt::RightToLeft << "شزذabcشزذ"
+ << 9 << 0;
+ QTest::addRow("LTR, شزذabcشزذ, 3") << Qt::LeftToRight << "شزذabcشزذ"
+ << 3 << TESTFONT_SIZE * 2;
+ QTest::addRow("RTL, شزذabcشزذ, 3") << Qt::RightToLeft << "شزذabcشزذ"
+ << 3 << TESTFONT_SIZE * 5;
+ QTest::addRow("LTR, شزذabcشزذ, 6") << Qt::LeftToRight << "شزذabcشزذ"
+ << 6 << TESTFONT_SIZE * 5;
+ QTest::addRow("RTL, شزذabcشزذ, 6") << Qt::RightToLeft << "شزذabcشزذ"
+ << 6 << TESTFONT_SIZE * 2;
+}
+
+void tst_QTextLayout::cursorToXForBidiBoundaries()
+{
+ QFETCH(Qt::LayoutDirection, textDirection);
+ QFETCH(QString, text);
+ QFETCH(int, cursorPosition);
+ QFETCH(int, expectedX);
+
+ QTextOption option;
+ option.setTextDirection(textDirection);
+
+ QTextLayout layout(text, testFont);
+ layout.setTextOption(option);
+ layout.beginLayout();
+
+ QTextLine line = layout.createLine();
+ line.setLineWidth(0x10000);
+
+ QCOMPARE(line.cursorToX(cursorPosition), expectedX);
+
+ layout.endLayout();
+}
+
void tst_QTextLayout::horizontalAlignment_data()
{
qreal width = TESTFONT_SIZE * 4;
@@ -1146,6 +1200,10 @@ void tst_QTextLayout::xToCursorForBidiEnds_data()
<< 0 << 6;
QTest::addRow("RTL, شزذabc") << Qt::RightToLeft << "شزذabc"
<< 6 << 0;
+ QTest::addRow("LTR, شزذ123") << Qt::LeftToRight << "شزذ123"
+ << 0 << 6;
+ QTest::addRow("RTL, شزذ123") << Qt::RightToLeft << "شزذ123"
+ << 6 << 0;
QTest::addRow("LTR, abcشزذabc") << Qt::LeftToRight << "abcشزذabc"
<< 0 << 9;