summaryrefslogtreecommitdiffstats
path: root/tests/auto
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto')
-rw-r--r--tests/auto/gestures/tst_gestures.cpp171
-rw-r--r--tests/auto/qcontiguouscache/tst_qcontiguouscache.cpp12
-rw-r--r--tests/auto/qdbusconnection/tst_qdbusconnection.cpp29
-rw-r--r--tests/auto/qnetworkreply/tst_qnetworkreply.cpp5
-rw-r--r--tests/auto/qprocess/tst_qprocess.cpp2
-rw-r--r--tests/auto/qscriptjstestsuite/tst_qscriptjstestsuite.cpp2
-rw-r--r--tests/auto/qscriptstring/tst_qscriptstring.cpp3
-rw-r--r--tests/auto/qtouchevent/tst_qtouchevent.cpp31
-rw-r--r--tests/auto/qurl/tst_qurl.cpp2
-rw-r--r--tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/ibm60v01.xml4
10 files changed, 254 insertions, 7 deletions
diff --git a/tests/auto/gestures/tst_gestures.cpp b/tests/auto/gestures/tst_gestures.cpp
index 952136b..986227d 100644
--- a/tests/auto/gestures/tst_gestures.cpp
+++ b/tests/auto/gestures/tst_gestures.cpp
@@ -333,6 +333,8 @@ private slots:
void unregisterRecognizer();
void autoCancelGestures();
void autoCancelGestures2();
+ void panelPropagation();
+ void panelStacksBehindParent();
};
tst_Gestures::tst_Gestures()
@@ -1457,9 +1459,7 @@ void tst_Gestures::autoCancelGestures2()
event.serial = CustomGesture::SerialStartedThreshold;
event.hasHotSpot = true;
event.hotSpot = mapToGlobal(QPointF(5, 5), child, &view);
- // qDebug() << event.hotSpot;
scene.sendEvent(child, &event);
- //QEventLoop().exec();
QCOMPARE(parent->events.all.count(), 1);
QCOMPARE(child->events.started.count(), 1);
QCOMPARE(child->events.canceled.count(), 1);
@@ -1471,5 +1471,172 @@ void tst_Gestures::autoCancelGestures2()
QCOMPARE(parent->events.all.count(), 2);
}
+void tst_Gestures::panelPropagation()
+{
+ QGraphicsScene scene;
+ QGraphicsView view(&scene);
+ view.setWindowFlags(Qt::X11BypassWindowManagerHint);
+
+ GestureItem *item0 = new GestureItem("item0");
+ scene.addItem(item0);
+ item0->setPos(0, 0);
+ item0->size = QRectF(0, 0, 200, 200);
+ item0->grabGesture(CustomGesture::GestureType);
+ item0->setZValue(1);
+
+ GestureItem *item1 = new GestureItem("item1");
+ item1->grabGesture(CustomGesture::GestureType);
+ scene.addItem(item1);
+ item1->setPos(10, 10);
+ item1->size = QRectF(0, 0, 180, 180);
+ item1->setZValue(2);
+
+ GestureItem *item1_child1 = new GestureItem("item1_child1[panel]");
+ item1_child1->setFlags(QGraphicsItem::ItemIsPanel);
+ item1_child1->setParentItem(item1);
+ item1_child1->grabGesture(CustomGesture::GestureType);
+ item1_child1->setPos(10, 10);
+ item1_child1->size = QRectF(0, 0, 160, 160);
+ item1_child1->setZValue(5);
+
+ GestureItem *item1_child1_child1 = new GestureItem("item1_child1_child1");
+ item1_child1_child1->setParentItem(item1_child1);
+ item1_child1_child1->grabGesture(CustomGesture::GestureType);
+ item1_child1_child1->setPos(10, 10);
+ item1_child1_child1->size = QRectF(0, 0, 140, 140);
+ item1_child1_child1->setZValue(10);
+
+ view.show();
+ QTest::qWaitForWindowShown(&view);
+ view.ensureVisible(scene.sceneRect());
+
+ view.viewport()->grabGesture(CustomGesture::GestureType, Qt::DontStartGestureOnChildren);
+
+ static const int TotalGestureEventsCount = CustomGesture::SerialFinishedThreshold - CustomGesture::SerialStartedThreshold + 1;
+ static const int TotalCustomEventsCount = CustomGesture::SerialFinishedThreshold - CustomGesture::SerialMaybeThreshold + 1;
+
+ CustomEvent event;
+ event.hotSpot = mapToGlobal(QPointF(5, 5), item1_child1_child1, &view);
+ event.hasHotSpot = true;
+ sendCustomGesture(&event, item0, &scene);
+
+ QCOMPARE(item0->customEventsReceived, TotalCustomEventsCount);
+ QCOMPARE(item1_child1_child1->gestureEventsReceived, TotalGestureEventsCount);
+ QCOMPARE(item1_child1_child1->gestureOverrideEventsReceived, 1);
+ QCOMPARE(item1_child1->gestureOverrideEventsReceived, 1);
+ QCOMPARE(item1->gestureEventsReceived, 0);
+ QCOMPARE(item1->gestureOverrideEventsReceived, 0);
+ QCOMPARE(item0->gestureEventsReceived, 0);
+ QCOMPARE(item0->gestureOverrideEventsReceived, 0);
+
+ item0->reset(); item1->reset(); item1_child1->reset(); item1_child1_child1->reset();
+
+ event.hotSpot = mapToGlobal(QPointF(5, 5), item1, &view);
+ event.hasHotSpot = true;
+ sendCustomGesture(&event, item1, &scene);
+
+ QCOMPARE(item1_child1_child1->gestureEventsReceived, 0);
+ QCOMPARE(item1_child1_child1->gestureOverrideEventsReceived, 0);
+ QCOMPARE(item1_child1->gestureEventsReceived, 0);
+ QCOMPARE(item1_child1->gestureOverrideEventsReceived, 0);
+ QCOMPARE(item1->gestureEventsReceived, TotalGestureEventsCount);
+ QCOMPARE(item1->gestureOverrideEventsReceived, 1);
+ QCOMPARE(item0->gestureEventsReceived, 0);
+ QCOMPARE(item0->gestureOverrideEventsReceived, 1);
+
+ item0->reset(); item1->reset(); item1_child1->reset(); item1_child1_child1->reset();
+ // try with a modal panel
+ item1_child1->setPanelModality(QGraphicsItem::PanelModal);
+
+ event.hotSpot = mapToGlobal(QPointF(5, 5), item1, &view);
+ event.hasHotSpot = true;
+ sendCustomGesture(&event, item1, &scene);
+
+ QCOMPARE(item1_child1_child1->gestureEventsReceived, 0);
+ QCOMPARE(item1_child1_child1->gestureOverrideEventsReceived, 0);
+ QCOMPARE(item1_child1->gestureEventsReceived, TotalGestureEventsCount);
+ QCOMPARE(item1_child1->gestureOverrideEventsReceived, 0);
+ QCOMPARE(item1->gestureEventsReceived, 0);
+ QCOMPARE(item1->gestureOverrideEventsReceived, 0);
+ QCOMPARE(item0->gestureEventsReceived, 0);
+ QCOMPARE(item0->gestureOverrideEventsReceived, 0);
+
+ item0->reset(); item1->reset(); item1_child1->reset(); item1_child1_child1->reset();
+ // try with a modal panel, however set the hotspot to be outside of the
+ // panel and its parent
+ item1_child1->setPanelModality(QGraphicsItem::PanelModal);
+
+ event.hotSpot = mapToGlobal(QPointF(5, 5), item0, &view);
+ event.hasHotSpot = true;
+ sendCustomGesture(&event, item1, &scene);
+
+ QCOMPARE(item1_child1_child1->gestureEventsReceived, 0);
+ QCOMPARE(item1_child1_child1->gestureOverrideEventsReceived, 0);
+ QCOMPARE(item1_child1->gestureEventsReceived, 0);
+ QCOMPARE(item1_child1->gestureOverrideEventsReceived, 0);
+ QCOMPARE(item1->gestureEventsReceived, 0);
+ QCOMPARE(item1->gestureOverrideEventsReceived, 0);
+ QCOMPARE(item0->gestureEventsReceived, TotalGestureEventsCount);
+ QCOMPARE(item0->gestureOverrideEventsReceived, 0);
+
+ item0->reset(); item1->reset(); item1_child1->reset(); item1_child1_child1->reset();
+ // try with a scene modal panel
+ item1_child1->setPanelModality(QGraphicsItem::SceneModal);
+
+ event.hotSpot = mapToGlobal(QPointF(5, 5), item0, &view);
+ event.hasHotSpot = true;
+ sendCustomGesture(&event, item0, &scene);
+
+ QCOMPARE(item1_child1_child1->gestureEventsReceived, 0);
+ QCOMPARE(item1_child1_child1->gestureOverrideEventsReceived, 0);
+ QCOMPARE(item1_child1->gestureEventsReceived, TotalGestureEventsCount);
+ QCOMPARE(item1_child1->gestureOverrideEventsReceived, 0);
+ QCOMPARE(item1->gestureEventsReceived, 0);
+ QCOMPARE(item1->gestureOverrideEventsReceived, 0);
+ QCOMPARE(item0->gestureEventsReceived, 0);
+ QCOMPARE(item0->gestureOverrideEventsReceived, 0);
+}
+
+void tst_Gestures::panelStacksBehindParent()
+{
+ QGraphicsScene scene;
+ QGraphicsView view(&scene);
+ view.setWindowFlags(Qt::X11BypassWindowManagerHint);
+
+ GestureItem *item1 = new GestureItem("item1");
+ item1->grabGesture(CustomGesture::GestureType);
+ scene.addItem(item1);
+ item1->setPos(10, 10);
+ item1->size = QRectF(0, 0, 180, 180);
+ item1->setZValue(2);
+
+ GestureItem *panel = new GestureItem("panel");
+ panel->setFlags(QGraphicsItem::ItemIsPanel | QGraphicsItem::ItemStacksBehindParent);
+ panel->setPanelModality(QGraphicsItem::PanelModal);
+ panel->setParentItem(item1);
+ panel->grabGesture(CustomGesture::GestureType);
+ panel->setPos(-10, -10);
+ panel->size = QRectF(0, 0, 200, 200);
+ panel->setZValue(5);
+
+ view.show();
+ QTest::qWaitForWindowShown(&view);
+ view.ensureVisible(scene.sceneRect());
+
+ view.viewport()->grabGesture(CustomGesture::GestureType, Qt::DontStartGestureOnChildren);
+
+ static const int TotalGestureEventsCount = CustomGesture::SerialFinishedThreshold - CustomGesture::SerialStartedThreshold + 1;
+
+ CustomEvent event;
+ event.hotSpot = mapToGlobal(QPointF(5, 5), item1, &view);
+ event.hasHotSpot = true;
+ sendCustomGesture(&event, item1, &scene);
+
+ QCOMPARE(item1->gestureEventsReceived, 0);
+ QCOMPARE(item1->gestureOverrideEventsReceived, 0);
+ QCOMPARE(panel->gestureEventsReceived, TotalGestureEventsCount);
+ QCOMPARE(panel->gestureOverrideEventsReceived, 0);
+}
+
QTEST_MAIN(tst_Gestures)
#include "tst_gestures.moc"
diff --git a/tests/auto/qcontiguouscache/tst_qcontiguouscache.cpp b/tests/auto/qcontiguouscache/tst_qcontiguouscache.cpp
index 5a23274..f64e815 100644
--- a/tests/auto/qcontiguouscache/tst_qcontiguouscache.cpp
+++ b/tests/auto/qcontiguouscache/tst_qcontiguouscache.cpp
@@ -71,6 +71,8 @@ private slots:
void contiguousCacheBenchmark();
void setCapacity();
+
+ void zeroCapacity();
};
QTEST_MAIN(tst_QContiguousCache)
@@ -476,4 +478,14 @@ void tst_QContiguousCache::setCapacity()
}
}
+void tst_QContiguousCache::zeroCapacity()
+{
+ QContiguousCache<int> contiguousCache;
+ QCOMPARE(contiguousCache.capacity(),0);
+ contiguousCache.setCapacity(10);
+ QCOMPARE(contiguousCache.capacity(),10);
+ contiguousCache.setCapacity(0);
+ QCOMPARE(contiguousCache.capacity(),0);
+}
+
#include "tst_qcontiguouscache.moc"
diff --git a/tests/auto/qdbusconnection/tst_qdbusconnection.cpp b/tests/auto/qdbusconnection/tst_qdbusconnection.cpp
index 5e2f3a9..96209b1 100644
--- a/tests/auto/qdbusconnection/tst_qdbusconnection.cpp
+++ b/tests/auto/qdbusconnection/tst_qdbusconnection.cpp
@@ -80,6 +80,8 @@ class tst_QDBusConnection: public QObject
int signalsReceived;
public slots:
void oneSlot() { ++signalsReceived; }
+ void exitLoop() { ++signalsReceived; QTestEventLoop::instance().exitLoop(); }
+ void secondCallWithCallback();
private slots:
void noConnection();
@@ -102,6 +104,7 @@ private slots:
void multipleInterfacesInQObject();
void slotsWithLessParameters();
+ void nestedCallWithCallback();
public:
QString serviceName() const { return "com.trolltech.Qt.Autotests.QDBusConnection"; }
@@ -618,6 +621,32 @@ void tst_QDBusConnection::slotsWithLessParameters()
QCOMPARE(signalsReceived, 1);
}
+void tst_QDBusConnection::secondCallWithCallback()
+{
+ qDebug("Hello");
+ QDBusConnection con = QDBusConnection::sessionBus();
+ QDBusMessage msg = QDBusMessage::createMethodCall(con.baseService(), "/test", QString(),
+ "test0");
+ con.callWithCallback(msg, this, SLOT(exitLoop()), SLOT(secondCallWithCallback()));
+}
+
+void tst_QDBusConnection::nestedCallWithCallback()
+{
+ TestObject testObject;
+ QDBusConnection connection = QDBusConnection::sessionBus();
+ QVERIFY(connection.registerObject("/test", &testObject,
+ QDBusConnection::ExportAllContents));
+
+ QDBusMessage msg = QDBusMessage::createMethodCall(connection.baseService(), "/test", QString(),
+ "ThisFunctionDoesntExist");
+ signalsReceived = 0;
+
+ connection.callWithCallback(msg, this, SLOT(exitLoop()), SLOT(secondCallWithCallback()), 10);
+ QTestEventLoop::instance().enterLoop(15);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ QCOMPARE(signalsReceived, 1);
+}
+
QString MyObject::path;
QTEST_MAIN(tst_QDBusConnection)
diff --git a/tests/auto/qnetworkreply/tst_qnetworkreply.cpp b/tests/auto/qnetworkreply/tst_qnetworkreply.cpp
index eec4797..5fecc86 100644
--- a/tests/auto/qnetworkreply/tst_qnetworkreply.cpp
+++ b/tests/auto/qnetworkreply/tst_qnetworkreply.cpp
@@ -2034,6 +2034,11 @@ void tst_QNetworkReply::ioGetFromHttpBrokenServer_data()
QTest::newRow("invalid-version+disconnect") << QByteArray("HTTP/123 200 ") << true;
QTest::newRow("invalid-version2+disconnect") << QByteArray("HTTP/a.\033 200 ") << true;
QTest::newRow("invalid-reply-code+disconnect") << QByteArray("HTTP/1.0 fuu ") << true;
+
+ QTest::newRow("immediate disconnect") << QByteArray("") << true;
+ QTest::newRow("justHalfStatus+disconnect") << QByteArray("HTTP/1.1") << true;
+ QTest::newRow("justStatus+disconnect") << QByteArray("HTTP/1.1 200 OK\r\n") << true;
+ QTest::newRow("justStatusAndHalfHeaders+disconnect") << QByteArray("HTTP/1.1 200 OK\r\nContent-L") << true;
}
void tst_QNetworkReply::ioGetFromHttpBrokenServer()
diff --git a/tests/auto/qprocess/tst_qprocess.cpp b/tests/auto/qprocess/tst_qprocess.cpp
index ee3bb40..8dae9a0 100644
--- a/tests/auto/qprocess/tst_qprocess.cpp
+++ b/tests/auto/qprocess/tst_qprocess.cpp
@@ -1652,7 +1652,7 @@ void tst_QProcess::failToStart()
QSignalSpy finishedSpy(&process, SIGNAL(finished(int)));
QSignalSpy finishedSpy2(&process, SIGNAL(finished(int, QProcess::ExitStatus)));
-// Mac OS X and HP-UX have a really low defualt process limit (~100), so spawning
+// Mac OS X and HP-UX have a really low default process limit (~100), so spawning
// to many processes here will cause test failures later on.
#if defined Q_OS_HPUX
const int attempts = 15;
diff --git a/tests/auto/qscriptjstestsuite/tst_qscriptjstestsuite.cpp b/tests/auto/qscriptjstestsuite/tst_qscriptjstestsuite.cpp
index 41df98c..10ff488 100644
--- a/tests/auto/qscriptjstestsuite/tst_qscriptjstestsuite.cpp
+++ b/tests/auto/qscriptjstestsuite/tst_qscriptjstestsuite.cpp
@@ -688,7 +688,7 @@ tst_Suite::tst_Suite()
addExpectedFailure("ecma/TypeConversion/9.3.1-3.js", "- -\"0x80000000\"", willFixInNextReleaseMessage);
#endif
-#ifdef Q_OS_WIN
+#ifdef Q_CC_MSVC
addExpectedFailure("ecma_3/Expressions/11.7.3-01.js", "11.7.3 - >>> should evaluate operands in order: order", "QTBUG-8056");
addExpectedFailure("ecma_3/Operators/order-01.js", "operator evaluation order: 11.7.3 >>>", "QTBUG-8056");
addExpectedFailure("ecma_3/Operators/order-01.js", "operator evaluation order: 11.13.2 >>>=", "QTBUG-8056");
diff --git a/tests/auto/qscriptstring/tst_qscriptstring.cpp b/tests/auto/qscriptstring/tst_qscriptstring.cpp
index f336dbe..808b643 100644
--- a/tests/auto/qscriptstring/tst_qscriptstring.cpp
+++ b/tests/auto/qscriptstring/tst_qscriptstring.cpp
@@ -87,6 +87,8 @@ void tst_QScriptString::test()
QScriptString str2 = str;
QVERIFY(!str2.isValid());
+
+ QCOMPARE(str.toArrayIndex(), quint32(0xffffffff));
}
for (int x = 0; x < 2; ++x) {
@@ -172,6 +174,7 @@ void tst_QScriptString::toArrayIndex_data()
QTest::newRow("0a") << QString::fromLatin1("0a") << false << quint32(0xffffffff);
QTest::newRow("0x1") << QString::fromLatin1("0x1") << false << quint32(0xffffffff);
QTest::newRow("01") << QString::fromLatin1("01") << false << quint32(0xffffffff);
+ QTest::newRow("101a") << QString::fromLatin1("101a") << false << quint32(0xffffffff);
QTest::newRow("4294967294") << QString::fromLatin1("4294967294") << true << quint32(0xfffffffe);
QTest::newRow("4294967295") << QString::fromLatin1("4294967295") << false << quint32(0xffffffff);
}
diff --git a/tests/auto/qtouchevent/tst_qtouchevent.cpp b/tests/auto/qtouchevent/tst_qtouchevent.cpp
index 639f8e4..bb80fde 100644
--- a/tests/auto/qtouchevent/tst_qtouchevent.cpp
+++ b/tests/auto/qtouchevent/tst_qtouchevent.cpp
@@ -193,6 +193,7 @@ private slots:
void multiPointRawEventTranslationOnTouchPad();
void deleteInEventHandler();
void deleteInRawEventTranslation();
+ void crashInQGraphicsSceneAfterNotHandlingTouchBegin();
};
void tst_QTouchEvent::touchDisabledByDefault()
@@ -1303,6 +1304,36 @@ void tst_QTouchEvent::deleteInRawEventTranslation()
qt_translateRawTouchEvent(&touchWidget, QTouchEvent::TouchScreen, rawTouchPoints);
}
+void tst_QTouchEvent::crashInQGraphicsSceneAfterNotHandlingTouchBegin()
+{
+ QGraphicsRectItem *rect = new QGraphicsRectItem(0, 0, 100, 100);
+ rect->setAcceptTouchEvents(true);
+
+ QGraphicsRectItem *mainRect = new QGraphicsRectItem(0, 0, 100, 100, rect);
+ mainRect->setBrush(Qt::lightGray);
+
+ QGraphicsRectItem *button = new QGraphicsRectItem(-20, -20, 40, 40, mainRect);
+ button->setPos(50, 50);
+ button->setBrush(Qt::darkGreen);
+
+ QGraphicsView view;
+ QGraphicsScene scene;
+ scene.addItem(rect);
+ scene.setSceneRect(0,0,100,100);
+ view.setScene(&scene);
+
+ view.show();
+ QTest::qWaitForWindowShown(&view);
+
+ QPoint centerPos = view.mapFromScene(rect->boundingRect().center());
+ // Touch the button
+ QTest::touchEvent(view.viewport()).press(0, centerPos);
+ QTest::touchEvent(view.viewport()).release(0, centerPos);
+ // Touch outside of the button
+ QTest::touchEvent(view.viewport()).press(0, view.mapFromScene(QPoint(10, 10)));
+ QTest::touchEvent(view.viewport()).release(0, view.mapFromScene(QPoint(10, 10)));
+}
+
QTEST_MAIN(tst_QTouchEvent)
#include "tst_qtouchevent.moc"
diff --git a/tests/auto/qurl/tst_qurl.cpp b/tests/auto/qurl/tst_qurl.cpp
index f108f4c..72ce393 100644
--- a/tests/auto/qurl/tst_qurl.cpp
+++ b/tests/auto/qurl/tst_qurl.cpp
@@ -1832,7 +1832,7 @@ void tst_QUrl::compat_constructor_01_data()
QTest::addColumn<QString>("res");
//next we fill it with data
- QTest::newRow( "data0" ) << QString("Makefile") << QString("Makefile"); // nolonger add file by defualt
+ QTest::newRow( "data0" ) << QString("Makefile") << QString("Makefile"); // nolonger add file by default
QTest::newRow( "data1" ) << QString("Makefile") << QString("Makefile");
QTest::newRow( "data2" ) << QString("ftp://ftp.qt.nokia.com/qt/INSTALL") << QString("ftp://ftp.qt.nokia.com/qt/INSTALL");
QTest::newRow( "data3" ) << QString("ftp://ftp.qt.nokia.com/qt/INSTALL") << QString("ftp://ftp.qt.nokia.com/qt/INSTALL");
diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/ibm60v01.xml b/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/ibm60v01.xml
index edf9fee..050a340 100644
--- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/ibm60v01.xml
+++ b/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/ibm60v01.xml
@@ -10,10 +10,10 @@
<!ATTLIST one chapter CDATA #IMPLIED>
<!ATTLIST two chapter CDATA #REQUIRED>
<!ATTLIST three chapter CDATA #FIXED "JavaBeans">
- <!ATTLIST four chapter CDATA 'defualt'>
+ <!ATTLIST four chapter CDATA 'default'>
]>
<Java><one chapter="Introduction"/>
<three chapter="JavaBeans"/>
Positive test
DefaultDecl attributes values IMPLIED, REQUIRED, FIXED and default
-</Java> \ No newline at end of file
+</Java>