summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/arthur/common/paintcommands.cpp34
-rw-r--r--tests/arthur/common/paintcommands.h1
-rw-r--r--tests/auto/declarative/qdeclarativeflickable/tst_qdeclarativeflickable.cpp2
-rw-r--r--tests/auto/declarative/qdeclarativeimage/data/aspectratio.qml4
-rw-r--r--tests/auto/declarative/qdeclarativeimage/tst_qdeclarativeimage.cpp10
-rw-r--r--tests/auto/declarative/qdeclarativexmllistmodel/tst_qdeclarativexmllistmodel.cpp2
-rw-r--r--tests/auto/lancelot/scripts/hinting.qps26
-rw-r--r--tests/auto/lancelot/tst_lancelot.cpp11
-rw-r--r--tests/auto/macnativeevents/tst_macnativeevents.cpp8
-rw-r--r--tests/auto/qdiriterator/tst_qdiriterator.cpp55
-rw-r--r--tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp79
-rw-r--r--tests/auto/qlocalsocket/tst_qlocalsocket.cpp2
-rw-r--r--tests/auto/qpointer/tst_qpointer.cpp110
-rw-r--r--tests/auto/xmlpatterns/stderrBaselines/Passhelp.txt16
14 files changed, 265 insertions, 95 deletions
diff --git a/tests/arthur/common/paintcommands.cpp b/tests/arthur/common/paintcommands.cpp
index b00ce81..7a018e3 100644
--- a/tests/arthur/common/paintcommands.cpp
+++ b/tests/arthur/common/paintcommands.cpp
@@ -96,6 +96,13 @@ const char *PaintCommands::fontWeightTable[] = {
"Black"
};
+const char *PaintCommands::fontHintingTable[] = {
+ "Default",
+ "None",
+ "Vertical",
+ "Full"
+};
+
const char *PaintCommands::clipOperationTable[] = {
"NoClip",
"ReplaceClip",
@@ -177,8 +184,9 @@ const char *PaintCommands::imageFormatTable[] = {
int PaintCommands::translateEnum(const char *table[], const QString &pattern, int limit)
{
+ QByteArray p = pattern.toLatin1().toLower();
for (int i=0; i<limit; ++i)
- if (pattern.toLower() == QString(QLatin1String(table[i])).toLower())
+ if (p == QByteArray::fromRawData(table[i], qstrlen(table[i])).toLower())
return i;
return -1;
}
@@ -287,9 +295,9 @@ void PaintCommands::staticInit()
"setCompositionMode <composition mode enum>",
"setCompositionMode SourceOver");
DECL_PAINTCOMMAND("setFont", command_setFont,
- "^setFont\\s+\"([\\w\\s]*)\"\\s*(\\w*)\\s*(\\w*)\\s*(\\w*)$",
- "setFont <fontFace> [size] [font weight|font weight enum] [italic]\n - font weight is an integer between 0 and 99",
- "setFont \"times\" normal");
+ "^setFont\\s+\"([\\w\\s]*)\"\\s*(\\w*)\\s*(\\w*)\\s*(\\w*)\\s*(\\w*)$",
+ "setFont <fontFace> [size] [font weight|font weight enum] [italic] [hinting enum]\n - font weight is an integer between 0 and 99",
+ "setFont \"times\" 12");
DECL_PAINTCOMMAND("setPen", command_setPen,
"^setPen\\s+#?(\\w*)$",
"setPen <color>\nsetPen <pen style enum>\nsetPen brush",
@@ -641,6 +649,7 @@ void PaintCommands::staticInit()
ADD_ENUMLIST("brush styles", brushStyleTable);
ADD_ENUMLIST("pen styles", penStyleTable);
ADD_ENUMLIST("font weights", fontWeightTable);
+ ADD_ENUMLIST("font hintings", fontHintingTable);
ADD_ENUMLIST("clip operations", clipOperationTable);
ADD_ENUMLIST("spread methods", spreadMethodTable);
ADD_ENUMLIST("composition modes", compositionModeTable);
@@ -2061,11 +2070,22 @@ void PaintCommands::command_setFont(QRegExp re)
bool italic = caps.at(4).toLower() == "true" || caps.at(4).toLower() == "italic";
+ QFont font(family, size, weight, italic);
+
+#if QT_VERSION >= 0x040800
+ int hinting = translateEnum(fontHintingTable, caps.at(5), 4);
+ if (hinting == -1)
+ hinting = 0;
+ else
+ font.setHintingPreference(QFont::HintingPreference(hinting));
+#else
+ int hinting = 1;
+#endif
if (m_verboseMode)
- printf(" -(lance) setFont(family=%s, size=%d, weight=%d, italic=%d\n",
- qPrintable(family), size, weight, italic);
+ printf(" -(lance) setFont(family=%s, size=%d, weight=%d, italic=%d hinting=%s\n",
+ qPrintable(family), size, weight, italic, fontHintingTable[hinting]);
- m_painter->setFont(QFont(family, size, weight, italic));
+ m_painter->setFont(font);
}
/***************************************************************************************************/
diff --git a/tests/arthur/common/paintcommands.h b/tests/arthur/common/paintcommands.h
index b2516e1..2740412 100644
--- a/tests/arthur/common/paintcommands.h
+++ b/tests/arthur/common/paintcommands.h
@@ -290,6 +290,7 @@ private:
static const char *brushStyleTable[];
static const char *penStyleTable[];
static const char *fontWeightTable[];
+ static const char *fontHintingTable[];
static const char *clipOperationTable[];
static const char *spreadMethodTable[];
static const char *coordinateMethodTable[];
diff --git a/tests/auto/declarative/qdeclarativeflickable/tst_qdeclarativeflickable.cpp b/tests/auto/declarative/qdeclarativeflickable/tst_qdeclarativeflickable.cpp
index d499edf..4fa1cb3 100644
--- a/tests/auto/declarative/qdeclarativeflickable/tst_qdeclarativeflickable.cpp
+++ b/tests/auto/declarative/qdeclarativeflickable/tst_qdeclarativeflickable.cpp
@@ -110,7 +110,7 @@ void tst_qdeclarativeflickable::create()
QCOMPARE(obj->isInteractive(), true);
QCOMPARE(obj->boundsBehavior(), QDeclarativeFlickable::DragAndOvershootBounds);
QCOMPARE(obj->pressDelay(), 0);
- QCOMPARE(obj->maximumFlickVelocity(), 2000.);
+ QCOMPARE(obj->maximumFlickVelocity(), 2500.);
delete obj;
}
diff --git a/tests/auto/declarative/qdeclarativeimage/data/aspectratio.qml b/tests/auto/declarative/qdeclarativeimage/data/aspectratio.qml
index 739299d..cd092bc 100644
--- a/tests/auto/declarative/qdeclarativeimage/data/aspectratio.qml
+++ b/tests/auto/declarative/qdeclarativeimage/data/aspectratio.qml
@@ -1,6 +1,10 @@
import QtQuick 1.0
Image {
+ property int widthChange: 0
+ property int heightChange: 0
source: "heart.png"
fillMode: Image.PreserveAspectFit;
+ onWidthChanged: widthChange += 1
+ onHeightChanged: heightChange += 1
}
diff --git a/tests/auto/declarative/qdeclarativeimage/tst_qdeclarativeimage.cpp b/tests/auto/declarative/qdeclarativeimage/tst_qdeclarativeimage.cpp
index c5a3d14..87e3347 100644
--- a/tests/auto/declarative/qdeclarativeimage/tst_qdeclarativeimage.cpp
+++ b/tests/auto/declarative/qdeclarativeimage/tst_qdeclarativeimage.cpp
@@ -248,14 +248,22 @@ void tst_qdeclarativeimage::preserveAspectRatio()
canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/aspectratio.qml"));
QDeclarativeImage *image = qobject_cast<QDeclarativeImage*>(canvas->rootObject());
QVERIFY(image != 0);
+ QCOMPARE(image->property("widthChange").toInt(), 1);
+ QCOMPARE(image->property("heightChange").toInt(), 1);
image->setWidth(80.0);
+ QCOMPARE(image->property("widthChange").toInt(), 2);
+ QCOMPARE(image->property("heightChange").toInt(), 2);
QCOMPARE(image->width(), 80.);
QCOMPARE(image->height(), 80.);
canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/aspectratio.qml"));
image = qobject_cast<QDeclarativeImage*>(canvas->rootObject());
- image->setHeight(60.0);
QVERIFY(image != 0);
+ QCOMPARE(image->property("widthChange").toInt(), 1);
+ QCOMPARE(image->property("heightChange").toInt(), 1);
+ image->setHeight(60.0);
+ QCOMPARE(image->property("widthChange").toInt(), 2);
+ QCOMPARE(image->property("heightChange").toInt(), 2);
QCOMPARE(image->height(), 60.);
QCOMPARE(image->width(), 60.);
delete canvas;
diff --git a/tests/auto/declarative/qdeclarativexmllistmodel/tst_qdeclarativexmllistmodel.cpp b/tests/auto/declarative/qdeclarativexmllistmodel/tst_qdeclarativexmllistmodel.cpp
index af54008..a0e2547 100644
--- a/tests/auto/declarative/qdeclarativexmllistmodel/tst_qdeclarativexmllistmodel.cpp
+++ b/tests/auto/declarative/qdeclarativexmllistmodel/tst_qdeclarativexmllistmodel.cpp
@@ -418,7 +418,7 @@ void tst_qdeclarativexmllistmodel::headers()
QTRY_COMPARE(model->status(), QDeclarativeXmlListModel::Ready);
QVariantMap expectedHeaders;
- expectedHeaders["Accept"] = "application/xml";
+ expectedHeaders["Accept"] = "application/xml,*/*";
QCOMPARE(factory.lastSentHeaders.count(), expectedHeaders.count());
foreach (const QString &header, expectedHeaders.keys()) {
diff --git a/tests/auto/lancelot/scripts/hinting.qps b/tests/auto/lancelot/scripts/hinting.qps
new file mode 100644
index 0000000..7ce21b2
--- /dev/null
+++ b/tests/auto/lancelot/scripts/hinting.qps
@@ -0,0 +1,26 @@
+translate 10 50
+setFont "sansserif" 10
+drawText 0 0 "Default hinting:"
+setFont "times" 12 normal normal default
+drawText 0 20 "The quick brown fox jumps over the lazy dog"
+
+translate 0 50
+setFont "sansserif" 10
+drawText 0 0 "No hinting:"
+setFont "times" 12 normal normal none
+drawText 0 20 "The quick brown fox jumps over the lazy dog"
+
+translate 0 50
+setFont "sansserif" 10
+drawText 0 0 "Vertical hinting:"
+setFont "times" 12 normal normal vertical
+drawText 0 20 "The quick brown fox jumps over the lazy dog"
+
+translate 0 50
+setFont "sansserif" 10
+drawText 0 0 "Full hinting:"
+setFont "times" 12 normal normal full
+drawText 0 20 "The quick brown fox jumps over the lazy dog"
+
+
+# Note: there is also the textlayout_draw command which might be interesting here.
diff --git a/tests/auto/lancelot/tst_lancelot.cpp b/tests/auto/lancelot/tst_lancelot.cpp
index e515c48..9721665 100644
--- a/tests/auto/lancelot/tst_lancelot.cpp
+++ b/tests/auto/lancelot/tst_lancelot.cpp
@@ -239,11 +239,20 @@ void tst_Lancelot::runTestSuite(GraphicsEngine engine, QImage::Format format)
QSKIP("Blacklisted by baseline server.", SkipSingle);
ImageItem rendered = render(baseline, engine, format);
+ static int consecutiveErrs = 0;
if (rendered.image.isNull()) { // Assume an error in the test environment, not Qt
QWARN("Error: Failed to render image.");
- QSKIP("Aborted due to errors.", SkipSingle);
+ if (++consecutiveErrs < 3) {
+ QSKIP("Aborted due to errors.", SkipSingle);
+ } else {
+ consecutiveErrs = 0;
+ QSKIP("Too many errors, skipping rest of testfunction.", SkipAll);
+ }
+ } else {
+ consecutiveErrs = 0;
}
+
if (baseline.status == ImageItem::BaselineNotFound) {
proto.submitNewBaseline(rendered, 0);
QSKIP("Baseline not found; new baseline created.", SkipSingle);
diff --git a/tests/auto/macnativeevents/tst_macnativeevents.cpp b/tests/auto/macnativeevents/tst_macnativeevents.cpp
index 3dc0506..9c18a3c 100644
--- a/tests/auto/macnativeevents/tst_macnativeevents.cpp
+++ b/tests/auto/macnativeevents/tst_macnativeevents.cpp
@@ -69,7 +69,7 @@ private slots:
void testMouseEnter();
void testChildDialogInFrontOfModalParent();
#ifdef QT_MAC_USE_COCOA
- void testChildWindowInFrontOfParentWindow();
+// void testChildWindowInFrontOfParentWindow();
// void testChildToolWindowInFrontOfChildNormalWindow();
void testChildWindowInFrontOfStaysOnTopParentWindow();
#endif
@@ -319,6 +319,11 @@ void tst_MacNativeEvents::testChildDialogInFrontOfModalParent()
}
#ifdef QT_MAC_USE_COCOA
+#if 0
+// This test is disabled as of Qt-4.7.4 because we cannot do it
+// unless we use the Cocoa sub window API. But using that opens up
+// a world of side effects that we cannot live with. So we rather
+// not support child-on-top-of-parent instead.
void tst_MacNativeEvents::testChildWindowInFrontOfParentWindow()
{
// Test that a child window always stacks in front of its parent window.
@@ -343,6 +348,7 @@ void tst_MacNativeEvents::testChildWindowInFrontOfParentWindow()
QTest::qWait(100);
QVERIFY(!child.isVisible());
}
+#endif
/* This test can be enabled once setStackingOrder has been fixed in qwidget_mac.mm
void tst_MacNativeEvents::testChildToolWindowInFrontOfChildNormalWindow()
diff --git a/tests/auto/qdiriterator/tst_qdiriterator.cpp b/tests/auto/qdiriterator/tst_qdiriterator.cpp
index bdf0c3b..3691a90 100644
--- a/tests/auto/qdiriterator/tst_qdiriterator.cpp
+++ b/tests/auto/qdiriterator/tst_qdiriterator.cpp
@@ -126,6 +126,7 @@ private slots:
void uncPaths_data();
void uncPaths();
#endif
+ void qtbug15421_hiddenDirs_hiddenFiles();
};
tst_QDirIterator::tst_QDirIterator()
@@ -173,6 +174,20 @@ tst_QDirIterator::tst_QDirIterator()
createLink("nothing", "entrylist/brokenlink.lnk");
# endif
#endif
+
+ createDirectory("qtbug15421_hiddenDirs_hiddenFiles");
+ createFile("qtbug15421_hiddenDirs_hiddenFiles/normalFile");
+ createFile("qtbug15421_hiddenDirs_hiddenFiles/.hiddenFile");
+ createDirectory("qtbug15421_hiddenDirs_hiddenFiles/normalDirectory");
+ createDirectory("qtbug15421_hiddenDirs_hiddenFiles/.hiddenDirectory");
+ createFile("qtbug15421_hiddenDirs_hiddenFiles/normalDirectory/normalFile");
+ createFile("qtbug15421_hiddenDirs_hiddenFiles/normalDirectory/.hiddenFile");
+ createFile("qtbug15421_hiddenDirs_hiddenFiles/.hiddenDirectory/normalFile");
+ createFile("qtbug15421_hiddenDirs_hiddenFiles/.hiddenDirectory/.hiddenFile");
+ createDirectory("qtbug15421_hiddenDirs_hiddenFiles/normalDirectory/normalDirectory");
+ createDirectory("qtbug15421_hiddenDirs_hiddenFiles/normalDirectory/.hiddenDirectory");
+ createDirectory("qtbug15421_hiddenDirs_hiddenFiles/.hiddenDirectory/normalDirectory");
+ createDirectory("qtbug15421_hiddenDirs_hiddenFiles/.hiddenDirectory/.hiddenDirectory");
}
tst_QDirIterator::~tst_QDirIterator()
@@ -578,6 +593,46 @@ void tst_QDirIterator::uncPaths()
}
#endif
+void tst_QDirIterator::qtbug15421_hiddenDirs_hiddenFiles()
+{
+ // In Unix it is easy to create hidden files, but in Windows it requires
+ // a special call since hidden files need to be "marked" while in Unix
+ // anything starting by a '.' is a hidden file.
+ // For that reason this test is not run in Windows.
+#if defined Q_OS_WIN || Q_OS_WINCE
+ QSKIP("To create hidden files a special call is required in Windows.", SkipAll);
+#else
+ // Only files
+ {
+ int matches = 0;
+ int failures = 0;
+ QDirIterator di("qtbug15421_hiddenDirs_hiddenFiles", QDir::Files | QDir::Hidden | QDir::NoDotAndDotDot, QDirIterator::Subdirectories);
+ while (di.hasNext()) {
+ ++matches;
+ QString filename = di.next();
+ if (QFileInfo(filename).isDir())
+ ++failures; // search was only supposed to find files
+ }
+ QCOMPARE(matches, 6);
+ QCOMPARE(failures, 0);
+ }
+ // Only directories
+ {
+ int matches = 0;
+ int failures = 0;
+ QDirIterator di("qtbug15421_hiddenDirs_hiddenFiles", QDir::Dirs | QDir::Hidden | QDir::NoDotAndDotDot, QDirIterator::Subdirectories);
+ while (di.hasNext()) {
+ ++matches;
+ QString filename = di.next();
+ if (!QFileInfo(filename).isDir())
+ ++failures; // search was only supposed to find files
+ }
+ QCOMPARE(matches, 6);
+ QCOMPARE(failures, 0);
+ }
+#endif // Q_OS_WIN || Q_OS_WINCE
+}
+
QTEST_MAIN(tst_QDirIterator)
#include "tst_qdiriterator.moc"
diff --git a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp
index 168f75e..73e5656 100644
--- a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp
+++ b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp
@@ -66,6 +66,7 @@
#include <QPushButton>
#include <QLineEdit>
#include <QGraphicsLinearLayout>
+#include <float.h>
#include "../../shared/util.h"
@@ -449,6 +450,8 @@ private slots:
void scroll();
void focusHandling_data();
void focusHandling();
+ void touchEventPropagation_data();
+ void touchEventPropagation();
void deviceCoordinateCache_simpleRotations();
// task specific tests below me
@@ -10637,6 +10640,80 @@ void tst_QGraphicsItem::focusHandling()
QCOMPARE(scene.focusItem(), focusableUnder);
}
+void tst_QGraphicsItem::touchEventPropagation_data()
+{
+ QTest::addColumn<QGraphicsItem::GraphicsItemFlag>("flag");
+ QTest::addColumn<int>("expectedCount");
+
+ QTest::newRow("ItemIsPanel")
+ << QGraphicsItem::ItemIsPanel << 0;
+ QTest::newRow("ItemStopsClickFocusPropagation")
+ << QGraphicsItem::ItemStopsClickFocusPropagation << 1;
+ QTest::newRow("ItemStopsFocusHandling")
+ << QGraphicsItem::ItemStopsFocusHandling << 1;
+}
+
+void tst_QGraphicsItem::touchEventPropagation()
+{
+ QFETCH(QGraphicsItem::GraphicsItemFlag, flag);
+ QFETCH(int, expectedCount);
+
+ class Testee : public QGraphicsRectItem
+ {
+ public:
+ int touchBeginEventCount;
+
+ Testee()
+ : QGraphicsRectItem(0, 0, 100, 100)
+ , touchBeginEventCount(0)
+ {
+ setAcceptTouchEvents(true);
+ setFlag(QGraphicsItem::ItemIsFocusable, false);
+ }
+
+ bool sceneEvent(QEvent *ev)
+ {
+ if (ev->type() == QEvent::TouchBegin)
+ ++touchBeginEventCount;
+
+ return QGraphicsRectItem::sceneEvent(ev);
+ }
+ };
+
+ Testee *touchEventReceiver = new Testee;
+ QGraphicsItem *topMost = new QGraphicsRectItem(touchEventReceiver->boundingRect());
+
+ QGraphicsScene scene;
+ scene.addItem(topMost);
+ scene.addItem(touchEventReceiver);
+
+ topMost->setAcceptTouchEvents(true);
+ topMost->setZValue(FLT_MAX);
+ topMost->setFlag(QGraphicsItem::ItemIsFocusable, false);
+ topMost->setFlag(flag, true);
+
+ QGraphicsView view(&scene);
+ view.setSceneRect(touchEventReceiver->boundingRect());
+ view.show();
+ QTest::qWaitForWindowShown(&view);
+
+ QCOMPARE(touchEventReceiver->touchBeginEventCount, 0);
+
+ QTouchEvent::TouchPoint tp(0);
+ tp.setState(Qt::TouchPointPressed);
+ tp.setScenePos(view.sceneRect().center());
+ tp.setLastScenePos(view.sceneRect().center());
+
+ QList<QTouchEvent::TouchPoint> touchPoints;
+ touchPoints << tp;
+
+ sendMousePress(&scene, tp.scenePos());
+ QTouchEvent touchBegin(QEvent::TouchBegin, QTouchEvent::TouchScreen, Qt::NoModifier, Qt::TouchPointPressed, touchPoints);
+
+ qApp->sendEvent(&scene, &touchBegin);
+ QCOMPARE(touchEventReceiver->touchBeginEventCount, expectedCount);
+}
+
void tst_QGraphicsItem::deviceCoordinateCache_simpleRotations()
{
// Make sure we don't invalidate the cache when applying simple
@@ -11176,6 +11253,6 @@ void tst_QGraphicsItem::QTBUG_16374_crashInDestructor()
view.show();
QTest::qWaitForWindowShown(&view);
}
-
+
QTEST_MAIN(tst_QGraphicsItem)
#include "tst_qgraphicsitem.moc"
diff --git a/tests/auto/qlocalsocket/tst_qlocalsocket.cpp b/tests/auto/qlocalsocket/tst_qlocalsocket.cpp
index a6d4427..77a5574 100644
--- a/tests/auto/qlocalsocket/tst_qlocalsocket.cpp
+++ b/tests/auto/qlocalsocket/tst_qlocalsocket.cpp
@@ -391,6 +391,8 @@ void tst_QLocalSocket::listenAndConnect()
QVERIFY(socket->fullServerName().contains(name));
sockets.append(socket);
if (canListen) {
+ QVERIFY(socket->waitForConnected());
+ QVERIFY(socket->isValid());
QCOMPARE(socket->errorString(), QString("Unknown error"));
QCOMPARE(socket->error(), QLocalSocket::UnknownSocketError);
QCOMPARE(socket->state(), QLocalSocket::ConnectedState);
diff --git a/tests/auto/qpointer/tst_qpointer.cpp b/tests/auto/qpointer/tst_qpointer.cpp
index 0485a17..67579fd 100644
--- a/tests/auto/qpointer/tst_qpointer.cpp
+++ b/tests/auto/qpointer/tst_qpointer.cpp
@@ -39,11 +39,8 @@
**
****************************************************************************/
-
#include <QtTest/QtTest>
-#include <QApplication>
-#include <QDebug>
#include <QPointer>
#include <QWidget>
@@ -51,17 +48,9 @@ class tst_QPointer : public QObject
{
Q_OBJECT
public:
- tst_QPointer();
- ~tst_QPointer();
-
inline tst_QPointer *me() const
{ return const_cast<tst_QPointer *>(this); }
-public slots:
- void initTestCase();
- void cleanupTestCase();
- void init();
- void cleanup();
private slots:
void constructors();
void destructor();
@@ -71,29 +60,9 @@ private slots:
void dereference_operators();
void disconnect();
void castDuringDestruction();
- void data() const;
- void dataSignature() const;
void threadSafety();
};
-tst_QPointer::tst_QPointer()
-{ }
-
-tst_QPointer::~tst_QPointer()
-{ }
-
-void tst_QPointer::initTestCase()
-{ }
-
-void tst_QPointer::cleanupTestCase()
-{ }
-
-void tst_QPointer::init()
-{ }
-
-void tst_QPointer::cleanup()
-{ }
-
void tst_QPointer::constructors()
{
QPointer<QObject> p1;
@@ -106,11 +75,20 @@ void tst_QPointer::constructors()
void tst_QPointer::destructor()
{
+ // Make two QPointer's to the same object
QObject *object = new QObject;
- QPointer<QObject> p = object;
- QCOMPARE(p, QPointer<QObject>(object));
+ QPointer<QObject> p1 = object;
+ QPointer<QObject> p2 = object;
+ // Check that they point to the correct object
+ QCOMPARE(p1, QPointer<QObject>(object));
+ QCOMPARE(p2, QPointer<QObject>(object));
+ QCOMPARE(p1, p2);
+ // Destroy the guarded object
delete object;
- QCOMPARE(p, QPointer<QObject>(0));
+ // Check that both pointers were zeroed
+ QCOMPARE(p1, QPointer<QObject>(0));
+ QCOMPARE(p2, QPointer<QObject>(0));
+ QCOMPARE(p1, p2);
}
void tst_QPointer::assignment_operators()
@@ -118,19 +96,21 @@ void tst_QPointer::assignment_operators()
QPointer<QObject> p1;
QPointer<QObject> p2;
+ // Test assignment with a QObject-derived object pointer
p1 = this;
p2 = p1;
-
QCOMPARE(p1, QPointer<QObject>(this));
QCOMPARE(p2, QPointer<QObject>(this));
QCOMPARE(p1, QPointer<QObject>(p2));
+ // Test assignment with a null pointer
p1 = 0;
p2 = p1;
QCOMPARE(p1, QPointer<QObject>(0));
QCOMPARE(p2, QPointer<QObject>(0));
QCOMPARE(p1, QPointer<QObject>(p2));
+ // Test assignment with a real QObject pointer
QObject *object = new QObject;
p1 = object;
@@ -139,10 +119,15 @@ void tst_QPointer::assignment_operators()
QCOMPARE(p2, QPointer<QObject>(object));
QCOMPARE(p1, QPointer<QObject>(p2));
- delete object;
- QCOMPARE(p1, QPointer<QObject>(0));
- QCOMPARE(p2, QPointer<QObject>(0));
+ // Test assignment with the same pointer that's already guarded
+ p1 = object;
+ p2 = p1;
+ QCOMPARE(p1, QPointer<QObject>(object));
+ QCOMPARE(p2, QPointer<QObject>(object));
QCOMPARE(p1, QPointer<QObject>(p2));
+
+ // Cleanup
+ delete object;
}
void tst_QPointer::equality_operators()
@@ -196,19 +181,28 @@ void tst_QPointer::isNull()
void tst_QPointer::dereference_operators()
{
QPointer<tst_QPointer> p1 = this;
+ QPointer<tst_QPointer> p2;
+ // operator->() -- only makes sense if not null
QObject *object = p1->me();
- QVERIFY(object == this);
+ QCOMPARE(object, this);
+ // operator*() -- only makes sense if not null
QObject &ref = *p1;
- QVERIFY(&ref == this);
+ QCOMPARE(&ref, this);
+
+ // operator T*()
+ QCOMPARE(static_cast<QObject *>(p1), this);
+ QCOMPARE(static_cast<QObject *>(p2), static_cast<QObject *>(0));
- object = static_cast<QObject *>(p1);
- QVERIFY(object == this);
+ // data()
+ QCOMPARE(p1.data(), this);
+ QCOMPARE(p2.data(), static_cast<QObject *>(0));
}
void tst_QPointer::disconnect()
{
+ // Verify that pointer remains guarded when all signals are disconencted.
QPointer<QObject> p1 = new QObject;
QVERIFY(!p1.isNull());
p1->disconnect();
@@ -314,38 +308,6 @@ void tst_QPointer::castDuringDestruction()
}
}
-void tst_QPointer::data() const
-{
- /* Check value of a default constructed object. */
- {
- QPointer<QObject> p;
- QCOMPARE(p.data(), static_cast<QObject *>(0));
- }
-
- /* Check value of a default constructed object. */
- {
- QObject *const object = new QObject();
- QPointer<QObject> p(object);
- QCOMPARE(p.data(), object);
- }
-}
-
-void tst_QPointer::dataSignature() const
-{
- /* data() should be const. */
- {
- const QPointer<QObject> p;
- p.data();
- }
-
- /* The return type should be T. */
- {
- const QPointer<QWidget> p;
- /* If the types differs, the QCOMPARE will fail to instansiate. */
- QCOMPARE(p.data(), static_cast<QWidget *>(0));
- }
-}
-
class TestRunnable : public QObject, public QRunnable {
void run() {
QPointer<QObject> obj1 = new QObject;
diff --git a/tests/auto/xmlpatterns/stderrBaselines/Passhelp.txt b/tests/auto/xmlpatterns/stderrBaselines/Passhelp.txt
index 4e789e7..4a86f75 100644
--- a/tests/auto/xmlpatterns/stderrBaselines/Passhelp.txt
+++ b/tests/auto/xmlpatterns/stderrBaselines/Passhelp.txt
@@ -1,28 +1,28 @@
xmlpatterns -- A tool for running XQuery queries.
- - When appearing, any following options are not
+ - When appearing, any following options are not
interpreted as switches.
-help Displays this help.
- -initial-template <string> The name of the initial template to call as a
+ -initial-template <string> The name of the initial template to call as a
Clark Name.
- -is-uri If specified, all filenames on the command line
+ -is-uri If specified, all filenames on the command line
are interpreted as URIs instead of a local
filenames.
- -no-format By default output is formatted for readability.
+ -no-format By default output is formatted for readability.
When specified, strict serialization is
performed.
- -output <local file> A local file to which the output should be
+ -output <local file> A local file to which the output should be
written. The file is overwritten, or if not
exist, created. If absent, stdout is used.
- -param <name=value> Binds an external variable. The value is
+ -param <name=value> Binds an external variable. The value is
directly available using the variable
reference: $name.
-version Displays version information.
- focus <string> The document to use as focus. Mandatory in case
+ focus <string> The document to use as focus. Mandatory in case
a stylesheet is used. This option is also
affected by the is-uris option.
- query/stylesheet <string> A local filename pointing to the query to run.
+ query/stylesheet <string> A local filename pointing to the query to run.
If the name ends with .xsl it's assumed to be
an XSL-T stylesheet. If it ends with .xq, it's
assumed to be an XQuery query. (In other cases