Add additional autotests for signal handlers.
authorMichael Brasser <michael.brasser@nokia.com>
Fri, 24 Feb 2012 00:22:35 +0000 (10:22 +1000)
committerQt by Nokia <qt-info@nokia.com>
Fri, 24 Feb 2012 06:09:34 +0000 (07:09 +0100)
Change-Id: Ie94ce8b536347981310abeb077a88acedf44c7e6
Reviewed-by: Chris Adams <christopher.adams@nokia.com>
tests/auto/declarative/qdeclarativeecmascript/data/signalAssignment.3.qml [new file with mode: 0644]
tests/auto/declarative/qdeclarativeecmascript/data/signalAssignment.4.qml [new file with mode: 0644]
tests/auto/declarative/qdeclarativeecmascript/testtypes.h
tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp
tests/auto/declarative/qdeclarativelanguage/data/signal.5.errors.txt [new file with mode: 0644]
tests/auto/declarative/qdeclarativelanguage/data/signal.5.qml [new file with mode: 0644]
tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp
tests/auto/declarative/qmlmin/tst_qmlmin.cpp

diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/signalAssignment.3.qml b/tests/auto/declarative/qdeclarativeecmascript/data/signalAssignment.3.qml
new file mode 100644 (file)
index 0000000..690b7cf
--- /dev/null
@@ -0,0 +1,5 @@
+import Qt.test 1.0
+
+MyQmlObject {
+    onUnnamedArgumentSignal: setString('pass ' + a + ' ' + c)
+}
diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/signalAssignment.4.qml b/tests/auto/declarative/qdeclarativeecmascript/data/signalAssignment.4.qml
new file mode 100644 (file)
index 0000000..0e1e728
--- /dev/null
@@ -0,0 +1,6 @@
+import Qt.test 1.0
+
+
+MyQmlObject {
+    onSignalWithGlobalName: setString('pass ' + parseInt("5"))
+}
index a463d3f..ce8e80e 100644 (file)
@@ -180,6 +180,7 @@ public:
 signals:
     void basicSignal();
     void argumentSignal(int a, QString b, qreal c, MyEnum2 d, Qt::MouseButtons e);
+    void unnamedArgumentSignal(int a, qreal, QString c);
     void stringChanged();
     void urlChanged();
     void objectChanged();
@@ -188,6 +189,7 @@ signals:
     void signalWithUnknownType(const MyQmlObject::MyType &arg);
     void signalWithVariant(const QVariant &arg);
     void signalWithQJSValue(const QJSValue &arg);
+    void signalWithGlobalName(int parseInt);
     void intChanged();
 
 public slots:
index cc94e6f..7fc137e 100644 (file)
@@ -376,6 +376,27 @@ void tst_qdeclarativeecmascript::signalAssignment()
         QCOMPARE(object->string(), QString("pass 19 Hello world! 10.25 3 2"));
         delete object;
     }
+
+    {
+        QDeclarativeComponent component(&engine, testFileUrl("signalAssignment.3.qml"));
+        MyQmlObject *object = qobject_cast<MyQmlObject *>(component.create());
+        QVERIFY(object != 0);
+        QCOMPARE(object->string(), QString());
+        emit object->unnamedArgumentSignal(19, 10.25, "Hello world!");
+        QEXPECT_FAIL("", "QTBUG-24481", Continue);
+        QCOMPARE(object->string(), QString("pass 19 Hello world!"));
+        delete object;
+    }
+
+    {
+        QDeclarativeComponent component(&engine, testFileUrl("signalAssignment.4.qml"));
+        MyQmlObject *object = qobject_cast<MyQmlObject *>(component.create());
+        QVERIFY(object != 0);
+        QCOMPARE(object->string(), QString());
+        emit object->signalWithGlobalName(19);
+        QCOMPARE(object->string(), QString("pass 5"));
+        delete object;
+    }
 }
 
 void tst_qdeclarativeecmascript::methods()
diff --git a/tests/auto/declarative/qdeclarativelanguage/data/signal.5.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/signal.5.errors.txt
new file mode 100644 (file)
index 0000000..cf772e8
--- /dev/null
@@ -0,0 +1 @@
+4:27:Expected token `identifier'
diff --git a/tests/auto/declarative/qdeclarativelanguage/data/signal.5.qml b/tests/auto/declarative/qdeclarativelanguage/data/signal.5.qml
new file mode 100644 (file)
index 0000000..63921cb
--- /dev/null
@@ -0,0 +1,6 @@
+import QtQuick 2.0
+
+QtObject {
+    signal mySignal(string)
+}
+
index 480a898..1f211ae 100644 (file)
@@ -354,6 +354,7 @@ void tst_qdeclarativelanguage::errors_data()
     QTest::newRow("signal.2") << "signal.2.qml" << "signal.2.errors.txt" << false;
     QTest::newRow("signal.3") << "signal.3.qml" << "signal.3.errors.txt" << false;
     QTest::newRow("signal.4") << "signal.4.qml" << "signal.4.errors.txt" << false;
+    QTest::newRow("signal.5") << "signal.5.qml" << "signal.5.errors.txt" << false;
 
     QTest::newRow("method.1") << "method.1.qml" << "method.1.errors.txt" << false;
 
index c6b0190..df4e2a0 100644 (file)
@@ -96,10 +96,11 @@ void tst_qmlmin::initTestCase()
     // Add invalid files (i.e. files with syntax errors)
     invalidFiles << "tests/auto/qtquick2/qquickloader/data/InvalidSourceComponent.qml";
     invalidFiles << "tests/auto/declarative/qdeclarativelanguage/data/dynamicObjectProperties.2.qml";
+    invalidFiles << "tests/auto/declarative/qdeclarativelanguage/data/signal.2.qml";
     invalidFiles << "tests/auto/declarative/qdeclarativelanguage/data/signal.3.qml";
+    invalidFiles << "tests/auto/declarative/qdeclarativelanguage/data/signal.5.qml";
     invalidFiles << "tests/auto/declarative/qdeclarativelanguage/data/property.4.qml";
     invalidFiles << "tests/auto/declarative/qdeclarativelanguage/data/empty.qml";
-    invalidFiles << "tests/auto/declarative/qdeclarativelanguage/data/signal.2.qml";
     invalidFiles << "tests/auto/declarative/qdeclarativelanguage/data/missingObject.qml";
     invalidFiles << "tests/auto/declarative/qdeclarativelanguage/data/insertedSemicolon.1.qml";
     invalidFiles << "tests/auto/declarative/qdeclarativelanguage/data/nonexistantProperty.5.qml";