tests/auto/qtextlayout/tst_qtextlayout.cpp
changeset 37 758a864f9613
parent 33 3e2da88830cd
--- a/tests/auto/qtextlayout/tst_qtextlayout.cpp	Fri Sep 17 08:34:18 2010 +0300
+++ b/tests/auto/qtextlayout/tst_qtextlayout.cpp	Mon Oct 04 01:19:32 2010 +0300
@@ -122,6 +122,7 @@
     void smallTextLengthWrapAtWordBoundaryOrAnywhere();
     void testLineBreakingAllSpaces();
     void lineWidthFromBOM();
+    void textWidthVsWIdth();
 
 
 private:
@@ -1359,5 +1360,34 @@
     }
 }
 
+void tst_QTextLayout::textWidthVsWIdth()
+{
+    QTextLayout layout;
+    QTextOption opt;
+    opt.setWrapMode(QTextOption::WrapAnywhere);
+    layout.setTextOption(opt);
+    layout.setText(QString::fromLatin1(
+                       "g++ -c -m64 -pipe -g -fvisibility=hidden -fvisibility-inlines-hidden -Wall -W -D_REENTRANT -fPIC -DCORE_LIBRARY -DIDE_LIBRARY_BASENAME=\"lib\" -DWITH_TESTS "
+                       "-DQT_NO_CAST_TO_ASCII -DQT_USE_FAST_OPERATOR_PLUS -DQT_USE_FAST_CONCATENATION -DQT_PLUGIN -DQT_TESTLIB_LIB -DQT_SCRIPT_LIB -DQT_SVG_LIB -DQT_SQL_LIB -DQT_XM"
+                       "L_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED -I../../../../qt-qml/mkspecs/linux-g++-64 -I. -I../../../../qt-qml/include/QtCore -I../../../."
+                       "./qt-qml/include/QtNetwork -I../../../../qt-qml/include/QtGui -I../../../../qt-qml/include/QtXml -I../../../../qt-qml/include/QtSql -I../../../../qt-qml/inc"
+                       "lude/QtSvg -I../../../../qt-qml/include/QtScript -I../../../../qt-qml/include/QtTest -I../../../../qt-qml/include -I../../../../qt-qml/include/QtHelp -I../."
+                       "./libs -I/home/ettrich/dev/creator/tools -I../../plugins -I../../shared/scriptwrapper -I../../libs/3rdparty/botan/build -Idialogs -Iactionmanager -Ieditorma"
+                       "nager -Iprogressmanager -Iscriptmanager -I.moc/debug-shared -I.uic -o .obj/debug-shared/sidebar.o sidebar.cpp"));
+
+    // textWidth includes right bearing, but it should never be LARGER than width if there is space for at least one character
+    for (int width = 100; width < 1000; ++width) {
+        layout.beginLayout();
+        QTextLine line = layout.createLine();
+        line.setLineWidth(width);
+        layout.endLayout();
+
+        qreal textWidthIsLargerBy = qMax(qreal(0), line.naturalTextWidth() - line.width());
+        qreal thisMustBeZero = 0;
+        QCOMPARE(textWidthIsLargerBy, thisMustBeZero);
+    }
+}
+
+
 QTEST_MAIN(tst_QTextLayout)
 #include "tst_qtextlayout.moc"